From 270bc2ef5d5288831e6726ea825de817bd29dd7e Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Thu, 10 Sep 2015 18:37:54 -0700 Subject: [PATCH 1/3] cmake: Fixed configs to use px4_get_config The previous function name was changed to px4_get_config Signed-off-by: Mark Charlebois --- Build/.keep | 0 cmake/configs/config_nuttx_sim_simple.cmake | 2 +- ..._posix_eagle_default.mk => config_posix_eagle_default.cmake} | 2 +- cmake/configs/config_posix_eagle_hil.cmake | 2 +- cmake/configs/config_posix_eagle_muorb.cmake | 2 +- cmake/configs/config_posix_eagle_release.cmake | 2 +- cmake/configs/config_qurt_eagle_hello.cmake | 2 +- cmake/configs/config_qurt_eagle_hil.cmake | 2 +- cmake/configs/config_qurt_eagle_muorb.cmake | 2 +- cmake/configs/config_qurt_eagle_release.cmake | 2 +- cmake/configs/config_qurt_eagle_test.cmake | 2 +- cmake/configs/config_qurt_eagle_travis.cmake | 2 +- 12 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 Build/.keep rename cmake/configs/{config_posix_eagle_default.mk => config_posix_eagle_default.cmake} (93%) diff --git a/Build/.keep b/Build/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cmake/configs/config_nuttx_sim_simple.cmake b/cmake/configs/config_nuttx_sim_simple.cmake index 0440bfed14..a44f8e9597 100644 --- a/cmake/configs/config_nuttx_sim_simple.cmake +++ b/cmake/configs/config_nuttx_sim_simple.cmake @@ -2,7 +2,7 @@ include(nuttx/px4_impl_nuttx) message(WARNING "this is a work in progress and doesn't build yet") -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list platforms/nuttx diff --git a/cmake/configs/config_posix_eagle_default.mk b/cmake/configs/config_posix_eagle_default.cmake similarity index 93% rename from cmake/configs/config_posix_eagle_default.mk rename to cmake/configs/config_posix_eagle_default.cmake index 589c44a05e..77b6716e88 100644 --- a/cmake/configs/config_posix_eagle_default.mk +++ b/cmake/configs/config_posix_eagle_default.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix-arm) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_posix_eagle_hil.cmake b/cmake/configs/config_posix_eagle_hil.cmake index ebe148ab37..fb1c82ddbe 100644 --- a/cmake/configs/config_posix_eagle_hil.cmake +++ b/cmake/configs/config_posix_eagle_hil.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix-arm) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_posix_eagle_muorb.cmake b/cmake/configs/config_posix_eagle_muorb.cmake index 70235928ec..b8e75586be 100644 --- a/cmake/configs/config_posix_eagle_muorb.cmake +++ b/cmake/configs/config_posix_eagle_muorb.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix-arm) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_posix_eagle_release.cmake b/cmake/configs/config_posix_eagle_release.cmake index 745fa36826..9b7b315727 100644 --- a/cmake/configs/config_posix_eagle_release.cmake +++ b/cmake/configs/config_posix_eagle_release.cmake @@ -1,6 +1,6 @@ include(posix/px4_impl_posix-arm) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_qurt_eagle_hello.cmake b/cmake/configs/config_qurt_eagle_hello.cmake index 6da3d11574..38028ff57e 100644 --- a/cmake/configs/config_qurt_eagle_hello.cmake +++ b/cmake/configs/config_qurt_eagle_hello.cmake @@ -1,6 +1,6 @@ include(qurt/px4_impl_qurt) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_qurt_eagle_hil.cmake b/cmake/configs/config_qurt_eagle_hil.cmake index 5e7e7fc16c..857ad6b570 100644 --- a/cmake/configs/config_qurt_eagle_hil.cmake +++ b/cmake/configs/config_qurt_eagle_hil.cmake @@ -1,6 +1,6 @@ include(qurt/px4_impl_qurt) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_qurt_eagle_muorb.cmake b/cmake/configs/config_qurt_eagle_muorb.cmake index 5cf884baf1..38618dc2bd 100644 --- a/cmake/configs/config_qurt_eagle_muorb.cmake +++ b/cmake/configs/config_qurt_eagle_muorb.cmake @@ -1,6 +1,6 @@ include(qurt/px4_impl_qurt) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_qurt_eagle_release.cmake b/cmake/configs/config_qurt_eagle_release.cmake index 3bf19fb16f..5cbd611cdf 100644 --- a/cmake/configs/config_qurt_eagle_release.cmake +++ b/cmake/configs/config_qurt_eagle_release.cmake @@ -19,7 +19,7 @@ set(target_libraries rc_receiver ) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list # diff --git a/cmake/configs/config_qurt_eagle_test.cmake b/cmake/configs/config_qurt_eagle_test.cmake index bbb837b363..1845568e8b 100644 --- a/cmake/configs/config_qurt_eagle_test.cmake +++ b/cmake/configs/config_qurt_eagle_test.cmake @@ -1,6 +1,6 @@ include(qurt/px4_impl_qurt) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device diff --git a/cmake/configs/config_qurt_eagle_travis.cmake b/cmake/configs/config_qurt_eagle_travis.cmake index b8a21017b6..713c858a44 100644 --- a/cmake/configs/config_qurt_eagle_travis.cmake +++ b/cmake/configs/config_qurt_eagle_travis.cmake @@ -3,7 +3,7 @@ include(qurt/px4_impl_qurt) # Run a full link with build stubs to make sure qurt target isn't broken set(QURT_ENABLE_STUBS 1) -function(px4_set_config_modules out_module_list) +function(px4_get_config out_module_list) set(config_module_list drivers/device From 5aa3c45b63f459861ceebefc46e044e87c2a67c0 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Thu, 10 Sep 2015 19:01:51 -0700 Subject: [PATCH 2/3] cmake: Unbreak all qurt and posix targets Signed-off-by: Mark Charlebois --- cmake/configs/config_nuttx_sim_simple.cmake | 7 ++++++- cmake/configs/config_posix_eagle_default.cmake | 7 ++++++- cmake/configs/config_posix_eagle_hil.cmake | 7 ++++++- cmake/configs/config_posix_eagle_muorb.cmake | 7 ++++++- cmake/configs/config_posix_eagle_release.cmake | 7 ++++++- cmake/configs/config_qurt_eagle_hello.cmake | 11 ++++++++++- cmake/configs/config_qurt_eagle_hil.cmake | 11 +++++++++-- cmake/configs/config_qurt_eagle_muorb.cmake | 10 ++++++++-- cmake/configs/config_qurt_eagle_release.cmake | 10 ++++++++-- cmake/configs/config_qurt_eagle_test.cmake | 10 ++++++++-- cmake/configs/config_qurt_eagle_travis.cmake | 10 ++++++++-- 11 files changed, 81 insertions(+), 16 deletions(-) diff --git a/cmake/configs/config_nuttx_sim_simple.cmake b/cmake/configs/config_nuttx_sim_simple.cmake index a44f8e9597..79446ae7bc 100644 --- a/cmake/configs/config_nuttx_sim_simple.cmake +++ b/cmake/configs/config_nuttx_sim_simple.cmake @@ -2,7 +2,12 @@ include(nuttx/px4_impl_nuttx) message(WARNING "this is a work in progress and doesn't build yet") -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES OUT_FW_OPTS OUT_EXTRA_CMDS + ARGN ${ARGN}) set(config_module_list platforms/nuttx diff --git a/cmake/configs/config_posix_eagle_default.cmake b/cmake/configs/config_posix_eagle_default.cmake index 77b6716e88..04f80c7523 100644 --- a/cmake/configs/config_posix_eagle_default.cmake +++ b/cmake/configs/config_posix_eagle_default.cmake @@ -1,6 +1,11 @@ include(posix/px4_impl_posix-arm) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES OUT_FW_OPTS OUT_EXTRA_CMDS + ARGN ${ARGN}) set(config_module_list drivers/device diff --git a/cmake/configs/config_posix_eagle_hil.cmake b/cmake/configs/config_posix_eagle_hil.cmake index fb1c82ddbe..115f70d406 100644 --- a/cmake/configs/config_posix_eagle_hil.cmake +++ b/cmake/configs/config_posix_eagle_hil.cmake @@ -1,6 +1,11 @@ include(posix/px4_impl_posix-arm) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES OUT_FW_OPTS OUT_EXTRA_CMDS + ARGN ${ARGN}) set(config_module_list drivers/device diff --git a/cmake/configs/config_posix_eagle_muorb.cmake b/cmake/configs/config_posix_eagle_muorb.cmake index b8e75586be..44fe4cebe0 100644 --- a/cmake/configs/config_posix_eagle_muorb.cmake +++ b/cmake/configs/config_posix_eagle_muorb.cmake @@ -1,6 +1,11 @@ include(posix/px4_impl_posix-arm) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES OUT_FW_OPTS OUT_EXTRA_CMDS + ARGN ${ARGN}) set(config_module_list drivers/device diff --git a/cmake/configs/config_posix_eagle_release.cmake b/cmake/configs/config_posix_eagle_release.cmake index 9b7b315727..90c81fd411 100644 --- a/cmake/configs/config_posix_eagle_release.cmake +++ b/cmake/configs/config_posix_eagle_release.cmake @@ -1,6 +1,11 @@ include(posix/px4_impl_posix-arm) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES OUT_FW_OPTS OUT_EXTRA_CMDS + ARGN ${ARGN}) set(config_module_list drivers/device diff --git a/cmake/configs/config_qurt_eagle_hello.cmake b/cmake/configs/config_qurt_eagle_hello.cmake index 38028ff57e..4969d2af34 100644 --- a/cmake/configs/config_qurt_eagle_hello.cmake +++ b/cmake/configs/config_qurt_eagle_hello.cmake @@ -1,6 +1,12 @@ include(qurt/px4_impl_qurt) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES + REQUIRED OUT_MODULES + ARGN ${ARGN}) set(config_module_list drivers/device @@ -26,5 +32,8 @@ function(px4_get_config out_module_list) ) set(${out_module_list} ${config_module_list} PARENT_SCOPE) + # output + set(${OUT_MODULES} ${config_module_list} PARENT_SCOPE) + endfunction() diff --git a/cmake/configs/config_qurt_eagle_hil.cmake b/cmake/configs/config_qurt_eagle_hil.cmake index 857ad6b570..f5bc10f324 100644 --- a/cmake/configs/config_qurt_eagle_hil.cmake +++ b/cmake/configs/config_qurt_eagle_hil.cmake @@ -1,6 +1,12 @@ include(qurt/px4_impl_qurt) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES + REQUIRED OUT_MODULES + ARGN ${ARGN}) set(config_module_list drivers/device @@ -60,7 +66,8 @@ function(px4_get_config out_module_list) # modules/muorb/adsp ) - set(${out_module_list} ${config_module_list} PARENT_SCOPE) + + set(${OUT_MODULES} ${config_module_list} PARENT_SCOPE) endfunction() diff --git a/cmake/configs/config_qurt_eagle_muorb.cmake b/cmake/configs/config_qurt_eagle_muorb.cmake index 38618dc2bd..1ef1711c30 100644 --- a/cmake/configs/config_qurt_eagle_muorb.cmake +++ b/cmake/configs/config_qurt_eagle_muorb.cmake @@ -1,6 +1,12 @@ include(qurt/px4_impl_qurt) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES + REQUIRED + ARGN ${ARGN}) set(config_module_list drivers/device @@ -38,7 +44,7 @@ function(px4_get_config out_module_list) # modules/muorb/adsp ) - set(${out_module_list} ${config_module_list} PARENT_SCOPE) + set(${OUT_MODULES} ${config_module_list} PARENT_SCOPE) endfunction() diff --git a/cmake/configs/config_qurt_eagle_release.cmake b/cmake/configs/config_qurt_eagle_release.cmake index 5cbd611cdf..87b1592757 100644 --- a/cmake/configs/config_qurt_eagle_release.cmake +++ b/cmake/configs/config_qurt_eagle_release.cmake @@ -19,7 +19,13 @@ set(target_libraries rc_receiver ) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES + REQUIRED OUT_MODULES + ARGN ${ARGN}) set(config_module_list # @@ -81,6 +87,6 @@ function(px4_get_config out_module_list) # modules/muorb/adsp ) - set(${out_module_list} ${config_module_list} PARENT_SCOPE) + set(${OUT_MODULES} ${config_module_list} PARENT_SCOPE) endfunction() diff --git a/cmake/configs/config_qurt_eagle_test.cmake b/cmake/configs/config_qurt_eagle_test.cmake index 1845568e8b..a607a0be2b 100644 --- a/cmake/configs/config_qurt_eagle_test.cmake +++ b/cmake/configs/config_qurt_eagle_test.cmake @@ -1,6 +1,12 @@ include(qurt/px4_impl_qurt) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES + REQUIRED OUT_MODULES + ARGN ${ARGN}) set(config_module_list drivers/device @@ -35,7 +41,7 @@ function(px4_get_config out_module_list) platforms/qurt/tests/hrt_test platforms/qurt/tests/wqueue ) - set(${out_module_list} ${config_module_list} PARENT_SCOPE) + set(${OUT_MODULES} ${config_module_list} PARENT_SCOPE) endfunction() diff --git a/cmake/configs/config_qurt_eagle_travis.cmake b/cmake/configs/config_qurt_eagle_travis.cmake index 713c858a44..d55c7597e5 100644 --- a/cmake/configs/config_qurt_eagle_travis.cmake +++ b/cmake/configs/config_qurt_eagle_travis.cmake @@ -3,7 +3,13 @@ include(qurt/px4_impl_qurt) # Run a full link with build stubs to make sure qurt target isn't broken set(QURT_ENABLE_STUBS 1) -function(px4_get_config out_module_list) +function(px4_get_config) + + px4_parse_function_args( + NAME px4_set_config_modules + ONE_VALUE OUT_MODULES + REQUIRED OUT_MODULES + ARGN ${ARGN}) set(config_module_list drivers/device @@ -63,7 +69,7 @@ function(px4_get_config out_module_list) # modules/muorb/adsp ) - set(${out_module_list} ${config_module_list} PARENT_SCOPE) + set(${OUT_MODULES} ${config_module_list} PARENT_SCOPE) endfunction() From cbb8ad19e511e21757c843da5c9c28807ad58837 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Thu, 10 Sep 2015 19:15:11 -0700 Subject: [PATCH 3/3] cmake: Proof of concept for build without Makefile Signed-off-by: Mark Charlebois --- CMakeLists.txt | 52 ++++++++++++++++++++++- cmake/configs/config_qurt_eagle_hil.cmake | 2 + 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dbb58a46de..fba35c4d7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,13 +109,63 @@ set(verion_patch 2) set(version "${version_major}.${version_minor}.${version_patch}") set(package-contact "px4users@googlegroups.com") +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + +#============================================================================= +# cmake modules +# +if (NOT NESTED_CMAKE_CALL) + message(STATUS "IN TOP") + if (EXISTS ${CMAKE_SOURCE_DIR}/cmake/configs/config_${CONFIG}.cmake) + + # Get the toolchain information + include(configs/config_${CONFIG}) + else() + message(FATAL_ERROR "build config not found: config_${CONFIG}.cmake") + endif() + if (NOT "${USE_TOOLCHAIN}" STREQUAL "") + set(TOOLCHAIN -DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/cmake/toolchains/${USE_TOOLCHAIN}.cmake) + endif() + string(REPLACE "_" ";" TARGET_PARAMS ${CONFIG}) + list(GET TARGET_PARAMS 0 OS) + list(GET TARGET_PARAMS 1 BOARD) + list(GET TARGET_PARAMS 2 LABEL) + message(STATUS "CONFIG ${OS} ${BOARD} ${LABEL}") + if ("${LABEL}" STREQUAL "upload") + set(LABEL "simple") + set(DOUPLOAD "1") + endif() + if ("${LABEL}" STREQUAL "test") + set(LABEL "simple") + set(DOTEST "1") + endif() + execute_process( COMMAND ${CMAKE_COMMAND} -E make_directory ${CONFIG} ) + set(NESTED_CMAKE_CALL 1) + message(STATUS "Before") + execute_process(WORKING_DIRECTORY ${CONFIG} + COMMAND ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -DNESTED_CMAKE_CALL=TRUE ${TOOLCHAIN} -DOS=${OS} -DBOARD=${BOARD} -DLABEL=${LABEL} + ) + execute_process( WORKING_DIRECTORY ${CONFIG} + COMMAND make -s + ) + message(STATUS "${CMAKE_COMMAND} VERBOSE=1 ${CMAKE_SOURCE_DIR} ${TOOLCHAIN} -DOS=${OS} -DBOARD=${BOARD} -DLABEL=${LABEL}") + if ("${DOUPLOAD}" STREQUAL "1") + execute_process( WORKING_DIRECTORY ${CONFIG} + COMMAND make upload) + endif() + if ("${DOTEST}" STREQUAL "1") + execute_process( WORKING_DIRECTORY ${CONFIG} + COMMAND make test) + endif() + return() +endif(NOT NESTED_CMAKE_CALL) + #============================================================================= # cmake modules # # set module path message("OS = ${OS}") -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) # prefer board implementation module over os implmementation module set(config_module "configs/config_${OS}_${BOARD}_${LABEL}") diff --git a/cmake/configs/config_qurt_eagle_hil.cmake b/cmake/configs/config_qurt_eagle_hil.cmake index f5bc10f324..378915c373 100644 --- a/cmake/configs/config_qurt_eagle_hil.cmake +++ b/cmake/configs/config_qurt_eagle_hil.cmake @@ -1,5 +1,7 @@ include(qurt/px4_impl_qurt) +set(USE_TOOLCHAIN Toolchain-hexagon) + function(px4_get_config) px4_parse_function_args(