cmake_minimum_required(VERSION 3.13) # Can also be changed by upper CMakeLists.txt file find_library(LIB_FSFW_NAME fsfw REQUIRED) option(FSFW_HAL_ADD_LINUX "Add the Linux HAL to the sources. Required gpiod library" OFF) option(FSFW_HAL_ADD_RASPBERRY_PI "Add Raspberry Pi specific code to the sources" OFF) option(FSFW_HAL_ADD_STM32H7 "Add the STM32H7 HAL to the sources" OFF) option(FSFW_HAL_WARNING_SHADOW_LOCAL_GCC "Enable -Wshadow=local warning in GCC" ON) set(LIB_FSFW_HAL_NAME fsfw_hal) set(LINUX_HAL_PATH_NAME linux) set(STM32H7_PATH_NAME stm32h7) add_library(${LIB_FSFW_HAL_NAME}) if(NOT LIB_FSFW_NAME) message(ERROR "LIB_FSFW_NAME needs to be set as a linkable target") endif() add_subdirectory(common) if(FSFW_HAL_ADD_LINUX) add_subdirectory(${LINUX_HAL_PATH_NAME}) endif() if(FSFW_HAL_ADD_STM32H7) add_subdirectory(${STM32H7_PATH_NAME}) endif() target_link_libraries(${LIB_FSFW_HAL_NAME} PRIVATE ${LIB_FSFW_NAME} ) target_include_directories(${LIB_FSFW_HAL_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(NOT DEFINED FSFW_WARNING_FLAGS) set(FSFW_WARNING_FLAGS -Wall -Wextra -Wimplicit-fallthrough=1 -Wno-unused-parameter ) endif() target_compile_options(${LIB_FSFW_NAME} PRIVATE "-ffunction-sections" "-fdata-sections" ) target_link_options(${LIB_FSFW_NAME} PRIVATE "Wl,--gc-sections" ) if(FSFW_HAL_WARNING_SHADOW_LOCAL_GCC) list(APPEND WARNING_FLAGS "-Wshadow=local") endif() endif()