# copyright John Maddock 2003 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt. import modules ; project : requirements # default to all warnings on: all ; local disable-icu = [ MATCH (--disable-icu) : [ modules.peek : ARGV ] ] ; rule path_options ( properties * ) { local result ; if 64 in $(properties) && msvc in $(properties) { result = $(ICU_PATH)/bin64 $(ICU_PATH)/lib64 ; } else { result = $(ICU_PATH)/bin $(ICU_PATH)/lib ; } return $(result) ; } # # ICU configuration: # if ! $(disable-icu) { if [ modules.peek : ICU_PATH ] { ICU_PATH = [ modules.peek : ICU_PATH ] ; } if [ modules.peek : ICU_LINK ] { ICU_LINK = [ modules.peek : ICU_LINK ] ; } if $(ICU_LINK) { ICU_OPTS = $(ICU_PATH)/include $(ICU_LINK) $(ICU_PATH)/bin BOOST_HAS_ICU=1 shared ; } else { lib icuuc : : shared shared @path_options ; lib icuuc : : msvc debug icuucd shared shared @path_options ; lib icuuc : : intel windows debug icuucd shared shared @path_options ; lib icuuc : : this_is_an_invalid_library_name ; lib icudt : : icudata shared shared @path_options ; lib icudt : : icudt msvc shared shared @path_options ; lib icudt : : icudt intel windows shared shared @path_options ; lib icudt : : this_is_an_invalid_library_name ; lib icuin : : icui18n shared shared @path_options ; lib icuin : : msvc debug icuind shared shared @path_options ; lib icuin : : msvc icuin shared shared @path_options ; lib icuin : : intel windows debug icuind shared shared @path_options ; lib icuin : : intel windows icuin shared shared @path_options ; lib icuin : : this_is_an_invalid_library_name ; if $(ICU_PATH) { icuucd_name = [ GLOB $(ICU_PATH)/bin : icuuc??d.dll ] ; if ! $(icuucd_name) { icuucd_name = [ GLOB $(ICU_PATH)/bin64 : icuuc??d.dll ] ; } icuuc_name = [ GLOB $(ICU_PATH)/bin : icuuc??.dll ] ; if ! $(icuuc_name) { icuuc_name = [ GLOB $(ICU_PATH)/bin64 : icuuc??.dll ] ; } icudt_name = [ GLOB $(ICU_PATH)/bin : icudt??.dll ] ; if ! $(icudt_name) { icudt_name = [ GLOB $(ICU_PATH)/bin64 : icudt??.dll ] ; } icuin_name = [ GLOB $(ICU_PATH)/bin : icuin??.dll ] ; if ! $(icuin_name) { icuin_name = [ GLOB $(ICU_PATH)/bin64 : icuin??.dll ] ; } icuind_name = [ GLOB $(ICU_PATH)/bin : icuin??d.dll ] ; if ! $(icuind_name) { icuind_name = [ GLOB $(ICU_PATH)/bin64 : icuin??d.dll ] ; } #ECHO $(icuucd_name:B) $(icuuc_name:B) $(icudt_name:B) $(icuin_name:B) $(icuind_name:B) ; } ICU_OPTS = $(ICU_PATH)/include icuuc/shared/shared icudt/shared/shared icuin/shared/shared BOOST_HAS_ICU=1 shared # As of ICU-54 this does not work anymore (release mode): #msvc:/delayload:$(icuucd_name:B).dll #msvc:/delayload:$(icuuc_name:B).dll #msvc:/delayload:$(icudt_name:B).dll #msvc:/delayload:$(icuin_name:B).dll #msvc:/delayload:$(icuind_name:B).dll #msvc:delayimp.lib ; } } exe has_icu : ./has_icu_test.cpp : $(ICU_OPTS) ; explicit has_icu ; alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ; SOURCES = c_regex_traits.cpp cpp_regex_traits.cpp cregex.cpp fileiter.cpp icu.cpp instances.cpp posix_api.cpp regex.cpp regex_debug.cpp regex_raw_buffer.cpp regex_traits_defaults.cpp static_mutex.cpp w32_regex_traits.cpp wc_regex_traits.cpp wide_posix_api.cpp winstances.cpp usinstances.cpp ; lib boost_regex : ../src/$(SOURCES) icu_options : shared:BOOST_REGEX_DYN_LINK=1 #gcc-mw:static #gcc-mingw:static gcc-cygwin:static ; boost-install boost_regex ;