diff --git a/CMakeLists.txt b/CMakeLists.txt index a9c54dc803..aa37d9e507 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,17 +33,17 @@ if (NO_GIT_HASH) message(FATAL_ERROR "Could not find git revision. Is git installed?") endif() -set(INAV_DIR "${CMAKE_CURRENT_SOURCE_DIR}") -set(INAV_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib") -set(INAV_UTILS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/utils") -set(INAV_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/main") +set(MAIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +set(MAIN_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib") +set(MAIN_UTILS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/utils") +set(MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/main") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(FIRMWARE_VERSION ${PROJECT_VERSION}) include(settings) -include(inav) +include(main) include(stm32) add_subdirectory(src) diff --git a/cmake/inav.cmake b/cmake/main.cmake similarity index 78% rename from cmake/inav.cmake rename to cmake/main.cmake index 285ee1afeb..977c97f109 100644 --- a/cmake/inav.cmake +++ b/cmake/main.cmake @@ -1,15 +1,15 @@ -set(INAV_INCLUDE_DIRS - "${INAV_LIB_DIR}" - "${INAV_MAIN_SRC_DIR}" - "${INAV_LIB_DIR}/main/MAVLink" +set(MAIN_INCLUDE_DIRS + "${MAIN_LIB_DIR}" + "${MAIN_SRC_DIR}" + "${MAIN_LIB_DIR}/main/MAVLink" ) -set(INAV_DEFINITIONS +set(MAIN_DEFINITIONS __FORKNAME__=inav __REVISION__="${GIT_SHORT_HASH}" ) -set(INAV_COMPILE_OPTIONS +set(MAIN_COMPILE_OPTIONS -Wall -Wextra -Wunsafe-loop-optimizations @@ -18,8 +18,9 @@ set(INAV_COMPILE_OPTIONS -Werror=switch ) -macro(main_sources) # list-var - list(TRANSFORM ${ARGV0} PREPEND "${INAV_MAIN_SRC_DIR}/") +macro(main_sources var) # list-var src-1...src-n + set(${var} ${ARGN}) + list(TRANSFORM ${var} PREPEND "${MAIN_SRC_DIR}/") endmacro() macro(exclude_basenames) # list-var excludes-var @@ -39,9 +40,9 @@ macro(glob_except) # var-name pattern excludes-var endmacro() function(setup_firmware_target name) - target_compile_options(${name} PRIVATE ${INAV_COMPILE_OPTIONS}) - target_include_directories(${name} PRIVATE ${INAV_INCLUDE_DIRS}) - target_compile_definitions(${name} PRIVATE ${INAV_DEFINITIONS} __TARGET__="${name}" ${name}) + target_compile_options(${name} PRIVATE ${MAIN_COMPILE_OPTIONS}) + target_include_directories(${name} PRIVATE ${MAIN_INCLUDE_DIRS}) + target_compile_definitions(${name} PRIVATE ${MAIN_DEFINITIONS} __TARGET__="${name}" ${name}) enable_settings(${name}) # XXX: Don't make SETTINGS_GENERATED_C part of the build, # since it's compiled via #include in settings.c. This will diff --git a/cmake/settings.cmake b/cmake/settings.cmake index f74f6589d9..1521fbc8b9 100644 --- a/cmake/settings.cmake +++ b/cmake/settings.cmake @@ -1,8 +1,8 @@ set(SETTINGS_GENERATED "settings_generated") set(SETTINGS_GENERATED_C "${SETTINGS_GENERATED}.c") set(SETTINGS_GENERATED_H "${SETTINGS_GENERATED}.h") -set(SETTINGS_FILE "${INAV_MAIN_SRC_DIR}/fc/settings.yaml") -set(SETTINGS_GENERATOR "${INAV_UTILS_DIR}/settings.rb") +set(SETTINGS_FILE "${MAIN_SRC_DIR}/fc/settings.yaml") +set(SETTINGS_GENERATOR "${MAIN_UTILS_DIR}/settings.rb") function(enable_settings target) set(dir "${CMAKE_CURRENT_BINARY_DIR}/${target}") @@ -19,7 +19,7 @@ function(enable_settings target) OUTPUT ${dir}/${SETTINGS_GENERATED_H} ${dir}/${SETTINGS_GENERATED_C} COMMAND ${CMAKE_COMMAND} -E env CFLAGS="${cflags}" TARGET=${target} - ${RUBY_EXECUTABLE} ${SETTINGS_GENERATOR} ${INAV_DIR} ${SETTINGS_FILE} -o "${dir}" + ${RUBY_EXECUTABLE} ${SETTINGS_GENERATOR} ${MAIN_DIR} ${SETTINGS_FILE} -o "${dir}" DEPENDS ${SETTINGS_GENERATOR} ${SETTINGS_FILE} ) endfunction() diff --git a/cmake/stm32-stdperiph.cmake b/cmake/stm32-stdperiph.cmake index 8b4e9c2f5b..d085dc6714 100644 --- a/cmake/stm32-stdperiph.cmake +++ b/cmake/stm32-stdperiph.cmake @@ -1,5 +1,4 @@ -set(STM32_STDPERIPH_SRC +main_sources(STM32_STDPERIPH_SRC drivers/bus_spi.c drivers/serial_uart.c -) -main_sources(STM32_STDPERIPH_SRC) \ No newline at end of file +) \ No newline at end of file diff --git a/cmake/stm32.cmake b/cmake/stm32.cmake index 61f3fc5800..bed6af3e01 100644 --- a/cmake/stm32.cmake +++ b/cmake/stm32.cmake @@ -5,9 +5,9 @@ include(stm32f7) include(CMakeParseArguments) -set(CMSIS_DIR "${INAV_LIB_DIR}/main/CMSIS") +set(CMSIS_DIR "${MAIN_LIB_DIR}/main/CMSIS") set(CMSIS_INCLUDE_DIR "${CMSIS_DIR}/Core/Include") -set(CMSIS_DSP_DIR "${INAV_LIB_DIR}/main/CMSIS/DSP") +set(CMSIS_DSP_DIR "${MAIN_LIB_DIR}/main/CMSIS/DSP") set(CMSIS_DSP_INCLUDE_DIR "${CMSIS_DSP_DIR}/Include") set(CMSIS_DSP_SRC @@ -23,56 +23,49 @@ set(CMSIS_DSP_SRC ) list(TRANSFORM CMSIS_DSP_SRC PREPEND "${CMSIS_DSP_DIR}/Source/") -set(STM32_STARTUP_DIR "${INAV_MAIN_SRC_DIR}/startup") +set(STM32_STARTUP_DIR "${MAIN_SRC_DIR}/startup") -set(STM32_VCP_SRC +main_sources(STM32_VCP_SRC drivers/serial_usb_vcp.c drivers/usb_io.c ) -main_sources(STM32_VCP_SRC) -set(STM32_SDCARD_SRC +main_sources(STM32_SDCARD_SRC drivers/sdcard/sdcard.c drivers/sdcard/sdcard_spi.c drivers/sdcard/sdcard_sdio.c drivers/sdcard/sdcard_standard.c ) -main_sources(STM32_SDCARD_SRC) # XXX: This code is not STM32 specific -set(STM32_ASYNCFATFS_SRC +main_sources(STM32_ASYNCFATFS_SRC io/asyncfatfs/asyncfatfs.c io/asyncfatfs/fat_standard.c ) -main_sources(STM32_ASYNCFATFS_SRC) -set(STM32_MSC_SRC +main_sources(STM32_MSC_SRC msc/usbd_msc_desc.c msc/usbd_storage.c ) -main_sources(STM32_MSC_SRC) -set(STM32_MSC_FLASH_SRC +main_sources(STM32_MSC_FLASH_SRC msc/usbd_storage_emfat.c msc/emfat.c msc/emfat_file.c ) -main_sources(STM32_MSC_FLASH_SRC) -set(STM32_MSC_SDCARD_SPI_SRC +main_sources(STM32_MSC_SDCARD_SPI_SRC msc/usbd_storage_sd_spi.c ) -main_sources(STM32_MSC_SDCARD_SPI_SRC) -set(STM32_MSC_SDCARD_SDIO_SRC +main_sources(STM32_MSC_SDCARD_SDIO_SRC msc/usbd_storage_sdio.c ) -main_sources(STM32_MSC_SDCARD_SDIO_SRC) set(STM32_INCLUDE_DIRS "${CMSIS_INCLUDE_DIR}" "${CMSIS_DSP_INCLUDE_DIR}" - "${INAV_MAIN_SRC_DIR}/target" + "${MAIN_SRC_DIR}/target" ) set(STM32_DEFINITIONS @@ -80,7 +73,7 @@ set(STM32_DEFINITIONS set(STM32_DEFAULT_HSE_MHZ 8) -set(STM32_LINKER_DIR "${INAV_MAIN_SRC_DIR}/target/link") +set(STM32_LINKER_DIR "${MAIN_SRC_DIR}/target/link") set(STM32_LIBS lnosys) #if(SEMIHOSTING) diff --git a/cmake/stm32f3-usb.cmake b/cmake/stm32f3-usb.cmake index 231608757a..c14443458f 100644 --- a/cmake/stm32f3-usb.cmake +++ b/cmake/stm32f3-usb.cmake @@ -1,4 +1,4 @@ -set(STM32_USBFS_DIR "${INAV_LIB_DIR}/main/STM32_USB-FS-Device_Driver") +set(STM32_USBFS_DIR "${MAIN_LIB_DIR}/main/STM32_USB-FS-Device_Driver") set(STM32_USBFS_SRC usb_core.c diff --git a/cmake/stm32f3.cmake b/cmake/stm32f3.cmake index 81ff2abc6d..bc1e34c765 100644 --- a/cmake/stm32f3.cmake +++ b/cmake/stm32f3.cmake @@ -2,10 +2,10 @@ include(cortex-m4f) include(stm32-stdperiph) include(stm32f3-usb) -set(STM32F3_STDPERIPH_DIR "${INAV_LIB_DIR}/main/STM32F3/Drivers/STM32F30x_StdPeriph_Driver") -set(STM32F3_CMSIS_DEVICE_DIR "${INAV_LIB_DIR}/main/STM32F3/Drivers/CMSIS/Device/ST/STM32F30x") -set(STM32F3_CMSIS_DRIVERS_DIR "${INAV_LIB_DIR}/main/STM32F3/Drivers/CMSIS") -set(STM32F3_VCP_DIR "${INAV_MAIN_SRC_DIR}/vcp") +set(STM32F3_STDPERIPH_DIR "${MAIN_LIB_DIR}/main/STM32F3/Drivers/STM32F30x_StdPeriph_Driver") +set(STM32F3_CMSIS_DEVICE_DIR "${MAIN_LIB_DIR}/main/STM32F3/Drivers/CMSIS/Device/ST/STM32F30x") +set(STM32F3_CMSIS_DRIVERS_DIR "${MAIN_LIB_DIR}/main/STM32F3/Drivers/CMSIS") +set(STM32F3_VCP_DIR "${MAIN_SRC_DIR}/vcp") set(STM32F3_STDPERIPH_SRC_EXCLUDES stm32f30x_crc.c @@ -15,7 +15,7 @@ set(STM32F3_STDPERIPH_SRC_DIR "${STM32F3_STDPERIPH_DIR}/Src") glob_except(STM32F3_STDPERIPH_SRC "${STM32F3_STDPERIPH_SRC_DIR}/*.c" STM32F3_STDPERIPH_SRC_EXCLUDES) -set(STM32F3_SRC +main_sources(STM32F3_SRC target/system_stm32f30x.c drivers/adc_stm32f30x.c drivers/bus_i2c_stm32f30x.c @@ -25,7 +25,6 @@ set(STM32F3_SRC drivers/timer_impl_stdperiph.c drivers/timer_stm32f30x.c ) -main_sources(STM32F3_SRC) set(STM32F3_VCP_SRC hw_config.c diff --git a/cmake/stm32f4-usb.cmake b/cmake/stm32f4-usb.cmake index 3fbaec4d8d..177d5322df 100644 --- a/cmake/stm32f4-usb.cmake +++ b/cmake/stm32f4-usb.cmake @@ -1,9 +1,9 @@ -set(STM32_USBOTG_DIR "${INAV_LIB_DIR}/main/STM32_USB_OTG_Driver") -set(STM32_USBCORE_DIR "${INAV_LIB_DIR}/main/STM32_USB_Device_Library/Core") -set(STM32_USBCDC_DIR "${INAV_LIB_DIR}/main/STM32_USB_Device_Library/Class/cdc") -set(STM32_USBHID_DIR "${INAV_LIB_DIR}/main/STM32_USB_Device_Library/Class/hid") -set(STM32_USBWRAPPER_DIR "${INAV_LIB_DIR}/main/STM32_USB_Device_Library/Class/hid_cdc_wrapper") -set(STM32_USBMSC_DIR "${INAV_LIB_DIR}/main/STM32_USB_Device_Library/Class/msc") +set(STM32_USBOTG_DIR "${MAIN_LIB_DIR}/main/STM32_USB_OTG_Driver") +set(STM32_USBCORE_DIR "${MAIN_LIB_DIR}/main/STM32_USB_Device_Library/Core") +set(STM32_USBCDC_DIR "${MAIN_LIB_DIR}/main/STM32_USB_Device_Library/Class/cdc") +set(STM32_USBHID_DIR "${MAIN_LIB_DIR}/main/STM32_USB_Device_Library/Class/hid") +set(STM32_USBWRAPPER_DIR "${MAIN_LIB_DIR}/main/STM32_USB_Device_Library/Class/hid_cdc_wrapper") +set(STM32_USBMSC_DIR "${MAIN_LIB_DIR}/main/STM32_USB_Device_Library/Class/msc") set(STM32F4_USB_INCLUDE_DIRS "${STM32_USBOTG_DIR}/inc" diff --git a/cmake/stm32f4.cmake b/cmake/stm32f4.cmake index 405828d905..3e76e7801f 100644 --- a/cmake/stm32f4.cmake +++ b/cmake/stm32f4.cmake @@ -2,10 +2,10 @@ include(cortex-m4f) include(stm32-stdperiph) include(stm32f4-usb) -set(STM32F4_STDPERIPH_DIR "${INAV_LIB_DIR}/main/STM32F4/Drivers/STM32F4xx_StdPeriph_Driver") -set(STM32F4_CMSIS_DEVICE_DIR "${INAV_LIB_DIR}/main/STM32F4/Drivers/CMSIS/Device/ST/STM32F4xx") -set(STM32F4_CMSIS_DRIVERS_DIR "${INAV_LIB_DIR}/main/STM32F4/Drivers/CMSIS") -set(STM32F4_VCP_DIR "${INAV_MAIN_SRC_DIR}/vcpf4") +set(STM32F4_STDPERIPH_DIR "${MAIN_LIB_DIR}/main/STM32F4/Drivers/STM32F4xx_StdPeriph_Driver") +set(STM32F4_CMSIS_DEVICE_DIR "${MAIN_LIB_DIR}/main/STM32F4/Drivers/CMSIS/Device/ST/STM32F4xx") +set(STM32F4_CMSIS_DRIVERS_DIR "${MAIN_LIB_DIR}/main/STM32F4/Drivers/CMSIS") +set(STM32F4_VCP_DIR "${MAIN_SRC_DIR}/vcpf4") set(STM32F4_STDPERIPH_SRC_EXCLUDES stm32f4xx_can.c @@ -32,7 +32,7 @@ set(STM32F4_STDPERIPH_SRC_EXCLUDES set(STM32F4_STDPERIPH_SRC_DIR "${STM32F4_STDPERIPH_DIR}/Src") glob_except(STM32F4_STDPERIPH_SRC "${STM32F4_STDPERIPH_SRC_DIR}/*.c" STM32F4_STDPERIPH_SRC_EXCLUDES) -set(STM32F4_SRC +main_sources(STM32F4_SRC target/system_stm32f4xx.c drivers/adc_stm32f4xx.c drivers/adc_stm32f4xx.c @@ -46,7 +46,6 @@ set(STM32F4_SRC drivers/dma_stm32f4xx.c drivers/sdcard/sdmmc_sdio_f4xx.c ) -main_sources(STM32F4_SRC) set(STM32F4_VCP_SRC stm32f4xx_it.c @@ -57,10 +56,9 @@ set(STM32F4_VCP_SRC ) list(TRANSFORM STM32F4_VCP_SRC PREPEND "${STM32F4_VCP_DIR}/") -set(STM32F4_MSC_SRC +main_sources(STM32F4_MSC_SRC drivers/usb_msc_f4xx.c ) -main_sources(STM32F4_MSC_SRC) set(STM32F4_INCLUDE_DIRS "${CMSIS_INCLUDE_DIR}" diff --git a/cmake/stm32f7-usb.cmake b/cmake/stm32f7-usb.cmake index 851bb98e2f..b57f49e13a 100644 --- a/cmake/stm32f7-usb.cmake +++ b/cmake/stm32f7-usb.cmake @@ -1,4 +1,4 @@ -set(STM32F7_USBCORE_DIR "${INAV_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Core") +set(STM32F7_USBCORE_DIR "${MAIN_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Core") set(STM32F7_USBCORE_SRC usbd_core.c usbd_ctlreq.c @@ -6,25 +6,25 @@ set(STM32F7_USBCORE_SRC ) list(TRANSFORM STM32F7_USBCORE_SRC PREPEND "${STM32F7_USBCORE_DIR}/Src/") -set(STM32F7_USBCDC_DIR "${INAV_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/CDC") +set(STM32F7_USBCDC_DIR "${MAIN_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/CDC") set(STM32F7_USBCDC_SRC usbd_cdc.c ) list(TRANSFORM STM32F7_USBCDC_SRC PREPEND "${STM32F7_USBCDC_DIR}/Src/") -set(STM32F7_USBHID_DIR "${INAV_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/HID") +set(STM32F7_USBHID_DIR "${MAIN_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/HID") set(STM32F7_USBHID_SRC usbd_hid.c ) list(TRANSFORM STM32F7_USBHID_SRC PREPEND "${STM32F7_USBHID_DIR}/Src/") -set(STM32F7_USBCDCHID_DIR "${INAV_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_HID") +set(STM32F7_USBCDCHID_DIR "${MAIN_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/CDC_HID") set(STM32F7_USBCDCHID_SRC usbd_cdc_hid.c ) list(TRANSFORM STM32F7_USBCDCHID_SRC PREPEND "${STM32F7_USBCDCHID_DIR}/Src/") -set(STM32F7_USBMSC_DIR "${INAV_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC") +set(STM32F7_USBMSC_DIR "${MAIN_LIB_DIR}/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/MSC") set(STM32F7_USBMSC_SRC usbd_msc.c usbd_msc_bot.c diff --git a/cmake/stm32f7.cmake b/cmake/stm32f7.cmake index 6a3db80cdf..7627fd4334 100644 --- a/cmake/stm32f7.cmake +++ b/cmake/stm32f7.cmake @@ -1,7 +1,7 @@ include(cortex-m7) include(stm32f7-usb) -set(STM32F7_HAL_DIR "${INAV_LIB_DIR}/main/STM32F7/Drivers/STM32F7xx_HAL_Driver") +set(STM32F7_HAL_DIR "${MAIN_LIB_DIR}/main/STM32F7/Drivers/STM32F7xx_HAL_Driver") set(STM32F7_HAL_SRC stm32f7xx_hal.c @@ -41,9 +41,9 @@ set(STM32F7_HAL_SRC ) list(TRANSFORM STM32F7_HAL_SRC PREPEND "${STM32F7_HAL_DIR}/src/") -set(STM32F7_CMSIS_DEVICE_DIR "${INAV_LIB_DIR}/main/STM32F7/Drivers/CMSIS/Device/ST/STM32F7xx") +set(STM32F7_CMSIS_DEVICE_DIR "${MAIN_LIB_DIR}/main/STM32F7/Drivers/CMSIS/Device/ST/STM32F7xx") -set(STM32F7_VCP_DIR "${INAV_MAIN_SRC_DIR}/vcp_hal") +set(STM32F7_VCP_DIR "${MAIN_SRC_DIR}/vcp_hal") set(STM32F7_VCP_SRC usbd_desc.c @@ -57,7 +57,7 @@ set(STM32F7_INCLUDE_DIRS ${STM32F7_CMSIS_DEVICE_DIR}/Include ) -set(STM32F7_SRC +main_sources(STM32F7_SRC target/system_stm32f7xx.c drivers/adc_stm32f7xx.c drivers/bus_i2c_hal.c @@ -71,12 +71,10 @@ set(STM32F7_SRC drivers/serial_uart_hal.c drivers/sdcard/sdmmc_sdio_f7xx.c ) -main_sources(STM32F7_SRC) -set(STM32F7_MSC_SRC +main_sources(STM32F7_MSC_SRC drivers/usb_msc_f7xx.c ) -main_sources(STM32F7_MSC_SRC) set(STM32F7_DEFINITIONS ${CORTEX_M7_DEFINITIONS} diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index cc1ddafed8..71eed6f906 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -1,4 +1,4 @@ -set(COMMON_SRC +main_sources(COMMON_SRC main.c target/common_hardware.c @@ -336,6 +336,4 @@ set(COMMON_SRC io/vtx_control.c ) -main_sources(COMMON_SRC) - add_subdirectory(target)