CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/master/CMakeLists.txt
Views: 1400
# vim:noexpandtab:1cmake_minimum_required(VERSION 3.16)2project(PPSSPP)3enable_testing()45#This is supposed to work but doesn't!6if(NOT ANDROID)7set(CMAKE_CXX_STANDARD 17)8set(CMAKE_CXX_STANDARD_REQUIRED ON)9endif()1011enable_language(ASM)1213add_definitions(-D__STDC_CONSTANT_MACROS)1415# Include AppleClang and Clang.16if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")17set(CLANG ON)18message("Clang enabled")19endif()2021if(FORCED_CPU)22message("Detected CPU (${CMAKE_SYSTEM_PROCESSOR}) overridden as: ${FORCED_CPU}")23set(CMAKE_SYSTEM_PROCESSOR ${FORCED_CPU})24endif()2526# Detect CPU from CMAKE configuration. Toolchains should set this up27if(CMAKE_SYSTEM_PROCESSOR)28if(CMAKE_OSX_ARCHITECTURES)29if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ".*86.*")30set(X86_DEVICE ON)31set(X86_64_DEVICE ON)32endif()33if("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64")34set(ARM64 ON)35endif()36elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^aarch64")37set(ARM64 ON)38elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm64")39# M1 Mac40set(ARM64 ON)41elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm")42message("ARM_DEVICE is a go")43set(ARM_DEVICE ON)44if(UNIX AND NOT APPLE)45execute_process(COMMAND cat /proc/cpuinfo OUTPUT_VARIABLE OUTSTR)46string(FIND "${OUTSTR}" "ODROID-XU" pos)47if(NOT (pos LESS 0))48add_compile_options(-mfloat-abi=hard -marm -mtune=cortex-a15.cortex-a7 -mcpu=cortex-a15 -fomit-frame-pointer)49set(ARM_NO_VULKAN ON)50endif()51endif()52if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^armv7")53set(ARMV7_DEVICE ON)54add_compile_options(-mfpu=neon)55# Horrifying workaround for bug in android cmake stuff for asm files56if(ANDROID)57set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -target armv7a-none-linux-android")58endif()59endif()60elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^amd64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86_64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^AMD64")61set(X86_DEVICE ON)62set(X86_64_DEVICE ON)63elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86")64set(X86_DEVICE ON)65elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^mips")66set(MIPS_DEVICE ON)67elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^riscv64")68set(RISCV64_DEVICE ON)69elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^loongarch64")70set(LOONGARCH64_DEVICE ON)71else()72message("Unknown CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")73endif()74endif()7576# the libraries in the ffmpeg/ directory are not compatible with mingw77if(MINGW AND NOT DEFINED USE_SYSTEM_FFMPEG)78set(USE_SYSTEM_FFMPEG ON)79endif()8081if(NOT ANDROID AND NOT IOS)82if(ARM_DEVICE OR SIMULATOR)83set(USING_EGL ON)84endif()85endif()8687if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND NOT USE_LIBNX)88set(LINUX ON)89add_definitions(-D__STDC_CONSTANT_MACROS)90endif()9192if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")93set(MACOSX ON)94set(USING_EGL OFF)95endif()9697if(${CMAKE_SYSTEM_NAME} MATCHES "Android")98set(ANDROID ON)99endif()100101# We only support Vulkan on Unix, macOS (by MoltenVK), Android and Windows.102if(ANDROID OR WIN32 OR (UNIX AND NOT ARM_NO_VULKAN))103set(VULKAN ON)104endif()105106# Default to bundled SDL2 on macOS, system SDL2 elsewhere.107if(APPLE AND NOT IOS)108set(DEFAULT_USE_SYSTEM_LIBSDL2 OFF)109else()110set(DEFAULT_USE_SYSTEM_LIBSDL2 ON)111endif()112113list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)114if(NOT IOS)115list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/sdl)116endif()117118include(CheckCXXSourceCompiles)119include(GNUInstallDirs)120121add_definitions(-DASSETS_DIR="${CMAKE_INSTALL_FULL_DATADIR}/ppsspp/assets/")122123if(OPENXR AND NOT ARMV7_DEVICE)124add_definitions(-DOPENXR)125add_subdirectory(ext/OpenXR-SDK)126message("OpenXR enabled")127endif()128129if(GOLD)130add_definitions(-DGOLD)131message("Gold Build")132else()133message("Non-gold Build")134endif()135136if(IOS_APP_STORE)137add_definitions(-DPPSSPP_PLATFORM_IOS_APP_STORE)138add_definitions(-DGLES_SILENCE_DEPRECATION)139# Set a global default to not generate schemes for each target.140# Makes using XCode sligthly more sane.141set(CMAKE_XCODE_GENERATE_SCHEME NO)142set(CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION FALSE)143set(CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE DISABLED)144message("iOS App Store build")145elseif(IOS)146message("iOS sideload build")147endif()148149# User-editable options (go into CMakeCache.txt)150# :: Processors151option(ARMV7 "Set to ON if targeting an ARMv7 processor" ${ARMV7_DEVICE})152option(ARM "Set to ON if targeting an ARM processor" ${ARM_DEVICE})153option(MIPS "Set to ON if targeting a MIPS processor" ${MIPS_DEVICE})154option(RISCV64 "Set to ON if targeting a RISCV64 processor" ${RISCV64_DEVICE})155option(LOONGARCH64 "Set to ON if targeting a LOONGARCH64 processor" ${LOONGARCH64_DEVICE})156option(X86 "Set to ON if targeting an X86 processor" ${X86_DEVICE})157option(X86_64 "Set to ON if targeting an X86_64 processor" ${X86_64_DEVICE})158# :: Environments159option(USING_EGL "Set to ON if target environment uses EGL" ${USING_EGL})160option(USING_FBDEV "Set to ON if target environment uses fbdev (eg. Pandora)" ${USING_FBDEV})161option(USING_GLES2 "Set to ON if target device uses OpenGL ES 2.0" ${USING_GLES2})162option(USING_X11_VULKAN "Set to OFF if target environment doesn't use X11 for Vulkan" ON)163option(USE_WAYLAND_WSI "Enable or disable Wayland WSI support for Vulkan" ON)164option(USE_VULKAN_DISPLAY_KHR "Enable or disable full screen display of Vulkan" ${USE_VULKAN_DISPLAY_KHR})165# :: Frontends166option(USING_QT_UI "Set to ON if you wish to use the Qt frontend wrapper" ${USING_QT_UI})167option(MOBILE_DEVICE "Set to ON when targeting a mobile device" ${MOBILE_DEVICE})168option(HEADLESS "Set to OFF to not generate the PPSSPPHeadless target" ${HEADLESS})169option(UNITTEST "Set to ON to generate the unittest target" ${UNITTEST})170option(SIMULATOR "Set to ON when targeting an x86 simulator of an ARM platform" ${SIMULATOR})171option(LIBRETRO "Set to ON to generate the libretro target" OFF)172# :: Options173option(USE_LIBNX "Set to ON to build for Switch(libnx)" OFF)174option(USE_FFMPEG "Build with FFMPEG support" ON)175option(USE_DISCORD "Build with Discord support" ON)176option(USE_MINIUPNPC "Build with miniUPnPc support" ON)177option(USE_ARMIPS "Build with armips support in API/debugger" ON)178option(USE_SYSTEM_SNAPPY "Dynamically link against system snappy" ${USE_SYSTEM_SNAPPY})179option(USE_SYSTEM_FFMPEG "Dynamically link against system FFMPEG" ${USE_SYSTEM_FFMPEG})180option(USE_SYSTEM_LIBZIP "Dynamically link against system libzip" ${USE_SYSTEM_LIBZIP})181option(USE_SYSTEM_LIBSDL2 "Dynamically link against system SDL2" ${DEFAULT_USE_SYSTEM_LIBSDL2})182option(USE_SYSTEM_LIBPNG "Dynamically link against system libpng" ON)183option(USE_SYSTEM_ZSTD "Dynamically link against system zstd" ${USE_SYSTEM_ZSTD})184option(USE_SYSTEM_MINIUPNPC "Dynamically link against system miniUPnPc" ${USE_SYSTEM_MINIUPNPC})185option(USE_ASAN "Use address sanitizer" OFF)186option(USE_UBSAN "Use undefined behaviour sanitizer" OFF)187option(USE_CCACHE "Use ccache if detected" ON)188option(USE_NO_MMAP "Disable mmap usage" OFF)189190if(USE_CCACHE)191include(ccache)192endif()193194if(UNIX AND NOT (APPLE OR ANDROID) AND VULKAN)195if(USING_X11_VULKAN)196message("Using X11 for Vulkan")197find_package(X11)198include_directories(${X11_Xlib_INCLUDE_PATH})199add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)200else()201message("NOT using X11 for Vulkan")202endif()203204# add_definitions(-DVK_USE_PLATFORM_XCB_KHR)205find_package(Wayland)206if(NOT WAYLAND_FOUND)207message(STATUS "Could not find Wayland libraries, disabling Wayland WSI support for Vulkan.")208elseif(USE_WAYLAND_WSI)209include_directories(${WAYLAND_INCLUDE_DIR})210add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)211endif()212213if(USE_VULKAN_DISPLAY_KHR)214message(STATUS "Using experimental full-screen display for Vulkan.")215add_definitions(-DVK_USE_PLATFORM_DISPLAY_KHR)216endif()217endif()218219if(LIBRETRO)220add_definitions(-D__LIBRETRO__)221add_definitions(-DGLEW_NO_GLU)222if(NOT MSVC)223add_compile_options(-fPIC)224endif()225endif()226227if(ANDROID)228set(MOBILE_DEVICE ON)229set(USING_GLES2 ON)230endif()231232if(ANDROID AND NOT LIBRETRO)233set(CoreLibName ppsspp_jni)234set(CoreLinkType SHARED)235else()236set(CoreLibName Core)237set(CoreLinkType STATIC)238endif()239240if(NOT ANDROID AND NOT WIN32 AND (NOT APPLE OR IOS))241set(HTTPS_NOT_AVAILABLE ON)242endif()243244# Made this flag negative because it's hopefully quite temporary and didn't245# want to have to update all build systems.246if(HTTPS_NOT_AVAILABLE)247add_definitions(-DHTTPS_NOT_AVAILABLE)248endif()249250# Disable the usage of MMAP for the memory system.251# It is not tested on all platforms and can cause issues.252if(USE_NO_MMAP)253add_definitions(-DNO_MMAP -DMASKED_PSP_MEMORY)254endif()255256# Work around for some misfeature of the current glslang build system257include_directories(ext/glslang)258259# Not sure if this is the best way - what about system glew?260# Anyway, glew will be going away anyway.261include_directories(ext/glew)262263if(OPENXR AND NOT ARMV7_DEVICE)264set(OPENGL_LIBRARIES GLESv3 EGL)265elseif(NOT OPENGL_LIBRARIES AND USING_GLES2)266set(OPENGL_LIBRARIES GLESv2 EGL)267endif()268269if(NOT OPENGL_LIBRARIES)270if(POLICY CMP0072)271cmake_policy(SET CMP0072 NEW)272endif()273find_package(OpenGL REQUIRED)274endif()275276if(USING_EGL)277if(NOT EGL_LIBRARIES)278set(EGL_LIBRARIES EGL)279endif()280set(OPENGL_LIBRARIES ${OPENGL_LIBRARIES} ${EGL_LIBRARIES})281endif()282283if(NOT LIBRETRO AND NOT IOS AND NOT MACOSX)284find_package(SDL2)285find_package(SDL2_ttf)286find_package(Fontconfig)287288# TODO: this can be removed once CI supports newer SDL2_ttf289if (NOT SDL2_ttf_FOUND)290find_package(PkgConfig)291if(PkgConfig_FOUND)292pkg_check_modules(SDL2_ttf_PKGCONFIG IMPORTED_TARGET SDL2_ttf)293endif()294endif()295endif()296297if(MACOSX AND NOT IOS)298if(USE_SYSTEM_LIBSDL2)299find_package(SDL2)300find_package(SDL2_ttf)301else()302find_library(SDL2Fwk SDL2 REQUIRED PATHS SDL/macOS)303message(STATUS "found SDL2Fwk=${SDL2Fwk}")304add_definitions(-DHAVE_SYSCTLBYNAME)305endif()306endif()307308include(FindThreads)309310if(APPLE)311find_library(COCOA_LIBRARY Cocoa)312find_library(IOKIT_LIBRARY IOKit)313find_library(QUARTZ_CORE_LIBRARY QuartzCore)314endif()315316include_directories("${CMAKE_SOURCE_DIR}")317318if(USING_EGL)319add_definitions(-DUSING_EGL)320endif()321if(USING_FBDEV)322add_definitions(-DUSING_FBDEV -DEGL_NO_X11)323endif()324if(USING_GLES2)325add_definitions(-DUSING_GLES2)326endif()327if(MOBILE_DEVICE)328add_definitions(-DMOBILE_DEVICE)329endif()330331if(NOT CMAKE_BUILD_TYPE)332message(STATUS "No build type selected, default to Release")333set(CMAKE_BUILD_TYPE "Release")334else()335message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")336endif()337338message("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")339340# Let's not use elseif here so we can catch dupes.341if(ARMV7)342message("Generating for ARMv7, ${CMAKE_BUILD_TYPE}")343endif()344if(ARM)345message("Generating for ARM, ${CMAKE_BUILD_TYPE}")346endif()347if(MIPS AND X86)348message("Generating for MIPS in x86 mode, ${CMAKE_BUILD_TYPE}")349endif()350if(MIPS)351message("Generating for MIPS, ${CMAKE_BUILD_TYPE}")352endif()353if(RISCV64)354message("Generating for RISCV64, ${CMAKE_BUILD_TYPE}")355endif()356if(LOONGARCH64)357message("Generating for LOONGARCH64, ${CMAKE_BUILD_TYPE}")358endif()359if(X86)360message("Generating for x86, ${CMAKE_BUILD_TYPE}")361endif()362if(X86_64)363message("Generating for x86_64, ${CMAKE_BUILD_TYPE}")364endif()365if(ARM64)366message("Generating for ARMv8, ${CMAKE_BUILD_TYPE}")367endif()368369# It looks like the flags for the selected build type are written to the cache after each run, which causes some of the operations370# 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.371# To work around this, remember the initial state of the variables from the first run and reset the variables to that.372# TODO: Setting the attributes per target would probably be a better solution.373foreach (LANGUAGE C CXX)374foreach (BUILD_TYPE DEBUG MINSIZEREL RELEASE RELWITHDEBINFO)375set(_CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE}_INITIAL ${CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE}} CACHE STRING "")376set(CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE} ${_CMAKE_${LANGUAGE}_FLAGS_${BUILD_TYPE}_INITIAL})377endforeach()378endforeach()379380if(NOT MSVC)381# NEON optimizations in libpng17 seem to cause PNG load errors, see #14485.382add_definitions(-DPNG_ARM_NEON_OPT=0)383384if(ANDROID)385set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17")386endif()387if(CLANG)388add_definitions(389-Wno-nullability-completeness390-Wno-tautological-pointer-compare391-Wno-deprecated-register392-Wno-sign-conversion393-Wno-shorten-64-to-32394)395if(MACOSX OR IOS)396# Hack around a bad check for __GNUC__ in basis_universal that makes it use old stuff on iOS397add_definitions(-Wno-deprecated-builtins)398endif()399endif()400401if(USE_ASAN)402message("Address sanitizer enabled (DEBUG only)")403set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address")404set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fsanitize=address")405add_definitions(-DUSE_ASAN)406endif()407if(USE_UBSAN)408message("Undefined behaviour sanitizer enabled (DEBUG only)")409set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=undefined")410set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fsanitize=undefined")411412# UBSAN is a collection of sanitizers, including vtpr, which reqiuires RTTI.413# ext/glslang disables RTTI by default using the `ENABLE_RTTI` option.414# If RTTI is disabled, we must also disable the vtpr sanitizer.415if(NOT ENABLE_RTTI)416set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-sanitize=vptr")417set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-sanitize=vptr")418endif()419endif()420421set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -D_DEBUG")422set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -D_NDEBUG")423set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -D_NDEBUG")424set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG")425set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -D_DEBUG")426set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -Os -D_NDEBUG")427set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2 -D_NDEBUG")428set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2 -g -D_NDEBUG")429430# Enable checking printf-like format strings (also works for logging functions)431add_definitions(-Wformat)432433# Disable some warnings434add_definitions(-Wno-multichar)435436# Don't compile with strict aliasing, we're not 100% aliasing-safe437add_compile_options(-fno-strict-aliasing)438if(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")439set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -parallel -fopenmp")440endif()441442add_definitions(-fno-math-errno)443444if(X86 OR X86_64)445# enable sse2 code generation446add_definitions(-msse2)447if(NOT X86_64 AND NOT CLANG)448add_definitions(-mfpmath=sse)449# add_definitions(-mstackrealign)450endif()451endif()452453if(IOS)454set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0")455elseif(APPLE AND NOT CMAKE_CROSSCOMPILING)456if(LIBRETRO AND ARM64)457set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")458else()459set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")460endif()461set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -U__STRICT_ANSI__")462set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")463elseif(NOT ANDROID)464# TODO: See if we can get rid of no-psabi465if(NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Intel" AND NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")466add_definitions(-Wno-psabi)467endif()468add_definitions(-D_XOPEN_SOURCE=700)469add_definitions(-D_XOPEN_SOURCE_EXTENDED -D__BSD_VISIBLE=1 -D_BSD_SOURCE -D_DEFAULT_SOURCE)470if(CMAKE_SYSTEM_NAME MATCHES "Linux|SunOS" OR MINGW)471add_definitions(-D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64)472endif()473if(${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")474add_definitions(-D_NETBSD_SOURCE)475endif()476elseif(ANDROID)477add_definitions(-fsigned-char)478endif()479else()480# Disable warnings about MS-specific _s variants of libc functions481add_definitions(-D_CRT_SECURE_NO_WARNINGS)482if (NOT CLANG)483add_compile_options(-MP)484endif()485set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")486set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_NDEBUG")487set(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:"libcmt.lib")488endif()489490if(WIN32)491add_definitions(-D_UNICODE -DUNICODE)492add_definitions(-DUSING_WIN_UI)493endif()494495if(NOT ANDROID)496set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")497set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")498endif()499500# This sets up the MSVC project dirs according to the physical project dirs501macro(setup_target_project TargetName ProjectDir)502get_property(TargetSources TARGET "${TargetName}" PROPERTY SOURCES)503foreach(Source ${TargetSources})504# Figure out the file's path relative to the ProjectDir505# NOTE: &#$@ double-quoted regexps506string(REGEX REPLACE "${ProjectDir}" "" RelativePath "${Source}")507string(REGEX REPLACE "[\\\\/][^\\\\/]*$" "" RelativePath "${RelativePath}")508string(REGEX REPLACE "^[\\\\/]" "" RelativePath "${RelativePath}")509string(REGEX REPLACE "/" "\\\\\\\\" RelativePath "${RelativePath}")510# put the source file in a source_group equivalent to the relative path511source_group("${RelativePath}" FILES ${Source})512endforeach()513endmacro()514515add_subdirectory(ext)516517if(WIN32)518include_directories(dx9sdk/Include)519include_directories(dx9sdk/Include/DX11)520endif()521522523set(CommonJIT524Core/MIPS/JitCommon/JitCommon.cpp525Core/MIPS/JitCommon/JitCommon.h526Core/MIPS/JitCommon/JitBlockCache.cpp527Core/MIPS/JitCommon/JitBlockCache.h528Core/MIPS/JitCommon/JitState.cpp529Core/MIPS/JitCommon/JitState.h530)531532set(CommonX86533Common/ABI.cpp534Common/ABI.h535Common/CPUDetect.cpp536Common/CPUDetect.h537Common/Thunk.cpp538Common/Thunk.h539Common/x64Analyzer.cpp540Common/x64Analyzer.h541Common/x64Emitter.cpp542Common/x64Emitter.h543)544source_group(x86 FILES ${CommonX86})545546set(CommonARM547Common/ArmCPUDetect.cpp548Common/ArmEmitter.h549Common/ArmEmitter.cpp550)551source_group(ARM FILES ${CommonARM})552553set(CommonARM64554Common/Arm64Emitter.h555Common/Arm64Emitter.cpp556Common/ArmEmitter.h557Common/ArmEmitter.cpp558Core/Util/DisArm64.h559Core/Util/DisArm64.cpp560)561source_group(ARM64 FILES ${CommonARM64})562563set(CommonMIPS564Common/MipsCPUDetect.cpp565Common/MipsEmitter.cpp566Common/MipsEmitter.h567)568source_group(MIPS FILES ${CommonMIPS})569570set(CommonRISCV64571${CommonJIT}572Common/RiscVCPUDetect.cpp573Common/RiscVEmitter.cpp574Common/RiscVEmitter.h575Core/MIPS/fake/FakeJit.cpp576Core/MIPS/fake/FakeJit.h577)578source_group(RISCV64 FILES ${CommonRISCV64})579580set(CommonLOONGARCH64581${CommonJIT}582Common/LoongArchCPUDetect.cpp583Core/MIPS/fake/FakeJit.cpp584Core/MIPS/fake/FakeJit.h585)586source_group(LOONGARCH64 FILES ${CommonLOONGARCH64})587588if(WIN32)589set(CommonD3D590Common/GPU/D3D9/D3D9ShaderCompiler.cpp591Common/GPU/D3D9/D3D9ShaderCompiler.h592Common/GPU/D3D9/D3D9StateCache.cpp593Common/GPU/D3D9/D3D9StateCache.h594Common/GPU/D3D9/thin3d_d3d9.cpp595Common/GPU/D3D9/D3DCompilerLoader.cpp596Common/GPU/D3D11/thin3d_d3d11.cpp597Common/GPU/D3D11/D3D11Loader.cpp598Common/GPU/D3D11/D3D11Loader.h599)600endif()601602set(CommonVR603Common/VR/OpenXRLoader.cpp604Common/VR/OpenXRLoader.h605Common/VR/PPSSPPVR.cpp606Common/VR/PPSSPPVR.h607Common/VR/VRBase.cpp608Common/VR/VRBase.h609Common/VR/VRFramebuffer.cpp610Common/VR/VRFramebuffer.h611Common/VR/VRInput.cpp612Common/VR/VRInput.h613Common/VR/VRMath.cpp614Common/VR/VRMath.h615Common/VR/VRRenderer.cpp616Common/VR/VRRenderer.h617)618include_directories(ext/OpenXR-SDK/include)619620add_library(Common STATIC621${CommonX86}622${CommonARM}623${CommonARM64}624${CommonMIPS}625${CommonRISCV64}626${CommonLOONGARCH64}627${CommonD3D}628${CommonVR}629Common/Serialize/Serializer.cpp630Common/Serialize/Serializer.h631Common/Serialize/SerializeDeque.h632Common/Serialize/SerializeFuncs.h633Common/Serialize/SerializeList.h634Common/Serialize/SerializeMap.h635Common/Serialize/SerializeSet.h636Common/Crypto/md5.cpp637Common/Crypto/md5.h638Common/Crypto/sha1.cpp639Common/Crypto/sha1.h640Common/Crypto/sha256.cpp641Common/Crypto/sha256.h642Common/Data/Collections/ConstMap.h643Common/Data/Collections/FixedSizeQueue.h644Common/Data/Collections/Hashmaps.h645Common/Data/Collections/TinySet.h646Common/Data/Collections/FastVec.h647Common/Data/Collections/CyclicBuffer.h648Common/Data/Collections/ThreadSafeList.h649Common/Data/Color/RGBAUtil.cpp650Common/Data/Color/RGBAUtil.h651Common/Data/Convert/ColorConv.cpp652Common/Data/Convert/ColorConv.h653Common/Data/Convert/SmallDataConvert.cpp654Common/Data/Convert/SmallDataConvert.h655Common/Data/Encoding/Base64.cpp656Common/Data/Encoding/Base64.h657Common/Data/Encoding/Compression.cpp658Common/Data/Encoding/Compression.h659Common/Data/Encoding/Shiftjis.h660Common/Data/Encoding/Utf8.cpp661Common/Data/Encoding/Utf8.h662Common/Data/Encoding/Utf16.h663Common/Data/Format/RIFF.cpp664Common/Data/Format/RIFF.h665Common/Data/Format/IniFile.cpp666Common/Data/Format/IniFile.h667Common/Data/Format/JSONReader.h668Common/Data/Format/JSONReader.cpp669Common/Data/Format/JSONWriter.h670Common/Data/Format/JSONWriter.cpp671Common/Data/Format/DDSLoad.cpp672Common/Data/Format/DDSLoad.h673Common/Data/Format/PNGLoad.cpp674Common/Data/Format/PNGLoad.h675Common/Data/Format/ZIMLoad.cpp676Common/Data/Format/ZIMLoad.h677Common/Data/Format/ZIMSave.cpp678Common/Data/Format/ZIMSave.h679Common/Data/Hash/Hash.cpp680Common/Data/Hash/Hash.h681Common/Data/Text/I18n.cpp682Common/Data/Text/I18n.h683Common/Data/Text/Parsers.cpp684Common/Data/Text/Parsers.h685Common/Data/Text/WrapText.cpp686Common/Data/Text/WrapText.h687Common/Data/Random/Rng.h688Common/File/VFS/VFS.h689Common/File/VFS/VFS.cpp690Common/File/VFS/ZipFileReader.cpp691Common/File/VFS/ZipFileReader.h692Common/File/VFS/DirectoryReader.cpp693Common/File/VFS/DirectoryReader.h694Common/File/AndroidStorage.h695Common/File/AndroidStorage.cpp696Common/File/AndroidContentURI.h697Common/File/AndroidContentURI.cpp698Common/File/DiskFree.h699Common/File/DiskFree.cpp700Common/File/Path.h701Common/File/Path.cpp702Common/File/PathBrowser.h703Common/File/PathBrowser.cpp704Common/File/FileUtil.cpp705Common/File/FileUtil.h706Common/File/DirListing.cpp707Common/File/DirListing.h708Common/File/FileDescriptor.cpp709Common/File/FileDescriptor.h710Common/GPU/DataFormat.h711Common/GPU/MiscTypes.h712Common/GPU/GPUBackendCommon.cpp713Common/GPU/GPUBackendCommon.h714Common/GPU/thin3d.cpp715Common/GPU/thin3d.h716Common/GPU/thin3d_create.h717Common/GPU/Shader.cpp718Common/GPU/Shader.h719Common/GPU/ShaderWriter.cpp720Common/GPU/ShaderWriter.h721Common/GPU/ShaderTranslation.h722Common/GPU/ShaderTranslation.cpp723Common/GPU/OpenGL/GLCommon.h724Common/GPU/OpenGL/GLDebugLog.cpp725Common/GPU/OpenGL/GLDebugLog.h726Common/GPU/OpenGL/GLSLProgram.cpp727Common/GPU/OpenGL/GLSLProgram.h728Common/GPU/OpenGL/gl3stub.c729Common/GPU/OpenGL/gl3stub.h730Common/GPU/OpenGL/GLFeatures.cpp731Common/GPU/OpenGL/GLFeatures.h732Common/GPU/OpenGL/GLFrameData.cpp733Common/GPU/OpenGL/GLFrameData.h734Common/GPU/OpenGL/thin3d_gl.cpp735Common/GPU/OpenGL/GLMemory.cpp736Common/GPU/OpenGL/GLMemory.h737Common/GPU/OpenGL/GLRenderManager.cpp738Common/GPU/OpenGL/GLRenderManager.h739Common/GPU/OpenGL/GLQueueRunner.cpp740Common/GPU/OpenGL/GLQueueRunner.h741Common/GPU/OpenGL/DataFormatGL.cpp742Common/GPU/OpenGL/DataFormatGL.h743Common/GPU/Vulkan/VulkanBarrier.cpp744Common/GPU/Vulkan/VulkanBarrier.h745Common/GPU/Vulkan/VulkanDebug.cpp746Common/GPU/Vulkan/VulkanDebug.h747Common/GPU/Vulkan/VulkanContext.cpp748Common/GPU/Vulkan/VulkanContext.h749Common/GPU/Vulkan/VulkanDescSet.cpp750Common/GPU/Vulkan/VulkanDescSet.h751Common/GPU/Vulkan/VulkanFramebuffer.cpp752Common/GPU/Vulkan/VulkanFramebuffer.h753Common/GPU/Vulkan/VulkanImage.cpp754Common/GPU/Vulkan/VulkanImage.h755Common/GPU/Vulkan/VulkanLoader.cpp756Common/GPU/Vulkan/VulkanLoader.h757Common/GPU/Vulkan/VulkanMemory.cpp758Common/GPU/Vulkan/VulkanMemory.h759Common/GPU/Vulkan/VulkanProfiler.cpp760Common/GPU/Vulkan/VulkanProfiler.h761Common/GPU/Vulkan/thin3d_vulkan.cpp762Common/GPU/Vulkan/VulkanRenderManager.cpp763Common/GPU/Vulkan/VulkanRenderManager.h764Common/GPU/Vulkan/VulkanQueueRunner.cpp765Common/GPU/Vulkan/VulkanQueueRunner.h766Common/GPU/Vulkan/VulkanFrameData.cpp767Common/GPU/Vulkan/VulkanFrameData.h768Common/Input/GestureDetector.cpp769Common/Input/GestureDetector.h770Common/Input/KeyCodes.h771Common/Input/InputState.cpp772Common/Input/InputState.h773Common/Math/fast/fast_matrix.c774Common/Math/CrossSIMD.h775Common/Math/curves.cpp776Common/Math/curves.h777Common/Math/expression_parser.cpp778Common/Math/expression_parser.h779Common/Math/lin/matrix4x4.cpp780Common/Math/lin/matrix4x4.h781Common/Math/lin/vec3.cpp782Common/Math/lin/vec3.h783Common/Math/math_util.cpp784Common/Math/math_util.h785Common/Math/Statistics.h786Common/Math/Statistics.cpp787Common/Net/HTTPClient.cpp788Common/Net/HTTPClient.h789Common/Net/HTTPHeaders.cpp790Common/Net/HTTPHeaders.h791Common/Net/HTTPNaettRequest.cpp792Common/Net/HTTPNaettRequest.h793Common/Net/HTTPRequest.cpp794Common/Net/HTTPRequest.h795Common/Net/HTTPServer.cpp796Common/Net/HTTPServer.h797Common/Net/NetBuffer.cpp798Common/Net/NetBuffer.h799Common/Net/Resolve.cpp800Common/Net/Resolve.h801Common/Net/Sinks.cpp802Common/Net/Sinks.h803Common/Net/URL.cpp804Common/Net/URL.h805Common/Net/WebsocketServer.cpp806Common/Net/WebsocketServer.h807Common/Profiler/Profiler.cpp808Common/Profiler/Profiler.h809Common/Render/TextureAtlas.cpp810Common/Render/TextureAtlas.h811Common/Render/DrawBuffer.cpp812Common/Render/DrawBuffer.h813Common/Render/ManagedTexture.cpp814Common/Render/ManagedTexture.h815Common/Render/Text/draw_text.cpp816Common/Render/Text/draw_text.h817Common/Render/Text/draw_text_android.cpp818Common/Render/Text/draw_text_android.h819Common/Render/Text/draw_text_sdl.cpp820Common/Render/Text/draw_text_sdl.h821Common/Render/Text/draw_text_win.cpp822Common/Render/Text/draw_text_win.h823Common/Render/Text/draw_text_uwp.cpp824Common/Render/Text/draw_text_uwp.h825Common/System/Display.cpp826Common/System/Display.h827Common/System/System.h828Common/System/NativeApp.h829Common/System/Request.cpp830Common/System/Request.h831Common/System/OSD.cpp832Common/System/OSD.h833Common/Thread/Channel.h834Common/Thread/ParallelLoop.cpp835Common/Thread/ParallelLoop.h836Common/Thread/Promise.h837Common/Thread/ThreadUtil.cpp838Common/Thread/ThreadUtil.h839Common/Thread/ThreadManager.cpp840Common/Thread/ThreadManager.h841Common/UI/AsyncImageFileView.cpp842Common/UI/AsyncImageFileView.h843Common/UI/Root.cpp844Common/UI/Root.h845Common/UI/Screen.cpp846Common/UI/Screen.h847Common/UI/UI.cpp848Common/UI/UI.h849Common/UI/Context.cpp850Common/UI/Context.h851Common/UI/IconCache.cpp852Common/UI/IconCache.h853Common/UI/UIScreen.cpp854Common/UI/UIScreen.h855Common/UI/Tween.cpp856Common/UI/Tween.h857Common/UI/View.cpp858Common/UI/View.h859Common/UI/ViewGroup.cpp860Common/UI/ViewGroup.h861Common/UI/ScrollView.cpp862Common/UI/ScrollView.h863Common/UI/PopupScreens.cpp864Common/UI/PopupScreens.h865Common/BitScan.h866Common/BitSet.h867Common/Buffer.h868Common/Buffer.cpp869Common/CodeBlock.h870Common/Common.h871Common/CommonFuncs.h872Common/CommonTypes.h873Common/DbgNew.h874Common/FakeEmitter.h875Common/FakeCPUDetect.cpp876Common/ExceptionHandlerSetup.cpp877Common/ExceptionHandlerSetup.h878Common/Log.h879Common/Log.cpp880Common/Log/ConsoleListener.cpp881Common/Log/ConsoleListener.h882Common/Log/StdioListener.cpp883Common/Log/StdioListener.h884Common/Log/LogManager.cpp885Common/Log/LogManager.h886Common/LogReporting.cpp887Common/LogReporting.h888Common/MemArenaAndroid.cpp889Common/MemArenaDarwin.cpp890Common/MemArenaPosix.cpp891Common/MemArenaWin32.cpp892Common/MemArenaHorizon.cpp893Common/MemArena.h894Common/MemoryUtil.cpp895Common/MemoryUtilHorizon.cpp896Common/MemoryUtil.h897Common/OSVersion.cpp898Common/OSVersion.h899Common/StringUtils.cpp900Common/StringUtils.h901Common/SysError.h902Common/SysError.cpp903Common/TimeUtil.cpp904Common/TimeUtil.h905Common/Battery/Battery.h906)907908include_directories(Common)909setup_target_project(Common Common)910911target_link_libraries(Common Ext::Snappy cpu_features)912913if(ARM64)914if(ANDROID)915target_link_libraries(Common adrenotools)916endif()917endif()918919if(USING_GLES2 OR (USING_EGL AND NOT USING_FBDEV))920find_package(X11)921endif()922923add_library(gason STATIC924ext/gason/gason.cpp925ext/gason/gason.h926)927928add_library(vma STATIC929ext/vma/vk_mem_alloc.cpp930ext/vma/vk_mem_alloc.h931)932933if(USE_FFMPEG)934if(NOT FFMPEG_DIR)935if(NOT USE_SYSTEM_FFMPEG)936if(ANDROID)937if(ARMV7)938set(PLATFORM_ARCH "android/armv7")939elseif(ARM64)940set(PLATFORM_ARCH "android/arm64")941elseif(X86_64)942set(PLATFORM_ARCH "android/x86_64")943elseif(X86)944set(PLATFORM_ARCH "android/x86")945endif()946elseif(IOS)947if(IOS_PLATFORM STREQUAL "TVOS")948set(PLATFORM_ARCH "tvos/arm64")949else()950set(PLATFORM_ARCH "ios/universal")951endif()952elseif(MACOSX)953set(PLATFORM_ARCH "macosx/universal")954elseif(LINUX)955if(ARMV7)956set(PLATFORM_ARCH "linux/armv7")957elseif(ARM64)958set(PLATFORM_ARCH "linux/aarch64")959elseif(ARM)960set(PLATFORM_ARCH "linux/arm")961elseif(MIPS)962set(PLATFORM_ARCH "linux/mips32")963elseif(RISCV64)964set(PLATFORM_ARCH "linux/riscv64")965elseif(LOONGARCH64)966set(PLATFORM_ARCH "linux/loongarch64")967elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)968set(PLATFORM_ARCH "linux/x86_64")969elseif(X86)970set(PLATFORM_ARCH "linux/x86")971endif()972elseif(WIN32)973if(X86_64)974set(PLATFORM_ARCH "Windows/x86_64")975elseif(X86)976set(PLATFORM_ARCH "Windows/x86")977endif()978endif()979if(PLATFORM_ARCH)980set(FFMPEG_DIR "ffmpeg/${PLATFORM_ARCH}")981else()982message("Couldn't find an internal FFmpeg build, using system FFmpeg instead")983endif()984endif()985endif()986987find_package(FFmpeg REQUIRED avcodec avformat avutil swresample swscale)988# Check if we need to use avcodec_(alloc|free)_frame instead of av_frame_(alloc|free)989# Check if we need to use const AVCodec990set(CMAKE_REQUIRED_INCLUDES ${FFmpeg_INCLUDE_avcodec};${FFmpeg_INCLUDE_avformat})991set(CMAKE_REQUIRED_LIBRARIES FFmpeg::avcodec;FFmpeg::avformat)992set(CMAKE_REQUIRED_FLAGS "-pedantic -Wall -Werror -Wno-unused-variable")993check_cxx_source_compiles("extern \"C\" {994#include <libavcodec/avcodec.h>995#include <libavformat/avformat.h>996}997static AVCodecContext *s_codec_context = NULL;998int main() {999const AVCodec *codec = avcodec_find_encoder(s_codec_context->codec_id);1000return 0;1001}1002" HAVE_LIBAVCODEC_CONST_AVCODEC FAIL_REGEX "invalid conversion")10031004# Check if we need to use avcodec_alloc_context3 instead of stream->codec1005# Check if we need to use av_frame_get_buffer instead of avcodec_default_get_buffer1006endif(USE_FFMPEG)10071008find_package(ZLIB)1009if(ZLIB_FOUND AND NOT ANDROID)1010include_directories(${ZLIB_INCLUDE_DIR})1011add_definitions(-DSHARED_ZLIB)1012else()1013add_library(zlib STATIC1014ext/zlib/adler32.c1015ext/zlib/compress.c1016ext/zlib/crc32.c1017ext/zlib/crc32.h1018ext/zlib/deflate.c1019ext/zlib/deflate.h1020ext/zlib/gzclose.c1021ext/zlib/gzguts.h1022ext/zlib/gzlib.c1023ext/zlib/gzread.c1024ext/zlib/gzwrite.c1025ext/zlib/infback.c1026ext/zlib/inffast.c1027ext/zlib/inffast.h1028ext/zlib/inffixed.h1029ext/zlib/inflate.c1030ext/zlib/inflate.h1031ext/zlib/inftrees.c1032ext/zlib/inftrees.h1033ext/zlib/make_vms.com1034ext/zlib/trees.c1035ext/zlib/trees.h1036ext/zlib/uncompr.c1037ext/zlib/zconf.h1038ext/zlib/zlib.h1039ext/zlib/zutil.c1040ext/zlib/zutil.h1041)1042include_directories(ext/zlib)1043set(ZLIB_LIBRARY zlib)1044endif()10451046add_library(cityhash STATIC1047ext/cityhash/city.cpp1048ext/cityhash/city.h1049ext/cityhash/citycrc.h1050)1051target_include_directories(cityhash PRIVATE ext/cityhash)10521053if(NOT MSVC)1054# These can be fast even for debug.1055set_target_properties(udis86 PROPERTIES COMPILE_FLAGS "-O2")1056set_target_properties(cityhash PROPERTIES COMPILE_FLAGS "-O2")1057if(NOT ZLIB_FOUND)1058set_target_properties(zlib PROPERTIES COMPILE_FLAGS "-O2")1059endif()1060endif()106110621063find_package(LIBZIP)1064if(LIBZIP_FOUND AND USE_SYSTEM_LIBZIP)1065include_directories(${LIBZIP_INCLUDE_DIRS})1066add_definitions(-DSHARED_LIBZIP)1067else()1068add_library(libzip STATIC1069ext/libzip/zip_add.c1070ext/libzip/zip_add_dir.c1071ext/libzip/zip_add_entry.c1072ext/libzip/zip_algorithm_deflate.c1073ext/libzip/zip_buffer.c1074ext/libzip/zip_close.c1075ext/libzip/zip_delete.c1076ext/libzip/zip_dir_add.c1077ext/libzip/zip_dirent.c1078ext/libzip/zip_discard.c1079ext/libzip/zip_entry.c1080ext/libzip/zip_error.c1081ext/libzip/zip_error_clear.c1082ext/libzip/zip_error_get.c1083ext/libzip/zip_error_get_sys_type.c1084ext/libzip/zip_error_strerror.c1085ext/libzip/zip_error_to_str.c1086ext/libzip/zip_extra_field.c1087ext/libzip/zip_extra_field_api.c1088ext/libzip/zip_fclose.c1089ext/libzip/zip_fdopen.c1090ext/libzip/zip_file_add.c1091ext/libzip/zip_file_error_clear.c1092ext/libzip/zip_file_error_get.c1093ext/libzip/zip_file_get_comment.c1094ext/libzip/zip_file_get_external_attributes.c1095ext/libzip/zip_file_get_offset.c1096ext/libzip/zip_file_rename.c1097ext/libzip/zip_file_replace.c1098ext/libzip/zip_file_set_comment.c1099ext/libzip/zip_file_set_encryption.c1100ext/libzip/zip_file_set_external_attributes.c1101ext/libzip/zip_file_set_mtime.c1102ext/libzip/zip_file_strerror.c1103ext/libzip/zip_fopen.c1104ext/libzip/zip_fopen_encrypted.c1105ext/libzip/zip_fopen_index.c1106ext/libzip/zip_fopen_index_encrypted.c1107ext/libzip/zip_fread.c1108ext/libzip/zip_fseek.c1109ext/libzip/zip_ftell.c1110ext/libzip/zip_get_archive_comment.c1111ext/libzip/zip_get_archive_flag.c1112ext/libzip/zip_get_encryption_implementation.c1113ext/libzip/zip_get_file_comment.c1114ext/libzip/zip_get_name.c1115ext/libzip/zip_get_num_entries.c1116ext/libzip/zip_get_num_files.c1117ext/libzip/zip_hash.c1118ext/libzip/zip_io_util.c1119ext/libzip/zip_libzip_version.c1120ext/libzip/zip_memdup.c1121ext/libzip/zip_name_locate.c1122ext/libzip/zip_new.c1123ext/libzip/zip_open.c1124ext/libzip/zip_pkware.c1125ext/libzip/zip_progress.c1126ext/libzip/zip_rename.c1127ext/libzip/zip_replace.c1128ext/libzip/zip_set_archive_comment.c1129ext/libzip/zip_set_archive_flag.c1130ext/libzip/zip_set_default_password.c1131ext/libzip/zip_set_file_comment.c1132ext/libzip/zip_set_file_compression.c1133ext/libzip/zip_set_name.c1134ext/libzip/zip_source_accept_empty.c1135ext/libzip/zip_source_begin_write.c1136ext/libzip/zip_source_begin_write_cloning.c1137ext/libzip/zip_source_buffer.c1138ext/libzip/zip_source_call.c1139ext/libzip/zip_source_close.c1140ext/libzip/zip_source_commit_write.c1141ext/libzip/zip_source_compress.c1142ext/libzip/zip_source_crc.c1143ext/libzip/zip_source_error.c1144ext/libzip/zip_source_file_common.c1145ext/libzip/zip_source_file_stdio.c1146ext/libzip/zip_source_free.c1147ext/libzip/zip_source_function.c1148ext/libzip/zip_source_get_file_attributes.c1149ext/libzip/zip_source_is_deleted.c1150ext/libzip/zip_source_layered.c1151ext/libzip/zip_source_open.c1152ext/libzip/zip_source_pkware_decode.c1153ext/libzip/zip_source_pkware_encode.c1154ext/libzip/zip_source_read.c1155ext/libzip/zip_source_remove.c1156ext/libzip/zip_source_rollback_write.c1157ext/libzip/zip_source_seek.c1158ext/libzip/zip_source_seek_write.c1159ext/libzip/zip_source_stat.c1160ext/libzip/zip_source_supports.c1161ext/libzip/zip_source_tell.c1162ext/libzip/zip_source_tell_write.c1163ext/libzip/zip_source_window.c1164ext/libzip/zip_source_write.c1165ext/libzip/zip_source_zip.c1166ext/libzip/zip_source_zip_new.c1167ext/libzip/zip_stat.c1168ext/libzip/zip_stat_index.c1169ext/libzip/zip_stat_init.c1170ext/libzip/zip_strerror.c1171ext/libzip/zip_string.c1172ext/libzip/zip_unchange.c1173ext/libzip/zip_unchange_all.c1174ext/libzip/zip_unchange_archive.c1175ext/libzip/zip_unchange_data.c1176ext/libzip/zip_utf-8.c1177ext/libzip/zip_err_str.c1178)1179if(WIN32)1180target_sources(libzip PRIVATE1181ext/libzip/zip_source_file_win32.c1182ext/libzip/zip_source_file_win32_named.c1183ext/libzip/zip_source_file_win32_utf16.c1184ext/libzip/zip_source_file_win32_utf8.c1185)1186if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)1187target_sources(libzip PRIVATE ext/libzip/zip_random_uwp.c)1188else()1189target_sources(libzip PRIVATE ext/libzip/zip_source_file_win32_ansi.c ext/libzip/zip_random_win32.c)1190endif()1191else()1192target_sources(libzip PRIVATE1193ext/libzip/zip_mkstempm.c1194ext/libzip/zip_source_file_stdio_named.c1195ext/libzip/zip_random_unix.c1196)1197endif()1198target_link_libraries(libzip)1199include_directories(ext/libzip)1200set(LIBZIP_LIBRARY libzip)1201endif()12021203# Arm platforms require at least libpng17.1204if(ANDROID OR ARMV7 OR ARM64 OR ARM OR IOS)1205set(PNG_REQUIRED_VERSION 1.7)1206else()1207set(PNG_REQUIRED_VERSION 1.6)1208endif()12091210if(USE_SYSTEM_LIBPNG)1211find_package(PNG ${PNG_REQUIRED_VERSION})1212endif()1213if(PNG_FOUND)1214include_directories(${PNG_INCLUDE_DIRS})1215else()1216if(ARM)1217set(PNG_ARM_INCLUDES1218ext/libpng17/arm/arm_init.c1219ext/libpng17/arm/filter_neon.S1220ext/libpng17/arm/filter_neon_intrinsics.c1221)1222elseif(ARM64)1223set(PNG_ARM_INCLUDES1224ext/libpng17/arm/arm_init.c1225ext/libpng17/arm/filter_neon_intrinsics.c1226)1227endif()1228add_library(png17 STATIC1229ext/libpng17/pngconf.h1230ext/libpng17/pngdebug.h1231ext/libpng17/png.c1232ext/libpng17/png.h1233ext/libpng17/pngerror.c1234ext/libpng17/pngget.c1235ext/libpng17/pnginfo.h1236ext/libpng17/pnglibconf.h1237ext/libpng17/pngmem.c1238ext/libpng17/pngpread.c1239ext/libpng17/pngpriv.h1240ext/libpng17/pngread.c1241ext/libpng17/pngrio.c1242ext/libpng17/pngrtran.c1243ext/libpng17/pngrutil.c1244ext/libpng17/pngset.c1245ext/libpng17/pngstruct.h1246ext/libpng17/pngtrans.c1247ext/libpng17/pngwio.c1248ext/libpng17/pngwrite.c1249ext/libpng17/pngwtran.c1250ext/libpng17/pngwutil.c1251${PNG_ARM_INCLUDES}1252)1253set(PNG_LIBRARIES png17)1254include_directories(ext/libpng17)1255endif()12561257add_library(basis_universal STATIC1258ext/basis_universal/basisu.h1259ext/basis_universal/basisu_containers.h1260ext/basis_universal/basisu_containers_impl.h1261ext/basis_universal/basisu_file_headers.h1262ext/basis_universal/basisu_transcoder.cpp1263ext/basis_universal/basisu_transcoder.h1264ext/basis_universal/basisu_transcoder_internal.h1265ext/basis_universal/basisu_transcoder_tables_astc.inc1266ext/basis_universal/basisu_transcoder_tables_astc_0_255.inc1267ext/basis_universal/basisu_transcoder_tables_atc_55.inc1268ext/basis_universal/basisu_transcoder_tables_atc_56.inc1269ext/basis_universal/basisu_transcoder_tables_bc7_m5_alpha.inc1270ext/basis_universal/basisu_transcoder_tables_bc7_m5_color.inc1271ext/basis_universal/basisu_transcoder_tables_dxt1_5.inc1272ext/basis_universal/basisu_transcoder_tables_dxt1_6.inc1273ext/basis_universal/basisu_transcoder_tables_pvrtc2_45.inc1274ext/basis_universal/basisu_transcoder_tables_pvrtc2_alpha_33.inc1275ext/basis_universal/basisu_transcoder_uastc.h1276)1277set(BASISU_LIBRARIES basis_universal)12781279set(nativeExtra)1280set(nativeExtraLibs)12811282if(OPENXR AND NOT ARMV7_DEVICE)1283set(nativeExtraLibs ${nativeExtraLibs} openxr_loader)1284endif()12851286if(IOS OR MACOSX)1287set(nativeExtra ${nativeExtra}1288Common/Render/Text/draw_text_cocoa.mm1289Common/Render/Text/draw_text_cocoa.h)1290endif()12911292if(ANDROID)1293set(NativeAppSource ${NativeAppSource}1294android/jni/app-android.cpp1295android/jni/AndroidJavaGLContext.cpp1296android/jni/AndroidJavaGLContext.h1297android/jni/AndroidVulkanContext.cpp1298android/jni/AndroidVulkanContext.h1299android/jni/AndroidGraphicsContext.h1300android/jni/AndroidAudio.cpp1301android/jni/AndroidAudio.h1302android/jni/OpenSLContext.cpp1303android/jni/OpenSLContext.h1304)1305# No target1306elseif(IOS AND NOT LIBRETRO)1307set(nativeExtra ${nativeExtra}1308ios/main.mm1309ios/AppDelegate.mm1310ios/AppDelegate.h1311ios/DisplayManager.h1312ios/DisplayManager.mm1313ios/Controls.h1314ios/Controls.mm1315ios/ViewControllerCommon.h1316ios/ViewController.mm1317ios/ViewController.h1318ios/ViewControllerMetal.mm1319ios/ViewControllerMetal.h1320ios/iOSCoreAudio.mm1321ios/iOSCoreAudio.h1322ios/CameraHelper.mm1323ios/CameraHelper.h1324ios/LocationHelper.mm1325ios/LocationHelper.h1326ios/PPSSPPUIApplication.h1327ios/PPSSPPUIApplication.mm1328ios/SmartKeyboardMap.cpp1329ios/SmartKeyboardMap.hpp1330ios/iCade/iCadeReaderView.h1331ios/iCade/iCadeReaderView.m1332ios/iCade/iCadeState.h1333UI/DarwinFileSystemServices.mm1334UI/DarwinFileSystemServices.h1335Common/Battery/AppleBatteryClient.m1336)13371338set(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" )1339if(EXISTS "${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks/GameController.framework")1340set(nativeExtraLibs ${nativeExtraLibs} "-weak_framework GameController")1341endif()13421343if(NOT ICONV_LIBRARY)1344set(nativeExtraLibs ${nativeExtraLibs} iconv)1345endif()13461347# TODO: Enable arc globally?1348set_source_files_properties(ios/AppDelegate.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1349set_source_files_properties(ios/ViewController.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1350set_source_files_properties(ios/ViewControllerMetal.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1351set_source_files_properties(ios/iOSCoreAudio.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1352set_source_files_properties(ios/PPSSPPUIApplication.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1353set_source_files_properties(ios/iCade/iCadeReaderView.m PROPERTIES COMPILE_FLAGS -fobjc-arc)1354set_source_files_properties(ios/main.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1355set_source_files_properties(ios/CameraHelper.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1356set_source_files_properties(ios/AudioEngine.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1357set_source_files_properties(ios/LocationHelper.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1358set_source_files_properties(ios/DisplayManager.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1359set_source_files_properties(ios/Controls.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1360set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1361set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc)1362set_source_files_properties(Common/Render/Text/draw_text_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)13631364set(TargetBin PPSSPP)1365elseif(IOS AND LIBRETRO)1366set(nativeExtraLibs ${nativeExtraLibs} "-framework GLKit")1367elseif(USING_QT_UI)1368set(CMAKE_AUTOMOC ON)1369find_package(Qt5 COMPONENTS OpenGL Gui Core Multimedia)1370list(APPEND NativeAppSource1371Qt/QtMain.cpp1372Qt/QtMain.h1373Qt/mainwindow.cpp1374Qt/mainwindow.h1375)1376add_definitions(-DUSING_QT_UI)1377if(USING_GLES2)1378add_definitions(-DQT_OPENGL_ES -DQT_OPENGL_ES_2)1379endif()1380if(APPLE)1381list(APPEND NativeAppSource1382UI/DarwinFileSystemServices.mm1383UI/DarwinFileSystemServices.h1384Common/Battery/AppleBatteryClient.m)1385set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc)1386set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1387set_source_files_properties(Common/Render/Text/draw_text_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1388set(nativeExtraLibs ${nativeExtraLibs} ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY})1389endif()1390include_directories(Qt)1391include_directories(${CMAKE_CURRENT_BINARY_DIR})1392set(nativeExtraLibs ${nativeExtraLibs} Qt5::OpenGL Qt5::Gui Qt5::Core Qt5::Multimedia)1393set(TargetBin PPSSPPQt)13941395# Enable SDL joystick if SDL is found1396if(SDL2_FOUND)1397add_definitions(-DSDL)1398set(nativeExtra ${nativeExtra}1399SDL/SDLJoystick.h1400SDL/SDLJoystick.cpp1401)1402set(nativeExtraLibs ${nativeExtraLibs} SDL2::SDL2)1403endif()14041405elseif(WIN32)1406# Don't care about SDL.1407set(TargetBin PPSSPPWindows)1408if(X86_64)1409link_directories(dx9sdk/Lib/x64)1410else()1411link_directories(dx9sdk/Lib/x86)1412endif()1413elseif(LIBRETRO)1414else()1415if(GOLD)1416set(TargetBin PPSSPPGold)1417else()1418set(TargetBin PPSSPPSDL)1419endif()1420# Require SDL1421add_definitions(-DSDL)1422set(nativeExtra ${nativeExtra}1423SDL/SDLJoystick.h1424SDL/SDLJoystick.cpp1425SDL/SDLMain.cpp1426SDL/SDLGLGraphicsContext.cpp1427)1428if(NOT USE_LIBNX)1429set(nativeExtra ${nativeExtra}1430SDL/SDLVulkanGraphicsContext.cpp1431)1432endif()1433if(SDL2_ttf_FOUND OR1434(SDL2_ttf_PKGCONFIG_FOUND AND1435SDL2_ttf_PKGCONFIG_VERSION VERSION_GREATER_EQUAL "2.0.18"))1436add_definitions(-DUSE_SDL2_TTF)1437if(FONTCONFIG_FOUND)1438add_definitions(-DUSE_SDL2_TTF_FONTCONFIG)1439set(nativeExtraLibs ${nativeExtraLibs} Fontconfig::Fontconfig)1440endif()1441elseif(SDL2_ttf_PKGCONFIG_FOUND)1442message(WARNING "Found SDL2_ttf <2.0.18 - this is too old, falling back to atlas")1443endif()1444if(SDL2_ttf_FOUND)1445set(nativeExtraLibs ${nativeExtraLibs} SDL2_ttf::SDL2_ttf)1446elseif(SDL2_ttf_PKGCONFIG_FOUND)1447set(nativeExtraLibs ${nativeExtraLibs} PkgConfig::SDL2_ttf_PKGCONFIG)1448endif()1449if(APPLE)1450set(nativeExtra ${nativeExtra}1451SDL/SDLMain.h1452SDL/SDLMain.mm1453SDL/SDLCocoaMetalLayer.h1454SDL/SDLCocoaMetalLayer.mm1455SDL/CocoaBarItems.mm1456SDL/CocoaBarItems.h1457SDL/PPSSPPAboutViewController.m1458SDL/PPSSPPAboutViewController.h1459UI/DarwinFileSystemServices.mm1460UI/DarwinFileSystemServices.h1461Common/Battery/AppleBatteryClient.m1462UI/PSPNSApplicationDelegate.mm1463UI/PSPNSApplicationDelegate.h)14641465# TODO1466# set_source_files_properties(SDL/SDLMain.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)14671468set_source_files_properties(UI/DarwinFileSystemServices.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1469set_source_files_properties(UI/PSPNSApplicationDelegate.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1470set_source_files_properties(SDL/CocoaMetalLayer.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1471set_source_files_properties(SDL/CocoaBarItems.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1472set_source_files_properties(SDL/PPSSPPAboutViewController.m PROPERTIES COMPILE_FLAGS -fobjc-arc)1473set_source_files_properties(Common/Battery/AppleBatteryClient.m PROPERTIES COMPILE_FLAGS -fobjc-arc)1474set_source_files_properties(Common/Render/Text/draw_text_cocoa.mm PROPERTIES COMPILE_FLAGS -fobjc-arc)1475set(nativeExtraLibs ${nativeExtraLibs} ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY})14761477if(USE_SYSTEM_LIBSDL2)1478set(nativeExtraLibs ${nativeExtraLibs} SDL2::SDL2)1479else()1480set(nativeExtraLibs ${nativeExtraLibs} ${SDL2Fwk})1481endif()1482elseif(USING_EGL)1483set(nativeExtraLibs ${nativeExtraLibs} pthread SDL2::SDL2)1484else()1485set(nativeExtraLibs ${nativeExtraLibs} SDL2::SDL2)1486endif()1487endif()14881489if(WIN32)1490if(MINGW)1491set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff <INCLUDES> <SOURCE> <OBJECT>")1492# required when using the dx9sdk include paths1493add_definitions(-include ${CMAKE_CURRENT_SOURCE_DIR}/Windows/mingw_defines.h)1494else()1495target_link_libraries(Common dxguid)1496endif()1497target_link_libraries(Common winmm d3d9 dsound)1498endif()14991500if(NOT LIBRETRO)1501list(APPEND NativeAppSource1502UI/AudioCommon.h1503UI/AudioCommon.cpp1504)1505endif()15061507list(APPEND NativeAppSource1508android/jni/TestRunner.cpp1509UI/DiscordIntegration.cpp1510UI/NativeApp.cpp1511UI/BackgroundAudio.h1512UI/BackgroundAudio.cpp1513UI/ChatScreen.h1514UI/ChatScreen.cpp1515UI/DebugOverlay.cpp1516UI/DebugOverlay.h1517UI/DevScreens.cpp1518UI/DevScreens.h1519UI/DisplayLayoutScreen.cpp1520UI/DisplayLayoutScreen.h1521UI/EmuScreen.h1522UI/EmuScreen.cpp1523UI/GameInfoCache.h1524UI/GameInfoCache.cpp1525UI/MainScreen.h1526UI/MainScreen.cpp1527UI/MiscScreens.h1528UI/MiscScreens.cpp1529UI/PauseScreen.h1530UI/PauseScreen.cpp1531UI/TabbedDialogScreen.h1532UI/TabbedDialogScreen.cpp1533UI/GameScreen.h1534UI/GameScreen.cpp1535UI/GameSettingsScreen.h1536UI/GameSettingsScreen.cpp1537UI/DriverManagerScreen.h1538UI/DriverManagerScreen.cpp1539UI/GPUDriverTestScreen.h1540UI/GPUDriverTestScreen.cpp1541UI/TiltAnalogSettingsScreen.h1542UI/TiltAnalogSettingsScreen.cpp1543UI/TouchControlLayoutScreen.h1544UI/TouchControlLayoutScreen.cpp1545UI/TouchControlVisibilityScreen.h1546UI/TouchControlVisibilityScreen.cpp1547UI/GamepadEmu.h1548UI/GamepadEmu.cpp1549UI/JoystickHistoryView.h1550UI/JoystickHistoryView.cpp1551UI/OnScreenDisplay.h1552UI/OnScreenDisplay.cpp1553UI/ControlMappingScreen.h1554UI/ControlMappingScreen.cpp1555UI/RemoteISOScreen.h1556UI/RemoteISOScreen.cpp1557UI/ReportScreen.h1558UI/ReportScreen.cpp1559UI/SavedataScreen.h1560UI/SavedataScreen.cpp1561UI/Store.h1562UI/Store.cpp1563UI/CwCheatScreen.h1564UI/CwCheatScreen.cpp1565UI/InstallZipScreen.h1566UI/InstallZipScreen.cpp1567UI/JitCompareScreen.h1568UI/JitCompareScreen.cpp1569UI/MemStickScreen.h1570UI/MemStickScreen.cpp1571UI/ProfilerDraw.h1572UI/ProfilerDraw.cpp1573UI/CustomButtonMappingScreen.h1574UI/CustomButtonMappingScreen.cpp1575UI/Theme.h1576UI/Theme.cpp1577UI/RetroAchievementScreens.cpp1578UI/RetroAchievementScreens.h1579)15801581if(ANDROID)1582if(ARM)1583set(NativeAppSource ${NativeAppSource} android/jni/ArmEmitterTest.cpp)1584elseif(ARM64)1585set(NativeAppSource ${NativeAppSource} android/jni/Arm64EmitterTest.cpp)1586endif()15871588if (NOT LIBRETRO)1589set(nativeExtra ${nativeExtra} ${NativeAppSource})1590endif()1591endif()15921593if (IOS)1594set(nativeExtra ${nativeExtra} ${NativeAppSource})1595endif()15961597add_library(native STATIC1598${nativeExtra}1599Common/Render/Text/draw_text_qt.cpp1600Common/Render/Text/draw_text_qt.h1601ext/jpge/jpgd.cpp1602ext/jpge/jpgd.h1603ext/jpge/jpge.cpp1604ext/jpge/jpge.h1605)16061607if(LINUX AND NOT ANDROID)1608set(RT_LIB rt)1609endif()16101611set(ATOMIC_LIB)1612if(ANDROID OR (LINUX AND ARM_DEVICE) OR (LINUX AND RISCV64) OR (LINUX AND LOONGARCH64))1613set(ATOMIC_LIB atomic)1614endif()16151616target_link_libraries(native ${LIBZIP_LIBRARY} ${PNG_LIBRARIES} ${BASISU_LIBRARIES} ${ZLIB_LIBRARY} vma gason udis86 ${RT_LIB} ${nativeExtraLibs} ${ATOMIC_LIB} Common)1617if(TARGET Ext::GLEW)1618target_link_libraries(native Ext::GLEW)1619endif()16201621if(ANDROID)1622target_link_libraries(native log EGL OpenSLES)1623elseif(WIN32)1624target_link_libraries(native ws2_32 winmm)1625elseif(${CMAKE_SYSTEM_NAME} MATCHES "^(DragonFly|FreeBSD|NetBSD)$")1626target_link_libraries(native execinfo)1627endif()16281629add_library(kirk STATIC1630ext/libkirk/AES.c1631ext/libkirk/AES.h1632ext/libkirk/amctrl.c1633ext/libkirk/amctrl.h1634ext/libkirk/SHA1.c1635ext/libkirk/SHA1.h1636ext/libkirk/bn.c1637ext/libkirk/ec.c1638ext/libkirk/kirk_engine.c1639ext/libkirk/kirk_engine.h1640)1641target_include_directories(kirk PRIVATE ext/libkirk)16421643add_library(sfmt19937 STATIC1644ext/sfmt19937/SFMT.c1645ext/sfmt19937/SFMT.h1646ext/sfmt19937/SFMT-common.h1647ext/sfmt19937/SFMT-params.h1648ext/sfmt19937/SFMT-params19937.h1649)1650target_compile_definitions(sfmt19937 PRIVATE SFMT_MEXP=19937)1651target_include_directories(sfmt19937 PRIVATE ext/sfmt19937)16521653add_library(xbrz STATIC1654ext/xbrz/xbrz.cpp1655ext/xbrz/xbrz.h1656)1657target_include_directories(xbrz PRIVATE ext/xbrz)16581659add_library(xxhash STATIC1660ext/xxhash.c1661ext/xxhash.h1662)1663target_include_directories(xxhash PRIVATE ext/xxhash)16641665set(CoreExtra)1666set(CoreExtraLibs)16671668set(CoreExtra ${CoreExtra}1669Core/MIPS/IR/IRAnalysis.cpp1670Core/MIPS/IR/IRAnalysis.h1671Core/MIPS/IR/IRCompALU.cpp1672Core/MIPS/IR/IRCompBranch.cpp1673Core/MIPS/IR/IRCompFPU.cpp1674Core/MIPS/IR/IRCompLoadStore.cpp1675Core/MIPS/IR/IRCompVFPU.cpp1676Core/MIPS/IR/IRFrontend.cpp1677Core/MIPS/IR/IRFrontend.h1678Core/MIPS/IR/IRInst.cpp1679Core/MIPS/IR/IRInst.h1680Core/MIPS/IR/IRInterpreter.cpp1681Core/MIPS/IR/IRInterpreter.h1682Core/MIPS/IR/IRJit.cpp1683Core/MIPS/IR/IRJit.h1684Core/MIPS/IR/IRNativeCommon.cpp1685Core/MIPS/IR/IRNativeCommon.h1686Core/MIPS/IR/IRPassSimplify.cpp1687Core/MIPS/IR/IRPassSimplify.h1688Core/MIPS/IR/IRRegCache.cpp1689Core/MIPS/IR/IRRegCache.h1690)16911692list(APPEND CoreExtra1693Core/MIPS/ARM/ArmAsm.cpp1694Core/MIPS/ARM/ArmCompALU.cpp1695Core/MIPS/ARM/ArmCompBranch.cpp1696Core/MIPS/ARM/ArmCompFPU.cpp1697Core/MIPS/ARM/ArmCompLoadStore.cpp1698Core/MIPS/ARM/ArmCompVFPU.cpp1699Core/MIPS/ARM/ArmCompVFPUNEON.cpp1700Core/MIPS/ARM/ArmCompVFPUNEONUtil.cpp1701Core/MIPS/ARM/ArmCompReplace.cpp1702Core/MIPS/ARM/ArmJit.cpp1703Core/MIPS/ARM/ArmJit.h1704Core/MIPS/ARM/ArmRegCache.cpp1705Core/MIPS/ARM/ArmRegCache.h1706Core/MIPS/ARM/ArmRegCacheFPU.cpp1707Core/MIPS/ARM/ArmRegCacheFPU.h1708GPU/Common/VertexDecoderArm.cpp1709)17101711list(APPEND CoreExtra1712Core/MIPS/ARM64/Arm64Asm.cpp1713Core/MIPS/ARM64/Arm64CompALU.cpp1714Core/MIPS/ARM64/Arm64CompBranch.cpp1715Core/MIPS/ARM64/Arm64CompFPU.cpp1716Core/MIPS/ARM64/Arm64CompLoadStore.cpp1717Core/MIPS/ARM64/Arm64CompVFPU.cpp1718Core/MIPS/ARM64/Arm64CompReplace.cpp1719Core/MIPS/ARM64/Arm64Jit.cpp1720Core/MIPS/ARM64/Arm64Jit.h1721Core/MIPS/ARM64/Arm64RegCache.cpp1722Core/MIPS/ARM64/Arm64RegCache.h1723Core/MIPS/ARM64/Arm64RegCacheFPU.cpp1724Core/MIPS/ARM64/Arm64RegCacheFPU.h1725Core/MIPS/ARM64/Arm64IRAsm.cpp1726Core/MIPS/ARM64/Arm64IRCompALU.cpp1727Core/MIPS/ARM64/Arm64IRCompBranch.cpp1728Core/MIPS/ARM64/Arm64IRCompFPU.cpp1729Core/MIPS/ARM64/Arm64IRCompLoadStore.cpp1730Core/MIPS/ARM64/Arm64IRCompSystem.cpp1731Core/MIPS/ARM64/Arm64IRCompVec.cpp1732Core/MIPS/ARM64/Arm64IRJit.cpp1733Core/MIPS/ARM64/Arm64IRJit.h1734Core/MIPS/ARM64/Arm64IRRegCache.cpp1735Core/MIPS/ARM64/Arm64IRRegCache.h1736GPU/Common/VertexDecoderArm64.cpp1737Core/Util/DisArm64.cpp1738)17391740list(APPEND CoreExtra1741Core/MIPS/x86/Asm.cpp1742Core/MIPS/x86/CompALU.cpp1743Core/MIPS/x86/CompBranch.cpp1744Core/MIPS/x86/CompFPU.cpp1745Core/MIPS/x86/CompLoadStore.cpp1746Core/MIPS/x86/CompVFPU.cpp1747Core/MIPS/x86/CompReplace.cpp1748Core/MIPS/x86/Jit.cpp1749Core/MIPS/x86/Jit.h1750Core/MIPS/x86/JitSafeMem.cpp1751Core/MIPS/x86/JitSafeMem.h1752Core/MIPS/x86/RegCache.cpp1753Core/MIPS/x86/RegCache.h1754Core/MIPS/x86/RegCacheFPU.cpp1755Core/MIPS/x86/RegCacheFPU.h1756Core/MIPS/x86/X64IRAsm.cpp1757Core/MIPS/x86/X64IRCompALU.cpp1758Core/MIPS/x86/X64IRCompBranch.cpp1759Core/MIPS/x86/X64IRCompFPU.cpp1760Core/MIPS/x86/X64IRCompLoadStore.cpp1761Core/MIPS/x86/X64IRCompSystem.cpp1762Core/MIPS/x86/X64IRCompVec.cpp1763Core/MIPS/x86/X64IRJit.cpp1764Core/MIPS/x86/X64IRJit.h1765Core/MIPS/x86/X64IRRegCache.cpp1766Core/MIPS/x86/X64IRRegCache.h1767GPU/Common/VertexDecoderX86.cpp1768GPU/Software/DrawPixelX86.cpp1769GPU/Software/SamplerX86.cpp1770)17711772list(APPEND CoreExtra1773Core/MIPS/MIPS/MipsJit.cpp1774Core/MIPS/MIPS/MipsJit.h1775)17761777list(APPEND CoreExtra1778Core/MIPS/RiscV/RiscVAsm.cpp1779Core/MIPS/RiscV/RiscVCompALU.cpp1780Core/MIPS/RiscV/RiscVCompBranch.cpp1781Core/MIPS/RiscV/RiscVCompFPU.cpp1782Core/MIPS/RiscV/RiscVCompLoadStore.cpp1783Core/MIPS/RiscV/RiscVCompSystem.cpp1784Core/MIPS/RiscV/RiscVCompVec.cpp1785Core/MIPS/RiscV/RiscVJit.cpp1786Core/MIPS/RiscV/RiscVJit.h1787Core/MIPS/RiscV/RiscVRegCache.cpp1788Core/MIPS/RiscV/RiscVRegCache.h1789GPU/Common/VertexDecoderRiscV.cpp1790)17911792if(NOT MOBILE_DEVICE)1793set(CoreExtra ${CoreExtra}1794Core/AVIDump.cpp1795Core/AVIDump.h1796Core/WaveFile.cpp1797Core/WaveFile.h1798)1799endif()18001801set(GPU_GLES1802GPU/GLES/StencilBufferGLES.cpp1803GPU/GLES/GPU_GLES.cpp1804GPU/GLES/GPU_GLES.h1805GPU/GLES/FragmentTestCacheGLES.cpp1806GPU/GLES/FragmentTestCacheGLES.h1807GPU/GLES/FramebufferManagerGLES.cpp1808GPU/GLES/FramebufferManagerGLES.h1809GPU/GLES/ShaderManagerGLES.cpp1810GPU/GLES/ShaderManagerGLES.h1811GPU/GLES/StateMappingGLES.cpp1812GPU/GLES/StateMappingGLES.h1813GPU/GLES/TextureCacheGLES.cpp1814GPU/GLES/TextureCacheGLES.h1815GPU/GLES/DrawEngineGLES.cpp1816GPU/GLES/DrawEngineGLES.h1817)18181819set(GPU_VULKAN1820GPU/Vulkan/DebugVisVulkan.cpp1821GPU/Vulkan/DebugVisVulkan.h1822GPU/Vulkan/DrawEngineVulkan.cpp1823GPU/Vulkan/DrawEngineVulkan.h1824GPU/Vulkan/FramebufferManagerVulkan.cpp1825GPU/Vulkan/FramebufferManagerVulkan.h1826GPU/Vulkan/GPU_Vulkan.cpp1827GPU/Vulkan/GPU_Vulkan.h1828GPU/Vulkan/PipelineManagerVulkan.cpp1829GPU/Vulkan/PipelineManagerVulkan.h1830GPU/Vulkan/ShaderManagerVulkan.cpp1831GPU/Vulkan/ShaderManagerVulkan.h1832GPU/Vulkan/StateMappingVulkan.cpp1833GPU/Vulkan/StateMappingVulkan.h1834GPU/Vulkan/TextureCacheVulkan.cpp1835GPU/Vulkan/TextureCacheVulkan.h1836GPU/Vulkan/VulkanUtil.cpp1837GPU/Vulkan/VulkanUtil.h1838)18391840set(GPU_D3D91841GPU/Directx9/DrawEngineDX9.cpp1842GPU/Directx9/DrawEngineDX9.h1843GPU/Directx9/FramebufferManagerDX9.cpp1844GPU/Directx9/FramebufferManagerDX9.h1845GPU/Directx9/GPU_DX9.cpp1846GPU/Directx9/GPU_DX9.h1847GPU/Directx9/ShaderManagerDX9.cpp1848GPU/Directx9/ShaderManagerDX9.h1849GPU/Directx9/StateMappingDX9.cpp1850GPU/Directx9/StateMappingDX9.h1851GPU/Directx9/TextureCacheDX9.cpp1852GPU/Directx9/TextureCacheDX9.h1853)18541855set(GPU_D3D111856GPU/D3D11/DrawEngineD3D11.cpp1857GPU/D3D11/DrawEngineD3D11.h1858GPU/D3D11/FramebufferManagerD3D11.cpp1859GPU/D3D11/FramebufferManagerD3D11.h1860GPU/D3D11/GPU_D3D11.cpp1861GPU/D3D11/GPU_D3D11.h1862GPU/D3D11/D3D11Util.cpp1863GPU/D3D11/D3D11Util.h1864GPU/D3D11/ShaderManagerD3D11.cpp1865GPU/D3D11/ShaderManagerD3D11.h1866GPU/D3D11/StateMappingD3D11.cpp1867GPU/D3D11/StateMappingD3D11.h1868GPU/D3D11/TextureCacheD3D11.cpp1869GPU/D3D11/TextureCacheD3D11.h1870)18711872# We build Vulkan even on Apple to avoid annoying build differences.1873set(GPU_IMPLS ${GPU_GLES} ${GPU_VULKAN})1874if(WIN32)1875list(APPEND GPU_IMPLS ${GPU_D3D9} ${GPU_D3D11})1876endif()18771878set(GPU_SOURCES1879${GPU_IMPLS}1880${GPU_NEON}1881GPU/Common/Draw2D.cpp1882GPU/Common/Draw2D.h1883GPU/Common/DepthBufferCommon.cpp1884GPU/Common/TextureShaderCommon.cpp1885GPU/Common/TextureShaderCommon.h1886GPU/Common/DepalettizeShaderCommon.cpp1887GPU/Common/DepalettizeShaderCommon.h1888GPU/Common/FragmentShaderGenerator.cpp1889GPU/Common/FragmentShaderGenerator.h1890GPU/Common/VertexShaderGenerator.cpp1891GPU/Common/VertexShaderGenerator.h1892GPU/Common/GeometryShaderGenerator.cpp1893GPU/Common/GeometryShaderGenerator.h1894GPU/Common/FramebufferManagerCommon.cpp1895GPU/Common/FramebufferManagerCommon.h1896GPU/Common/GPUDebugInterface.cpp1897GPU/Common/GPUDebugInterface.h1898GPU/Common/GPUStateUtils.cpp1899GPU/Common/GPUStateUtils.h1900GPU/Common/DrawEngineCommon.cpp1901GPU/Common/DrawEngineCommon.h1902GPU/Common/PresentationCommon.cpp1903GPU/Common/PresentationCommon.h1904GPU/Common/ReinterpretFramebuffer.cpp1905GPU/Common/ReinterpretFramebuffer.h1906GPU/Common/ShaderId.cpp1907GPU/Common/ShaderId.h1908GPU/Common/ShaderUniforms.cpp1909GPU/Common/ShaderUniforms.h1910GPU/Common/ShaderCommon.cpp1911GPU/Common/ShaderCommon.h1912GPU/Common/SplineCommon.cpp1913GPU/Common/SplineCommon.h1914GPU/Common/StencilCommon.cpp1915GPU/Common/StencilCommon.h1916GPU/Common/SoftwareTransformCommon.cpp1917GPU/Common/SoftwareTransformCommon.h1918GPU/Common/VertexDecoderCommon.cpp1919GPU/Common/VertexDecoderCommon.h1920GPU/Common/VertexDecoderHandwritten.cpp1921GPU/Common/VertexDecoderHandwritten.h1922GPU/Common/TransformCommon.cpp1923GPU/Common/TransformCommon.h1924GPU/Common/IndexGenerator.cpp1925GPU/Common/IndexGenerator.h1926GPU/Common/TextureDecoder.cpp1927GPU/Common/TextureDecoder.h1928GPU/Common/TextureCacheCommon.cpp1929GPU/Common/TextureCacheCommon.h1930GPU/Common/TextureScalerCommon.cpp1931GPU/Common/TextureScalerCommon.h1932GPU/Common/PostShader.cpp1933GPU/Common/PostShader.h1934GPU/Common/TextureReplacer.cpp1935GPU/Common/TextureReplacer.h1936GPU/Common/ReplacedTexture.cpp1937GPU/Common/ReplacedTexture.h1938GPU/Debugger/Breakpoints.cpp1939GPU/Debugger/Breakpoints.h1940GPU/Debugger/Debugger.cpp1941GPU/Debugger/Debugger.h1942GPU/Debugger/GECommandTable.cpp1943GPU/Debugger/GECommandTable.h1944GPU/Debugger/Playback.cpp1945GPU/Debugger/Playback.h1946GPU/Debugger/Record.cpp1947GPU/Debugger/Record.h1948GPU/Debugger/RecordFormat.h1949GPU/Debugger/Stepping.cpp1950GPU/Debugger/Stepping.h1951GPU/ge_constants.h1952GPU/GeConstants.cpp1953GPU/GPUInterface.h1954GPU/GeDisasm.cpp1955GPU/GeDisasm.h1956GPU/GPU.cpp1957GPU/GPU.h1958GPU/GPUCommon.cpp1959GPU/GPUCommon.h1960GPU/GPUCommonHW.cpp1961GPU/GPUCommonHW.h1962GPU/GPUState.cpp1963GPU/GPUState.h1964GPU/Math3D.cpp1965GPU/Math3D.h1966GPU/Software/BinManager.cpp1967GPU/Software/BinManager.h1968GPU/Software/Clipper.cpp1969GPU/Software/Clipper.h1970GPU/Software/DrawPixel.cpp1971GPU/Software/DrawPixel.h1972GPU/Software/FuncId.cpp1973GPU/Software/FuncId.h1974GPU/Software/Lighting.cpp1975GPU/Software/Lighting.h1976GPU/Software/Rasterizer.cpp1977GPU/Software/Rasterizer.h1978GPU/Software/RasterizerRectangle.cpp1979GPU/Software/RasterizerRectangle.h1980GPU/Software/RasterizerRegCache.cpp1981GPU/Software/RasterizerRegCache.h1982GPU/Software/Sampler.cpp1983GPU/Software/Sampler.h1984GPU/Software/SoftGpu.cpp1985GPU/Software/SoftGpu.h1986GPU/Software/TransformUnit.cpp1987GPU/Software/TransformUnit.h1988)19891990# 'ppsspp_jni' on ANDROID, 'Core' everywhere else1991# SHARED on ANDROID, STATIC everywhere else1992add_library(${CoreLibName} ${CoreLinkType}1993${CoreExtra}1994${CommonJIT}1995Core/Config.cpp1996Core/Config.h1997Core/ConfigSettings.cpp1998Core/ConfigSettings.h1999Core/ConfigValues.h2000Core/ControlMapper.cpp2001Core/ControlMapper.h2002Core/Core.cpp2003Core/Core.h2004Core/Compatibility.cpp2005Core/Compatibility.h2006Core/CoreParameter.h2007Core/CoreTiming.cpp2008Core/CoreTiming.h2009Core/CwCheat.cpp2010Core/CwCheat.h2011Core/FrameTiming.cpp2012Core/FrameTiming.h2013Core/HDRemaster.cpp2014Core/HDRemaster.h2015Core/Instance.cpp2016Core/Instance.h2017Core/KeyMap.cpp2018Core/KeyMap.h2019Core/KeyMapDefaults.cpp2020Core/KeyMapDefaults.h2021Core/RetroAchievements.h2022Core/RetroAchievements.cpp2023Core/ThreadEventQueue.h2024Core/TiltEventProcessor.h2025Core/TiltEventProcessor.cpp2026Core/WebServer.cpp2027Core/WebServer.h2028Core/Debugger/Breakpoints.cpp2029Core/Debugger/Breakpoints.h2030Core/Debugger/DebugInterface.h2031Core/Debugger/MemBlockInfo.cpp2032Core/Debugger/MemBlockInfo.h2033Core/Debugger/SymbolMap.cpp2034Core/Debugger/SymbolMap.h2035Core/Debugger/DisassemblyManager.cpp2036Core/Debugger/DisassemblyManager.h2037Core/Debugger/WebSocket.cpp2038Core/Debugger/WebSocket.h2039Core/Debugger/WebSocket/BreakpointSubscriber.cpp2040Core/Debugger/WebSocket/BreakpointSubscriber.h2041Core/Debugger/WebSocket/CPUCoreSubscriber.cpp2042Core/Debugger/WebSocket/CPUCoreSubscriber.h2043Core/Debugger/WebSocket/DisasmSubscriber.cpp2044Core/Debugger/WebSocket/DisasmSubscriber.h2045Core/Debugger/WebSocket/GameBroadcaster.cpp2046Core/Debugger/WebSocket/GameBroadcaster.h2047Core/Debugger/WebSocket/GameSubscriber.cpp2048Core/Debugger/WebSocket/GameSubscriber.h2049Core/Debugger/WebSocket/ClientConfigSubscriber.cpp2050Core/Debugger/WebSocket/ClientConfigSubscriber.h2051Core/Debugger/WebSocket/GPUBufferSubscriber.cpp2052Core/Debugger/WebSocket/GPUBufferSubscriber.h2053Core/Debugger/WebSocket/GPURecordSubscriber.cpp2054Core/Debugger/WebSocket/GPURecordSubscriber.h2055Core/Debugger/WebSocket/GPUStatsSubscriber.cpp2056Core/Debugger/WebSocket/GPUStatsSubscriber.h2057Core/Debugger/WebSocket/HLESubscriber.cpp2058Core/Debugger/WebSocket/HLESubscriber.h2059Core/Debugger/WebSocket/InputBroadcaster.cpp2060Core/Debugger/WebSocket/InputBroadcaster.h2061Core/Debugger/WebSocket/InputSubscriber.cpp2062Core/Debugger/WebSocket/InputSubscriber.h2063Core/Debugger/WebSocket/LogBroadcaster.cpp2064Core/Debugger/WebSocket/LogBroadcaster.h2065Core/Debugger/WebSocket/MemoryInfoSubscriber.cpp2066Core/Debugger/WebSocket/MemoryInfoSubscriber.h2067Core/Debugger/WebSocket/MemorySubscriber.cpp2068Core/Debugger/WebSocket/MemorySubscriber.h2069Core/Debugger/WebSocket/ReplaySubscriber.cpp2070Core/Debugger/WebSocket/ReplaySubscriber.h2071Core/Debugger/WebSocket/SteppingBroadcaster.cpp2072Core/Debugger/WebSocket/SteppingBroadcaster.h2073Core/Debugger/WebSocket/SteppingSubscriber.cpp2074Core/Debugger/WebSocket/SteppingSubscriber.h2075Core/Debugger/WebSocket/WebSocketUtils.cpp2076Core/Debugger/WebSocket/WebSocketUtils.h2077Core/Dialog/PSPDialog.cpp2078Core/Dialog/PSPDialog.h2079Core/Dialog/PSPGamedataInstallDialog.cpp2080Core/Dialog/PSPGamedataInstallDialog.h2081Core/Dialog/PSPMsgDialog.cpp2082Core/Dialog/PSPMsgDialog.h2083Core/Dialog/PSPNetconfDialog.cpp2084Core/Dialog/PSPNetconfDialog.h2085Core/Dialog/PSPNpSigninDialog.cpp2086Core/Dialog/PSPNpSigninDialog.h2087Core/Dialog/PSPOskDialog.cpp2088Core/Dialog/PSPOskDialog.h2089Core/Dialog/PSPPlaceholderDialog.cpp2090Core/Dialog/PSPPlaceholderDialog.h2091Core/Dialog/PSPSaveDialog.cpp2092Core/Dialog/PSPSaveDialog.h2093Core/Dialog/PSPScreenshotDialog.cpp2094Core/Dialog/PSPScreenshotDialog.h2095Core/Dialog/SavedataParam.cpp2096Core/Dialog/SavedataParam.h2097Core/ELF/ElfReader.cpp2098Core/ELF/ElfReader.h2099Core/ELF/ElfTypes.h2100Core/ELF/PBPReader.cpp2101Core/ELF/PBPReader.h2102Core/ELF/PrxDecrypter.cpp2103Core/ELF/PrxDecrypter.h2104Core/ELF/ParamSFO.cpp2105Core/ELF/ParamSFO.h2106Core/FFMPEGCompat.h2107Core/FileSystems/tlzrc.cpp2108Core/FileSystems/BlobFileSystem.cpp2109Core/FileSystems/BlobFileSystem.h2110Core/FileSystems/BlockDevices.cpp2111Core/FileSystems/BlockDevices.h2112Core/FileSystems/DirectoryFileSystem.cpp2113Core/FileSystems/DirectoryFileSystem.h2114Core/FileSystems/FileSystem.h2115Core/FileSystems/FileSystem.cpp2116Core/FileSystems/ISOFileSystem.cpp2117Core/FileSystems/ISOFileSystem.h2118Core/FileSystems/MetaFileSystem.cpp2119Core/FileSystems/MetaFileSystem.h2120Core/FileSystems/VirtualDiscFileSystem.cpp2121Core/FileSystems/VirtualDiscFileSystem.h2122Core/Font/PGF.cpp2123Core/Font/PGF.h2124Core/HLE/FunctionWrappers.h2125Core/HLE/HLE.cpp2126Core/HLE/HLE.h2127Core/HLE/ReplaceTables.cpp2128Core/HLE/ReplaceTables.h2129Core/HLE/HLEHelperThread.cpp2130Core/HLE/HLEHelperThread.h2131Core/HLE/HLETables.cpp2132Core/HLE/HLETables.h2133Core/HLE/KernelWaitHelpers.h2134Core/HLE/KUBridge.h2135Core/HLE/KUBridge.cpp2136Core/HLE/Plugins.h2137Core/HLE/Plugins.cpp2138Core/HLE/ThreadQueueList.h2139Core/HLE/__sceAudio.cpp2140Core/HLE/__sceAudio.h2141Core/HLE/sceAdler.cpp2142Core/HLE/sceAdler.h2143Core/HLE/AtracCtx.cpp2144Core/HLE/AtracCtx.h2145Core/HLE/AtracCtx2.cpp2146Core/HLE/AtracCtx2.h2147Core/HLE/sceAtrac.cpp2148Core/HLE/sceAtrac.h2149Core/HLE/sceAudio.cpp2150Core/HLE/sceAudiocodec.cpp2151Core/HLE/sceAudiocodec.h2152Core/HLE/sceAudioRouting.cpp2153Core/HLE/sceAudioRouting.h2154Core/HLE/sceAudio.h2155Core/HLE/sceCcc.h2156Core/HLE/sceCcc.cpp2157Core/HLE/sceChnnlsv.cpp2158Core/HLE/sceChnnlsv.h2159Core/HLE/sceCtrl.cpp2160Core/HLE/sceCtrl.h2161Core/HLE/sceDeflt.cpp2162Core/HLE/sceDeflt.h2163Core/HLE/sceDisplay.cpp2164Core/HLE/sceDisplay.h2165Core/HLE/sceDmac.cpp2166Core/HLE/sceDmac.h2167Core/HLE/sceG729.cpp2168Core/HLE/sceG729.h2169Core/HLE/sceGameUpdate.cpp2170Core/HLE/sceGameUpdate.h2171Core/HLE/sceGe.cpp2172Core/HLE/sceGe.h2173Core/HLE/sceFont.cpp2174Core/HLE/sceFont.h2175Core/HLE/sceHeap.cpp2176Core/HLE/sceHeap.h2177Core/HLE/sceHprm.cpp2178Core/HLE/sceHprm.h2179Core/HLE/sceHttp.cpp2180Core/HLE/sceHttp.h2181Core/HLE/sceImpose.cpp2182Core/HLE/sceImpose.h2183Core/HLE/sceIo.cpp2184Core/HLE/sceIo.h2185Core/HLE/sceJpeg.cpp2186Core/HLE/sceJpeg.h2187Core/HLE/sceKernel.cpp2188Core/HLE/sceKernel.h2189Core/HLE/sceKernelAlarm.cpp2190Core/HLE/sceKernelAlarm.h2191Core/HLE/sceKernelEventFlag.cpp2192Core/HLE/sceKernelEventFlag.h2193Core/HLE/sceKernelHeap.cpp2194Core/HLE/sceKernelHeap.h2195Core/HLE/sceKernelInterrupt.cpp2196Core/HLE/sceKernelInterrupt.h2197Core/HLE/sceKernelMbx.cpp2198Core/HLE/sceKernelMbx.h2199Core/HLE/sceKernelMemory.cpp2200Core/HLE/sceKernelMemory.h2201Core/HLE/sceKernelModule.cpp2202Core/HLE/sceKernelModule.h2203Core/HLE/sceKernelMsgPipe.cpp2204Core/HLE/sceKernelMsgPipe.h2205Core/HLE/sceKernelMutex.cpp2206Core/HLE/sceKernelMutex.h2207Core/HLE/sceKernelSemaphore.cpp2208Core/HLE/sceKernelSemaphore.h2209Core/HLE/sceKernelThread.cpp2210Core/HLE/sceKernelThread.h2211Core/HLE/sceKernelTime.cpp2212Core/HLE/sceKernelTime.h2213Core/HLE/sceKernelVTimer.cpp2214Core/HLE/sceKernelVTimer.h2215Core/HLE/sceMpeg.cpp2216Core/HLE/sceMpeg.h2217Core/HLE/sceNet.cpp2218Core/HLE/sceNet.h2219Core/HLE/sceNetAdhoc.cpp2220Core/HLE/sceNetAdhoc.h2221Core/HLE/proAdhoc.h2222Core/HLE/proAdhoc.cpp2223Core/HLE/proAdhocServer.h2224Core/HLE/proAdhocServer.cpp2225Core/HLE/sceOpenPSID.cpp2226Core/HLE/sceOpenPSID.h2227Core/HLE/sceP3da.cpp2228Core/HLE/sceP3da.h2229Core/HLE/sceMt19937.cpp2230Core/HLE/sceMt19937.h2231Core/HLE/sceMd5.cpp2232Core/HLE/sceMd5.h2233Core/HLE/sceMp4.cpp2234Core/HLE/sceMp4.h2235Core/HLE/sceMp3.cpp2236Core/HLE/sceMp3.h2237Core/HLE/sceParseHttp.cpp2238Core/HLE/sceParseHttp.h2239Core/HLE/sceParseUri.cpp2240Core/HLE/sceParseUri.h2241Core/HLE/scePower.cpp2242Core/HLE/scePower.h2243Core/HLE/scePsmf.cpp2244Core/HLE/scePsmf.h2245Core/HLE/sceRtc.cpp2246Core/HLE/sceRtc.h2247Core/HLE/sceSas.cpp2248Core/HLE/sceSas.h2249Core/HLE/sceSfmt19937.cpp2250Core/HLE/sceSfmt19937.h2251Core/HLE/sceSha256.cpp2252Core/HLE/sceSha256.h2253Core/HLE/sceSircs.cpp2254Core/HLE/sceSircs.h2255Core/HLE/sceSsl.cpp2256Core/HLE/sceSsl.h2257Core/HLE/sceUmd.cpp2258Core/HLE/sceUmd.h2259Core/HLE/sceUsb.cpp2260Core/HLE/sceUsb.h2261Core/HLE/sceUsbAcc.cpp2262Core/HLE/sceUsbAcc.h2263Core/HLE/sceUsbCam.cpp2264Core/HLE/sceUsbCam.h2265Core/HLE/sceUsbGps.cpp2266Core/HLE/sceUsbGps.h2267Core/HLE/sceUsbMic.cpp2268Core/HLE/sceUsbMic.h2269Core/HLE/sceUtility.cpp2270Core/HLE/sceUtility.h2271Core/HLE/sceVaudio.cpp2272Core/HLE/sceVaudio.h2273Core/HLE/scePspNpDrm_user.cpp2274Core/HLE/scePspNpDrm_user.h2275Core/HLE/sceNp.cpp2276Core/HLE/sceNp.h2277Core/HLE/sceNp2.cpp2278Core/HLE/sceNp2.h2279Core/HLE/scePauth.cpp2280Core/HLE/scePauth.h2281Core/HW/SimpleAudioDec.cpp2282Core/HW/SimpleAudioDec.h2283Core/HW/Atrac3Standalone.cpp2284Core/HW/Atrac3Standalone.h2285Core/HW/SimpleAudioDec.h2286Core/HW/AsyncIOManager.cpp2287Core/HW/AsyncIOManager.h2288Core/HW/BufferQueue.cpp2289Core/HW/BufferQueue.h2290Core/HW/Camera.cpp2291Core/HW/Camera.h2292Core/HW/Display.cpp2293Core/HW/Display.h2294Core/HW/MediaEngine.cpp2295Core/HW/MediaEngine.h2296Core/HW/MpegDemux.cpp2297Core/HW/MpegDemux.h2298Core/HW/MemoryStick.cpp2299Core/HW/MemoryStick.h2300Core/HW/SasAudio.cpp2301Core/HW/SasAudio.h2302Core/HW/SasReverb.cpp2303Core/HW/SasReverb.h2304Core/HW/StereoResampler.cpp2305Core/HW/StereoResampler.h2306Core/Loaders.cpp2307Core/Loaders.h2308Core/FileLoaders/CachingFileLoader.cpp2309Core/FileLoaders/CachingFileLoader.h2310Core/FileLoaders/DiskCachingFileLoader.cpp2311Core/FileLoaders/DiskCachingFileLoader.h2312Core/FileLoaders/HTTPFileLoader.cpp2313Core/FileLoaders/HTTPFileLoader.h2314Core/FileLoaders/LocalFileLoader.cpp2315Core/FileLoaders/LocalFileLoader.h2316Core/FileLoaders/RamCachingFileLoader.cpp2317Core/FileLoaders/RamCachingFileLoader.h2318Core/FileLoaders/RetryingFileLoader.cpp2319Core/FileLoaders/RetryingFileLoader.h2320Core/MIPS/MIPS.cpp2321Core/MIPS/MIPS.h2322Core/MIPS/MIPSAnalyst.cpp2323Core/MIPS/MIPSAnalyst.h2324Core/MIPS/MIPSCodeUtils.cpp2325Core/MIPS/MIPSCodeUtils.h2326Core/MIPS/MIPSDebugInterface.cpp2327Core/MIPS/MIPSDebugInterface.h2328Core/MIPS/MIPSDis.cpp2329Core/MIPS/MIPSDis.h2330Core/MIPS/MIPSDisVFPU.cpp2331Core/MIPS/MIPSDisVFPU.h2332Core/MIPS/MIPSInt.cpp2333Core/MIPS/MIPSInt.h2334Core/MIPS/MIPSIntVFPU.cpp2335Core/MIPS/MIPSIntVFPU.h2336Core/MIPS/MIPSStackWalk.cpp2337Core/MIPS/MIPSStackWalk.h2338Core/MIPS/MIPSTables.cpp2339Core/MIPS/MIPSTables.h2340Core/MIPS/MIPSVFPUUtils.cpp2341Core/MIPS/MIPSVFPUUtils.h2342Core/MIPS/MIPSVFPUFallbacks.cpp2343Core/MIPS/MIPSVFPUFallbacks.h2344Core/MIPS/MIPSAsm.cpp2345Core/MIPS/MIPSAsm.h2346Core/MIPS/MIPSTracer.cpp2347Core/MIPS/MIPSTracer.h2348Core/MemFault.cpp2349Core/MemFault.h2350Core/MemMap.cpp2351Core/MemMap.h2352Core/MemMapFunctions.cpp2353Core/MemMapHelpers.h2354Core/PSPLoaders.cpp2355Core/PSPLoaders.h2356Core/Reporting.cpp2357Core/Reporting.h2358Core/Replay.cpp2359Core/Replay.h2360Core/SaveState.cpp2361Core/SaveState.h2362Core/Screenshot.cpp2363Core/Screenshot.h2364Core/System.cpp2365Core/System.h2366Core/ThreadPools.cpp2367Core/ThreadPools.h2368Core/Util/AudioFormat.cpp2369Core/Util/AudioFormat.h2370Core/Util/GameManager.cpp2371Core/Util/GameManager.h2372Core/Util/MemStick.cpp2373Core/Util/MemStick.h2374Core/Util/GameDB.cpp2375Core/Util/GameDB.h2376Core/Util/PortManager.cpp2377Core/Util/PortManager.h2378Core/Util/BlockAllocator.cpp2379Core/Util/BlockAllocator.h2380Core/Util/PPGeDraw.cpp2381Core/Util/PPGeDraw.h2382${GPU_SOURCES}2383ext/disarm.cpp2384ext/disarm.h2385ext/riscv-disas.cpp2386ext/riscv-disas.h2387${CMAKE_CURRENT_BINARY_DIR}/git-version.cpp2388)23892390if(ANDROID)2391set(CoreExtraLibs ${CoreExtraLibs} android)2392if(X86_64)2393set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic")2394endif()2395endif()23962397if(USE_ARMIPS)2398set(CoreExtraLibs ${CoreExtraLibs} armips)2399else()2400add_definitions(-DNO_ARMIPS=1)2401endif()24022403# needed for VK_USE_PLATFORM_XCB_KHR only2404#if(VULKAN AND NOT WIN32)2405# target_link_libraries(native X11-xcb X11)2406#endif()24072408set(GlslangLibs glslang OGLCompiler OSDependent SPIRV spirv-cross-glsl)24092410if (ENABLE_SPVREMAPPER)2411list(APPEND GlslangLibs SPVRemapper)2412endif()24132414if(WIN32)2415set(GlslangLibs ${GlslangLibs} spirv-cross-hlsl)2416endif()24172418if(OPENGL_opengl_LIBRARY AND OpenGL_GL_PREFERENCE STREQUAL GLVND AND NOT APPLE)2419set(OPENGL_LIBRARIES OpenGL::OpenGL)2420endif()24212422if(USE_SYSTEM_ZSTD)2423find_package(ZSTD REQUIRED)2424target_include_directories(${CoreLibName} PRIVATE ${ZSTD_INCLUDE_DIR})2425target_link_libraries(${CoreLibName} ${ZSTD_LIBRARY})2426else()2427add_subdirectory(ext/zstd-build)2428set(CoreExtraLibs ${CoreExtraLibs} libzstd_static)2429include_directories(ext/zstd/lib)2430endif()24312432include_directories(ext/libchdr/include)24332434target_link_libraries(${CoreLibName} Common native chdr kirk cityhash sfmt19937 xbrz xxhash rcheevos minimp3 at3_standalone ${GlslangLibs}2435${CoreExtraLibs} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${CMAKE_DL_LIBS})24362437if(NOT HTTPS_NOT_AVAILABLE)2438target_link_libraries(${CoreLibName} naett)2439if(WIN32)2440target_link_libraries(${CoreLibName} winhttp)2441endif()2442endif()24432444target_compile_features(${CoreLibName} PUBLIC cxx_std_17)24452446if(FFmpeg_FOUND)2447target_compile_definitions(${CoreLibName} PRIVATE USE_FFMPEG=1)2448if (HAVE_LIBAVCODEC_CONST_AVCODEC)2449target_compile_definitions(${CoreLibName} PRIVATE HAVE_LIBAVCODEC_CONST_AVCODEC=1)2450endif()2451set_target_properties(${CoreLibName} PROPERTIES NO_SYSTEM_FROM_IMPORTED true)2452target_include_directories(${CoreLibName} BEFORE PUBLIC ${FFmpeg_INCLUDE_avcodec} ${FFmpeg_INCLUDE_avformat})2453target_link_libraries(${CoreLibName}2454FFmpeg::avcodec2455FFmpeg::avformat2456FFmpeg::avutil2457FFmpeg::swresample2458FFmpeg::swscale2459${ZLIB_LIBRARY}2460)2461endif()24622463# Discord integration2464if(USE_DISCORD AND NOT IOS AND NOT LIBRETRO)2465add_definitions(-DUSE_DISCORD=1)2466target_link_libraries(${CoreLibName} discord-rpc)2467endif()24682469# miniUPnPc integration (MiniUPnPc supposed to works on any POSIX system, not sure if some of these are redundant/not needed tho)2470if(USE_MINIUPNPC)2471if(USE_SYSTEM_MINIUPNPC)2472find_package(MINIUPNPC REQUIRED)2473target_include_directories(${CoreLibName} PRIVATE ${MINIUPNP_INCLUDE_DIR})2474target_link_libraries(${CoreLibName} ${MINIUPNP_LIBRARY})2475add_definitions(-DWITH_UPNP -DUSE_SYSTEM_MINIUPNPC)2476else()2477set (MINIUPNPC_VERSION 2.2) # used by miniupnpcstrings.h.cmake2478set (MINIUPNPC_API_VERSION 18)2479option(UPNPC_BUILD_STATIC "Build static library" TRUE)2480option(NO_GETADDRINFO "Define NO_GETADDRINFO" FALSE)2481mark_as_advanced(NO_GETADDRINFO)2482if (NO_GETADDRINFO)2483add_definitions(-DNO_GETADDRINFO)2484endif()24852486if (NOT WIN32)2487add_definitions (-DMINIUPNPC_SET_SOCKET_TIMEOUT)2488add_definitions (-D_BSD_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L)2489endif()2490if (MACOSX)2491add_definitions (-D_DARWIN_C_SOURCE)2492endif()2493if(WIN32)2494add_definitions(-DWIN32 -DMINIUPNP_EXPORTS)2495else()2496add_definitions(-fPIC)2497endif()24982499add_definitions(-DWITH_UPNP -DMINIUPNP_STATICLIB)2500set(MINIUPNP_DIR "ext/miniupnp/miniupnpc")2501include_directories(${CMAKE_CURRENT_BINARY_DIR})2502include_directories(ext/miniupnp/miniupnpc/src)2503include_directories(ext/miniupnp/miniupnpc/include)2504configure_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 generated2505set(MINIUPNPC_SOURCES2506# the needed bits of miniupnpc (no python module, no tests, no cli)2507${MINIUPNP_DIR}/src/addr_is_reserved.c2508${MINIUPNP_DIR}/src/connecthostport.c2509${MINIUPNP_DIR}/src/igd_desc_parse.c2510${MINIUPNP_DIR}/src/minisoap.c2511${MINIUPNP_DIR}/src/minissdpc.c2512${MINIUPNP_DIR}/src/miniupnpc.c2513#${MINIUPNP_DIR}/miniupnpcmodule.c2514${MINIUPNP_DIR}/src/miniwget.c2515${MINIUPNP_DIR}/src/minixml.c2516${MINIUPNP_DIR}/src/minixmlvalid.c2517${MINIUPNP_DIR}/src/portlistingparse.c2518${MINIUPNP_DIR}/src/receivedata.c2519#${MINIUPNP_DIR}/upnpc.c # causing an error due to already existing _main()2520${MINIUPNP_DIR}/src/upnpcommands.c2521${MINIUPNP_DIR}/src/upnpdev.c2522${MINIUPNP_DIR}/src/upnperrors.c2523${MINIUPNP_DIR}/src/upnpreplyparse.c2524${CMAKE_CURRENT_BINARY_DIR}/miniupnpcstrings.h2525)2526if (NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "AmigaOS")2527#set(MINIUPNPC_SOURCES ${MINIUPNPC_SOURCES} minissdpc.c) # causing an error due to duplication in MINIUPNPC_SOURCES?2528endif()2529if (WIN32)2530set_source_files_properties(${MINIUPNPC_SOURCES} PROPERTIES COMPILE_DEFINITIONS "MINIUPNP_STATICLIB;MINIUPNP_EXPORTS")2531set(LDLIBS ws2_32 iphlpapi ${LDLIBS})2532#elseif (CMAKE_SYSTEM_NAME STREQUAL "Solaris")2533# find_library (SOCKET_LIBRARY NAMES socket)2534# find_library (NSL_LIBRARY NAMES nsl)2535# find_library (RESOLV_LIBRARY NAMES resolv)2536# set (LDLIBS ${SOCKET_LIBRARY} ${NSL_LIBRARY} ${RESOLV_LIBRARY} ${LDLIBS})2537endif()2538if (UPNPC_BUILD_STATIC)2539add_library(miniupnpc STATIC ${MINIUPNPC_SOURCES})2540target_link_libraries(${CoreLibName} miniupnpc ${LDLIBS})2541set(UPNPC_LIBRARY miniupnpc)2542if (MSVC)2543# Suppress noise warnings2544target_compile_definitions(miniupnpc PRIVATE _CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS)2545endif()2546endif()2547endif()2548endif()25492550setup_target_project(${CoreLibName} Core)25512552# Generate git-version at build time.2553add_custom_target(GitVersion DEPENDS something_that_never_exists)25542555set(WIN_VERSION_CMD "")2556if (WIN32)2557set(WIN_VERSION_CMD COMMAND ${CMAKE_SOURCE_DIR}/Windows/git-version-gen.cmd PPSSPPWindows)2558endif()25592560add_custom_command(OUTPUT something_that_never_exists2561COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}2562-DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}2563-P ${CMAKE_CURRENT_SOURCE_DIR}/git-version.cmake2564${WIN_VERSION_CMD})25652566set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/git-version.cpp2567PROPERTIES GENERATED TRUE2568SKIP_AUTOMOC ON)2569add_dependencies(${CoreLibName} GitVersion)25702571set(WindowsFiles2572Windows/DSoundStream.cpp2573Windows/DSoundStream.h2574Windows/WindowsAudio.cpp2575Windows/WindowsAudio.h2576Windows/WASAPIStream.cpp2577Windows/WASAPIStream.h2578Windows/Debugger/BreakpointWindow.cpp2579Windows/Debugger/BreakpointWindow.h2580Windows/Debugger/DumpMemoryWindow.cpp2581Windows/Debugger/DumpMemoryWindow.h2582Windows/Debugger/CtrlDisAsmView.cpp2583Windows/Debugger/CtrlDisAsmView.h2584Windows/Debugger/CtrlMemView.cpp2585Windows/Debugger/CtrlMemView.h2586Windows/Debugger/CtrlRegisterList.cpp2587Windows/Debugger/CtrlRegisterList.h2588Windows/Debugger/DebuggerShared.cpp2589Windows/Debugger/DebuggerShared.h2590Windows/Debugger/Debugger_Disasm.cpp2591Windows/Debugger/Debugger_Disasm.h2592Windows/Debugger/Debugger_MemoryDlg.cpp2593Windows/Debugger/Debugger_MemoryDlg.h2594Windows/Debugger/Debugger_Lists.cpp2595Windows/Debugger/Debugger_Lists.h2596Windows/Debugger/Debugger_VFPUDlg.cpp2597Windows/Debugger/Debugger_VFPUDlg.h2598Windows/Debugger/WatchItemWindow.cpp2599Windows/Debugger/WatchItemWindow.h2600Windows/Debugger/EditSymbolsWindow.cpp2601Windows/Debugger/EditSymbolsWindow.h2602Windows/GEDebugger/CtrlDisplayListView.cpp2603Windows/GEDebugger/SimpleGLWindow.cpp2604Windows/GEDebugger/TabState.cpp2605Windows/GEDebugger/VertexPreview.cpp2606Windows/GEDebugger/CtrlDisplayListView.h2607Windows/GEDebugger/SimpleGLWindow.h2608Windows/GEDebugger/TabState.h2609Windows/GEDebugger/GEDebugger.cpp2610Windows/GEDebugger/TabDisplayLists.cpp2611Windows/GEDebugger/TabVertices.cpp2612Windows/GEDebugger/GEDebugger.h2613Windows/GEDebugger/TabDisplayLists.h2614Windows/GEDebugger/TabVertices.h2615Windows/BufferLock.h2616Windows/CaptureDevice.cpp2617Windows/CaptureDevice.h2618Windows/DinputDevice.cpp2619Windows/DinputDevice.h2620Windows/DSoundStream.cpp2621Windows/DSoundStream.h2622Windows/EmuThread.cpp2623Windows/EmuThread.h2624Windows/GeDebugger/GeDebugger.cpp2625Windows/GPU/D3D9Context.cpp2626Windows/GPU/D3D9Context.h2627Windows/GPU/D3D11Context.cpp2628Windows/GPU/D3D11Context.h2629Windows/GPU/WindowsGLContext.cpp2630Windows/GPU/WindowsVulkanContext.cpp2631Windows/InputBox.cpp2632Windows/InputBox.h2633Windows/InputDevice.cpp2634Windows/InputDevice.h2635Windows/W32Util/ContextMenu.h2636Windows/W32Util/ContextMenu.h2637Windows/W32Util/DialogManager.cpp2638Windows/W32Util/DialogManager.h2639Windows/W32Util/Misc.cpp2640Windows/W32Util/Misc.h2641Windows/W32Util/ShellUtil.cpp2642Windows/W32Util/ShellUtil.h2643Windows/W32Util/TabControl.cpp2644Windows/W32Util/TabControl.h2645Windows/W32Util/IatHook.h2646Windows/W32Util/ContextMenu.h2647Windows/W32Util/ContextMenu.cpp2648Windows/W32Util/DarkMode.h2649Windows/W32Util/DarkMode.cpp2650Windows/W32Util/UAHMenuBar.h2651Windows/W32Util/UAHMenuBar.cpp2652Windows/WindowsHost.cpp2653Windows/WindowsHost.h2654Windows/MainWindow.cpp2655Windows/MainWindow.h2656Windows/MainWindowMenu.cpp2657Windows/MainWindowMenu.h2658Windows/RawInput.cpp2659Windows/RawInput.h2660Windows/TouchInputHandler.cpp2661Windows/TouchInputHandler.h2662Windows/XinputDevice.cpp2663Windows/XinputDevice.h2664Windows/main.cpp2665Windows/main.h2666Windows/ppsspp.rc2667Windows/resource.h2668Windows/stdafx.cpp2669Windows/stdafx.h2670)26712672list(APPEND LinkCommon ${CoreLibName} ${CMAKE_THREAD_LIBS_INIT})26732674if(WIN32)2675list(APPEND LinkCommon kernel32 user32 gdi32 shell32 comctl32 dsound xinput d3d9 winmm dinput8 ole32 winspool ksuser dwmapi mf uxtheme mfplat mfreadwrite mfuuid shlwapi)2676#setup_target_project(${TargetBin} Windows)2677list(APPEND NativeAppSource ${WindowsFiles})2678endif()26792680set(BigFontAssets2681assets/font_atlas.zim2682assets/font_atlas.meta2683)26842685set(NativeAssets2686assets/ui_atlas.zim2687assets/ui_atlas.meta2688assets/asciifont_atlas.zim2689assets/asciifont_atlas.meta2690assets/debugger2691assets/lang2692assets/shaders2693assets/themes2694assets/vfpu2695assets/Roboto-Condensed.ttf2696assets/7z.png2697assets/compat.ini2698assets/gamecontrollerdb.txt2699assets/langregion.ini2700assets/ppge_atlas.zim2701assets/ppge_atlas.meta2702assets/rargray.png2703assets/unknown.png2704assets/zip.png2705assets/sfx_back.wav2706assets/sfx_confirm.wav2707assets/sfx_select.wav2708assets/sfx_toggle_off.wav2709assets/sfx_toggle_on.wav2710assets/sfx_achievement_unlocked.wav2711assets/sfx_leaderbord_submitted.wav2712source_assets/image/logo.png2713source_assets/image/icon_regular_72.png2714)271527162717if(HEADLESS)2718set(HeadlessSource2719headless/Headless.cpp2720headless/HeadlessHost.cpp2721headless/HeadlessHost.h2722headless/Compare.cpp2723headless/Compare.h2724headless/SDLHeadlessHost.cpp2725headless/SDLHeadlessHost.h2726)2727if(WIN32)2728list(APPEND HeadlessSource2729headless/WindowsHeadlessHost.cpp2730headless/WindowsHeadlessHost.h2731Windows/GPU/D3D9Context.cpp2732Windows/GPU/D3D9Context.h2733Windows/GPU/D3D11Context.cpp2734Windows/GPU/D3D11Context.h2735Windows/GPU/WindowsGLContext.cpp2736Windows/GPU/WindowsVulkanContext.cpp2737Windows/W32Util/ShellUtil.cpp2738Windows/W32Util/ShellUtil.h2739Windows/CaptureDevice.cpp2740Windows/CaptureDevice.h2741Windows/W32Util/Misc.cpp2742Windows/W32Util/Misc.h2743)2744endif()2745add_executable(PPSSPPHeadless ${HeadlessSource})2746target_link_libraries(PPSSPPHeadless ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY} ${LinkCommon})2747setup_target_project(PPSSPPHeadless headless)2748endif()27492750if(UNITTEST)2751add_executable(PPSSPPUnitTest2752unittest/UnitTest.cpp2753unittest/TestShaderGenerators.cpp2754unittest/TestArmEmitter.cpp2755unittest/TestArm64Emitter.cpp2756unittest/TestIRPassSimplify.cpp2757unittest/TestX64Emitter.cpp2758unittest/TestVertexJit.cpp2759unittest/TestVFS.cpp2760unittest/TestRiscVEmitter.cpp2761unittest/TestSoftwareGPUJit.cpp2762unittest/TestThreadManager.cpp2763unittest/JitHarness.cpp2764Core/MIPS/ARM/ArmRegCache.cpp2765Core/MIPS/ARM/ArmRegCacheFPU.cpp2766)2767target_link_libraries(PPSSPPUnitTest ${COCOA_LIBRARY} ${QUARTZ_CORE_LIBRARY} ${IOKIT_LIBRARY} ${LinkCommon} Common)2768setup_target_project(PPSSPPUnitTest unittest)2769add_test(arm64_emitter PPSSPPUnitTest Arm64Emitter)2770add_test(arm_emitter PPSSPPUnitTest ArmEmitter)2771add_test(x64_emitter PPSSPPUnitTest X64Emitter)2772add_test(vertex_jit PPSSPPUnitTest VertexJit)2773add_test(asin PPSSPPUnitTest Asin)2774add_test(sincos PPSSPPUnitTest SinCos)2775add_test(vfpu_sincos PPSSPPUnitTest VFPUSinCos)2776add_test(math_util PPSSPPUnitTest MathUtil)2777add_test(parsers PPSSPPUnitTest Parsers)2778add_test(jit PPSSPPUnitTest Jit)2779add_test(matrix_transpose PPSSPPUnitTest MatrixTranspose)2780add_test(parse_lbn PPSSPPUnitTest ParseLBN)2781add_test(quick_texhash PPSSPPUnitTest QuickTexHash)2782add_test(clz PPSSPPUnitTest CLZ)2783add_test(shadergen PPSSPPUnitTest ShaderGenerators)2784endif()27852786if(LIBRETRO)2787add_subdirectory(libretro)2788endif()27892790if(TargetBin)2791if(APPLE)2792if(NOT IOS)2793if(GOLD)2794set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp_gold.icns)2795set(MACOSX_BUNDLE_ICON_FILE ppsspp_gold.icns)2796set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP Gold")2797set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppssppgold)2798else()2799set(ICON_PATH_ABS ${CMAKE_CURRENT_SOURCE_DIR}/icons/ppsspp.icns)2800set(MACOSX_BUNDLE_ICON_FILE ppsspp.icns)2801set(MACOSX_BUNDLE_BUNDLE_NAME "PPSSPP")2802set(MACOSX_BUNDLE_GUI_IDENTIFIER org.ppsspp.ppsspp)2803endif()2804set_source_files_properties(${ICON_PATH_ABS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")2805endif()28062807# TODO: there must a native way to copy these.2808# Now this is very prone to errors when changes occur.2809# Also better to have assets under Resources dir for OS X.2810file(GLOB_RECURSE FLASH0_FILES assets/flash0/*)2811file(GLOB_RECURSE LANG_FILES assets/lang/*)2812file(GLOB_RECURSE SHADER_FILES assets/shaders/*)2813file(GLOB_RECURSE THEME_FILE assets/themes/*)2814file(GLOB_RECURSE DEBUGGER_FILES assets/debugger/*)2815file(GLOB_RECURSE VFPU_FILES assets/vfpu/*)28162817if(NOT IOS)2818set_source_files_properties(${BigFontAssets} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets")2819set_source_files_properties(${NativeAssets} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets")2820set_source_files_properties(${FLASH0_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/flash0/font")2821set_source_files_properties(${LANG_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/lang")2822set_source_files_properties(${SHADER_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/shaders")2823set_source_files_properties(${THEME_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/themes")2824set_source_files_properties(${DEBUGGER_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/debugger")2825set_source_files_properties(${VFPU_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/assets/vfpu")2826endif()28272828if(IOS)2829set(AssetCatalog "${CMAKE_SOURCE_DIR}/ios/assets.xcassets")2830add_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")2831if(NOT IOS_APP_STORE)2832file(INSTALL "${CMAKE_SOURCE_DIR}/ext/vulkan/iOS/Frameworks/libMoltenVK.dylib" DESTINATION "${CMAKE_BINARY_DIR}/PPSSPP.app/Frameworks/")2833endif()2834else()2835add_executable(${TargetBin} MACOSX_BUNDLE ${ICON_PATH_ABS} ${NativeAssets} ${BigFontAssets} ${SHADER_FILES} ${THEME_FILE} ${DEBUGGER_FILES} ${FLASH0_FILES} ${LANG_FILES} ${NativeAppSource})2836file(INSTALL "${CMAKE_SOURCE_DIR}/ext/vulkan/macOS/Frameworks/libMoltenVK.dylib" DESTINATION "${CMAKE_BINARY_DIR}/${TargetBin}.app/Contents/Frameworks/")2837if(USING_QT_UI)2838add_custom_command(TARGET ${TargetBin} POST_BUILD COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/Qt/macbundle.sh" "${CMAKE_BINARY_DIR}/PPSSPPQt.app")2839elseif(NOT USE_SYSTEM_LIBSDL2)2840add_custom_command(TARGET ${TargetBin} POST_BUILD COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/SDL/macbundle.sh" "${CMAKE_BINARY_DIR}/${TargetBin}.app" "${TargetBin}")2841endif()2842endif()2843elseif(WIN32)2844add_executable(${TargetBin} WIN32 ${NativeAppSource})2845if(MSVC)2846set_target_properties(${TargetBin} PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")2847else()2848set_target_properties(${TargetBin} PROPERTIES LINK_FLAGS "-Wl,-subsystem,windows")2849endif()2850set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TargetBin})2851else()2852add_executable(${TargetBin} ${NativeAppSource})2853endif()2854target_link_libraries(${TargetBin} ${LinkCommon} Common)2855endif()28562857# installs2858if(NOT ANDROID)2859file(INSTALL ${BigFontAssets} DESTINATION assets)2860file(INSTALL ${NativeAssets} DESTINATION assets)2861file(INSTALL assets/flash0 DESTINATION assets)2862endif()2863# packaging and code signing2864if(IOS AND NOT LIBRETRO)2865if(IOS_APP_STORE)2866set(DEPLOYMENT_TARGET 12.0)2867else()2868set(DEPLOYMENT_TARGET 11.0)2869endif()2870file(GLOB IOSAssets ios/assets/*.png)2871list(REMOVE_ITEM IOSAssets ${CMAKE_CURRENT_SOURCE_DIR}/ios/assets/[email protected])2872list(REMOVE_ITEM IOSAssets ${CMAKE_CURRENT_SOURCE_DIR}/ios/assets/[email protected])2873file(INSTALL ${IOSAssets} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/assets)2874file(GLOB IOSAssets ios/assets/Default-568h@*.png)2875file(INSTALL ${IOSAssets} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})2876if(IOS_DEBUG)2877file(INSTALL pspautotests DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/assets)2878endif()2879set(RSRC_XIB_FILES "Launch Screen.storyboard" ${CMAKE_CURRENT_SOURCE_DIR}/ios/assets.xcassets)28802881set_source_files_properties(${RSRC_XIB_FILES}2882PROPERTIES MACOSX_PACKAGE_LOCATION Resources2883)28842885#This breaks in modern XCode. Not sure when it worked...2886#if(CMAKE_GENERATOR STREQUAL "Xcode")2887# set(APP_DIR_NAME "$(TARGET_BUILD_DIR)/$(FULL_PRODUCT_NAME)")2888#else()2889set(APP_DIR_NAME "$<TARGET_FILE_DIR:PPSSPP>")2890#endif()28912892set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET})2893set(PRODUCT_NAME "PPSSPP")2894set(BUNDLE_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/ios/PPSSPP-Info.plist")2895if(GOLD)2896if(IOS_APP_STORE)2897set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-gold")2898else()2899set(BUNDLE_IDENTIFIER "org.ppsspp.ppssppgold")2900endif()2901set(ICON_NAME "AppIconGold")2902set(DISPLAY_NAME "PPSSPP Gold")2903else()2904if(IOS_APP_STORE)2905set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp-free")2906else()2907set(BUNDLE_IDENTIFIER "org.ppsspp.ppsspp")2908endif()2909set(ICON_NAME "AppIcon")2910set(DISPLAY_NAME "PPSSPP")2911endif()2912if(IOS_APP_STORE)2913message(STATUS "DevTeam: ${DEVELOPMENT_TEAM_ID} Icon: ${ICON_NAME} Target: ${TargetBin}")2914message(STATUS "CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")29152916# This is for injecting the version into the plist, and also copying resources.2917# Should find a different way to do both these things.2918add_custom_command(TARGET ${TargetBin} POST_BUILD2919COMMAND echo "Creating ${APP_DIR_NAME} for app store build"2920COMMAND mkdir -p \"${APP_DIR_NAME}\"2921# This tar command seems to be responsible for copying assets. I thought we had another step that did that..2922# Prepend -v to the extracting command to see the files copied.2923COMMAND tar -c -C ${CMAKE_CURRENT_BINARY_DIR} --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"${APP_DIR_NAME}\"2924# This updates the version in the plist.2925COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/ios/iosbundle.sh" \"${APP_DIR_NAME}\" "${CMAKE_CURRENT_BINARY_DIR}"2926)29272928# Can't figure out properly using .xcframework from CMake, so just linking directly to the .a file.2929target_link_libraries(${TargetBin}2930"${CMAKE_CURRENT_SOURCE_DIR}/ios/MoltenVK/MoltenVK.xcframework/ios-arm64/libMoltenVK.a"2931)29322933# https://stackoverflow.com/questions/40664125/cmake-and-code-signing-in-xcode-8-for-ios-projects2934set_target_properties(${TargetBin} PROPERTIES2935XCODE_GENERATE_SCHEME YES # Avoid the scheme bloat in XCode by only setting it to YES for this target.2936RESOURCE "ios/Launch Screen.storyboard"2937RESOURCE "ios/Settings.bundle"2938RESOURCE "ios/assets.xcassets"2939XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ${BUNDLE_IDENTIFIER}2940XCODE_ATTRIBUTE_PRODUCT_NAME ${PRODUCT_NAME}2941XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME ${ICON_NAME}2942BUILD_WITH_INSTALL_RPATH YES2943MACOSX_BUNDLE_INFO_PLIST ${BUNDLE_PLIST}2944# Some sources say we should generate the PLIST. There's stuff in it that2945# I don't know how to generate, though.2946#XCODE_ATTRIBUTE_GENERATE_INFOPLIST_FILE "YES"2947#XCODE_ATTRIBUTE_INFOPLIST_KEY_UIRequiredDeviceCapabilities arm642948XCODE_ATTRIBUTE_INFOPLIST_KEY_UIFileSharingEnabled YES2949XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY YES2950XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY YES2951XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}2952XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"2953XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES2954XCODE_ATTRIBUTE_ENABLE_BITCODE NO2955XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}2956XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "Apple Development"2957XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic"2958XCODE_ATTRIBUTE_SKIP_INSTALL NO2959XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"2960)2961else()2962# This is for injecting the version into the plist.2963add_custom_command(TARGET PPSSPP POST_BUILD2964COMMAND echo "Creating ${APP_DIR_NAME} for sideload build"2965COMMAND mkdir -p \"${APP_DIR_NAME}\"2966COMMAND tar -c -C ${CMAKE_CURRENT_BINARY_DIR} --exclude .DS_Store --exclude .git assets *.png | tar -x -C \"${APP_DIR_NAME}\"2967COMMAND /bin/bash "${CMAKE_SOURCE_DIR}/ios/macbundle.sh" \"${APP_DIR_NAME}\"2968)2969set_target_properties(${TargetBin} PROPERTIES2970MACOSX_BUNDLE_INFO_PLIST ${BUNDLE_PLIST}2971XCODE_GENERATE_SCHEME YES2972RESOURCE "ios/Launch Screen.storyboard"2973RESOURCE "ios/Settings.bundle"2974RESOURCE "ext/vulkan/iOS/Frameworks"2975XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME ${ICON_NAME}2976XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}2977XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"2978XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES2979XCODE_ATTRIBUTE_ENABLE_BITCODE NO2980XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "-"2981)2982endif()2983add_custom_command(TARGET PPSSPP POST_BUILD2984COMMAND plutil -replace CFBundleDisplayName -string "${DISPLAY_NAME}" "${APP_DIR_NAME}/Info.plist"2985COMMAND plutil -replace CFBundleIdentifier -string "${BUNDLE_IDENTIFIER}" "${APP_DIR_NAME}/Info.plist"2986)2987endif()29882989if(MACOSX AND NOT IOS)2990if(GOLD)2991set_target_properties(${TargetBin} PROPERTIES2992MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/InfoGold.plist"2993)2994else()2995set_target_properties(${TargetBin} PROPERTIES2996MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macOS/Info.plist"2997)2998endif()2999endif()30003001if(UNIX AND NOT ANDROID AND NOT APPLE)3002configure_file(3003"${CMAKE_SOURCE_DIR}/ppsspp.desktop.in"3004"${CMAKE_BINARY_DIR}/ppsspp.desktop"3005@ONLY3006)3007install(3008TARGETS ${TargetBin}3009DESTINATION "${CMAKE_INSTALL_BINDIR}"3010)3011install(3012DIRECTORY "${CMAKE_BINARY_DIR}/assets"3013DESTINATION "${CMAKE_INSTALL_DATADIR}/ppsspp"3014PATTERN ".git*" EXCLUDE3015PATTERN "mime" EXCLUDE3016PATTERN "lang/README.md" EXCLUDE3017)3018install(3019FILES "${CMAKE_BINARY_DIR}/ppsspp.desktop"3020DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"3021RENAME ${TargetBin}.desktop3022)3023install(3024DIRECTORY "${CMAKE_SOURCE_DIR}/icons/hicolor"3025DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons"3026)3027install(3028FILES "${CMAKE_SOURCE_DIR}/icons/icon-512.svg"3029DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps"3030RENAME "ppsspp.svg"3031)3032install(3033FILES "${CMAKE_SOURCE_DIR}/assets/mime/ppsspp.xml"3034DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages"3035)3036endif()303730383039