diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 97dd68c7..8a4c5a06 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -14,6 +14,7 @@ import os ; import toolset ; import project ; import feature ; +import errors ; # Features feature.feature boost.locale.iconv : on off : optional propagated ; @@ -59,135 +60,183 @@ explicit has_xlocale ; #end xlocale - ICU_PATH = [ modules.peek : ICU_PATH ] ; ICU_LINK = [ modules.peek : ICU_LINK ] ; if $(ICU_LINK) { - ICU_OPTS = $(ICU_PATH)/include $(ICU_LINK) $(ICU_PATH)/bin shared ; - ICU64_OPTS = $(ICU_PATH)/include $(ICU_LINK) $(ICU_PATH)/bin64 shared ; + errors.user-error : "The ICU_LINK option is no longer supported by the Boost.Locale build - please refer to the documentation for equivalent options" ; +} + +rule path_options ( properties * ) +{ + local result ; + result = $(ICU_PATH)/bin $(ICU_PATH)/lib ; + return $(result) ; +} + +rule path_options64 ( properties * ) +{ + local result ; + result = $(ICU_PATH)/bin64 $(ICU_PATH)/lib64 ; + return $(result) ; +} + +if [ modules.peek : ICU_ICUUC_NAME ] +{ + ICU_ICUUC_NAME = [ modules.peek : ICU_ICUUC_NAME ] ; +} +if [ modules.peek : ICU_ICUDT_NAME ] +{ + ICU_ICUDT_NAME = [ modules.peek : ICU_ICUDT_NAME ] ; +} +if [ modules.peek : ICU_ICUIN_NAME ] +{ + ICU_ICUIN_NAME = [ modules.peek : ICU_ICUIN_NAME ] ; +} +if [ modules.peek : ICU_ICUUC_NAME64 ] +{ + ICU_ICUUC_NAME64 = [ modules.peek : ICU_ICUUC_NAME64 ] ; +} +if [ modules.peek : ICU_ICUDT_NAME64 ] +{ + ICU_ICUDT_NAME64 = [ modules.peek : ICU_ICUDT_NAME64 ] ; +} +if [ modules.peek : ICU_ICUIN_NAME64 ] +{ + ICU_ICUIN_NAME64 = [ modules.peek : ICU_ICUIN_NAME64 ] ; +} + +if $(ICU_ICUUC_NAME) +{ + lib icuuc : : $(ICU_ICUUC_NAME) ; +} +else +{ + lib icuuc : : shared @path_options ; + lib icuuc : : msvc debug icuucd shared @path_options ; + lib icuuc : : intel windows debug icuucd shared @path_options ; + lib icuuc : : sicuuc static @path_options ; + lib icuuc : : msvc debug sicuucd static @path_options ; + lib icuuc : : intel windows debug sicuucd static @path_options ; + lib icuuc : : this_is_an_invalid_library_name ; +} + + +if $(ICU_ICUDT_NAME) +{ + lib icudt : : $(ICU_ICUDT_NAME) ; +} +else +{ + lib icudt : : icudata shared @path_options ; + lib icudt : : icudt msvc shared @path_options ; + lib icudt : : icudt intel windows shared @path_options ; + lib icudt : : sicudata static @path_options ; + lib icudt : : sicudt msvc static @path_options ; + lib icudt : : sicudt intel windows static @path_options ; + lib icudt : : this_is_an_invalid_library_name ; +} + +if $(ICU_ICUIN_NAME) +{ + lib icuin : : $(ICU_ICUIN_NAME) ; +} +else +{ + lib icuin : : icui18n shared @path_options ; + lib icuin : : msvc debug icuind shared @path_options ; + lib icuin : : msvc icuin shared @path_options ; + lib icuin : : intel windows debug icuind shared @path_options ; + lib icuin : : intel windows icuin shared @path_options ; + lib icuin : : sicui18n static @path_options ; + lib icuin : : msvc debug sicuind static @path_options ; + lib icuin : : msvc sicuin static @path_options ; + lib icuin : : intel windows debug sicuind static @path_options ; + lib icuin : : intel windows sicuin static @path_options ; + lib icuin : : this_is_an_invalid_library_name ; +} +explicit icuuc icudt icuin ; + +ICU_OPTS = + $(ICU_PATH)/include + shared:icuuc/shared + shared:icudt/shared + shared:icuin/shared + static:icuuc + static:icudt + static:icuin + $(ICU_PATH)/bin + BOOST_HAS_ICU=1 + static:U_STATIC_IMPLEMENTATION=1 + msvc:advapi32 + ; + + +if $(ICU_ICUUC_NAME64) +{ + lib icuuc_64 : : $(ICU_ICUUC_NAME64) ; } else { - searched-lib icuuc : : icuuc - $(ICU_PATH)/lib - shared - shared ; - - searched-lib icuuc : : msvc - debug - icuucd - $(ICU_PATH)/lib - shared - shared ; - - searched-lib icuuc : : this_is_an_invalid_library_name ; - - searched-lib icudt : : $(ICU_PATH)/lib - icudata - shared - shared ; - - searched-lib icudt : : $(ICU_PATH)/lib - icudt - msvc - shared - shared ; - - searched-lib icudt : : this_is_an_invalid_library_name ; - - searched-lib icuin : : $(ICU_PATH)/lib - icui18n - shared - shared ; - - searched-lib icuin : : msvc - debug - icuind - $(ICU_PATH)/lib - shared - shared ; - - searched-lib icuin : : msvc - release - icuin - $(ICU_PATH)/lib - shared - shared ; - - searched-lib icuin : : this_is_an_invalid_library_name ; - - explicit icuuc icudt icuin ; - - ICU_OPTS = $(ICU_PATH)/include - icuuc/shared/shared - icudt/shared/shared - icuin/shared/shared - $(ICU_PATH)/bin - shared ; - - - - searched-lib icuuc_64 : : icuuc - $(ICU_PATH)/lib64 - shared - shared ; - - searched-lib icuuc_64 : : msvc - debug - icuucd - $(ICU_PATH)/lib64 - shared - shared ; - - searched-lib icuuc_64 : : this_is_an_invalid_library_name ; - - searched-lib icudt_64 : : $(ICU_PATH)/lib64 - icudata - shared - shared ; - - searched-lib icudt_64 : : $(ICU_PATH)/lib64 - icudt - msvc - shared - shared ; - - searched-lib icudt_64 : : this_is_an_invalid_library_name ; - - searched-lib icuin_64 : : $(ICU_PATH)/lib64 - icui18n - shared - shared ; - - searched-lib icuin_64 : : msvc - debug - icuind - $(ICU_PATH)/lib64 - shared - shared ; - - searched-lib icuin_64 : : msvc - release - icuin - $(ICU_PATH)/lib64 - shared - shared ; - - searched-lib icuin_64 : : this_is_an_invalid_library_name ; - - explicit icuuc_64 icudt_64 icuin_64 ; - - ICU64_OPTS = $(ICU_PATH)/include - icuuc_64/shared/shared - icudt_64/shared/shared - icuin_64/shared/shared - $(ICU_PATH)/bin64 - shared ; + lib icuuc_64 : : shared @path_options64 ; + lib icuuc_64 : : msvc debug icuucd shared @path_options64 ; + lib icuuc_64 : : intel windows debug icuucd shared @path_options64 ; + lib icuuc_64 : : sicuuc static @path_options64 ; + lib icuuc_64 : : msvc debug sicuucd static @path_options64 ; + lib icuuc_64 : : intel windows debug sicuucd static @path_options64 ; + lib icuuc_64 : : this_is_an_invalid_library_name ; +} +if $(ICU_ICUDT_NAME64) +{ + lib icudt_64 : : $(ICU_ICUDT_NAME64) ; +} +else +{ + lib icudt_64 : : icudata shared @path_options64 ; + lib icudt_64 : : icudt msvc shared @path_options64 ; + lib icudt_64 : : icudt intel windows shared @path_options64 ; + lib icudt_64 : : sicudata static @path_options64 ; + lib icudt_64 : : sicudt msvc static @path_options64 ; + lib icudt_64 : : sicudt intel windows static @path_options64 ; + lib icudt_64 : : this_is_an_invalid_library_name ; +} +if $(ICU_ICUIN_NAME64) +{ + lib icuin_64 : : $(ICU_ICUIN_NAME64) ; } +else +{ + lib icuin_64 : : icui18n shared @path_options64 ; + lib icuin_64 : : msvc debug icuind shared @path_options64 ; + lib icuin_64 : : msvc icuin shared @path_options64 ; + lib icuin_64 : : intel windows debug icuind shared @path_options64 ; + lib icuin_64 : : intel windows icuin shared @path_options64 ; + lib icuin_64 : : sicui18n static @path_options64 ; + lib icuin_64 : : msvc debug sicuind static @path_options64 ; + lib icuin_64 : : msvc sicuin static @path_options64 ; + lib icuin_64 : : intel windows debug sicuind static @path_options64 ; + lib icuin_64 : : intel windows sicuin static @path_options64 ; + lib icuin_64 : : this_is_an_invalid_library_name ; +} +explicit icuuc_64 icudt_64 icuin_64 ; + +ICU64_OPTS = + $(ICU_PATH)/include + shared:icuuc_64/shared + shared:icudt_64/shared + shared:icuin_64/shared + static:icuuc_64 + static:icudt_64 + static:icuin_64 + $(ICU_PATH)/bin64 + BOOST_HAS_ICU=1 + static:U_STATIC_IMPLEMENTATION=1 + msvc:advapi32 + ; + obj has_icu_obj : ../build/has_icu_test.cpp : $(ICU_OPTS) ; obj has_icu64_obj : ../build/has_icu_test.cpp : $(ICU64_OPTS) ; diff --git a/build/has_icu_test.cpp b/build/has_icu_test.cpp index 9419b301..5e36d9ac 100644 --- a/build/has_icu_test.cpp +++ b/build/has_icu_test.cpp @@ -16,7 +16,7 @@ #include #if defined(_MSC_VER) && !defined(_DLL) -#error "Mixing ICU with a static runtime doesn't work" +//#error "Mixing ICU with a static runtime doesn't work" #endif int main()