|
|
|
@ -3,18 +3,26 @@ set(CROSS_ROOTFS $ENV{ROOTFS_DIR}) |
|
|
|
set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH}) |
|
|
|
if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version) |
|
|
|
set(CMAKE_SYSTEM_NAME FreeBSD) |
|
|
|
set(FREEBSD 1) |
|
|
|
elseif(EXISTS ${CROSS_ROOTFS}/usr/platform/i86pc) |
|
|
|
set(CMAKE_SYSTEM_NAME SunOS) |
|
|
|
set(ILLUMOS 1) |
|
|
|
else() |
|
|
|
set(CMAKE_SYSTEM_NAME Linux) |
|
|
|
set(LINUX 1) |
|
|
|
endif() |
|
|
|
set(CMAKE_SYSTEM_VERSION 1) |
|
|
|
|
|
|
|
if(EXISTS ${CROSS_ROOTFS}/etc/tizen-release) |
|
|
|
set(TIZEN 1) |
|
|
|
elseif(EXISTS ${CROSS_ROOTFS}/android_platform) |
|
|
|
set(ANDROID 1) |
|
|
|
endif() |
|
|
|
|
|
|
|
if(TARGET_ARCH_NAME STREQUAL "armel") |
|
|
|
set(CMAKE_SYSTEM_PROCESSOR armv7l) |
|
|
|
set(TOOLCHAIN "arm-linux-gnueabi") |
|
|
|
if("$ENV{__DistroRid}" MATCHES "tizen.*") |
|
|
|
if(TIZEN) |
|
|
|
set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0") |
|
|
|
endif() |
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "arm") |
|
|
|
@ -26,7 +34,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm") |
|
|
|
else() |
|
|
|
set(TOOLCHAIN "arm-linux-gnueabihf") |
|
|
|
endif() |
|
|
|
if("$ENV{__DistroRid}" MATCHES "tizen.*") |
|
|
|
if(TIZEN) |
|
|
|
set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0") |
|
|
|
endif() |
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "arm64") |
|
|
|
@ -36,7 +44,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") |
|
|
|
else() |
|
|
|
set(TOOLCHAIN "aarch64-linux-gnu") |
|
|
|
endif() |
|
|
|
if("$ENV{__DistroRid}" MATCHES "tizen.*") |
|
|
|
if(TIZEN) |
|
|
|
set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") |
|
|
|
endif() |
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "s390x") |
|
|
|
@ -45,7 +53,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "s390x") |
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "x86") |
|
|
|
set(CMAKE_SYSTEM_PROCESSOR i686) |
|
|
|
set(TOOLCHAIN "i686-linux-gnu") |
|
|
|
elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") |
|
|
|
elseif (FREEBSD) |
|
|
|
set(CMAKE_SYSTEM_PROCESSOR "x86_64") |
|
|
|
set(triple "x86_64-unknown-freebsd12") |
|
|
|
elseif (ILLUMOS) |
|
|
|
@ -60,7 +68,7 @@ if(DEFINED ENV{TOOLCHAIN}) |
|
|
|
endif() |
|
|
|
|
|
|
|
# Specify include paths |
|
|
|
if(DEFINED TIZEN_TOOLCHAIN) |
|
|
|
if(TIZEN) |
|
|
|
if(TARGET_ARCH_NAME STREQUAL "arm") |
|
|
|
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) |
|
|
|
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7hl-tizen-linux-gnueabihf) |
|
|
|
@ -75,7 +83,7 @@ if(DEFINED TIZEN_TOOLCHAIN) |
|
|
|
endif() |
|
|
|
endif() |
|
|
|
|
|
|
|
if("$ENV{__DistroRid}" MATCHES "android.*") |
|
|
|
if(ANDROID) |
|
|
|
if(TARGET_ARCH_NAME STREQUAL "arm") |
|
|
|
set(ANDROID_ABI armeabi-v7a) |
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "arm64") |
|
|
|
@ -83,7 +91,9 @@ if("$ENV{__DistroRid}" MATCHES "android.*") |
|
|
|
endif() |
|
|
|
|
|
|
|
# extract platform number required by the NDK's toolchain |
|
|
|
string(REGEX REPLACE ".*\\.([0-9]+)-.*" "\\1" ANDROID_PLATFORM "$ENV{__DistroRid}") |
|
|
|
file(READ "${CROSS_ROOTFS}/android_platform" RID_FILE_CONTENTS) |
|
|
|
string(REPLACE "RID=" "" ANDROID_RID "${RID_FILE_CONTENTS}") |
|
|
|
string(REGEX REPLACE ".*\\.([0-9]+)-.*" "\\1" ANDROID_PLATFORM "${ANDROID_RID}") |
|
|
|
|
|
|
|
set(ANDROID_TOOLCHAIN clang) |
|
|
|
set(FEATURE_EVENT_TRACE 0) # disable event trace as there is no lttng-ust package in termux repository |
|
|
|
@ -92,7 +102,7 @@ if("$ENV{__DistroRid}" MATCHES "android.*") |
|
|
|
|
|
|
|
# include official NDK toolchain script |
|
|
|
include(${CROSS_ROOTFS}/../build/cmake/android.toolchain.cmake) |
|
|
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") |
|
|
|
elseif(FREEBSD) |
|
|
|
# we cross-compile by instructing clang |
|
|
|
set(CMAKE_C_COMPILER_TARGET ${triple}) |
|
|
|
set(CMAKE_CXX_COMPILER_TARGET ${triple}) |
|
|
|
@ -152,20 +162,20 @@ function(add_toolchain_linker_flag Flag) |
|
|
|
set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT} ${Flag}" PARENT_SCOPE) |
|
|
|
endfunction() |
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux") |
|
|
|
if(LINUX) |
|
|
|
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib/${TOOLCHAIN}") |
|
|
|
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/${TOOLCHAIN}") |
|
|
|
endif() |
|
|
|
|
|
|
|
if(TARGET_ARCH_NAME STREQUAL "arm" OR TARGET_ARCH_NAME STREQUAL "armel") |
|
|
|
if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only |
|
|
|
if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") |
|
|
|
if(TIZEN) |
|
|
|
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") |
|
|
|
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") |
|
|
|
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") |
|
|
|
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") |
|
|
|
endif() |
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "arm64") |
|
|
|
if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only |
|
|
|
if(TIZEN) |
|
|
|
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") |
|
|
|
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64") |
|
|
|
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64") |
|
|
|
@ -184,7 +194,7 @@ endif() |
|
|
|
|
|
|
|
# Specify compile options |
|
|
|
|
|
|
|
if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x)$" AND NOT "$ENV{__DistroRid}" MATCHES "android.*") OR ILLUMOS) |
|
|
|
if((TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64|s390x)$" AND NOT ANDROID) OR ILLUMOS) |
|
|
|
set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) |
|
|
|
set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) |
|
|
|
set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) |
|
|
|
@ -211,7 +221,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") |
|
|
|
add_compile_options(-Wno-error=unused-command-line-argument) |
|
|
|
endif() |
|
|
|
|
|
|
|
if(DEFINED TIZEN_TOOLCHAIN) |
|
|
|
if(TIZEN) |
|
|
|
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64)$") |
|
|
|
add_compile_options(-Wno-deprecated-declarations) # compile-time option |
|
|
|
add_compile_options(-D__extern_always_inline=inline) # compile-time option |
|
|
|
|