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).
6 local architecture = $(TARGET_PACKAGING_ARCH) ;
7 local secondaryArchSubDir = [ MultiArchIfPrimary "" : /$(architecture) ] ;
8 local libDir = lib$(secondaryArchSubDir) ;
9 local developLibDir = develop/lib$(secondaryArchSubDir) ;
10 local developHeadersDir = develop/headers$(secondaryArchSubDir) ;
15 # Automatically enable the SSL feature, when the OpenSSL package is enabled.
16 if [ IsHaikuImagePackageAdded openssl ] {
17 HAIKU_BUILD_FEATURE_SSL = 1 ;
20 if $(HAIKU_BUILD_FEATURE_SSL) {
21 if [ IsPackageAvailable openssl_devel ] {
22 ExtractBuildFeatureArchives openssl :
25 file: devel openssl_devel
28 $(developLibDir)/libcrypto.so
29 $(developLibDir)/libssl.so
30 headers: $(developHeadersDir)
33 EnableBuildFeatures openssl ;
35 Echo "SSL build feature not available for $(TARGET_PACKAGING_ARCH)" ;
42 if $(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
51 EnableBuildFeatures gcc_syslibs ;
53 Echo "gcc_syslibs not available for $(TARGET_PACKAGING_ARCH)" ;
60 if [ 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
66 libgcc-kernel.a: $(developLibDir)/libgcc.a
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
87 EnableBuildFeatures gcc_syslibs_devel ;
89 Echo "gcc_syslibs_devel not available for $(TARGET_PACKAGING_ARCH)" ;
95 if [ IsPackageAvailable icu_devel ] {
96 ExtractBuildFeatureArchives icu :
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)
112 EnableBuildFeatures icu ;
114 Echo "ICU not available for $(TARGET_PACKAGING_ARCH)" ;
119 if [ IsPackageAvailable curl_devel ] {
120 ExtractBuildFeatureArchives curl :
123 file: devel curl_devel
126 $(developLibDir)/libcurl.so
127 headers: $(developHeadersDir) $(developHeadersDir)/curl
130 EnableBuildFeatures curl ;
132 Echo "Curl not available for $(TARGET_PACKAGING_ARCH)" ;
138 # TODO: Update to packages!
141 # Automatically install the CLucene feature, when the CLucene package is
143 if [ IsHaikuImagePackageAdded clucene ] {
144 HAIKU_BUILD_FEATURE_CLUCENE = 1 ;
148 HAIKU_CLUCENE_PACKAGE = clucene-0.9.21-x86-gcc4-haiku-2009-08-11.zip ;
149 HAIKU_CLUCENE_URL = $(baseURL)/$(HAIKU_CLUCENE_PACKAGE) ;
151 if $(HAIKU_BUILD_FEATURE_CLUCENE) {
152 if $(TARGET_ARCH) != x86 {
153 Echo "CLucene build feature not available for"
154 "$(TARGET_PACKAGING_ARCH)" ;
156 # Download the zip archive.
157 local zipFile = [ DownloadFile $(HAIKU_CLUCENE_PACKAGE)
158 : $(HAIKU_CLUCENE_URL) ] ;
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) ] ;
165 # extract headers and libraries
166 HAIKU_CLUCENE_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_CLUCENE_DIR)
167 : common/include/ : $(zipFile) : extracted-clucene
170 HAIKU_CLUCENE_LIBS = [ ExtractArchive $(HAIKU_CLUCENE_DIR)
172 common/lib/libclucene.a
177 HAIKU_CLUCENE_HEADERS
178 = [ FDirName $(HAIKU_CLUCENE_DIR) common include ] ;
180 EnableBuildFeatures clucene ;
188 if [ IsPackageAvailable giflib_devel ] {
189 ExtractBuildFeatureArchives giflib :
192 file: devel giflib_devel
194 library: $(developLibDir)/libgif.so.7
195 headers: $(developHeadersDir)
198 EnableBuildFeatures giflib ;
200 Echo "Giflib support not available on $(TARGET_PACKAGING_ARCH)" ;
205 if [ IsPackageAvailable glu_devel ] {
206 ExtractBuildFeatureArchives glu :
209 file: devel glu_devel
211 library: $(developLibDir)/libGLU.so
212 headers: $(developHeadersDir)
215 EnableBuildFeatures glu ;
217 Echo "GLU not yet available on $(TARGET_PACKAGING_ARCH)" ;
221 # GL (GL Kit, Mesa3D)
222 if [ IsPackageAvailable mesa_devel ] {
223 ExtractBuildFeatureArchives mesa :
226 file: devel mesa_devel
228 library: $(developLibDir)/libGL.so
229 headers: $(developHeadersDir)/os/opengl
232 EnableBuildFeatures mesa ;
234 Echo "GL not yet available on $(TARGET_PACKAGING_ARCH)" ;
239 if [ IsPackageAvailable ffmpeg_devel ] {
240 local ffmpegLibs = libavformat.so libavcodec.so libavdevice.so
241 libavfilter.so libswscale.so libavutil.so libswresample.so ;
243 ExtractBuildFeatureArchives ffmpeg :
246 file: devel ffmpeg_devel
248 libraries: $(developLibDir)/$(ffmpegLibs)
249 headers: $(developHeadersDir)
252 EnableBuildFeatures ffmpeg ;
255 Echo "FFMpeg support not available on $(TARGET_PACKAGING_ARCH)" ;
260 if [ IsPackageAvailable fluidlite_devel ] && [ IsPackageAvailable libvorbis_devel ] {
261 ExtractBuildFeatureArchives fluidlite :
262 file: devel fluidlite_devel
263 library: $(developLibDir)/libfluidlite.a
264 headers: $(developHeadersDir)
267 EnableBuildFeatures fluidlite ;
269 Echo "Fluidlite support not available on $(TARGET_PACKAGING_ARCH)" ;
274 if [ IsPackageAvailable libvorbis_devel ] {
275 ExtractBuildFeatureArchives libvorbis :
278 file: devel libvorbis_devel
280 library: $(developLibDir)/libvorbisfile.so.3
281 headers: $(developHeadersDir)
284 EnableBuildFeatures libvorbis ;
286 Echo "Libvorbis support not available on $(TARGET_PACKAGING_ARCH)" ;
291 if [ IsPackageAvailable freetype_devel ] {
292 ExtractBuildFeatureArchives freetype :
295 file: devel freetype_devel
297 library: $(developLibDir)/libfreetype.so
298 headers: $(developHeadersDir) $(developHeadersDir)/freetype2
301 EnableBuildFeatures freetype ;
303 Echo "Freetype support not available on $(TARGET_PACKAGING_ARCH)" ;
307 if [ IsPackageAvailable fontconfig_devel ] {
308 ExtractBuildFeatureArchives fontconfig :
309 file: base fontconfig
311 file: devel fontconfig_devel
313 library: $(developLibDir)/libfontconfig.so
314 headers: $(developHeadersDir) $(developHeadersDir)/fontconfig
317 EnableBuildFeatures fontconfig ;
319 Echo "fontconfig support not available on $(TARGET_PACKAGING_ARCH)" ;
323 if [ IsPackageAvailable gutenprint_devel ] {
324 ExtractBuildFeatureArchives gutenprint :
325 file: base gutenprint
327 file: devel gutenprint_devel
329 library: $(developLibDir)/libgutenprint.so
330 headers: $(developHeadersDir) $(developHeadersDir)/gutenprint
333 EnableBuildFeatures gutenprint ;
335 Echo "Gutenprint support not available on $(TARGET_PACKAGING_ARCH)" ;
341 # TODO: Update to packages!
344 # Automatically install the TagLib feature, when the optional TagLib optional
345 # package is enabled.
346 if [ IsHaikuImagePackageAdded taglib ] {
347 HAIKU_BUILD_FEATURE_TAGLIB = 1 ;
350 HAIKU_TAGLIB_PACKAGE = taglib-1.6.3-r1a4-x86-gcc2-2012-09-03.zip ;
351 HAIKU_TAGLIB_URL = $(baseURL)/$(HAIKU_TAGLIB_PACKAGE) ;
353 if $(HAIKU_BUILD_FEATURE_TAGLIB) {
354 if $(TARGET_ARCH) != x86 {
355 Echo "TagLib build feature not available for $(TARGET_PACKAGING_ARCH)" ;
357 # Download the zip archive.
358 local zipFile = [ DownloadFile $(HAIKU_TAGLIB_PACKAGE)
359 : $(HAIKU_TAGLIB_URL) ] ;
361 # zip file and output directory
362 HAIKU_TAGLIB_ZIP_FILE = $(zipFile) ;
363 HAIKU_TAGLIB_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
364 $(HAIKU_TAGLIB_PACKAGE:B) ] ;
366 # extract headers and libraries
367 HAIKU_TAGLIB_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_TAGLIB_DIR)
368 : common/include/ : $(zipFile) : extracted-taglib
371 HAIKU_TAGLIB_LIBS = [ ExtractArchive $(HAIKU_TAGLIB_DIR)
374 common/lib/libtag_c.so
380 = [ FDirName $(HAIKU_TAGLIB_DIR) common include taglib ] ;
382 EnableBuildFeatures taglib ;
390 if [ IsPackageAvailable haikuwebkit_devel ] {
391 ExtractBuildFeatureArchives webkit :
392 file: base haikuwebkit
394 file: devel haikuwebkit_devel
397 $(developLibDir)/libWebKit.so
398 headers: $(developHeadersDir)
401 EnableBuildFeatures webkit ;
403 Echo "WebKit build feature not available for $(TARGET_PACKAGING_ARCH)" ;
408 if [ IsPackageAvailable libpng16_devel ] {
409 ExtractBuildFeatureArchives libpng :
412 file: devel libpng16_devel
414 library: $(developLibDir)/libpng16.so
415 headers: $(developHeadersDir)
418 EnableBuildFeatures libpng ;
420 Echo "libpng support not available on $(TARGET_PACKAGING_ARCH)" ;
425 if [ IsPackageAvailable libicns_devel ] {
426 ExtractBuildFeatureArchives libicns :
429 file: devel libicns_devel
431 library: $(developLibDir)/libicns.so.1
432 headers: $(developHeadersDir)
435 EnableBuildFeatures libicns ;
437 Echo "libicns support not available on $(TARGET_PACKAGING_ARCH)" ;
442 if [ IsPackageAvailable jasper_devel ] {
443 if $(HAIKU_PACKAGING_ARCH) = x86_64 {
444 ExtractBuildFeatureArchives jasper :
447 file: devel jasper_devel
449 library: $(developLibDir)/libjasper.so.4
450 headers: $(developHeadersDir) $(developHeadersDir)/jasper
453 ExtractBuildFeatureArchives jasper :
456 file: devel jasper_devel
458 library: $(developLibDir)/libjasper.so.1
459 headers: $(developHeadersDir) $(developHeadersDir)/jasper
462 EnableBuildFeatures jasper ;
464 Echo "Jasper support not available on $(TARGET_PACKAGING_ARCH)" ;
469 if [ IsPackageAvailable jpeg_devel ] {
470 ExtractBuildFeatureArchives jpeg :
473 file: devel jpeg_devel
475 library: $(developLibDir)/libjpeg.so
476 headers: $(developHeadersDir)
479 EnableBuildFeatures jpeg ;
481 Echo "jpeg support not available on $(TARGET_PACKAGING_ARCH)" ;
486 if [ IsPackageAvailable zlib_devel ] {
487 ExtractBuildFeatureArchives zlib :
490 file: devel zlib_devel
492 library: $(developLibDir)/libz.so
493 headers: $(developHeadersDir)
494 # sources are required for the primary architecture only
496 file: source zlib_source
497 sources: develop/sources/%portRevisionedName%/sources
501 EnableBuildFeatures zlib ;
503 Echo "zlib support not available on $(TARGET_PACKAGING_ARCH)" ;
508 if [ IsPackageAvailable libedit_devel ] {
509 ExtractBuildFeatureArchives libedit :
512 file: devel libedit_devel
514 library: $(developLibDir)/libedit.so
515 headers: $(developHeadersDir)
518 EnableBuildFeatures libedit ;
520 Echo "libedit support not available on $(TARGET_PACKAGING_ARCH)" ;
525 if [ IsPackageAvailable libsolv_devel ] {
526 ExtractBuildFeatureArchives libsolv :
529 file: devel libsolv_devel
532 $(developLibDir)/libsolv.so
533 $(developLibDir)/libsolvext.so
534 headers: $(developHeadersDir)
535 # sources are required for the primary architecture only
537 file: source libsolv_source
538 sources: develop/sources/%portRevisionedName%/sources
542 EnableBuildFeatures libsolv ;
544 Echo "libsolv package not available for $(TARGET_PACKAGING_ARCH)" ;
549 if [ IsPackageAvailable qrencode_kdl_devel ] {
550 ExtractBuildFeatureArchives libqrencode_kdl :
551 file: devel qrencode_kdl_devel
552 library: $(developLibDir)/libqrencode_kdl.a
553 headers: $(developHeadersDir)
556 EnableBuildFeatures libqrencode_kdl ;
558 Echo "qrencode support not available on $(TARGET_PACKAGING_ARCH)" ;
563 if [ IsPackageAvailable tiff4_devel ] {
564 ExtractBuildFeatureArchives tiff :
567 file: devel tiff4_devel
569 library: $(developLibDir)/libtiff.so.5
570 headers: $(developHeadersDir) $(developHeadersDir)/tiff
573 EnableBuildFeatures tiff ;
575 Echo "Tiff support not available on $(TARGET_PACKAGING_ARCH)" ;
580 if [ IsPackageAvailable libwebp_devel ] {
581 if $(HAIKU_PACKAGING_ARCH) = x86 && $(TARGET_PACKAGING_ARCH) = x86_gcc2 {
582 ExtractBuildFeatureArchives libwebp :
585 file: devel libwebp_devel
587 library: $(developLibDir)/libwebp.so.6
588 headers: $(developHeadersDir) $(developHeadersDir)/webp
591 ExtractBuildFeatureArchives libwebp :
594 file: devel libwebp_devel
596 library: $(developLibDir)/libwebp.so.7
597 headers: $(developHeadersDir) $(developHeadersDir)/webp
601 EnableBuildFeatures libwebp ;
603 Echo "Libwebp support not available on $(TARGET_PACKAGING_ARCH)" ;
608 if [ IsPackageAvailable live555_devel ] {
609 ExtractBuildFeatureArchives live555 :
610 file: devel live555_devel
612 $(developLibDir)/libliveMedia.a
613 $(developLibDir)/libBasicUsageEnvironment.a
614 $(developLibDir)/libgroupsock.a
615 $(developLibDir)/libUsageEnvironment.a
617 headers: $(developHeadersDir)
618 $(developHeadersDir)/liveMedia
619 $(developHeadersDir)/BasicUsageEnvironment
620 $(developHeadersDir)/groupsock
621 $(developHeadersDir)/UsageEnvironment
623 EnableBuildFeatures live555 ;
625 Echo "live555 not available for $(TARGET_PACKAGING_ARCH)" ;
630 if [ IsPackageAvailable ncurses6_devel ] {
631 ExtractBuildFeatureArchives ncurses :
634 file: devel ncurses6_devel
636 library: $(developLibDir)/libncurses.so.6
637 headers: $(developHeadersDir)
640 EnableBuildFeatures ncurses ;
642 Echo "ncurses support not available on $(TARGET_PACKAGING_ARCH)" ;
647 if [ IsPackageAvailable expat_devel ] {
648 ExtractBuildFeatureArchives expat :
651 file: devel expat_devel
653 library: $(developLibDir)/libexpat.so.1
654 headers: $(developHeadersDir)
657 EnableBuildFeatures expat ;
659 Echo "expat support not available on $(TARGET_PACKAGING_ARCH)" ;
664 if $(TARGET_PACKAGING_ARCH) = x86_64 {
665 if [ IsPackageAvailable gnuefi ] {
666 ExtractBuildFeatureArchives gnuefi :
668 headers: $(developHeadersDir)/gnuefi
669 headersProtocol: $(developHeadersDir)/gnuefi/protocol
670 headersArch: $(developHeadersDir)/gnuefi/$(TARGET_ARCH)
671 libdir: $(libDir)/gnuefi
674 EnableBuildFeatures gnuefi ;
676 Echo "gnuefi support not available on $(TARGET_PACKAGING_ARCH)" ;
681 if $(HAIKU_INCLUDE_GPL_ADDONS) = 1 {
682 EnableBuildFeatures gpl ;
686 EnableBuildFeatures ata ;