the libicu in brew now builds with c++11 by default if its available, which means boost 1.52 fails to build with --build-from-source (which I need because I want to bind against the brew python, not the system one).
Undefined symbols for architecture x86_64:
"icu_50::UnicodeString::doReplace(int, int, unsigned short const*, int, int)", referenced from:
boost::locale::impl_icu::strftime_to_icu(icu_50::UnicodeString const&, icu_50::Locale const&) in formatter.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
This seems to be because libicuuc has been created with the c++11 type "char16_t":
the libicu in brew now builds with c++11 by default if its available, which means boost 1.52 fails to build with --build-from-source (which I need because I want to bind against the brew python, not the system one).
"c++" -dynamiclib -Wl,-single_module -install_name "/usr/local/lib/libboost_locale-mt.dylib" -o "/usr/local/Cellar/boost/1.52.0/lib/libboost_locale-mt.dylib" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/encoding/codepage.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/date_time.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/format.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/formatting.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/generator.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/ids.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/localization_backend.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/message.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/shared/mo_lambda.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/util/codecvt_converter.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/util/default_locale.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/util/info.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/util/locale_data.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/boundary.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/codecvt.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/collator.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/conversion.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/date_time.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/formatter.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/icu_backend.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/numeric.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/icu/time_zone.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/posix/codecvt.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/posix/collate.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/posix/converter.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/posix/numeric.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/posix/posix_backend.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/std/codecvt.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/std/collate.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/std/converter.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/std/numeric.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/std/std_backend.o" "bin.v2/libs/locale/build/darwin-4.2.1/release/threading-multi/util/gregorian.o" "bin.v2/libs/thread/build/darwin-4.2.1/release/threading-multi/libboost_thread-mt.dylib" "bin.v2/libs/chrono/build/darwin-4.2.1/release/threading-multi/libboost_chrono-mt.dylib" "bin.v2/libs/system/build/darwin-4.2.1/release/threading-multi/libboost_system-mt.dylib" -liconv -licuuc -licui18n -licudata -headerpad_max_install_names -Wl,-dead_strip -no_dead_strip_inits_and_terms
Undefined symbols for architecture x86_64: "icu_50::UnicodeString::doReplace(int, int, unsigned short const*, int, int)", referenced from: boost::locale::impl_icu::strftime_to_icu(icu_50::UnicodeString const&, icu_50::Locale const&) in formatter.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
This seems to be because libicuuc has been created with the c++11 type "char16_t":
~ nm /usr/local/Cellar/icu4c/50.1/lib/libicuuc.50.1.dylib | grep doReplace | c++filt 00000000000418bc T icu_50::UnicodeString::doReplace(int, int, char16_t const*, int, int) 0000000000043bd2 T icu_50::UnicodeString::doReplace(int, int, icu_50::UnicodeString const&, int, int)
which apparently doesn't match unsigned short const*.
there doesn't appear to be an obvious way to tell libicu to stop doing that short of patching the configure script.
the way I resolved this is to do
but obviously itd be nice if it worked out of the box