Skip to content

Commit 43ae9af

Browse files
authored
Add support for illumos cross-compilation (#37753)
1 parent 85a97b6 commit 43ae9af

File tree

22 files changed

+165
-177
lines changed

22 files changed

+165
-177
lines changed

.gitignore

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ syntax: glob
33
### VisualStudio ###
44

55
# Tool Runtime Dir
6-
.dotnet/
7-
.dotnet-mono/
8-
.packages/
9-
.tools/
6+
# note: there is no trailing slash so if these are symlinks (which are seen as files,
7+
# instead of directories), git will still ignore them.
8+
.dotnet
9+
.dotnet-mono
10+
.packages
11+
.tools
1012

1113
# User-specific files
1214
*.suo

eng/native/configurecompiler.cmake

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,4 +577,18 @@ else (CLR_CMAKE_HOST_WIN32)
577577
if (AWK STREQUAL "AWK-NOTFOUND")
578578
message(FATAL_ERROR "AWK not found")
579579
endif()
580+
581+
# detect linker
582+
set(ldVersion ${CMAKE_C_COMPILER};-Wl,--version)
583+
execute_process(COMMAND ${ldVersion}
584+
ERROR_QUIET
585+
OUTPUT_VARIABLE ldVersionOutput)
586+
587+
if("${ldVersionOutput}" MATCHES "GNU ld" OR "${ldVersionOutput}" MATCHES "GNU gold")
588+
set(LD_GNU 1)
589+
elseif("${ldVersionOutput}" MATCHES "Solaris Link")
590+
set(LD_SOLARIS 1)
591+
else(CLR_CMAKE_HOST_OSX)
592+
set(LD_OSX 1)
593+
endif()
580594
endif(CLR_CMAKE_HOST_WIN32)

eng/native/configureplatform.cmake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ if(CLR_CMAKE_HOST_OS STREQUAL SunOS)
152152
COMMAND isainfo -n
153153
OUTPUT_VARIABLE SUNOS_NATIVE_INSTRUCTION_SET)
154154

155-
if(SUNOS_NATIVE_INSTRUCTION_SET MATCHES "amd64")
155+
if(SUNOS_NATIVE_INSTRUCTION_SET MATCHES "amd64" OR CMAKE_CROSSCOMPILING)
156156
set(CLR_CMAKE_HOST_UNIX_AMD64 1)
157157
set(CMAKE_SYSTEM_PROCESSOR "amd64")
158158
else()
@@ -165,11 +165,11 @@ if(CLR_CMAKE_HOST_OS STREQUAL SunOS)
165165
ERROR_QUIET)
166166

167167
set(CLR_CMAKE_HOST_SUNOS 1)
168-
if(SUNOS_KERNEL_KIND STREQUAL illumos)
168+
if(SUNOS_KERNEL_KIND STREQUAL illumos OR CMAKE_CROSSCOMPILING)
169169
set(CLR_CMAKE_HOST_OS_ILLUMOS 1)
170-
else(SUNOS_KERNEL_KIND STREQUAL illumos)
170+
else(SUNOS_KERNEL_KIND STREQUAL illumos OR CMAKE_CROSSCOMPILING)
171171
set(CLR_CMAKE_HOST_OS_SOLARIS 1)
172-
endif(SUNOS_KERNEL_KIND STREQUAL illumos)
172+
endif(SUNOS_KERNEL_KIND STREQUAL illumos OR CMAKE_CROSSCOMPILING)
173173
endif(CLR_CMAKE_HOST_OS STREQUAL SunOS)
174174

175175
if(CLR_CMAKE_HOST_OS STREQUAL Windows)

eng/native/configuretools.cmake

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,18 @@ if(NOT WIN32 AND NOT CLR_CMAKE_TARGET_BROWSER)
3434
"${TOOLSET_PREFIX}${exec}")
3535

3636
if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec}-NOTFOUND")
37-
message(FATAL_ERROR "Unable to find toolchain executable for: ${exec}.")
37+
message(FATAL_ERROR "Unable to find toolchain executable. Name: ${exec}, Prefix: ${TOOLSET_PREFIX}.")
3838
endif()
3939
set(${var} ${EXEC_LOCATION_${exec}} PARENT_SCOPE)
4040
endfunction()
4141

4242
locate_toolchain_exec(ar CMAKE_AR)
43-
locate_toolchain_exec(link CMAKE_LINKER)
4443
locate_toolchain_exec(nm CMAKE_NM)
4544

46-
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
45+
if(CMAKE_C_COMPILER_ID MATCHES "GNU")
4746
locate_toolchain_exec(ranlib CMAKE_RANLIB)
47+
else()
48+
locate_toolchain_exec(link CMAKE_LINKER)
4849
endif()
4950

5051
if(NOT CLR_CMAKE_TARGET_OSX AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND (NOT CLR_CMAKE_TARGET_ANDROID OR CROSS_ROOTFS))

eng/native/functions.cmake

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,20 @@ function(preprocess_compile_asm)
162162
set(${COMPILE_ASM_OUTPUT_OBJECTS} ${ASSEMBLED_OBJECTS} PARENT_SCOPE)
163163
endfunction()
164164

165+
function(set_exports_linker_option exports_filename)
166+
if(LD_GNU OR LD_SOLARIS)
167+
# Add linker exports file option
168+
if(LD_SOLARIS)
169+
set(EXPORTS_LINKER_OPTION -Wl,-M,${exports_filename} PARENT_SCOPE)
170+
else()
171+
set(EXPORTS_LINKER_OPTION -Wl,--version-script=${exports_filename} PARENT_SCOPE)
172+
endif()
173+
elseif(LD_OSX)
174+
# Add linker exports file option
175+
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${exports_filename} PARENT_SCOPE)
176+
endif()
177+
endfunction()
178+
165179
function(generate_exports_file)
166180
set(INPUT_LIST ${ARGN})
167181
list(GET INPUT_LIST -1 outputFilename)

src/coreclr/src/dlls/dbgshim/CMakeLists.txt

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,16 @@ else(CLR_CMAKE_TARGET_WIN32)
2424
set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/dbgshim_unixexports.src)
2525
set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/dbgshim.exports)
2626
generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
27-
endif(CLR_CMAKE_TARGET_WIN32)
2827

29-
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
30-
# This option is necessary to ensure that the overloaded delete operator defined inside
31-
# of the utilcode will be used instead of the standard library delete operator.
32-
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
28+
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
29+
# This option is necessary to ensure that the overloaded delete operator defined inside
30+
# of the utilcode will be used instead of the standard library delete operator.
31+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
32+
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
3333

34-
# Add linker exports file option
35-
if(CLR_CMAKE_HOST_SUNOS)
36-
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
37-
else(CLR_CMAKE_HOST_SUNOS)
38-
set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
39-
endif(CLR_CMAKE_HOST_SUNOS)
40-
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
34+
set_exports_linker_option(${EXPORTS_FILE})
4135

42-
if(CLR_CMAKE_HOST_OSX)
43-
# Add linker exports file option
44-
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
45-
endif(CLR_CMAKE_HOST_OSX)
36+
endif(CLR_CMAKE_TARGET_WIN32)
4637

4738
add_library_clr(dbgshim SHARED ${DBGSHIM_SOURCES})
4839

src/coreclr/src/dlls/mscordac/CMakeLists.txt

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -71,34 +71,24 @@ else(CLR_CMAKE_HOST_WIN32)
7171
# Add lib redefines file to DAC
7272
list(APPEND CLR_DAC_SOURCES libredefines.S)
7373
endif(CLR_CMAKE_HOST_LINUX)
74-
endif(CLR_CMAKE_HOST_WIN32)
7574

76-
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
77-
# This option is necessary to ensure that the overloaded delete operator defined inside
78-
# of the utilcode will be used instead of the standard library delete operator.
79-
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
80-
81-
# The following linked options can be inserted into the linker libraries list to
82-
# ensure proper resolving of circular references between a subset of the libraries.
83-
set(START_LIBRARY_GROUP -Wl,--start-group)
84-
set(END_LIBRARY_GROUP -Wl,--end-group)
85-
86-
# These options are used to force every object to be included even if it's unused.
87-
set(START_WHOLE_ARCHIVE -Wl,--whole-archive)
88-
set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)
89-
90-
# Add linker exports file option
91-
if(CLR_CMAKE_HOST_SUNOS)
92-
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
93-
else(CLR_CMAKE_HOST_SUNOS)
94-
set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
95-
endif(CLR_CMAKE_HOST_SUNOS)
96-
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
97-
98-
if(CLR_CMAKE_HOST_OSX)
99-
# Add linker exports file option
100-
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
101-
endif(CLR_CMAKE_HOST_OSX)
75+
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
76+
# This option is necessary to ensure that the overloaded delete operator defined inside
77+
# of the utilcode will be used instead of the standard library delete operator.
78+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
79+
80+
# The following linked options can be inserted into the linker libraries list to
81+
# ensure proper resolving of circular references between a subset of the libraries.
82+
set(START_LIBRARY_GROUP -Wl,--start-group)
83+
set(END_LIBRARY_GROUP -Wl,--end-group)
84+
85+
# These options are used to force every object to be included even if it's unused.
86+
set(START_WHOLE_ARCHIVE -Wl,--whole-archive)
87+
set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)
88+
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
89+
90+
set_exports_linker_option(${EXPORTS_FILE})
91+
endif(CLR_CMAKE_HOST_WIN32)
10292

10393
# Create object library to enable creation of proper dependency of mscordaccore.exp on mscordac.obj and
10494
# mscordaccore on both the mscordaccore.exp and mscordac.obj.

src/coreclr/src/dlls/mscordbi/CMakeLists.txt

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,25 +39,15 @@ else(CLR_CMAKE_HOST_WIN32)
3939
set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/mscordbi_unixexports.src)
4040
set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/mscordbi.exports)
4141
generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
42-
endif(CLR_CMAKE_HOST_WIN32)
4342

44-
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
45-
# This option is necessary to ensure that the overloaded new/delete operators defined inside
46-
# of the utilcode will be used instead of the standard library delete operator.
47-
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
48-
49-
# Add linker exports file option
50-
if(CLR_CMAKE_HOST_SUNOS)
51-
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
52-
else(CLR_CMAKE_HOST_SUNOS)
53-
set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
54-
endif(CLR_CMAKE_HOST_SUNOS)
55-
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
56-
57-
if(CLR_CMAKE_HOST_OSX)
58-
# Add linker exports file option
59-
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
60-
endif(CLR_CMAKE_HOST_OSX)
43+
if(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
44+
# This option is necessary to ensure that the overloaded new/delete operators defined inside
45+
# of the utilcode will be used instead of the standard library delete operator.
46+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
47+
endif(CLR_CMAKE_HOST_LINUX OR CLR_CMAKE_HOST_FREEBSD OR CLR_CMAKE_HOST_NETBSD OR CLR_CMAKE_HOST_SUNOS)
48+
49+
set_exports_linker_option(${EXPORTS_FILE})
50+
endif(CLR_CMAKE_HOST_WIN32)
6151

6252
add_library_clr(mscordbi SHARED ${MSCORDBI_SOURCES})
6353
target_precompile_header(TARGET mscordbi HEADER stdafx.h)

src/coreclr/src/dlls/mscoree/coreclr/CMakeLists.txt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,16 @@ else(CLR_CMAKE_HOST_WIN32)
4242
# These options are used to force every object to be included even if it's unused.
4343
set(START_WHOLE_ARCHIVE -Wl,--whole-archive)
4444
set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)
45-
46-
if(CLR_CMAKE_TARGET_SUNOS)
47-
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
48-
elseif(CLR_CMAKE_TARGET_SUNOS)
49-
set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
50-
endif(CLR_CMAKE_TARGET_SUNOS)
5145
endif(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
5246

5347
if(CLR_CMAKE_TARGET_OSX)
5448
# These options are used to force every object to be included even if it's unused.
5549
set(START_WHOLE_ARCHIVE -force_load)
5650
set(END_WHOLE_ARCHIVE )
57-
58-
set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
5951
endif(CLR_CMAKE_TARGET_OSX)
6052

53+
set_exports_linker_option(${EXPORTS_FILE})
54+
6155
if(CLR_CMAKE_TARGET_ANDROID AND CLR_CMAKE_HOST_ARCH_ARM)
6256
set(EXPORTS_LINKER_OPTION "${EXPORTS_LINKER_OPTION} -Wl,--no-warn-shared-textrel")
6357
endif(CLR_CMAKE_TARGET_ANDROID AND CLR_CMAKE_HOST_ARCH_ARM)

src/coreclr/src/ilasm/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,8 @@ if(CLR_CMAKE_HOST_UNIX)
113113
mscorrc
114114
coreclrpal
115115
palrt
116+
${CMAKE_DL_LIBS}
116117
)
117-
118-
# FreeBSD and NetBSD implement dlopen(3) in libc
119-
if(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD)
120-
target_link_libraries(ilasm
121-
dl
122-
)
123-
endif(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD)
124118
else()
125119
target_link_libraries(ilasm
126120
${ILASM_LINK_LIBRARIES}

src/coreclr/src/ildasm/exe/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,8 @@ if(CLR_CMAKE_HOST_UNIX)
104104
mscorrc
105105
coreclrpal
106106
palrt
107+
${CMAKE_DL_LIBS}
107108
)
108-
109-
# FreeBSD and NetBSD implement dlopen(3) in libc
110-
if(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD)
111-
target_link_libraries(ildasm
112-
dl
113-
)
114-
endif(NOT CLR_CMAKE_TARGET_FREEBSD AND NOT CLR_CMAKE_TARGET_NETBSD)
115109
else()
116110
target_link_libraries(ildasm
117111
${ILDASM_LINK_LIBRARIES}

src/coreclr/src/jit/CMakeLists.txt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -321,16 +321,9 @@ else()
321321
if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD OR CLR_CMAKE_TARGET_SUNOS)
322322
# This is required to force using our own PAL, not one that we are loaded with.
323323
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic")
324-
325-
if(CLR_CMAKE_TARGET_SUNOS)
326-
set(JIT_EXPORTS_LINKER_OPTION -Wl,-M,${JIT_EXPORTS_FILE})
327-
else(CLR_CMAKE_TARGET_SUNOS)
328-
set(JIT_EXPORTS_LINKER_OPTION -Wl,--version-script=${JIT_EXPORTS_FILE})
329-
endif(CLR_CMAKE_TARGET_SUNOS)
330-
elseif(CLR_CMAKE_TARGET_OSX)
331-
set(JIT_EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${JIT_EXPORTS_FILE})
332324
endif()
333325

326+
set_exports_linker_option(${JIT_EXPORTS_FILE})
334327
set(SHARED_LIB_SOURCES ${SOURCES})
335328
endif()
336329

src/coreclr/src/pal/tests/palsuite/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
2020
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
2121
add_compile_options(-Wno-sign-compare)
2222
add_compile_options(-Wno-narrowing)
23+
add_compile_options(-fno-builtin)
2324
add_compile_options($<$<COMPILE_LANGUAGE:CXX>:-fpermissive>)
2425
add_compile_options(-Wno-int-to-pointer-cast)
2526
endif()

src/coreclr/src/pal/tests/palsuite/exception_handling/pal_sxs/test1/CMakeLists.txt

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,9 @@ convert_to_absolute_path(DEF_SOURCES1 ${DEF_SOURCES1})
1818
set(EXPORTS_FILE1 ${CMAKE_CURRENT_BINARY_DIR}/dlltest1.exports)
1919
generate_exports_file(${DEF_SOURCES1} ${EXPORTS_FILE1})
2020

21-
if(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD)
22-
set(EXPORTS_LINKER_OPTION1 -Wl,--version-script=${EXPORTS_FILE1})
23-
endif(CLR_CMAKE_TARGET_LINUX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_NETBSD)
24-
25-
if(CLR_CMAKE_TARGET_OSX)
26-
set(EXPORTS_LINKER_OPTION1 -Wl,-exported_symbols_list,${EXPORTS_FILE1})
27-
endif(CLR_CMAKE_TARGET_OSX)
28-
29-
if(CLR_CMAKE_TARGET_SUNOS)
30-
# Add linker exports file option
31-
set(EXPORTS_LINKER_OPTION -Wl,-M,${EXPORTS_FILE})
32-
endif(CLR_CMAKE_TARGET_SUNOS)
21+
if(CLR_CMAKE_HOST_UNIX)
22+
set_exports_linker_option(${EXPORTS_FILE})
23+
endif(CLR_CMAKE_HOST_UNIX)
3324

3425
set(DLL1SOURCES dlltest1.cpp)
3526
add_library(paltest_pal_sxs_test1_dll1 SHARED ${DLL1SOURCES})

src/coreclr/tryrun.cmake

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,21 @@ macro(set_cache_value)
66
set(${ARGV0}__TRYRUN_OUTPUT "dummy output" CACHE STRING "Output from TRY_RUN" FORCE)
77
endmacro()
88

9-
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf OR
9+
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv7-alpine-linux-musleabihf OR
10+
EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf OR
1011
EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl)
11-
12-
SET(ALPINE_LINUX 1)
13-
else()
14-
SET(ALPINE_LINUX 0)
15-
if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version)
16-
set(FREEBSD 1)
17-
set(CMAKE_SYSTEM_NAME FreeBSD)
18-
set(CLR_CMAKE_TARGET_OS FreeBSD)
19-
else()
20-
SET(FREEBSD 0)
21-
endif()
12+
13+
set(ALPINE_LINUX 1)
14+
elseif(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version)
15+
set(FREEBSD 1)
16+
set(CMAKE_SYSTEM_NAME FreeBSD)
17+
set(CLR_CMAKE_TARGET_OS FreeBSD)
18+
elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc)
19+
set(ILLUMOS 1)
20+
set(CLR_CMAKE_TARGET_OS SunOS)
2221
endif()
2322

24-
if(TARGET_ARCH_NAME MATCHES "^(armel|arm|arm64|x86)$" OR FREEBSD)
23+
if(TARGET_ARCH_NAME MATCHES "^(armel|arm|arm64|x86)$" OR FREEBSD OR ILLUMOS)
2524
set_cache_value(FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE 1)
2625
set_cache_value(GETPWUID_R_SETS_ERRNO_EXITCODE 0)
2726
set_cache_value(HAS_POSIX_SEMAPHORES_EXITCODE 0)
@@ -68,11 +67,31 @@ if(TARGET_ARCH_NAME MATCHES "^(armel|arm|arm64|x86)$" OR FREEBSD)
6867
set_cache_value(HAVE_BROKEN_FIFO_KEVENT_EXITCODE 1)
6968
set_cache_value(HAVE_PROCFS_MAPS 0)
7069
set_cache_value(HAVE_PROCFS_STAT 0)
71-
set_cache_value(HAVE_PROCFS_STATUS 0)
70+
set_cache_value(HAVE_PROCFS_STATUS_EXITCODE 0)
7271
set_cache_value(GETPWUID_R_SETS_ERRNO 0)
7372
set_cache_value(UNGETC_NOT_RETURN_EOF 0)
7473
set_cache_value(HAVE_COMPATIBLE_ILOGBNAN 1)
7574
set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 0)
75+
elseif(ILLUMOS)
76+
set_cache_value(GETPWUID_R_SETS_ERRNO_EXITCODE 1)
77+
set_cache_value(HAVE_COMPATIBLE_ACOS_EXITCODE 1)
78+
set_cache_value(HAVE_COMPATIBLE_ASIN_EXITCODE 1)
79+
set_cache_value(HAVE_COMPATIBLE_ATAN2_EXITCODE 1)
80+
set_cache_value(HAVE_COMPATIBLE_POW_EXITCODE 1)
81+
set_cache_value(HAVE_COMPATIBLE_ILOGBNAN_EXITCODE 0)
82+
set_cache_value(HAVE_COMPATIBLE_LOG10_EXITCODE 1)
83+
set_cache_value(HAVE_COMPATIBLE_LOG_EXITCODE 1)
84+
set_cache_value(HAVE_LARGE_SNPRINTF_SUPPORT_EXITCODE 1)
85+
set_cache_value(HAVE_PROCFS_CTL_EXITCODE 1)
86+
set_cache_value(HAVE_PROCFS_STATUS_EXITCODE 1)
87+
set_cache_value(HAVE_CLOCK_THREAD_CPUTIME_EXITCODE 1)
88+
set_cache_value(SSCANF_CANNOT_HANDLE_MISSING_EXPONENT_EXITCODE 1)
89+
set_cache_value(SSCANF_SUPPORT_ll_EXITCODE 1)
90+
set_cache_value(UNGETC_NOT_RETURN_EOF_EXITCODE 0)
91+
set_cache_value(COMPILER_SUPPORTS_W_CLASS_MEMACCESS 1)
92+
set_cache_value(HAVE_SET_MAX_VARIABLE 1)
93+
set_cache_value(HAVE_FULLY_FEATURED_PTHREAD_MUTEXES 1)
94+
set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 0)
7695
endif()
7796
else()
7897
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64 and x86 are supported!")

0 commit comments

Comments
 (0)