|
|
@@ -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,6 +34,9 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm")
|
|
|
else()
|
|
|
set(TOOLCHAIN "arm-linux-gnueabihf")
|
|
|
endif()
|
|
|
+ if(TIZEN)
|
|
|
+ set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0")
|
|
|
+ endif()
|
|
|
elseif(TARGET_ARCH_NAME STREQUAL "arm64")
|
|
|
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
|
|
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl)
|
|
|
@@ -33,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")
|
|
|
@@ -42,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)
|
|
|
@@ -57,7 +68,11 @@ 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)
|
|
|
+ endif()
|
|
|
if(TARGET_ARCH_NAME STREQUAL "armel")
|
|
|
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
|
|
|
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
|
|
|
@@ -68,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")
|
|
|
@@ -76,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
|
|
|
@@ -85,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})
|
|
|
@@ -145,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 "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")
|
|
|
@@ -177,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})
|
|
|
@@ -204,8 +221,8 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
|
|
add_compile_options(-Wno-error=unused-command-line-argument)
|
|
|
endif()
|
|
|
|
|
|
-if(DEFINED TIZEN_TOOLCHAIN)
|
|
|
- if(TARGET_ARCH_NAME MATCHES "^(armel|arm64)$")
|
|
|
+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
|
|
|
endif()
|