HVAC_M7_MONO/CMakeLists.txt

198 lines
7.0 KiB
CMake

#-- Service --------------------------------------------------------------------
SET(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/MODULES/CmakeConfig_GCC_CortexM7/gcc_cm7f.cmake)
ENABLE_LANGUAGE(ASM)
CMAKE_MINIMUM_REQUIRED(VERSION 3.8.0)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O1 ")
IF (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
MESSAGE(
FATAL_ERROR
"In-source builds not allowed.
Please make a new directory (called a build directory) and run CMake from there.
You may need to remove CMakeCache.txt."
)
ENDIF ()
SET(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#-- Project config -------------------------------------------------------------
PROJECT(HVAC_M7) # Project name
SET(INTERNAL_HW_YEAR 26)
SET(INTERNAL_HW_MONTH 8)
SET(INTERNAL_HW_DAY 19)
SET(INTERNAL_HW_REV 1)
SET(INTERNAL_SW_YEAR 26)
SET(INTERNAL_SW_MONTH 9)
SET(INTERNAL_SW_DAY 30)
SET(INTERNAL_SW_REV 14)
SET(INTERNAL_MDB_YEAR 26)
SET(INTERNAL_MDB_MONTH 9)
SET(INTERNAL_MDB_DAY 30)
SET(INTERNAL_MDB_REV 14)
SET(FINGER_MODULE 0x01)
SET(FINGER_YEAR 0x26)
SET(FINGER_MONTH 0x08)
SET(FINGER_DAY 0x16)
SET(FINGER_TESTER_SERIAL \"M\")
SET(VECT_TAB_OFFSET "0x00000")
#-- Defines --------------------------------------------------------------------
#ADD_DEFINITIONS(-DLFS_NO_ASSERT=1)
ADD_DEFINITIONS(-DINTERNAL_HW_YEAR=${INTERNAL_HW_YEAR})
ADD_DEFINITIONS(-DINTERNAL_HW_MONTH=${INTERNAL_HW_MONTH})
ADD_DEFINITIONS(-DINTERNAL_HW_DAY=${INTERNAL_HW_DAY})
ADD_DEFINITIONS(-DINTERNAL_HW_REV=${INTERNAL_HW_REV})
#ADD_DEFINITIONS(-DINTERNAL_SW_YEAR=${INTERNAL_SW_YEAR})
#ADD_DEFINITIONS(-DINTERNAL_SW_MONTH=${INTERNAL_SW_MONTH})
#ADD_DEFINITIONS(-DINTERNAL_SW_DAY=${INTERNAL_SW_DAY})
#ADD_DEFINITIONS(-DINTERNAL_SW_REV=${INTERNAL_SW_REV})
#ADD_DEFINITIONS(-DINTERNAL_MDB_YEAR=${INTERNAL_MDB_YEAR})
#ADD_DEFINITIONS(-DINTERNAL_MDB_MONTH=${INTERNAL_MDB_MONTH})
#ADD_DEFINITIONS(-DINTERNAL_MDB_DAY=${INTERNAL_MDB_DAY})
#ADD_DEFINITIONS(-DINTERNAL_MDB_REV=${INTERNAL_MDB_REV})
ADD_DEFINITIONS(-DFINGER_MODULE=${FINGER_MODULE})
ADD_DEFINITIONS(-DFINGER_YEAR=${FINGER_YEAR})
ADD_DEFINITIONS(-DFINGER_MONTH=${FINGER_MONTH})
ADD_DEFINITIONS(-DFINGER_DAY=${FINGER_DAY})
ADD_DEFINITIONS(-DFINGER_TESTER_SERIAL=${FINGER_TESTER_SERIAL})
ADD_DEFINITIONS(-DUSING_OS_FREERTOS)
ADD_DEFINITIONS(-DVERSION_SEDANL_Y=26)
ADD_DEFINITIONS(-DVERSION_SEDANL_M=1)
ADD_DEFINITIONS(-DVERSION_SEDANL_D=1)
ADD_DEFINITIONS(-DVERSION_SEDANH_Y=25)
ADD_DEFINITIONS(-DVERSION_SEDANH_M=10)
ADD_DEFINITIONS(-DVERSION_SEDANH_D=29)
ADD_DEFINITIONS(-DVERSION_LIMO_Y=25)
ADD_DEFINITIONS(-DVERSION_LIMO_M=10)
ADD_DEFINITIONS(-DVERSION_LIMO_D=29)
ADD_DEFINITIONS(-DVERSION_SUV_Y=25)
ADD_DEFINITIONS(-DVERSION_SUV_M=10)
ADD_DEFINITIONS(-DVERSION_SUV_D=29)
ADD_DEFINITIONS(-DVERSION_MPV_Y=25)
ADD_DEFINITIONS(-DVERSION_MPV_M=10)
ADD_DEFINITIONS(-DVERSION_MPV_D=29)
ADD_DEFINITIONS(-DVECT_TAB_OFFSET=${VECT_TAB_OFFSET})
ADD_DEFINITIONS(-DHEXT_VALUE=${HEXT_VALUE})
ADD_DEFINITIONS(-DCMSIS_device_header="interrupt_manager.h")
ADD_DEFINITIONS(-DFLASH_PAGE_D_SIZE=2048)
ADD_DEFINITIONS(-DFLASH_PAGE_P_SIZE=4096)
ADD_DEFINITIONS(-DCOM_INT_BIG_BUFFERS)
ADD_DEFINITIONS(-DVARIABLE_TABLE_WITH_ID)
ADD_DEFINITIONS(-DLFS_THREADSAFE=1)
ADD_DEFINITIONS(-DHALF_DUPLEX_NO_DELAY=1)
ADD_DEFINITIONS(-DACCESS_ADC=1)
ADD_DEFINITIONS(-DACCESS_RTC=1)
ADD_DEFINITIONS(-DSTORAGE_ARTERY_CHECK_CLEAR=1)
#ADD_DEFINITIONS(-DSTORAGE_ARTERY_CHECK_WRITE_SECTORS=1) # Включение записи по секторам (Тестово, закоментированно)
#-- Project paths, Include dirs, Sources list ---------------------------------
#ADD_FILES(SOURCES "MODULES/DeviceStartup_ARTERY_AT32F437ZMT7/ld/startup_at32f435_437.s")
include(modular.cmake)
#-- Options --------------------------------------------------------------------
#IF (PRINTF_FLOAT STREQUAL "1")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -u_printf_float")
#ENDIF ()
IF (SCANF_FLOAT STREQUAL "1")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -u_scanf_float")
ENDIF ()
#-- Linker script --------------------------------------------------------------
SET(LDSCRIPT ${CMAKE_SOURCE_DIR}/APP/FC7240_flash.ld)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T ${LDSCRIPT} -Wl,-Map=${CMAKE_BINARY_DIR}/${PROJECT_NAME}.map -Wl,--print-memory-usage")
#-- Random BuildId Generation ------------------------------------------------------------
SET(RANDOM_BUILD_ID_GEN_FILE ${CMAKE_SOURCE_DIR}/MODULES/CmakeConfig_RandomBuildIdGenerator/version.cmake)
SET(RANDOM_BUILD_ID_GEN_VERSION ${CMAKE_SOURCE_DIR}/MODULES/CmakeConfig_RandomBuildIdGenerator/generate_version.cmake)
add_custom_target(GEN_RANDOM_BUILD_ID)
ADD_CUSTOM_COMMAND(TARGET GEN_RANDOM_BUILD_ID POST_BUILD
COMMAND ${CMAKE_COMMAND} -P ${RANDOM_BUILD_ID_GEN_FILE})
set(SCRIPT_DIR ${CMAKE_SOURCE_DIR}/MODULES/CmakeConfig_RandomBuildIdGenerator)
set(VERSION_H ${SCRIPT_DIR}/Version.h)
set(VERSION_FILE ${SCRIPT_DIR}/.version)
add_custom_target(GEN_RANDOM_BUILD_ID_VERSION)
ADD_CUSTOM_COMMAND(TARGET GEN_RANDOM_BUILD_ID_VERSION POST_BUILD
COMMAND ${CMAKE_COMMAND}
"-DOUT=${VERSION_H}"
"-DVERSION_FILE=${VERSION_FILE}"
-P ${RANDOM_BUILD_ID_GEN_VERSION}
BYPRODUCTS ${VERSION_H}
COMMENT "Generating VersionRandID.h before compilation"
VERBATIM)
#-- Project linking ------------------------------------------------------------
ADD_EXECUTABLE(${PROJECT_NAME}.elf ${SOURCES})
TARGET_LINK_LIBRARIES(${PROJECT_NAME}.elf m)
add_dependencies(${PROJECT_NAME}.elf GEN_RANDOM_BUILD_ID)
add_dependencies(${PROJECT_NAME}.elf GEN_RANDOM_BUILD_ID_VERSION)
#-- Custom commands ------------------------------------------------------------
#ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME}.elf PRE_LINK
# COMMAND ${CMAKE_SOURCE_DIR}/generate_version.sh)
# Файл, который сгенерирует скрипт
SET(VERSION_HEADER ${CMAKE_BINARY_DIR}/generated/version.h)
# Цель, которая гарантированно обновит version.h до компиляции
ADD_CUSTOM_TARGET(GenerateVersion
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/generated
COMMAND ${CMAKE_SOURCE_DIR}/generate_version.sh ${VERSION_HEADER}
BYPRODUCTS ${VERSION_HEADER}
COMMENT "Generating version.h before compilation"
VERBATIM)
# Подключаем сгенерированную папку
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}.elf PRIVATE ${CMAKE_BINARY_DIR}/generated)
# Каждый .obj в таргете ждёт GenerateVersion
ADD_DEPENDENCIES(${PROJECT_NAME}.elf GenerateVersion)
ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME}.elf POST_BUILD
# COMMAND ${CMAKE_SOURCE_DIR}/generate_version.sh
COMMAND ${CMAKE_OBJCOPY} "-Oihex" ${PROJECT_NAME}.elf ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} "-Obinary" ${PROJECT_NAME}.elf ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.bin
# COMMAND ${CMAKE_OBJDUMP} "-DS" ${PROJECT_NAME}.elf > ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.dasm
COMMAND ${CMAKE_SIZE} ${PROJECT_NAME}.elf)