1# This file contains setup for build features that are not available for all 2# architectures/setups or that are optional for the build. For features that 3# require downloading a zip file from somewhere it is likely the same file used 4# for an optional package. 5 6 7# Add the target architecture as a build feature. 8EnableBuildFeatures $(HAIKU_ARCH) ; 9 10 11# Detect a hybrid GCC2/GCC4 image and disable the checks for unavailable GCC4 12# packages. (It does not matter if a package was built with either compiler, 13# the system should have the respective other system libs.) 14local isHybridBuild ; 15if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) = 1 16 && $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) { 17 isHybridBuild = 1 ; 18} 19 20local baseURL = http://www.haiku-files.org/files/optional-packages ; 21 22 23# SSL 24 25# Automatically enable the SSL feature, when the optional OpenSSL optional 26# package is enabled. 27if [ IsOptionalHaikuImagePackageAdded OpenSSL ] { 28 HAIKU_BUILD_FEATURE_SSL = 1 ; 29} 30 31if $(HAIKU_GCC_VERSION[1]) >= 4 { 32 if $(TARGET_ARCH) = x86_64 { 33 HAIKU_OPENSSL_PACKAGE = openssl-1.0.0j-x86_64-2012-12-18.zip ; 34 } else { 35 HAIKU_OPENSSL_PACKAGE = openssl-1.0.0j-r1a4-x86-gcc4-2012-08-29.zip ; 36 } 37} else { 38 HAIKU_OPENSSL_PACKAGE = openssl-1.0.0j-r1a4-x86-gcc2-2012-08-26.zip ; 39} 40 41HAIKU_OPENSSL_URL = $(baseURL)/$(HAIKU_OPENSSL_PACKAGE) ; 42 43if $(HAIKU_BUILD_FEATURE_SSL) { 44 if $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 { 45 # Download the zip archive. 46 local zipFile = [ DownloadFile $(HAIKU_OPENSSL_PACKAGE) 47 : $(HAIKU_OPENSSL_URL) ] ; 48 49 # zip file and output directory 50 HAIKU_OPENSSL_ZIP_FILE = $(zipFile) ; 51 HAIKU_OPENSSL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 52 $(HAIKU_OPENSSL_PACKAGE:B) ] ; 53 54 # extract headers and libraries 55 HAIKU_OPENSSL_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_OPENSSL_DIR) 56 : common/include/ : $(zipFile) : extracted-openssl 57 ] ; 58 59 HAIKU_OPENSSL_LIBS = [ ExtractArchive $(HAIKU_OPENSSL_DIR) 60 : 61 common/lib/libcrypto.so 62 common/lib/libssl.so 63 : $(zipFile) 64 : extracted-openssl 65 ] ; 66 67 HAIKU_OPENSSL_HEADERS 68 = [ FDirName $(HAIKU_OPENSSL_DIR) common include ] ; 69 70 EnableBuildFeatures openssl ; 71 } else { 72 Echo "SSL build feature not available for $(TARGET_ARCH)" ; 73 } 74} 75 76 77# ICU 78 79# Note ICU isn't actually optional, but is still an external package 80HAIKU_ICU_GCC_2_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc2-2012-08-29.zip ; 81HAIKU_ICU_GCC_4_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc4-2012-08-29.zip ; 82HAIKU_ICU_PPC_PACKAGE = icu-4.8.1-ppc-2011-08-20.zip ; 83HAIKU_ICU_ARM_PACKAGE = icu-4.8.1.1-arm-2012-11-21.zip ; 84HAIKU_ICU_X86_64_PACKAGE = icu-4.8.1.1-x86_64-2012-07-30.zip ; 85 86if $(TARGET_ARCH) in arm ppc x86 x86_64 { 87 local icu_package ; 88 if $(TARGET_ARCH) = ppc { 89 icu_package = $(HAIKU_ICU_PPC_PACKAGE) ; 90 HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1-ppc-2011-12-19.zip ; 91 } else if $(TARGET_ARCH) = arm { 92 icu_package = $(HAIKU_ICU_ARM_PACKAGE) ; 93 HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-arm-2012-11-21.zip ; 94 } else if $(TARGET_ARCH) = x86_64 { 95 icu_package = $(HAIKU_ICU_X86_64_PACKAGE) ; 96 HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-x86_64-2012-07-30.zip ; 97 } else if $(HAIKU_GCC_VERSION[1]) = 2 { 98 icu_package = $(HAIKU_ICU_GCC_2_PACKAGE) ; 99 HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-x86-gcc2-2011-12-20.zip ; 100 } else { 101 icu_package = $(HAIKU_ICU_GCC_4_PACKAGE) ; 102 HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-x86-gcc4-2011-12-20.zip ; 103 } 104 local zipFile = [ DownloadFile $(icu_package) 105 : $(baseURL)/$(icu_package) ] ; 106 107 # zip file and output directory 108 HAIKU_ICU_ZIP_FILE = $(zipFile) ; 109 HAIKU_ICU_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 110 $(icu_package:B) ] ; 111 112 # extract libraries 113 if $(TARGET_ARCH) = ppc { 114 HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) 115 : 116 libicudata.so.48.1 117 libicui18n.so.48.1 118 libicuio.so.48.1 119 libicule.so.48.1 120 libiculx.so.48.1 121 libicutu.so.48.1 122 libicuuc.so.48.1 123 : $(zipFile) 124 : extracted-icu 125 ] ; 126 } else { 127 HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) 128 : 129 libicudata.so.48.1.1 130 libicui18n.so.48.1.1 131 libicuio.so.48.1.1 132 libicule.so.48.1.1 133 libiculx.so.48.1.1 134 libicutu.so.48.1.1 135 libicuuc.so.48.1.1 136 : $(zipFile) 137 : extracted-icu 138 ] ; 139 } 140 141 # zip file and output directory 142 HAIKU_ICU_DEVEL_ZIP_FILE = [ DownloadFile $(HAIKU_ICU_DEVEL_PACKAGE) 143 : $(baseURL)/$(HAIKU_ICU_DEVEL_PACKAGE) ] ; 144 HAIKU_ICU_DEVEL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 145 $(HAIKU_ICU_DEVEL_PACKAGE:B) ] ; 146 147 # extract headers 148 HAIKU_ICU_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_ICU_DEVEL_DIR) 149 : develop/headers/3rdparty : $(HAIKU_ICU_DEVEL_ZIP_FILE) 150 : extracted-icu-devel ] ; 151 152 HAIKU_ICU_HEADERS 153 = [ FDirName $(HAIKU_ICU_DEVEL_DIR) develop headers 3rdparty ] ; 154 155 EnableBuildFeatures icu ; 156} else { 157 Echo "ICU not available for $(TARGET_ARCH)" ; 158} 159 160 161# CLucene 162 163# Automatically install the CLucene feature, when the optional CLucene optional 164# package is enabled. 165if [ IsOptionalHaikuImagePackageAdded CLucene ] { 166 HAIKU_BUILD_FEATURE_CLUCENE = 1 ; 167} 168 169 170HAIKU_CLUCENE_PACKAGE = clucene-0.9.21-x86-gcc4-haiku-2009-08-11.zip ; 171HAIKU_CLUCENE_URL = $(baseURL)/$(HAIKU_CLUCENE_PACKAGE) ; 172 173if $(HAIKU_BUILD_FEATURE_CLUCENE) { 174 if $(TARGET_ARCH) != x86 { 175 Echo "CLucene build feature not available for $(TARGET_ARCH)" ; 176 } else { 177 # Download the zip archive. 178 local zipFile = [ DownloadFile $(HAIKU_CLUCENE_PACKAGE) 179 : $(HAIKU_CLUCENE_URL) ] ; 180 181 # zip file and output directory 182 HAIKU_CLUCENE_ZIP_FILE = $(zipFile) ; 183 HAIKU_CLUCENE_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 184 $(HAIKU_CLUCENE_PACKAGE:B) ] ; 185 186 # extract headers and libraries 187 HAIKU_CLUCENE_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_CLUCENE_DIR) 188 : common/include/ : $(zipFile) : extracted-clucene 189 ] ; 190 191 HAIKU_CLUCENE_LIBS = [ ExtractArchive $(HAIKU_CLUCENE_DIR) 192 : 193 common/lib/libclucene.a 194 : $(zipFile) 195 : extracted-clucene 196 ] ; 197 198 HAIKU_CLUCENE_HEADERS 199 = [ FDirName $(HAIKU_CLUCENE_DIR) common include ] ; 200 201 EnableBuildFeatures clucene ; 202 } 203} 204 205 206# GLU (GL Utilities) 207if $(TARGET_ARCH) = x86 { 208 if $(HAIKU_GCC_VERSION[1]) >= 4 { 209 HAIKU_GLU_FILE = glu-9.0-x86-gcc4-2012-11-13.zip ; 210 } else { 211 HAIKU_GLU_FILE = glu-9.0-x86-gcc2-2012-11-13.zip ; 212 } 213 214 local zipFile = [ DownloadFile $(HAIKU_GLU_FILE) 215 : $(baseURL)/lib/$(HAIKU_GLU_FILE) ] ; 216 217 HAIKU_GLU_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 218 $(HAIKU_GLU_FILE:B) ] ; 219 HAIKU_GLU_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_GLU_DIR) 220 : develop/headers/os/opengl/GL : $(zipFile) : extracted-glu-headers ] ; 221 HAIKU_GLU_LIBS = [ ExtractArchive $(HAIKU_GLU_DIR) 222 : system/lib/libGLU.a : $(zipFile) : extracted-glu ] ; 223 HAIKU_GLU_HEADERS = [ FDirName $(HAIKU_GLU_DIR) develop headers os opengl ] ; 224 225 EnableBuildFeatures glu ; 226} else { 227 Echo "GLU not yet available on $(TARGET_ARCH)" ; 228} 229 230 231# Mesa 232if $(TARGET_ARCH) = x86 { 233 local zipFile ; 234 if $(HAIKU_GCC_VERSION[1]) >= 4 { 235 HAIKU_MESA_FILE = mesa-9.2.0-x86-gcc4-2013-08-28.zip ; 236 } else { 237 HAIKU_MESA_FILE = mesa-7.8.2-x86-gcc2-2013-04-28.zip ; 238 } 239 240 zipFile = [ DownloadFile $(HAIKU_MESA_FILE) 241 : $(baseURL)/$(HAIKU_MESA_FILE) ] ; 242 243 HAIKU_MESA_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 244 $(HAIKU_MESA_FILE:B) ] ; 245 246 HAIKU_MESA_HEADERS = [ FDirName $(HAIKU_MESA_DIR) include ] ; 247 HAIKU_MESA_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_MESA_DIR) 248 : include/ : $(zipFile) : extracted-mesa ] ; 249 250 # Base Mesa libraries 251 HAIKU_MESA_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) 252 : 253 lib.haiku/libmesa.a 254 : $(zipFile) 255 : extracted-mesa ] ; 256 HAIKU_GLAPI_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) 257 : 258 lib.haiku/libglapi.a 259 : $(zipFile) 260 : extracted-mesa ] ; 261 262 Depends $(HAIKU_MESA_HEADERS_DEPENDENCY) : $(HAIKU_GLU_HEADERS_DEPENDENCY) ; 263 Depends $(HAIKU_GLAPI_LIBS) : $(HAIKU_GLU_LIBS) ; 264 265 # Extended Mesa libraries for newer versions 266 if $(HAIKU_GCC_VERSION[1]) >= 4 { 267 HAIKU_GLSL_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) 268 : 269 lib.haiku/libglsl.a 270 : $(zipFile) 271 : extracted-mesa ] ; 272 HAIKU_GALLIUM_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) 273 : 274 lib.haiku/libgallium.a 275 : $(zipFile) 276 : extracted-mesa ] ; 277 HAIKU_GALLIUM_SWPIPE_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) 278 : 279 lib.haiku/swpipe_bundle.a 280 : $(zipFile) 281 : extracted-mesa ] ; 282 } 283 284 EnableBuildFeatures mesa ; 285} else { 286 Echo "Mesa 3D rendering support not available on $(TARGET_ARCH)" ; 287} 288 289 290# FFmpeg 291local ffmpegBaseURL = $(baseURL)/lib ; 292if $(TARGET_ARCH) = x86 { 293 if $(HAIKU_GCC_VERSION[1]) >= 4 { 294 HAIKU_FFMPEG_FILE = ffmpeg-0.10.2-r1a4-x86-gcc4-2012-09-02.zip ; 295 HAIKU_SPEEX_FILE = speex-1.2rc1-r1a4-x86-gcc4-2012-09-02.zip ; 296 HAIKU_LIBTHEORA_FILE = libtheora-1.1.1-r1a4-x86-gcc4-2012-09-02.zip ; 297 HAIKU_LIBVORBIS_FILE = libvorbis-1.3.2-r1a4-x86-gcc4-2012-09-02.zip ; 298 HAIKU_LIBOGG_FILE = libogg-1.3.0-r1a4-x86-gcc4-2012-09-02.zip ; 299 HAIKU_LIBVPX_FILE = libvpx-1.0.0-r1a4-x86-gcc4-2012-09-02.zip ; 300 } else { 301 HAIKU_FFMPEG_FILE = ffmpeg-0.10.2-r1a4-x86-gcc2-2012-08-30.zip ; 302 HAIKU_SPEEX_FILE = speex-1.2rc1-r1a4-x86-gcc2-2012-08-29.zip ; 303 HAIKU_LIBTHEORA_FILE = libtheora-1.1.1-r1a4-x86-gcc2-2012-08-29.zip ; 304 HAIKU_LIBVORBIS_FILE = libvorbis-1.3.2-r1a4-x86-gcc2-2012-08-29.zip ; 305 HAIKU_LIBOGG_FILE = libogg-1.3.0-r1a4-x86-gcc2-2012-08-29.zip ; 306 HAIKU_LIBVPX_FILE = libvpx-1.0.0-r1a4-x86-gcc2-2012-08-29.zip ; 307 } 308 309 local ffmpegZipFile = [ DownloadFile $(HAIKU_FFMPEG_FILE) 310 : $(ffmpegBaseURL)/$(HAIKU_FFMPEG_FILE) ] ; 311 local speexZipFile = [ DownloadFile $(HAIKU_SPEEX_FILE) 312 : $(ffmpegBaseURL)/$(HAIKU_SPEEX_FILE) ] ; 313 local libtheoraZipFile = [ DownloadFile $(HAIKU_LIBTHEORA_FILE) 314 : $(ffmpegBaseURL)/$(HAIKU_LIBTHEORA_FILE) ] ; 315 local libvorbisZipFile = [ DownloadFile $(HAIKU_LIBVORBIS_FILE) 316 : $(ffmpegBaseURL)/$(HAIKU_LIBVORBIS_FILE) ] ; 317 local liboggZipFile = [ DownloadFile $(HAIKU_LIBOGG_FILE) 318 : $(ffmpegBaseURL)/$(HAIKU_LIBOGG_FILE) ] ; 319 local libvpxZipFile = [ DownloadFile $(HAIKU_LIBVPX_FILE) 320 : $(ffmpegBaseURL)/$(HAIKU_LIBVPX_FILE) ] ; 321 322 HAIKU_FFMPEG_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 323 $(HAIKU_FFMPEG_FILE:B) ] ; 324 HAIKU_SPEEX_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 325 $(HAIKU_SPEEX_FILE:B) ] ; 326 HAIKU_LIBTHEORA_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 327 $(HAIKU_LIBTHEORA_FILE:B) ] ; 328 HAIKU_LIBVORBIS_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 329 $(HAIKU_LIBVORBIS_FILE:B) ] ; 330 HAIKU_LIBOGG_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 331 $(HAIKU_LIBOGG_FILE:B) ] ; 332 HAIKU_LIBVPX_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 333 $(HAIKU_LIBVPX_FILE:B) ] ; 334 335 HAIKU_FFMPEG_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_FFMPEG_DIR) 336 : common/include/ : $(ffmpegZipFile) : extracted-ffmpeg ] ; 337 HAIKU_SPEEX_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_SPEEX_DIR) 338 : common/include/ : $(speexZipFile) : extracted-speex ] ; 339 HAIKU_LIBTHEORA_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_LIBTHEORA_DIR) 340 : common/include/ : $(libtheoraZipFile) : extracted-libtheora ] ; 341 HAIKU_LIBVORBIS_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_LIBVORBIS_DIR) 342 : common/include/ : $(libvorbisZipFile) : extracted-libvorbis ] ; 343 HAIKU_LIBOGG_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_LIBOGG_DIR) 344 : common/include/ : $(liboggZipFile) : extracted-libogg ] ; 345 HAIKU_LIBVPX_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_LIBVPX_DIR) 346 : common/include/ : $(libvpxZipFile) : extracted-libvpx ] ; 347 348 HAIKU_FFMPEG_LIBS = [ ExtractArchive $(HAIKU_FFMPEG_DIR) 349 : 350 common/lib/libavformat.a 351 common/lib/libavcodec.a 352 common/lib/libavdevice.a 353 common/lib/libavfilter.a 354 common/lib/libswscale.a 355 common/lib/libavutil.a 356 : $(ffmpegZipFile) 357 : extracted-ffmpeg ] ; 358 Depends $(HAIKU_FFMPEG_LIBS) : $(HAIKU_FFMPEG_HEADERS_DEPENDENCY) ; 359 360 HAIKU_SPEEX_LIBS = [ ExtractArchive $(HAIKU_SPEEX_DIR) 361 : 362 common/lib/libspeex.a 363 : $(speexZipFile) 364 : extracted-speex ] ; 365 Depends $(HAIKU_SPEEX_LIBS) : $(HAIKU_SPEEX_HEADERS_DEPENDENCY) ; 366 367 HAIKU_LIBTHEORA_LIBS = [ ExtractArchive $(HAIKU_LIBTHEORA_DIR) 368 : 369 common/lib/libtheora.a 370 common/lib/libtheoradec.a 371 common/lib/libtheoraenc.a 372 : $(libtheoraZipFile) 373 : extracted-libtheora ] ; 374 Depends $(HAIKU_LIBTHEORA_LIBS) : $(HAIKU_LIBTHEORA_HEADERS_DEPENDENCY) ; 375 376 377 HAIKU_LIBVORBIS_LIBS = [ ExtractArchive $(HAIKU_LIBVORBIS_DIR) 378 : 379 common/lib/libvorbis.a 380 common/lib/libvorbisenc.a 381 : $(libvorbisZipFile) 382 : extracted-libvorbis ] ; 383 Depends $(HAIKU_LIBVORBIS_LIBS) : $(HAIKU_LIBVORBIS_HEADERS_DEPENDENCY) ; 384 385 386 HAIKU_LIBOGG_LIBS = [ ExtractArchive $(HAIKU_LIBOGG_DIR) 387 : 388 common/lib/libogg.a 389 : $(liboggZipFile) 390 : extracted-libogg ] ; 391 Depends $(HAIKU_LIBOGG_LIBS) : $(HAIKU_LIBOGG_HEADERS_DEPENDENCY) ; 392 393 HAIKU_LIBVPX_LIBS = [ ExtractArchive $(HAIKU_LIBVPX_DIR) 394 : 395 common/lib/libvpx.a 396 : $(libvpxZipFile) 397 : extracted-libvpx ] ; 398 Depends $(HAIKU_LIBVPX_LIBS) : $(HAIKU_LIBVPX_HEADERS_DEPENDENCY) ; 399 400 HAIKU_FFMPEG_HEADERS = [ FDirName $(HAIKU_FFMPEG_DIR) common include ] ; 401 HAIKU_SPEEX_HEADERS = [ FDirName $(HAIKU_SPEEX_DIR) common include ] ; 402 HAIKU_LIBTHEORA_HEADERS = [ FDirName $(HAIKU_LIBTHEORA_DIR) common include ] ; 403 HAIKU_LIBVORBIS_HEADERS = [ FDirName $(HAIKU_LIBVORBIS_DIR) common include ] ; 404 HAIKU_LIBOGG_HEADERS = [ FDirName $(HAIKU_LIBOGG_DIR) common include ] ; 405 HAIKU_LIBVPX_HEADERS = [ FDirName $(HAIKU_LIBVPX_DIR) common include ] ; 406 407 EnableBuildFeatures ffmpeg ; 408} else { 409 Echo "FFMpeg support not available on $(TARGET_ARCH)" ; 410} 411 412 413# MikMod 414local mikmodBaseURL = http://haiku-files.org/files/optional-packages/lib ; 415if $(TARGET_ARCH) = x86 { 416 if $(HAIKU_GCC_VERSION[1]) >= 4 { 417 HAIKU_MIKMOD_FILE = libmikmod-3.1.11-r1a4-x86-gcc4-2012-09-02.zip ; 418 } else { 419 HAIKU_MIKMOD_FILE = libmikmod-3.1.11-r1a4-x86-gcc2-2012-08-29.zip ; 420 } 421 422 local mikmodZipFile = [ DownloadFile $(HAIKU_MIKMOD_FILE) 423 : $(mikmodBaseURL)/$(HAIKU_MIKMOD_FILE) ] ; 424 425 HAIKU_MIKMOD_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 426 $(HAIKU_MIKMOD_FILE:B) ] ; 427 428 HAIKU_MIKMOD_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_MIKMOD_DIR) 429 : common/include/ : $(mikmodZipFile) : extracted-mikmod ] ; 430 431 HAIKU_MIKMOD_LIBS = [ ExtractArchive $(HAIKU_MIKMOD_DIR) 432 : 433 common/lib/libmikmod.a 434 : $(mikmodZipFile) 435 : extracted-ffmpeg ] ; 436 Depends $(HAIKU_MIKMOD_LIBS) : $(HAIKU_MIKMOD_HEADERS_DEPENDENCY) ; 437 438 HAIKU_MIKMOD_HEADERS = [ FDirName $(HAIKU_MIKMOD_DIR) common include ] ; 439 440 EnableBuildFeatures mikmod ; 441} else { 442 Echo "MikMod support not available on $(TARGET_ARCH)" ; 443} 444 445 446# Freetype 447local freetypeBaseURL = $(baseURL)/lib ; 448if $(TARGET_ARCH) = ppc || $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 || $(TARGET_ARCH) = arm { 449 if $(TARGET_ARCH) = arm { 450 HAIKU_FREETYPE_FILE = freetype-2.4.9-arm-2012-11-21.zip ; 451 } else if $(TARGET_ARCH) = ppc { 452 HAIKU_FREETYPE_FILE = freetype-2.4.9-ppc-gcc4-2012-06-26.zip ; 453 } else if $(TARGET_ARCH) = x86_64 { 454 HAIKU_FREETYPE_FILE = freetype-2.4.9-x86_64-2012-08-04.zip ; 455 } else if $(HAIKU_GCC_VERSION[1]) >= 4 { 456 HAIKU_FREETYPE_FILE = freetype-2.4.9-r1a4-x86-gcc4-2012-09-02.zip ; 457 } else { 458 HAIKU_FREETYPE_FILE = freetype-2.4.9-r1a4-x86-gcc2-2012-08-28.zip ; 459 } 460 461 local freetypeZipFile = [ DownloadFile $(HAIKU_FREETYPE_FILE) 462 : $(freetypeBaseURL)/$(HAIKU_FREETYPE_FILE) ] ; 463 464 HAIKU_FREETYPE_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 465 $(HAIKU_FREETYPE_FILE:B) ] ; 466 467 HAIKU_FREETYPE_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_FREETYPE_DIR) 468 : develop/headers/3rdparty/freetype2 : $(freetypeZipFile) 469 : extracted-freetype ] ; 470 471 HAIKU_FREETYPE_LIB = [ ExtractArchive $(HAIKU_FREETYPE_DIR) 472 : 473 common/lib/libfreetype.so 474 : $(freetypeZipFile) 475 : extracted-freetype ] ; 476 HAIKU_FREETYPE_CURRENT_LIB = [ ExtractArchive $(HAIKU_FREETYPE_DIR) 477 : 478 common/lib/libfreetype.so.6.8.1 479 : $(freetypeZipFile) 480 : extracted-freetype ] ; 481 Depends $(HAIKU_FREETYPE_LIB) $(HAIKU_FREETYPE_CURRENT_LIB) : $(HAIKU_FREETYPE_HEADERS_DEPENDENCY) ; 482 483 HAIKU_FREETYPE_CURRENT_LINK = libfreetype.so.6 ; 484 485 HAIKU_FREETYPE_HEADERS = [ FDirName $(HAIKU_FREETYPE_DIR) develop 486 headers 3rdparty ] [ FDirName $(HAIKU_FREETYPE_DIR) develop 487 headers 3rdparty freetype2 ] ; 488 489 EnableBuildFeatures freetype ; 490} else { 491 Echo "Freetype support not available on $(TARGET_ARCH)" ; 492} 493 494 495# TagLib 496 497# Automatically install the TagLib feature, when the optional TagLib optional 498# package is enabled. 499if [ IsOptionalHaikuImagePackageAdded TagLib ] { 500 HAIKU_BUILD_FEATURE_TAGLIB = 1 ; 501} 502 503HAIKU_TAGLIB_PACKAGE = taglib-1.6.3-r1a4-x86-gcc2-2012-09-03.zip ; 504HAIKU_TAGLIB_URL = $(baseURL)/$(HAIKU_TAGLIB_PACKAGE) ; 505 506if $(HAIKU_BUILD_FEATURE_TAGLIB) { 507 if $(TARGET_ARCH) != x86 { 508 Echo "TagLib build feature not available for $(TARGET_ARCH)" ; 509 } else { 510 # Download the zip archive. 511 local zipFile = [ DownloadFile $(HAIKU_TAGLIB_PACKAGE) 512 : $(HAIKU_TAGLIB_URL) ] ; 513 514 # zip file and output directory 515 HAIKU_TAGLIB_ZIP_FILE = $(zipFile) ; 516 HAIKU_TAGLIB_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 517 $(HAIKU_TAGLIB_PACKAGE:B) ] ; 518 519 # extract headers and libraries 520 HAIKU_TAGLIB_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_TAGLIB_DIR) 521 : common/include/ : $(zipFile) : extracted-taglib 522 ] ; 523 524 HAIKU_TAGLIB_LIBS = [ ExtractArchive $(HAIKU_TAGLIB_DIR) 525 : 526 common/lib/libtag.so 527 common/lib/libtag_c.so 528 : $(zipFile) 529 : extracted-taglib 530 ] ; 531 532 HAIKU_TAGLIB_HEADERS 533 = [ FDirName $(HAIKU_TAGLIB_DIR) common include taglib ] ; 534 535 EnableBuildFeatures taglib ; 536 } 537} 538 539 540# WebKit 541# Automatically install the WebKit feature, when the optional WebPositive 542# optional package is enabled. 543if [ IsOptionalHaikuImagePackageAdded WebPositive ] { 544 HAIKU_BUILD_FEATURE_WEBKIT = 1 ; 545} 546 547if $(TARGET_ARCH) = x86 { 548 HAIKU_WEBKIT_FILE = haikuwebkit-1.1.3-x86-gcc4-2012-08-31a.zip ; 549} else if $(TARGET_ARCH) = x86_64 { 550 HAIKU_WEBKIT_FILE = haikuwebkit-1.1.3-x86_64-gcc4-2012-12-22.zip ; 551} 552if $(HAIKU_BUILD_FEATURE_WEBKIT) { 553 if $(TARGET_ARCH) != x86 && $(TARGET_ARCH) != x86_64 { 554 Echo "WebKit support not available on $(TARGET_ARCH)" ; 555 } else if $(HAIKU_GCC_VERSION[1]) < 4 { 556 if ! $(isHybridBuild) { 557 Echo "WebKit support not available on gcc $(HAIKU_GCC_VERSION[1])" ; 558 } else { 559 Echo "WebKit to be utilized by gcc4 inside $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR)" ; 560 } 561 } else { 562 local zipFile = [ DownloadFile $(HAIKU_WEBKIT_FILE) 563 : $(baseURL)/$(HAIKU_WEBKIT_FILE) ] ; 564 565 HAIKU_WEBKIT_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 566 $(HAIKU_WEBKIT_FILE:B) ] ; 567 568 HAIKU_WEBKIT_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_WEBKIT_DIR) 569 : include/ : $(zipFile) : extracted-webkit ] ; 570 571 HAIKU_WEBKIT_LIBS = [ ExtractArchive $(HAIKU_WEBKIT_DIR) 572 : 573 lib/libwtf.so 574 lib/libjavascriptcore.so 575 lib/libwebcore.so 576 lib/libwebkit.so 577 : $(zipFile) 578 : extracted-webkit 579 ] ; 580 581 HAIKU_WEBKIT_HEADERS = [ FDirName $(HAIKU_WEBKIT_DIR) include ] ; 582 583 EnableBuildFeatures webkit ; 584 } 585} 586 587# libpng 588local libpngBaseURL = $(baseURL)/lib ; 589if $(TARGET_ARCH) = ppc || $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 || $(TARGET_ARCH) = arm { 590 if $(TARGET_ARCH) = arm { 591 HAIKU_LIBPNG_FILE = libpng-1.5.12-arm-2012-11-21.zip ; 592 } else if $(TARGET_ARCH) = ppc { 593 HAIKU_LIBPNG_FILE = libpng-1.5.12-ppc-gcc4-2012-08-27.zip ; 594 } else if $(TARGET_ARCH) = x86_64 { 595 HAIKU_LIBPNG_FILE = libpng-1.5.12-x86_64-2012-11-18.zip ; 596 } else if $(HAIKU_GCC_VERSION[1]) >= 4 { 597 HAIKU_LIBPNG_FILE = libpng-1.5.12-x86-gcc4-2012-08-23.zip ; 598 } else { 599 HAIKU_LIBPNG_FILE = libpng-1.5.12-x86-gcc2-2012-08-23.zip ; 600 } 601 602 local libpngZipFile = [ DownloadFile $(HAIKU_LIBPNG_FILE) 603 : $(libpngBaseURL)/$(HAIKU_LIBPNG_FILE) ] ; 604 605 HAIKU_LIBPNG_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 606 $(HAIKU_LIBPNG_FILE:B) ] ; 607 608 HAIKU_LIBPNG_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_LIBPNG_DIR) 609 : common/include : $(libpngZipFile) 610 : extracted-libpng ] ; 611 612 HAIKU_LIBPNG_LIB = [ ExtractArchive $(HAIKU_LIBPNG_DIR) 613 : 614 common/lib/libpng.so 615 : $(libpngZipFile) 616 : extracted-libpng ] ; 617 HAIKU_LIBPNG_CURRENT_LIB = [ ExtractArchive $(HAIKU_LIBPNG_DIR) 618 : 619 common/lib/libpng15.so.15.12.0 620 : $(libpngZipFile) 621 : extracted-libpng ] ; 622 Depends $(HAIKU_LIBPNG_LIB) $(HAIKU_LIBPNG_CURRENT_LIB) : $(HAIKU_LIBPNG_HEADERS_DEPENDENCY) ; 623 624 HAIKU_LIBPNG_CURRENT_LINK = libpng15.so.15 ; 625 626 HAIKU_LIBPNG_HEADERS = [ FDirName $(HAIKU_LIBPNG_DIR) common include ] ; 627 628 EnableBuildFeatures libpng ; 629} else { 630 Echo "libpng support not available on $(TARGET_ARCH)" ; 631} 632 633# jpeg 634local jpegBaseURL = $(baseURL)/lib ; 635if $(TARGET_ARCH) in arm ppc x86 x86_64 { 636 if $(TARGET_ARCH) = arm { 637 HAIKU_JPEG_FILE = jpeg-8d-arm-2012-11-21.zip ; 638 } else if $(TARGET_ARCH) = ppc { 639 HAIKU_JPEG_FILE = jpeg-8d-ppc-gcc4-2012-08-27.zip ; 640 } else if $(TARGET_ARCH) = x86_64 { 641 HAIKU_JPEG_FILE = jpeg-8d-x86_64-2012-11-18.zip ; 642 } else if $(HAIKU_GCC_VERSION[1]) >= 4 { 643 HAIKU_JPEG_FILE = jpeg-8d-x86-gcc4-2012-08-23.zip ; 644 } else { 645 HAIKU_JPEG_FILE = jpeg-8d-x86-gcc2-2012-08-23.zip ; 646 } 647 648 local jpegZipFile = [ DownloadFile $(HAIKU_JPEG_FILE) 649 : $(jpegBaseURL)/$(HAIKU_JPEG_FILE) ] ; 650 651 HAIKU_JPEG_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 652 $(HAIKU_JPEG_FILE:B) ] ; 653 654 HAIKU_JPEG_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_JPEG_DIR) 655 : common/include : $(jpegZipFile) 656 : extracted-jpeg ] ; 657 658 HAIKU_JPEG_LIB = [ ExtractArchive $(HAIKU_JPEG_DIR) 659 : 660 common/lib/libjpeg.so 661 : $(jpegZipFile) 662 : extracted-jpeg ] ; 663 HAIKU_JPEG_CURRENT_LIB = [ ExtractArchive $(HAIKU_JPEG_DIR) 664 : 665 common/lib/libjpeg.so.8.4.0 666 : $(jpegZipFile) 667 : extracted-jpeg ] ; 668 Depends $(HAIKU_JPEG_LIB) $(HAIKU_JPEG_CURRENT_LIB) : $(HAIKU_JPEG_HEADERS_DEPENDENCY) ; 669 670 HAIKU_JPEG_CURRENT_LINK = libjpeg.so.8 ; 671 672 HAIKU_JPEG_HEADERS = [ FDirName $(HAIKU_JPEG_DIR) common include ] ; 673 674 EnableBuildFeatures libjpeg ; 675} else { 676 Echo "jpeg support not available on $(TARGET_ARCH)" ; 677} 678 679# zlib 680local zlibBaseURL = $(baseURL)/lib ; 681if $(TARGET_ARCH) = ppc || $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 || $(TARGET_ARCH) = arm { 682 if $(TARGET_ARCH) = arm { 683 HAIKU_ZLIB_FILE = zlib-1.2.7-arm-2012-11-21.zip ; 684 } else if $(TARGET_ARCH) = ppc { 685 HAIKU_ZLIB_FILE = zlib-1.2.7-ppc-gcc4-2012-10-30.zip ; 686 } else if $(TARGET_ARCH) = x86_64 { 687 HAIKU_ZLIB_FILE = zlib-1.2.7-x86_64-2012-11-18.zip ; 688 } else if $(HAIKU_GCC_VERSION[1]) >= 4 { 689 HAIKU_ZLIB_FILE = zlib-1.2.7-x86-gcc4-2012-10-30.zip ; 690 } else { 691 HAIKU_ZLIB_FILE = zlib-1.2.7-x86-gcc2-2012-10-30.zip ; 692 } 693 694 local zlibZipFile = [ DownloadFile $(HAIKU_ZLIB_FILE) 695 : $(zlibBaseURL)/$(HAIKU_ZLIB_FILE) ] ; 696 697 HAIKU_ZLIB_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 698 $(HAIKU_ZLIB_FILE:B) ] ; 699 700 HAIKU_ZLIB_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_ZLIB_DIR) 701 : common/include : $(zlibZipFile) 702 : extracted-zlib ] ; 703 704 HAIKU_ZLIB_LIB = [ ExtractArchive $(HAIKU_ZLIB_DIR) 705 : 706 common/lib/libz.so 707 : $(zlibZipFile) 708 : extracted-zlib ] ; 709 HAIKU_ZLIB_CURRENT_LIB = [ ExtractArchive $(HAIKU_ZLIB_DIR) 710 : 711 common/lib/libz.so.1.2.7 712 : $(zlibZipFile) 713 : extracted-zlib ] ; 714 Depends $(HAIKU_ZLIB_LIB) $(HAIKU_ZLIB_CURRENT_LIB) : $(HAIKU_ZLIB_HEADERS_DEPENDENCY) ; 715 716 HAIKU_ZLIB_CURRENT_LINK = libz.so.1 ; 717 718 HAIKU_ZLIB_HEADERS = [ FDirName $(HAIKU_ZLIB_DIR) common include ] ; 719 720 EnableBuildFeatures zlib ; 721} else { 722 Echo "zlib support not available on $(TARGET_ARCH)" ; 723} 724 725 726# GPL add-ons 727if $(HAIKU_INCLUDE_GPL_ADDONS) = 1 { 728 EnableBuildFeatures gpl ; 729} 730 731 732# ATA vs. IDE 733#HACK: remove when old ide code is removed! 734if $(HAIKU_ATA_STACK) = 1 { 735 EnableBuildFeatures ata ; 736} else { 737 EnableBuildFeatures ide ; 738} 739