# copyright John Maddock 2003 subproject libs/regex/build ; # bring in the rules for testing import testing ; # # ICU configuration: # rule check-icu-config ( ) { if ! $(gICU_CONFIG_CHECKED) { if $(ICU_PATH) { dir += $(ICU_PATH) ; } if [ GLOB $(dir)$(SLASH)include$(SLASH)unicode : utypes.h ] { ECHO Building Boost.Regex with Unicode/ICU support enabled ; ECHO Using ICU in $(ICU_PATH:J=" ")$(SLASH)include ; gHAS_ICU = true ; # try and find ICU libraries, look for NT versions first: if $(ICU_LINK) { gICU_LIBS += <linkflags>$(ICU_LINK) ; } else if [ GLOB $(dir)$(SLASH)lib : icuuc.* ] { gICU_LIBS += <find-library>icuuc ; if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) { gICU_LIBS += <library-path>$(ICU_PATH)/lib ; } } else if [ GLOB $(dir)$(SLASH)lib : libicuuc.* ] { gICU_LIBS += <find-library>icuuc ; if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) { gICU_LIBS += <library-path>$(ICU_PATH)/lib ; } } else if [ GLOB $(ICU_PATH)/lib : cygicuuc.dll ] { gICU_LIBS += <library-file>$(ICU_PATH)/lib/cygicuuc.dll ; } else if [ GLOB $(ICU_PATH)/lib : cygicuuc32.dll ] { gICU_LIBS += <library-file>$(ICU_PATH)/lib/cygicuuc32.dll ; } else if [ GLOB /usr/local/lib : cygicuuc.dll ] { gICU_LIBS += <library-file>/usr/local/lib/cygicuuc.dll ; } else { ECHO WARNING: ICU shared common library not found in path. ; ECHO HINT: If the regex library fails to link then try again ; ECHO with the environment variable ICU_LINK set to contain ; ECHO the linker options required to link to ICU. ; ECHO Defaulting to look for libicuuc ... ; gICU_LIBS += <find-library>icuuc ; } if $(ICU_LINK) { # gICU_LIBS += <linkflags>$(ICU_LINK) ; } else if [ GLOB $(dir)$(SLASH)lib : icuin.* ] { gICU_LIBS += <find-library>icuin ; if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) { gICU_LIBS += <library-path>$(ICU_PATH)/lib ; } } else if [ GLOB $(dir)$(SLASH)lib : libicui18n.* ] { gICU_LIBS += <find-library>icui18n ; if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) { gICU_LIBS += <library-path>$(ICU_PATH)/lib ; } } else if [ GLOB $(ICU_PATH)/lib : cygicuin.dll ] { gICU_LIBS += <library-file>$(ICU_PATH)/lib/cygicuin.dll ; } else if [ GLOB $(ICU_PATH)/lib : cygicuin32.dll ] { gICU_LIBS += <library-file>$(ICU_PATH)/lib/cygicuin32.dll ; } else if [ GLOB /usr/local/lib : cygicuin.dll ] { gICU_LIBS += <library-file>/usr/local/lib/cygicuin.dll ; } else { ECHO ICU shared i18n library not found. ; ECHO HINT: Set the environment variable ICU_LINK to contain ; ECHO the linker options required to link to ICU. ; ECHO WARNING: ICU shared i18n library not found in path. ; ECHO HINT: If the regex library fails to link then try again ; ECHO with the environment variable ICU_LINK set to contain ; ECHO the linker options required to link to ICU. ; ECHO Defaulting to look for libicui18n ... ; gICU_LIBS += <find-library>icui18n ; } } else { if $(HAVE_ICU) { gHAS_ICU = true ; gICU_CONFIG_CHECKED = true ; if $(ICU_LINK) { gICU_LIBS += <linkflags>$(ICU_LINK) ; } else { gICU_LIBS += <find-library>icui18n ; gICU_LIBS += <find-library>icuuc ; } ECHO Building Boost.Regex with Unicode/ICU support enabled ; ECHO ICU must be installed in your compilers search paths for this ; ECHO "option to work: define ICU_PATH to point to ICU's true location" ; ECHO "if it's installed elsewhere" ; } else { ECHO Building Boost.Regex with the optional Unicode/ICU support disabled. ; ECHO Please refer to the Boost.Regex documentation for more information ; ECHO (and if you don't know what ICU is then you probably don't need it). ; if $(ICU_PATH) { ECHO Couldn't find utypes.h in $(ICU_PATH:J=" ")$(SLASH)include$(SLASH)unicode ; } } } gICU_CONFIG_CHECKED = true ; } if $(gHAS_ICU) { return true ; } } if [ check-icu-config ] { BOOST_REGEX_ICU_OPTS = "<define>BOOST_HAS_ICU=1" ; if $(gICU_LIBS) { BOOST_REGEX_ICU_OPTS += $(gICU_LIBS) ; # this one is required for VC++ : BOOST_REGEX_ICU_TEST_OPTS = "<native-wchar_t>off" ; } if $(ICU_PATH) { if ($(ICU_PATH) != /usr) && ($(ICU_PATH) != /usr/local) { BOOST_REGEX_ICU_OPTS += "<sysinclude>$(ICU_PATH)/include" ; } #BOOST_REGEX_ICU_OPTS += "<library-path>$(ICU_PATH)/lib" ; } # ECHO "BOOST_REGEX_ICU_OPTS =" $(BOOST_REGEX_ICU_OPTS) ; } # # this template defines the options common to # all regex builds and tests: # template regex-options : # sources : # requirements <debug><define>BOOST_REGEX_CONFIG_INFO=1 <sysinclude>$(BOOST_ROOT) # <native-wchar_t>on # como requires this: <como-4_3_3-vc7_1><*><define>BOOST_REGEX_NO_W32=1 <como-4_3_3-vc7_1><*><define>BOOST_SP_DISABLE_THREADS=1 $(BOOST_REGEX_ICU_OPTS) ; template regex-test-options : # sources : # requirements $(BOOST_REGEX_ICU_TEST_OPTS) ; # # this template defines the options common to # all regex dll builds and tests: # template regex-dll-options : <template>regex-options # sources : # requirements <define>BOOST_REGEX_DYN_LINK=1 <runtime-link>dynamic ; # # this template defines extra settings required to work # around STLPort defects when used with msvc 6: # template msvc-stlport-tricky : # sources : <msvc-stlport><*><runtime-build>release <define>BOOST_ALL_NO_LIB=1 ; 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) <template>regex-options : common-variant-tag : debug release ; dll boost_regex : ../src/$(SOURCES) <template>regex-dll-options : common-variant-tag : debug release ; stage stage/lib : <lib>boost_regex <dll>boost_regex : <locate>$(BOOST_ROOT) common-variant-tag <target>stage <target>all : debug release ; install regex lib : <dll>boost_regex <lib>boost_regex ;