42 lines
993 B
CMake
42 lines
993 B
CMake
cmake_minimum_required(VERSION 3.21)
|
|
project(moonlight LANGUAGES C)
|
|
|
|
|
|
set(MOONLIGHT_ROOT ${CMAKE_CURRENT_LIST_DIR})
|
|
set(MOONLIGHT_INC_DIR ${MOONLIGHT_ROOT}/inc)
|
|
set(MOONLIGHT_SRC_DIR ${MOONLIGHT_ROOT}/src)
|
|
set(MOONLIGHT_LDS_DIR ${MOONLIGHT_ROOT}/lds)
|
|
|
|
if(NOT DEFINED TARGET_MEM)
|
|
set(TARGET_MEM "ram" CACHE STRING "memory map to use")
|
|
endif()
|
|
|
|
if(NOT DEFINED MOONLIGHT_TRAP_SOURCE)
|
|
set(MOONLIGHT_TRAP_SOURCE ${MOONLIGHT_SRC_DIR}/trap_non_vectored.c)
|
|
endif()
|
|
|
|
add_library(moonlight STATIC
|
|
${MOONLIGHT_SRC_DIR}/board.c
|
|
${MOONLIGHT_SRC_DIR}/bootup.c
|
|
${MOONLIGHT_SRC_DIR}/exception.c
|
|
${MOONLIGHT_TRAP_SOURCE}
|
|
)
|
|
|
|
target_include_directories(moonlight PUBLIC ${MOONLIGHT_INC_DIR})
|
|
target_link_directories(moonlight INTERFACE ${MOONLIGHT_LDS_DIR})
|
|
|
|
target_compile_options(moonlight
|
|
PUBLIC
|
|
-ffreestanding
|
|
-fno-builtin
|
|
-fdata-sections
|
|
-ffunction-sections
|
|
)
|
|
|
|
target_link_options(moonlight
|
|
INTERFACE
|
|
-nostartfiles
|
|
-T ${MOONLIGHT_LDS_DIR}/${TARGET_MEM}.lds
|
|
-Wl,--gc-sections
|
|
)
|