Adjust jasper soname for x86_64.
[haiku.git] / build / jam / BuildFeatures
blobeb3c34ebf084d7523a94bf2c55bd7ad35d3a932b
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) ;
13 # SSL
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 :
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                         ;
33                 EnableBuildFeatures openssl ;
34         } else {
35                 Echo "SSL build feature not available for $(TARGET_PACKAGING_ARCH)" ;
36         }
40 # gcc_syslibs
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
49                         ;
51                 EnableBuildFeatures gcc_syslibs ;
52         } else  {
53                 Echo "gcc_syslibs not available for $(TARGET_PACKAGING_ARCH)" ;
54         }
58 # gcc_syslibs_devel
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
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         }
87         EnableBuildFeatures gcc_syslibs_devel ;
88 } else  {
89         Echo "gcc_syslibs_devel not available for $(TARGET_PACKAGING_ARCH)" ;
93 # ICU
95 if [ 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                 ;
112         EnableBuildFeatures icu ;
113 } else  {
114         Echo "ICU not available for $(TARGET_PACKAGING_ARCH)" ;
118 # curl
119 if [ 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                 ;
130         EnableBuildFeatures curl ;
131 } else  {
132         Echo "Curl not available for $(TARGET_PACKAGING_ARCH)" ;
136 # CLucene
138 # TODO: Update to packages!
139 if ! 1 {
141 # Automatically install the CLucene feature, when the CLucene package is
142 # enabled.
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)" ;
155         } else {
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
168                 ] ;
170                 HAIKU_CLUCENE_LIBS = [ ExtractArchive $(HAIKU_CLUCENE_DIR)
171                         :
172                         common/lib/libclucene.a
173                         : $(zipFile)
174                          : extracted-clucene
175                 ] ;
177                 HAIKU_CLUCENE_HEADERS
178                         = [ FDirName $(HAIKU_CLUCENE_DIR) common include ] ;
180                 EnableBuildFeatures clucene ;
181         }
184 } # ! 1
187 # Giflib
188 if [ IsPackageAvailable giflib_devel ] {
189         ExtractBuildFeatureArchives giflib :
190                 file: base giflib
191                         runtime: lib
192                 file: devel giflib_devel
193                         depends: base
194                         library: $(developLibDir)/libgif.so.7
195                         headers: $(developHeadersDir)
196                 ;
198         EnableBuildFeatures giflib ;
199 } else {
200         Echo "Giflib support not available on $(TARGET_PACKAGING_ARCH)" ;
204 # GLU (GL Utilities)
205 if [ IsPackageAvailable glu_devel ] {
206         ExtractBuildFeatureArchives glu :
207                 file: base glu
208                         runtime: lib
209                 file: devel glu_devel
210                         depends: base
211                         library: $(developLibDir)/libGLU.so
212                         headers: $(developHeadersDir)
213                 ;
215         EnableBuildFeatures glu ;
216 } else {
217         Echo "GLU not yet available on $(TARGET_PACKAGING_ARCH)" ;
221 # GL (GL Kit, Mesa3D)
222 if [ IsPackageAvailable mesa_devel ] {
223         ExtractBuildFeatureArchives mesa :
224                 file: base mesa
225                         runtime: lib
226                 file: devel mesa_devel
227                         depends: base
228                         library: $(developLibDir)/libGL.so
229                         headers: $(developHeadersDir)/os/opengl
230                 ;
232         EnableBuildFeatures mesa ;
233 } else {
234         Echo "GL not yet available on $(TARGET_PACKAGING_ARCH)" ;
238 # FFmpeg
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 :
244                 file: base ffmpeg
245                         runtime: lib
246                 file: devel ffmpeg_devel
247                         depends: base
248                         libraries: $(developLibDir)/$(ffmpegLibs)
249                         headers: $(developHeadersDir)
250                 ;
252         EnableBuildFeatures ffmpeg ;
254 } else {
255         Echo "FFMpeg support not available on $(TARGET_PACKAGING_ARCH)" ;
259 # Fluidlite
260 if [ IsPackageAvailable fluidlite_devel ] && [ IsPackageAvailable libvorbis_devel ] {
261         ExtractBuildFeatureArchives fluidlite :
262                 file: devel fluidlite_devel
263                         library: $(developLibDir)/libfluidlite.a
264                         headers: $(developHeadersDir)
265                 ;
267         EnableBuildFeatures fluidlite ;
268 } else {
269         Echo "Fluidlite support not available on $(TARGET_PACKAGING_ARCH)" ;
273 # Libvorbis
274 if [ IsPackageAvailable libvorbis_devel ] {
275         ExtractBuildFeatureArchives libvorbis :
276                 file: base libvorbis
277                         runtime: lib
278                 file: devel libvorbis_devel
279                         depends: base
280                         library: $(developLibDir)/libvorbisfile.so.3
281                         headers: $(developHeadersDir)
282                 ;
284         EnableBuildFeatures libvorbis ;
285 } else {
286         Echo "Libvorbis support not available on $(TARGET_PACKAGING_ARCH)" ;
290 # Freetype
291 if [ IsPackageAvailable freetype_devel ] {
292         ExtractBuildFeatureArchives freetype :
293                 file: base freetype
294                         runtime: lib
295                 file: devel freetype_devel
296                         depends: base
297                         library: $(developLibDir)/libfreetype.so
298                         headers: $(developHeadersDir) $(developHeadersDir)/freetype2
299                 ;
301         EnableBuildFeatures freetype ;
302 } else {
303         Echo "Freetype support not available on $(TARGET_PACKAGING_ARCH)" ;
306 # fontconfig
307 if [ IsPackageAvailable fontconfig_devel ] {
308         ExtractBuildFeatureArchives fontconfig :
309                 file: base fontconfig
310                         runtime: lib
311                 file: devel fontconfig_devel
312                         depends: base
313                         library: $(developLibDir)/libfontconfig.so
314                         headers: $(developHeadersDir) $(developHeadersDir)/fontconfig
315                 ;
317         EnableBuildFeatures fontconfig ;
318 } else {
319         Echo "fontconfig support not available on $(TARGET_PACKAGING_ARCH)" ;
322 # Gutenprint
323 if [ IsPackageAvailable gutenprint_devel ] {
324         ExtractBuildFeatureArchives gutenprint :
325                 file: base gutenprint
326                         runtime: lib
327                 file: devel gutenprint_devel
328                         depends: base
329                         library: $(developLibDir)/libgutenprint.so
330                         headers: $(developHeadersDir) $(developHeadersDir)/gutenprint
331                 ;
333         EnableBuildFeatures gutenprint ;
334 } else {
335         Echo "Gutenprint support not available on $(TARGET_PACKAGING_ARCH)" ;
339 # TagLib
341 # TODO: Update to packages!
342 if ! 1 {
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)" ;
356         } else {
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
369                 ] ;
371                 HAIKU_TAGLIB_LIBS = [ ExtractArchive $(HAIKU_TAGLIB_DIR)
372                         :
373                         common/lib/libtag.so
374                         common/lib/libtag_c.so
375                         : $(zipFile)
376                         : extracted-taglib
377                 ] ;
379                 HAIKU_TAGLIB_HEADERS
380                         = [ FDirName $(HAIKU_TAGLIB_DIR) common include taglib ] ;
382                 EnableBuildFeatures taglib ;
383         }
386 } # ! 1
389 # WebKit
390 if [ IsPackageAvailable haikuwebkit_devel ] {
391         ExtractBuildFeatureArchives webkit :
392                 file: base haikuwebkit
393                         runtime: lib
394                 file: devel haikuwebkit_devel
395                         depends: base
396                         libraries:
397                                 $(developLibDir)/libWebKit.so
398                         headers: $(developHeadersDir)
399                 ;
401         EnableBuildFeatures webkit ;
402 } else {
403         Echo "WebKit build feature not available for $(TARGET_PACKAGING_ARCH)" ;
407 # libpng
408 if [ IsPackageAvailable libpng16_devel ] {
409         ExtractBuildFeatureArchives libpng :
410                 file: base libpng16
411                         runtime: lib
412                 file: devel libpng16_devel
413                         depends: base
414                         library: $(developLibDir)/libpng16.so
415                         headers: $(developHeadersDir)
416                 ;
418         EnableBuildFeatures libpng ;
419 } else {
420         Echo "libpng support not available on $(TARGET_PACKAGING_ARCH)" ;
424 # libicns
425 if [ IsPackageAvailable libicns_devel ] {
426         ExtractBuildFeatureArchives libicns :
427                 file: base libicns
428                         runtime: lib
429                 file: devel libicns_devel
430                         depends: base
431                         library: $(developLibDir)/libicns.so.1
432                         headers: $(developHeadersDir)
433                 ;
435         EnableBuildFeatures libicns ;
436 } else {
437         Echo "libicns support not available on $(TARGET_PACKAGING_ARCH)" ;
441 # Jasper
442 if [ IsPackageAvailable jasper_devel ] {
443         if $(HAIKU_PACKAGING_ARCH) = x86_64 {
444                 ExtractBuildFeatureArchives jasper :
445                         file: base jasper
446                                 runtime: lib
447                         file: devel jasper_devel
448                                 depends: base
449                                 library: $(developLibDir)/libjasper.so.4
450                                 headers: $(developHeadersDir) $(developHeadersDir)/jasper
451                         ;
452         } else {
453                 ExtractBuildFeatureArchives jasper :
454                         file: base jasper
455                                 runtime: lib
456                         file: devel jasper_devel
457                                 depends: base
458                                 library: $(developLibDir)/libjasper.so.1
459                                 headers: $(developHeadersDir) $(developHeadersDir)/jasper
460                         ;
461         }
462         EnableBuildFeatures jasper ;
463 } else {
464         Echo "Jasper support not available on $(TARGET_PACKAGING_ARCH)" ;
468 # jpeg
469 if [ IsPackageAvailable jpeg_devel ] {
470         ExtractBuildFeatureArchives jpeg :
471                 file: base jpeg
472                         runtime: lib
473                 file: devel jpeg_devel
474                         depends: base
475                         library: $(developLibDir)/libjpeg.so
476                         headers: $(developHeadersDir)
477                 ;
479         EnableBuildFeatures jpeg ;
480 } else {
481         Echo "jpeg support not available on $(TARGET_PACKAGING_ARCH)" ;
485 # zlib
486 if [ IsPackageAvailable zlib_devel ] {
487         ExtractBuildFeatureArchives zlib :
488                 file: base zlib
489                         runtime: lib
490                 file: devel zlib_devel
491                         depends: base
492                         library: $(developLibDir)/libz.so
493                         headers: $(developHeadersDir)
494                 # sources are required for the primary architecture only
495                 primary @{
496                         file: source zlib_source
497                                 sources: develop/sources/%portRevisionedName%/sources
498                 }@
499                 ;
501         EnableBuildFeatures zlib ;
502 } else {
503         Echo "zlib support not available on $(TARGET_PACKAGING_ARCH)" ;
507 # libedit
508 if [ IsPackageAvailable libedit_devel ] {
509         ExtractBuildFeatureArchives libedit :
510                 file: base libedit
511                         runtime: lib
512                 file: devel libedit_devel
513                         depends: base
514                         library: $(developLibDir)/libedit.so
515                         headers: $(developHeadersDir)
516                 ;
518         EnableBuildFeatures libedit ;
519 } else {
520         Echo "libedit support not available on $(TARGET_PACKAGING_ARCH)" ;
524 # libsolv
525 if [ IsPackageAvailable libsolv_devel ] {
526         ExtractBuildFeatureArchives libsolv :
527                 file: base libsolv
528                         runtime: lib
529                 file: devel libsolv_devel
530                         depends: base
531                         libraries:
532                                 $(developLibDir)/libsolv.so
533                                 $(developLibDir)/libsolvext.so
534                         headers: $(developHeadersDir)
535                 # sources are required for the primary architecture only
536                 primary @{
537                         file: source libsolv_source
538                                 sources: develop/sources/%portRevisionedName%/sources
539                 }@
540                 ;
542         EnableBuildFeatures libsolv ;
543 } else {
544         Echo "libsolv package not available for $(TARGET_PACKAGING_ARCH)" ;
548 # qrencode
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)
554                 ;
556         EnableBuildFeatures libqrencode_kdl ;
557 } else {
558         Echo "qrencode support not available on $(TARGET_PACKAGING_ARCH)" ;
562 # tiff
563 if [ IsPackageAvailable tiff4_devel ] {
564         ExtractBuildFeatureArchives tiff :
565                 file: base tiff4
566                         runtime: lib
567                 file: devel tiff4_devel
568                         depends: base
569                         library: $(developLibDir)/libtiff.so.5
570                         headers: $(developHeadersDir) $(developHeadersDir)/tiff
571                 ;
573         EnableBuildFeatures tiff ;
574 } else {
575         Echo "Tiff support not available on $(TARGET_PACKAGING_ARCH)" ;
579 # libwebp
580 if [ IsPackageAvailable libwebp_devel ] {
581         if $(HAIKU_PACKAGING_ARCH) = x86 && $(TARGET_PACKAGING_ARCH) = x86_gcc2 {
582                 ExtractBuildFeatureArchives libwebp :
583                         file: base libwebp
584                                 runtime: lib
585                         file: devel libwebp_devel
586                                 depends: base
587                                 library: $(developLibDir)/libwebp.so.6
588                                 headers: $(developHeadersDir) $(developHeadersDir)/webp
589                         ;
590         } else {
591                 ExtractBuildFeatureArchives libwebp :
592                         file: base libwebp
593                                 runtime: lib
594                         file: devel libwebp_devel
595                                 depends: base
596                                 library: $(developLibDir)/libwebp.so.7
597                                 headers: $(developHeadersDir) $(developHeadersDir)/webp
598                         ;
599         }
601         EnableBuildFeatures libwebp ;
602 } else {
603         Echo "Libwebp support not available on $(TARGET_PACKAGING_ARCH)" ;
607 # live555
608 if [ IsPackageAvailable live555_devel ] {
609         ExtractBuildFeatureArchives live555 :
610                 file: devel live555_devel
611                         libraries:
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
622                 ;
623         EnableBuildFeatures live555 ;
624 } else  {
625         Echo "live555 not available for $(TARGET_PACKAGING_ARCH)" ;
629 # ncurses
630 if [ IsPackageAvailable ncurses6_devel ] {
631         ExtractBuildFeatureArchives ncurses :
632                 file: base ncurses6
633                         runtime: lib
634                 file: devel ncurses6_devel
635                         depends: base
636                         library: $(developLibDir)/libncurses.so.6
637                         headers: $(developHeadersDir)
638                 ;
640         EnableBuildFeatures ncurses ;
641 } else {
642         Echo "ncurses support not available on $(TARGET_PACKAGING_ARCH)" ;
646 # expat
647 if [ IsPackageAvailable expat_devel ] {
648         ExtractBuildFeatureArchives expat :
649                 file: base expat
650                         runtime: lib
651                 file: devel expat_devel
652                         depends: base
653                         library: $(developLibDir)/libexpat.so.1
654                         headers: $(developHeadersDir)
655                 ;
657         EnableBuildFeatures expat ;
658 } else {
659         Echo "expat support not available on $(TARGET_PACKAGING_ARCH)" ;
663 # gnu-efi
664 if $(TARGET_PACKAGING_ARCH) = x86_64 {
665         if [ IsPackageAvailable gnuefi ] {
666                 ExtractBuildFeatureArchives gnuefi :
667                         file: base gnuefi
668                                 headers: $(developHeadersDir)/gnuefi
669                                 headersProtocol: $(developHeadersDir)/gnuefi/protocol
670                                 headersArch: $(developHeadersDir)/gnuefi/$(TARGET_ARCH)
671                                 libdir: $(libDir)/gnuefi
672                         ;
674                 EnableBuildFeatures gnuefi ;
675         } else {
676                 Echo "gnuefi support not available on $(TARGET_PACKAGING_ARCH)" ;
677         }
680 # GPL add-ons
681 if $(HAIKU_INCLUDE_GPL_ADDONS) = 1 {
682         EnableBuildFeatures gpl ;
685 # ATA Drivers + Bus
686 EnableBuildFeatures ata ;