From 19c84126a44d4a3f311c6cdd6b95c7680e6e36ec Mon Sep 17 00:00:00 2001 From: James Goppert Date: Sun, 13 Sep 2015 18:30:32 -0400 Subject: [PATCH 1/2] Fixed parameter generation dependencies. --- cmake/common/px4_base.cmake | 37 ++++++++++++++++++++++------ src/firmware/nuttx/CMakeLists.txt | 6 ++--- src/firmware/posix/CMakeLists.txt | 3 --- src/firmware/qurt/CMakeLists.txt | 4 --- src/modules/systemlib/CMakeLists.txt | 6 +++++ 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake index 7e8ddabee0..482fc54aa5 100644 --- a/cmake/common/px4_base.cmake +++ b/cmake/common/px4_base.cmake @@ -701,17 +701,38 @@ function(px4_create_git_hash_header) endfunction() #============================================================================= -# parameter file generation +# +# px4_generate_parameters +# +# Generates a source file with all parameters. +# +# Usage: +# px4_generate_parameters(OUT ) +# +# Output: +# OUT : the generate source files +# +# Example: +# px4_generate_parameters(OUT parameters.c) # function(px4_generate_parameters) - execute_process( - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_process_params.py -s ${CMAKE_SOURCE_DIR}/src --board ${BOARD} --xml - ) - - execute_process( - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_generate_params.py ${CMAKE_BINARY_DIR}/parameters.xml + px4_parse_function_args( + NAME px4_generate_parameters + ONE_VALUE OUT + REQUIRED OUT + ARGN ${ARGN}) + set(generated_files + ${CMAKE_CURRENT_BINARY_DIR}/px4_parameters.h + ${CMAKE_CURRENT_BINARY_DIR}/px4_parameters.c) + set_source_files_properties(${generated_files} + PROPERTIES GENERATED TRUE) + add_custom_command(OUTPUT ${generated_files} + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_process_params.py + -s ${CMAKE_SOURCE_DIR}/src --board CONFIG_ARCH_${BOARD} --xml + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/Tools/px_generate_params.py + parameters.xml ) + set(${OUT} ${generated_files} PARENT_SCOPE) endfunction() - # vim: set noet fenc=utf-8 ff=unix nowrap: diff --git a/src/firmware/nuttx/CMakeLists.txt b/src/firmware/nuttx/CMakeLists.txt index 8cf5e64b3b..b069d8849b 100644 --- a/src/firmware/nuttx/CMakeLists.txt +++ b/src/firmware/nuttx/CMakeLists.txt @@ -8,10 +8,10 @@ px4_nuttx_generate_builtin_commands( px4_nuttx_generate_romfs(OUT romfs.o ROOT ROMFS/px4fmu_common) -px4_generate_parameters() - # add executable -add_executable(firmware_nuttx builtin_commands.c ${CMAKE_BINARY_DIR}/px4_parameters.c romfs.o) +add_executable(firmware_nuttx + builtin_commands.c + romfs.o) set(nuttx_export_dir ${CMAKE_BINARY_DIR}/${BOARD}/NuttX/nuttx-export) set(main_link_flags "-T${nuttx_export_dir}/build/ld.script" diff --git a/src/firmware/posix/CMakeLists.txt b/src/firmware/posix/CMakeLists.txt index 1ac73ba682..7c30f1dfa6 100644 --- a/src/firmware/posix/CMakeLists.txt +++ b/src/firmware/posix/CMakeLists.txt @@ -5,11 +5,8 @@ px4_posix_generate_builtin_commands( OUT apps.h MODULE_LIST ${module_libraries}) -px4_generate_parameters() - add_executable(mainapp ${CMAKE_SOURCE_DIR}/src/platforms/posix/main.cpp - ${CMAKE_BINARY_DIR}/px4_parameters.c apps.h ) diff --git a/src/firmware/qurt/CMakeLists.txt b/src/firmware/qurt/CMakeLists.txt index b4271ee12e..7f52c59e4c 100644 --- a/src/firmware/qurt/CMakeLists.txt +++ b/src/firmware/qurt/CMakeLists.txt @@ -14,18 +14,14 @@ px4_qurt_generate_builtin_commands( set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") -px4_generate_parameters() - # Enable build without HexagonSDK to check link dependencies if ("${QURT_ENABLE_STUBS}" STREQUAL "1") add_executable(mainapp ${CMAKE_SOURCE_DIR}/src/platforms/qurt/dspal/dspal_stub.c - ${CMAKE_BINARY_DIR}/px4_parameters.c ${CMAKE_BINARY_DIR}/apps.h) else("${QURT_ENABLE_STUBS}" STREQUAL "1") add_library(mainapp ${CMAKE_SOURCE_DIR}/src/platforms/qurt/dspal/dspal_stub.c - ${CMAKE_BINARY_DIR}/px4_parameters.c ${CMAKE_BINARY_DIR}/apps.h) endif() diff --git a/src/modules/systemlib/CMakeLists.txt b/src/modules/systemlib/CMakeLists.txt index e69055c4a2..3acedcbdd6 100644 --- a/src/modules/systemlib/CMakeLists.txt +++ b/src/modules/systemlib/CMakeLists.txt @@ -31,7 +31,13 @@ # ############################################################################ +px4_generate_parameters(OUT param_files) + +# for generated files +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + set(SRCS + ${param_files} perf_counter.c param/param.c conversions.c From f43ccdaea1f515d06508b6edaafac0d0be956dbf Mon Sep 17 00:00:00 2001 From: James Goppert Date: Sun, 13 Sep 2015 18:55:48 -0400 Subject: [PATCH 2/2] Make parameters a separate library. --- cmake/configs/nuttx_px4fmu-v2_default.cmake | 1 + cmake/configs/nuttx_px4fmu-v2_simple.cmake | 1 + cmake/configs/posix_eagle_default.cmake | 1 + cmake/configs/posix_eagle_hil.cmake | 1 + cmake/configs/posix_eagle_release.cmake | 1 + cmake/configs/posix_sitl_simple.cmake | 1 + cmake/configs/qurt_eagle_hello.cmake | 1 + cmake/configs/qurt_eagle_hil.cmake | 1 + cmake/configs/qurt_eagle_muorb.cmake | 1 + cmake/configs/qurt_eagle_release.cmake | 1 + cmake/configs/qurt_eagle_test.cmake | 1 + cmake/configs/qurt_eagle_travis.cmake | 1 + src/modules/param/CMakeLists.txt | 50 +++++++++++++++++++++ src/modules/systemlib/CMakeLists.txt | 6 +-- 14 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 src/modules/param/CMakeLists.txt diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake index 60cb06a3dc..0ea1c0d800 100644 --- a/cmake/configs/nuttx_px4fmu-v2_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake @@ -97,6 +97,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/systemlib/mixer modules/controllib diff --git a/cmake/configs/nuttx_px4fmu-v2_simple.cmake b/cmake/configs/nuttx_px4fmu-v2_simple.cmake index ddd639ac5a..e6777cd32a 100644 --- a/cmake/configs/nuttx_px4fmu-v2_simple.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_simple.cmake @@ -69,6 +69,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/systemlib/mixer modules/controllib diff --git a/cmake/configs/posix_eagle_default.cmake b/cmake/configs/posix_eagle_default.cmake index 36c787edca..b30dcef5e3 100644 --- a/cmake/configs/posix_eagle_default.cmake +++ b/cmake/configs/posix_eagle_default.cmake @@ -22,6 +22,7 @@ set(config_module_list modules/mc_pos_control modules/mc_att_control + modules/param modules/systemlib modules/systemlib/mixer modules/uORB diff --git a/cmake/configs/posix_eagle_hil.cmake b/cmake/configs/posix_eagle_hil.cmake index c4e5375766..ee5feb6535 100644 --- a/cmake/configs/posix_eagle_hil.cmake +++ b/cmake/configs/posix_eagle_hil.cmake @@ -17,6 +17,7 @@ set(config_module_list modules/mavlink + modules/param modules/systemlib modules/uORB modules/sensors diff --git a/cmake/configs/posix_eagle_release.cmake b/cmake/configs/posix_eagle_release.cmake index 36a9ad1be3..ab930abea3 100644 --- a/cmake/configs/posix_eagle_release.cmake +++ b/cmake/configs/posix_eagle_release.cmake @@ -15,6 +15,7 @@ set(config_module_list modules/mavlink + modules/param modules/systemlib modules/uORB modules/dataman diff --git a/cmake/configs/posix_sitl_simple.cmake b/cmake/configs/posix_sitl_simple.cmake index 10a02fa89f..b557401810 100644 --- a/cmake/configs/posix_sitl_simple.cmake +++ b/cmake/configs/posix_sitl_simple.cmake @@ -23,6 +23,7 @@ set(config_module_list systemcmds/reboot systemcmds/topic_listener modules/uORB + modules/param modules/systemlib modules/systemlib/mixer modules/sensors diff --git a/cmake/configs/qurt_eagle_hello.cmake b/cmake/configs/qurt_eagle_hello.cmake index 9076ec7511..45ae2b22ed 100644 --- a/cmake/configs/qurt_eagle_hello.cmake +++ b/cmake/configs/qurt_eagle_hello.cmake @@ -13,6 +13,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/uORB diff --git a/cmake/configs/qurt_eagle_hil.cmake b/cmake/configs/qurt_eagle_hil.cmake index e661ca5b62..bab551262d 100644 --- a/cmake/configs/qurt_eagle_hil.cmake +++ b/cmake/configs/qurt_eagle_hil.cmake @@ -33,6 +33,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/systemlib/mixer modules/uORB diff --git a/cmake/configs/qurt_eagle_muorb.cmake b/cmake/configs/qurt_eagle_muorb.cmake index 5c83f9e68d..afdc35dad5 100644 --- a/cmake/configs/qurt_eagle_muorb.cmake +++ b/cmake/configs/qurt_eagle_muorb.cmake @@ -13,6 +13,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/uORB diff --git a/cmake/configs/qurt_eagle_release.cmake b/cmake/configs/qurt_eagle_release.cmake index 1807e0b56c..0b03dcea48 100644 --- a/cmake/configs/qurt_eagle_release.cmake +++ b/cmake/configs/qurt_eagle_release.cmake @@ -55,6 +55,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/systemlib/mixer modules/uORB diff --git a/cmake/configs/qurt_eagle_test.cmake b/cmake/configs/qurt_eagle_test.cmake index c25191f5b9..5e9cffc407 100644 --- a/cmake/configs/qurt_eagle_test.cmake +++ b/cmake/configs/qurt_eagle_test.cmake @@ -13,6 +13,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/systemlib/mixer modules/uORB diff --git a/cmake/configs/qurt_eagle_travis.cmake b/cmake/configs/qurt_eagle_travis.cmake index ab766f189c..15593df251 100644 --- a/cmake/configs/qurt_eagle_travis.cmake +++ b/cmake/configs/qurt_eagle_travis.cmake @@ -36,6 +36,7 @@ set(config_module_list # # Library modules # + modules/param modules/systemlib modules/systemlib/mixer modules/uORB diff --git a/src/modules/param/CMakeLists.txt b/src/modules/param/CMakeLists.txt new file mode 100644 index 0000000000..4e15ca6e5a --- /dev/null +++ b/src/modules/param/CMakeLists.txt @@ -0,0 +1,50 @@ +############################################################################ +# +# Copyright (c) 2015 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +px4_generate_parameters(OUT param_files) + +set(srcs + ${param_files} + ) + +px4_add_module( + MODULE modules__param + COMPILE_FLAGS + -Os + SRCS ${srcs} + DEPENDS + platforms__common + ) +# vim: set noet ft=cmake fenc=utf-8 ff=unix : diff --git a/src/modules/systemlib/CMakeLists.txt b/src/modules/systemlib/CMakeLists.txt index 3acedcbdd6..6f0f7c5f54 100644 --- a/src/modules/systemlib/CMakeLists.txt +++ b/src/modules/systemlib/CMakeLists.txt @@ -31,13 +31,10 @@ # ############################################################################ -px4_generate_parameters(OUT param_files) - # for generated files -include_directories(${CMAKE_CURRENT_BINARY_DIR}) +include_directories(${CMAKE_BINARY_DIR}/src/modules/param) set(SRCS - ${param_files} perf_counter.c param/param.c conversions.c @@ -82,5 +79,6 @@ px4_add_module( SRCS ${SRCS} DEPENDS platforms__common + modules__param ) # vim: set noet ft=cmake fenc=utf-8 ff=unix :