CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/CMakeLists.txt
Views: 1400
1
# vim:noexpandtab:
2
cmake_minimum_required(VERSION 3.16)
3
project(PPSSPP)
4
enable_testing()
5
6
#This is supposed to work but doesn't!
7
if(NOT ANDROID)
8
set(CMAKE_CXX_STANDARD 17)
9
set(CMAKE_CXX_STANDARD_REQUIRED ON)
10
endif()
11
12
enable_language(ASM)
13
14
add_definitions(-D__STDC_CONSTANT_MACROS)
15
16
# Include AppleClang and Clang.
17
if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
18
set(CLANG ON)
19
message("Clang enabled")
20
endif()
21
22
if(FORCED_CPU)
23
message("Detected CPU (${CMAKE_SYSTEM_PROCESSOR}) overridden as: ${FORCED_CPU}")
24
set(CMAKE_SYSTEM_PROCESSOR ${FORCED_CPU})
25
endif()
26
27
# Detect CPU from CMAKE configuration. Toolchains should set this up
28
if(CMAKE_SYSTEM_PROCESSOR)
29
if(CMAKE_OSX_ARCHITECTURES)
30
if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ".*86.*")
31
set(X86_DEVICE ON)
32
set(X86_64_DEVICE ON)
33
endif()
34
if("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64")
35
set(ARM64 ON)
36
endif()
37
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^aarch64")
38
set(ARM64 ON)
39
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm64")
40
# M1 Mac
41
set(ARM64 ON)
42
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm")
43
message("ARM_DEVICE is a go")
44
set(ARM_DEVICE ON)
45
if(UNIX AND NOT APPLE)
46
execute_process(COMMAND cat /proc/cpuinfo OUTPUT_VARIABLE OUTSTR)
47
string(FIND "${OUTSTR}" "ODROID-XU" pos)
48
if(NOT (pos LESS 0))
49
add_compile_options(-mfloat-abi=hard -marm -mtune=cortex-a15.cortex-a7 -mcpu=cortex-a15 -fomit-frame-pointer)
50
set(ARM_NO_VULKAN ON)
51
endif()
52
endif()
53
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^armv7")
54
set(ARMV7_DEVICE ON)
55
add_compile_options(-mfpu=neon)
56
# Horrifying workaround for bug in android cmake stuff for asm files
57
if(ANDROID)
58
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -target armv7a-none-linux-android")
59
endif()
60
endif()
61
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^amd64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^AMD64")
62
set(X86_DEVICE ON)
63
set(X86_64_DEVICE ON)
64
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86")
65
set(X86_DEVICE ON)
66
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^mips")
67
set(MIPS_DEVICE ON)
68
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^riscv64")
69
set(RISCV64_DEVICE ON)
70
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^loongarch64")
71
set(LOONGARCH64_DEVICE ON)
72
else()
73
message("Unknown CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
74
endif()
75
endif()
76
77
# the libraries in the ffmpeg/ directory are not compatible with mingw
78
if(MINGW AND NOT DEFINED USE_SYSTEM_FFMPEG)
79
set(USE_SYSTEM_FFMPEG ON)
80
endif()
81
82
if(NOT ANDROID AND NOT IOS)
83
if(ARM_DEVICE OR SIMULATOR)
84
set(USING_EGL ON)
85
endif()
86
endif()
87
88
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND NOT USE_LIBNX)
89
set(LINUX ON)
90
add_definitions(-D__STDC_CONSTANT_MACROS)
91
endif()
92
93
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
94
set(MACOSX ON)
95
set(USING_EGL OFF)
96
endif()
97
98
if(${CMAKE_SYSTEM_NAME} MATCHES "Android")
99
set(ANDROID ON)
100
endif()
101
102
# We only support Vulkan on Unix, macOS (by MoltenVK), Android and Windows.
103
if(ANDROID OR WIN32 OR (UNIX AND NOT ARM_NO_VULKAN))
104
set(VULKAN ON)
105
endif()
106
107
# Default to bundled SDL2 on macOS, system SDL2 elsewhere.
108
if(APPLE AND NOT IOS)
109
set(DEFAULT_USE_SYSTEM_LIBSDL2 OFF)
110
else()
111
set(DEFAULT_USE_SYSTEM_LIBSDL2 ON)
112
endif()
113
114
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
115
if(NOT IOS)
116
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/sdl)
117
endif()
118
119
include(CheckCXXSourceCompiles)
120
include(GNUInstallDirs)
121
122
add_definitions(-DASSETS_DIR="${CMAKE_INSTALL_FULL_DATADIR}/ppsspp/assets/")
123
124
if(OPENXR AND NOT ARMV7_DEVICE)
125
add_definitions(-DOPENXR)
126
add_subdirectory(ext/OpenXR-SDK)
127
message("OpenXR enabled")
128
endif()
129
130
if(GOLD)
131
add_definitions(-DGOLD)
132
message("Gold Build")
133
else()
134
message("Non-gold Build")
135
endif()
136
137
if(IOS_APP_STORE)
138
add_definitions(-DPPSSPP_PLATFORM_IOS_APP_STORE)
139
add_definitions(-DGLES_SILENCE_DEPRECATION)
140
# Set a global default to not generate schemes for each target.
141
# Makes using XCode sligthly more sane.
142
set(CMAKE_XCODE_GENERATE_SCHEME NO)
143
set(CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION FALSE)
144
set(CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE DISABLED)
145
message("iOS App Store build")
146
elseif(IOS)
147
message("iOS sideload build")
148
endif()
149
150
# User-editable options (go into CMakeCache.txt)
151
# :: Processors
152
option(ARMV7 "Set to ON if targeting an ARMv7 processor" ${ARMV7_DEVICE})
153
option(ARM "Set to ON if targeting an ARM processor" ${ARM_DEVICE})
154
option(MIPS "Set to ON if targeting a MIPS processor" ${MIPS_DEVICE})
155
option(RISCV64 "Set to ON if targeting a RISCV64 processor" ${RISCV64_DEVICE})
156
option(LOONGARCH64 "Set to ON if targeting a LOONGARCH64 processor" ${LOONGARCH64_DEVICE})
157
option(X86 "Set to ON if targeting an X86 processor" ${X86_DEVICE})
158
option(X86_64 "Set to ON if targeting an X86_64 processor" ${X86_64_DEVICE})
159
# :: Environments
160
option(USING_EGL "Set to ON if target environment uses EGL" ${USING_EGL})
161
option(USING_FBDEV "Set to ON if target environment uses fbdev (eg. Pandora)" ${USING_FBDEV})
162
option(USING_GLES2 "Set to ON if target device uses OpenGL ES 2.0" ${USING_GLES2})
163
option(USING_X11_VULKAN "Set to OFF if target environment doesn't use X11 for Vulkan" ON)
164
option(USE_WAYLAND_WSI "Enable or disable Wayland WSI support for Vulkan" ON)
165
option(USE_VULKAN_DISPLAY_KHR "Enable or disable full screen display of Vulkan" ${USE_VULKAN_DISPLAY_KHR})
166
# :: Frontends
167
option(USING_QT_UI "Set to ON if you wish to use the Qt frontend wrapper" ${USING_QT_UI})
168
option(MOBILE_DEVICE "Set to ON when targeting a mobile device" ${MOBILE_DEVICE})
169
option(HEADLESS "Set to OFF to not generate the PPSSPPHeadless target" ${HEADLESS})
170
option(UNITTEST "Set to ON to generate the unittest target" ${UNITTEST})
171
option(SIMULATOR "Set to ON when targeting an x86 simulator of an ARM platform" ${SIMULATOR})
172
option(LIBRETRO "Set to ON to generate the libretro target" OFF)
173
# :: Options
174
option(USE_LIBNX "Set to ON to build for Switch(libnx)" OFF)
175
option(USE_FFMPEG "Build with FFMPEG support" ON)
176
option(USE_DISCORD "Build with Discord support" ON)
177
option(USE_MINIUPNPC "Build with miniUPnPc support" ON)
178
option(USE_ARMIPS "Build with armips support in API/debugger" ON)
179
option(USE_SYSTEM_SNAPPY "Dynamically link against system snappy" ${USE_SYSTEM_SNAPPY})
180
option(USE_SYSTEM_FFMPEG "Dynamically link against system FFMPEG" ${USE_SYSTEM_FFMPEG})
181
option(USE_SYSTEM_LIBZIP "Dynamically link against system libzip" ${USE_SYSTEM_LIBZIP})
182
option(USE_SYSTEM_LIBSDL2 "Dynamically link against system SDL2" ${DEFAULT_USE_SYSTEM_LIBSDL2})
183
option(USE_SYSTEM_LIBPNG "Dynamically link against system libpng" ON)
184
option(USE_SYSTEM_ZSTD "Dynamically link against system zstd" ${USE_SYSTEM_ZSTD})
185
option(USE_SYSTEM_MINIUPNPC "Dynamically link against system miniUPnPc" ${USE_SYSTEM_MINIUPNPC})
186
option(USE_ASAN "Use address sanitizer" OFF)
187
option(USE_UBSAN "Use undefined behaviour sanitizer" OFF)
188
option(USE_CCACHE "Use ccache if detected" ON)
189
option(USE_NO_MMAP "Disable mmap usage" OFF)
190
191
if(USE_CCACHE)
192
include(ccache)
193
endif()
194
195
if(UNIX AND NOT (APPLE OR ANDROID) AND VULKAN)
196
if(USING_X11_VULKAN)
197
message("Using X11 for Vulkan")
198
find_package(X11)
199
include_directories(${X11_Xlib_INCLUDE_PATH})
200
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
201
else()
202
message("NOT using X11 for Vulkan")
203
endif()
204
205
# add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
206
find_package(Wayland)
207
if(NOT WAYLAND_FOUND)
208
message(STATUS "Could not find Wayland libraries, disabling Wayland WSI support for Vulkan.")
209
elseif(USE_WAYLAND_WSI)
210
include_directories(${WAYLAND_INCLUDE_DIR})
211
add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
212
endif()
213
214
if(USE_VULKAN_DISPLAY_KHR)
215
message(STATUS "Using experimental full-screen display for Vulkan.")
216
add_definitions(-DVK_USE_PLATFORM_DISPLAY_KHR)
217
endif()
218
endif()
219
220
if(LIBRETRO)
221
add_definitions(-D__LIBRETRO__)
222
add_definitions(-DGLEW_NO_GLU)
223
if(NOT MSVC)
224
add_compile_options(-fPIC)
225
endif()
226
endif()
227
228
if(ANDROID)
229
set(MOBILE_DEVICE ON)
230
set(USING_GLES2 ON)
231
endif()
232
233
if(ANDROID AND NOT LIBRETRO)
234
set(CoreLibName ppsspp_jni)
235
set(CoreLinkType SHARED)
236
else()
237
set(CoreLibName Core)
238
set(CoreLinkType STATIC)
239
endif()
240
241
if(NOT ANDROID AND NOT WIN32 AND (NOT APPLE OR IOS))
242
set(HTTPS_NOT_AVAILABLE ON)
243
endif()
244
245
# Made this flag negative because it's hopefully quite temporary and didn't
246
# want to have to update all build systems.
247
if(HTTPS_NOT_AVAILABLE)
248
add_definitions(-DHTTPS_NOT_AVAILABLE)
249
endif()
250
251
# Disable the usage of MMAP for the memory system.
252
# It is not tested on all platforms and can cause issues.
253
if(USE_NO_MMAP)
254
add_definitions(-DNO_MMAP -DMASKED_PSP_MEMORY)
255
endif()
256
257
# Work around for some misfeature of the current glslang build system
258
include_directories(ext/glslang)
259
260
# Not sure if this is the best way - what about system glew?
261
# Anyway, glew will be going away anyway.
262
include_directories(ext/glew)
263
264
if(OPENXR AND NOT ARMV7_DEVICE)
265
set(OPENGL_LIBRARIES GLESv3 EGL)
266
elseif(NOT OPENGL_LIBRARIES AND USING_GLES2)
267
set(OPENGL_LIBRARIES GLESv2 EGL)
268
endif()
269
270
if(NOT OPENGL_LIBRARIES)
271
if(POLICY CMP0072)
272
cmake_policy(SET CMP0072 NEW)
273
endif()
274
find_package(OpenGL REQUIRED)
275
endif()
276
277
if(USING_EGL)
278
if(NOT EGL_LIBRARIES)
279
set(EGL_LIBRARIES EGL)
280
endif()
281
set(OPENGL_LIBRARIES ${OPENGL_LIBRARIES} ${EGL_LIBRARIES})
282
endif()
283
284
if(NOT LIBRETRO AND NOT IOS AND NOT MACOSX)
285
find_package(SDL2)
286
find_package(SDL2_ttf)
287
find_package(Fontconfig)
288
289
# TODO: this can be removed once CI supports newer SDL2_ttf
290
if (NOT SDL2_ttf_FOUND)
291
find_package(PkgConfig)
292
if(PkgConfig_FOUND)
293
pkg_check_modules(SDL2_ttf_PKGCONFIG IMPORTED_TARGET SDL2_ttf)
294
endif()
295
endif()
296
endif()
297
298
if(MACOSX AND NOT IOS)
299
if(USE_SYSTEM_LIBSDL2)
300
find_package(SDL2)
301
find_package(SDL2_ttf)
302
else()
303
find_library(SDL2Fwk SDL2 REQUIRED PATHS SDL/macOS)
304
message(STATUS "found SDL2Fwk=${SDL2Fwk}")
305
add_definitions(-DHAVE_SYSCTLBYNAME)
306
endif()
307
endif()
308
309
include(FindThreads)
310
311
if(APPLE)
312
find_library(COCOA_LIBRARY Cocoa)
313
find_library(IOKIT_LIBRARY IOKit)
314
find_library(QUARTZ_CORE_LIBRARY QuartzCore)
315
endif()
316
317
include_directories("${CMAKE_SOURCE_DIR}")
318
319
if(USING_EGL)
320
add_definitions(-DUSING_EGL)
321
endif()
322
if(USING_FBDEV)
323
add_definitions(-DUSING_FBDEV -DEGL_NO_X11)
324
endif()
325
if(USING_GLES2)
326
add_definitions(-DUSING_GLES2)
327
endif()
328
if(MOBILE_DEVICE)
329
add_definitions(-DMOBILE_DEVICE)
330
endif()
331
332
if(NOT CMAKE_BUILD_TYPE)
333
message(STATUS "No build type selected, default to Release")
334
set(CMAKE_BUILD_TYPE "Release")
335
else()
336
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
337
endif()
338
339
message("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
340
341
# Let's not use elseif here so we can catch dupes.
342
if(ARMV7)
343
message("Generating for ARMv7, ${CMAKE_BUILD_TYPE}")
344
endif()
345
if(ARM)
346
message("Generating for ARM, ${CMAKE_BUILD_TYPE}")
347
endif()
348
if(MIPS AND X86)
349
message("Generating for MIPS in x86 mode, ${CMAKE_BUILD_TYPE}")
350
endif()
351
if(MIPS)
352
message("Generating for MIPS, ${CMAKE_BUILD_TYPE}")
353
endif()
354
if(RISCV64)
355
message("Generating for RISCV64, ${CMAKE_BUILD_TYPE}")
356
endif()
357
if(LOONGARCH64)
358
message("Generating for LOONGARCH64, ${CMAKE_BUILD_TYPE}")
359
endif()
360
if(X86)
361
message("Generating for x86, ${CMAKE_BUILD_TYPE}")
362
endif()
363
if(X86_64)
364
message("Generating for x86_64, ${CMAKE_BUILD_TYPE}")
365
endif()
366
if(ARM64)
367
message("Generating for ARMv8, ${CMAKE_BUILD_TYPE}")
368
endif()
369
370
# It looks like the flags for the selected build type are written to the cache after each run, which causes some of the operations
371
# below to keep expanding them with the same flags over and over on every run, leading to a rebuild of the majority of the files.
372
# To work around this, remember the initial state of the variables from the first run and reset the variables to that.
373
# TODO: Setting the attributes per target would probably be a better solution.
374
foreach (LANGUAGE C CXX)
375
foreach (BUILD_TYPE DEBUG MINSIZEREL RELEASE RELWITHDEBINFO)
376
set(_CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE}_INITIAL ${CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE}} CACHE STRING "")
377
set(CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE} ${_CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE}_INITIAL})
378
endforeach()
379
endforeach()
380
381
if(NOT MSVC)
382
# NEON optimizations in libpng17 seem to cause PNG load errors, see #14485.
383
add_definitions(-DPNG_ARM_NEON_OPT=0)
384
385
if(ANDROID)
386
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17")
387
endif()
388
if(CLANG)
389
add_definitions(
390
-Wno-nullability-completeness
391
-Wno-tautological-pointer-compare
392
-Wno-deprecated-register
393
-Wno-sign-conversion
394
-Wno-shorten-64-to-32
395
)
396
if(MACOSX OR IOS)
397
# Hack around a bad check for __GNUC__ in basis_universal that makes it use old stuff on iOS
398
add_definitions(-Wno-deprecated-builtins)
399
endif()
400
endif()
401
402
if(USE_ASAN)
403
message("Address sanitizer enabled (DEBUG only)")
404
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address")
405
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fsanitize=address")
406
add_definitions(-DUSE_ASAN)
407
endif()
408
if(USE_UBSAN)
409
message("Undefined behaviour sanitizer enabled (DEBUG only)")
410
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=undefined")
411
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fsanitize=undefined")
412
413
# UBSAN is a collection of sanitizers, including vtpr, which reqiuires RTTI.
414
# ext/glslang disables RTTI by default using the `ENABLE_RTTI` option.
415
# If RTTI is disabled, we must also disable the vtpr sanitizer.
416
if(NOT ENABLE_RTTI)
417
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-sanitize=vptr")
418
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-sanitize=vptr")
419
endif()
420
endif()
421
422
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_DEBUG")
423
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -D_NDEBUG")
424
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -D_NDEBUG")
425
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG")
426
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -D_DEBUG")
427
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -D_NDEBUG")
428
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 -D_NDEBUG")
429
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG")
430
431
# Enable checking printf-like format strings (also works for logging functions)
432
add_definitions(-Wformat)
433
434
# Disable some warnings
435
add_definitions(-Wno-multichar)
436
437
# Don't compile with strict aliasing, we're not 100% aliasing-safe
438
add_compile_options(-fno-strict-aliasing)
439
if(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
440
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -parallel -fopenmp")
441
endif()
442
443
add_definitions(-fno-math-errno)
444
445
if(X86 OR X86_64)
446
# enable sse2 code generation
447
add_definitions(-msse2)
448
if(NOT X86_64 AND NOT CLANG)
449
add_definitions(-mfpmath=sse)
450
# add_definitions(-mstackrealign)
451
endif()
452
endif()
453
454
if(IOS)
455
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")
456
elseif(APPLE AND NOT CMAKE_CROSSCOMPILING)
457
if(LIBRETRO AND ARM64)
458
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
459
else()
460
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
461
endif()
462
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -U__STRICT_ANSI__")
463
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
464
elseif(NOT ANDROID)
465
# TODO: See if we can get rid of no-psabi
466
if(NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Intel" AND NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
467
add_definitions(-Wno-psabi)
468
endif()
469
add_definitions(-D_XOPEN_SOURCE=700)
470
add_definitions(-D_XOPEN_SOURCE_EXTENDED -D__BSD_VISIBLE=1 -D_BSD_SOURCE -D_DEFAULT_SOURCE)
471
if(CMAKE_SYSTEM_NAME MATCHES "Linux|SunOS" OR MINGW)
472
add_definitions(-D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64)
473
endif()
474
if(${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
475
add_definitions(-D_NETBSD_SOURCE)
476
endif()
477
elseif(ANDROID)
478
add_definitions(-fsigned-char)
479
endif()
480
else()
481
# Disable warnings about MS-specific _s variants of libc functions
482
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
483
if (NOT CLANG)
484
add_compile_options(-MP)
485
endif()
486
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
487
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_NDEBUG")
488
set(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:"libcmt.lib")
489
endif()
490
491
if(WIN32)
492
add_definitions(-D_UNICODE -DUNICODE)
493
add_definitions(-DUSING_WIN_UI)
494
endif()
495
496
if(NOT ANDROID)
497
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
498
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
499
endif()
500
501
# This sets up the MSVC project dirs according to the physical project dirs
502
macro(setup_target_project TargetName ProjectDir)
503
get_property(TargetSources TARGET "${TargetName}" PROPERTY SOURCES)
504
foreach(Source ${TargetSources})
505
# Figure out the file's path relative to the ProjectDir
506
# NOTE: &#$@ double-quoted regexps
507
string(REGEX REPLACE "${ProjectDir}" "" RelativePath "${Source}")
508
string(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" RelativePath "${RelativePath}")
509
string(REGEX REPLACE "^[\\\\/]" "" RelativePath "${RelativePath}")
510
string(REGEX REPLACE "/" "\\\\\\\\" RelativePath "${RelativePath}")
511
# put the source file in a source_group equivalent to the relative path
512
source_group("${RelativePath}" FILES ${Source})
513
endforeach()
514
endmacro()
515
516
add_subdirectory(ext)
517
518
if(WIN32)
519
include_directories(dx9sdk/Include)
520
include_directories(dx9sdk/Include/DX11)
521
endif()
522
523
524
set(CommonJIT
525
Core/MIPS/JitCommon/JitCommon.cpp
526
Core/MIPS/JitCommon/JitCommon.h
527
Core/MIPS/JitCommon/JitBlockCache.cpp
528
Core/MIPS/JitCommon/JitBlockCache.h
529
Core/MIPS/JitCommon/JitState.cpp
530
Core/MIPS/JitCommon/JitState.h
531
)
532
533
set(CommonX86
534
Common/ABI.cpp
535
Common/ABI.h
536
Common/CPUDetect.cpp
537
Common/CPUDetect.h
538
Common/Thunk.cpp
539
Common/Thunk.h
540
Common/x64Analyzer.cpp
541
Common/x64Analyzer.h
542
Common/x64Emitter.cpp
543
Common/x64Emitter.h
544
)
545
source_group(x86 FILES ${CommonX86})
546
547
set(CommonARM
548
Common/ArmCPUDetect.cpp
549
Common/ArmEmitter.h
550
Common/ArmEmitter.cpp
551
)
552
source_group(ARM FILES ${CommonARM})
553
554
set(CommonARM64
555
Common/Arm64Emitter.h
556
Common/Arm64Emitter.cpp
557
Common/ArmEmitter.h
558
Common/ArmEmitter.cpp
559
Core/Util/DisArm64.h
560
Core/Util/DisArm64.cpp
561
)
562
source_group(ARM64 FILES ${CommonARM64})
563
564
set(CommonMIPS
565
Common/MipsCPUDetect.cpp
566
Common/MipsEmitter.cpp
567
Common/MipsEmitter.h
568
)
569
source_group(MIPS FILES ${CommonMIPS})
570
571
set(CommonRISCV64
572
${CommonJIT}
573
Common/RiscVCPUDetect.cpp
574
Common/RiscVEmitter.cpp
575
Common/RiscVEmitter.h
576
Core/MIPS/fake/FakeJit.cpp
577
Core/MIPS/fake/FakeJit.h
578
)
579
source_group(RISCV64 FILES ${CommonRISCV64})
580
581
set(CommonLOONGARCH64
582
${CommonJIT}
583
Common/LoongArchCPUDetect.cpp
584
Core/MIPS/fake/FakeJit.cpp
585
Core/MIPS/fake/FakeJit.h
586
)
587
source_group(LOONGARCH64 FILES ${CommonLOONGARCH64})
588
589
if(WIN32)
590
set(CommonD3D
591
Common/GPU/D3D9/D3D9ShaderCompiler.cpp
592
Common/GPU/D3D9/D3D9ShaderCompiler.h
593
Common/GPU/D3D9/D3D9StateCache.cpp
594
Common/GPU/D3D9/D3D9StateCache.h
595
Common/GPU/D3D9/thin3d_d3d9.cpp
596
Common/GPU/D3D9/D3DCompilerLoader.cpp
597
Common/GPU/D3D11/thin3d_d3d11.cpp
598
Common/GPU/D3D11/D3D11Loader.cpp
599
Common/GPU/D3D11/D3D11Loader.h
600
)
601
endif()
602
603
set(CommonVR
604
Common/VR/OpenXRLoader.cpp
605
Common/VR/OpenXRLoader.h
606
Common/VR/PPSSPPVR.cpp
607
Common/VR/PPSSPPVR.h
608
Common/VR/VRBase.cpp
609
Common/VR/VRBase.h
610
Common/VR/VRFramebuffer.cpp
611
Common/VR/VRFramebuffer.h
612
Common/VR/VRInput.cpp
613
Common/VR/VRInput.h
614
Common/VR/VRMath.cpp
615
Common/VR/VRMath.h
616
Common/VR/VRRenderer.cpp
617
Common/VR/VRRenderer.h
618
)
619
include_directories(ext/OpenXR-SDK/include)
620
621
add_library(Common STATIC
622
${CommonX86}
623
${CommonARM}
624
${CommonARM64}
625
${CommonMIPS}
626
${CommonRISCV64}
627
${CommonLOONGARCH64}
628
${CommonD3D}
629
${CommonVR}
630
Common/Serialize/Serializer.cpp
631
Common/Serialize/Serializer.h
632
Common/Serialize/SerializeDeque.h
633
Common/Serialize/SerializeFuncs.h
634
Common/Serialize/SerializeList.h
635
Common/Serialize/SerializeMap.h
636
Common/Serialize/SerializeSet.h
637
Common/Crypto/md5.cpp
638
Common/Crypto/md5.h
639
Common/Crypto/sha1.cpp
640
Common/Crypto/sha1.h
641
Common/Crypto/sha256.cpp
642
Common/Crypto/sha256.h
643
Common/Data/Collections/ConstMap.h
644
Common/Data/Collections/FixedSizeQueue.h
645
Common/Data/Collections/Hashmaps.h
646
Common/Data/Collections/TinySet.h
647
Common/Data/Collections/FastVec.h
648
Common/Data/Collections/CyclicBuffer.h
649
Common/Data/Collections/ThreadSafeList.h
650
Common/Data/Color/RGBAUtil.cpp
651
Common/Data/Color/RGBAUtil.h
652
Common/Data/Convert/ColorConv.cpp
653
Common/Data/Convert/ColorConv.h
654
Common/Data/Convert/SmallDataConvert.cpp
655
Common/Data/Convert/SmallDataConvert.h
656
Common/Data/Encoding/Base64.cpp
657
Common/Data/Encoding/Base64.h
658
Common/Data/Encoding/Compression.cpp
659
Common/Data/Encoding/Compression.h
660
Common/Data/Encoding/Shiftjis.h
661
Common/Data/Encoding/Utf8.cpp
662
Common/Data/Encoding/Utf8.h
663
Common/Data/Encoding/Utf16.h
664
Common/Data/Format/RIFF.cpp
665
Common/Data/Format/RIFF.h
666
Common/Data/Format/IniFile.cpp
667
Common/Data/Format/IniFile.h
668
Common/Data/Format/JSONReader.h
669
Common/Data/Format/JSONReader.cpp
670
Common/Data/Format/JSONWriter.h
671
Common/Data/Format/JSONWriter.cpp
672
Common/Data/Format/DDSLoad.cpp
673
Common/Data/Format/DDSLoad.h
674
Common/Data/Format/PNGLoad.cpp
675
Common/Data/Format/PNGLoad.h
676
Common/Data/Format/ZIMLoad.cpp
677
Common/Data/Format/ZIMLoad.h
678
Common/Data/Format/ZIMSave.cpp
679
Common/Data/Format/ZIMSave.h
680
Common/Data/Hash/Hash.cpp
681
Common/Data/Hash/Hash.h
682
Common/Data/Text/I18n.cpp
683
Common/Data/Text/I18n.h
684
Common/Data/Text/Parsers.cpp
685
Common/Data/Text/Parsers.h
686
Common/Data/Text/WrapText.cpp
687
Common/Data/Text/WrapText.h
688
Common/Data/Random/Rng.h
689
Common/File/VFS/VFS.h
690
Common/File/VFS/VFS.cpp
691
Common/File/VFS/ZipFileReader.cpp
692
Common/File/VFS/ZipFileReader.h
693
Common/File/VFS/DirectoryReader.cpp
694
Common/File/VFS/DirectoryReader.h
695
Common/File/AndroidStorage.h
696
Common/File/AndroidStorage.cpp
697
Common/File/AndroidContentURI.h
698
Common/File/AndroidContentURI.cpp
699
Common/File/DiskFree.h
700
Common/File/DiskFree.cpp
701
Common/File/Path.h
702
Common/File/Path.cpp
703
Common/File/PathBrowser.h
704
Common/File/PathBrowser.cpp
705
Common/File/FileUtil.cpp
706
Common/File/FileUtil.h
707
Common/File/DirListing.cpp
708
Common/File/DirListing.h
709
Common/File/FileDescriptor.cpp
710
Common/File/FileDescriptor.h
711
Common/GPU/DataFormat.h
712
Common/GPU/MiscTypes.h
713
Common/GPU/GPUBackendCommon.cpp
714
Common/GPU/GPUBackendCommon.h
715
Common/GPU/thin3d.cpp
716
Common/GPU/thin3d.h
717
Common/GPU/thin3d_create.h
718
Common/GPU/Shader.cpp
719
Common/GPU/Shader.h
720
Common/GPU/ShaderWriter.cpp
721
Common/GPU/ShaderWriter.h
722
Common/GPU/ShaderTranslation.h
723
Common/GPU/ShaderTranslation.cpp
724
Common/GPU/OpenGL/GLCommon.h
725
Common/GPU/OpenGL/GLDebugLog.cpp
726
Common/GPU/OpenGL/GLDebugLog.h
727
Common/GPU/OpenGL/GLSLProgram.cpp
728
Common/GPU/OpenGL/GLSLProgram.h
729
Common/GPU/OpenGL/gl3stub.c
730
Common/GPU/OpenGL/gl3stub.h
731
Common/GPU/OpenGL/GLFeatures.cpp
732
Common/GPU/OpenGL/GLFeatures.h
733
Common/GPU/OpenGL/GLFrameData.cpp
734
Common/GPU/OpenGL/GLFrameData.h
735
Common/GPU/OpenGL/thin3d_gl.cpp
736
Common/GPU/OpenGL/GLMemory.cpp
737
Common/GPU/OpenGL/GLMemory.h
738
Common/GPU/OpenGL/GLRenderManager.cpp
739
Common/GPU/OpenGL/GLRenderManager.h
740
Common/GPU/OpenGL/GLQueueRunner.cpp
741
Common/GPU/OpenGL/GLQueueRunner.h
742
Common/GPU/OpenGL/DataFormatGL.cpp
743
Common/GPU/OpenGL/DataFormatGL.h
744
Common/GPU/Vulkan/VulkanBarrier.cpp
745
Common/GPU/Vulkan/VulkanBarrier.h
746
Common/GPU/Vulkan/VulkanDebug.cpp
747
Common/GPU/Vulkan/VulkanDebug.h
748
Common/GPU/Vulkan/VulkanContext.cpp
749
Common/GPU/Vulkan/VulkanContext.h
750
Common/GPU/Vulkan/VulkanDescSet.cpp
751
Common/GPU/Vulkan/VulkanDescSet.h
752
Common/GPU/Vulkan/VulkanFramebuffer.cpp
753
Common/GPU/Vulkan/VulkanFramebuffer.h
754
Common/GPU/Vulkan/VulkanImage.cpp
755
Common/GPU/Vulkan/VulkanImage.h
756
Common/GPU/Vulkan/VulkanLoader.cpp
757
Common/GPU/Vulkan/VulkanLoader.h
758
Common/GPU/Vulkan/VulkanMemory.cpp
759
Common/GPU/Vulkan/VulkanMemory.h
760
Common/GPU/Vulkan/VulkanProfiler.cpp
761
Common/GPU/Vulkan/VulkanProfiler.h
762
Common/GPU/Vulkan/thin3d_vulkan.cpp
763
Common/GPU/Vulkan/VulkanRenderManager.cpp
764
Common/GPU/Vulkan/VulkanRenderManager.h
765
Common/GPU/Vulkan/VulkanQueueRunner.cpp
766
Common/GPU/Vulkan/VulkanQueueRunner.h
767
Common/GPU/Vulkan/VulkanFrameData.cpp
768
Common/GPU/Vulkan/VulkanFrameData.h
769
Common/Input/GestureDetector.cpp
770
Common/Input/GestureDetector.h
771
Common/Input/KeyCodes.h
772
Common/Input/InputState.cpp
773
Common/Input/InputState.h
774
Common/Math/fast/fast_matrix.c
775
Common/Math/CrossSIMD.h
776
Common/Math/curves.cpp
777
Common/Math/curves.h
778
Common/Math/expression_parser.cpp
779
Common/Math/expression_parser.h
780
Common/Math/lin/matrix4x4.cpp
781
Common/Math/lin/matrix4x4.h
782
Common/Math/lin/vec3.cpp
783
Common/Math/lin/vec3.h
784
Common/Math/math_util.cpp
785
Common/Math/math_util.h
786
Common/Math/Statistics.h
787
Common/Math/Statistics.cpp
788
Common/Net/HTTPClient.cpp
789
Common/Net/HTTPClient.h
790
Common/Net/HTTPHeaders.cpp
791
Common/Net/HTTPHeaders.h
792
Common/Net/HTTPNaettRequest.cpp
793
Common/Net/HTTPNaettRequest.h
794
Common/Net/HTTPRequest.cpp
795
Common/Net/HTTPRequest.h
796
Common/Net/HTTPServer.cpp
797
Common/Net/HTTPServer.h
798
Common/Net/NetBuffer.cpp
799
Common/Net/NetBuffer.h
800
Common/Net/Resolve.cpp
801
Common/Net/Resolve.h
802
Common/Net/Sinks.cpp
803
Common/Net/Sinks.h
804
Common/Net/URL.cpp
805
Common/Net/URL.h
806
Common/Net/WebsocketServer.cpp
807
Common/Net/WebsocketServer.h
808
Common/Profiler/Profiler.cpp
809
Common/Profiler/Profiler.h
810
Common/Render/TextureAtlas.cpp
811
Common/Render/TextureAtlas.h
812
Common/Render/DrawBuffer.cpp
813
Common/Render/DrawBuffer.h
814
Common/Render/ManagedTexture.cpp
815
Common/Render/ManagedTexture.h
816
Common/Render/Text/draw_text.cpp
817
Common/Render/Text/draw_text.h
818
Common/Render/Text/draw_text_android.cpp
819
Common/Render/Text/draw_text_android.h
820
Common/Render/Text/draw_text_sdl.cpp
821
Common/Render/Text/draw_text_sdl.h
822
Common/Render/Text/draw_text_win.cpp
823
Common/Render/Text/draw_text_win.h
824
Common/Render/Text/draw_text_uwp.cpp
825
Common/Render/Text/draw_text_uwp.h
826
Common/System/Display.cpp
827
Common/System/Display.h
828
Common/System/System.h
829
Common/System/NativeApp.h
830
Common/System/Request.cpp
831
Common/System/Request.h
832
Common/System/OSD.cpp
833
Common/System/OSD.h
834
Common/Thread/Channel.h
835
Common/Thread/ParallelLoop.cpp
836
Common/Thread/ParallelLoop.h
837
Common/Thread/Promise.h
838
Common/Thread/ThreadUtil.cpp
839
Common/Thread/ThreadUtil.h
840
Common/Thread/ThreadManager.cpp
841
Common/Thread/ThreadManager.h
842
Common/UI/AsyncImageFileView.cpp
843
Common/UI/AsyncImageFileView.h
844
Common/UI/Root.cpp
845
Common/UI/Root.h
846
Common/UI/Screen.cpp
847
Common/UI/Screen.h
848
Common/UI/UI.cpp
849
Common/UI/UI.h
850
Common/UI/Context.cpp
851
Common/UI/Context.h
852
Common/UI/IconCache.cpp
853
Common/UI/IconCache.h
854
Common/UI/UIScreen.cpp
855
Common/UI/UIScreen.h
856
Common/UI/Tween.cpp
857
Common/UI/Tween.h
858
Common/UI/View.cpp
859
Common/UI/View.h
860
Common/UI/ViewGroup.cpp
861
Common/UI/ViewGroup.h
862
Common/UI/ScrollView.cpp
863
Common/UI/ScrollView.h
864
Common/UI/PopupScreens.cpp
865
Common/UI/PopupScreens.h
866
Common/BitScan.h
867
Common/BitSet.h
868
Common/Buffer.h
869
Common/Buffer.cpp
870
Common/CodeBlock.h
871
Common/Common.h
872
Common/CommonFuncs.h
873
Common/CommonTypes.h
874
Common/DbgNew.h
875
Common/FakeEmitter.h
876
Common/FakeCPUDetect.cpp
877
Common/ExceptionHandlerSetup.cpp
878
Common/ExceptionHandlerSetup.h
879
Common/Log.h
880
Common/Log.cpp
881
Common/Log/ConsoleListener.cpp
882
Common/Log/ConsoleListener.h
883
Common/Log/StdioListener.cpp
884
Common/Log/StdioListener.h
885
Common/Log/LogManager.cpp
886
Common/Log/LogManager.h
887
Common/LogReporting.cpp
888
Common/LogReporting.h
889
Common/MemArenaAndroid.cpp
890
Common/MemArenaDarwin.cpp
891
Common/MemArenaPosix.cpp
892
Common/MemArenaWin32.cpp
893
Common/MemArenaHorizon.cpp
894
Common/MemArena.h
895
Common/MemoryUtil.cpp
896
Common/MemoryUtilHorizon.cpp
897
Common/MemoryUtil.h
898
Common/OSVersion.cpp
899
Common/OSVersion.h
900
Common/StringUtils.cpp
901
Common/StringUtils.h
902
Common/SysError.h
903
Common/SysError.cpp
904
Common/TimeUtil.cpp
905
Common/TimeUtil.h
906
Common/Battery/Battery.h
907
)
908
909
include_directories(Common)
910
setup_target_project(Common Common)
911
912
target_link_libraries(Common Ext::Snappy cpu_features)
913
914
if(ARM64)
915
if(ANDROID)
916
target_link_libraries(Common adrenotools)
917
endif()
918
endif()
919
920
if(USING_GLES2 OR (USING_EGL AND NOT USING_FBDEV))
921
find_package(X11)
922
endif()
923
924
add_library(gason STATIC
925
ext/gason/gason.cpp
926
ext/gason/gason.h
927
)
928
929
add_library(vma STATIC
930
ext/vma/vk_mem_alloc.cpp
931
ext/vma/vk_mem_alloc.h
932
)
933
934
if(USE_FFMPEG)
935
if(NOT FFMPEG_DIR)
936
if(NOT USE_SYSTEM_FFMPEG)
937
if(ANDROID)
938
if(ARMV7)
939
set(PLATFORM_ARCH "android/armv7")
940
elseif(ARM64)
941
set(PLATFORM_ARCH "android/arm64")
942
elseif(X86_64)
943
set(PLATFORM_ARCH "android/x86_64")
944
elseif(X86)
945
set(PLATFORM_ARCH "android/x86")
946
endif()
947
elseif(IOS)
948
if(IOS_PLATFORM STREQUAL "TVOS")
949
set(PLATFORM_ARCH "tvos/arm64")
950
else()
951
set(PLATFORM_ARCH "ios/universal")
952
endif()
953
elseif(MACOSX)
954
set(PLATFORM_ARCH "macosx/universal")
955
elseif(LINUX)
956
if(ARMV7)
957
set(PLATFORM_ARCH "linux/armv7")
958
elseif(ARM64)
959
set(PLATFORM_ARCH "linux/aarch64")
960
elseif(ARM)
961
set(PLATFORM_ARCH "linux/arm")
962
elseif(MIPS)
963
set(PLATFORM_ARCH "linux/mips32")
964
elseif(RISCV64)
965
set(PLATFORM_ARCH "linux/riscv64")
966
elseif(LOONGARCH64)
967
set(PLATFORM_ARCH "linux/loongarch64")
968
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
969
set(PLATFORM_ARCH "linux/x86_64")
970
elseif(X86)
971
set(PLATFORM_ARCH "linux/x86")
972
endif()
973
elseif(WIN32)
974
if(X86_64)
975
set(PLATFORM_ARCH "Windows/x86_64")
976
elseif(X86)
977
set(PLATFORM_ARCH "Windows/x86")
978
endif()
979
endif()
980
if(PLATFORM_ARCH)
981
set(FFMPEG_DIR "ffmpeg/${PLATFORM_ARCH}")
982
else()
983
message("Couldn't find an internal FFmpeg build, using system FFmpeg instead")
984
endif()
985
endif()
986
endif()
987
988
find_package(FFmpeg REQUIRED avcodec avformat avutil swresample swscale)
989
# Check if we need to use avcodec_(alloc|free)_frame instead of av_frame_(alloc|free)
990
# Check if we need to use const AVCodec
991
set(CMAKE_REQUIRED_INCLUDES ${FFmpeg_INCLUDE_avcodec};${FFmpeg_INCLUDE_avformat})
992
set(CMAKE_REQUIRED_LIBRARIES FFmpeg::avcodec;FFmpeg::avformat)
993
set(CMAKE_REQUIRED_FLAGS "-pedantic -Wall -Werror -Wno-unused-variable")
994
check_cxx_source_compiles("extern \"C\" {
995
#include <libavcodec/avcodec.h>
996
#include <libavformat/avformat.h>
997
}
998
static AVCodecContext *s_codec_context = NULL;
999
int main() {
1000
const AVCodec *codec = avcodec_find_encoder(s_codec_context->codec_id);
1001
return 0;
1002
}
1003
" HAVE_LIBAVCODEC_CONST_AVCODEC FAIL_REGEX "invalid conversion")
1004
1005
# Check if we need to use avcodec_alloc_context3 instead of stream->codec
1006
# Check if we need to use av_frame_get_buffer instead of avcodec_default_get_buffer
1007
endif(USE_FFMPEG)
1008
1009
find_package(ZLIB)
1010
if(ZLIB_FOUND AND NOT ANDROID)
1011
include_directories(${ZLIB_INCLUDE_DIR})
1012
add_definitions(-DSHARED_ZLIB)
1013
else()
1014
add_library(zlib STATIC
1015
ext/zlib/adler32.c
1016
ext/zlib/compress.c
1017
ext/zlib/crc32.c
1018
ext/zlib/crc32.h
1019
ext/zlib/deflate.c
1020
ext/zlib/deflate.h
1021
ext/zlib/gzclose.c
1022
ext/zlib/gzguts.h
1023
ext/zlib/gzlib.c
1024
ext/zlib/gzread.c
1025
ext/zlib/gzwrite.c
1026
ext/zlib/infback.c
1027
ext/zlib/inffast.c
1028
ext/zlib/inffast.h
1029
ext/zlib/inffixed.h
1030
ext/zlib/inflate.c
1031
ext/zlib/inflate.h
1032
ext/zlib/inftrees.c
1033
ext/zlib/inftrees.h
1034
ext/zlib/make_vms.com
1035
ext/zlib/trees.c
1036
ext/zlib/trees.h
1037
ext/zlib/uncompr.c
1038
ext/zlib/zconf.h
1039
ext/zlib/zlib.h
1040
ext/zlib/zutil.c
1041
ext/zlib/zutil.h
1042
)
1043
include_directories(ext/zlib)
1044
set(ZLIB_LIBRARY zlib)
1045
endif()
1046
1047
add_library(cityhash STATIC
1048
ext/cityhash/city.cpp
1049
ext/cityhash/city.h
1050
ext/cityhash/citycrc.h
1051
)
1052
target_include_directories(cityhash PRIVATE ext/cityhash)
1053
1054
if(NOT MSVC)
1055
# These can be fast even for debug.
1056
set_target_properties(udis86 PROPERTIES COMPILE_FLAGS "-O2")
1057
set_target_properties(cityhash PROPERTIES COMPILE_FLAGS "-O2")
1058
if(NOT ZLIB_FOUND)
1059
set_target_properties(zlib PROPERTIES COMPILE_FLAGS "-O2")
1060
endif()
1061
endif()
1062
1063
1064
find_package(LIBZIP)
1065
if(LIBZIP_FOUND AND USE_SYSTEM_LIBZIP)
1066
include_directories(${LIBZIP_INCLUDE_DIRS})
1067
add_definitions(-DSHARED_LIBZIP)
1068
else()
1069
add_library(libzip STATIC
1070
ext/libzip/zip_add.c
1071
ext/libzip/zip_add_dir.c
1072
ext/libzip/zip_add_entry.c
1073
ext/libzip/zip_algorithm_deflate.c
1074
ext/libzip/zip_buffer.c
1075
ext/libzip/zip_close.c
1076
ext/libzip/zip_delete.c
1077
ext/libzip/zip_dir_add.c
1078
ext/libzip/zip_dirent.c
1079
ext/libzip/zip_discard.c
1080
ext/libzip/zip_entry.c
1081
ext/libzip/zip_error.c
1082
ext/libzip/zip_error_clear.c
1083
ext/libzip/zip_error_get.c
1084
ext/libzip/zip_error_get_sys_type.c
1085
ext/libzip/zip_error_strerror.c
1086
ext/libzip/zip_error_to_str.c
1087
ext/libzip/zip_extra_field.c
1088
ext/libzip/zip_extra_field_api.c
1089
ext/libzip/zip_fclose.c
1090
ext/libzip/zip_fdopen.c
1091
ext/libzip/zip_file_add.c
1092
ext/libzip/zip_file_error_clear.c
1093
ext/libzip/zip_file_error_get.c
1094
ext/libzip/zip_file_get_comment.c
1095
ext/libzip/zip_file_get_external_attributes.c
1096
ext/libzip/zip_file_get_offset.c
1097
ext/libzip/zip_file_rename.c
1098
ext/libzip/zip_file_replace.c
1099
ext/libzip/zip_file_set_comment.c
1100
ext/libzip/zip_file_set_encryption.c
1101
ext/libzip/zip_file_set_external_attributes.c
1102
ext/libzip/zip_file_set_mtime.c
1103
ext/libzip/zip_file_strerror.c
1104
ext/libzip/zip_fopen.c
1105
ext/libzip/zip_fopen_encrypted.c
1106
ext/libzip/zip_fopen_index.c
1107
ext/libzip/zip_fopen_index_encrypted.c
1108
ext/libzip/zip_fread.c
1109
ext/libzip/zip_fseek.c
1110
ext/libzip/zip_ftell.c
1111
ext/libzip/zip_get_archive_comment.c
1112
ext/libzip/zip_get_archive_flag.c
1113
ext/libzip/zip_get_encryption_implementation.c
1114
ext/libzip/zip_get_file_comment.c
1115
ext/libzip/zip_get_name.c
1116
ext/libzip/zip_get_num_entries.c
1117
ext/libzip/zip_get_num_files.c
1118
ext/libzip/zip_hash.c
1119
ext/libzip/zip_io_util.c
1120
ext/libzip/zip_libzip_version.c
1121
ext/libzip/zip_memdup.c
1122
ext/libzip/zip_name_locate.c
1123
ext/libzip/zip_new.c
1124
ext/libzip/zip_open.c
1125
ext/libzip/zip_pkware.c
1126
ext/libzip/zip_progress.c
1127
ext/libzip/zip_rename.c
1128
ext/libzip/zip_replace.c
1129
ext/libzip/zip_set_archive_comment.c
1130
ext/libzip/zip_set_archive_flag.c
1131
ext/libzip/zip_set_default_password.c
1132
ext/libzip/zip_set_file_comment.c
1133
ext/libzip/zip_set_file_compression.c
1134
ext/libzip/zip_set_name.c
1135
ext/libzip/zip_source_accept_empty.c
1136
ext/libzip/zip_source_begin_write.c
1137
ext/libzip/zip_source_begin_write_cloning.c
1138
ext/libzip/zip_source_buffer.c
1139
ext/libzip/zip_source_call.c
1140
ext/libzip/zip_source_close.c
1141
ext/libzip/zip_source_commit_write.c
1142
ext/libzip/zip_source_compress.c
1143
ext/libzip/zip_source_crc.c
1144
ext/libzip/zip_source_error.c
1145
ext/libzip/zip_source_file_common.c
1146
ext/libzip/zip_source_file_stdio.c
1147
ext/libzip/zip_source_free.c
1148
ext/libzip/zip_source_function.c
1149
ext/libzip/zip_source_get_file_attributes.c
1150
ext/libzip/zip_source_is_deleted.c
1151
ext/libzip/zip_source_layered.c
1152
ext/libzip/zip_source_open.c
1153
ext/libzip/zip_source_pkware_decode.c
1154
ext/libzip/zip_source_pkware_encode.c
1155
ext/libzip/zip_source_read.c
1156
ext/libzip/zip_source_remove.c
1157
ext/libzip/zip_source_rollback_write.c
1158
ext/libzip/zip_source_seek.c
1159
ext/libzip/zip_source_seek_write.c
1160
ext/libzip/zip_source_stat.c
1161
ext/libzip/zip_source_supports.c
1162
ext/libzip/zip_source_tell.c
1163
ext/libzip/zip_source_tell_write.c
1164
ext/libzip/zip_source_window.c
1165
ext/libzip/zip_source_write.c
1166
ext/libzip/zip_source_zip.c
1167
ext/libzip/zip_source_zip_new.c
1168
ext/libzip/zip_stat.c
1169
ext/libzip/zip_stat_index.c
1170
ext/libzip/zip_stat_init.c
1171
ext/libzip/zip_strerror.c
1172
ext/libzip/zip_string.c
1173
ext/libzip/zip_unchange.c
1174
ext/libzip/zip_unchange_all.c
1175
ext/libzip/zip_unchange_archive.c
1176
ext/libzip/zip_unchange_data.c
1177
ext/libzip/zip_utf-8.c
1178
ext/libzip/zip_err_str.c
1179
)
1180
if(WIN32)
1181
target_sources(libzip PRIVATE
1182
ext/libzip/zip_source_file_win32.c
1183
ext/libzip/zip_source_file_win32_named.c
1184
ext/libzip/zip_source_file_win32_utf16.c
1185
ext/libzip/zip_source_file_win32_utf8.c
1186
)
1187
if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
1188
target_sources(libzip PRIVATE ext/libzip/zip_random_uwp.c)
1189
else()
1190
target_sources(libzip PRIVATE ext/libzip/zip_source_file_win32_ansi.c ext/libzip/zip_random_win32.c)
1191
endif()
1192
else()
1193
target_sources(libzip PRIVATE
1194
ext/libzip/zip_mkstempm.c
1195
ext/libzip/zip_source_file_stdio_named.c
1196
ext/libzip/zip_random_unix.c
1197
)
1198
endif()
1199
target_link_libraries(libzip)
1200
include_directories(ext/libzip)
1201
set(LIBZIP_LIBRARY libzip)
1202
endif()
1203
1204
# Arm platforms require at least libpng17.
1205
if(ANDROID OR ARMV7 OR ARM64 OR ARM OR IOS)
1206
set(PNG_REQUIRED_VERSION 1.7)
1207
else()
1208
set(PNG_REQUIRED_VERSION 1.6)
1209
endif()
1210
1211
if(USE_SYSTEM_LIBPNG)
1212
find_package(PNG ${PNG_REQUIRED_VERSION})
1213
endif()
1214
if(PNG_FOUND)
1215
include_directories(${PNG_INCLUDE_DIRS})
1216
else()
1217
if(ARM)
1218
set(PNG_ARM_INCLUDES
1219
ext/libpng17/arm/arm_init.c
1220
ext/libpng17/arm/filter_neon.S
1221
ext/libpng17/arm/filter_neon_intrinsics.c
1222
)
1223
elseif(ARM64)
1224
set(PNG_ARM_INCLUDES
1225
ext/libpng17/arm/arm_init.c
1226
ext/libpng17/arm/filter_neon_intrinsics.c
1227
)
1228
endif()
1229
add_library(png17 STATIC
1230
ext/libpng17/pngconf.h
1231
ext/libpng17/pngdebug.h
1232
ext/libpng17/png.c
1233
ext/libpng17/png.h
1234
ext/libpng17/pngerror.c
1235
ext/libpng17/pngget.c
1236
ext/libpng17/pnginfo.h
1237
ext/libpng17/pnglibconf.h
1238
ext/libpng17/pngmem.c
1239
ext/libpng17/pngpread.c
1240
ext/libpng17/pngpriv.h
1241
ext/libpng17/pngread.c
1242
ext/libpng17/pngrio.c
1243
ext/libpng17/pngrtran.c
1244
ext/libpng17/pngrutil.c
1245
ext/libpng17/pngset.c
1246
ext/libpng17/pngstruct.h
1247
ext/libpng17/pngtrans.c
1248
ext/libpng17/pngwio.c
1249
ext/libpng17/pngwrite.c
1250
ext/libpng17/pngwtran.c
1251
ext/libpng17/pngwutil.c
1252
${PNG_ARM_INCLUDES}
1253
)
1254
set(PNG_LIBRARIES png17)
1255
include_directories(ext/libpng17)
1256
endif()
1257
1258
add_library(basis_universal STATIC
1259
ext/basis_universal/basisu.h
1260
ext/basis_universal/basisu_containers.h
1261
ext/basis_universal/basisu_containers_impl.h
1262
ext/basis_universal/basisu_file_headers.h
1263
ext/basis_universal/basisu_transcoder.cpp
1264
ext/basis_universal/basisu_transcoder.h
1265
ext/basis_universal/basisu_transcoder_internal.h
1266
ext/basis_universal/basisu_transcoder_tables_astc.inc
1267
ext/basis_universal/basisu_transcoder_tables_astc_0_255.inc
1268
ext/basis_universal/basisu_transcoder_tables_atc_55.inc
1269
ext/basis_universal/basisu_transcoder_tables_atc_56.inc
1270
ext/basis_universal/basisu_transcoder_tables_bc7_m5_alpha.inc
1271
ext/basis_universal/basisu_transcoder_tables_bc7_m5_color.inc
1272
ext/basis_universal/basisu_transcoder_tables_dxt1_5.inc
1273
ext/basis_universal/basisu_transcoder_tables_dxt1_6.inc
1274
ext/basis_universal/basisu_transcoder_tables_pvrtc2_45.inc
1275
ext/basis_universal/basisu_transcoder_tables_pvrtc2_alpha_33.inc
1276
ext/basis_universal/basisu_transcoder_uastc.h
1277
)
1278
set(BASISU_LIBRARIES basis_universal)
1279
1280
set(nativeExtra)
1281
set(nativeExtraLibs)
1282
1283
if(OPENXR AND NOT ARMV7_DEVICE)
1284
set(nativeExtraLibs ${nativeExtraLibs} openxr_loader)
1285
endif()
1286
1287
if(IOS OR MACOSX)
1288
set(nativeExtra ${nativeExtra}
1289
Common/Render/Text/draw_text_cocoa.mm
1290
Common/Render/Text/draw_text_cocoa.h)
1291
endif()
1292
1293
if(ANDROID)
1294
set(NativeAppSource ${NativeAppSource}
1295
android/jni/app-android.cpp
1296
android/jni/AndroidJavaGLContext.cpp
1297
android/jni/AndroidJavaGLContext.h
1298
android/jni/AndroidVulkanContext.cpp
1299
android/jni/AndroidVulkanContext.h
1300
android/jni/AndroidGraphicsContext.h
1301
android/jni/AndroidAudio.cpp
1302
android/jni/AndroidAudio.h
1303
android/jni/OpenSLContext.cpp
1304
android/jni/OpenSLContext.h
1305
)
1306
# No target
1307
elseif(IOS AND NOT LIBRETRO)
1308
set(nativeExtra ${nativeExtra}
1309
ios/main.mm
1310
ios/AppDelegate.mm
1311
ios/AppDelegate.h
1312
ios/DisplayManager.h
1313
ios/DisplayManager.mm
1314
ios/Controls.h
1315
ios/Controls.mm
1316
ios/ViewControllerCommon.h
1317
ios/ViewController.mm
1318
ios/ViewController.h
1319
ios/ViewControllerMetal.mm
1320
ios/ViewControllerMetal.h
1321
ios/iOSCoreAudio.mm
1322
ios/iOSCoreAudio.h
1323
ios/CameraHelper.mm
1324
ios/CameraHelper.h
1325
ios/LocationHelper.mm
1326
ios/LocationHelper.h
1327
ios/PPSSPPUIApplication.h
1328
ios/PPSSPPUIApplication.mm
1329
ios/SmartKeyboardMap.cpp
1330
ios/SmartKeyboardMap.hpp
1331
ios/iCade/iCadeReaderView.h
1332
ios/iCade/iCadeReaderView.m
1333
ios/iCade/iCadeState.h
1334
UI/DarwinFileSystemServices.mm
1335
UI/DarwinFileSystemServices.h
1336
Common/Battery/AppleBatteryClient.m
1337
)
1338
1339
set(nativeExtraLibs ${nativeExtraLibs} "-framework Foundation -framework MediaPlayer -framework AudioToolbox -framework CoreGraphics -framework CoreMotion -framework QuartzCore -framework UIKit -framework GLKit -framework OpenAL -framework AVFoundation -framework CoreLocation -framework CoreText -framework CoreVideo -framework CoreMedia -framework CoreServices -framework Metal -framework IOSurface" )
1340
if(EXISTS "${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks/GameController.framework")
1341
set(nativeExtraLibs ${nativeExtraLibs} "-weak_framework GameController")
1342
endif()
1343
1344
if(NOT ICONV_LIBRARY)
1345
set(nativeExtraLibs ${nativeExtraLibs} iconv)
1346
endif()
1347
1348
# TODO: Enable arc globally?
1349
set_source_files_properties(ios/AppDelegate.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1350
set_source_files_properties(ios/ViewController.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1351
set_source_files_properties(ios/ViewControllerMetal.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1352
set_source_files_properties(ios/iOSCoreAudio.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1353
set_source_files_properties(ios/PPSSPPUIApplication.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1354
set_source_files_properties(ios/iCade/iCadeReaderView.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
1355
set_source_files_properties(ios/main.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1356
set_source_files_properties(ios/CameraHelper.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1357
set_source_files_properties(ios/AudioEngine.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1358
set_source_files_properties(ios/LocationHelper.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1359
set_source_files_properties(ios/DisplayManager.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1360
set_source_files_properties(ios/Controls.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1361
set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1362
set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
1363
set_source_files_properties(Common/Render/Text/draw_text_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1364
1365
set(TargetBin PPSSPP)
1366
elseif(IOS AND LIBRETRO)
1367
set(nativeExtraLibs ${nativeExtraLibs} "-framework GLKit")
1368
elseif(USING_QT_UI)
1369
set(CMAKE_AUTOMOC ON)
1370
find_package(Qt5 COMPONENTS OpenGL Gui Core Multimedia)
1371
list(APPEND NativeAppSource
1372
Qt/QtMain.cpp
1373
Qt/QtMain.h
1374
Qt/mainwindow.cpp
1375
Qt/mainwindow.h
1376
)
1377
add_definitions(-DUSING_QT_UI)
1378
if(USING_GLES2)
1379
add_definitions(-DQT_OPENGL_ES -DQT_OPENGL_ES_2)
1380
endif()
1381
if(APPLE)
1382
list(APPEND NativeAppSource
1383
UI/DarwinFileSystemServices.mm
1384
UI/DarwinFileSystemServices.h
1385
Common/Battery/AppleBatteryClient.m)
1386
set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
1387
set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1388
set_source_files_properties(Common/Render/Text/draw_text_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1389
set(nativeExtraLibs ${nativeExtraLibs} ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY})
1390
endif()
1391
include_directories(Qt)
1392
include_directories(${CMAKE_CURRENT_BINARY_DIR})
1393
set(nativeExtraLibs ${nativeExtraLibs} Qt5::OpenGL Qt5::Gui Qt5::Core Qt5::Multimedia)
1394
set(TargetBin PPSSPPQt)
1395
1396
# Enable SDL joystick if SDL is found
1397
if(SDL2_FOUND)
1398
add_definitions(-DSDL)
1399
set(nativeExtra ${nativeExtra}
1400
SDL/SDLJoystick.h
1401
SDL/SDLJoystick.cpp
1402
)
1403
set(nativeExtraLibs ${nativeExtraLibs} SDL2::SDL2)
1404
endif()
1405
1406
elseif(WIN32)
1407
# Don't care about SDL.
1408
set(TargetBin PPSSPPWindows)
1409
if(X86_64)
1410
link_directories(dx9sdk/Lib/x64)
1411
else()
1412
link_directories(dx9sdk/Lib/x86)
1413
endif()
1414
elseif(LIBRETRO)
1415
else()
1416
if(GOLD)
1417
set(TargetBin PPSSPPGold)
1418
else()
1419
set(TargetBin PPSSPPSDL)
1420
endif()
1421
# Require SDL
1422
add_definitions(-DSDL)
1423
set(nativeExtra ${nativeExtra}
1424
SDL/SDLJoystick.h
1425
SDL/SDLJoystick.cpp
1426
SDL/SDLMain.cpp
1427
SDL/SDLGLGraphicsContext.cpp
1428
)
1429
if(NOT USE_LIBNX)
1430
set(nativeExtra ${nativeExtra}
1431
SDL/SDLVulkanGraphicsContext.cpp
1432
)
1433
endif()
1434
if(SDL2_ttf_FOUND OR
1435
(SDL2_ttf_PKGCONFIG_FOUND AND
1436
SDL2_ttf_PKGCONFIG_VERSION VERSION_GREATER_EQUAL "2.0.18"))
1437
add_definitions(-DUSE_SDL2_TTF)
1438
if(FONTCONFIG_FOUND)
1439
add_definitions(-DUSE_SDL2_TTF_FONTCONFIG)
1440
set(nativeExtraLibs ${nativeExtraLibs} Fontconfig::Fontconfig)
1441
endif()
1442
elseif(SDL2_ttf_PKGCONFIG_FOUND)
1443
message(WARNING "Found SDL2_ttf <2.0.18 - this is too old, falling back to atlas")
1444
endif()
1445
if(SDL2_ttf_FOUND)
1446
set(nativeExtraLibs ${nativeExtraLibs} SDL2_ttf::SDL2_ttf)
1447
elseif(SDL2_ttf_PKGCONFIG_FOUND)
1448
set(nativeExtraLibs ${nativeExtraLibs} PkgConfig::SDL2_ttf_PKGCONFIG)
1449
endif()
1450
if(APPLE)
1451
set(nativeExtra ${nativeExtra}
1452
SDL/SDLMain.h
1453
SDL/SDLMain.mm
1454
SDL/SDLCocoaMetalLayer.h
1455
SDL/SDLCocoaMetalLayer.mm
1456
SDL/CocoaBarItems.mm
1457
SDL/CocoaBarItems.h
1458
SDL/PPSSPPAboutViewController.m
1459
SDL/PPSSPPAboutViewController.h
1460
UI/DarwinFileSystemServices.mm
1461
UI/DarwinFileSystemServices.h
1462
Common/Battery/AppleBatteryClient.m
1463
UI/PSPNSApplicationDelegate.mm
1464
UI/PSPNSApplicationDelegate.h)
1465
1466
# TODO
1467
# set_source_files_properties(SDL/SDLMain.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1468
1469
set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1470
set_source_files_properties(UI/PSPNSApplicationDelegate.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1471
set_source_files_properties(SDL/CocoaMetalLayer.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1472
set_source_files_properties(SDL/CocoaBarItems.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1473
set_source_files_properties(SDL/PPSSPPAboutViewController.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
1474
set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
1475
set_source_files_properties(Common/Render/Text/draw_text_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)
1476
set(nativeExtraLibs ${nativeExtraLibs} ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY})
1477
1478
if(USE_SYSTEM_LIBSDL2)
1479
set(nativeExtraLibs ${nativeExtraLibs} SDL2::SDL2)
1480
else()
1481
set(nativeExtraLibs ${nativeExtraLibs} ${SDL2Fwk})
1482
endif()
1483
elseif(USING_EGL)
1484
set(nativeExtraLibs ${nativeExtraLibs} pthread SDL2::SDL2)
1485
else()
1486
set(nativeExtraLibs ${nativeExtraLibs} SDL2::SDL2)
1487
endif()
1488
endif()
1489
1490
if(WIN32)
1491
if(MINGW)
1492
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff <INCLUDES> <SOURCE> <OBJECT>")
1493
# required when using the dx9sdk include paths
1494
add_definitions(-include ${CMAKE_CURRENT_SOURCE_DIR}/Windows/mingw_defines.h)
1495
else()
1496
target_link_libraries(Common dxguid)
1497
endif()
1498
target_link_libraries(Common winmm d3d9 dsound)
1499
endif()
1500
1501
if(NOT LIBRETRO)
1502
list(APPEND NativeAppSource
1503
UI/AudioCommon.h
1504
UI/AudioCommon.cpp
1505
)
1506
endif()
1507
1508
list(APPEND NativeAppSource
1509
android/jni/TestRunner.cpp
1510
UI/DiscordIntegration.cpp
1511
UI/NativeApp.cpp
1512
UI/BackgroundAudio.h
1513
UI/BackgroundAudio.cpp
1514
UI/ChatScreen.h
1515
UI/ChatScreen.cpp
1516
UI/DebugOverlay.cpp
1517
UI/DebugOverlay.h
1518
UI/DevScreens.cpp
1519
UI/DevScreens.h
1520
UI/DisplayLayoutScreen.cpp
1521
UI/DisplayLayoutScreen.h
1522
UI/EmuScreen.h
1523
UI/EmuScreen.cpp
1524
UI/GameInfoCache.h
1525
UI/GameInfoCache.cpp
1526
UI/MainScreen.h
1527
UI/MainScreen.cpp
1528
UI/MiscScreens.h
1529
UI/MiscScreens.cpp
1530
UI/PauseScreen.h
1531
UI/PauseScreen.cpp
1532
UI/TabbedDialogScreen.h
1533
UI/TabbedDialogScreen.cpp
1534
UI/GameScreen.h
1535
UI/GameScreen.cpp
1536
UI/GameSettingsScreen.h
1537
UI/GameSettingsScreen.cpp
1538
UI/DriverManagerScreen.h
1539
UI/DriverManagerScreen.cpp
1540
UI/GPUDriverTestScreen.h
1541
UI/GPUDriverTestScreen.cpp
1542
UI/TiltAnalogSettingsScreen.h
1543
UI/TiltAnalogSettingsScreen.cpp
1544
UI/TouchControlLayoutScreen.h
1545
UI/TouchControlLayoutScreen.cpp
1546
UI/TouchControlVisibilityScreen.h
1547
UI/TouchControlVisibilityScreen.cpp
1548
UI/GamepadEmu.h
1549
UI/GamepadEmu.cpp
1550
UI/JoystickHistoryView.h
1551
UI/JoystickHistoryView.cpp
1552
UI/OnScreenDisplay.h
1553
UI/OnScreenDisplay.cpp
1554
UI/ControlMappingScreen.h
1555
UI/ControlMappingScreen.cpp
1556
UI/RemoteISOScreen.h
1557
UI/RemoteISOScreen.cpp
1558
UI/ReportScreen.h
1559
UI/ReportScreen.cpp
1560
UI/SavedataScreen.h
1561
UI/SavedataScreen.cpp
1562
UI/Store.h
1563
UI/Store.cpp
1564
UI/CwCheatScreen.h
1565
UI/CwCheatScreen.cpp
1566
UI/InstallZipScreen.h
1567
UI/InstallZipScreen.cpp
1568
UI/JitCompareScreen.h
1569
UI/JitCompareScreen.cpp
1570
UI/MemStickScreen.h
1571
UI/MemStickScreen.cpp
1572
UI/ProfilerDraw.h
1573
UI/ProfilerDraw.cpp
1574
UI/CustomButtonMappingScreen.h
1575
UI/CustomButtonMappingScreen.cpp
1576
UI/Theme.h
1577
UI/Theme.cpp
1578
UI/RetroAchievementScreens.cpp
1579
UI/RetroAchievementScreens.h
1580
)
1581
1582
if(ANDROID)
1583
if(ARM)
1584
set(NativeAppSource ${NativeAppSource} android/jni/ArmEmitterTest.cpp)
1585
elseif(ARM64)
1586
set(NativeAppSource ${NativeAppSource} android/jni/Arm64EmitterTest.cpp)
1587
endif()
1588
1589
if (NOT LIBRETRO)
1590
set(nativeExtra ${nativeExtra} ${NativeAppSource})
1591
endif()
1592
endif()
1593
1594
if (IOS)
1595
set(nativeExtra ${nativeExtra} ${NativeAppSource})
1596
endif()
1597
1598
add_library(native STATIC
1599
${nativeExtra}
1600
Common/Render/Text/draw_text_qt.cpp
1601
Common/Render/Text/draw_text_qt.h
1602
ext/jpge/jpgd.cpp
1603
ext/jpge/jpgd.h
1604
ext/jpge/jpge.cpp
1605
ext/jpge/jpge.h
1606
)
1607
1608
if(LINUX AND NOT ANDROID)
1609
set(RT_LIB rt)
1610
endif()
1611
1612
set(ATOMIC_LIB)
1613
if(ANDROID OR (LINUX AND ARM_DEVICE) OR (LINUX AND RISCV64) OR (LINUX AND LOONGARCH64))
1614
set(ATOMIC_LIB atomic)
1615
endif()
1616
1617
target_link_libraries(native ${LIBZIP_LIBRARY} ${PNG_LIBRARIES} ${BASISU_LIBRARIES} ${ZLIB_LIBRARY} vma gason udis86 ${RT_LIB} ${nativeExtraLibs} ${ATOMIC_LIB} Common)
1618
if(TARGET Ext::GLEW)
1619
target_link_libraries(native Ext::GLEW)
1620
endif()
1621
1622
if(ANDROID)
1623
target_link_libraries(native log EGL OpenSLES)
1624
elseif(WIN32)
1625
target_link_libraries(native ws2_32 winmm)
1626
elseif(${CMAKE_SYSTEM_NAME} MATCHES "^(DragonFly|FreeBSD|NetBSD)$")
1627
target_link_libraries(native execinfo)
1628
endif()
1629
1630
add_library(kirk STATIC
1631
ext/libkirk/AES.c
1632
ext/libkirk/AES.h
1633
ext/libkirk/amctrl.c
1634
ext/libkirk/amctrl.h
1635
ext/libkirk/SHA1.c
1636
ext/libkirk/SHA1.h
1637
ext/libkirk/bn.c
1638
ext/libkirk/ec.c
1639
ext/libkirk/kirk_engine.c
1640
ext/libkirk/kirk_engine.h
1641
)
1642
target_include_directories(kirk PRIVATE ext/libkirk)
1643
1644
add_library(sfmt19937 STATIC
1645
ext/sfmt19937/SFMT.c
1646
ext/sfmt19937/SFMT.h
1647
ext/sfmt19937/SFMT-common.h
1648
ext/sfmt19937/SFMT-params.h
1649
ext/sfmt19937/SFMT-params19937.h
1650
)
1651
target_compile_definitions(sfmt19937 PRIVATE SFMT_MEXP=19937)
1652
target_include_directories(sfmt19937 PRIVATE ext/sfmt19937)
1653
1654
add_library(xbrz STATIC
1655
ext/xbrz/xbrz.cpp
1656
ext/xbrz/xbrz.h
1657
)
1658
target_include_directories(xbrz PRIVATE ext/xbrz)
1659
1660
add_library(xxhash STATIC
1661
ext/xxhash.c
1662
ext/xxhash.h
1663
)
1664
target_include_directories(xxhash PRIVATE ext/xxhash)
1665
1666
set(CoreExtra)
1667
set(CoreExtraLibs)
1668
1669
set(CoreExtra ${CoreExtra}
1670
Core/MIPS/IR/IRAnalysis.cpp
1671
Core/MIPS/IR/IRAnalysis.h
1672
Core/MIPS/IR/IRCompALU.cpp
1673
Core/MIPS/IR/IRCompBranch.cpp
1674
Core/MIPS/IR/IRCompFPU.cpp
1675
Core/MIPS/IR/IRCompLoadStore.cpp
1676
Core/MIPS/IR/IRCompVFPU.cpp
1677
Core/MIPS/IR/IRFrontend.cpp
1678
Core/MIPS/IR/IRFrontend.h
1679
Core/MIPS/IR/IRInst.cpp
1680
Core/MIPS/IR/IRInst.h
1681
Core/MIPS/IR/IRInterpreter.cpp
1682
Core/MIPS/IR/IRInterpreter.h
1683
Core/MIPS/IR/IRJit.cpp
1684
Core/MIPS/IR/IRJit.h
1685
Core/MIPS/IR/IRNativeCommon.cpp
1686
Core/MIPS/IR/IRNativeCommon.h
1687
Core/MIPS/IR/IRPassSimplify.cpp
1688
Core/MIPS/IR/IRPassSimplify.h
1689
Core/MIPS/IR/IRRegCache.cpp
1690
Core/MIPS/IR/IRRegCache.h
1691
)
1692
1693
list(APPEND CoreExtra
1694
Core/MIPS/ARM/ArmAsm.cpp
1695
Core/MIPS/ARM/ArmCompALU.cpp
1696
Core/MIPS/ARM/ArmCompBranch.cpp
1697
Core/MIPS/ARM/ArmCompFPU.cpp
1698
Core/MIPS/ARM/ArmCompLoadStore.cpp
1699
Core/MIPS/ARM/ArmCompVFPU.cpp
1700
Core/MIPS/ARM/ArmCompVFPUNEON.cpp
1701
Core/MIPS/ARM/ArmCompVFPUNEONUtil.cpp
1702
Core/MIPS/ARM/ArmCompReplace.cpp
1703
Core/MIPS/ARM/ArmJit.cpp
1704
Core/MIPS/ARM/ArmJit.h
1705
Core/MIPS/ARM/ArmRegCache.cpp
1706
Core/MIPS/ARM/ArmRegCache.h
1707
Core/MIPS/ARM/ArmRegCacheFPU.cpp
1708
Core/MIPS/ARM/ArmRegCacheFPU.h
1709
GPU/Common/VertexDecoderArm.cpp
1710
)
1711
1712
list(APPEND CoreExtra
1713
Core/MIPS/ARM64/Arm64Asm.cpp
1714
Core/MIPS/ARM64/Arm64CompALU.cpp
1715
Core/MIPS/ARM64/Arm64CompBranch.cpp
1716
Core/MIPS/ARM64/Arm64CompFPU.cpp
1717
Core/MIPS/ARM64/Arm64CompLoadStore.cpp
1718
Core/MIPS/ARM64/Arm64CompVFPU.cpp
1719
Core/MIPS/ARM64/Arm64CompReplace.cpp
1720
Core/MIPS/ARM64/Arm64Jit.cpp
1721
Core/MIPS/ARM64/Arm64Jit.h
1722
Core/MIPS/ARM64/Arm64RegCache.cpp
1723
Core/MIPS/ARM64/Arm64RegCache.h
1724
Core/MIPS/ARM64/Arm64RegCacheFPU.cpp
1725
Core/MIPS/ARM64/Arm64RegCacheFPU.h
1726
Core/MIPS/ARM64/Arm64IRAsm.cpp
1727
Core/MIPS/ARM64/Arm64IRCompALU.cpp
1728
Core/MIPS/ARM64/Arm64IRCompBranch.cpp
1729
Core/MIPS/ARM64/Arm64IRCompFPU.cpp
1730
Core/MIPS/ARM64/Arm64IRCompLoadStore.cpp
1731
Core/MIPS/ARM64/Arm64IRCompSystem.cpp
1732
Core/MIPS/ARM64/Arm64IRCompVec.cpp
1733
Core/MIPS/ARM64/Arm64IRJit.cpp
1734
Core/MIPS/ARM64/Arm64IRJit.h
1735
Core/MIPS/ARM64/Arm64IRRegCache.cpp
1736
Core/MIPS/ARM64/Arm64IRRegCache.h
1737
GPU/Common/VertexDecoderArm64.cpp
1738
Core/Util/DisArm64.cpp
1739
)
1740
1741
list(APPEND CoreExtra
1742
Core/MIPS/x86/Asm.cpp
1743
Core/MIPS/x86/CompALU.cpp
1744
Core/MIPS/x86/CompBranch.cpp
1745
Core/MIPS/x86/CompFPU.cpp
1746
Core/MIPS/x86/CompLoadStore.cpp
1747
Core/MIPS/x86/CompVFPU.cpp
1748
Core/MIPS/x86/CompReplace.cpp
1749
Core/MIPS/x86/Jit.cpp
1750
Core/MIPS/x86/Jit.h
1751
Core/MIPS/x86/JitSafeMem.cpp
1752
Core/MIPS/x86/JitSafeMem.h
1753
Core/MIPS/x86/RegCache.cpp
1754
Core/MIPS/x86/RegCache.h
1755
Core/MIPS/x86/RegCacheFPU.cpp
1756
Core/MIPS/x86/RegCacheFPU.h
1757
Core/MIPS/x86/X64IRAsm.cpp
1758
Core/MIPS/x86/X64IRCompALU.cpp
1759
Core/MIPS/x86/X64IRCompBranch.cpp
1760
Core/MIPS/x86/X64IRCompFPU.cpp
1761
Core/MIPS/x86/X64IRCompLoadStore.cpp
1762
Core/MIPS/x86/X64IRCompSystem.cpp
1763
Core/MIPS/x86/X64IRCompVec.cpp
1764
Core/MIPS/x86/X64IRJit.cpp
1765
Core/MIPS/x86/X64IRJit.h
1766
Core/MIPS/x86/X64IRRegCache.cpp
1767
Core/MIPS/x86/X64IRRegCache.h
1768
GPU/Common/VertexDecoderX86.cpp
1769
GPU/Software/DrawPixelX86.cpp
1770
GPU/Software/SamplerX86.cpp
1771
)
1772
1773
list(APPEND CoreExtra
1774
Core/MIPS/MIPS/MipsJit.cpp
1775
Core/MIPS/MIPS/MipsJit.h
1776
)
1777
1778
list(APPEND CoreExtra
1779
Core/MIPS/RiscV/RiscVAsm.cpp
1780
Core/MIPS/RiscV/RiscVCompALU.cpp
1781
Core/MIPS/RiscV/RiscVCompBranch.cpp
1782
Core/MIPS/RiscV/RiscVCompFPU.cpp
1783
Core/MIPS/RiscV/RiscVCompLoadStore.cpp
1784
Core/MIPS/RiscV/RiscVCompSystem.cpp
1785
Core/MIPS/RiscV/RiscVCompVec.cpp
1786
Core/MIPS/RiscV/RiscVJit.cpp
1787
Core/MIPS/RiscV/RiscVJit.h
1788
Core/MIPS/RiscV/RiscVRegCache.cpp
1789
Core/MIPS/RiscV/RiscVRegCache.h
1790
GPU/Common/VertexDecoderRiscV.cpp
1791
)
1792
1793
if(NOT MOBILE_DEVICE)
1794
set(CoreExtra ${CoreExtra}
1795
Core/AVIDump.cpp
1796
Core/AVIDump.h
1797
Core/WaveFile.cpp
1798
Core/WaveFile.h
1799
)
1800
endif()
1801
1802
set(GPU_GLES
1803
GPU/GLES/StencilBufferGLES.cpp
1804
GPU/GLES/GPU_GLES.cpp
1805
GPU/GLES/GPU_GLES.h
1806
GPU/GLES/FragmentTestCacheGLES.cpp
1807
GPU/GLES/FragmentTestCacheGLES.h
1808
GPU/GLES/FramebufferManagerGLES.cpp
1809
GPU/GLES/FramebufferManagerGLES.h
1810
GPU/GLES/ShaderManagerGLES.cpp
1811
GPU/GLES/ShaderManagerGLES.h
1812
GPU/GLES/StateMappingGLES.cpp
1813
GPU/GLES/StateMappingGLES.h
1814
GPU/GLES/TextureCacheGLES.cpp
1815
GPU/GLES/TextureCacheGLES.h
1816
GPU/GLES/DrawEngineGLES.cpp
1817
GPU/GLES/DrawEngineGLES.h
1818
)
1819
1820
set(GPU_VULKAN
1821
GPU/Vulkan/DebugVisVulkan.cpp
1822
GPU/Vulkan/DebugVisVulkan.h
1823
GPU/Vulkan/DrawEngineVulkan.cpp
1824
GPU/Vulkan/DrawEngineVulkan.h
1825
GPU/Vulkan/FramebufferManagerVulkan.cpp
1826
GPU/Vulkan/FramebufferManagerVulkan.h
1827
GPU/Vulkan/GPU_Vulkan.cpp
1828
GPU/Vulkan/GPU_Vulkan.h
1829
GPU/Vulkan/PipelineManagerVulkan.cpp
1830
GPU/Vulkan/PipelineManagerVulkan.h
1831
GPU/Vulkan/ShaderManagerVulkan.cpp
1832
GPU/Vulkan/ShaderManagerVulkan.h
1833
GPU/Vulkan/StateMappingVulkan.cpp
1834
GPU/Vulkan/StateMappingVulkan.h
1835
GPU/Vulkan/TextureCacheVulkan.cpp
1836
GPU/Vulkan/TextureCacheVulkan.h
1837
GPU/Vulkan/VulkanUtil.cpp
1838
GPU/Vulkan/VulkanUtil.h
1839
)
1840
1841
set(GPU_D3D9
1842
GPU/Directx9/DrawEngineDX9.cpp
1843
GPU/Directx9/DrawEngineDX9.h
1844
GPU/Directx9/FramebufferManagerDX9.cpp
1845
GPU/Directx9/FramebufferManagerDX9.h
1846
GPU/Directx9/GPU_DX9.cpp
1847
GPU/Directx9/GPU_DX9.h
1848
GPU/Directx9/ShaderManagerDX9.cpp
1849
GPU/Directx9/ShaderManagerDX9.h
1850
GPU/Directx9/StateMappingDX9.cpp
1851
GPU/Directx9/StateMappingDX9.h
1852
GPU/Directx9/TextureCacheDX9.cpp
1853
GPU/Directx9/TextureCacheDX9.h
1854
)
1855
1856
set(GPU_D3D11
1857
GPU/D3D11/DrawEngineD3D11.cpp
1858
GPU/D3D11/DrawEngineD3D11.h
1859
GPU/D3D11/FramebufferManagerD3D11.cpp
1860
GPU/D3D11/FramebufferManagerD3D11.h
1861
GPU/D3D11/GPU_D3D11.cpp
1862
GPU/D3D11/GPU_D3D11.h
1863
GPU/D3D11/D3D11Util.cpp
1864
GPU/D3D11/D3D11Util.h
1865
GPU/D3D11/ShaderManagerD3D11.cpp
1866
GPU/D3D11/ShaderManagerD3D11.h
1867
GPU/D3D11/StateMappingD3D11.cpp
1868
GPU/D3D11/StateMappingD3D11.h
1869
GPU/D3D11/TextureCacheD3D11.cpp
1870
GPU/D3D11/TextureCacheD3D11.h
1871
)
1872
1873
# We build Vulkan even on Apple to avoid annoying build differences.
1874
set(GPU_IMPLS ${GPU_GLES} ${GPU_VULKAN})
1875
if(WIN32)
1876
list(APPEND GPU_IMPLS ${GPU_D3D9} ${GPU_D3D11})
1877
endif()
1878
1879
set(GPU_SOURCES
1880
${GPU_IMPLS}
1881
${GPU_NEON}
1882
GPU/Common/Draw2D.cpp
1883
GPU/Common/Draw2D.h
1884
GPU/Common/DepthBufferCommon.cpp
1885
GPU/Common/TextureShaderCommon.cpp
1886
GPU/Common/TextureShaderCommon.h
1887
GPU/Common/DepalettizeShaderCommon.cpp
1888
GPU/Common/DepalettizeShaderCommon.h
1889
GPU/Common/FragmentShaderGenerator.cpp
1890
GPU/Common/FragmentShaderGenerator.h
1891
GPU/Common/VertexShaderGenerator.cpp
1892
GPU/Common/VertexShaderGenerator.h
1893
GPU/Common/GeometryShaderGenerator.cpp
1894
GPU/Common/GeometryShaderGenerator.h
1895
GPU/Common/FramebufferManagerCommon.cpp
1896
GPU/Common/FramebufferManagerCommon.h
1897
GPU/Common/GPUDebugInterface.cpp
1898
GPU/Common/GPUDebugInterface.h
1899
GPU/Common/GPUStateUtils.cpp
1900
GPU/Common/GPUStateUtils.h
1901
GPU/Common/DrawEngineCommon.cpp
1902
GPU/Common/DrawEngineCommon.h
1903
GPU/Common/PresentationCommon.cpp
1904
GPU/Common/PresentationCommon.h
1905
GPU/Common/ReinterpretFramebuffer.cpp
1906
GPU/Common/ReinterpretFramebuffer.h
1907
GPU/Common/ShaderId.cpp
1908
GPU/Common/ShaderId.h
1909
GPU/Common/ShaderUniforms.cpp
1910
GPU/Common/ShaderUniforms.h
1911
GPU/Common/ShaderCommon.cpp
1912
GPU/Common/ShaderCommon.h
1913
GPU/Common/SplineCommon.cpp
1914
GPU/Common/SplineCommon.h
1915
GPU/Common/StencilCommon.cpp
1916
GPU/Common/StencilCommon.h
1917
GPU/Common/SoftwareTransformCommon.cpp
1918
GPU/Common/SoftwareTransformCommon.h
1919
GPU/Common/VertexDecoderCommon.cpp
1920
GPU/Common/VertexDecoderCommon.h
1921
GPU/Common/VertexDecoderHandwritten.cpp
1922
GPU/Common/VertexDecoderHandwritten.h
1923
GPU/Common/TransformCommon.cpp
1924
GPU/Common/TransformCommon.h
1925
GPU/Common/IndexGenerator.cpp
1926
GPU/Common/IndexGenerator.h
1927
GPU/Common/TextureDecoder.cpp
1928
GPU/Common/TextureDecoder.h
1929
GPU/Common/TextureCacheCommon.cpp
1930
GPU/Common/TextureCacheCommon.h
1931
GPU/Common/TextureScalerCommon.cpp
1932
GPU/Common/TextureScalerCommon.h
1933
GPU/Common/PostShader.cpp
1934
GPU/Common/PostShader.h
1935
GPU/Common/TextureReplacer.cpp
1936
GPU/Common/TextureReplacer.h
1937
GPU/Common/ReplacedTexture.cpp
1938
GPU/Common/ReplacedTexture.h
1939
GPU/Debugger/Breakpoints.cpp
1940
GPU/Debugger/Breakpoints.h
1941
GPU/Debugger/Debugger.cpp
1942
GPU/Debugger/Debugger.h
1943
GPU/Debugger/GECommandTable.cpp
1944
GPU/Debugger/GECommandTable.h
1945
GPU/Debugger/Playback.cpp
1946
GPU/Debugger/Playback.h
1947
GPU/Debugger/Record.cpp
1948
GPU/Debugger/Record.h
1949
GPU/Debugger/RecordFormat.h
1950
GPU/Debugger/Stepping.cpp
1951
GPU/Debugger/Stepping.h
1952
GPU/ge_constants.h
1953
GPU/GeConstants.cpp
1954
GPU/GPUInterface.h
1955
GPU/GeDisasm.cpp
1956
GPU/GeDisasm.h
1957
GPU/GPU.cpp
1958
GPU/GPU.h
1959
GPU/GPUCommon.cpp
1960
GPU/GPUCommon.h
1961
GPU/GPUCommonHW.cpp
1962
GPU/GPUCommonHW.h
1963
GPU/GPUState.cpp
1964
GPU/GPUState.h
1965
GPU/Math3D.cpp
1966
GPU/Math3D.h
1967
GPU/Software/BinManager.cpp
1968
GPU/Software/BinManager.h
1969
GPU/Software/Clipper.cpp
1970
GPU/Software/Clipper.h
1971
GPU/Software/DrawPixel.cpp
1972
GPU/Software/DrawPixel.h
1973
GPU/Software/FuncId.cpp
1974
GPU/Software/FuncId.h
1975
GPU/Software/Lighting.cpp
1976
GPU/Software/Lighting.h
1977
GPU/Software/Rasterizer.cpp
1978
GPU/Software/Rasterizer.h
1979
GPU/Software/RasterizerRectangle.cpp
1980
GPU/Software/RasterizerRectangle.h
1981
GPU/Software/RasterizerRegCache.cpp
1982
GPU/Software/RasterizerRegCache.h
1983
GPU/Software/Sampler.cpp
1984
GPU/Software/Sampler.h
1985
GPU/Software/SoftGpu.cpp
1986
GPU/Software/SoftGpu.h
1987
GPU/Software/TransformUnit.cpp
1988
GPU/Software/TransformUnit.h
1989
)
1990
1991
# 'ppsspp_jni' on ANDROID, 'Core' everywhere else
1992
# SHARED on ANDROID, STATIC everywhere else
1993
add_library(${CoreLibName} ${CoreLinkType}
1994
${CoreExtra}
1995
${CommonJIT}
1996
Core/Config.cpp
1997
Core/Config.h
1998
Core/ConfigSettings.cpp
1999
Core/ConfigSettings.h
2000
Core/ConfigValues.h
2001
Core/ControlMapper.cpp
2002
Core/ControlMapper.h
2003
Core/Core.cpp
2004
Core/Core.h
2005
Core/Compatibility.cpp
2006
Core/Compatibility.h
2007
Core/CoreParameter.h
2008
Core/CoreTiming.cpp
2009
Core/CoreTiming.h
2010
Core/CwCheat.cpp
2011
Core/CwCheat.h
2012
Core/FrameTiming.cpp
2013
Core/FrameTiming.h
2014
Core/HDRemaster.cpp
2015
Core/HDRemaster.h
2016
Core/Instance.cpp
2017
Core/Instance.h
2018
Core/KeyMap.cpp
2019
Core/KeyMap.h
2020
Core/KeyMapDefaults.cpp
2021
Core/KeyMapDefaults.h
2022
Core/RetroAchievements.h
2023
Core/RetroAchievements.cpp
2024
Core/ThreadEventQueue.h
2025
Core/TiltEventProcessor.h
2026
Core/TiltEventProcessor.cpp
2027
Core/WebServer.cpp
2028
Core/WebServer.h
2029
Core/Debugger/Breakpoints.cpp
2030
Core/Debugger/Breakpoints.h
2031
Core/Debugger/DebugInterface.h
2032
Core/Debugger/MemBlockInfo.cpp
2033
Core/Debugger/MemBlockInfo.h
2034
Core/Debugger/SymbolMap.cpp
2035
Core/Debugger/SymbolMap.h
2036
Core/Debugger/DisassemblyManager.cpp
2037
Core/Debugger/DisassemblyManager.h
2038
Core/Debugger/WebSocket.cpp
2039
Core/Debugger/WebSocket.h
2040
Core/Debugger/WebSocket/BreakpointSubscriber.cpp
2041
Core/Debugger/WebSocket/BreakpointSubscriber.h
2042
Core/Debugger/WebSocket/CPUCoreSubscriber.cpp
2043
Core/Debugger/WebSocket/CPUCoreSubscriber.h
2044
Core/Debugger/WebSocket/DisasmSubscriber.cpp
2045
Core/Debugger/WebSocket/DisasmSubscriber.h
2046
Core/Debugger/WebSocket/GameBroadcaster.cpp
2047
Core/Debugger/WebSocket/GameBroadcaster.h
2048
Core/Debugger/WebSocket/GameSubscriber.cpp
2049
Core/Debugger/WebSocket/GameSubscriber.h
2050
Core/Debugger/WebSocket/ClientConfigSubscriber.cpp
2051
Core/Debugger/WebSocket/ClientConfigSubscriber.h
2052
Core/Debugger/WebSocket/GPUBufferSubscriber.cpp
2053
Core/Debugger/WebSocket/GPUBufferSubscriber.h
2054
Core/Debugger/WebSocket/GPURecordSubscriber.cpp
2055
Core/Debugger/WebSocket/GPURecordSubscriber.h
2056
Core/Debugger/WebSocket/GPUStatsSubscriber.cpp
2057
Core/Debugger/WebSocket/GPUStatsSubscriber.h
2058
Core/Debugger/WebSocket/HLESubscriber.cpp
2059
Core/Debugger/WebSocket/HLESubscriber.h
2060
Core/Debugger/WebSocket/InputBroadcaster.cpp
2061
Core/Debugger/WebSocket/InputBroadcaster.h
2062
Core/Debugger/WebSocket/InputSubscriber.cpp
2063
Core/Debugger/WebSocket/InputSubscriber.h
2064
Core/Debugger/WebSocket/LogBroadcaster.cpp
2065
Core/Debugger/WebSocket/LogBroadcaster.h
2066
Core/Debugger/WebSocket/MemoryInfoSubscriber.cpp
2067
Core/Debugger/WebSocket/MemoryInfoSubscriber.h
2068
Core/Debugger/WebSocket/MemorySubscriber.cpp
2069
Core/Debugger/WebSocket/MemorySubscriber.h
2070
Core/Debugger/WebSocket/ReplaySubscriber.cpp
2071
Core/Debugger/WebSocket/ReplaySubscriber.h
2072
Core/Debugger/WebSocket/SteppingBroadcaster.cpp
2073
Core/Debugger/WebSocket/SteppingBroadcaster.h
2074
Core/Debugger/WebSocket/SteppingSubscriber.cpp
2075
Core/Debugger/WebSocket/SteppingSubscriber.h
2076
Core/Debugger/WebSocket/WebSocketUtils.cpp
2077
Core/Debugger/WebSocket/WebSocketUtils.h
2078
Core/Dialog/PSPDialog.cpp
2079
Core/Dialog/PSPDialog.h
2080
Core/Dialog/PSPGamedataInstallDialog.cpp
2081
Core/Dialog/PSPGamedataInstallDialog.h
2082
Core/Dialog/PSPMsgDialog.cpp
2083
Core/Dialog/PSPMsgDialog.h
2084
Core/Dialog/PSPNetconfDialog.cpp
2085
Core/Dialog/PSPNetconfDialog.h
2086
Core/Dialog/PSPNpSigninDialog.cpp
2087
Core/Dialog/PSPNpSigninDialog.h
2088
Core/Dialog/PSPOskDialog.cpp
2089
Core/Dialog/PSPOskDialog.h
2090
Core/Dialog/PSPPlaceholderDialog.cpp
2091
Core/Dialog/PSPPlaceholderDialog.h
2092
Core/Dialog/PSPSaveDialog.cpp
2093
Core/Dialog/PSPSaveDialog.h
2094
Core/Dialog/PSPScreenshotDialog.cpp
2095
Core/Dialog/PSPScreenshotDialog.h
2096
Core/Dialog/SavedataParam.cpp
2097
Core/Dialog/SavedataParam.h
2098
Core/ELF/ElfReader.cpp
2099
Core/ELF/ElfReader.h
2100
Core/ELF/ElfTypes.h
2101
Core/ELF/PBPReader.cpp
2102
Core/ELF/PBPReader.h
2103
Core/ELF/PrxDecrypter.cpp
2104
Core/ELF/PrxDecrypter.h
2105
Core/ELF/ParamSFO.cpp
2106
Core/ELF/ParamSFO.h
2107
Core/FFMPEGCompat.h
2108
Core/FileSystems/tlzrc.cpp
2109
Core/FileSystems/BlobFileSystem.cpp
2110
Core/FileSystems/BlobFileSystem.h
2111
Core/FileSystems/BlockDevices.cpp
2112
Core/FileSystems/BlockDevices.h
2113
Core/FileSystems/DirectoryFileSystem.cpp
2114
Core/FileSystems/DirectoryFileSystem.h
2115
Core/FileSystems/FileSystem.h
2116
Core/FileSystems/FileSystem.cpp
2117
Core/FileSystems/ISOFileSystem.cpp
2118
Core/FileSystems/ISOFileSystem.h
2119
Core/FileSystems/MetaFileSystem.cpp
2120
Core/FileSystems/MetaFileSystem.h
2121
Core/FileSystems/VirtualDiscFileSystem.cpp
2122
Core/FileSystems/VirtualDiscFileSystem.h
2123
Core/Font/PGF.cpp
2124
Core/Font/PGF.h
2125
Core/HLE/FunctionWrappers.h
2126
Core/HLE/HLE.cpp
2127
Core/HLE/HLE.h
2128
Core/HLE/ReplaceTables.cpp
2129
Core/HLE/ReplaceTables.h
2130
Core/HLE/HLEHelperThread.cpp
2131
Core/HLE/HLEHelperThread.h
2132
Core/HLE/HLETables.cpp
2133
Core/HLE/HLETables.h
2134
Core/HLE/KernelWaitHelpers.h
2135
Core/HLE/KUBridge.h
2136
Core/HLE/KUBridge.cpp
2137
Core/HLE/Plugins.h
2138
Core/HLE/Plugins.cpp
2139
Core/HLE/ThreadQueueList.h
2140
Core/HLE/__sceAudio.cpp
2141
Core/HLE/__sceAudio.h
2142
Core/HLE/sceAdler.cpp
2143
Core/HLE/sceAdler.h
2144
Core/HLE/AtracCtx.cpp
2145
Core/HLE/AtracCtx.h
2146
Core/HLE/AtracCtx2.cpp
2147
Core/HLE/AtracCtx2.h
2148
Core/HLE/sceAtrac.cpp
2149
Core/HLE/sceAtrac.h
2150
Core/HLE/sceAudio.cpp
2151
Core/HLE/sceAudiocodec.cpp
2152
Core/HLE/sceAudiocodec.h
2153
Core/HLE/sceAudioRouting.cpp
2154
Core/HLE/sceAudioRouting.h
2155
Core/HLE/sceAudio.h
2156
Core/HLE/sceCcc.h
2157
Core/HLE/sceCcc.cpp
2158
Core/HLE/sceChnnlsv.cpp
2159
Core/HLE/sceChnnlsv.h
2160
Core/HLE/sceCtrl.cpp
2161
Core/HLE/sceCtrl.h
2162
Core/HLE/sceDeflt.cpp
2163
Core/HLE/sceDeflt.h
2164
Core/HLE/sceDisplay.cpp
2165
Core/HLE/sceDisplay.h
2166
Core/HLE/sceDmac.cpp
2167
Core/HLE/sceDmac.h
2168
Core/HLE/sceG729.cpp
2169
Core/HLE/sceG729.h
2170
Core/HLE/sceGameUpdate.cpp
2171
Core/HLE/sceGameUpdate.h
2172
Core/HLE/sceGe.cpp
2173
Core/HLE/sceGe.h
2174
Core/HLE/sceFont.cpp
2175
Core/HLE/sceFont.h
2176
Core/HLE/sceHeap.cpp
2177
Core/HLE/sceHeap.h
2178
Core/HLE/sceHprm.cpp
2179
Core/HLE/sceHprm.h
2180
Core/HLE/sceHttp.cpp
2181
Core/HLE/sceHttp.h
2182
Core/HLE/sceImpose.cpp
2183
Core/HLE/sceImpose.h
2184
Core/HLE/sceIo.cpp
2185
Core/HLE/sceIo.h
2186
Core/HLE/sceJpeg.cpp
2187
Core/HLE/sceJpeg.h
2188
Core/HLE/sceKernel.cpp
2189
Core/HLE/sceKernel.h
2190
Core/HLE/sceKernelAlarm.cpp
2191
Core/HLE/sceKernelAlarm.h
2192
Core/HLE/sceKernelEventFlag.cpp
2193
Core/HLE/sceKernelEventFlag.h
2194
Core/HLE/sceKernelHeap.cpp
2195
Core/HLE/sceKernelHeap.h
2196
Core/HLE/sceKernelInterrupt.cpp
2197
Core/HLE/sceKernelInterrupt.h
2198
Core/HLE/sceKernelMbx.cpp
2199
Core/HLE/sceKernelMbx.h
2200
Core/HLE/sceKernelMemory.cpp
2201
Core/HLE/sceKernelMemory.h
2202
Core/HLE/sceKernelModule.cpp
2203
Core/HLE/sceKernelModule.h
2204
Core/HLE/sceKernelMsgPipe.cpp
2205
Core/HLE/sceKernelMsgPipe.h
2206
Core/HLE/sceKernelMutex.cpp
2207
Core/HLE/sceKernelMutex.h
2208
Core/HLE/sceKernelSemaphore.cpp
2209
Core/HLE/sceKernelSemaphore.h
2210
Core/HLE/sceKernelThread.cpp
2211
Core/HLE/sceKernelThread.h
2212
Core/HLE/sceKernelTime.cpp
2213
Core/HLE/sceKernelTime.h
2214
Core/HLE/sceKernelVTimer.cpp
2215
Core/HLE/sceKernelVTimer.h
2216
Core/HLE/sceMpeg.cpp
2217
Core/HLE/sceMpeg.h
2218
Core/HLE/sceNet.cpp
2219
Core/HLE/sceNet.h
2220
Core/HLE/sceNetAdhoc.cpp
2221
Core/HLE/sceNetAdhoc.h
2222
Core/HLE/proAdhoc.h
2223
Core/HLE/proAdhoc.cpp
2224
Core/HLE/proAdhocServer.h
2225
Core/HLE/proAdhocServer.cpp
2226
Core/HLE/sceOpenPSID.cpp
2227
Core/HLE/sceOpenPSID.h
2228
Core/HLE/sceP3da.cpp
2229
Core/HLE/sceP3da.h
2230
Core/HLE/sceMt19937.cpp
2231
Core/HLE/sceMt19937.h
2232
Core/HLE/sceMd5.cpp
2233
Core/HLE/sceMd5.h
2234
Core/HLE/sceMp4.cpp
2235
Core/HLE/sceMp4.h
2236
Core/HLE/sceMp3.cpp
2237
Core/HLE/sceMp3.h
2238
Core/HLE/sceParseHttp.cpp
2239
Core/HLE/sceParseHttp.h
2240
Core/HLE/sceParseUri.cpp
2241
Core/HLE/sceParseUri.h
2242
Core/HLE/scePower.cpp
2243
Core/HLE/scePower.h
2244
Core/HLE/scePsmf.cpp
2245
Core/HLE/scePsmf.h
2246
Core/HLE/sceRtc.cpp
2247
Core/HLE/sceRtc.h
2248
Core/HLE/sceSas.cpp
2249
Core/HLE/sceSas.h
2250
Core/HLE/sceSfmt19937.cpp
2251
Core/HLE/sceSfmt19937.h
2252
Core/HLE/sceSha256.cpp
2253
Core/HLE/sceSha256.h
2254
Core/HLE/sceSircs.cpp
2255
Core/HLE/sceSircs.h
2256
Core/HLE/sceSsl.cpp
2257
Core/HLE/sceSsl.h
2258
Core/HLE/sceUmd.cpp
2259
Core/HLE/sceUmd.h
2260
Core/HLE/sceUsb.cpp
2261
Core/HLE/sceUsb.h
2262
Core/HLE/sceUsbAcc.cpp
2263
Core/HLE/sceUsbAcc.h
2264
Core/HLE/sceUsbCam.cpp
2265
Core/HLE/sceUsbCam.h
2266
Core/HLE/sceUsbGps.cpp
2267
Core/HLE/sceUsbGps.h
2268
Core/HLE/sceUsbMic.cpp
2269
Core/HLE/sceUsbMic.h
2270
Core/HLE/sceUtility.cpp
2271
Core/HLE/sceUtility.h
2272
Core/HLE/sceVaudio.cpp
2273
Core/HLE/sceVaudio.h
2274
Core/HLE/scePspNpDrm_user.cpp
2275
Core/HLE/scePspNpDrm_user.h
2276
Core/HLE/sceNp.cpp
2277
Core/HLE/sceNp.h
2278
Core/HLE/sceNp2.cpp
2279
Core/HLE/sceNp2.h
2280
Core/HLE/scePauth.cpp
2281
Core/HLE/scePauth.h
2282
Core/HW/SimpleAudioDec.cpp
2283
Core/HW/SimpleAudioDec.h
2284
Core/HW/Atrac3Standalone.cpp
2285
Core/HW/Atrac3Standalone.h
2286
Core/HW/SimpleAudioDec.h
2287
Core/HW/AsyncIOManager.cpp
2288
Core/HW/AsyncIOManager.h
2289
Core/HW/BufferQueue.cpp
2290
Core/HW/BufferQueue.h
2291
Core/HW/Camera.cpp
2292
Core/HW/Camera.h
2293
Core/HW/Display.cpp
2294
Core/HW/Display.h
2295
Core/HW/MediaEngine.cpp
2296
Core/HW/MediaEngine.h
2297
Core/HW/MpegDemux.cpp
2298
Core/HW/MpegDemux.h
2299
Core/HW/MemoryStick.cpp
2300
Core/HW/MemoryStick.h
2301
Core/HW/SasAudio.cpp
2302
Core/HW/SasAudio.h
2303
Core/HW/SasReverb.cpp
2304
Core/HW/SasReverb.h
2305
Core/HW/StereoResampler.cpp
2306
Core/HW/StereoResampler.h
2307
Core/Loaders.cpp
2308
Core/Loaders.h
2309
Core/FileLoaders/CachingFileLoader.cpp
2310
Core/FileLoaders/CachingFileLoader.h
2311
Core/FileLoaders/DiskCachingFileLoader.cpp
2312
Core/FileLoaders/DiskCachingFileLoader.h
2313
Core/FileLoaders/HTTPFileLoader.cpp
2314
Core/FileLoaders/HTTPFileLoader.h
2315
Core/FileLoaders/LocalFileLoader.cpp
2316
Core/FileLoaders/LocalFileLoader.h
2317
Core/FileLoaders/RamCachingFileLoader.cpp
2318
Core/FileLoaders/RamCachingFileLoader.h
2319
Core/FileLoaders/RetryingFileLoader.cpp
2320
Core/FileLoaders/RetryingFileLoader.h
2321
Core/MIPS/MIPS.cpp
2322
Core/MIPS/MIPS.h
2323
Core/MIPS/MIPSAnalyst.cpp
2324
Core/MIPS/MIPSAnalyst.h
2325
Core/MIPS/MIPSCodeUtils.cpp
2326
Core/MIPS/MIPSCodeUtils.h
2327
Core/MIPS/MIPSDebugInterface.cpp
2328
Core/MIPS/MIPSDebugInterface.h
2329
Core/MIPS/MIPSDis.cpp
2330
Core/MIPS/MIPSDis.h
2331
Core/MIPS/MIPSDisVFPU.cpp
2332
Core/MIPS/MIPSDisVFPU.h
2333
Core/MIPS/MIPSInt.cpp
2334
Core/MIPS/MIPSInt.h
2335
Core/MIPS/MIPSIntVFPU.cpp
2336
Core/MIPS/MIPSIntVFPU.h
2337
Core/MIPS/MIPSStackWalk.cpp
2338
Core/MIPS/MIPSStackWalk.h
2339
Core/MIPS/MIPSTables.cpp
2340
Core/MIPS/MIPSTables.h
2341
Core/MIPS/MIPSVFPUUtils.cpp
2342
Core/MIPS/MIPSVFPUUtils.h
2343
Core/MIPS/MIPSVFPUFallbacks.cpp
2344
Core/MIPS/MIPSVFPUFallbacks.h
2345
Core/MIPS/MIPSAsm.cpp
2346
Core/MIPS/MIPSAsm.h
2347
Core/MIPS/MIPSTracer.cpp
2348
Core/MIPS/MIPSTracer.h
2349
Core/MemFault.cpp
2350
Core/MemFault.h
2351
Core/MemMap.cpp
2352
Core/MemMap.h
2353
Core/MemMapFunctions.cpp
2354
Core/MemMapHelpers.h
2355
Core/PSPLoaders.cpp
2356
Core/PSPLoaders.h
2357
Core/Reporting.cpp
2358
Core/Reporting.h
2359
Core/Replay.cpp
2360
Core/Replay.h
2361
Core/SaveState.cpp
2362
Core/SaveState.h
2363
Core/Screenshot.cpp
2364
Core/Screenshot.h
2365
Core/System.cpp
2366
Core/System.h
2367
Core/ThreadPools.cpp
2368
Core/ThreadPools.h
2369
Core/Util/AudioFormat.cpp
2370
Core/Util/AudioFormat.h
2371
Core/Util/GameManager.cpp
2372
Core/Util/GameManager.h
2373
Core/Util/MemStick.cpp
2374
Core/Util/MemStick.h
2375
Core/Util/GameDB.cpp
2376
Core/Util/GameDB.h
2377
Core/Util/PortManager.cpp
2378
Core/Util/PortManager.h
2379
Core/Util/BlockAllocator.cpp
2380
Core/Util/BlockAllocator.h
2381
Core/Util/PPGeDraw.cpp
2382
Core/Util/PPGeDraw.h
2383
${GPU_SOURCES}
2384
ext/disarm.cpp
2385
ext/disarm.h
2386
ext/riscv-disas.cpp
2387
ext/riscv-disas.h
2388
${CMAKE_CURRENT_BINARY_DIR}/git-version.cpp
2389
)
2390
2391
if(ANDROID)
2392
set(CoreExtraLibs ${CoreExtraLibs} android)
2393
if(X86_64)
2394
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic")
2395
endif()
2396
endif()
2397
2398
if(USE_ARMIPS)
2399
set(CoreExtraLibs ${CoreExtraLibs} armips)
2400
else()
2401
add_definitions(-DNO_ARMIPS=1)
2402
endif()
2403
2404
# needed for VK_USE_PLATFORM_XCB_KHR only
2405
#if(VULKAN AND NOT WIN32)
2406
# target_link_libraries(native X11-xcb X11)
2407
#endif()
2408
2409
set(GlslangLibs glslang OGLCompiler OSDependent SPIRV spirv-cross-glsl)
2410
2411
if (ENABLE_SPVREMAPPER)
2412
list(APPEND GlslangLibs SPVRemapper)
2413
endif()
2414
2415
if(WIN32)
2416
set(GlslangLibs ${GlslangLibs} spirv-cross-hlsl)
2417
endif()
2418
2419
if(OPENGL_opengl_LIBRARY AND OpenGL_GL_PREFERENCE STREQUAL GLVND AND NOT APPLE)
2420
set(OPENGL_LIBRARIES OpenGL::OpenGL)
2421
endif()
2422
2423
if(USE_SYSTEM_ZSTD)
2424
find_package(ZSTD REQUIRED)
2425
target_include_directories(${CoreLibName} PRIVATE ${ZSTD_INCLUDE_DIR})
2426
target_link_libraries(${CoreLibName} ${ZSTD_LIBRARY})
2427
else()
2428
add_subdirectory(ext/zstd-build)
2429
set(CoreExtraLibs ${CoreExtraLibs} libzstd_static)
2430
include_directories(ext/zstd/lib)
2431
endif()
2432
2433
include_directories(ext/libchdr/include)
2434
2435
target_link_libraries(${CoreLibName} Common native chdr kirk cityhash sfmt19937 xbrz xxhash rcheevos minimp3 at3_standalone ${GlslangLibs}
2436
${CoreExtraLibs} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${CMAKE_DL_LIBS})
2437
2438
if(NOT HTTPS_NOT_AVAILABLE)
2439
target_link_libraries(${CoreLibName} naett)
2440
if(WIN32)
2441
target_link_libraries(${CoreLibName} winhttp)
2442
endif()
2443
endif()
2444
2445
target_compile_features(${CoreLibName} PUBLIC cxx_std_17)
2446
2447
if(FFmpeg_FOUND)
2448
target_compile_definitions(${CoreLibName} PRIVATE USE_FFMPEG=1)
2449
if (HAVE_LIBAVCODEC_CONST_AVCODEC)
2450
target_compile_definitions(${CoreLibName} PRIVATE HAVE_LIBAVCODEC_CONST_AVCODEC=1)
2451
endif()
2452
set_target_properties(${CoreLibName} PROPERTIES NO_SYSTEM_FROM_IMPORTED true)
2453
target_include_directories(${CoreLibName} BEFORE PUBLIC ${FFmpeg_INCLUDE_avcodec} ${FFmpeg_INCLUDE_avformat})
2454
target_link_libraries(${CoreLibName}
2455
FFmpeg::avcodec
2456
FFmpeg::avformat
2457
FFmpeg::avutil
2458
FFmpeg::swresample
2459
FFmpeg::swscale
2460
${ZLIB_LIBRARY}
2461
)
2462
endif()
2463
2464
# Discord integration
2465
if(USE_DISCORD AND NOT IOS AND NOT LIBRETRO)
2466
add_definitions(-DUSE_DISCORD=1)
2467
target_link_libraries(${CoreLibName} discord-rpc)
2468
endif()
2469
2470
# miniUPnPc integration (MiniUPnPc supposed to works on any POSIX system, not sure if some of these are redundant/not needed tho)
2471
if(USE_MINIUPNPC)
2472
if(USE_SYSTEM_MINIUPNPC)
2473
find_package(MINIUPNPC REQUIRED)
2474
target_include_directories(${CoreLibName} PRIVATE ${MINIUPNP_INCLUDE_DIR})
2475
target_link_libraries(${CoreLibName} ${MINIUPNP_LIBRARY})
2476
add_definitions(-DWITH_UPNP -DUSE_SYSTEM_MINIUPNPC)
2477
else()
2478
set (MINIUPNPC_VERSION 2.2) # used by miniupnpcstrings.h.cmake
2479
set (MINIUPNPC_API_VERSION 18)
2480
option(UPNPC_BUILD_STATIC "Build static library" TRUE)
2481
option(NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)
2482
mark_as_advanced(NO_GETADDRINFO)
2483
if (NO_GETADDRINFO)
2484
add_definitions(-DNO_GETADDRINFO)
2485
endif()
2486
2487
if (NOT WIN32)
2488
add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)
2489
add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L)
2490
endif()
2491
if (MACOSX)
2492
add_definitions (-D_DARWIN_C_SOURCE)
2493
endif()
2494
if(WIN32)
2495
add_definitions(-DWIN32 -DMINIUPNP_EXPORTS)
2496
else()
2497
add_definitions(-fPIC)
2498
endif()
2499
2500
add_definitions(-DWITH_UPNP -DMINIUPNP_STATICLIB)
2501
set(MINIUPNP_DIR "ext/miniupnp/miniupnpc")
2502
include_directories(${CMAKE_CURRENT_BINARY_DIR})
2503
include_directories(ext/miniupnp/miniupnpc/src)
2504
include_directories(ext/miniupnp/miniupnpc/include)
2505
configure_file(${MINIUPNP_DIR}/miniupnpcstrings.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/miniupnpcstrings.h) # by default miniupnp repo doesn't contains miniupnpcstrings.h and need to be generated
2506
set(MINIUPNPC_SOURCES
2507
# the needed bits of miniupnpc (no python module, no tests, no cli)
2508
${MINIUPNP_DIR}/src/addr_is_reserved.c
2509
${MINIUPNP_DIR}/src/connecthostport.c
2510
${MINIUPNP_DIR}/src/igd_desc_parse.c
2511
${MINIUPNP_DIR}/src/minisoap.c
2512
${MINIUPNP_DIR}/src/minissdpc.c
2513
${MINIUPNP_DIR}/src/miniupnpc.c
2514
#${MINIUPNP_DIR}/miniupnpcmodule.c
2515
${MINIUPNP_DIR}/src/miniwget.c
2516
${MINIUPNP_DIR}/src/minixml.c
2517
${MINIUPNP_DIR}/src/minixmlvalid.c
2518
${MINIUPNP_DIR}/src/portlistingparse.c
2519
${MINIUPNP_DIR}/src/receivedata.c
2520
#${MINIUPNP_DIR}/upnpc.c # causing an error due to already existing _main()
2521
${MINIUPNP_DIR}/src/upnpcommands.c
2522
${MINIUPNP_DIR}/src/upnpdev.c
2523
${MINIUPNP_DIR}/src/upnperrors.c
2524
${MINIUPNP_DIR}/src/upnpreplyparse.c
2525
${CMAKE_CURRENT_BINARY_DIR}/miniupnpcstrings.h
2526
)
2527
if (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")
2528
#set(MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c) # causing an error due to duplication in MINIUPNPC_SOURCES?
2529
endif()
2530
if (WIN32)
2531
set_source_files_properties(${MINIUPNPC_SOURCES} PROPERTIES COMPILE_DEFINITIONS "MINIUPNP_STATICLIB;MINIUPNP_EXPORTS")
2532
set(LDLIBS ws2_32 iphlpapi ${LDLIBS})
2533
#elseif (CMAKE_SYSTEM_NAME STREQUAL "Solaris")
2534
# find_library (SOCKET_LIBRARY NAMES socket)
2535
# find_library (NSL_LIBRARY NAMES nsl)
2536
# find_library (RESOLV_LIBRARY NAMES resolv)
2537
# set (LDLIBS ${SOCKET_LIBRARY} ${NSL_LIBRARY} ${RESOLV_LIBRARY} ${LDLIBS})
2538
endif()
2539
if (UPNPC_BUILD_STATIC)
2540
add_library(miniupnpc STATIC ${MINIUPNPC_SOURCES})
2541
target_link_libraries(${CoreLibName} miniupnpc ${LDLIBS})
2542
set(UPNPC_LIBRARY miniupnpc)
2543
if (MSVC)
2544
# Suppress noise warnings
2545
target_compile_definitions(miniupnpc PRIVATE _CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS)
2546
endif()
2547
endif()
2548
endif()
2549
endif()
2550
2551
setup_target_project(${CoreLibName} Core)
2552
2553
# Generate git-version at build time.
2554
add_custom_target(GitVersion DEPENDS something_that_never_exists)
2555
2556
set(WIN_VERSION_CMD "")
2557
if (WIN32)
2558
set(WIN_VERSION_CMD COMMAND ${CMAKE_SOURCE_DIR}/Windows/git-version-gen.cmd PPSSPPWindows)
2559
endif()
2560
2561
add_custom_command(OUTPUT something_that_never_exists
2562
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
2563
-DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}
2564
-P ${CMAKE_CURRENT_SOURCE_DIR}/git-version.cmake
2565
${WIN_VERSION_CMD})
2566
2567
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/git-version.cpp
2568
PROPERTIES GENERATED TRUE
2569
SKIP_AUTOMOC ON)
2570
add_dependencies(${CoreLibName} GitVersion)
2571
2572
set(WindowsFiles
2573
Windows/DSoundStream.cpp
2574
Windows/DSoundStream.h
2575
Windows/WindowsAudio.cpp
2576
Windows/WindowsAudio.h
2577
Windows/WASAPIStream.cpp
2578
Windows/WASAPIStream.h
2579
Windows/Debugger/BreakpointWindow.cpp
2580
Windows/Debugger/BreakpointWindow.h
2581
Windows/Debugger/DumpMemoryWindow.cpp
2582
Windows/Debugger/DumpMemoryWindow.h
2583
Windows/Debugger/CtrlDisAsmView.cpp
2584
Windows/Debugger/CtrlDisAsmView.h
2585
Windows/Debugger/CtrlMemView.cpp
2586
Windows/Debugger/CtrlMemView.h
2587
Windows/Debugger/CtrlRegisterList.cpp
2588
Windows/Debugger/CtrlRegisterList.h
2589
Windows/Debugger/DebuggerShared.cpp
2590
Windows/Debugger/DebuggerShared.h
2591
Windows/Debugger/Debugger_Disasm.cpp
2592
Windows/Debugger/Debugger_Disasm.h
2593
Windows/Debugger/Debugger_MemoryDlg.cpp
2594
Windows/Debugger/Debugger_MemoryDlg.h
2595
Windows/Debugger/Debugger_Lists.cpp
2596
Windows/Debugger/Debugger_Lists.h
2597
Windows/Debugger/Debugger_VFPUDlg.cpp
2598
Windows/Debugger/Debugger_VFPUDlg.h
2599
Windows/Debugger/WatchItemWindow.cpp
2600
Windows/Debugger/WatchItemWindow.h
2601
Windows/Debugger/EditSymbolsWindow.cpp
2602
Windows/Debugger/EditSymbolsWindow.h
2603
Windows/GEDebugger/CtrlDisplayListView.cpp
2604
Windows/GEDebugger/SimpleGLWindow.cpp
2605
Windows/GEDebugger/TabState.cpp
2606
Windows/GEDebugger/VertexPreview.cpp
2607
Windows/GEDebugger/CtrlDisplayListView.h
2608
Windows/GEDebugger/SimpleGLWindow.h
2609
Windows/GEDebugger/TabState.h
2610
Windows/GEDebugger/GEDebugger.cpp
2611
Windows/GEDebugger/TabDisplayLists.cpp
2612
Windows/GEDebugger/TabVertices.cpp
2613
Windows/GEDebugger/GEDebugger.h
2614
Windows/GEDebugger/TabDisplayLists.h
2615
Windows/GEDebugger/TabVertices.h
2616
Windows/BufferLock.h
2617
Windows/CaptureDevice.cpp
2618
Windows/CaptureDevice.h
2619
Windows/DinputDevice.cpp
2620
Windows/DinputDevice.h
2621
Windows/DSoundStream.cpp
2622
Windows/DSoundStream.h
2623
Windows/EmuThread.cpp
2624
Windows/EmuThread.h
2625
Windows/GeDebugger/GeDebugger.cpp
2626
Windows/GPU/D3D9Context.cpp
2627
Windows/GPU/D3D9Context.h
2628
Windows/GPU/D3D11Context.cpp
2629
Windows/GPU/D3D11Context.h
2630
Windows/GPU/WindowsGLContext.cpp
2631
Windows/GPU/WindowsVulkanContext.cpp
2632
Windows/InputBox.cpp
2633
Windows/InputBox.h
2634
Windows/InputDevice.cpp
2635
Windows/InputDevice.h
2636
Windows/W32Util/ContextMenu.h
2637
Windows/W32Util/ContextMenu.h
2638
Windows/W32Util/DialogManager.cpp
2639
Windows/W32Util/DialogManager.h
2640
Windows/W32Util/Misc.cpp
2641
Windows/W32Util/Misc.h
2642
Windows/W32Util/ShellUtil.cpp
2643
Windows/W32Util/ShellUtil.h
2644
Windows/W32Util/TabControl.cpp
2645
Windows/W32Util/TabControl.h
2646
Windows/W32Util/IatHook.h
2647
Windows/W32Util/ContextMenu.h
2648
Windows/W32Util/ContextMenu.cpp
2649
Windows/W32Util/DarkMode.h
2650
Windows/W32Util/DarkMode.cpp
2651
Windows/W32Util/UAHMenuBar.h
2652
Windows/W32Util/UAHMenuBar.cpp
2653
Windows/WindowsHost.cpp
2654
Windows/WindowsHost.h
2655
Windows/MainWindow.cpp
2656
Windows/MainWindow.h
2657
Windows/MainWindowMenu.cpp
2658
Windows/MainWindowMenu.h
2659
Windows/RawInput.cpp
2660
Windows/RawInput.h
2661
Windows/TouchInputHandler.cpp
2662
Windows/TouchInputHandler.h
2663
Windows/XinputDevice.cpp
2664
Windows/XinputDevice.h
2665
Windows/main.cpp
2666
Windows/main.h
2667
Windows/ppsspp.rc
2668
Windows/resource.h
2669
Windows/stdafx.cpp
2670
Windows/stdafx.h
2671
)
2672
2673
list(APPEND LinkCommon ${CoreLibName} ${CMAKE_THREAD_LIBS_INIT})
2674
2675
if(WIN32)
2676
list(APPEND LinkCommon kernel32 user32 gdi32 shell32 comctl32 dsound xinput d3d9 winmm dinput8 ole32 winspool ksuser dwmapi mf uxtheme mfplat mfreadwrite mfuuid shlwapi)
2677
#setup_target_project(${TargetBin} Windows)
2678
list(APPEND NativeAppSource ${WindowsFiles})
2679
endif()
2680
2681
set(BigFontAssets
2682
assets/font_atlas.zim
2683
assets/font_atlas.meta
2684
)
2685
2686
set(NativeAssets
2687
assets/ui_atlas.zim
2688
assets/ui_atlas.meta
2689
assets/asciifont_atlas.zim
2690
assets/asciifont_atlas.meta
2691
assets/debugger
2692
assets/lang
2693
assets/shaders
2694
assets/themes
2695
assets/vfpu
2696
assets/Roboto-Condensed.ttf
2697
assets/7z.png
2698
assets/compat.ini
2699
assets/gamecontrollerdb.txt
2700
assets/langregion.ini
2701
assets/ppge_atlas.zim
2702
assets/ppge_atlas.meta
2703
assets/rargray.png
2704
assets/unknown.png
2705
assets/zip.png
2706
assets/sfx_back.wav
2707
assets/sfx_confirm.wav
2708
assets/sfx_select.wav
2709
assets/sfx_toggle_off.wav
2710
assets/sfx_toggle_on.wav
2711
assets/sfx_achievement_unlocked.wav
2712
assets/sfx_leaderbord_submitted.wav
2713
source_assets/image/logo.png
2714
source_assets/image/icon_regular_72.png
2715
)
2716
2717
2718
if(HEADLESS)
2719
set(HeadlessSource
2720
headless/Headless.cpp
2721
headless/HeadlessHost.cpp
2722
headless/HeadlessHost.h
2723
headless/Compare.cpp
2724
headless/Compare.h
2725
headless/SDLHeadlessHost.cpp
2726
headless/SDLHeadlessHost.h
2727
)
2728
if(WIN32)
2729
list(APPEND HeadlessSource
2730
headless/WindowsHeadlessHost.cpp
2731
headless/WindowsHeadlessHost.h
2732
Windows/GPU/D3D9Context.cpp
2733
Windows/GPU/D3D9Context.h
2734
Windows/GPU/D3D11Context.cpp
2735
Windows/GPU/D3D11Context.h
2736
Windows/GPU/WindowsGLContext.cpp
2737
Windows/GPU/WindowsVulkanContext.cpp
2738
Windows/W32Util/ShellUtil.cpp
2739
Windows/W32Util/ShellUtil.h
2740
Windows/CaptureDevice.cpp
2741
Windows/CaptureDevice.h
2742
Windows/W32Util/Misc.cpp
2743
Windows/W32Util/Misc.h
2744
)
2745
endif()
2746
add_executable(PPSSPPHeadless ${HeadlessSource})
2747
target_link_libraries(PPSSPPHeadless ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY} ${LinkCommon})
2748
setup_target_project(PPSSPPHeadless headless)
2749
endif()
2750
2751
if(UNITTEST)
2752
add_executable(PPSSPPUnitTest
2753
unittest/UnitTest.cpp
2754
unittest/TestShaderGenerators.cpp
2755
unittest/TestArmEmitter.cpp
2756
unittest/TestArm64Emitter.cpp
2757
unittest/TestIRPassSimplify.cpp
2758
unittest/TestX64Emitter.cpp
2759
unittest/TestVertexJit.cpp
2760
unittest/TestVFS.cpp
2761
unittest/TestRiscVEmitter.cpp
2762
unittest/TestSoftwareGPUJit.cpp
2763
unittest/TestThreadManager.cpp
2764
unittest/JitHarness.cpp
2765
Core/MIPS/ARM/ArmRegCache.cpp
2766
Core/MIPS/ARM/ArmRegCacheFPU.cpp
2767
)
2768
target_link_libraries(PPSSPPUnitTest ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY} ${LinkCommon} Common)
2769
setup_target_project(PPSSPPUnitTest unittest)
2770
add_test(arm64_emitter PPSSPPUnitTest Arm64Emitter)
2771
add_test(arm_emitter PPSSPPUnitTest ArmEmitter)
2772
add_test(x64_emitter PPSSPPUnitTest X64Emitter)
2773
add_test(vertex_jit PPSSPPUnitTest VertexJit)
2774
add_test(asin PPSSPPUnitTest Asin)
2775
add_test(sincos PPSSPPUnitTest SinCos)
2776
add_test(vfpu_sincos PPSSPPUnitTest VFPUSinCos)
2777
add_test(math_util PPSSPPUnitTest MathUtil)
2778
add_test(parsers PPSSPPUnitTest Parsers)
2779
add_test(jit PPSSPPUnitTest Jit)
2780
add_test(matrix_transpose PPSSPPUnitTest MatrixTranspose)
2781
add_test(parse_lbn PPSSPPUnitTest ParseLBN)
2782
add_test(quick_texhash PPSSPPUnitTest QuickTexHash)
2783
add_test(clz PPSSPPUnitTest CLZ)
2784
add_test(shadergen PPSSPPUnitTest ShaderGenerators)
2785
endif()
2786
2787
if(LIBRETRO)
2788
add_subdirectory(libretro)
2789
endif()
2790
2791
if(TargetBin)
2792
if(APPLE)
2793
if(NOT IOS)
2794
if(GOLD)
2795
set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp_gold.icns)
2796
set(MACOSX_BUNDLE_ICON_FILE ppsspp_gold.icns)
2797
set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP Gold")
2798
set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppssppgold)
2799
else()
2800
set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp.icns)
2801
set(MACOSX_BUNDLE_ICON_FILE ppsspp.icns)
2802
set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP")
2803
set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppsspp)
2804
endif()
2805
set_source_files_properties(${ICON_PATH_ABS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
2806
endif()
2807
2808
# TODO: there must a native way to copy these.
2809
# Now this is very prone to errors when changes occur.
2810
# Also better to have assets under Resources dir for OS X.
2811
file(GLOB_RECURSE FLASH0_FILES assets/flash0/*)
2812
file(GLOB_RECURSE LANG_FILES assets/lang/*)
2813
file(GLOB_RECURSE SHADER_FILES assets/shaders/*)
2814
file(GLOB_RECURSE THEME_FILE assets/themes/*)
2815
file(GLOB_RECURSE DEBUGGER_FILES assets/debugger/*)
2816
file(GLOB_RECURSE VFPU_FILES assets/vfpu/*)
2817
2818
if(NOT IOS)
2819
set_source_files_properties(${BigFontAssets} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets")
2820
set_source_files_properties(${NativeAssets} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets")
2821
set_source_files_properties(${FLASH0_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/flash0/font")
2822
set_source_files_properties(${LANG_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/lang")
2823
set_source_files_properties(${SHADER_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/shaders")
2824
set_source_files_properties(${THEME_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/themes")
2825
set_source_files_properties(${DEBUGGER_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/debugger")
2826
set_source_files_properties(${VFPU_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/vfpu")
2827
endif()
2828
2829
if(IOS)
2830
set(AssetCatalog "${CMAKE_SOURCE_DIR}/ios/assets.xcassets")
2831
add_executable(${TargetBin} MACOSX_BUNDLE ${ICON_PATH_ABS} ${NativeAssets} ${BigFontAssets} ${AssetCatalog} ${SHADER_FILES} ${THEME_FILE} ${DEBUGGER_FILES} ${FLASH0_FILES} ${LANG_FILES} ${NativeAppSource} "ios/Settings.bundle" "ios/Launch Screen.storyboard")
2832
if(NOT IOS_APP_STORE)
2833
file(INSTALL "${CMAKE_SOURCE_DIR}/ext/vulkan/iOS/Frameworks/libMoltenVK.dylib" DESTINATION "${CMAKE_BINARY_DIR}/PPSSPP.app/Frameworks/")
2834
endif()
2835
else()
2836
add_executable(${TargetBin} MACOSX_BUNDLE ${ICON_PATH_ABS} ${NativeAssets} ${BigFontAssets} ${SHADER_FILES} ${THEME_FILE} ${DEBUGGER_FILES} ${FLASH0_FILES} ${LANG_FILES} ${NativeAppSource})
2837
file(INSTALL "${CMAKE_SOURCE_DIR}/ext/vulkan/macOS/Frameworks/libMoltenVK.dylib" DESTINATION "${CMAKE_BINARY_DIR}/${TargetBin}.app/Contents/Frameworks/")
2838
if(USING_QT_UI)
2839
add_custom_command(TARGET ${TargetBin} POST_BUILD COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/Qt/macbundle.sh" "${CMAKE_BINARY_DIR}/PPSSPPQt.app")
2840
elseif(NOT USE_SYSTEM_LIBSDL2)
2841
add_custom_command(TARGET ${TargetBin} POST_BUILD COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/SDL/macbundle.sh" "${CMAKE_BINARY_DIR}/${TargetBin}.app" "${TargetBin}")
2842
endif()
2843
endif()
2844
elseif(WIN32)
2845
add_executable(${TargetBin} WIN32 ${NativeAppSource})
2846
if(MSVC)
2847
set_target_properties(${TargetBin} PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
2848
else()
2849
set_target_properties(${TargetBin} PROPERTIES LINK_FLAGS "-Wl,-subsystem,windows")
2850
endif()
2851
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TargetBin})
2852
else()
2853
add_executable(${TargetBin} ${NativeAppSource})
2854
endif()
2855
target_link_libraries(${TargetBin} ${LinkCommon} Common)
2856
endif()
2857
2858
# installs
2859
if(NOT ANDROID)
2860
file(INSTALL ${BigFontAssets} DESTINATION assets)
2861
file(INSTALL ${NativeAssets} DESTINATION assets)
2862
file(INSTALL assets/flash0 DESTINATION assets)
2863
endif()
2864
# packaging and code signing
2865
if(IOS AND NOT LIBRETRO)
2866
if(IOS_APP_STORE)
2867
set(DEPLOYMENT_TARGET 12.0)
2868
else()
2869
set(DEPLOYMENT_TARGET 11.0)
2870
endif()
2871
file(GLOB IOSAssets ios/assets/*.png)
2872
list(REMOVE_ITEM IOSAssets ${CMAKE_CURRENT_SOURCE_DIR}/ios/assets/[email protected])
2873
list(REMOVE_ITEM IOSAssets ${CMAKE_CURRENT_SOURCE_DIR}/ios/assets/[email protected])
2874
file(INSTALL ${IOSAssets} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/assets)
2875
file(GLOB IOSAssets ios/assets/Default-568h@*.png)
2876
file(INSTALL ${IOSAssets} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
2877
if(IOS_DEBUG)
2878
file(INSTALL pspautotests DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/assets)
2879
endif()
2880
set(RSRC_XIB_FILES "Launch Screen.storyboard" ${CMAKE_CURRENT_SOURCE_DIR}/ios/assets.xcassets)
2881
2882
set_source_files_properties(${RSRC_XIB_FILES}
2883
PROPERTIES MACOSX_PACKAGE_LOCATION Resources
2884
)
2885
2886
#This breaks in modern XCode. Not sure when it worked...
2887
#if(CMAKE_GENERATOR STREQUAL "Xcode")
2888
# set(APP_DIR_NAME "$(TARGET_BUILD_DIR)/$(FULL_PRODUCT_NAME)")
2889
#else()
2890
set(APP_DIR_NAME "$<TARGET_FILE_DIR:PPSSPP>")
2891
#endif()
2892
2893
set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET})
2894
set(PRODUCT_NAME "PPSSPP")
2895
set(BUNDLE_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/ios/PPSSPP-Info.plist")
2896
if(GOLD)
2897
if(IOS_APP_STORE)
2898
set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-gold")
2899
else()
2900
set(BUNDLE_IDENTIFIER "org.ppsspp.ppssppgold")
2901
endif()
2902
set(ICON_NAME "AppIconGold")
2903
set(DISPLAY_NAME "PPSSPP Gold")
2904
else()
2905
if(IOS_APP_STORE)
2906
set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-free")
2907
else()
2908
set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp")
2909
endif()
2910
set(ICON_NAME "AppIcon")
2911
set(DISPLAY_NAME "PPSSPP")
2912
endif()
2913
if(IOS_APP_STORE)
2914
message(STATUS "DevTeam: ${DEVELOPMENT_TEAM_ID} Icon: ${ICON_NAME} Target: ${TargetBin}")
2915
message(STATUS "CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
2916
2917
# This is for injecting the version into the plist, and also copying resources.
2918
# Should find a different way to do both these things.
2919
add_custom_command(TARGET ${TargetBin} POST_BUILD
2920
COMMAND echo "Creating ${APP_DIR_NAME} for app store build"
2921
COMMAND mkdir -p \"${APP_DIR_NAME}\"
2922
# This tar command seems to be responsible for copying assets. I thought we had another step that did that..
2923
# Prepend -v to the extracting command to see the files copied.
2924
COMMAND tar -c -C ${CMAKE_CURRENT_BINARY_DIR} --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"${APP_DIR_NAME}\"
2925
# This updates the version in the plist.
2926
COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/ios/iosbundle.sh" \"${APP_DIR_NAME}\" "${CMAKE_CURRENT_BINARY_DIR}"
2927
)
2928
2929
# Can't figure out properly using .xcframework from CMake, so just linking directly to the .a file.
2930
target_link_libraries(${TargetBin}
2931
"${CMAKE_CURRENT_SOURCE_DIR}/ios/MoltenVK/MoltenVK.xcframework/ios-arm64/libMoltenVK.a"
2932
)
2933
2934
# https://stackoverflow.com/questions/40664125/cmake-and-code-signing-in-xcode-8-for-ios-projects
2935
set_target_properties(${TargetBin} PROPERTIES
2936
XCODE_GENERATE_SCHEME YES # Avoid the scheme bloat in XCode by only setting it to YES for this target.
2937
RESOURCE "ios/Launch Screen.storyboard"
2938
RESOURCE "ios/Settings.bundle"
2939
RESOURCE "ios/assets.xcassets"
2940
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${BUNDLE_IDENTIFIER}
2941
XCODE_ATTRIBUTE_PRODUCT_NAME ${PRODUCT_NAME}
2942
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME ${ICON_NAME}
2943
BUILD_WITH_INSTALL_RPATH YES
2944
MACOSX_BUNDLE_INFO_PLIST ${BUNDLE_PLIST}
2945
# Some sources say we should generate the PLIST. There's stuff in it that
2946
# I don't know how to generate, though.
2947
#XCODE_ATTRIBUTE_GENERATE_INFOPLIST_FILE "YES"
2948
#XCODE_ATTRIBUTE_INFOPLIST_KEY_UIRequiredDeviceCapabilities arm64
2949
XCODE_ATTRIBUTE_INFOPLIST_KEY_UIFileSharingEnabled YES
2950
XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY YES
2951
XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY YES
2952
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}
2953
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"
2954
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES
2955
XCODE_ATTRIBUTE_ENABLE_BITCODE NO
2956
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
2957
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development"
2958
XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic"
2959
XCODE_ATTRIBUTE_SKIP_INSTALL NO
2960
XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
2961
)
2962
else()
2963
# This is for injecting the version into the plist.
2964
add_custom_command(TARGET PPSSPP POST_BUILD
2965
COMMAND echo "Creating ${APP_DIR_NAME} for sideload build"
2966
COMMAND mkdir -p \"${APP_DIR_NAME}\"
2967
COMMAND tar -c -C ${CMAKE_CURRENT_BINARY_DIR} --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"${APP_DIR_NAME}\"
2968
COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/ios/macbundle.sh" \"${APP_DIR_NAME}\"
2969
)
2970
set_target_properties(${TargetBin} PROPERTIES
2971
MACOSX_BUNDLE_INFO_PLIST ${BUNDLE_PLIST}
2972
XCODE_GENERATE_SCHEME YES
2973
RESOURCE "ios/Launch Screen.storyboard"
2974
RESOURCE "ios/Settings.bundle"
2975
RESOURCE "ext/vulkan/iOS/Frameworks"
2976
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME ${ICON_NAME}
2977
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}
2978
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"
2979
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES
2980
XCODE_ATTRIBUTE_ENABLE_BITCODE NO
2981
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-"
2982
)
2983
endif()
2984
add_custom_command(TARGET PPSSPP POST_BUILD
2985
COMMAND plutil -replace CFBundleDisplayName -string "${DISPLAY_NAME}" "${APP_DIR_NAME}/Info.plist"
2986
COMMAND plutil -replace CFBundleIdentifier -string "${BUNDLE_IDENTIFIER}" "${APP_DIR_NAME}/Info.plist"
2987
)
2988
endif()
2989
2990
if(MACOSX AND NOT IOS)
2991
if(GOLD)
2992
set_target_properties(${TargetBin} PROPERTIES
2993
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/InfoGold.plist"
2994
)
2995
else()
2996
set_target_properties(${TargetBin} PROPERTIES
2997
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/Info.plist"
2998
)
2999
endif()
3000
endif()
3001
3002
if(UNIX AND NOT ANDROID AND NOT APPLE)
3003
configure_file(
3004
"${CMAKE_SOURCE_DIR}/ppsspp.desktop.in"
3005
"${CMAKE_BINARY_DIR}/ppsspp.desktop"
3006
@ONLY
3007
)
3008
install(
3009
TARGETS ${TargetBin}
3010
DESTINATION "${CMAKE_INSTALL_BINDIR}"
3011
)
3012
install(
3013
DIRECTORY "${CMAKE_BINARY_DIR}/assets"
3014
DESTINATION "${CMAKE_INSTALL_DATADIR}/ppsspp"
3015
PATTERN ".git*" EXCLUDE
3016
PATTERN "mime" EXCLUDE
3017
PATTERN "lang/README.md" EXCLUDE
3018
)
3019
install(
3020
FILES "${CMAKE_BINARY_DIR}/ppsspp.desktop"
3021
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
3022
RENAME ${TargetBin}.desktop
3023
)
3024
install(
3025
DIRECTORY "${CMAKE_SOURCE_DIR}/icons/hicolor"
3026
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons"
3027
)
3028
install(
3029
FILES "${CMAKE_SOURCE_DIR}/icons/icon-512.svg"
3030
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps"
3031
RENAME "ppsspp.svg"
3032
)
3033
install(
3034
FILES "${CMAKE_SOURCE_DIR}/assets/mime/ppsspp.xml"
3035
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages"
3036
)
3037
endif()
3038
3039