@@ -212,6 +212,36 @@ elseif(CLR_CMAKE_HOST_OS STREQUAL "linux")
212212 # Enable the "full RELRO" options (RELRO & BIND_NOW) at link time
213213 add_link_options (-Wl,-z,relro)
214214 add_link_options (-Wl,-z,now)
215+
216+ # Detect Linux ID
217+ # TODO: Eventually merge with eng/native/configureplatform.cmake
218+ set (LINUX_ID_FILE "/etc/os-release" )
219+ if (CMAKE_CROSSCOMPILING )
220+ set (LINUX_ID_FILE "${CMAKE_SYSROOT}${LINUX_ID_FILE} " )
221+ endif ()
222+
223+ if (EXISTS ${LINUX_ID_FILE} )
224+ execute_process (
225+ COMMAND bash -c "source ${LINUX_ID_FILE} && echo \$ ID"
226+ OUTPUT_VARIABLE CLR_CMAKE_LINUX_ID
227+ OUTPUT_STRIP_TRAILING_WHITESPACE)
228+
229+ execute_process (
230+ COMMAND bash -c "if strings \" ${CMAKE_SYSROOT} /usr/bin/ldd\" 2>&1 | grep -q musl; then echo musl; fi"
231+ OUTPUT_VARIABLE CLR_CMAKE_LINUX_MUSL
232+ OUTPUT_STRIP_TRAILING_WHITESPACE)
233+ endif ()
234+
235+ if (DEFINED CLR_CMAKE_LINUX_ID)
236+ if (CLR_CMAKE_LINUX_ID STREQUAL alpine)
237+ set (CLR_CMAKE_HOST_ALPINE_LINUX 1)
238+ set (CLR_CMAKE_HOST_OS ${CLR_CMAKE_LINUX_ID} )
239+ endif ()
240+
241+ if (CLR_CMAKE_LINUX_MUSL STREQUAL musl)
242+ set (CLR_CMAKE_HOST_LINUX_MUSL 1)
243+ endif ()
244+ endif (DEFINED CLR_CMAKE_LINUX_ID)
215245elseif (CLR_CMAKE_HOST_OS STREQUAL "android" )
216246 set (HOST_LINUX 1)
217247 add_definitions (-D_GNU_SOURCE -D_REENTRANT)
@@ -309,7 +339,7 @@ elseif(TARGET_SYSTEM_NAME STREQUAL "ios" OR TARGET_SYSTEM_NAME STREQUAL "tvos")
309339 set (TARGET_TVOS 1)
310340 endif ()
311341 set (TARGET_APPLE_MOBILE 1)
312- elseif (TARGET_SYSTEM_NAME STREQUAL "linux" )
342+ elseif (TARGET_SYSTEM_NAME STREQUAL "linux" OR TARGET_SYSTEM_NAME STREQUAL "alpine" )
313343 set (TARGET_LINUX 1)
314344elseif (TARGET_SYSTEM_NAME STREQUAL "android" )
315345 set (TARGET_ANDROID 1)
@@ -592,10 +622,10 @@ if(LLVM_PREFIX)
592622 set (llvm_cxxflags "-I${LLVM_PREFIX} /include -std=c++14 -fno-exceptions -fno-rtti -D__STDC_CONSTANT_MACROS -D__STD_FORMAT_MACROS -D__STDC_LIMIT_MACROS" )
593623 set (llvm_includedir "${LLVM_PREFIX} /include" )
594624
595- if (CLR_CMAKE_HOST_OS STREQUAL "linux" )
625+ if (HOST_LINUX )
596626 # llvm-config --system-libs
597627 set (llvm_system_libs "-lz" "-lrt" "-ldl" "-lpthread" "-lm" )
598- elseif (CLR_CMAKE_HOST_OS STREQUAL "darwin" )
628+ elseif (HOST_OSX )
599629 # llvm-config --system-libs
600630 set (llvm_system_libs "-lz" "-lm" )
601631 endif ()
@@ -876,6 +906,12 @@ if(HOST_IOS OR HOST_ANDROID OR HOST_MACCAT)
876906else ()
877907 set (DISABLE_DLLMAP 1)
878908endif ()
909+
910+ if (CLR_CMAKE_HOST_ALPINE_LINUX)
911+ # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is
912+ # larger than the initial committed stack size.
913+ add_definitions (-DENSURE_PRIMARY_STACK_SIZE)
914+ endif ()
879915### End of OS specific checks
880916
881917include_directories ("${CLR_SRC_NATIVE_DIR} " )
0 commit comments