1
1
set (CROSS_ROOTFS $ENV{ROOTFS_DIR} )
2
2
3
3
set (TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH} )
4
- set (CMAKE_SYSTEM_NAME Linux)
4
+ if (EXISTS ${CROSS_ROOTFS} /bin/freebsd-version )
5
+ set (CMAKE_SYSTEM_NAME FreeBSD)
6
+ else ()
7
+ set (CMAKE_SYSTEM_NAME Linux)
8
+ endif ()
5
9
set (CMAKE_SYSTEM_VERSION 1)
6
10
7
11
if (TARGET_ARCH_NAME STREQUAL "armel" )
@@ -27,6 +31,9 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
27
31
elseif (TARGET_ARCH_NAME STREQUAL "x86" )
28
32
set (CMAKE_SYSTEM_PROCESSOR i686)
29
33
set (TOOLCHAIN "i686-linux-gnu" )
34
+ elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
35
+ set (CMAKE_SYSTEM_PROCESSOR "x86_64" )
36
+ set (triple "x86_64-unknown-freebsd11" )
30
37
else ()
31
38
message (FATAL_ERROR "Arch is ${TARGET_ARCH_NAME} . Only armel, arm, arm64 and x86 are supported!" )
32
39
endif ()
@@ -60,6 +67,12 @@ if("$ENV{__DistroRid}" MATCHES "android.*")
60
67
61
68
# include official NDK toolchain script
62
69
include (${CROSS_ROOTFS} /../build /cmake/android.toolchain.cmake)
70
+ elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
71
+ # we cross-compile by instructing clang
72
+ set (CMAKE_C_COMPILER_TARGET ${triple} )
73
+ set (CMAKE_CXX_COMPILER_TARGET ${triple} )
74
+ set (CMAKE_ASM_COMPILER_TARGET ${triple} )
75
+ set (CMAKE_SYSROOT "${CROSS_ROOTFS} " )
63
76
else ()
64
77
set (CMAKE_SYSROOT "${CROSS_ROOTFS} " )
65
78
0 commit comments