Fix RuntimeInformation.IsOSPlatform for Browser/WASM (#36665)
authorAlexander Köplinger <alex.koeplinger@outlook.com>
Tue, 19 May 2020 13:57:20 +0000 (15:57 +0200)
committerGitHub <noreply@github.com>
Tue, 19 May 2020 13:57:20 +0000 (15:57 +0200)
The native code was still using the previous `WEBASSEMBLY` name instead of `BROWSER` as decided in https://github.com/dotnet/runtime/issues/33328.

eng/native/configureplatform.cmake
eng/native/configuretools.cmake
src/libraries/Native/Unix/CMakeLists.txt
src/libraries/Native/Unix/System.IO.Compression.Native/CMakeLists.txt
src/libraries/Native/Unix/System.Native/CMakeLists.txt
src/libraries/Native/Unix/System.Native/pal_io.c
src/libraries/Native/Unix/System.Native/pal_process.c
src/libraries/Native/Unix/System.Native/pal_sysctl.c
src/libraries/Native/Unix/configure.cmake

index 9dfd3cf..04fdfae 100644 (file)
@@ -170,6 +170,7 @@ endif(CLR_CMAKE_HOST_OS STREQUAL Windows)
 if(CLR_CMAKE_HOST_OS STREQUAL Emscripten)
     #set(CLR_CMAKE_HOST_UNIX 1) # TODO: this should be reenabled but it activates a bunch of additional compiler flags in configurecompiler.cmake
     set(CLR_CMAKE_HOST_UNIX_WASM 1)
+    set(CLR_CMAKE_HOST_BROWSER 1)
 endif(CLR_CMAKE_HOST_OS STREQUAL Emscripten)
 
 #--------------------------------------------
@@ -317,7 +318,7 @@ endif(CLR_CMAKE_TARGET_OS STREQUAL SunOS)
 if(CLR_CMAKE_TARGET_OS STREQUAL Emscripten)
     set(CLR_CMAKE_TARGET_UNIX 1)
     set(CLR_CMAKE_TARGET_LINUX 1)
-    set(CLR_CMAKE_TARGET_EMSCRIPTEN 1)
+    set(CLR_CMAKE_TARGET_BROWSER 1)
 endif(CLR_CMAKE_TARGET_OS STREQUAL Emscripten)
 
 if(CLR_CMAKE_TARGET_UNIX)
@@ -359,7 +360,7 @@ else()
     endif()
 endif()
 
-if(NOT CLR_CMAKE_TARGET_EMSCRIPTEN)
+if(NOT CLR_CMAKE_TARGET_BROWSER)
     # Skip check_pie_supported call on Android as ld from llvm toolchain with NDK API level 21
     # complains about missing linker flag `-no-pie` (while level 28's ld does support this flag,
     # but since we know that PIE is supported, we can safely skip this redundant check).
index b63ab0f..4fb9453 100644 (file)
@@ -6,7 +6,7 @@ if (CMAKE_C_COMPILER MATCHES "-?[0-9]+(\.[0-9]+)?$")
   set(CLR_CMAKE_COMPILER_FILE_NAME_VERSION "${CMAKE_MATCH_0}")
 endif()
 
-if(NOT WIN32 AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
+if(NOT WIN32 AND NOT CLR_CMAKE_TARGET_BROWSER)
   if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
     if(APPLE)
       set(TOOLSET_PREFIX "")
index 6d6ca05..1d1db48 100644 (file)
@@ -10,9 +10,9 @@ if(CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
     cmake_minimum_required(VERSION 3.14.5)
 endif()
 
-if(NOT CLR_CMAKE_TARGET_ARCH_WASM)
+if(NOT CLR_CMAKE_TARGET_BROWSER)
     cmake_policy(SET CMP0083 NEW)
-endif(NOT CLR_CMAKE_TARGET_ARCH_WASM)
+endif(NOT CLR_CMAKE_TARGET_BROWSER)
 
 set(CMAKE_MACOSX_RPATH ON)
 set(CMAKE_INSTALL_PREFIX $ENV{__CMakeBinDir})
@@ -46,8 +46,7 @@ if (PRERELEASE)
     add_compile_options(-Werror)
 endif()
 
-if(CLR_CMAKE_TARGET_ARCH_WASM)
-    add_definitions(-D_WASM_)
+if(CLR_CMAKE_TARGET_BROWSER)
     # The emscripten build has additional warnings so -Werror breaks
     add_compile_options(-Wno-unused-parameter)
     add_compile_options(-Wno-unused-function)
@@ -55,7 +54,7 @@ if(CLR_CMAKE_TARGET_ARCH_WASM)
     add_compile_options(-Wno-implicit-int-float-conversion)
 else()
   set(GEN_SHARED_LIB 1)
-endif(CLR_CMAKE_TARGET_ARCH_WASM)
+endif(CLR_CMAKE_TARGET_BROWSER)
 
 if (CLR_CMAKE_TARGET_ARCH_AMD64)
     add_definitions(-DTARGET_64BIT=1)
@@ -139,7 +138,7 @@ else ()
     message(FATAL_ERROR "Unknown build type. Set CMAKE_BUILD_TYPE to DEBUG or RELEASE.")
 endif ()
 
-if(CLR_CMAKE_TARGET_ARCH_WASM)
+if(CLR_CMAKE_TARGET_BROWSER)
 elseif (CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
     add_definitions(-D__APPLE_USE_RFC_3542)
 
@@ -164,7 +163,7 @@ endif(CLR_CMAKE_TARGET_FREEBSD)
 #       ./build-native.sh cmakeargs -DCLR_ADDITIONAL_COMPILER_OPTIONS=<...> cmakeargs -DCLR_ADDITIONAL_LINKER_FLAGS=<...>
 #
 if(CLR_CMAKE_TARGET_UNIX)
-    if(NOT CLR_CMAKE_TARGET_ARCH_WASM AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
+    if(NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS)
         if(CLR_CMAKE_TARGET_OSX)
             add_definitions(-DTARGET_OSX)
             add_link_options(-Wl,-bind_at_load)
@@ -190,7 +189,7 @@ include(configure.cmake)
 
 add_subdirectory(System.IO.Compression.Native)
 
-if (NOT CLR_CMAKE_TARGET_ARCH_WASM AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
+if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
     add_subdirectory(System.IO.Ports.Native)
 endif()
 
@@ -200,7 +199,7 @@ endif()
 
 add_subdirectory(System.Native)
 
-if(CLR_CMAKE_TARGET_ARCH_WASM)
+if(CLR_CMAKE_TARGET_BROWSER)
     # skip for now
 elseif(CLR_CMAKE_TARGET_IOS)
     add_subdirectory(System.Net.Security.Native)
index 3315941..d1bfa9f 100644 (file)
@@ -1,6 +1,6 @@
 project(System.IO.Compression.Native C)
 
-if (CLR_CMAKE_TARGET_ARCH_WASM)
+if (CLR_CMAKE_TARGET_BROWSER)
     add_definitions(-s USE_ZLIB)
 elseif (CLR_CMAKE_TARGET_ANDROID)
     # need special case here since we want to link against libz.so but find_package() would resolve libz.a
index e3bf253..884e1b0 100644 (file)
@@ -30,7 +30,7 @@ else ()
     set(NATIVE_SOURCES ${NATIVE_SOURCES} pal_console.c)
 endif ()
 
-if (CLR_CMAKE_TARGET_LINUX AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
+if (CLR_CMAKE_TARGET_LINUX AND NOT CLR_CMAKE_TARGET_BROWSER)
     set(NATIVE_SOURCES ${NATIVE_SOURCES} pal_networkchange.c)
 
     if (!HAVE_LINUX_RTNETLINK_H)
index 2e441c3..ccae4e8 100644 (file)
@@ -1280,7 +1280,7 @@ int32_t SystemNative_GetPeerID(intptr_t socket, uid_t* euid)
 
     // ucred causes Emscripten to fail even though it's defined,
     // but getting peer credentials won't work for WebAssembly anyway
-#if defined(SO_PEERCRED) && !defined(_WASM_)
+#if defined(SO_PEERCRED) && !defined(TARGET_WASM)
     struct ucred creds;
     socklen_t len = sizeof(creds);
     if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &creds, &len) == 0)
index 2a50285..2824eb0 100644 (file)
@@ -134,7 +134,7 @@ static int compare_groups(const void * a, const void * b)
 
 static int SetGroups(uint32_t* userGroups, int32_t userGroupsLength, uint32_t* processGroups)
 {
-#if defined(__linux__) || defined(_WASM_)
+#if defined(__linux__) || defined(TARGET_WASM)
     size_t platformGroupsLength = Int32ToSizeT(userGroupsLength);
 #else // BSD
     int platformGroupsLength = userGroupsLength;
index 0adf8ac..0d3b7f1 100644 (file)
@@ -24,7 +24,7 @@ int32_t SystemNative_Sysctl(int* name, unsigned int namelen, void* value, size_t
     void* newp = NULL;
     size_t newlen = 0;
 
-#if defined(__linux__) || defined(_WASM_)
+#if defined(__linux__) || defined(TARGET_WASM)
     return sysctl(name, (int)(namelen), value, len, newp, newlen);
 #else
     return sysctl(name, namelen, value, len, newp, newlen);
index 96f8f78..4dc8b93 100644 (file)
@@ -9,8 +9,8 @@ include(CheckTypeSize)
 
 if (CLR_CMAKE_TARGET_ANDROID)
     set(PAL_UNIX_NAME \"ANDROID\")
-elseif (CLR_CMAKE_TARGET_ARCH_WASM)
-    set(PAL_UNIX_NAME \"WEBASSEMBLY\")
+elseif (CLR_CMAKE_TARGET_BROWSER)
+    set(PAL_UNIX_NAME \"BROWSER\")
 elseif (CLR_CMAKE_TARGET_LINUX)
     set(PAL_UNIX_NAME \"LINUX\")
 elseif (CLR_CMAKE_TARGET_OSX)
@@ -879,7 +879,7 @@ set (CMAKE_REQUIRED_LIBRARIES ${PREVIOUS_CMAKE_REQUIRED_LIBRARIES})
 set (HAVE_INOTIFY 0)
 if (HAVE_INOTIFY_INIT AND HAVE_INOTIFY_ADD_WATCH AND HAVE_INOTIFY_RM_WATCH)
     set (HAVE_INOTIFY 1)
-elseif (CLR_CMAKE_TARGET_LINUX AND NOT CLR_CMAKE_TARGET_ARCH_WASM)
+elseif (CLR_CMAKE_TARGET_LINUX AND NOT CLR_CMAKE_TARGET_BROWSER)
     message(FATAL_ERROR "Cannot find inotify functions on a Linux platform.")
 endif()