CMake variable: TARGET_ARCH (#40)
author오형석/동작제어Lab(SR)/Senior Engineer/삼성전자 <hseok82.oh@samsung.com>
Wed, 7 Mar 2018 01:54:36 +0000 (10:54 +0900)
committer박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Wed, 7 Mar 2018 01:54:36 +0000 (10:54 +0900)
* CMake variable: TARGET_ARCH

Define and use TARGET_ARCH in CMake
Remain HOST_ARCH for cross-architecture build and run (not used yet)

* Define TARGET_OS

Define TARGET_OS to avoid confusion about target environment

Signed-off-by: Hyeongseok Oh <hseok82.oh@samsung.com>
CMakeLists.txt
Makefile

index 6a04e31..69d2c20 100644 (file)
@@ -13,6 +13,11 @@ if(NOT HOST_ARCH OR "${HOST_ARCH}" STREQUAL "")
   set(HOST_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR})
 endif()
 
+# set target platform to run
+if(NOT TARGET_ARCH OR "${TARGET_ARCH}" STREQUAL "")
+  set(TARGET_ARCH "${HOST_ARCH}")
+endif()
+
 if("${HOST_ARCH}" STREQUAL "x86_64")
   set(HOST_ARCH_BASE ${HOST_ARCH})
 elseif("${HOST_ARCH}" STREQUAL "armv7l")
@@ -21,15 +26,26 @@ else()
   message(FATAL_ERROR "'${HOST_ARCH}' architecture is not supported")
 endif()
 
+if("${TARGET_ARCH}" STREQUAL "x86_64")
+  set(TARGET_ARCH_BASE ${TARGET_ARCH})
+elseif("${TARGET_ARCH}" STREQUAL "armv7l")
+  set(TARGET_ARCH_BASE "arm")
+else()
+  message(FATAL_ERROR "'${TARGET_ARCH}' architecture is not supported")
+endif()
+
 # TODO add Tizen
+# We don't allow cross-os build now
 set(HOST_OS "linux")
+set(TARGET_OS ${HOST_OS})
 
-# host platform name
+# host & target platform name
 set(HOST_PLATFORM "${HOST_ARCH}-${HOST_OS}")
+set(TARGET_PLATFORM "${TARGET_ARCH}-${TARGET_OS}")
 
 # platform specific options
-include("cmake/os/${HOST_OS}/option.cmake")
-include("cmake/arch/${HOST_ARCH_BASE}/option_${HOST_ARCH}.cmake")
+include("cmake/os/${TARGET_OS}/option.cmake")
+include("cmake/arch/${TARGET_ARCH_BASE}/option_${TARGET_ARCH}.cmake")
 
 # add common flags
 foreach(FLAG ${FLAGS_COMMON})
index e15dae0..34b29bf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,7 @@ configure_internal:
        mkdir -p $(BUILD_ROOT)
        cmake -B$(CURDIR)/$(BUILD_ROOT) -H$(CURDIR) \
                -DCMAKE_INSTALL_PREFIX=$(INSTALL_PATH) \
-               -DCMAKE_BUILD_TYPE=$(BUILD_TYPE_LC) -DHOST_ARCH=$(TARGET_ARCH_LC) \
+               -DCMAKE_BUILD_TYPE=$(BUILD_TYPE_LC) -DTARGET_ARCH=$(TARGET_ARCH_LC) \
                -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE)
        touch $(TIMESTAMP_CONFIGURE)