diff --git a/src/firmware/posix/CMakeLists.txt b/src/firmware/posix/CMakeLists.txt index 854a0b9fb138a03a03239180ac87d9d37e071a57..707d9b027b5fb2a30b6c914e90033abc1debeffd 100644 --- a/src/firmware/posix/CMakeLists.txt +++ b/src/firmware/posix/CMakeLists.txt @@ -4,228 +4,130 @@ px4_posix_generate_builtin_commands( OUT apps MODULE_LIST ${module_libraries}) +# Define build target +set(APP_NAME px4) +set(MAIN_SRC ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp) +set(UPLOAD_NAME upload) -function(px4_add_sitl_app) - px4_parse_function_args( - NAME px4_add_sitl_app - ONE_VALUE APP_NAME MAIN_SRC UPLOAD_NAME - REQUIRED APP_NAME MAIN_SRC - ARGN ${ARGN}) - - if ("${BOARD}" STREQUAL "eagle" OR ("${BOARD}" STREQUAL "excelsior")) - - include(fastrpc) - include(linux_app) - - FASTRPC_STUB_GEN(../qurt/px4muorb.idl) - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-prototypes -Wno-missing-declarations") - LINUX_APP( - APP_NAME ${APP_NAME} - IDL_NAME px4muorb - APPS_DEST "/home/linaro" - SOURCES - px4muorb_stub.c - ${MAIN_SRC} - apps.cpp - LINK_LIBS - -Wl,--start-group - ${module_libraries} - ${df_driver_libs} - ${FASTRPC_ARM_LIBS} - pthread m rt - -Wl,--end-group - ) +if ("${BOARD}" STREQUAL "eagle" OR ("${BOARD}" STREQUAL "excelsior")) - px4_add_adb_push(OUT ${UPLOAD_NAME} - OS ${OS} - BOARD ${BOARD} - FILES ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME} - ${PX4_SOURCE_DIR}/posix-configs/eagle/flight/mainapp.config - DEPENDS ${APP_NAME} - DEST /home/linaro) + include(fastrpc) + include(linux_app) - elseif ("${BOARD}" STREQUAL "rpi") + FASTRPC_STUB_GEN(../qurt/px4muorb.idl) - px4_add_executable(${APP_NAME} + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-prototypes -Wno-missing-declarations") + LINUX_APP( + APP_NAME ${APP_NAME} + IDL_NAME px4muorb + APPS_DEST "/home/linaro" + SOURCES + px4muorb_stub.c ${MAIN_SRC} apps.cpp - ) - - target_link_libraries(${APP_NAME} + LINK_LIBS -Wl,--start-group ${module_libraries} - df_driver_framework ${df_driver_libs} + ${FASTRPC_ARM_LIBS} pthread m rt -Wl,--end-group - ) + ) - file(GLOB RPI_CONFIG_FILES ${PX4_SOURCE_DIR}/posix-configs/rpi/*.config) - px4_add_scp_push(OUT ${UPLOAD_NAME} - OS ${OS} - BOARD ${BOARD} - FILES ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME} - ${RPI_CONFIG_FILES} - ${PX4_SOURCE_DIR}/ROMFS - DEPENDS ${APP_NAME} - DEST /home/pi) + px4_add_adb_push(OUT ${UPLOAD_NAME} + OS ${OS} + BOARD ${BOARD} + FILES ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME} + ${PX4_SOURCE_DIR}/posix-configs/eagle/flight/mainapp.config + DEPENDS ${APP_NAME} + DEST /home/linaro) - elseif ("${BOARD}" STREQUAL "bebop") +elseif ("${BOARD}" STREQUAL "rpi") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") + px4_add_executable(${APP_NAME} + ${MAIN_SRC} + apps.cpp + ) - px4_add_executable(${APP_NAME} - ${MAIN_SRC} - apps.cpp - ) + target_link_libraries(${APP_NAME} + -Wl,--start-group + ${module_libraries} + df_driver_framework + ${df_driver_libs} + pthread m rt + -Wl,--end-group + ) - if (NOT APPLE) - target_link_libraries(${APP_NAME} - -Wl,--start-group - ${module_libraries} - ${df_driver_libs} - pthread m rt - -Wl,--end-group - ) - else() - target_link_libraries(${APP_NAME} - ${module_libraries} - ${df_driver_libs} - pthread m - ) - endif() - - px4_add_adb_push_to_bebop(OUT ${UPLOAD_NAME} - OS ${OS} - BOARD ${BOARD} - FILES ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME} - DEPENDS ${APP_NAME} - DEST /usr/bin) + file(GLOB RPI_CONFIG_FILES ${PX4_SOURCE_DIR}/posix-configs/rpi/*.config) + px4_add_scp_push(OUT ${UPLOAD_NAME} + OS ${OS} + BOARD ${BOARD} + FILES ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME} + ${RPI_CONFIG_FILES} + ${PX4_SOURCE_DIR}/ROMFS + DEPENDS ${APP_NAME} + DEST /home/pi) - else() +elseif ("${BOARD}" STREQUAL "bebop") - px4_add_executable(${APP_NAME} - ${MAIN_SRC} - apps.cpp - ) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") + + px4_add_executable(${APP_NAME} + ${MAIN_SRC} + apps.cpp + ) - if (NOT APPLE) - target_link_libraries(${APP_NAME} - -Wl,--start-group - ${module_libraries} - ${df_driver_libs} - pthread m rt - -Wl,--end-group - ) - else() - target_link_libraries(${APP_NAME} - ${module_libraries} - ${df_driver_libs} - pthread m - ) - endif() + if (NOT APPLE) + target_link_libraries(${APP_NAME} + -Wl,--start-group + ${module_libraries} + ${df_driver_libs} + pthread m rt + -Wl,--end-group + ) + else() + target_link_libraries(${APP_NAME} + ${module_libraries} + ${df_driver_libs} + pthread m + ) endif() -endfunction() -SET(SITL_RUNNER_MAIN_CPP ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp) -px4_add_sitl_app(APP_NAME px4 - UPLOAD_NAME upload - MAIN_SRC ${SITL_RUNNER_MAIN_CPP} - ) + px4_add_adb_push_to_bebop(OUT ${UPLOAD_NAME} + OS ${OS} + BOARD ${BOARD} + FILES ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME} + DEPENDS ${APP_NAME} + DEST /usr/bin) -#============================================================================= -# sitl run targets -# +elseif ("${BOARD}" STREQUAL "sitl") + + include(./sitl_target.cmake) + +else() -set(SITL_WORKING_DIR ${PX4_BINARY_DIR}/tmp) -file(MAKE_DIRECTORY ${SITL_WORKING_DIR}) - -add_custom_target(run_config - COMMAND Tools/sitl_run.sh - $<TARGET_FILE:px4> - ${config_sitl_rcS_dir} - ${config_sitl_debugger} - ${config_sitl_viewer} - ${config_sitl_model} - ${PX4_SOURCE_DIR} - ${PX4_BINARY_DIR} - WORKING_DIRECTORY ${SITL_WORKING_DIR} - USES_TERMINAL - ) -add_dependencies(run_config px4) - -# project to build sitl_gazebo if necessary -ExternalProject_Add(sitl_gazebo - SOURCE_DIR ${PX4_SOURCE_DIR}/Tools/sitl_gazebo - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} - BINARY_DIR ${PX4_BINARY_DIR}/build_gazebo - INSTALL_COMMAND "" - ) -set_target_properties(sitl_gazebo PROPERTIES EXCLUDE_FROM_ALL TRUE) - -# create targets for each viewer/model/debugger combination -set(viewers none jmavsim gazebo replay) -set(debuggers none ide gdb lldb ddd valgrind) -set(models none iris iris_opt_flow tailsitter standard_vtol plane solo typhoon_h480) -set(all_posix_vmd_make_targets) -foreach(viewer ${viewers}) - foreach(debugger ${debuggers}) - foreach(model ${models}) - if (debugger STREQUAL "none") - if (model STREQUAL "none") - set(_targ_name "${viewer}") - else() - set(_targ_name "${viewer}_${model}") - endif() - else() - if (model STREQUAL "none") - set(_targ_name "${viewer}___${debugger}") - else() - set(_targ_name "${viewer}_${model}_${debugger}") - endif() - endif() - - if (debugger STREQUAL "ide" AND viewer STREQUAL "gazebo") - SET(SITL_RUNNER_SOURCE_DIR ${PX4_SOURCE_DIR}) - SET(SITL_RUNNER_MODEL_FILE ${PX4_SOURCE_DIR}/${config_sitl_rcS_dir}/${model}) - SET(SITL_RUNNER_WORKING_DIRECTORY ${SITL_WORKING_DIR}) - - CONFIGURE_FILE(${PX4_SOURCE_DIR}/src/platforms/posix/sitl_runner_main.cpp.in sitl_runner_main_${model}.cpp @ONLY) - - px4_add_sitl_app(APP_NAME px4_${model} - UPLOAD_NAME upload_${model} - MAIN_SRC ${CMAKE_CURRENT_BINARY_DIR}/sitl_runner_main_${model}.cpp - ) - endif() - - add_custom_target(${_targ_name} - COMMAND ${PX4_SOURCE_DIR}/Tools/sitl_run.sh - $<TARGET_FILE:px4> - ${config_sitl_rcS_dir} - ${debugger} - ${viewer} - ${model} - ${PX4_SOURCE_DIR} - ${PX4_BINARY_DIR} - WORKING_DIRECTORY ${SITL_WORKING_DIR} - USES_TERMINAL - ) - list(APPEND all_posix_vmd_make_targets ${_targ_name}) - if (viewer STREQUAL "gazebo") - add_dependencies(${_targ_name} sitl_gazebo) - endif() - endforeach() - endforeach() -endforeach() - -px4_join(OUT posix_vmd_make_target_list LIST ${all_posix_vmd_make_targets} GLUE "\\n") -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:" - VERBATIM - ) + px4_add_executable(${APP_NAME} + ${MAIN_SRC} + apps.cpp + ) + + if (NOT APPLE) + target_link_libraries(${APP_NAME} + -Wl,--start-group + ${module_libraries} + ${df_driver_libs} + pthread m rt + -Wl,--end-group + ) + else() + target_link_libraries(${APP_NAME} + ${module_libraries} + ${df_driver_libs} + pthread m + ) + endif() +endif() #============================================================================= # install diff --git a/src/firmware/posix/sitl_target.cmake b/src/firmware/posix/sitl_target.cmake new file mode 100644 index 0000000000000000000000000000000000000000..ab0bed6fad91b0258812972cb20b3da180784dec --- /dev/null +++ b/src/firmware/posix/sitl_target.cmake @@ -0,0 +1,129 @@ + +function(px4_add_sitl_app) +px4_parse_function_args( + NAME px4_add_sitl_app + ONE_VALUE APP_NAME MAIN_SRC UPLOAD_NAME + REQUIRED APP_NAME MAIN_SRC + ARGN ${ARGN}) + + px4_add_executable(${APP_NAME} + ${MAIN_SRC} + apps.cpp + ) + + if (NOT APPLE) + target_link_libraries(${APP_NAME} + -Wl,--start-group + ${module_libraries} + ${df_driver_libs} + pthread m rt + -Wl,--end-group + ) + else() + target_link_libraries(${APP_NAME} + ${module_libraries} + ${df_driver_libs} + pthread m + ) + endif() + +endfunction() + +#============================================================================= +# sitl run targets +# + +SET(SITL_RUNNER_MAIN_CPP ${PX4_SOURCE_DIR}/src/platforms/posix/main.cpp) +px4_add_sitl_app(APP_NAME px4 + UPLOAD_NAME upload + MAIN_SRC ${SITL_RUNNER_MAIN_CPP} + ) + +set(SITL_WORKING_DIR ${PX4_BINARY_DIR}/tmp) +file(MAKE_DIRECTORY ${SITL_WORKING_DIR}) + +add_custom_target(run_config + COMMAND Tools/sitl_run.sh + $<TARGET_FILE:px4> + ${config_sitl_rcS_dir} + ${config_sitl_debugger} + ${config_sitl_viewer} + ${config_sitl_model} + ${PX4_SOURCE_DIR} + ${PX4_BINARY_DIR} + WORKING_DIRECTORY ${SITL_WORKING_DIR} + USES_TERMINAL + ) +add_dependencies(run_config px4) + +# project to build sitl_gazebo if necessary +ExternalProject_Add(sitl_gazebo + SOURCE_DIR ${PX4_SOURCE_DIR}/Tools/sitl_gazebo + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + BINARY_DIR ${PX4_BINARY_DIR}/build_gazebo + INSTALL_COMMAND "" + ) +set_target_properties(sitl_gazebo PROPERTIES EXCLUDE_FROM_ALL TRUE) + +# create targets for each viewer/model/debugger combination +set(viewers none jmavsim gazebo replay) +set(debuggers none ide gdb lldb ddd valgrind) +set(models none iris iris_opt_flow tailsitter standard_vtol plane solo typhoon_h480) +set(all_posix_vmd_make_targets) +foreach(viewer ${viewers}) + foreach(debugger ${debuggers}) + foreach(model ${models}) + if (debugger STREQUAL "none") + if (model STREQUAL "none") + set(_targ_name "${viewer}") + else() + set(_targ_name "${viewer}_${model}") + endif() + else() + if (model STREQUAL "none") + set(_targ_name "${viewer}___${debugger}") + else() + set(_targ_name "${viewer}_${model}_${debugger}") + endif() + endif() + + if (debugger STREQUAL "ide" AND viewer STREQUAL "gazebo") + SET(SITL_RUNNER_SOURCE_DIR ${PX4_SOURCE_DIR}) + SET(SITL_RUNNER_MODEL_FILE ${PX4_SOURCE_DIR}/${config_sitl_rcS_dir}/${model}) + SET(SITL_RUNNER_WORKING_DIRECTORY ${SITL_WORKING_DIR}) + + CONFIGURE_FILE(${PX4_SOURCE_DIR}/src/platforms/posix/sitl_runner_main.cpp.in sitl_runner_main_${model}.cpp @ONLY) + + px4_add_sitl_app(APP_NAME px4_${model} + UPLOAD_NAME upload_${model} + MAIN_SRC ${CMAKE_CURRENT_BINARY_DIR}/sitl_runner_main_${model}.cpp + ) + + endif() + + add_custom_target(${_targ_name} + COMMAND ${PX4_SOURCE_DIR}/Tools/sitl_run.sh + $<TARGET_FILE:px4> + ${config_sitl_rcS_dir} + ${debugger} + ${viewer} + ${model} + ${PX4_SOURCE_DIR} + ${PX4_BINARY_DIR} + WORKING_DIRECTORY ${SITL_WORKING_DIR} + USES_TERMINAL + ) + list(APPEND all_posix_vmd_make_targets ${_targ_name}) + if (viewer STREQUAL "gazebo") + add_dependencies(${_targ_name} sitl_gazebo) + endif() + endforeach() + endforeach() +endforeach() + +px4_join(OUT posix_vmd_make_target_list LIST ${all_posix_vmd_make_targets} GLUE "\\n") +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:" + VERBATIM + )