@@ -44,7 +44,7 @@ set(RT_ARCHIVE_WITH_LDC ON CACHE STRING "Whet
44
44
set (RT_CFLAGS "" CACHE STRING "Runtime extra C compiler flags, separated by ' '" )
45
45
set (LD_FLAGS "" CACHE STRING "Runtime extra C linker flags, separated by ' '" )
46
46
set (C_SYSTEM_LIBS AUTO CACHE STRING "C system libraries for linking shared libraries and test runners, separated by ';'" )
47
- set (TARGET_SYSTEM AUTO CACHE STRING "Target OS/toolchain for cross-compilation (e.g., 'Linux;UNIX', 'Darwin;APPLE;UNIX', 'Windows;MSVC')" )
47
+ set (TARGET_SYSTEM AUTO CACHE STRING "Target OS/toolchain for cross-compilation (e.g., 'Linux;UNIX', 'Linux;UNIX;musl', ' Darwin;APPLE;UNIX', 'Windows;MSVC')" )
48
48
set (RT_SUPPORT_SANITIZERS OFF CACHE BOOL "Build runtime libraries with sanitizer support (e.g. for AddressSanitizer)" )
49
49
50
50
set (CMAKE_INSTALL_LIBDIR ${CMAKE_INSTALL_PREFIX} /lib${LIB_SUFFIX} )
@@ -73,6 +73,17 @@ if("${TARGET_SYSTEM}" STREQUAL "AUTO")
73
73
endif ()
74
74
if (UNIX )
75
75
list (APPEND TARGET_SYSTEM "UNIX" )
76
+
77
+ # Determines if host system uses musl libc
78
+ execute_process (COMMAND ldd /bin/ls OUTPUT_VARIABLE OUTPUT ERROR_VARIABLE OUTPUT RESULT_VARIABLE RETVAL)
79
+ if (NOT ${RETVAL} )
80
+ if ("${OUTPUT} " MATCHES "-musl-" )
81
+ if (NOT CMAKE_REQUIRED_QUIET)
82
+ message (STATUS "Detected musl libc" )
83
+ endif ()
84
+ list (APPEND TARGET_SYSTEM "musl" )
85
+ endif ()
86
+ endif ()
76
87
endif ()
77
88
endif ()
78
89
@@ -122,6 +133,9 @@ if("${C_SYSTEM_LIBS}" STREQUAL "AUTO")
122
133
set (C_SYSTEM_LIBS m c)
123
134
elseif ("${TARGET_SYSTEM} " MATCHES "Linux" )
124
135
set (C_SYSTEM_LIBS m pthread rt dl)
136
+ if ("${TARGET_SYSTEM} " MATCHES "musl" )
137
+ list (APPEND C_SYSTEM_LIBS "unwind" )
138
+ endif ()
125
139
elseif ("${TARGET_SYSTEM} " MATCHES "FreeBSD" )
126
140
set (C_SYSTEM_LIBS m pthread execinfo z)
127
141
else ()
@@ -137,6 +151,7 @@ message(STATUS "-- LDC runtime configuration:")
137
151
message (STATUS "-- - Building 32/64-bit libraries (MULTILIB): ${MULTILIB} " )
138
152
message (STATUS "-- - Building shared libraries (BUILD_SHARED_LIBS): ${BUILD_SHARED_LIBS} " )
139
153
message (STATUS "-- - Building LTO libraries (BUILD_LTO_LIBS): ${BUILD_LTO_LIBS} " )
154
+ message (STATUS "-- - Linking shared libraries (and test runners) with (C_SYSTEM_LIBS): ${C_SYSTEM_LIBS} " )
140
155
141
156
get_directory_property (PROJECT_PARENT_DIR DIRECTORY ${PROJECT_SOURCE_DIR} PARENT_DIRECTORY )
142
157
set (RUNTIME_DIR ${PROJECT_SOURCE_DIR} /druntime CACHE PATH "druntime root directory" )
0 commit comments