nshell/CMakeLists.txt

112 lines
2.4 KiB
CMake
Raw Normal View History

2021-08-31 15:52:53 +02:00
# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the
# toolchain file and module path of the fxSDK
cmake_minimum_required(VERSION 3.18)
# replace this with your project's name
2021-09-02 19:02:54 +02:00
project(unshell C ASM)
2021-08-31 15:52:53 +02:00
include(GenerateG1A)
include(GenerateG3A)
include(Fxconv)
find_package(Gint 2.5 REQUIRED)
# include directories, put your .h files in those folders
include_directories(include)
2021-09-09 23:43:50 +02:00
include_directories(wren/include)
2021-09-10 21:43:19 +02:00
include_directories("${FXSDK_COMPILER_INSTALL}/include/openlibm")
2021-08-31 15:52:53 +02:00
# source files
set(SOURCES
src/main.c
src/term.c
2021-09-01 11:04:31 +02:00
src/ui.c
2021-09-02 19:04:01 +02:00
src/battery.c
2021-09-02 19:02:54 +02:00
src/syscalls.S
2021-09-10 21:43:19 +02:00
)
set(SOURCES_WREN
2021-09-09 23:43:50 +02:00
wren/src/wren_compiler.c
wren/src/wren_core.c
wren/src/wren_debug.c
wren/src/wren_primitive.c
wren/src/wren_utils.c
wren/src/wren_value.c
wren/src/wren_vm.c
2021-09-10 18:29:10 +02:00
wren/src/wren_opt_meta.c
wren/src/wren_opt_random.c
2021-08-31 15:52:53 +02:00
)
2021-09-10 21:43:19 +02:00
2021-08-31 15:52:53 +02:00
# shared assets
set(ASSETS
# ...
)
# fx-9860G-only assets (monochrome)
set(ASSETS_fx
assets-fx/example.png
# ...
)
# fx-CG-50-only assets (polychrome)
set(ASSETS_cg
assets-cg/example.png
assets-cg/uf5x7
# ...
)
# Compile flags
set(FLAGS
# C standard, other values: c89, c99
-std=c11
# general warnings
-Wall -Wextra -pedantic
# enable this flag to stop compilation on warnings
#-Werror
# specific warnings
# variable shadowing
-Wshadow
# switch/case safety
-Wswitch-default -Wswitch-enum
# unreachable code, bad 99% of the time
-Wunreachable-code
# prototypes warnings
-Wstrict-prototypes -Wmissing-prototypes
# function declaration
-Werror-implicit-function-declaration
# optimisation level
# -Os: like -O2 without space-expensive optimizations
# -O2: good speed/size tradeoff
# -O3: gotta go fast
-Os
)
2021-09-10 21:43:19 +02:00
set(FLAGS_WREN
-std=c99
-O3
)
2021-08-31 15:52:53 +02:00
2021-09-10 21:43:19 +02:00
set(CMAKE_ASM_FLAGS "-x assembler-with-cpp")
2021-09-02 19:02:54 +02:00
2021-09-10 21:43:19 +02:00
add_library(Wren ${SOURCES_WREN})
target_compile_options(Wren PRIVATE ${FLAGS_WREN})
2021-08-31 15:52:53 +02:00
2021-09-10 21:43:19 +02:00
fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA)
2021-08-31 15:52:53 +02:00
add_executable(Main ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
target_compile_options(Main PRIVATE ${FLAGS})
2021-09-10 21:43:19 +02:00
target_link_libraries(Main Wren Gint::Gint)
2021-08-31 15:52:53 +02:00
if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G)
generate_g1a(
TARGET Main
OUTPUT "${PROJECT_NAME}.g1a"
NAME "${PROJECT_NAME}"
ICON assets-fx/icon.png)
elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
generate_g3a(
TARGET Main
OUTPUT "${PROJECT_NAME}.g3a"
NAME "${PROJECT_NAME}"
ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
endif()