mirror of
https://github.com/apache/nuttx.git
synced 2026-08-02 12:49:00 +00:00
the -fmacro-prefix-map compile option is gcc/clang/armclang specific compile option, and greenhills do not recognize this compile option, if we add this option is CMakeLists.txt, the following warning will be reported when each file is being compiled: ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/nuttx=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/apps=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/vendor/flagchip/boards/mann/dcu/fc4150f1m-labm_a1=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/vendor/flagchip/chips/fc4150=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/nuttx=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/apps=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/vendor/flagchip/boards/mann/dcu/fc4150f1m-labm_a1=" passed to linker ccarm: Warning: Unknown option "-fmacro-prefix-map=/home/guoshichao/work_profile/vela_os/vela_car_5/vendor/flagchip/chips/fc4150=" passed to linker Signed-off-by: guoshichao <guoshichao@xiaomi.com>
128 lines
4.1 KiB
CMake
128 lines
4.1 KiB
CMake
# ##############################################################################
|
|
# cmake/nuttx_toolchain.cmake
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
|
|
# license agreements. See the NOTICE file distributed with this work for
|
|
# additional information regarding copyright ownership. The ASF licenses this
|
|
# file to you under the Apache License, Version 2.0 (the "License"); you may not
|
|
# use this file except in compliance with the License. You may obtain a copy of
|
|
# the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations under
|
|
# the License.
|
|
#
|
|
# ##############################################################################
|
|
|
|
# This file is used to set the parts that need common settings in the Toolchain
|
|
# file. Such as preprocessing process, link command, toolchain library method
|
|
# search. If the manual of the newly supported toolchain is different, you can
|
|
# override these methods in the toolchain
|
|
|
|
if("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
|
|
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.9)
|
|
# force color for gcc > 4.9
|
|
add_compile_options(-fdiagnostics-color=always)
|
|
endif()
|
|
endif()
|
|
|
|
# Cmake build provide absolute paths to compile files. If __FILE__ macros are
|
|
# used in the source code(ASSERT), the binary will contain many invalid paths.
|
|
# This saves some memory, stops exposing build systems locations in binaries,
|
|
# make failure logs more deterministic and most importantly makes builds more
|
|
# failure logs more deterministic and most importantly makes builds more
|
|
# deterministic. Debuggers usually have a path mapping feature to ensure the
|
|
# files are still found.
|
|
if((NOT MSVC) AND (NOT CONFIG_ARCH_TOOLCHAIN_GHS))
|
|
if(CONFIG_OUTPUT_STRIP_PATHS)
|
|
add_compile_options(-fmacro-prefix-map=${NUTTX_DIR}=)
|
|
add_compile_options(-fmacro-prefix-map=${NUTTX_APPS_DIR}=)
|
|
add_compile_options(-fmacro-prefix-map=${NUTTX_BOARD_ABS_DIR}=)
|
|
add_compile_options(-fmacro-prefix-map=${NUTTX_CHIP_ABS_DIR}=)
|
|
endif()
|
|
endif()
|
|
|
|
# Support CMake to define additional configuration options
|
|
|
|
if(EXTRA_FLAGS)
|
|
add_compile_options(${EXTRA_FLAGS})
|
|
endif()
|
|
|
|
# ~~~
|
|
# nuttx_generate_preprocess_target
|
|
#
|
|
# Description:
|
|
# because different toolchains have different preprocessing instructions,
|
|
# we define the COMMON preprocessing target here.
|
|
#
|
|
# Prototype:
|
|
# nuttx_generate_preprocess_target(
|
|
# SOURCE_FILE
|
|
# ${single_source_file}
|
|
# TARGET_FILE
|
|
# ${single_target_output}
|
|
# DEPENDS
|
|
# ${option_depned_target})
|
|
# ~~~
|
|
|
|
#
|
|
if(NOT NUTTX_TOOLCHAIN_PREPROCESS_DEFINED)
|
|
function(nuttx_generate_preprocess_target)
|
|
|
|
# parse arguments into variables
|
|
|
|
nuttx_parse_function_args(
|
|
FUNC
|
|
nuttx_generate_preprocess_target
|
|
ONE_VALUE
|
|
SOURCE_FILE
|
|
TARGET_FILE
|
|
MULTI_VALUE
|
|
DEPENDS
|
|
REQUIRED
|
|
SOURCE_FILE
|
|
TARGET_FILE
|
|
ARGN
|
|
${ARGN})
|
|
|
|
add_custom_command(
|
|
OUTPUT ${TARGET_FILE}
|
|
COMMAND ${PREPROCESS} -I${CMAKE_BINARY_DIR}/include
|
|
-I${NUTTX_CHIP_ABS_DIR} ${SOURCE_FILE} > ${TARGET_FILE}
|
|
DEPENDS ${SOURCE_FILE} ${DEPENDS})
|
|
|
|
endfunction()
|
|
endif()
|
|
|
|
# ~~~
|
|
# nuttx_find_toolchain_lib
|
|
#
|
|
# Description:
|
|
# this is general function for finding toolchain libraries.
|
|
#
|
|
# Prototype:
|
|
# nuttx_find_toolchain_lib(${single_toolchain_lib})
|
|
# ~~~
|
|
|
|
if(NOT NUTTX_FIND_TOOLCHAIN_LIB_DEFINED)
|
|
function(nuttx_find_toolchain_lib)
|
|
if(NOT ARGN)
|
|
execute_process(
|
|
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
|
|
--print-libgcc-file-name
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
OUTPUT_VARIABLE extra_lib_path)
|
|
else()
|
|
execute_process(
|
|
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS}
|
|
--print-file-name=${ARGN}
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
OUTPUT_VARIABLE extra_lib_path)
|
|
endif()
|
|
nuttx_add_extra_library(${extra_lib_path})
|
|
endfunction()
|
|
endif()
|