-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
66 lines (55 loc) · 1.87 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
cmake_minimum_required(VERSION 3.20)
# CNES library
project(cnes)
if (NOT CNES_BUILD_SINGLE)
# use external project add to build the application into separate subfolders
# we have to do this BEFORE adding project so that we can add toolchain files
# hacky workaround to forward cmake args to ExternalProject
# https://stackoverflow.com/a/48555098
get_cmake_property(vars CACHE_VARIABLES)
foreach(var ${vars})
get_property(currentHelpString CACHE "${var}" PROPERTY HELPSTRING)
if("${var}" MATCHES "No help, variable specified on the command line." OR "${var}" MATCHES "CNES_" OR "${var}" MATCHES "VCPKG_")
# message("${var} = [${${var}}] -- ${currentHelpString}") # uncomment to see the variables being processed
list(APPEND CMDLINE_ARGS "-D${var}=${${var}}")
endif()
endforeach()
if(MSVC)
set(CNES_NATIVE_PRESET msvc)
elseif(MSYS OR MINGW)
set(CNES_NATIVE_PRESET mingw)
else()
set(CNES_NATIVE_PRESET native)
endif()
include(ExternalProject)
ExternalProject_Add(nes
SOURCE_DIR ${CMAKE_SOURCE_DIR}
BINARY_DIR ${CMAKE_BINARY_DIR}/nes
BUILD_ALWAYS 1
INSTALL_COMMAND cmake -E echo "Skipping install step."
TEST_COMMAND cmake -E echo "Skipping test step."
CMAKE_ARGS --preset nes ${CMDLINE_ARGS}
)
ExternalProject_Add(native
SOURCE_DIR ${CMAKE_SOURCE_DIR}
BINARY_DIR ${CMAKE_BINARY_DIR}/native
BUILD_ALWAYS 1
INSTALL_COMMAND cmake -E echo "Skipping install step."
TEST_COMMAND cmake -E echo "Skipping test step."
CMAKE_ARGS --preset ${CNES_NATIVE_PRESET} ${CMDLINE_ARGS}
)
return()
endif()
if (CMAKE_SYSTEM_PROCESSOR MATCHES "6502")
set(NES ON CACHE BOOL "" FORCE)
endif()
if (NES)
enable_language(ASM C)
else()
enable_language(C CXX)
endif()
option(CNES_BUILD_EXAMPLE "Builds the CNES example exe" OFF)
add_subdirectory(src)
if (CNES_BUILD_EXAMPLE)
add_subdirectory(example)
endif()