Try and improve ICU detection to avoid "DLL Hell".

This commit is contained in:
jzmaddock
2015-10-18 17:50:40 +01:00
parent d4367c9aad
commit 389b9c35e0
2 changed files with 20 additions and 2 deletions

View File

@ -115,7 +115,21 @@ if ! $(disable-icu)
}
exe has_icu : ./has_icu_test.cpp : $(ICU_OPTS) ;
actions regex_simple_run_action
{
$(>) > $(<)
}
rule regex-run-simple ( sources + : args * : input-files * : requirements * : target-name )
{
exe $(target-name)_exe : $(sources) : $(requirements) ;
explicit $(target-name)_exe ;
make $(target-name).output : $(target-name)_exe : @mp_simple_run_action ;
explicit $(target-name).output ;
alias $(target-name) : $(target-name).output ;
}
regex-run-simple has_icu_test.cpp : : : $(ICU_OPTS) : has_icu ;
explicit has_icu ;
alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ;

View File

@ -13,6 +13,7 @@
#include <unicode/utypes.h>
#include <unicode/uchar.h>
#include <unicode/coll.h>
#include <boost/scoped_ptr.hpp>
#if defined(_MSC_VER) && !defined(_DLL)
#error "Mixing ICU with a static runtime doesn't work"
@ -22,5 +23,8 @@ int main()
{
UErrorCode err = U_ZERO_ERROR;
UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, "GREEK SMALL LETTER ALPHA", &err);
if(err) return err;
U_NAMESPACE_QUALIFIER Locale l;
boost::scoped_ptr<U_NAMESPACE_QUALIFIER Collator> p_col(U_NAMESPACE_QUALIFIER Collator::createInstance(l, err));
return err;
}
}