diff --git a/eng/liveBuilds.targets b/eng/liveBuilds.targets
index 70a3cac8cbcdd9..5c9f63cf302c9f 100644
--- a/eng/liveBuilds.targets
+++ b/eng/liveBuilds.targets
@@ -180,6 +180,9 @@
IsNative="" />
+
+
+
diff --git a/src/libraries/native-binplace.proj b/src/libraries/native-binplace.proj
index b6d10ef00c6d98..960704fe30acff 100644
--- a/src/libraries/native-binplace.proj
+++ b/src/libraries/native-binplace.proj
@@ -13,14 +13,16 @@
-
+
+
-
+
-
+
diff --git a/src/mono/CMakeLists.txt b/src/mono/CMakeLists.txt
index 1d17921a277d7b..d46df3a77a3b87 100644
--- a/src/mono/CMakeLists.txt
+++ b/src/mono/CMakeLists.txt
@@ -124,7 +124,6 @@ endif()
if(NOT AOT_TARGET_TRIPLE STREQUAL "")
set(MONO_CROSS_COMPILE 1)
- add_definitions(-DNO_GLOBALIZATION_SHIM)
if(NOT AOT_OFFSETS_FILE STREQUAL "")
set(MONO_OFFSETS_FILE "${AOT_OFFSETS_FILE}")
endif()
@@ -241,7 +240,6 @@ elseif(CLR_CMAKE_HOST_OS STREQUAL "android")
# FIXME: Rest of the flags from configure.ac
elseif(CLR_CMAKE_HOST_OS STREQUAL "emscripten")
set(HOST_BROWSER 1)
- add_definitions(-DNO_GLOBALIZATION_SHIM)
add_definitions(-D_THREAD_SAFE)
add_compile_options(-Wno-strict-prototypes)
add_compile_options(-Wno-unused-but-set-variable)
@@ -255,7 +253,6 @@ elseif(CLR_CMAKE_HOST_OS STREQUAL "emscripten")
elseif(CLR_CMAKE_HOST_OS STREQUAL "wasi")
set(HOST_WASI 1)
add_definitions(-D_WASI_EMULATED_PROCESS_CLOCKS -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -DHOST_WASI)
- add_definitions(-DNO_GLOBALIZATION_SHIM)
add_definitions(-D_THREAD_SAFE)
add_definitions(-DDISABLE_SOCKET_TRANSPORT)
add_definitions(-DDISABLE_EGD_SOCKET)
@@ -711,79 +708,6 @@ if(LLVM_PREFIX)
add_definitions(-DLLVM_API_VERSION=${llvm_api_version})
endif()
-######################################
-# ICU CHECKS
-######################################
-if(HOST_OSX OR HOST_MACCAT OR HOST_IOS OR HOST_TVOS)
- # FIXME: Handle errors
- execute_process(COMMAND brew --prefix OUTPUT_VARIABLE brew_prefix OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- if((HOST_MACCAT OR HOST_IOS OR HOST_TVOS) AND "${CMAKE_SHARED_LINKER_FLAGS}" MATCHES "${brew_prefix}/opt/icu4c/lib")
- message(FATAL_ERROR "Linker flags contain the Homebrew version of ICU which conflicts with the iOS/tvOS/MacCatalyst version: ${CMAKE_SHARED_LINKER_FLAGS}")
- endif()
-endif()
-
-set(ICU_SHIM_PATH "${CLR_SRC_NATIVE_DIR}/libs/System.Globalization.Native")
-if(MONO_CROSS_COMPILE)
-elseif(HOST_OSX AND NOT HOST_MACCAT)
- include(FindPkgConfig)
- set(ENV{PKG_CONFIG_PATH} "{$PKG_CONFIG_PATH}:${brew_prefix}/lib/pkgconfig:${brew_prefix}/opt/icu4c/lib/pkgconfig")
- # Defines ICU_INCLUDEDIR/ICU_LIBDIR
- pkg_check_modules(ICU icu-uc)
- set(OSX_ICU_LIBRARY_PATH /usr/lib/libicucore.dylib)
- set(ICU_FLAGS "-DTARGET_UNIX -DU_DISABLE_RENAMING -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option -Wno-deprecated-declarations")
- set(HAVE_SYS_ICU 1)
-elseif(HOST_WASI)
- set(ICU_FLAGS "-DPALEXPORT=\"\" -DU_DISABLE_RENAMING -DHAVE_UDAT_STANDALONE_SHORTER_WEEKDAYS -DHAVE_SET_MAX_VARIABLE -DTARGET_UNIX -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option")
- set(HAVE_SYS_ICU 1)
- set(STATIC_ICU 1)
- set(ICU_LIBS "icucore")
-elseif(HOST_BROWSER)
- set(ICU_FLAGS "-DPALEXPORT=\"\" -DU_DISABLE_RENAMING -DHAVE_UDAT_STANDALONE_SHORTER_WEEKDAYS -DHAVE_SET_MAX_VARIABLE -DTARGET_UNIX -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option")
- set(HAVE_SYS_ICU 1)
- set(STATIC_ICU 1)
- set(ICU_LIBS "icucore")
-elseif(HOST_IOS OR HOST_TVOS OR HOST_MACCAT)
- set(ICU_FLAGS "-DTARGET_UNIX -DU_DISABLE_RENAMING -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option -Wno-deprecated-declarations")
- if(HOST_IOS)
- string(APPEND ICU_FLAGS " -DTARGET_IOS")
- elseif(HOST_TVOS)
- string(APPEND ICU_FLAGS " -DTARGET_TVOS")
- elseif(HOST_MACCAT)
- string(APPEND ICU_FLAGS " -DTARGET_MACCATALYST")
- endif()
- string(APPEND ICU_FLAGS " -DAPPLE_HYBRID_GLOBALIZATION")
- set(HAVE_SYS_ICU 1)
- set(STATIC_ICU 1)
-elseif(HOST_ANDROID)
- set(ICU_FLAGS "-DPALEXPORT=\"\" -DHAVE_UDAT_STANDALONE_SHORTER_WEEKDAYS -DHAVE_SET_MAX_VARIABLE -DTARGET_UNIX -DTARGET_ANDROID -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option")
- set(HAVE_SYS_ICU 1)
-elseif(HOST_LINUX)
- include(FindPkgConfig)
- if(CROSS_ROOTFS)
- set(ENV{PKG_CONFIG_SYSROOT_DIR} "${CROSS_ROOTFS}")
- endif(CROSS_ROOTFS)
- pkg_check_modules(ICU icu-uc)
- set(ICU_FLAGS "-DTARGET_UNIX -DU_DISABLE_RENAMING -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option -Wno-deprecated-declarations")
- set(HAVE_SYS_ICU 1)
-elseif(HOST_WIN32)
- set(ICU_FLAGS "-DTARGET_WINDOWS -DPALEXPORT=EXTERN_C")
- set(HAVE_SYS_ICU 1)
-elseif(HOST_SOLARIS)
- set(ICU_FLAGS "-DPALEXPORT=\"\" -DTARGET_UNIX -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option")
- set(HAVE_SYS_ICU 1)
-elseif(TARGET_FREEBSD)
- set(ICU_FLAGS "-DTARGET_UNIX -Wno-deprecated-declarations")
- set(HAVE_SYS_ICU 1)
- set(ICU_INCLUDEDIR "${CROSS_ROOTFS}/usr/local/include")
- set(ICU_LIBDIR "${CROSS_ROOTFS}/usr/local/lib")
-elseif(HOST_HAIKU)
- set(ICU_FLAGS "-DTARGET_UNIX -DU_DISABLE_RENAMING -Wno-reserved-id-macro -Wno-documentation -Wno-documentation-unknown-command -Wno-switch-enum -Wno-covered-switch-default -Wno-extra-semi-stmt -Wno-unknown-warning-option -Wno-deprecated-declarations")
- set(HAVE_SYS_ICU 1)
-else()
- message(FATAL_ERROR "Unknown host")
-endif()
-
######################################
# GC CHECKS
######################################
diff --git a/src/mono/cmake/config.h.in b/src/mono/cmake/config.h.in
index 5efec6ebe932d0..1fd699e7610709 100644
--- a/src/mono/cmake/config.h.in
+++ b/src/mono/cmake/config.h.in
@@ -183,9 +183,6 @@
/* Define to 1 if you have the header file. */
#cmakedefine HAVE_UNWIND_H 1
-/* Use static ICU */
-#cmakedefine STATIC_ICU 1
-
/* Use in-tree zlib */
#cmakedefine INTERNAL_ZLIB 1
diff --git a/src/mono/mono.proj b/src/mono/mono.proj
index f2933a7744bfe5..108e44c032c729 100644
--- a/src/mono/mono.proj
+++ b/src/mono/mono.proj
@@ -80,7 +80,6 @@
-
<_MonoBuildEnv Condition="'$(Platform)' == 'arm'" Include="TARGET_BUILD_ARCH=arm" />
<_MonoBuildEnv Condition="'$(Platform)' == 'armv6'" Include="TARGET_BUILD_ARCH=armv6" />
- <_MonoBuildEnv Condition="'$(Platform)' == 'arm64'" Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/aarch64-linux-gnu/pkgconfig" />
- <_MonoBuildEnv Condition="'$(Platform)' == 'arm'" Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/arm-linux-gnueabihf/pkgconfig" />
- <_MonoBuildEnv Condition="'$(Platform)' == 'armv6'" Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/arm-linux-gnueabihf/pkgconfig" />
<_MonoCFLAGS Condition="'$(TargetArchitecture)' == 'armv6'" Include="-march=armv6zk" />
<_MonoCFLAGS Condition="'$(TargetArchitecture)' == 'armv6'" Include="-mcpu=arm1176jzf-s" />
<_MonoCFLAGS Condition="'$(TargetArchitecture)' == 'armv6'" Include="-mfpu=vfp" />
@@ -314,49 +310,42 @@
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=x64" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/lib/pkgconfig" />
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=x64" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/boot/system/lib/pkgconfig" />
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=x64" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/pkgconfig" />
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=x86" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/pkgconfig" />
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=riscv64" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/riscv64-linux-gnu/pkgconfig" />
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=s390x" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/s390x-linux-gnu/pkgconfig" />
<_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" />
<_MonoBuildEnv Include="TARGET_BUILD_ARCH=ppc64le" />
- <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/powerpc64le-linux-gnu/pkgconfig" />
@@ -443,9 +432,6 @@
<_MonoCMakeArgs Include="-DENABLE_LLVM_RUNTIME=1"/>
<_MonoCMakeArgs Include="-DEMSCRIPTEN_SYSTEM_PROCESSOR=wasm"/>
- <_MonoCFLAGS Condition="'$(WasmEnableThreads)' == 'true'" Include="$(EscapedQuoteW)-I$([MSBuild]::NormalizePath('$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)', 'runtimes', 'browser-wasm-threads', 'native', 'include'))$(EscapedQuoteW)"/>
-
- <_MonoCFLAGS Condition="'$(WasmEnableThreads)' != 'true'" Include="$(EscapedQuoteW)-I$([MSBuild]::NormalizePath('$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)', 'runtimes', 'browser-wasm', 'native', 'include'))$(EscapedQuoteW)"/>
@@ -460,8 +446,6 @@
<_MonoCFLAGS Include="-D_WASI_EMULATED_PROCESS_CLOCKS"/>
<_MonoCFLAGS Include="-D_WASI_EMULATED_SIGNAL"/>
<_MonoCFLAGS Include="-D_WASI_EMULATED_MMAN"/>
- <_MonoCFLAGS Condition="'$(WasmEnableThreads)' == 'true'" Include="$(EscapedQuoteW)-I$([MSBuild]::NormalizePath('$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)', 'runtimes', 'wasi-wasm-threads', 'native', 'include').Replace('\','/'))$(EscapedQuoteW)"/>
- <_MonoCFLAGS Condition="'$(WasmEnableThreads)' != 'true'" Include="$(EscapedQuoteW)-I$([MSBuild]::NormalizePath('$(PkgMicrosoft_NETCore_Runtime_ICU_Transport)', 'runtimes', 'wasi-wasm', 'native', 'include').Replace('\','/'))$(EscapedQuoteW)"/>
@@ -832,21 +816,6 @@
<_MonoAotBuildEnv Include="TARGET_BUILD_ARCH=$(AotHostArchitecture)" />
-
-
- <_MonoAotBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/x86_64-linux-gnu/pkgconfig" />
-
-
-
-
- <_MonoAotBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/aarch64-linux-gnu/pkgconfig" />
-
-
-
-
- <_MonoAotBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)/usr/lib/pkgconfig" />
-
-
<_MonoAOTCFLAGSOption>-DCMAKE_C_FLAGS="@(_MonoAOTCPPFLAGS, ' ') @(_MonoAOTCFLAGS, ' ')"
<_MonoAOTCXXFLAGSOption>-DCMAKE_CXX_FLAGS="@(_MonoAOTCPPFLAGS, ' ') @(_MonoAOTCXXFLAGS, ' ')"
diff --git a/src/mono/mono/eventpipe/test/CMakeLists.txt b/src/mono/mono/eventpipe/test/CMakeLists.txt
index d867685fb2da7a..d313e630adaaba 100644
--- a/src/mono/mono/eventpipe/test/CMakeLists.txt
+++ b/src/mono/mono/eventpipe/test/CMakeLists.txt
@@ -39,13 +39,7 @@ if(ENABLE_PERFTRACING)
set(CMAKE_SKIP_RPATH 1)
add_executable(ep-test ${EVENTPIPE_TEST_SOURCES} ${EVENTPIPE_TEST_HEADERS})
target_sources(ep-test PRIVATE "${mono-components-objects}")
- target_link_libraries(ep-test PRIVATE eglib_api monosgen-static ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS} monoapi)
- if(HAVE_SYS_ICU)
- target_link_libraries(ep-test PRIVATE icu_shim_objects)
- endif()
- if(ICU_LDFLAGS)
- set_target_properties(ep-test PROPERTIES LINK_FLAGS ${ICU_LDFLAGS})
- endif()
+ target_link_libraries(ep-test PRIVATE eglib_api monosgen-static ${OS_LIBS} ${LLVM_LIBS} ${Z_LIBS} monoapi)
install_with_stripped_symbols(ep-test TARGETS bin)
else(ENABLE_EVENTPIPE_TEST AND STATIC_COMPONENTS AND (NOT DISABLE_COMPONENTS) AND (NOT DISABLE_LIBS) AND (NOT DISABLE_EXECUTABLES))
message(VERBOSE "Skip building native EventPipe library test runner.")
diff --git a/src/mono/mono/metadata/native-library.c b/src/mono/mono/metadata/native-library.c
index 6692736251330d..f26ab2e9152afa 100644
--- a/src/mono/mono/metadata/native-library.c
+++ b/src/mono/mono/metadata/native-library.c
@@ -47,10 +47,6 @@ static GHashTable *native_library_module_map;
*/
static GHashTable *native_library_module_blocklist;
-#ifndef NO_GLOBALIZATION_SHIM
-extern const void *GlobalizationResolveDllImport (const char *name);
-#endif
-
static GHashTable *global_module_map; // should only be accessed with the global loader data lock
static MonoDl *internal_module; // used when pinvoking `__Internal`
@@ -786,26 +782,6 @@ get_dllimportsearchpath_flags (MonoCustomAttrInfo *cinfo)
return flags;
}
-#ifndef NO_GLOBALIZATION_SHIM
-#ifdef HOST_WIN32
-#define GLOBALIZATION_DLL_NAME "System.Globalization.Native"
-#else
-#define GLOBALIZATION_DLL_NAME "libSystem.Globalization.Native"
-#endif
-
-static gpointer
-default_resolve_dllimport (const char *dll, const char *func)
-{
- if (strcmp (dll, GLOBALIZATION_DLL_NAME) == 0) {
- const void *method_impl = GlobalizationResolveDllImport (func);
- if (method_impl)
- return (gpointer)method_impl;
- }
-
- return NULL;
-}
-#endif // NO_GLOBALIZATION_SHIM
-
gpointer
lookup_pinvoke_call_impl (MonoMethod *method, MonoLookupPInvokeStatus *status_out)
{
@@ -881,12 +857,6 @@ lookup_pinvoke_call_impl (MonoMethod *method, MonoLookupPInvokeStatus *status_ou
}
#endif
-#ifndef NO_GLOBALIZATION_SHIM
- addr = default_resolve_dllimport (new_scope, new_import);
- if (addr)
- goto exit;
-#endif
-
if (pinvoke_override) {
addr = pinvoke_override (new_scope, new_import);
if (addr)
diff --git a/src/mono/mono/mini/CMakeLists.txt b/src/mono/mono/mini/CMakeLists.txt
index 5e6ebe9ce49dc4..e81afefecfc239 100644
--- a/src/mono/mono/mini/CMakeLists.txt
+++ b/src/mono/mono/mini/CMakeLists.txt
@@ -1,6 +1,6 @@
project(mini C)
-if(ENABLE_LLVM OR ENABLE_LLVM_RUNTIME OR HOST_BROWSER OR (HAVE_SYS_ICU AND NOT HOST_WASI))
+if(ENABLE_LLVM OR ENABLE_LLVM_RUNTIME OR HOST_BROWSER)
enable_language(CXX)
endif()
@@ -45,78 +45,6 @@ if(HOST_WIN32)
add_link_options(/OPT:NOICF)
endif()
-# ICU
-if(HAVE_SYS_ICU)
- if(STATIC_ICU)
- set(pal_icushim_sources_base
- pal_icushim_static.c)
- add_definitions(-DSTATIC_ICU=1)
- else()
- set(pal_icushim_sources_base
- pal_icushim.c)
- endif()
-
- set(icu_shim_sources_base
- pal_idna.c
- pal_common.c
- entrypoints.c
- ${pal_icushim_sources_base})
-
-if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
- set(icu_shim_sources_base
- ${icu_shim_sources_base}
- pal_calendarData.c
- pal_casing.c
- pal_collation.c
- pal_locale.c
- pal_localeNumberData.c
- pal_localeStringData.c
- pal_normalization.c
- pal_timeZoneInfo.c
- )
-endif()
-
-if (CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
- set(icu_shim_sources_base
- ${icu_shim_sources_base}
- pal_placeholders.c
- )
-endif()
-
- addprefix(icu_shim_sources "${ICU_SHIM_PATH}" "${icu_shim_sources_base}")
-
- if (TARGET_DARWIN)
- set(icu_shim_darwin_sources_base
- pal_locale.m
- pal_collation.m
- pal_casing.m
- pal_calendarData.m
- pal_normalization.m
- pal_timeZoneInfo.m)
-
- addprefix(icu_shim_darwin_sources "${ICU_SHIM_PATH}" "${icu_shim_darwin_sources_base}")
- set(icu_shim_sources ${icu_shim_sources} ${icu_shim_darwin_sources})
- endif()
-
- set_source_files_properties(${icu_shim_sources} PROPERTIES COMPILE_DEFINITIONS OSX_ICU_LIBRARY_PATH="${OSX_ICU_LIBRARY_PATH}")
- set_source_files_properties(${icu_shim_sources} PROPERTIES COMPILE_FLAGS "-I\"${ICU_INCLUDEDIR}\" -I\"${CLR_SRC_NATIVE_DIR}/libs/System.Globalization.Native/\" -I\"${CLR_SRC_NATIVE_DIR}/libs/Common/\" ${ICU_FLAGS}")
- if(TARGET_DARWIN)
- set_property(SOURCE ${icu_shim_darwin_sources} APPEND_STRING PROPERTY COMPILE_FLAGS " -fobjc-arc ${CLR_CMAKE_COMMON_OBJC_FLAGS}")
- endif()
- if(TARGET_WIN32)
- set_source_files_properties(${icu_shim_sources} PROPERTIES LANGUAGE CXX)
- endif()
- if(ICU_LIBDIR)
- set(ICU_LDFLAGS "-L${ICU_LIBDIR}")
- endif()
- if(CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
- set(ICU_LDFLAGS "-licucore")
- endif()
-
- add_library(icu_shim_objects OBJECT "${icu_shim_sources}")
- set(HAVE_ICU_SHIM 1)
-endif()
-
#
# MINI
#
@@ -434,9 +362,6 @@ if(NOT DISABLE_SHARED_LIBS)
else()
target_link_libraries(monosgen-shared PRIVATE monoapi eglib_objects utils_objects sgen_objects metadata_objects)
endif()
- if(HAVE_ICU_SHIM)
- target_link_libraries(monosgen-shared PRIVATE icu_shim_objects)
- endif()
target_include_directories (monosgen-shared PRIVATE monoapi)
if(TARGET_WIN32)
# on Windows the import library for the shared mono library will have the same name as the static library,
@@ -446,14 +371,8 @@ if(NOT DISABLE_SHARED_LIBS)
if(CLR_CMAKE_TARGET_MACCATALYST OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
target_link_libraries(monosgen-shared PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${Z_LIBS})
else()
- target_link_libraries(monosgen-shared PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS})
- endif()
- if(ICU_LDFLAGS)
- set_property(TARGET monosgen-shared APPEND_STRING PROPERTY LINK_FLAGS " ${ICU_LDFLAGS}")
+ target_link_libraries(monosgen-shared PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${Z_LIBS})
endif()
- if(NOT TARGET_WASM AND STATIC_ICU)
- set_property(TARGET monosgen-shared APPEND_STRING PROPERTY LINKER_LANGUAGE CXX)
- endif ()
if(TARGET_DARWIN)
set_property(TARGET monosgen-shared APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-compatibility_version -Wl,2.0 -Wl,-current_version -Wl,2.0")
endif()
@@ -498,17 +417,8 @@ if(NOT DISABLE_SHARED_LIBS)
add_library(${frameworkconfig} SHARED $)
target_compile_definitions(${frameworkconfig} PRIVATE -DMONO_DLL_EXPORT)
target_link_libraries(${frameworkconfig} PRIVATE monoapi eglib_objects utils_objects sgen_objects metadata_objects)
- if(HAVE_ICU_SHIM)
- target_link_libraries(${frameworkconfig} PRIVATE icu_shim_objects)
- endif()
- target_link_libraries(${frameworkconfig} PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS})
+ target_link_libraries(${frameworkconfig} PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${Z_LIBS})
- if(ICU_LDFLAGS)
- set_property(TARGET ${frameworkconfig} APPEND_STRING PROPERTY LINK_FLAGS " ${ICU_LDFLAGS}")
- endif()
- if(STATIC_ICU)
- set_property(TARGET ${frameworkconfig} APPEND_STRING PROPERTY LINKER_LANGUAGE CXX)
- endif ()
set_property(TARGET ${frameworkconfig} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-compatibility_version -Wl,2.0 -Wl,-current_version -Wl,2.0")
string(REPLACE "*" ";" componentsobjects-whitespace "${componentsobjects}")
target_sources(${frameworkconfig} PRIVATE "${componentsobjects-whitespace}")
@@ -627,10 +537,7 @@ if(NOT DISABLE_EXECUTABLES)
if (HOST_WASM)
target_link_libraries(mono-sgen PRIVATE mono-wasm-nosimd)
endif()
- if(HAVE_ICU_SHIM)
- target_link_libraries(mono-sgen PRIVATE icu_shim_objects)
- endif()
- target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${ICU_LIBS} ${Z_LIBS})
+ target_link_libraries(mono-sgen PRIVATE ${OS_LIBS} ${LLVM_LIBS} ${Z_LIBS})
# musl-libc implements ucontext in a different library on s390x
if(CLR_CMAKE_TARGET_LINUX_MUSL AND TARGET_S390X)
target_link_libraries(mono-sgen PRIVATE ucontext)
@@ -649,9 +556,6 @@ if(NOT DISABLE_EXECUTABLES)
# if components are disabled, link the fallback stubs into the runtime
# fallback stubs already provided in monosgen-static when components are disabled
endif()
- if(ICU_LDFLAGS)
- set_property(TARGET mono-sgen APPEND_STRING PROPERTY LINK_FLAGS " ${ICU_LDFLAGS}")
- endif()
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_sources(mono-sgen PRIVATE ${mono_validate_apis_source})
diff --git a/src/native/libs/CMakeLists.txt b/src/native/libs/CMakeLists.txt
index 79b92e33da29e7..cba0ce782610e5 100644
--- a/src/native/libs/CMakeLists.txt
+++ b/src/native/libs/CMakeLists.txt
@@ -97,11 +97,7 @@ if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
endif ()
else ()
set(CMAKE_SHARED_LIBRARY_PREFIX "")
-
- # we only need to build System.Globalization.Native when building static libs.
- if (STATIC_LIBS_ONLY)
- add_subdirectory(System.Globalization.Native)
- endif ()
+ add_subdirectory(System.Globalization.Native)
endif ()
add_subdirectory(System.IO.Compression.Native)
diff --git a/src/native/libs/Common/pal_compiler.h b/src/native/libs/Common/pal_compiler.h
index 31d45a0c385be1..876dd6adad2de7 100644
--- a/src/native/libs/Common/pal_compiler.h
+++ b/src/native/libs/Common/pal_compiler.h
@@ -77,6 +77,10 @@ do_abort_unless (bool condition, const char* fmt, ...)
#ifdef __cplusplus
#define TYPEOF decltype
#else
+#ifdef _MSC_VER
+#define TYPEOF __typeof__
+#else
#define TYPEOF __typeof
+#endif // _MSVC_VER
#endif // __cplusplus
#endif // TYPEOF
diff --git a/src/native/libs/System.Globalization.Native/CMakeLists.txt b/src/native/libs/System.Globalization.Native/CMakeLists.txt
index 1959fec40a7cfd..0fee3d2a447ef3 100644
--- a/src/native/libs/System.Globalization.Native/CMakeLists.txt
+++ b/src/native/libs/System.Globalization.Native/CMakeLists.txt
@@ -131,8 +131,9 @@ if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI AND NOT CLR_CMAKE
set(NATIVEGLOBALIZATION_SOURCES ${NATIVEGLOBALIZATION_SOURCES} pal_timeZoneInfo.c)
endif()
-if (MSVC)
- set_source_files_properties(${NATIVEGLOBALIZATION_SOURCES} PROPERTIES LANGUAGE CXX)
+if (MSVC AND MSVC_VERSION LESS 1999)
+ # on VS < 17.9 we need to force compile sources as C++ since msvc doesn't support __typeof__ there
+ set_source_files_properties(${NATIVEGLOBALIZATION_SOURCES} PROPERTIES COMPILE_FLAGS "/TP")
endif()
include_directories("../Common")
@@ -143,11 +144,21 @@ if (GEN_SHARED_LIB)
find_library(FOUNDATION Foundation REQUIRED)
endif()
- add_library(System.Globalization.Native
- SHARED
- ${NATIVEGLOBALIZATION_SOURCES}
- ${VERSION_FILE_PATH}
- )
+ if (CLR_CMAKE_TARGET_WIN32)
+ add_definitions(-DVER_FILEDESCRIPTION_STR="System.Globalization.Native")
+ add_library(System.Globalization.Native
+ SHARED
+ ${NATIVEGLOBALIZATION_SOURCES}
+ System.Globalization.Native.def
+ ${VERSION_FILE_RC_PATH}
+ )
+ else()
+ add_library(System.Globalization.Native
+ SHARED
+ ${NATIVEGLOBALIZATION_SOURCES}
+ ${VERSION_FILE_PATH}
+ )
+ endif()
target_link_libraries(System.Globalization.Native
PRIVATE
@@ -155,7 +166,20 @@ if (GEN_SHARED_LIB)
${FOUNDATION}
)
- install_with_stripped_symbols (System.Globalization.Native PROGRAMS .)
+ if(CLR_CMAKE_TARGET_WIN32)
+ include(GenerateExportHeader)
+ GENERATE_EXPORT_HEADER( System.Globalization.Native
+ BASE_NAME System.Globalization.Native
+ EXPORT_MACRO_NAME System.Globalization.Native_EXPORT
+ EXPORT_FILE_NAME System.Globalization.Native_Export.h
+ STATIC_DEFINE System.Globalization.Native_BUILT_AS_STATIC
+ )
+
+ install (TARGETS System.Globalization.Native DESTINATION .)
+ install (FILES $ DESTINATION .)
+ else()
+ install_with_stripped_symbols (System.Globalization.Native PROGRAMS .)
+ endif()
endif()
add_library(System.Globalization.Native-Static
@@ -170,7 +194,7 @@ endif()
install (TARGETS System.Globalization.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)
-if(NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_LINUX_MUSL AND NOT CLR_CMAKE_TARGET_HAIKU)
+if(NOT CLR_CMAKE_TARGET_WIN32 AND NOT CLR_CMAKE_TARGET_APPLE AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_LINUX_MUSL AND NOT CLR_CMAKE_TARGET_HAIKU)
if (GEN_SHARED_LIB)
add_custom_command(TARGET System.Globalization.Native POST_BUILD
COMMENT "Verifying System.Globalization.Native.so dependencies"
diff --git a/src/native/libs/System.Globalization.Native/System.Globalization.Native.def b/src/native/libs/System.Globalization.Native/System.Globalization.Native.def
new file mode 100644
index 00000000000000..3338d4c36994a2
--- /dev/null
+++ b/src/native/libs/System.Globalization.Native/System.Globalization.Native.def
@@ -0,0 +1,39 @@
+LIBRARY System.Globalization.Native.dll
+
+EXPORTS
+ GlobalizationNative_ChangeCase
+ GlobalizationNative_ChangeCaseInvariant
+ GlobalizationNative_ChangeCaseTurkish
+ GlobalizationNative_CloseSortHandle
+ GlobalizationNative_CompareString
+ GlobalizationNative_EndsWith
+ GlobalizationNative_EnumCalendarInfo
+ GlobalizationNative_GetCalendarInfo
+ GlobalizationNative_GetCalendars
+ GlobalizationNative_GetDefaultLocaleName
+ GlobalizationNative_GetICUVersion
+ GlobalizationNative_GetJapaneseEraStartDate
+ GlobalizationNative_GetLatestJapaneseEra
+ GlobalizationNative_GetLocaleInfoGroupingSizes
+ GlobalizationNative_GetLocaleInfoInt
+ GlobalizationNative_GetLocaleInfoString
+ GlobalizationNative_GetLocaleName
+ GlobalizationNative_GetLocales
+ GlobalizationNative_GetLocaleTimeFormat
+ GlobalizationNative_GetSortHandle
+ GlobalizationNative_GetSortKey
+ GlobalizationNative_GetSortVersion
+ GlobalizationNative_GetTimeZoneDisplayName
+ GlobalizationNative_IanaIdToWindowsId
+ GlobalizationNative_IndexOf
+ GlobalizationNative_InitICUFunctions
+ GlobalizationNative_IsNormalized
+ GlobalizationNative_IsPredefinedLocale
+ GlobalizationNative_LastIndexOf
+ GlobalizationNative_LoadICU
+ GlobalizationNative_NormalizeString
+ GlobalizationNative_StartsWith
+ GlobalizationNative_WindowsIdToIanaId
+ GlobalizationNative_ToAscii
+ GlobalizationNative_ToUnicode
+ GlobalizationNative_InitOrdinalCasingPage
\ No newline at end of file
diff --git a/src/native/libs/System.Globalization.Native/pal_collation.c b/src/native/libs/System.Globalization.Native/pal_collation.c
index 44de265b4a196d..7f0c5e01f9c98d 100644
--- a/src/native/libs/System.Globalization.Native/pal_collation.c
+++ b/src/native/libs/System.Globalization.Native/pal_collation.c
@@ -257,7 +257,7 @@ static void FillIgnoreWidthRules(UChar* completeRules, int32_t* fillIndex, int32
for (UChar ch = 0xFF21; ch <= 0xFF3A; ch++)
{
completeRules[*fillIndex] = '&';
- completeRules[(*fillIndex) + 1] = ch + UpperCaseToLowerCaseOffset;
+ completeRules[(*fillIndex) + 1] = (UChar)(ch + UpperCaseToLowerCaseOffset);
completeRules[(*fillIndex) + 2] = '=';
completeRules[(*fillIndex) + 3] = ch;
(*fillIndex) += 4;
diff --git a/src/native/libs/System.Globalization.Native/pal_localeNumberData.c b/src/native/libs/System.Globalization.Native/pal_localeNumberData.c
index c0996e373317ee..1cc0e55d188b17 100644
--- a/src/native/libs/System.Globalization.Native/pal_localeNumberData.c
+++ b/src/native/libs/System.Globalization.Native/pal_localeNumberData.c
@@ -165,7 +165,7 @@ static int GetNumericPattern(const UNumberFormat* pNumberFormat,
int isNegative)
{
const int INVALID_FORMAT = -1;
- const int MAX_DOTNET_NUMERIC_PATTERN_LENGTH = 6; // example: "(C n)" plus terminator
+ const size_t MAX_DOTNET_NUMERIC_PATTERN_LENGTH = 6; // example: "(C n)" plus terminator
UErrorCode ignore = U_ZERO_ERROR;
int32_t icuPatternLength = unum_toPattern(pNumberFormat, false, NULL, 0, &ignore) + 1;