mirror of
https://github.com/Dev-KATECH/ADM.git
synced 2026-05-17 01:43:59 +09:00
- Drive_Mode.c 수정 : bool 변수 삭제 - Drive_Mode.c/RcRequestCheck 함수 수정 : RC ACU 동시 요청 시 비상정지 : 마지막 요청을 RC_ModeReq에 저장하도록 수정 - Drive_Mode.c/ExecuteEmergencyMode 함수 수정 : VCU_Emergency_Flag 조건 추가 - VSCode에서 빌드 가능하도록 수정 : GW/Debug_STANDALONE 생성
182 lines
5.1 KiB
CMake
182 lines
5.1 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(GW LANGUAGES C ASM)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
|
|
set(GW_TARGET GW.elf)
|
|
set(GW_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/Project_Settings/Linker_Files/linker_flash.ld")
|
|
|
|
if(NOT EXISTS "${GW_LINKER_SCRIPT}")
|
|
message(FATAL_ERROR "Linker script not found: ${GW_LINKER_SCRIPT}")
|
|
endif()
|
|
|
|
if(NOT DEFINED ENV{S32_SDK_PATH})
|
|
message(FATAL_ERROR "S32_SDK_PATH is not set. It must point to the PlatformSDK_S32K3_2021_03 directory.")
|
|
endif()
|
|
|
|
file(TO_CMAKE_PATH "$ENV{S32_SDK_PATH}" S32_SDK_PATH)
|
|
set(S32_RTD_ROOT "${S32_SDK_PATH}/SW32K3_RTD_4_4_0_9_0_D2103")
|
|
|
|
if(CMAKE_SYSROOT)
|
|
set(GW_SYSROOT_FLAG "--sysroot=${CMAKE_SYSROOT}")
|
|
else()
|
|
set(GW_SYSROOT_FLAG "")
|
|
endif()
|
|
|
|
foreach(required_sdk_dir
|
|
"${S32_RTD_ROOT}/Base_TS_T40D34M9I0R0/header"
|
|
"${S32_RTD_ROOT}/Base_TS_T40D34M9I0R0/include"
|
|
"${S32_RTD_ROOT}/Platform_TS_T40D34M9I0R0/include"
|
|
"${S32_RTD_ROOT}/Platform_TS_T40D34M9I0R0/startup/include")
|
|
if(NOT EXISTS "${required_sdk_dir}")
|
|
message(FATAL_ERROR "Required SDK include directory not found: ${required_sdk_dir}")
|
|
endif()
|
|
endforeach()
|
|
|
|
set(GW_SOURCE_ROOTS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Project_Settings/Startup_Code"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/RTD/src"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/board"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/generate/include"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/generate/src"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src"
|
|
)
|
|
|
|
set(GW_DIRECT_INCLUDE_DIRS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
|
)
|
|
|
|
set(GW_RECURSIVE_INCLUDE_ROOTS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/RTD/include"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/board"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/generate/include"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/generate/src"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/HAL/watchdog_hal/inc"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/uds"
|
|
"${S32_RTD_ROOT}/Base_TS_T40D34M9I0R0/header"
|
|
"${S32_RTD_ROOT}/Base_TS_T40D34M9I0R0/include"
|
|
"${S32_RTD_ROOT}/Platform_TS_T40D34M9I0R0/include"
|
|
"${S32_RTD_ROOT}/Platform_TS_T40D34M9I0R0/startup/include"
|
|
)
|
|
|
|
function(gw_collect_directories out_var)
|
|
set(result "")
|
|
foreach(root IN LISTS ARGN)
|
|
if(EXISTS "${root}")
|
|
list(APPEND result "${root}")
|
|
file(GLOB_RECURSE children LIST_DIRECTORIES true CONFIGURE_DEPENDS "${root}/*")
|
|
foreach(child IN LISTS children)
|
|
if(IS_DIRECTORY "${child}")
|
|
list(APPEND result "${child}")
|
|
endif()
|
|
endforeach()
|
|
endif()
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES result)
|
|
set(${out_var} "${result}" PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
gw_collect_directories(GW_INCLUDE_DIRS ${GW_RECURSIVE_INCLUDE_ROOTS})
|
|
list(APPEND GW_INCLUDE_DIRS ${GW_DIRECT_INCLUDE_DIRS})
|
|
list(REMOVE_DUPLICATES GW_INCLUDE_DIRS)
|
|
|
|
set(GW_SOURCES "")
|
|
foreach(root IN LISTS GW_SOURCE_ROOTS)
|
|
file(GLOB_RECURSE root_sources CONFIGURE_DEPENDS
|
|
"${root}/*.c"
|
|
"${root}/*.s"
|
|
"${root}/*.S")
|
|
list(APPEND GW_SOURCES ${root_sources})
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES GW_SOURCES)
|
|
|
|
add_executable(${GW_TARGET} ${GW_SOURCES})
|
|
|
|
target_include_directories(${GW_TARGET} PRIVATE ${GW_INCLUDE_DIRS})
|
|
|
|
target_compile_definitions(${GW_TARGET} PRIVATE
|
|
D_CACHE_ENABLE
|
|
I_CACHE_ENABLE
|
|
GCC
|
|
S32K3XX
|
|
CPU_S32K344
|
|
)
|
|
|
|
target_compile_options(${GW_TARGET} PRIVATE
|
|
$<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>
|
|
$<$<COMPILE_LANGUAGE:C>:-std=c99>
|
|
-Os
|
|
-fshort-enums
|
|
-funsigned-char
|
|
-fstack-usage
|
|
-fdump-ipa-all
|
|
-fomit-frame-pointer
|
|
-fno-zero-initialized-in-bss
|
|
-ggdb3
|
|
-pedantic
|
|
-Wall
|
|
-Wextra
|
|
-fmessage-length=0
|
|
-funsigned-bitfields
|
|
-fno-common
|
|
-Wunused
|
|
-Wstrict-prototypes
|
|
-Wsign-compare
|
|
-Werror=implicit-function-declaration
|
|
-Wundef
|
|
-mcpu=cortex-m7
|
|
-mthumb
|
|
-mlittle-endian
|
|
-mfloat-abi=soft
|
|
-specs=nano.specs
|
|
-specs=nosys.specs
|
|
${GW_SYSROOT_FLAG}
|
|
)
|
|
|
|
target_link_options(${GW_TARGET} PRIVATE
|
|
-nostartfiles
|
|
--entry=Reset_Handler
|
|
-Wl,-Map,${CMAKE_CURRENT_BINARY_DIR}/GW.map
|
|
-Wl,--gc-sections
|
|
-Wl,-u,_printf_float
|
|
-Wl,-u,_scanf_float
|
|
-n
|
|
-mcpu=cortex-m7
|
|
-mthumb
|
|
-mlittle-endian
|
|
-mfloat-abi=soft
|
|
-specs=nano.specs
|
|
-specs=nosys.specs
|
|
${GW_SYSROOT_FLAG}
|
|
-T${GW_LINKER_SCRIPT}
|
|
)
|
|
|
|
target_link_libraries(${GW_TARGET} PRIVATE c m gcc)
|
|
set_property(TARGET ${GW_TARGET} PROPERTY LINK_DEPENDS "${GW_LINKER_SCRIPT}")
|
|
|
|
if(CMAKE_OBJCOPY)
|
|
set(ARM_OBJCOPY "${CMAKE_OBJCOPY}")
|
|
else()
|
|
find_program(ARM_OBJCOPY arm-none-eabi-objcopy REQUIRED)
|
|
endif()
|
|
|
|
if(CMAKE_SIZE)
|
|
set(ARM_SIZE "${CMAKE_SIZE}")
|
|
else()
|
|
find_program(ARM_SIZE arm-none-eabi-size REQUIRED)
|
|
endif()
|
|
|
|
add_custom_command(
|
|
TARGET ${GW_TARGET}
|
|
POST_BUILD
|
|
COMMAND ${ARM_OBJCOPY} -O srec $<TARGET_FILE:${GW_TARGET}> "${CMAKE_CURRENT_BINARY_DIR}/GW.srec"
|
|
COMMAND ${ARM_SIZE} --format=berkeley $<TARGET_FILE:${GW_TARGET}>
|
|
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/GW.srec"
|
|
COMMENT "Generating SREC and size report"
|
|
)
|