Skip to content

Commit

Permalink
NuttX cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
dagar committed Jun 15, 2017
1 parent bc406a1 commit edee5d1
Show file tree
Hide file tree
Showing 108 changed files with 745 additions and 8,784 deletions.
51 changes: 14 additions & 37 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,8 @@
#
#=============================================================================

if (${CMAKE_VERSION} VERSION_LESS 3.1.0)
message("Not a valid CMake version")
message("On Ubuntu >= 16.04, install or upgrade via:")
message(" sudo apt-get install cmake")
message("")
message("Official website: https://cmake.org/download/")
message(FATAL_ERROR "Update CMake and try again" )
endif()
# check submodules before we do anything
execute_process(COMMAND Tools/check_submodules.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

# Warning: Changing this modifies CMake's internal workings
# and leads to wrong toolchain detection
Expand All @@ -115,15 +109,9 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(PX4_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")

execute_process(
COMMAND Tools/check_submodules.sh
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
)

#=============================================================================
# configuration
#
# must come before project to set toolchain

set(CONFIG "posix_sitl_default" CACHE STRING "desired configuration")

Expand All @@ -145,7 +133,6 @@ if (NOT EXTERNAL_MODULES_LOCATION STREQUAL "")
endif()

list(APPEND CMAKE_MODULE_PATH "${PX4_SOURCE_DIR}/cmake")
message(STATUS "CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
set(config_module "configs/${CONFIG}")
include(${config_module})

Expand Down Expand Up @@ -176,16 +163,17 @@ message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
#
include(common/px4_git)

# version info from git
execute_process(
COMMAND git describe --always --tags
OUTPUT_VARIABLE git_tag
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND Tools/tag_to_version.py --root ${PX4_SOURCE_DIR}
OUTPUT_VARIABLE version
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
)

execute_process(
COMMAND Tools/tag_to_version.py --root ${PX4_SOURCE_DIR}
OUTPUT_VARIABLE git_version
COMMAND git describe --always --tags
OUTPUT_VARIABLE git_tag
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
)

Expand All @@ -203,8 +191,6 @@ px4_add_git_submodule(TARGET git_mavlink2 PATH "mavlink/include/mavlink/v2.0")
px4_add_git_submodule(TARGET git_nuttx PATH "NuttX")
px4_add_git_submodule(TARGET git_uavcan PATH "src/modules/uavcan/libuavcan")

px4_create_git_hash_header()

#=============================================================================

message(STATUS "PX4 VERSION: ${git_tag}")
Expand All @@ -222,16 +208,11 @@ add_definitions(-DBUILD_URI=${BUILD_URI})
# Define GNU standard installation directories
include(GNUInstallDirs)

# Add support for external project building
include(ExternalProject)

# Setup install paths
if (NOT CMAKE_INSTALL_PREFIX)
if (${OS} STREQUAL "posix")
if (${OS} STREQUAL "posix")
if (NOT CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install path prefix" FORCE)
endif()
endif()
if (CMAKE_INSTALL_PREFIX)
message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
endif()

Expand Down Expand Up @@ -358,9 +339,9 @@ px4_os_add_flags(
LINK_DIRS link_dirs
DEFINITIONS definitions)

px4_join(OUT CMAKE_EXE_LINKER_FLAGS LIST "${exe_linker_flags}" GLUE " ")
px4_join(OUT CMAKE_C_FLAGS LIST "${c_flags};${optimization_flags}" GLUE " ")
px4_join(OUT CMAKE_CXX_FLAGS LIST "${cxx_flags};${optimization_flags}" GLUE " ")
px4_join(OUT CMAKE_EXE_LINKER_FLAGS LIST "${CMAKE_EXE_LINKER_FLAGS};${exe_linker_flags}" GLUE " ")
px4_join(OUT CMAKE_C_FLAGS LIST "${CMAKE_C_FLAGS};${c_flags};${optimization_flags}" GLUE " ")
px4_join(OUT CMAKE_CXX_FLAGS LIST "${CMAKE_CXX_FLAGS};${cxx_flags};${optimization_flags}" GLUE " ")

include_directories(${include_dirs})
#message("INCLUDE_DIRS=${include_dirs}")
Expand All @@ -378,7 +359,7 @@ px4_generate_messages(TARGET msg_gen
MSG_FILES ${msg_files}
OS ${OS}
INCLUDES ${msg_include_paths}
DEPENDS git_genmsg git_gencpp prebuild_targets
DEPENDS prebuild_targets
)

px4_generate_airframes_xml(BOARD ${BOARD})
Expand Down Expand Up @@ -453,10 +434,6 @@ set(module_external_libraries "${module_external_libraries}" CACHE INTERNAL "mod

add_subdirectory(src/firmware/${OS})

if (config_io_board)
add_subdirectory(src/modules/px4iofirmware)
endif()

#=============================================================================
# generate custom target to print for all executable and module cmake targets
#
Expand Down
9 changes: 5 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ qgc_firmware: px4fmu_firmware misc_qgc_extra_firmware sizes

# px4fmu NuttX firmware
px4fmu_firmware: \
check_px4io-v1_default \
check_px4io-v2_default \
check_px4fmu-v1_default \
check_px4fmu-v2_default \
check_px4fmu-v3_default \
Expand Down Expand Up @@ -218,14 +220,14 @@ alt_firmware: \
checks_bootloaders: \
check_esc35-v1_bootloader \
check_px4cannode-v1_bootloader \
check_px4esc-v1_bootloader \
check_px4flow-v2_bootloader \
check_s2740vc-v1_bootloader \
# not fitting in flash check_zubaxgnss-v1_bootloader \
check_px4esc-v1_bootloader \
check_zubaxgnss-v1_bootloader \
sizes

sizes:
@-find build_* -name firmware_nuttx -type f | xargs size 2> /dev/null || :
@-find build_* -name *.elf -type f | xargs size 2> /dev/null || :

# All default targets that don't require a special build environment
check: check_posix_sitl_default px4fmu_firmware misc_qgc_extra_firmware alt_firmware checks_bootloaders tests check_format
Expand Down Expand Up @@ -365,7 +367,6 @@ cppcheck: posix_sitl_default

clean:
@rm -rf $(SRC_DIR)/build_*/
-@$(MAKE) --no-print-directory -C NuttX/nuttx clean

submodulesclean:
@git submodule foreach --quiet --recursive git clean -ff -x -d
Expand Down
2 changes: 1 addition & 1 deletion NuttX
Submodule NuttX updated 6 files
+2 −8 .gitmodules
+151 −0 CMakeLists.txt
+0 −1 NxWidgets
+1 −1 apps
+0 −1 misc/tools
+1 −1 nuttx
9 changes: 0 additions & 9 deletions cmake/common/px4_base.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,6 @@ function(px4_add_common_flags)
${PX4_BINARY_DIR}
${PX4_BINARY_DIR}/src
${PX4_BINARY_DIR}/src/modules
${PX4_SOURCE_DIR}/mavlink/include/mavlink
${PX4_SOURCE_DIR}/src
${PX4_SOURCE_DIR}/src/drivers/boards/${BOARD}
${PX4_SOURCE_DIR}/src/include
Expand All @@ -480,14 +479,6 @@ function(px4_add_common_flags)
-D__STDC_FORMAT_MACROS
)

if (NOT (APPLE AND (${CMAKE_C_COMPILER_ID} MATCHES ".*Clang.*")))
set(added_exe_linker_flags
-Wl,--warn-common
-Wl,--gc-sections
#,--print-gc-sections
)
endif()

# output
foreach(var ${inout_vars})
string(TOLOWER ${var} lower_var)
Expand Down
54 changes: 0 additions & 54 deletions cmake/common/px4_git.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -82,57 +82,3 @@ function(px4_add_git_submodule)
DEPENDS ${PX4_BINARY_DIR}/git_init_${NAME}.stamp
)
endfunction()

#=============================================================================
#
# px4_create_git_hash_header
#
# Create a header file containing the git hash of the current tree
#
# Usage:
# px4_create_git_hash_header()
#
# Example:
# px4_create_git_hash_header()
#
function(px4_create_git_hash_header)
px4_parse_function_args(
NAME px4_create_git_hash_header
ARGN ${ARGN})

set(px4_git_ver_header ${PX4_BINARY_DIR}/build_git_version.h)

# check if px4 source is a git repo
if(EXISTS ${PX4_SOURCE_DIR}/.git)
if (IS_DIRECTORY ${PX4_SOURCE_DIR}/.git)
# standard git repo
set(git_dir_path ${PX4_SOURCE_DIR}/.git)
else()
# git submodule
file(READ ${PX4_SOURCE_DIR}/.git git_dir_path)
string(STRIP ${git_dir_path} git_dir_path)
string(REPLACE "gitdir: " "" git_dir_path ${git_dir_path})
get_filename_component(git_dir_path ${git_dir_path} ABSOLUTE)
endif()
else()
message(FATAL_ERROR "is not a git repository")
endif()
if(NOT IS_DIRECTORY "${git_dir_path}")
message(FATAL_ERROR "${git_dir_path} is not a directory")
endif()

set(deps
${PX4_SOURCE_DIR}/Tools/px_update_git_header.py
${git_dir_path}/index
${git_dir_path}/HEAD)

add_custom_command(
OUTPUT ${px4_git_ver_header}
COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_update_git_header.py ${px4_git_ver_header} > ${PX4_BINARY_DIR}/git_header.log
DEPENDS ${deps}
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
COMMENT "Generating git hash header"
)
set_source_files_properties(${px4_git_ver_header} PROPERTIES GENERATED TRUE)
add_custom_target(ver_gen ALL DEPENDS ${px4_git_ver_header})
endfunction()
7 changes: 4 additions & 3 deletions cmake/common/px4_metadata.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ function(px4_generate_messages)
REQUIRED MSG_FILES OS TARGET
ARGN ${ARGN})

if("${config_nuttx_config}" STREQUAL "bootloader")
if("${nuttx_config_type}" STREQUAL "bootloader")
# do nothing for bootloaders
else()

Expand Down Expand Up @@ -191,11 +191,12 @@ function(px4_generate_airframes_xml)
REQUIRED BOARD
ARGN ${ARGN})

add_custom_command(OUTPUT ${PX4_SOURCE_DIR}/airframes.xml
add_custom_command(OUTPUT ${PX4_BINARY_DIR}/airframes.xml
COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_process_airframes.py
-a ${PX4_SOURCE_DIR}/ROMFS/${config_romfs_root}/init.d
--board CONFIG_ARCH_BOARD_${BOARD} --xml
DEPENDS ${PX4_SOURCE_DIR}/Tools/px_process_airframes.py
COMMENT "Creating airframes.xml"
)
add_custom_target(airframes_xml DEPENDS ${PX4_SOURCE_DIR}/airframes.xml)
add_custom_target(airframes_xml DEPENDS ${PX4_BINARY_DIR}/airframes.xml)
endfunction()
22 changes: 0 additions & 22 deletions cmake/configs/nuttx_aerocore2_default.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ include(nuttx/px4_impl_nuttx)

px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)

set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)

set(config_uavcan_num_ifaces 2)

set(config_module_list
Expand Down Expand Up @@ -172,23 +170,3 @@ set(config_extra_builtin_cmds
serdis
sercon
)

set(config_extra_libs
uavcan
uavcan_stm32_driver
)

set(config_io_extra_libs
)

add_custom_target(sercon)
set_target_properties(sercon PROPERTIES
PRIORITY "SCHED_PRIORITY_DEFAULT"
MAIN "sercon" STACK_MAIN "2048"
COMPILE_FLAGS "-Os")

add_custom_target(serdis)
set_target_properties(serdis PROPERTIES
PRIORITY "SCHED_PRIORITY_DEFAULT"
MAIN "serdis" STACK_MAIN "2048"
COMPILE_FLAGS "-Os")
11 changes: 0 additions & 11 deletions cmake/configs/nuttx_aerofc-v1_default.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ include(nuttx/px4_impl_nuttx)

px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)

set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)

set(config_uavcan_num_ifaces 2)

set(config_module_list
Expand Down Expand Up @@ -116,12 +114,3 @@ set(config_module_list

set(config_extra_builtin_cmds
)

set(config_io_board
)

set(config_extra_libs
)

set(config_io_extra_libs
)
30 changes: 1 addition & 29 deletions cmake/configs/nuttx_auav-x21_default.cmake
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
include(nuttx/px4_impl_nuttx)

px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)

set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)

set(config_uavcan_num_ifaces 1)

Expand Down Expand Up @@ -193,29 +191,3 @@ set(config_extra_builtin_cmds
serdis
sercon
)

set(config_io_board
px4io-v2
)

set(config_extra_libs
uavcan
uavcan_stm32_driver
)

set(config_io_extra_libs
)

add_custom_target(sercon)
set_target_properties(sercon PROPERTIES
PRIORITY "SCHED_PRIORITY_DEFAULT"
MAIN "sercon"
STACK_MAIN "2048"
COMPILE_FLAGS "-Os")

add_custom_target(serdis)
set_target_properties(serdis PROPERTIES
PRIORITY "SCHED_PRIORITY_DEFAULT"
MAIN "serdis"
STACK_MAIN "2048"
COMPILE_FLAGS "-Os")
21 changes: 1 addition & 20 deletions cmake/configs/nuttx_crazyflie_default.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ include(nuttx/px4_impl_nuttx)

px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)

set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)

set(config_module_list
#
# Board support modules
Expand Down Expand Up @@ -142,21 +140,4 @@ set(config_module_list
set(config_extra_builtin_cmds
serdis
sercon
)

set(config_extra_libs
)

add_custom_target(sercon)
set_target_properties(sercon PROPERTIES
PRIORITY "SCHED_PRIORITY_DEFAULT"
MAIN "sercon"
STACK_MAIN "2048"
COMPILE_FLAGS "-Os")

add_custom_target(serdis)
set_target_properties(serdis PROPERTIES
PRIORITY "SCHED_PRIORITY_DEFAULT"
MAIN "serdis"
STACK_MAIN "2048"
COMPILE_FLAGS "-Os")
)
Loading

0 comments on commit edee5d1

Please sign in to comment.