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()
|