1# This file contains setup for build features that require external packages. It 2# is included once for each configured packaging architecture (with 3# TARGET_PACKAGING_ARCH set accordingly). 4 5 6local architecture = $(TARGET_PACKAGING_ARCH) ; 7local secondaryArchSubDir = [ MultiArchIfPrimary "" : /$(architecture) ] ; 8local libDir = lib$(secondaryArchSubDir) ; 9local developLibDir = develop/lib$(secondaryArchSubDir) ; 10local developHeadersDir = develop/headers$(secondaryArchSubDir) ; 11 12 13# SSL 14 15# Automatically enable the SSL feature, when the OpenSSL package is enabled. 16if [ IsHaikuImagePackageAdded openssl ] { 17 HAIKU_BUILD_FEATURE_SSL = 1 ; 18} 19 20if $(HAIKU_BUILD_FEATURE_SSL) { 21 if [ IsPackageAvailable openssl_devel ] { 22 ExtractBuildFeatureArchives openssl : 23 file: base openssl 24 runtime: lib 25 file: devel openssl_devel 26 depends: base 27 libraries: 28 $(developLibDir)/libcrypto.so 29 $(developLibDir)/libssl.so 30 headers: $(developHeadersDir) 31 ; 32 33 EnableBuildFeatures openssl ; 34 } else { 35 Echo "SSL build feature not available for $(TARGET_PACKAGING_ARCH)" ; 36 } 37} 38 39 40# gcc_syslibs 41 42if $(TARGET_PACKAGING_ARCH) != x86_gcc2 { 43 if [ IsPackageAvailable gcc_syslibs ] { 44 ExtractBuildFeatureArchives gcc_syslibs : 45 file: base gcc_syslibs 46 libgcc_s.so: $(libDir)/libgcc_s.so 47 libstdc++.so: $(libDir)/libstdc++.so 48 libsupc++.so: $(libDir)/libsupc++.so 49 ; 50 51 EnableBuildFeatures gcc_syslibs ; 52 } else { 53 Echo "gcc_syslibs not available for $(TARGET_PACKAGING_ARCH)" ; 54 } 55} 56 57 58# gcc_syslibs_devel 59 60if [ IsPackageAvailable gcc_syslibs_devel ] { 61 if $(TARGET_PACKAGING_ARCH) = x86_gcc2 { 62 ExtractBuildFeatureArchives gcc_syslibs_devel : 63 file: base gcc_syslibs_devel 64 libgcc.a: $(developLibDir)/libgcc.a 65 libgcc_eh.a: 66 libgcc-kernel.a: $(developLibDir)/libgcc.a 67 libgcc_eh-kernel.a: 68 libstdc++.a: 69 libsupc++.a: 70 libsupc++-kernel.a: 71 ; 72 } else { 73 ExtractBuildFeatureArchives gcc_syslibs_devel : 74 file: base gcc_syslibs_devel 75 libgcc.a: $(developLibDir)/libgcc.a 76 libgcc_eh.a: $(developLibDir)/libgcc_eh.a 77 libgcc-kernel.a: $(developLibDir)/libgcc-kernel.a 78 libgcc_eh-kernel.a: $(developLibDir)/libgcc_eh.a 79 libstdc++.a: $(developLibDir)/libstdc++.a 80 libsupc++.a: $(developLibDir)/libsupc++.a 81 libsupc++-kernel.a: $(developLibDir)/libsupc++-kernel.a 82 c++-headers: $(developHeadersDir)/c++ 83 gcc-headers: $(developHeadersDir)/gcc 84 ; 85 } 86 87 EnableBuildFeatures gcc_syslibs_devel ; 88} else { 89 Echo "gcc_syslibs_devel not available for $(TARGET_PACKAGING_ARCH)" ; 90} 91 92 93# ICU 94 95if [ IsPackageAvailable icu_devel ] { 96 ExtractBuildFeatureArchives icu : 97 file: base icu 98 runtime: lib 99 file: devel icu_devel 100 depends: base 101 libraries: 102 $(developLibDir)/libicudata.so 103 $(developLibDir)/libicui18n.so 104 $(developLibDir)/libicuio.so 105 $(developLibDir)/libicule.so 106 $(developLibDir)/libiculx.so 107 $(developLibDir)/libicutu.so 108 $(developLibDir)/libicuuc.so 109 headers: $(developHeadersDir) 110 ; 111 112 EnableBuildFeatures icu ; 113} else { 114 Echo "ICU not available for $(TARGET_PACKAGING_ARCH)" ; 115} 116 117 118# curl 119if [ IsPackageAvailable curl_devel ] { 120 ExtractBuildFeatureArchives curl : 121 file: base curl 122 runtime: lib 123 file: devel curl_devel 124 depends: base 125 library: 126 $(developLibDir)/libcurl.so 127 headers: $(developHeadersDir) $(developHeadersDir)/curl 128 ; 129 130 EnableBuildFeatures curl ; 131} else { 132 Echo "Curl not available for $(TARGET_PACKAGING_ARCH)" ; 133} 134 135 136# CLucene 137 138# TODO: Update to packages! 139if ! 1 { 140 141# Automatically install the CLucene feature, when the CLucene package is 142# enabled. 143if [ IsHaikuImagePackageAdded clucene ] { 144 HAIKU_BUILD_FEATURE_CLUCENE = 1 ; 145} 146 147 148HAIKU_CLUCENE_PACKAGE = clucene-0.9.21-x86-gcc4-haiku-2009-08-11.zip ; 149HAIKU_CLUCENE_URL = $(baseURL)/$(HAIKU_CLUCENE_PACKAGE) ; 150 151if $(HAIKU_BUILD_FEATURE_CLUCENE) { 152 if $(TARGET_ARCH) != x86 { 153 Echo "CLucene build feature not available for" 154 "$(TARGET_PACKAGING_ARCH)" ; 155 } else { 156 # Download the zip archive. 157 local zipFile = [ DownloadFile $(HAIKU_CLUCENE_PACKAGE) 158 : $(HAIKU_CLUCENE_URL) ] ; 159 160 # zip file and output directory 161 HAIKU_CLUCENE_ZIP_FILE = $(zipFile) ; 162 HAIKU_CLUCENE_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 163 $(HAIKU_CLUCENE_PACKAGE:B) ] ; 164 165 # extract headers and libraries 166 HAIKU_CLUCENE_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_CLUCENE_DIR) 167 : common/include/ : $(zipFile) : extracted-clucene 168 ] ; 169 170 HAIKU_CLUCENE_LIBS = [ ExtractArchive $(HAIKU_CLUCENE_DIR) 171 : 172 common/lib/libclucene.a 173 : $(zipFile) 174 : extracted-clucene 175 ] ; 176 177 HAIKU_CLUCENE_HEADERS 178 = [ FDirName $(HAIKU_CLUCENE_DIR) common include ] ; 179 180 EnableBuildFeatures clucene ; 181 } 182} 183 184} # ! 1 185 186 187# GLU (GL Utilities) 188if [ IsPackageAvailable glu_devel ] { 189 ExtractBuildFeatureArchives glu : 190 file: base glu 191 runtime: lib 192 file: devel glu_devel 193 depends: base 194 library: $(developLibDir)/libGLU.so 195 headers: $(developHeadersDir) 196 ; 197 198 EnableBuildFeatures glu ; 199} else { 200 Echo "GLU not yet available on $(TARGET_PACKAGING_ARCH)" ; 201} 202 203 204# GL (GL Kit, Mesa3D) 205if [ IsPackageAvailable mesa_devel ] { 206 ExtractBuildFeatureArchives mesa : 207 file: base mesa 208 runtime: lib 209 file: devel mesa_devel 210 depends: base 211 library: $(developLibDir)/libGL.so 212 headers: $(developHeadersDir)/os/opengl 213 ; 214 215 EnableBuildFeatures mesa ; 216} else { 217 Echo "GL not yet available on $(TARGET_PACKAGING_ARCH)" ; 218} 219 220 221# FFmpeg 222if [ IsPackageAvailable ffmpeg_devel ] { 223 local ffmpegLibs = libavformat.so libavcodec.so libavdevice.so 224 libavfilter.so libswscale.so libavutil.so ; 225 226 ExtractBuildFeatureArchives ffmpeg : 227 file: base ffmpeg 228 runtime: lib 229 file: devel ffmpeg_devel 230 depends: base 231 libraries: $(developLibDir)/$(ffmpegLibs) 232 headers: $(developHeadersDir) 233 ; 234 235 EnableBuildFeatures ffmpeg ; 236 237} else { 238 Echo "FFMpeg support not available on $(TARGET_PACKAGING_ARCH)" ; 239} 240 241 242# Freetype 243if [ IsPackageAvailable freetype_devel ] { 244 ExtractBuildFeatureArchives freetype : 245 file: base freetype 246 runtime: lib 247 file: devel freetype_devel 248 depends: base 249 library: $(developLibDir)/libfreetype.so 250 headers: $(developHeadersDir) $(developHeadersDir)/freetype2 251 ; 252 253 EnableBuildFeatures freetype ; 254} else { 255 Echo "Freetype support not available on $(TARGET_PACKAGING_ARCH)" ; 256} 257 258 259# Gutenprint 260if [ IsPackageAvailable gutenprint_devel ] { 261 ExtractBuildFeatureArchives gutenprint : 262 file: base gutenprint 263 runtime: lib 264 file: devel gutenprint_devel 265 depends: base 266 library: $(developLibDir)/libgutenprint.so 267 headers: $(developHeadersDir) $(developHeadersDir)/gutenprint 268 ; 269 270 EnableBuildFeatures gutenprint ; 271} else { 272 Echo "Gutenprint support not available on $(TARGET_PACKAGING_ARCH)" ; 273} 274 275 276# TagLib 277 278# TODO: Update to packages! 279if ! 1 { 280 281# Automatically install the TagLib feature, when the optional TagLib optional 282# package is enabled. 283if [ IsHaikuImagePackageAdded taglib ] { 284 HAIKU_BUILD_FEATURE_TAGLIB = 1 ; 285} 286 287HAIKU_TAGLIB_PACKAGE = taglib-1.6.3-r1a4-x86-gcc2-2012-09-03.zip ; 288HAIKU_TAGLIB_URL = $(baseURL)/$(HAIKU_TAGLIB_PACKAGE) ; 289 290if $(HAIKU_BUILD_FEATURE_TAGLIB) { 291 if $(TARGET_ARCH) != x86 { 292 Echo "TagLib build feature not available for $(TARGET_PACKAGING_ARCH)" ; 293 } else { 294 # Download the zip archive. 295 local zipFile = [ DownloadFile $(HAIKU_TAGLIB_PACKAGE) 296 : $(HAIKU_TAGLIB_URL) ] ; 297 298 # zip file and output directory 299 HAIKU_TAGLIB_ZIP_FILE = $(zipFile) ; 300 HAIKU_TAGLIB_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) 301 $(HAIKU_TAGLIB_PACKAGE:B) ] ; 302 303 # extract headers and libraries 304 HAIKU_TAGLIB_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_TAGLIB_DIR) 305 : common/include/ : $(zipFile) : extracted-taglib 306 ] ; 307 308 HAIKU_TAGLIB_LIBS = [ ExtractArchive $(HAIKU_TAGLIB_DIR) 309 : 310 common/lib/libtag.so 311 common/lib/libtag_c.so 312 : $(zipFile) 313 : extracted-taglib 314 ] ; 315 316 HAIKU_TAGLIB_HEADERS 317 = [ FDirName $(HAIKU_TAGLIB_DIR) common include taglib ] ; 318 319 EnableBuildFeatures taglib ; 320 } 321} 322 323} # ! 1 324 325 326# WebKit 327if [ IsPackageAvailable haikuwebkit_devel ] { 328 ExtractBuildFeatureArchives webkit : 329 file: base haikuwebkit 330 runtime: lib 331 file: devel haikuwebkit_devel 332 depends: base 333 libraries: 334 $(developLibDir)/libWebKit.so 335 headers: $(developHeadersDir) 336 ; 337 338 EnableBuildFeatures webkit ; 339} else { 340 Echo "WebKit build feature not available for $(TARGET_PACKAGING_ARCH)" ; 341} 342 343 344# libpng 345if [ IsPackageAvailable libpng_devel ] { 346 ExtractBuildFeatureArchives libpng : 347 file: base libpng 348 runtime: lib 349 file: devel libpng_devel 350 depends: base 351 library: $(developLibDir)/libpng.so 352 headers: $(developHeadersDir) 353 ; 354 355 EnableBuildFeatures libpng ; 356} else { 357 Echo "libpng support not available on $(TARGET_PACKAGING_ARCH)" ; 358} 359 360 361# jpeg 362if [ IsPackageAvailable jpeg_devel ] { 363 ExtractBuildFeatureArchives jpeg : 364 file: base jpeg 365 runtime: lib 366 file: devel jpeg_devel 367 depends: base 368 library: $(developLibDir)/libjpeg.so 369 headers: $(developHeadersDir) 370 ; 371 372 EnableBuildFeatures jpeg ; 373} else { 374 Echo "jpeg support not available on $(TARGET_PACKAGING_ARCH)" ; 375} 376 377 378# zlib 379if [ IsPackageAvailable zlib_devel ] { 380 ExtractBuildFeatureArchives zlib : 381 file: base zlib 382 runtime: lib 383 file: devel zlib_devel 384 depends: base 385 library: $(developLibDir)/libz.so 386 headers: $(developHeadersDir) 387 # sources are required for the primary architecture only 388 primary @{ 389 file: source zlib_source 390 sources: develop/sources/%portRevisionedName%/sources 391 }@ 392 ; 393 394 EnableBuildFeatures zlib ; 395} else { 396 Echo "zlib support not available on $(TARGET_PACKAGING_ARCH)" ; 397} 398 399 400# libsolv 401if [ IsPackageAvailable libsolv_devel ] { 402 ExtractBuildFeatureArchives libsolv : 403 file: base libsolv 404 runtime: lib 405 file: devel libsolv_devel 406 depends: base 407 libraries: 408 $(developLibDir)/libsolv.so 409 $(developLibDir)/libsolvext.so 410 headers: $(developHeadersDir) 411 # sources are required for the primary architecture only 412 primary @{ 413 file: source libsolv_source 414 sources: develop/sources/%portRevisionedName%/sources 415 }@ 416 ; 417 418 EnableBuildFeatures libsolv ; 419} else { 420 Echo "libsolv package not available for $(TARGET_PACKAGING_ARCH)" ; 421} 422 423 424# qrencode 425if [ IsPackageAvailable qrencode_devel ] { 426 ExtractBuildFeatureArchives libqrencode : 427 file: base qrencode 428 runtime: lib 429 file: devel qrencode_devel 430 depends: base 431 library: $(developLibDir)/libqrencode.a 432 headers: $(developHeadersDir) 433 ; 434 435 EnableBuildFeatures libqrencode ; 436} else { 437 Echo "qrencode support not available on $(TARGET_PACKAGING_ARCH)" ; 438} 439 440 441# tiff 442if [ IsPackageAvailable tiff_devel ] { 443 ExtractBuildFeatureArchives tiff : 444 file: base tiff 445 runtime: lib 446 file: devel tiff_devel 447 depends: base 448 library: $(developLibDir)/libtiff.so.3 449 headers: $(developHeadersDir) $(developHeadersDir)/tiff 450 ; 451 452 EnableBuildFeatures tiff ; 453} else { 454 Echo "Tiff support not available on $(TARGET_PACKAGING_ARCH)" ; 455} 456 457 458 459# GPL add-ons 460if $(HAIKU_INCLUDE_GPL_ADDONS) = 1 { 461 EnableBuildFeatures gpl ; 462} 463 464 465# ATA vs. IDE 466#HACK: remove when old ide code is removed! 467if $(HAIKU_ATA_STACK) = 1 { 468 EnableBuildFeatures ata ; 469} else { 470 EnableBuildFeatures ide ; 471} 472