Fix ICU libs detection when ICU resources are in

a separate directory
This commit is contained in:
Volo Zyko
2021-06-09 21:32:40 +03:00
parent dc9c5c50be
commit d604d1702e
2 changed files with 26 additions and 0 deletions

View File

@ -114,6 +114,28 @@ if ! $(disable-icu)
<runtime-link>static:<define>U_STATIC_IMPLEMENTATION=1 <runtime-link>static:<define>U_STATIC_IMPLEMENTATION=1
; ;
if [ modules.peek : ICU_DATA_DIR ]
{
rule data-dir-options ( properties * )
{
local result ;
local data_dir = [ modules.peek : ICU_DATA_DIR ] ;
if <toolset>emscripten in $(properties)
{
result = <define>ICU_DATA_DIR=\\\"/$(data_dir:BS)\\\"
"<linkflags>--embed-file $(data_dir)@/$(data_dir:BS)"
;
}
else
{
result = <define>ICU_DATA_DIR=\\\"$(data_dir)\\\" ;
}
return $(result) ;
}
ICU_OPTS += <conditional>@data-dir-options ;
}
} }
exe has_icu : has_icu_test.cpp : $(ICU_OPTS) ; exe has_icu : has_icu_test.cpp : $(ICU_OPTS) ;

View File

@ -28,6 +28,10 @@ void print_error(UErrorCode err, const char* func)
int main() int main()
{ {
#ifdef ICU_DATA_DIR
::u_setDataDirectory(ICU_DATA_DIR);
#endif
// To detect possible binary mismatches between the installed ICU build, and whatever // To detect possible binary mismatches between the installed ICU build, and whatever
// C++ std lib's we're using, we need to: // C++ std lib's we're using, we need to:
// * Make sure we call ICU C++ API's // * Make sure we call ICU C++ API's