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 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 -Wl,--gc-sections )