mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-21 01:12:11 +00:00
cmake use standard mechanisms for settings flags
This commit is contained in:
committed by
David Sidrane
parent
11be2b8873
commit
3e0a3559a9
@@ -1,6 +1,6 @@
|
||||
|
||||
set(cpu_flags "-mcpu=cortex-a53 -mfpu=neon -mfloat-abi=hard")
|
||||
|
||||
set(CMAKE_C_FLAGS "${cpu_flags}")
|
||||
set(CMAKE_CXX_FLAGS "${cpu_flags}")
|
||||
set(CMAKE_ASM_FLAGS "${cpu_flags} -D__ASSEMBLY__")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${cpu_flags}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${cpu_flags}")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${cpu_flags} -D__ASSEMBLY__")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
set(cpu_flags "-mcpu=cortex-a9 -mfpu=neon-vfpv3 -mfloat-abi=hard -mthumb-interwork")
|
||||
|
||||
set(CMAKE_C_FLAGS "${cpu_flags}")
|
||||
set(CMAKE_CXX_FLAGS "${cpu_flags}")
|
||||
set(CMAKE_ASM_FLAGS "${cpu_flags} -D__ASSEMBLY__")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${cpu_flags}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${cpu_flags}")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${cpu_flags} -D__ASSEMBLY__")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
set(cpu_flags "-mcpu=cortex-a8 -mfpu=neon-vfpv3 -mfloat-abi=hard -mthumb-interwork")
|
||||
|
||||
set(CMAKE_C_FLAGS "${cpu_flags}")
|
||||
set(CMAKE_CXX_FLAGS "${cpu_flags}")
|
||||
set(CMAKE_ASM_FLAGS "${cpu_flags} -D__ASSEMBLY__")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${cpu_flags}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${cpu_flags}")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${cpu_flags} -D__ASSEMBLY__")
|
||||
|
||||
@@ -47,11 +47,6 @@
|
||||
|
||||
include(px4_base)
|
||||
|
||||
# This makes it possible to dynamically load code which depends on symbols
|
||||
# inside the px4 executable.
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
set(CMAKE_ENABLE_EXPORTS ON)
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_posix_generate_builtin_commands
|
||||
@@ -215,65 +210,10 @@ endfunction()
|
||||
# Set the posix build flags.
|
||||
#
|
||||
# Usage:
|
||||
# px4_os_add_flags(
|
||||
# C_FLAGS <inout-variable>
|
||||
# CXX_FLAGS <inout-variable>
|
||||
# OPTIMIZATION_FLAGS <inout-variable>
|
||||
# EXE_LINKER_FLAGS <inout-variable>
|
||||
# INCLUDE_DIRS <inout-variable>
|
||||
# LINK_DIRS <inout-variable>
|
||||
# DEFINITIONS <inout-variable>)
|
||||
#
|
||||
# Input:
|
||||
# BOARD : flags depend on board/posix config
|
||||
#
|
||||
# Input/Output: (appends to existing variable)
|
||||
# C_FLAGS : c compile flags variable
|
||||
# CXX_FLAGS : c++ compile flags variable
|
||||
# OPTIMIZATION_FLAGS : optimization compile flags variable
|
||||
# EXE_LINKER_FLAGS : executable linker flags variable
|
||||
# INCLUDE_DIRS : include directories
|
||||
# LINK_DIRS : link directories
|
||||
# DEFINITIONS : definitions
|
||||
#
|
||||
# Note that EXE_LINKER_FLAGS is not suitable for adding libraries because
|
||||
# these flags are added before any of the object files and static libraries.
|
||||
# Add libraries in src/firmware/posix/CMakeLists.txt.
|
||||
#
|
||||
# Example:
|
||||
# px4_os_add_flags(
|
||||
# C_FLAGS CMAKE_C_FLAGS
|
||||
# CXX_FLAGS CMAKE_CXX_FLAGS
|
||||
# OPTIMIZATION_FLAGS optimization_flags
|
||||
# EXE_LINKER_FLAG CMAKE_EXE_LINKER_FLAGS
|
||||
# INCLUDES <list>)
|
||||
# px4_os_add_flags()
|
||||
#
|
||||
function(px4_os_add_flags)
|
||||
|
||||
set(inout_vars
|
||||
C_FLAGS CXX_FLAGS OPTIMIZATION_FLAGS EXE_LINKER_FLAGS INCLUDE_DIRS LINK_DIRS DEFINITIONS)
|
||||
|
||||
px4_parse_function_args(
|
||||
NAME px4_os_add_flags
|
||||
ONE_VALUE ${inout_vars} BOARD
|
||||
REQUIRED ${inout_vars} BOARD
|
||||
ARGN ${ARGN})
|
||||
|
||||
include(px4_add_common_flags)
|
||||
px4_add_common_flags(
|
||||
BOARD ${PX4_BOARD}
|
||||
C_FLAGS ${C_FLAGS}
|
||||
CXX_FLAGS ${CXX_FLAGS}
|
||||
OPTIMIZATION_FLAGS ${OPTIMIZATION_FLAGS}
|
||||
EXE_LINKER_FLAGS ${EXE_LINKER_FLAGS}
|
||||
INCLUDE_DIRS ${INCLUDE_DIRS}
|
||||
LINK_DIRS ${LINK_DIRS}
|
||||
DEFINITIONS ${DEFINITIONS})
|
||||
|
||||
set(added_c_flags)
|
||||
set(added_cxx_flags)
|
||||
set(added_exe_linker_flags)
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_POSIX
|
||||
-Dnoreturn_function=__attribute__\(\(noreturn\)\)
|
||||
@@ -281,177 +221,107 @@ function(px4_os_add_flags)
|
||||
|
||||
include_directories(platforms/posix/include)
|
||||
|
||||
if(UNIX AND APPLE)
|
||||
add_definitions(
|
||||
-D__PX4_DARWIN
|
||||
-D__DF_DARWIN
|
||||
)
|
||||
if ("${PX4_BOARD}" MATCHES "sitl")
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
message(FATAL_ERROR "PX4 Firmware requires XCode 8 or newer on Mac OS. Version installed on this system: ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND uname -v OUTPUT_VARIABLE DARWIN_VERSION)
|
||||
string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
|
||||
# message(STATUS "PX4 Darwin Version: ${DARWIN_VERSION}")
|
||||
if (DARWIN_VERSION LESS 16)
|
||||
if(UNIX AND APPLE)
|
||||
add_definitions(
|
||||
-DCLOCK_MONOTONIC=1
|
||||
-DCLOCK_REALTIME=0
|
||||
-D__PX4_APPLE_LEGACY
|
||||
-D__PX4_DARWIN
|
||||
-D__DF_DARWIN
|
||||
)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
message(FATAL_ERROR "PX4 Firmware requires XCode 8 or newer on Mac OS. Version installed on this system: ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND uname -v OUTPUT_VARIABLE DARWIN_VERSION)
|
||||
string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
|
||||
# message(STATUS "PX4 Darwin Version: ${DARWIN_VERSION}")
|
||||
if (DARWIN_VERSION LESS 16)
|
||||
add_definitions(
|
||||
-DCLOCK_MONOTONIC=1
|
||||
-DCLOCK_REALTIME=0
|
||||
-D__PX4_APPLE_LEGACY
|
||||
)
|
||||
endif()
|
||||
|
||||
elseif(CYGWIN)
|
||||
add_definitions(
|
||||
-D__PX4_CYGWIN
|
||||
-D_GNU_SOURCE
|
||||
-D__USE_LINUX_IOCTL_DEFS
|
||||
-U__CUSTOM_FILE_IO__
|
||||
)
|
||||
else()
|
||||
add_definitions(
|
||||
-D__PX4_LINUX
|
||||
-D__DF_LINUX
|
||||
)
|
||||
endif()
|
||||
|
||||
elseif(CYGWIN)
|
||||
add_definitions(
|
||||
-D__PX4_CYGWIN
|
||||
-D_GNU_SOURCE
|
||||
-D__USE_LINUX_IOCTL_DEFS
|
||||
-U __CUSTOM_FILE_IO__
|
||||
)
|
||||
else()
|
||||
elseif (("${PX4_BOARD}" MATCHES "navio2") OR ("${PX4_BOARD}" MATCHES "raspberrypi"))
|
||||
|
||||
#TODO: move to board support
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_LINUX
|
||||
|
||||
# For DriverFramework
|
||||
-D__DF_LINUX
|
||||
)
|
||||
endif()
|
||||
|
||||
# This block sets added_c_flags (appends to others).
|
||||
if ("${PX4_BOARD}" STREQUAL "eagle")
|
||||
|
||||
if ("$ENV{HEXAGON_ARM_SYSROOT}" STREQUAL "")
|
||||
message(FATAL_ERROR "HEXAGON_ARM_SYSROOT not set")
|
||||
else()
|
||||
set(HEXAGON_ARM_SYSROOT $ENV{HEXAGON_ARM_SYSROOT})
|
||||
endif()
|
||||
|
||||
# Add the toolchain specific flags
|
||||
list(APPEND added_c_flags --sysroot=${HEXAGON_ARM_SYSROOT})
|
||||
list(APPEND added_cxx_flags --sysroot=${HEXAGON_ARM_SYSROOT})
|
||||
|
||||
# TODO: Wmissing-field-initializers ignored on older toolchain, can be removed eventually
|
||||
list(APPEND added_cxx_flags -Wno-missing-field-initializers)
|
||||
|
||||
list(APPEND added_exe_linker_flags
|
||||
-Wl,-rpath-link,${HEXAGON_ARM_SYSROOT}/usr/lib
|
||||
-Wl,-rpath-link,${HEXAGON_ARM_SYSROOT}/lib
|
||||
--sysroot=${HEXAGON_ARM_SYSROOT}
|
||||
)
|
||||
# This block sets added_c_flags (appends to others).
|
||||
elseif ("${PX4_BOARD}" STREQUAL "excelsior")
|
||||
|
||||
if ("$ENV{HEXAGON_ARM_SYSROOT}" STREQUAL "")
|
||||
message(FATAL_ERROR "HEXAGON_ARM_SYSROOT not set")
|
||||
else()
|
||||
set(HEXAGON_ARM_SYSROOT $ENV{HEXAGON_ARM_SYSROOT})
|
||||
endif()
|
||||
|
||||
set(excelsior_flags --sysroot=${HEXAGON_ARM_SYSROOT}/lib32-apq8096 -mfloat-abi=softfp -mfpu=neon -mthumb-interwork)
|
||||
|
||||
# Add the toolchain specific flags
|
||||
list(APPEND added_c_flags ${excelsior_flags})
|
||||
list(APPEND added_cxx_flags ${excelsior_flags})
|
||||
|
||||
list(APPEND added_exe_linker_flags
|
||||
-Wl,-rpath-link,${HEXAGON_ARM_SYSROOT}/lib32-apq8096/usr/lib
|
||||
-Wl,-rpath-link,${HEXAGON_ARM_SYSROOT}/lib32-apq8096/lib
|
||||
${excelsior_flags}
|
||||
)
|
||||
|
||||
elseif ("${PX4_BOARD}" STREQUAL "rpi")
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_POSIX_RPI
|
||||
-D__DF_LINUX # For DriverFramework
|
||||
-D__DF_RPI # For DriverFramework
|
||||
-D__DF_RPI
|
||||
)
|
||||
|
||||
set(RPI_COMPILE_FLAGS -mcpu=cortex-a53 -mfpu=neon -mfloat-abi=hard)
|
||||
list(APPEND added_c_flags ${RPI_COMPILE_FLAGS})
|
||||
list(APPEND added_cxx_flags ${RPI_COMPILE_FLAGS})
|
||||
elseif ("${PX4_BOARD}" MATCHES "bebop")
|
||||
|
||||
# TODO: Wmissing-field-initializers ignored on older toolchain, can be removed eventually
|
||||
list(APPEND added_cxx_flags -Wno-missing-field-initializers)
|
||||
|
||||
find_program(CXX_COMPILER_PATH ${CMAKE_CXX_COMPILER})
|
||||
|
||||
GET_FILENAME_COMPONENT(CXX_COMPILER_PATH ${CXX_COMPILER_PATH} DIRECTORY)
|
||||
GET_FILENAME_COMPONENT(CXX_COMPILER_PATH "${CXX_COMPILER_PATH}/../" ABSOLUTE)
|
||||
|
||||
IF ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(CLANG_COMPILE_FLAGS
|
||||
--target=arm-pc-linux-gnueabihf
|
||||
-ccc-gcc-name arm-linux-gnueabihf-gcc
|
||||
--sysroot=${CXX_COMPILER_PATH}/arm-linux-gnueabihf/libc
|
||||
-I${CXX_COMPILER_PATH}/arm-linux-gnueabihf/libc/usr/include/
|
||||
)
|
||||
|
||||
list(APPEND added_c_flags ${CLANG_COMPILE_FLAGS})
|
||||
list(APPEND added_cxx_flags ${CLANG_COMPILE_FLAGS})
|
||||
list(APPEND added_exe_linker_flags ${POSIX_CMAKE_EXE_LINKER_FLAGS} ${CLANG_COMPILE_FLAGS}
|
||||
-B${CXX_COMPILER_PATH}/arm-linux-gnueabihf/libc/usr/lib
|
||||
-L${CXX_COMPILER_PATH}/arm-linux-gnueabihf/libc/usr/lib
|
||||
)
|
||||
ENDIF()
|
||||
elseif ("${PX4_BOARD}" STREQUAL "bebop")
|
||||
#TODO: move to board support
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_POSIX_BEBOP
|
||||
-D__DF_LINUX # Define needed DriverFramework
|
||||
-D__DF_BEBOP # Define needed DriverFramework
|
||||
)
|
||||
-D__PX4_LINUX
|
||||
-D__PX4_POSIX_BEBOP # TODO: remove
|
||||
|
||||
# TODO: Wmissing-field-initializers ignored on older toolchain, can be removed eventually
|
||||
list(APPEND added_cxx_flags -Wno-missing-field-initializers)
|
||||
# For DriverFramework
|
||||
-D__DF_LINUX
|
||||
-D__DF_BEBOP
|
||||
)
|
||||
|
||||
elseif ("${PX4_BOARD}" MATCHES "aerotenna_ocpoc")
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_POSIX_OCPOC
|
||||
-D__DF_LINUX # For DriverFramework
|
||||
-D__DF_OCPOC # For DriverFramework
|
||||
-D__PX4_POSIX
|
||||
)
|
||||
|
||||
elseif ("${PX4_BOARD}" STREQUAL "beaglebone_blue")
|
||||
#TODO: move to board support
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_POSIX_BBBLUE
|
||||
-D__PX4_POSIX
|
||||
-D__DF_LINUX # For DriverFramework
|
||||
-D__DF_BBBLUE # For DriverFramework
|
||||
-DRC_AUTOPILOT_EXT # Enable extensions in Robotics Cape Library
|
||||
#-DDEBUG_BUILD
|
||||
-D__PX4_LINUX
|
||||
-D__PX4_POSIX_OCPOC # TODO: remove
|
||||
|
||||
#optional __DF_BBBLUE_USE_RC_BMP280_IMP
|
||||
-D__DF_BBBLUE_USE_RC_BMP280_IMP
|
||||
-D__PX4_BBBLUE_DEFAULT_MAVLINK_WIFI="wlan"
|
||||
# For DriverFramework
|
||||
-D__DF_LINUX
|
||||
-D__DF_OCPOC
|
||||
)
|
||||
|
||||
set(BBBLUE_COMPILE_FLAGS -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -mtune=cortex-a8)
|
||||
list(APPEND added_c_flags ${BBBLUE_COMPILE_FLAGS})
|
||||
list(APPEND added_cxx_flags ${BBBLUE_COMPILE_FLAGS})
|
||||
elseif ("${PX4_BOARD}" MATCHES "beaglebone_blue")
|
||||
#TODO: move to board support
|
||||
add_definitions(
|
||||
-D__PX4_LINUX
|
||||
-D__PX4_POSIX_BBBLUE # TODO: remove
|
||||
|
||||
# For DriverFramework
|
||||
-D__DF_LINUX
|
||||
-D__DF_BBBLUE
|
||||
-D__DF_BBBLUE_USE_RC_BMP280_IMP # optional
|
||||
|
||||
-DRC_AUTOPILOT_EXT # Enable extensions in Robotics Cape Library, TODO: remove
|
||||
)
|
||||
|
||||
set(LIBROBOTCONTROL_INSTALL_DIR $ENV{LIBROBOTCONTROL_INSTALL_DIR})
|
||||
|
||||
# TODO: Wmissing-field-initializers ignored on older toolchain, can be removed eventually
|
||||
#
|
||||
# On cross compile host system and native build system:
|
||||
# a) select and define LIBROBOTCONTROL_INSTALL_DIR environment variable so that
|
||||
# other unwanted headers will not be included
|
||||
# b) install robotcontrol.h and rc/* into $LIBROBOTCONTROL_INSTALL_DIR/include
|
||||
# c) install pre-built native (ARM) version of librobotcontrol.* into $LIBROBOTCONTROL_INSTALL_DIR/lib
|
||||
list(APPEND added_cxx_flags -I${LIBROBOTCONTROL_INSTALL_DIR}/include -Wno-missing-field-initializers)
|
||||
list(APPEND added_c_flags -I${LIBROBOTCONTROL_INSTALL_DIR}/include)
|
||||
|
||||
list(APPEND added_exe_linker_flags -L${LIBROBOTCONTROL_INSTALL_DIR}/lib)
|
||||
endif()
|
||||
add_compile_options(-I${LIBROBOTCONTROL_INSTALL_DIR}/include)
|
||||
|
||||
# output
|
||||
foreach(var ${inout_vars})
|
||||
string(TOLOWER ${var} lower_var)
|
||||
set(${${var}} ${${${var}}} ${added_${lower_var}} PARENT_SCOPE)
|
||||
endforeach()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${LIBROBOTCONTROL_INSTALL_DIR}/lib")
|
||||
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
@@ -90,9 +90,10 @@ foreach(viewer ${viewers})
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
px4_join(OUT posix_vmd_make_target_list LIST ${all_posix_vmd_make_targets} GLUE "\\n")
|
||||
string(REPLACE ";" "," posix_vmd_make_target_list "${all_posix_vmd_make_targets}")
|
||||
|
||||
add_custom_target(list_vmd_make_targets
|
||||
COMMAND sh -c "printf \"${posix_vmd_make_target_list}\\n\""
|
||||
COMMENT "List of acceptable '${CONFIG}' <viewer_model_debugger> targets:"
|
||||
COMMENT "List of acceptable '${PX4_BOARD}' <viewer_model_debugger> targets:"
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user