diff options
Diffstat (limited to 'cmake/toolchain-common.cmake')
-rw-r--r-- | cmake/toolchain-common.cmake | 46 |
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) |