-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCMakeLists.txt
85 lines (67 loc) · 2.56 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
cmake_minimum_required(VERSION 3.20.0)
project(notorious_beeg
VERSION 0.0.3
DESCRIPTION "GBA emulator written in c++23"
HOMEPAGE_URL "https://github.com/ITotalJustice/notorious_beeg"
LANGUAGES C CXX
)
# this is used by clangd and static analysis
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (VCPKG)
# checks the documented env variable for vcpkg
if (DEFINED ENV{VCPKG_ROOT} AND EXISTS $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
message(STATUS "found VCPKG_ROOT, using system installed vcpkg at: $ENV{VCPKG_ROOT}")
set(vcpkg_toolchain_file $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
# this checks for github actions installed vcpkg
elseif (DEFINED ENV{VCPKG_INSTALLATION_ROOT} AND EXISTS $ENV{VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake)
message(STATUS "found VCPKG_INSTALLATION_ROOT, using system installed vcpkg at: $ENV{VCPKG_INSTALLATION_ROOT}")
set(vcpkg_toolchain_file $ENV{VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake)
# fallback to fetching latest vcpkg from git
else()
message(STATUS "installing latest vcpkg from git root: $ENV{VCPKG_ROOT} insta: $ENV{VCPKG_INSTALLATION_ROOT}")
include(FetchContent)
FetchContent_Declare(vcpkg GIT_REPOSITORY https://github.com/microsoft/vcpkg.git)
FetchContent_MakeAvailable(vcpkg)
set(vcpkg_toolchain_file ${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake)
endif()
include(${vcpkg_toolchain_file})
endif()
if (LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported OUTPUT ipo_error)
if (ipo_supported)
message(STATUS "IPO / LTO enabled for ALL targets")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
else()
message(STATUS "IPO / LTO not supported")
endif()
endif()
# these needs to be globally set otherwise a link error happens when
# using std::filesystem::recursive_directory_iterator
if (EMSCRIPTEN AND EM_USE_THREADS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
endif()
message(STATUS "SYSTEM: ${CMAKE_SYSTEM_NAME}")
message(STATUS "COMPILER: ${CMAKE_CXX_COMPILER_ID}")
option(FRONTEND "enable frontend build" OFF)
option(SDL2 "basic sdl2 frontend" OFF)
option(IMGUI "imgui frontend" OFF)
option(BENCHMARK "benchmark frontend" OFF)
option(NATIVE "enable native build" OFF)
if (SDL2)
set(FRONTEND ON)
endif()
if (IMGUI)
set(FRONTEND ON)
endif()
if (BENCHMARK)
set(FRONTEND ON)
endif()
if (EMSCRIPTEN)
set(FRONTEND ON)
endif()
if (TESTING)
include(CTest)
set(FRONTEND ON)
endif()
add_subdirectory(src)