mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
Added WARNINGS_AS_ERRORS cmake option for radio firmware
This commit is contained in:
parent
e5a5a6319f
commit
0d74148d70
2 changed files with 98 additions and 94 deletions
|
@ -23,6 +23,7 @@ option(SIMU_AUDIO "Enable simulator audio" OFF)
|
|||
option(SIMU_DISKIO "Enable disk IO simulation in simulator. Simulator will use FatFs module and simulated IO layer that uses \"./sdcard.image\" file as image of SD card. This file must contain whole SD card from first to last sector" OFF)
|
||||
option(FAS_PROTOTYPE "Support of old FAS prototypes (different resistors)" OFF)
|
||||
option(TEMPLATES "Model templates menu" OFF)
|
||||
option(WARNINGS_AS_ERRORS "Treat all compiler warnings as error" OFF)
|
||||
|
||||
enable_language(ASM)
|
||||
set(OPT s)
|
||||
|
@ -317,6 +318,9 @@ add_definitions(-DCORRECT_NEGATIVE_SHIFTS)
|
|||
|
||||
if(NOT WIN32)
|
||||
add_definitions(-Wall -Wno-strict-aliasing -Wformat -Wreturn-type -Wunused -Wuninitialized -Wunknown-pragmas -Wno-switch -Wtype-limits)
|
||||
if(WARNINGS_AS_ERRORS)
|
||||
set(WARNING_FLAGS -Werror)
|
||||
endif(WARNINGS_AS_ERRORS)
|
||||
else()
|
||||
add_definitions(-DHAVE_STRUCT_TIMESPEC)
|
||||
endif()
|
||||
|
@ -338,103 +342,103 @@ set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LI
|
|||
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET>")
|
||||
|
||||
if(NOT MSVC)
|
||||
if(ARCH STREQUAL ARM)
|
||||
cmake_force_c_compiler(arm-none-eabi-gcc GNU)
|
||||
cmake_force_cxx_compiler(arm-none-eabi-g++ GNU)
|
||||
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
|
||||
if(ARCH STREQUAL ARM)
|
||||
cmake_force_c_compiler(arm-none-eabi-gcc GNU)
|
||||
cmake_force_cxx_compiler(arm-none-eabi-g++ GNU)
|
||||
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>")
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -o <OBJECT> <SOURCE>")
|
||||
|
||||
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=firmware.lst -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
|
||||
# Remove once the minimum cmake version is set to 3.1 in the main CmakeLists.tx
|
||||
if (${CMAKE_VERSION} VERSION_LESS 3.1.0})
|
||||
set(COMMON_CPP_FLAGS "${COMMON_FLAGS} -std=gnu++11")
|
||||
else()
|
||||
set(COMMON_CPP_FLAGS ${COMMON_FLAGS})
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${COMMON_FLAGS} -Wimplicit -g")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${COMMON_FLAGS} -Wimplicit")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${COMMON_FLAGS} -Wimplicit -g")
|
||||
set(CMAKE_CXX_FLAGS "${COMMON_CPP_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${COMMON_CPP_FLAGS} -g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${COMMON_CPP_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CPP_FLAGS} -g")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=firmware.map,--cref,--no-warn-mismatch,--gc-sections")
|
||||
set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=firmware.lst -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}")
|
||||
# Remove once the minimum cmake version is set to 3.1 in the main CmakeLists.tx
|
||||
if (${CMAKE_VERSION} VERSION_LESS 3.1.0})
|
||||
set(COMMON_CPP_FLAGS "${COMMON_FLAGS} -std=gnu++11")
|
||||
else()
|
||||
set(COMMON_CPP_FLAGS ${COMMON_FLAGS})
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -Wimplicit")
|
||||
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${COMMON_FLAGS} -Wimplicit -g")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${COMMON_FLAGS} -Wimplicit")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${COMMON_FLAGS} -Wimplicit -g")
|
||||
set(CMAKE_CXX_FLAGS "${COMMON_CPP_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${COMMON_CPP_FLAGS} -g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${COMMON_CPP_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${COMMON_CPP_FLAGS} -g")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-mcpu=${MCU} -mthumb -lm -T${RADIO_SRC_DIRECTORY}/${LINKER_SCRIPT} -Wl,-Map=firmware.map,--cref,--no-warn-mismatch,--gc-sections")
|
||||
|
||||
if(PCB STREQUAL X9D OR PCB STREQUAL X9D+ OR PCB STREQUAL X9E OR PCB STREQUAL X7D)
|
||||
add_subdirectory(targets/${TARGET_DIR}/bootloader)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/targets/${TARGET_DIR}/bootloader)
|
||||
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} bootloader)
|
||||
if(PCB STREQUAL X9D OR PCB STREQUAL X9D+ OR PCB STREQUAL X9E OR PCB STREQUAL X7D)
|
||||
add_subdirectory(targets/${TARGET_DIR}/bootloader)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/targets/${TARGET_DIR}/bootloader)
|
||||
set(FIRMWARE_DEPENDENCIES ${FIRMWARE_DEPENDENCIES} bootloader)
|
||||
else()
|
||||
# We fetch Mike's bootloader as it is not included inside OpenTX
|
||||
file(DOWNLOAD https://github.com/MikeBland/OpenRcBootloader/releases/download/V1.9/${BOOTLOADER} ${CMAKE_CURRENT_BINARY_DIR}/bootloader.lbm)
|
||||
endif()
|
||||
|
||||
add_executable(firmware ${SRC} ${FIRMWARE_HEADERS})
|
||||
link_libraries(firmware -lstdc++)
|
||||
add_dependencies(firmware ${FIRMWARE_DEPENDENCIES})
|
||||
|
||||
add_custom_command(
|
||||
TARGET firmware POST_BUILD
|
||||
COMMAND arm-none-eabi-objcopy -O binary firmware.elf firmware.bin
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
else()
|
||||
# We fetch Mike's bootloader as it is not included inside OpenTX
|
||||
file(DOWNLOAD https://github.com/MikeBland/OpenRcBootloader/releases/download/V1.9/${BOOTLOADER} ${CMAKE_CURRENT_BINARY_DIR}/bootloader.lbm)
|
||||
cmake_force_c_compiler(avr-gcc GNU)
|
||||
cmake_force_cxx_compiler(avr-gcc GNU)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-mmcu=${MCU} -DF_CPU=16000000UL -O${OPT} -gdwarf-2 -fno-exceptions -flto -fwhole-program -fno-inline-small-functions -mstrict-X ${WARNING_FLAGS}")
|
||||
# Remove once the minimum cmake version is set to 3.1 in the main CmakeLists.tx
|
||||
if (${CMAKE_VERSION} VERSION_LESS 3.1.0})
|
||||
set(CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
|
||||
include_directories(storage gui/${GUI_DIR})
|
||||
|
||||
set(ALLSRC ${PROJECT_BINARY_DIR}/allsrc.cpp)
|
||||
foreach(FILE ${SRC})
|
||||
file(READ ${FILE} FILE_CONTENT)
|
||||
set(ALLSRC_CONTENT "${ALLSRC_CONTENT}# 1 \"${FILE}\"\n${FILE_CONTENT}")
|
||||
endforeach()
|
||||
|
||||
file(WRITE ${ALLSRC} "${ALLSRC_CONTENT}")
|
||||
|
||||
add_executable(firmware ${ALLSRC})
|
||||
add_dependencies(firmware ${FIRMWARE_DEPENDENCIES})
|
||||
|
||||
add_custom_command(
|
||||
TARGET firmware POST_BUILD
|
||||
COMMAND avr-objcopy -O ihex -R .eeprom firmware.elf firmware.hex
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_custom_target(firmware.lss
|
||||
COMMAND avr-objdump -h -S firmware.elf > firmware.lss
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_custom_target(firmware-size
|
||||
COMMAND avr-size --format=avr --mcu=${MCU} firmware.elf
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
add_executable(firmware ${SRC} ${FIRMWARE_HEADERS})
|
||||
link_libraries(firmware -lstdc++)
|
||||
add_dependencies(firmware ${FIRMWARE_DEPENDENCIES})
|
||||
|
||||
add_custom_command(
|
||||
TARGET firmware POST_BUILD
|
||||
COMMAND arm-none-eabi-objcopy -O binary firmware.elf firmware.bin
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
else()
|
||||
cmake_force_c_compiler(avr-gcc GNU)
|
||||
cmake_force_cxx_compiler(avr-gcc GNU)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-mmcu=${MCU} -DF_CPU=16000000UL -O${OPT} -gdwarf-2 -fno-exceptions -flto -fwhole-program -fno-inline-small-functions -mstrict-X ${WARNING_FLAGS}")
|
||||
# Remove once the minimum cmake version is set to 3.1 in the main CmakeLists.tx
|
||||
if (${CMAKE_VERSION} VERSION_LESS 3.1.0})
|
||||
set(CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
|
||||
include_directories(storage gui/${GUI_DIR})
|
||||
|
||||
set(ALLSRC ${PROJECT_BINARY_DIR}/allsrc.cpp)
|
||||
foreach(FILE ${SRC})
|
||||
file(READ ${FILE} FILE_CONTENT)
|
||||
set(ALLSRC_CONTENT "${ALLSRC_CONTENT}# 1 \"${FILE}\"\n${FILE_CONTENT}")
|
||||
endforeach()
|
||||
|
||||
file(WRITE ${ALLSRC} "${ALLSRC_CONTENT}")
|
||||
|
||||
add_executable(firmware ${ALLSRC})
|
||||
add_dependencies(firmware ${FIRMWARE_DEPENDENCIES})
|
||||
|
||||
add_custom_command(
|
||||
TARGET firmware POST_BUILD
|
||||
COMMAND avr-objcopy -O ihex -R .eeprom firmware.elf firmware.hex
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
if(CPU_FAMILY STREQUAL STM32)
|
||||
add_custom_target(flash
|
||||
COMMAND dfu-util --alt 0 --dfuse-address 0x08000000:leave -d 0483:df11 -D firmware.bin
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_custom_target(firmware.lss
|
||||
COMMAND avr-objdump -h -S firmware.elf > firmware.lss
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_custom_target(firmware-size
|
||||
COMMAND avr-size --format=avr --mcu=${MCU} firmware.elf
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CPU_FAMILY STREQUAL STM32)
|
||||
add_custom_target(flash
|
||||
COMMAND dfu-util --alt 0 --dfuse-address 0x08000000:leave -d 0483:df11 -D firmware.bin
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
||||
add_custom_target(jtag-flash
|
||||
COMMAND st-flash --reset write firmware.bin 0x8000000
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
add_custom_target(jtag-flash
|
||||
COMMAND st-flash --reset write firmware.bin 0x8000000
|
||||
DEPENDS firmware
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
endif()
|
||||
endif(NOT MSVC)
|
||||
|
|
|
@ -113,14 +113,14 @@ make -j${CORES} gtests ; ./gtests
|
|||
|
||||
# OpenTX on Horus beta boards
|
||||
rm -rf *
|
||||
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DPCBREV=10 -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
|
||||
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DPCBREV=10 -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
|
||||
make -j${CORES} firmware
|
||||
make -j${CORES} simu
|
||||
make -j${CORES} gtests ; ./gtests
|
||||
|
||||
# OpenTX on Horus
|
||||
rm -rf *
|
||||
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DHELI=YES -DLUA=YES -DGVARS=YES ${SRCDIR}
|
||||
cmake ${COMMON_OPTIONS} -DPCB=HORUS -DHELI=YES -DLUA=YES -DGVARS=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR}
|
||||
make -j${CORES} firmware
|
||||
make -j${CORES} simu
|
||||
make -j${CORES} gtests ; ./gtests
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue