diff --git a/libs/locale/build/Jamfile.v2 b/libs/locale/build/Jamfile.v2 index 3c517c884..0f521dbcf 100644 --- a/libs/locale/build/Jamfile.v2 +++ b/libs/locale/build/Jamfile.v2 @@ -20,6 +20,7 @@ project /boost/locale # Features feature.feature boost.locale.iconv : on off : optional propagated ; +feature.feature boost.locale.iconv.lib : libc libiconv : optional propagated ; feature.feature boost.locale.icu : on off : optional propagated ; feature.feature boost.locale.posix : on off : optional propagated ; feature.feature boost.locale.std : on off : optional propagated ; @@ -29,7 +30,8 @@ feature.feature boost.locale.winapi : on off : optional propagated ; ## iconv -exe has_iconv : $(TOP)/build/has_iconv.cpp ; +obj has_iconv_libc_obj : $(TOP)/build/has_iconv.cpp ; +exe has_iconv : has_iconv_libc_obj ; explicit has_iconv ; ICONV_PATH = [ modules.peek : ICONV_PATH ] ; @@ -43,7 +45,8 @@ lib iconv explicit iconv ; -exe has_external_iconv : $(TOP)/build/has_iconv.cpp iconv ; +obj has_iconv_libc_ext : $(TOP)/build/has_iconv.cpp iconv ; +exe has_external_iconv : has_iconv_libc_ext iconv ; explicit has_external_iconv ; exe accepts_shared_option : $(TOP)/build/option.cpp @@ -230,10 +233,37 @@ rule configure-full ( properties * : flags-only ) if [ configure.builds has_iconv : $(properties) : "iconv (libc)" ] { found-iconv = true ; - } else if [ configure.builds has_external_iconv : $(properties) : "iconv (separate)" ] + if libiconv in $(properties) + { + if [ configure.builds has_external_iconv : $(properties) : "iconv (separate)" ] + { + result += iconv ; + } + else + { + EXIT "- Boost.Locale found iconv (libc) instead of iconv (separate) library to be built." ; + } + } + } + else if libc in $(properties) { - found-iconv = true ; - result += iconv ; + EXIT "- Boost.Locale failed to find iconv (libc) library to be built." ; + } + else + { + if [ configure.builds has_external_iconv : $(properties) : "iconv (separate)" ] + { + found-iconv = true ; + result += iconv ; + } + else if libiconv in $(properties) + { + EXIT "- Boost.Locale failed to find iconv (separate) library to be built." ; + } + } + if ! $(found-iconv) + { + EXIT "- Boost.Locale failed to find iconv library to be built." ; } } if $(found-iconv) @@ -273,6 +303,10 @@ rule configure-full ( properties * : flags-only ) /boost/thread//boost_thread ; } + else + { + EXIT "- Boost.Locale failed to find ICU library to be built." ; + } } if ! $(found-iconv) && ! $(found-icu) && ! windows in $(properties) && ! cygwin in $(properties)