diff options
author | Yi Chou <yich@google.com> | 2023-03-15 11:24:45 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-04-18 05:00:48 +0000 |
commit | 291cd044f5e62db9f66e784b41c6541ab22811c6 (patch) | |
tree | a127e10426fbce004e34c590dfc1f04aee354faf | |
parent | 4d4780fa4a2d800ef0ee8442bff9ebb80e05b349 (diff) | |
download | chrome-ec-291cd044f5e62db9f66e784b41c6541ab22811c6.tar.gz |
cmake: Support GNU compilers in the common toolchain file
Some platform are using the GNU compilers. We should support them
properly.
BUG=b:248508087
TEST=make runhosttests -j
TEST=make buildall -j
BRANCH=none
Change-Id: Ia8d85bacf00c49a63f6f0fe665ea1309cc84b1f1
Signed-off-by: Yi Chou <yich@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4336873
Reviewed-by: Tom Hughes <tomhughes@chromium.org>
-rw-r--r-- | cmake/toolchain-armv7m.cmake | 6 | ||||
-rw-r--r-- | cmake/toolchain-common.cmake | 43 |
2 files changed, 39 insertions, 10 deletions
diff --git a/cmake/toolchain-armv7m.cmake b/cmake/toolchain-armv7m.cmake index 38d8f761d8..dacb265879 100644 --- a/cmake/toolchain-armv7m.cmake +++ b/cmake/toolchain-armv7m.cmake @@ -5,9 +5,13 @@ set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR arm) -set(PREFIX armv7m-cros-eabi-) +set(CROSS_COMPILE armv7m-cros-eabi-) set(CMAKE_SYSROOT /usr/armv7m-cros-eabi/) +set(CC_NAME clang) +set(CXX_NAME clang++) + +set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CROSS_COMPILE CC_NAME CXX_NAME) include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchain-common.cmake") add_link_options(-lclang_rt.builtins-armv7m) diff --git a/cmake/toolchain-common.cmake b/cmake/toolchain-common.cmake index 059c604235..347a57f76d 100644 --- a/cmake/toolchain-common.cmake +++ b/cmake/toolchain-common.cmake @@ -2,18 +2,43 @@ # 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) |