From 0de5868ee248af17d9ebb6a714c9632a93c9c647 Mon Sep 17 00:00:00 2001 From: Mark Charlebois Date: Tue, 8 Sep 2015 07:47:09 -0700 Subject: [PATCH] More qurt support The current approach of distributing submodule inclusion logic makes evert parent dir need to know about all build targets. This approach goes back to the previous way of centralizing the build dirs in a single file. Signed-off-by: Mark Charlebois --- cmake/px4_impl_qurt.cmake | 10 ++-- cmake/qurt/configs/config-qurt-hil.cmake | 2 +- src/CMakeLists.txt | 75 ++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 6 deletions(-) diff --git a/cmake/px4_impl_qurt.cmake b/cmake/px4_impl_qurt.cmake index 5337840727..ebfdc9f45b 100644 --- a/cmake/px4_impl_qurt.cmake +++ b/cmake/px4_impl_qurt.cmake @@ -236,7 +236,7 @@ endfunction() # # Usage: # px4_os_prebuild_targets( -# OUT +# OUT_MODULES # BOARD # ) # @@ -244,16 +244,16 @@ endfunction() # BOARD : board # # Output: -# MODULE_LIST : the updated module list +# OUT_MODULES : the updated module list # # Example: -# px4_qurt_add_modules(MODULE_LIST module_list BOARD hil) +# px4_qurt_add_modules(module_list "hil") # -function(px4_qurt_add_modules out_modules BOARD) +function(px4_qurt_add_modules OUT_MODULES BOARD) include(config-qurt-${BOARD}) set(config_modules) px4_set_config_modules(config_modules) - set(${out_modules} ${out_modules} ${config_modules} PARENT_SCOPE) + set(${OUT_MODULES} ${${OUT_MODULES}} ${config_modules} PARENT_SCOPE) endfunction() # vim: set noet fenc=utf-8 ff=unix nowrap: diff --git a/cmake/qurt/configs/config-qurt-hil.cmake b/cmake/qurt/configs/config-qurt-hil.cmake index 6c68043868..694aa8d0ea 100644 --- a/cmake/qurt/configs/config-qurt-hil.cmake +++ b/cmake/qurt/configs/config-qurt-hil.cmake @@ -77,7 +77,7 @@ function(px4_set_config_modules out_module_list) # # sources for muorb over fastrpc # - modules/muorb/adsp/ + modules/muorb/adsp ) message(STATUS "modules: ${config_module_list}") set(${out_module_list} ${config_module_list} PARENT_SCOPE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e69837558c..1bc4e961fb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,6 @@ +#============================================================================= +# module subdirectories, need to include first +# add_subdirectory(./lib) add_subdirectory(./drivers) add_subdirectory(./platforms) @@ -5,5 +8,77 @@ add_subdirectory(./systemcmds) add_subdirectory(./examples) add_subdirectory(./modules) add_subdirectory(./firmware) +#============================================================================= +# executable +# + +if (${OS} STREQUAL "nuttx") + + # a list of modules that will be linked to main + set(module_list) + + if (${LABEL} STREQUAL "simple") + list(APPEND module_list + drivers__led + drivers__device + platforms__common + modules__systemlib + modules__uORB + examples__px4_simple_app + lib__mathlib__math__filter + lib__conversion + ) + endif() + + if (${LABEL} STREQUAL "simple") + list(APPEND module_list ${module_list_simple}) + endif() + + list(APPEND module_list + platforms__nuttx + platforms__nuttx__px4_layer + drivers__boards__px4fmu-v2 + drivers__stm32 + ) + + px4_nuttx_generate_builtin_commands( + OUT builtin_commands.c + MODULE_LIST ${module_list}) + + px4_nuttx_generate_romfs(OUT romfs.o + ROOT ROMFS/px4fmu_common) + + # add executable + add_executable(main 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" + "-Wl,-Map=${CMAKE_BINARY_DIR}/main.map" + ) + px4_join(OUT main_link_flags LIST ${main_link_flags} GLUE " ") + set_target_properties(main PROPERTIES LINK_FLAGS ${main_link_flags}) + + target_link_libraries(main + -Wl,--start-group + ${module_list} + apps nuttx nosys m gcc + -Wl,--end-group) + + px4_nuttx_add_firmware(OUT ${CMAKE_CURRENT_BINARY_DIR}/fw_main.px4 + EXE ${CMAKE_CURRENT_BINARY_DIR}/main) + + px4_add_upload(OUT upload OS ${OS} BOARD ${BOARD} + BUNDLE ${CMAKE_CURRENT_BINARY_DIR}/fw_main.px4) + +elseif(${OS} STREQUAL "qurt") + set(module_list) + px4_qurt_add_modules(module_list ${BOARD}) + message(STATUS "module list: ${module_list}") + + foreach(directory ${module_list}) + message(STATUS "directory: ${directory}") + add_subdirectory(${directory} EXCLUDE_FROM_ALL) + endforeach() +endif() # vim: set noet ft=cmake fenc=utf-8 ff=unix :