# 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
 project(Windmill)
 
 include(GenerateG1A)
 include(GenerateG3A)
 include(Fxconv)
 find_package(Gint 2.1 REQUIRED)
 
 # include directories, put your .h files in those folders
 include_directories(include)
 
 # source files
 set(SOURCES
 	src/main.cpp
 	
 	# ...
 )
 # shared assets
 set(ASSETS
 	# ...
 )
 # fx-9860G-only assets (monochrome)
 set(ASSETS_fx
 	assets-fx/example.png
	assets-fx/img/windmill.png
 	# ...
 )
 # fx-CG-50-only assets (polychrome)
 set(ASSETS_cg
 	assets-cg/example.png
 	# ...
 )
 
 # 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
 )
 
 fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA)
 
 add_executable(${PROJECT_NAME} ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
 target_compile_options(${PROJECT_NAME} PRIVATE ${FLAGS})
 target_link_libraries(${PROJECT_NAME} Gint::Gint)
 
 if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G)
 	generate_g1a(
 		TARGET ${PROJECT_NAME}
 		OUTPUT "${PROJECT_NAME}.g1a"
 		NAME "${PROJECT_NAME}"
 		ICON assets-fx/icon.png)
 elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
 	generate_g3a(
 		TARGET ${PROJECT_NAME}
 		OUTPUT "${PROJECT_NAME}.g3a"
 		NAME "${PROJECT_NAME}"
 		ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
 endif()