forked from marioballano/emudore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
145 lines (129 loc) · 3.97 KB
/
CMakeLists.txt
File metadata and controls
145 lines (129 loc) · 3.97 KB
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
##
# emudore, Commodore 64 emulator
# Copyright (c) 2016, Mario Ballano <mballano@gmail.com>
# Changes and additions (c) 2025, LouD <emudore@mail.loudai.nl>
#
# CMakeLists.txt
#
# Licensed under the Apache License, Version 2.0 (the "License")
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
### Cmake minimum version
cmake_minimum_required(VERSION 3.17)
### Cmake compiler standard versions
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
### Project magic sprinkles
set(PROJECT_NAME adorable)
# enable or disable radare2 debugging support
set(DBG_SUPPORT 1)
# enabled/disable SDL window (SET TO 0 FOR EMBEDDED!)
set(SDL_ENABLED 1)
# DESKTOP and EMBEDDED are mutually exclusive
set(DESKTOP 1)
set(EMBEDDED 0) # Requires Pico SDK components!
# enable or disable hardware sid driver
set(USBSID_DRIVER 1)
set(DBG -g3)
set(OPT -O0)
set(WARN PRIVATE
# -Wall
# -Wunused
# -Werror
-Wno-format # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int
-Wno-unused-function # extra check to verify no unused lingering code is present
-Wno-maybe-uninitialized
)
### Compiler flags and options
set(COMPILE_OPTS PRIVATE
${DBG}
${OPT}
-fno-omit-frame-pointer
-fverbose-asm
-save-temps
-DDEBUGGER_SUPPORT=${DBG_SUPPORT}
-DDESKTOP=${DESKTOP}
-DSDL_ENABLED=${SDL_ENABLED}
-DUSBSID_DRIVER=${USBSID_DRIVER}
-DEMBEDDED=${EMBEDDED}
)
# Run the project command
project(${PROJECT_NAME} C CXX ASM)
if(DESKTOP EQUAL 1)
# the `pkg_check_modules` function is created with this call
find_package(PkgConfig REQUIRED)
endif()
if(USBSID_DRIVER EQUAL 1)
# these calls create special `PkgConfig::<MODULE>` variables
pkg_check_modules(libusb REQUIRED IMPORTED_TARGET libusb-1.0)
pkg_check_modules(udev REQUIRED IMPORTED_TARGET libudev)
### Libraries to link
set(TARGET_LL
PkgConfig::libusb
PkgConfig::udev
)
endif()
### Source files to compile
set(SOURCEFILES
${CMAKE_CURRENT_LIST_DIR}/src/main.cpp
${CMAKE_CURRENT_LIST_DIR}/src/loader.cpp
${CMAKE_CURRENT_LIST_DIR}/src/sidfile.cpp
${CMAKE_CURRENT_LIST_DIR}/src/cpu.cpp
${CMAKE_CURRENT_LIST_DIR}/src/memory.cpp
${CMAKE_CURRENT_LIST_DIR}/src/c64.cpp
${CMAKE_CURRENT_LIST_DIR}/src/cia1.cpp
${CMAKE_CURRENT_LIST_DIR}/src/cia2.cpp
${CMAKE_CURRENT_LIST_DIR}/src/io.cpp
${CMAKE_CURRENT_LIST_DIR}/src/vic.cpp
${CMAKE_CURRENT_LIST_DIR}/src/sidadapter.cpp
${CMAKE_CURRENT_LIST_DIR}/src/pla.cpp
${CMAKE_CURRENT_LIST_DIR}/src/cart.cpp
${CMAKE_CURRENT_LIST_DIR}/src/cart/MC68B50.cpp
${CMAKE_CURRENT_LIST_DIR}/src/debugger.cpp
)
### Header folders to include
set(TARGET_INCLUDE_DIRS PRIVATE
${CMAKE_CURRENT_LIST_DIR}
${CMAKE_CURRENT_LIST_DIR}/src
${CMAKE_CURRENT_LIST_DIR}/src/cart
/usr/local/lib
/usr/local/include
/usr/lib
/usr/include
)
if(USBSID_DRIVER EQUAL 1)
set(SOURCEFILES
${SOURCEFILES}
${CMAKE_CURRENT_LIST_DIR}/lib/USBSID-Pico-driver/src/USBSID.cpp
)
set(TARGET_INCLUDE_DIRS
${TARGET_INCLUDE_DIRS}
${CMAKE_CURRENT_LIST_DIR}/lib/USBSID-Pico-driver/src
)
endif()
if(SDL_ENABLED EQUAL 1)
pkg_check_modules(sdl REQUIRED IMPORTED_TARGET sdl2)
set(TARGET_LL
${TARGET_LL}
PkgConfig::sdl
)
else()
set(TARGET_INCLUDE_DIRS
${TARGET_INCLUDE_DIRS}
${CMAKE_CURRENT_LIST_DIR}/lib/SDL)
endif()
### Compile time
add_executable(${PROJECT_NAME} ${SOURCEFILES})
target_compile_definitions(${PROJECT_NAME} PRIVATE UNIX_COMPILE)
target_include_directories(${PROJECT_NAME} ${TARGET_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${TARGET_LL})
target_sources(${PROJECT_NAME} PUBLIC ${SOURCEFILES})
target_compile_options(${PROJECT_NAME} ${COMPILE_OPTS})