@@ -6,6 +6,7 @@ unset(FREEBSD)
66unset (ILLUMOS)
77unset (ANDROID)
88unset (TIZEN)
9+ unset (HAIKU)
910
1011set (TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH} )
1112if (EXISTS ${CROSS_ROOTFS} /bin/freebsd-version )
@@ -16,6 +17,7 @@ elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc)
1617 set (ILLUMOS 1)
1718elseif (EXISTS ${CROSS_ROOTFS} /boot/system /develop/headers/config/HaikuConfig.h)
1819 set (CMAKE_SYSTEM_NAME Haiku)
20+ set (HAIKU 1)
1921else ()
2022 set (CMAKE_SYSTEM_NAME Linux)
2123 set (LINUX 1)
@@ -67,16 +69,30 @@ elseif(TARGET_ARCH_NAME STREQUAL "armv6")
6769 endif ()
6870elseif (TARGET_ARCH_NAME STREQUAL "ppc64le" )
6971 set (CMAKE_SYSTEM_PROCESSOR ppc64le)
70- set (TOOLCHAIN "powerpc64le-linux-gnu" )
72+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/powerpc64le-alpine-linux-musl)
73+ set (TOOLCHAIN "powerpc64le-alpine-linux-musl" )
74+ else ()
75+ set (TOOLCHAIN "powerpc64le-linux-gnu" )
76+ endif ()
7177elseif (TARGET_ARCH_NAME STREQUAL "riscv64" )
7278 set (CMAKE_SYSTEM_PROCESSOR riscv64)
73- set (TOOLCHAIN "riscv64-linux-gnu" )
79+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/riscv64-alpine-linux-musl)
80+ set (TOOLCHAIN "riscv64-alpine-linux-musl" )
81+ else ()
82+ set (TOOLCHAIN "riscv64-linux-gnu" )
83+ endif ()
7484elseif (TARGET_ARCH_NAME STREQUAL "s390x" )
7585 set (CMAKE_SYSTEM_PROCESSOR s390x)
76- set (TOOLCHAIN "s390x-linux-gnu" )
86+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/s390x-alpine-linux-musl)
87+ set (TOOLCHAIN "s390x-alpine-linux-musl" )
88+ else ()
89+ set (TOOLCHAIN "s390x-linux-gnu" )
90+ endif ()
7791elseif (TARGET_ARCH_NAME STREQUAL "x64" )
7892 set (CMAKE_SYSTEM_PROCESSOR x86_64)
79- if (LINUX)
93+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/x86_64-alpine-linux-musl)
94+ set (TOOLCHAIN "x86_64-alpine-linux-musl" )
95+ elseif (LINUX)
8096 set (TOOLCHAIN "x86_64-linux-gnu" )
8197 if (TIZEN)
8298 set (TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0" )
@@ -86,11 +102,15 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
86102 elseif (ILLUMOS)
87103 set (TOOLCHAIN "x86_64-illumos" )
88104 elseif (HAIKU)
89- set (TOOLCHAIN "x64_64 -unknown-haiku" )
105+ set (TOOLCHAIN "x86_64 -unknown-haiku" )
90106 endif ()
91107elseif (TARGET_ARCH_NAME STREQUAL "x86" )
92108 set (CMAKE_SYSTEM_PROCESSOR i686)
93- set (TOOLCHAIN "i686-linux-gnu" )
109+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/i586-alpine-linux-musl)
110+ set (TOOLCHAIN "i586-alpine-linux-musl" )
111+ else ()
112+ set (TOOLCHAIN "i686-linux-gnu" )
113+ endif ()
94114 if (TIZEN)
95115 set (TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0" )
96116 endif ()
@@ -196,10 +216,8 @@ elseif(HAIKU)
196216 return ()
197217 endif ()
198218
199- set (SEARCH_PATH "${CROSS_ROOTFS} /generated/cross-tools-x86_64/bin" )
200-
201219 find_program (EXEC_LOCATION_${exec}
202- PATHS ${SEARCH_PATH}
220+ PATHS " ${CROSS_ROOTFS} /cross-tools-x86_64/bin"
203221 NAMES
204222 "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION} "
205223 "${TOOLSET_PREFIX}${exec} " )
@@ -264,8 +282,11 @@ elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$")
264282 add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS} /usr/lib64/gcc/${TIZEN_TOOLCHAIN} " )
265283 endif ()
266284elseif (TARGET_ARCH_NAME STREQUAL "x86" )
285+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/i586-alpine-linux-musl)
286+ add_toolchain_linker_flag("--target=${TOOLCHAIN} " )
287+ add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS} /usr/lib/gcc/${TOOLCHAIN} " )
288+ endif ()
267289 add_toolchain_linker_flag(-m32)
268-
269290 if (TIZEN)
270291 add_toolchain_linker_flag("-B${CROSS_ROOTFS} /usr/lib/gcc/${TIZEN_TOOLCHAIN} " )
271292 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /lib" )
@@ -275,11 +296,14 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
275296elseif (ILLUMOS)
276297 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /lib/amd64" )
277298 add_toolchain_linker_flag("-L${CROSS_ROOTFS} /usr/amd64/lib" )
299+ elseif (HAIKU)
300+ add_toolchain_linker_flag("-lnetwork" )
301+ add_toolchain_linker_flag("-lroot" )
278302endif ()
279303
280304# Specify compile options
281305
282- if ((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
306+ if ((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x|x64|x86 )$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU)
283307 set (CMAKE_C_COMPILER_TARGET ${TOOLCHAIN} )
284308 set (CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN} )
285309 set (CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN} )
@@ -298,10 +322,16 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
298322
299323 add_definitions (-DCLR_ARM_FPU_CAPABILITY=${CLR_ARM_FPU_CAPABILITY} )
300324
325+ # persist variables across multiple try_compile passes
326+ list (APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CLR_ARM_FPU_TYPE CLR_ARM_FPU_CAPABILITY)
327+
301328 if (TARGET_ARCH_NAME STREQUAL "armel" )
302329 add_compile_options (-mfloat-abi=softfp)
303330 endif ()
304331elseif (TARGET_ARCH_NAME STREQUAL "x86" )
332+ if (EXISTS ${CROSS_ROOTFS} /usr/lib/gcc/i586-alpine-linux-musl)
333+ add_compile_options (--target =${TOOLCHAIN} )
334+ endif ()
305335 add_compile_options (-m32)
306336 add_compile_options (-Wno-error=unused-command -line-argument)
307337endif ()
0 commit comments