You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
80 lines
2.4 KiB
cmake_minimum_required(VERSION 3.13...3.18)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
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")
|
|
set(SVD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/dev/svd")
|
|
set(DOWNLOADS_DIR "${MAIN_DIR}/downloads")
|
|
set(TOOLS_DIR "${MAIN_DIR}/tools")
|
|
|
|
set(TOOLCHAIN_OPTIONS none arm-none-eabi)
|
|
set(TOOLCHAIN "arm-none-eabi" CACHE STRING "Toolchain to use. Available: ${TOOLCHAIN_OPTIONS}")
|
|
set_property(CACHE TOOLCHAIN PROPERTY STRINGS ${TOOLCHAIN_OPTIONS})
|
|
if("" STREQUAL TOOLCHAIN)
|
|
set(TOOLCHAIN none)
|
|
endif()
|
|
if (NOT ${TOOLCHAIN} IN_LIST TOOLCHAIN_OPTIONS)
|
|
message(FATAL_ERROR "Invalid toolchain ${TOOLCHAIN}. Valid options are: ${TOOLCHAIN_OPTIONS}")
|
|
endif()
|
|
|
|
option(COMPILER_VERSION_CHECK "Ensure the compiler matches the expected version" ON)
|
|
|
|
include(GetGitRevisionDescription)
|
|
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
|
|
string(SUBSTRING ${GIT_SHA1} 0 8 GIT_REV)
|
|
|
|
# Load settings related functions, so the tests can use them
|
|
include(main)
|
|
include(settings)
|
|
|
|
if(TOOLCHAIN STREQUAL none)
|
|
add_subdirectory(src/test)
|
|
else()
|
|
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TOOLCHAIN}.cmake")
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TOOLCHAIN}-checks.cmake")
|
|
endif()
|
|
|
|
project(INAV VERSION 5.0.0)
|
|
|
|
enable_language(ASM)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_EXTENSIONS ON)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_EXTENSIONS ON)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
find_program(RUBY_EXECUTABLE ruby)
|
|
if (NOT RUBY_EXECUTABLE)
|
|
message(FATAL_ERROR "Could not find ruby")
|
|
endif()
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
set(IS_RELEASE_BUILD ON)
|
|
endif()
|
|
|
|
set(FIRMWARE_VERSION ${PROJECT_VERSION})
|
|
|
|
option(WARNINGS_AS_ERRORS "Make all warnings into errors")
|
|
message("-- toolchain: ${TOOLCHAIN}, WARNINGS_AS_ERRORS: ${WARNINGS_AS_ERRORS}")
|
|
|
|
set(COMMON_COMPILE_DEFINITIONS
|
|
FC_VERSION_MAJOR=${CMAKE_PROJECT_VERSION_MAJOR}
|
|
FC_VERSION_MINOR=${CMAKE_PROJECT_VERSION_MINOR}
|
|
FC_VERSION_PATCH_LEVEL=${CMAKE_PROJECT_VERSION_PATCH}
|
|
)
|
|
|
|
include(openocd)
|
|
include(svd)
|
|
include(stm32)
|
|
|
|
add_subdirectory(src)
|
|
|
|
collect_targets()
|
|
|
|
message("-- Build type: ${CMAKE_BUILD_TYPE}")
|
|
include(ci)
|