diff --git a/build/jam/BuildFeatures b/build/jam/BuildFeatures index ad98eb19c7..fe5aa8b4f5 100644 --- a/build/jam/BuildFeatures +++ b/build/jam/BuildFeatures @@ -61,83 +61,42 @@ if $(HAIKU_BUILD_FEATURE_SSL) { # ICU # Note ICU isn't actually optional, but is still an external package -HAIKU_ICU_GCC_2_PACKAGE = icu-4.8.1.1-2-x86_gcc2.hpkg ; -HAIKU_ICU_GCC_4_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc4-2012-08-29.zip ; - # TODO: Make hpkg! -HAIKU_ICU_PPC_PACKAGE = icu-4.8.1-ppc-2011-08-20.zip ; -HAIKU_ICU_ARM_PACKAGE = icu-4.8.1.1-arm-2012-11-21.zip ; -HAIKU_ICU_X86_64_PACKAGE = icu-4.8.1.1-x86_64-2012-07-30.zip ; - if $(TARGET_ARCH) in arm ppc x86 x86_64 { - local icu_package ; if $(TARGET_ARCH) = ppc { - icu_package = $(HAIKU_ICU_PPC_PACKAGE) ; + HAIKU_ICU_PACKAGE = icu-4.8.1-ppc-2011-08-20.zip ; HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1-ppc-2011-12-19.zip ; } else if $(TARGET_ARCH) = arm { - icu_package = $(HAIKU_ICU_ARM_PACKAGE) ; + HAIKU_ICU_PACKAGE = icu-4.8.1.1-arm-2012-11-21.zip ; HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-arm-2012-11-21.zip ; } else if $(TARGET_ARCH) = x86_64 { - icu_package = $(HAIKU_ICU_X86_64_PACKAGE) ; + HAIKU_ICU_PACKAGE = icu-4.8.1.1-x86_64-2012-07-30.zip ; HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-x86_64-2012-07-30.zip ; } else if $(HAIKU_GCC_VERSION[1]) = 2 { - icu_package = $(HAIKU_ICU_GCC_2_PACKAGE) ; - HAIKU_ICU_DEVEL_PACKAGE = icu_devel-4.8.1.1-2-x86_gcc2.hpkg ; + HAIKU_ICU_PACKAGE = icu-4.8.1.1-3-x86_gcc2.hpkg ; + HAIKU_ICU_DEVEL_PACKAGE = icu_devel-4.8.1.1-3-x86_gcc2.hpkg ; } else { - icu_package = $(HAIKU_ICU_GCC_4_PACKAGE) ; + HAIKU_ICU_PACKAGE = icu-4.8.1.1-r1a4-x86-gcc4-2012-08-29.zip ; HAIKU_ICU_DEVEL_PACKAGE = icu-devel-4.8.1.1-x86-gcc4-2011-12-20.zip ; } - local packageFile = [ DownloadFile $(icu_package) - : $(hpkgBaseURL)/$(icu_package) ] ; - # zip file and output directory - HAIKU_ICU_PACKAGE_FILE = $(packageFile) ; - HAIKU_ICU_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) - $(icu_package:B) ] ; + HAIKU_ICU_URL = $(hpkgBaseURL)/$(HAIKU_ICU_PACKAGE) ; + HAIKU_ICU_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_ICU_DEVEL_PACKAGE) ; - # extract libraries - if $(TARGET_ARCH) = ppc { - HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) - : - libicudata.so.48.1 - libicui18n.so.48.1 - libicuio.so.48.1 - libicule.so.48.1 - libiculx.so.48.1 - libicutu.so.48.1 - libicuuc.so.48.1 - : $(packageFile) - : extracted-icu - ] ; - } else { - HAIKU_ICU_LIBS = [ ExtractArchive $(HAIKU_ICU_DIR) - : - develop/lib/libicudata.so.48.1.1 - develop/lib/libicui18n.so.48.1.1 - develop/lib/libicuio.so.48.1.1 - develop/lib/libicule.so.48.1.1 - develop/lib/libiculx.so.48.1.1 - develop/lib/libicutu.so.48.1.1 - develop/lib/libicuuc.so.48.1.1 - : $(packageFile) - : extracted-icu - ] ; - } - - # zip file and output directory - HAIKU_ICU_DEVEL_ZIP_FILE = [ DownloadFile $(HAIKU_ICU_DEVEL_PACKAGE) - : $(hpkgBaseURL)/$(HAIKU_ICU_DEVEL_PACKAGE) ] ; - HAIKU_ICU_DEVEL_DIR = $(HAIKU_ICU_DIR) ; - - # extract headers - HAIKU_ICU_HEADERS_DEPENDENCY = [ ExtractArchive - $(HAIKU_ICU_DEVEL_DIR:G=icu_devel) - # We need a grist here, so it's a different target than the one for the - # main package, even though it's the same directory. - : develop/headers : $(HAIKU_ICU_DEVEL_ZIP_FILE) - : extracted-icu-devel ] ; - - HAIKU_ICU_HEADERS - = [ FDirName $(HAIKU_ICU_DEVEL_DIR) develop headers ] ; + ExtractBuildFeatureArchives icu : + file: base $(HAIKU_ICU_URL) + runtime: lib + file: devel $(HAIKU_ICU_DEVEL_URL) + depends: base + libraries: + develop/lib/libicudata.so + develop/lib/libicui18n.so + develop/lib/libicuio.so + develop/lib/libicule.so + develop/lib/libiculx.so + develop/lib/libicutu.so + develop/lib/libicuuc.so + headers: develop/headers + ; EnableBuildFeatures icu ; } else { diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index d5817a25cd..a22e9d34fe 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -1033,26 +1033,10 @@ if [ IsOptionalHaikuImagePackageAdded HGrep ] { # ICU if [ IsOptionalHaikuImagePackageAdded ICU ] { - if $(TARGET_ARCH) = x86 { - if $(HAIKU_GCC_VERSION[1]) = 2 { - # unzip gcc2 - InstallOptionalHaikuImagePackage - $(hpkgBaseURL)/$(HAIKU_ICU_GCC_2_PACKAGE) - : system ; - } else { - # unzip gcc4 - InstallOptionalHaikuImagePackage - $(baseURL)/$(HAIKU_ICU_GCC_4_PACKAGE) - : system lib ; - } - } else if $(TARGET_ARCH) = arm { + if $(TARGET_ARCH) in arm ppc x86 x86_64 { InstallOptionalHaikuImagePackage - : $(baseURL)/$(HAIKU_ICU_ARM_PACKAGE) - : system lib ; - } else if $(TARGET_ARCH) = x86_64 { - InstallOptionalHaikuImagePackage - : $(baseURL)/$(HAIKU_ICU_X86_64_PACKAGE) - : system lib ; + $(hpkgBaseURL)/$(HAIKU_ICU_URL) + : system ; } else { Echo "No optional package ICU available for $(TARGET_ARCH)" ; } diff --git a/src/kits/Jamfile b/src/kits/Jamfile index bc6ffe2596..4c23f532ad 100644 --- a/src/kits/Jamfile +++ b/src/kits/Jamfile @@ -41,7 +41,7 @@ SharedLibrary libbe.so : : libagg.a libroot.so # make sure it links against our libroot.so - $(TARGET_LIBSTDC++) $(HAIKU_ICU_LIBS) + $(TARGET_LIBSTDC++) [ BuildFeatureAttribute icu : libraries ] ; # Build libbe_test.so diff --git a/src/kits/locale/Jamfile b/src/kits/locale/Jamfile index ec9d4d4f35..47cf074b9d 100644 --- a/src/kits/locale/Jamfile +++ b/src/kits/locale/Jamfile @@ -4,6 +4,7 @@ AddSubDirSupportedPlatforms libbe_test ; UsePrivateHeaders locale shared ; UsePublicHeaders locale storage ; +UseBuildFeatureHeaders icu ; local sources = cat.cpp @@ -49,8 +50,7 @@ local sources = ; -SubDirSysHdrs $(HAIKU_ICU_HEADERS) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_ICU_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute icu : headers ] ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. diff --git a/src/preferences/time/Jamfile b/src/preferences/time/Jamfile index bd1295a37b..907507f462 100644 --- a/src/preferences/time/Jamfile +++ b/src/preferences/time/Jamfile @@ -4,6 +4,7 @@ SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders interface locale shared [ FDirName libroot time ] ; UsePrivateSystemHeaders ; +UseBuildFeatureHeaders icu ; local sources = AnalogClock.cpp @@ -25,8 +26,7 @@ local sources = ; -SubDirSysHdrs $(HAIKU_ICU_HEADERS) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_ICU_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute icu : headers ] ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. diff --git a/src/system/libroot/add-ons/icu/Jamfile b/src/system/libroot/add-ons/icu/Jamfile index 762723658d..84d070ee2b 100644 --- a/src/system/libroot/add-ons/icu/Jamfile +++ b/src/system/libroot/add-ons/icu/Jamfile @@ -7,6 +7,7 @@ UsePrivateHeaders [ FDirName libroot time ] shared ; +UseBuildFeatureHeaders icu ; local sources = ICUCategoryData.cpp @@ -22,14 +23,14 @@ local sources = ICUTimeData.cpp ; -SubDirSysHdrs $(HAIKU_ICU_HEADERS) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_ICU_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute icu : headers ] ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. SharedLibrary libroot-addon-icu.so : $(sources) : - libreferenceable.a $(TARGET_LIBSTDC++) $(HAIKU_ICU_LIBS) + libreferenceable.a $(TARGET_LIBSTDC++) + [ BuildFeatureAttribute icu : libraries ] ; diff --git a/src/tests/kits/locale/Jamfile b/src/tests/kits/locale/Jamfile index ce8092e101..9a8296c0a1 100644 --- a/src/tests/kits/locale/Jamfile +++ b/src/tests/kits/locale/Jamfile @@ -2,6 +2,7 @@ SubDir HAIKU_TOP src tests kits locale ; UsePublicHeaders locale ; UsePrivateHeaders locale shared ; +UseBuildFeatureHeaders icu ; # Pseudo target to build all locale kit tests NotFile LocaleKitTests ; @@ -33,14 +34,13 @@ LocaleTest genericNumberFormatTest.cpp ; LocaleTest localeTest.cpp ; LocaleTest formatTest.cpp ; -SubDirSysHdrs $(HAIKU_ICU_HEADERS) ; -Includes [ FGristFiles ICUTest.cpp ] : $(HAIKU_ICU_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles ICUTest.cpp ] : [ BuildFeatureAttribute icu : headers ] ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. Application ICUTest : ICUTest.cpp : - be $(TARGET_LIBSUPC++) $(HAIKU_ICU_LIBS) ; + be $(TARGET_LIBSUPC++) [ BuildFeatureAttribute icu : libraries ] ; Addon catalogTestAddOn : catalogTestAddOn.cpp