summaryrefslogtreecommitdiff
path: root/cmake/toolchain-common.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/toolchain-common.cmake')
-rw-r--r--cmake/toolchain-common.cmake46
1 files changed, 37 insertions, 9 deletions
diff --git a/cmake/toolchain-common.cmake b/cmake/toolchain-common.cmake
index 059c604235..765487267f 100644
--- a/cmake/toolchain-common.cmake
+++ b/cmake/toolchain-common.cmake
@@ -2,21 +2,49 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-set(CMAKE_C_COMPILER ${PREFIX}clang)
-set(CMAKE_CXX_COMPILER ${PREFIX}clang++)
-set(CMAKE_LINKER ${PREFIX}ld.lld)
-set(CMAKE_AR ${PREFIX}ar)
-set(CMAKE_NM ${PREFIX}nm)
-set(CMAKE_OBJCOPY ${PREFIX}objcopy)
-set(CMAKE_OBJDUMP ${PREFIX}objdump)
-set(CMAKE_RANLIB ${PREFIX}ranlib)
-set(CMAKE_READELF ${PREFIX}readelf)
+# Input variables:
+# CROSS_COMPILE: the prefix of the cross compiler.
+# CC_NAME: the name of the C compiler.
+# CXX_NAME: the name of the C++ compiler.
+set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
+
+set(CMAKE_C_COMPILER "${CROSS_COMPILE}${CC_NAME}")
+set(CMAKE_CXX_COMPILER "${CROSS_COMPILE}${CXX_NAME}")
+set(CMAKE_OBJCOPY "${CROSS_COMPILE}objcopy")
+set(CMAKE_OBJDUMP "${CROSS_COMPILE}objdump")
+set(CMAKE_READELF "${CROSS_COMPILE}readelf")
+
+if ("${CC_NAME}" STREQUAL "gcc")
+set(CMAKE_LINKER "${CROSS_COMPILE}ld")
+else()
+set(CMAKE_LINKER "${CROSS_COMPILE}ld.lld")
+endif()
+
+# This is only for host unittests build.
+if ("${CC_NAME}" STREQUAL gcc AND "${CMAKE_SYSROOT}" STREQUAL "")
+set(CMAKE_AR "${CROSS_COMPILE}gcc-ar")
+set(CMAKE_NM "${CROSS_COMPILE}gcc-nm")
+set(CMAKE_RANLIB "${CROSS_COMPILE}gcc-ranlib")
+else()
+set(CMAKE_AR "${CROSS_COMPILE}ar")
+set(CMAKE_NM "${CROSS_COMPILE}nm")
+set(CMAKE_RANLIB "${CROSS_COMPILE}ranlib")
+endif()
+
+if ("${CC_NAME}" STREQUAL gcc)
+add_compile_options(-Os)
+else()
add_compile_options(-Oz)
+endif()
+# Enable Link Time Optimization.
add_compile_options(-flto)
add_link_options(-flto)
+# See https://www.chromium.org/chromium-os/build/c-exception-support
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables")
+
set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)