2087 lines
53 KiB
CMake
2087 lines
53 KiB
CMake
include(macros/GlibCompileResourcesSupport)
|
|
|
|
# All flags, libraries, etc, that are shared between PCSX2 compilation files
|
|
add_library(PCSX2_FLAGS INTERFACE)
|
|
|
|
if (NOT PCSX2_CORE)
|
|
add_executable(PCSX2)
|
|
else()
|
|
if(DISABLE_ADVANCE_SIMD OR LTO_PCSX2_CORE)
|
|
# Fixes issues with some compiler + linker combinations
|
|
add_library(PCSX2 OBJECT)
|
|
else()
|
|
add_library(PCSX2)
|
|
endif()
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE
|
|
"PCSX2_CORE"
|
|
)
|
|
endif()
|
|
target_link_libraries(PCSX2 PRIVATE PCSX2_FLAGS)
|
|
|
|
target_compile_features(PCSX2_FLAGS INTERFACE cxx_std_17)
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE "${PCSX2_DEFS}")
|
|
target_compile_options(PCSX2_FLAGS INTERFACE "${PCSX2_WARNINGS}")
|
|
|
|
if (NOT PCSX2_CORE)
|
|
if (PACKAGE_MODE)
|
|
install(TARGETS PCSX2 DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
else()
|
|
install(TARGETS PCSX2 DESTINATION ${CMAKE_SOURCE_DIR}/bin)
|
|
endif()
|
|
endif()
|
|
|
|
if (openSUSE)
|
|
# openSUSE don't install wx in a standard library system
|
|
# path. Let's bypass the dynamic linker and hardcode the path.
|
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON)
|
|
endif()
|
|
|
|
# Check that people use the good file
|
|
if(NOT TOP_CMAKE_WAS_SOURCED)
|
|
message(FATAL_ERROR "
|
|
You did not 'cmake' the good CMakeLists.txt file. Use the one in the top dir.
|
|
It is advice to delete all wrongly generated cmake stuff => CMakeFiles & CMakeCache.txt")
|
|
endif()
|
|
|
|
if(MSVC)
|
|
if (MSVC_VERSION GREATER_EQUAL 1930)
|
|
target_compile_options(PCSX2_FLAGS INTERFACE /fp:contract)
|
|
endif()
|
|
target_compile_options(PCSX2_FLAGS INTERFACE /GS-)
|
|
else()
|
|
target_compile_options(PCSX2_FLAGS INTERFACE
|
|
-ffp-contract=fast
|
|
-fno-strict-aliasing
|
|
-Wstrict-aliasing # Allow to track strict aliasing issue.
|
|
-Wno-parentheses
|
|
-Wno-missing-braces
|
|
-Wno-unknown-pragmas
|
|
-DWX_PRECOMP
|
|
)
|
|
endif()
|
|
|
|
if(GCC_VERSION VERSION_EQUAL "8.0" OR GCC_VERSION VERSION_GREATER "8.0")
|
|
# gs is pretty bad at this
|
|
target_compile_options(PCSX2_FLAGS INTERFACE -Wno-packed-not-aligned -Wno-class-memaccess)
|
|
endif()
|
|
|
|
if ("${PGO}" STREQUAL "generate")
|
|
target_compile_options(PCSX2_FLAGS INTERFACE -fprofile-generate)
|
|
elseif("${PGO}" STREQUAL "use")
|
|
target_compile_options(PCSX2_FLAGS INTERFACE -fprofile-use)
|
|
endif()
|
|
|
|
if(XDG_STD)
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE XDG_STD)
|
|
endif()
|
|
|
|
if(TARGET SDL2::SDL2 OR TARGET SDL2::SDL2-static)
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE SDL_BUILD)
|
|
if ("${SDL2_TYPE}" STREQUAL Bundled)
|
|
# Use our in-tree SDL build.
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE SDL2::SDL2-static)
|
|
else()
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE SDL2::SDL2)
|
|
endif()
|
|
if(PCSX2_CORE)
|
|
target_sources(PCSX2 PRIVATE
|
|
Frontend/SDLInputSource.cpp
|
|
Frontend/SDLInputSource.h
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
find_package(LibUSB REQUIRED)
|
|
include_directories(PCSX2_FLAGS INTERFACE ${LibUSB_INCLUDE_DIRS})
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE ${LibUSB_LIBRARIES})
|
|
|
|
if(WIN32)
|
|
if(PCSX2_CORE)
|
|
set(MIN_WIN32 0x0A00)
|
|
else()
|
|
set(MIN_WIN32 0x0603)
|
|
endif()
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE
|
|
__SSE4_1__
|
|
DIRECTINPUT_VERSION=0x0800
|
|
WINVER=${MIN_WIN32}
|
|
_WIN32_WINNT=${MIN_WIN32}
|
|
WIN32_LEAN_AND_MEAN
|
|
LZMA_API_STATIC
|
|
WIL_SUPPRESS_EXCEPTIONS
|
|
)
|
|
target_include_directories(PCSX2_FLAGS INTERFACE
|
|
../3rdparty # GL headers
|
|
)
|
|
endif(WIN32)
|
|
|
|
# Main pcsx2 source
|
|
set(pcsx2Sources
|
|
Cache.cpp
|
|
COP0.cpp
|
|
COP2.cpp
|
|
Counters.cpp
|
|
Dmac.cpp
|
|
GameDatabase.cpp
|
|
Dump.cpp
|
|
Elfheader.cpp
|
|
FW.cpp
|
|
FiFo.cpp
|
|
FPU.cpp
|
|
Gif.cpp
|
|
Gif_Logger.cpp
|
|
Gif_Unit.cpp
|
|
GS.cpp
|
|
Host.cpp
|
|
HostDisplay.cpp
|
|
Hw.cpp
|
|
HwRead.cpp
|
|
HwWrite.cpp
|
|
Interpreter.cpp
|
|
IopBios.cpp
|
|
IopCounters.cpp
|
|
IopDma.cpp
|
|
IopGte.cpp
|
|
IopHw.cpp
|
|
IopIrq.cpp
|
|
IopMem.cpp
|
|
PINE.cpp
|
|
Mdec.cpp
|
|
Memory.cpp
|
|
MemoryCardFile.cpp
|
|
MemoryCardFolder.cpp
|
|
MemoryCardProtocol.cpp
|
|
MMI.cpp
|
|
MTGS.cpp
|
|
MTVU.cpp
|
|
MultipartFileReader.cpp
|
|
MultitapProtocol.cpp
|
|
Patch.cpp
|
|
Patch_Memory.cpp
|
|
Pcsx2Config.cpp
|
|
PerformanceMetrics.cpp
|
|
PrecompiledHeader.cpp
|
|
R3000A.cpp
|
|
R3000AInterpreter.cpp
|
|
R3000AOpcodeTables.cpp
|
|
R5900.cpp
|
|
R5900OpcodeImpl.cpp
|
|
R5900OpcodeTables.cpp
|
|
SaveState.cpp
|
|
ShiftJisToUnicode.cpp
|
|
Sif.cpp
|
|
Sif0.cpp
|
|
Sif1.cpp
|
|
sif2.cpp
|
|
Sio.cpp
|
|
SourceLog.cpp
|
|
SPR.cpp
|
|
System.cpp
|
|
Vif0_Dma.cpp
|
|
Vif1_Dma.cpp
|
|
Vif1_MFIFO.cpp
|
|
Vif.cpp
|
|
Vif_Codes.cpp
|
|
Vif_Transfer.cpp
|
|
Vif_Unpack.cpp
|
|
vtlb.cpp
|
|
VU0.cpp
|
|
VUmicro.cpp
|
|
VU0micro.cpp
|
|
VU0microInterp.cpp
|
|
VU1micro.cpp
|
|
VU1microInterp.cpp
|
|
VUflags.cpp
|
|
VUmicroMem.cpp
|
|
VUops.cpp)
|
|
|
|
# Main pcsx2 header
|
|
set(pcsx2Headers
|
|
Achievements.h
|
|
AsyncFileReader.h
|
|
Cache.h
|
|
Common.h
|
|
Config.h
|
|
COP0.h
|
|
Counters.h
|
|
Dmac.h
|
|
Dump.h
|
|
GameDatabase.h
|
|
Elfheader.h
|
|
FW.h
|
|
Gif.h
|
|
Gif_Unit.h
|
|
GS.h
|
|
Hardware.h
|
|
Host.h
|
|
HostDisplay.h
|
|
Hw.h
|
|
IopBios.h
|
|
IopCounters.h
|
|
IopDma.h
|
|
IopGte.h
|
|
IopHw.h
|
|
IopMem.h
|
|
PINE.h
|
|
Mdec.h
|
|
MTVU.h
|
|
Memory.h
|
|
MemoryCardFile.h
|
|
MemoryCardFolder.h
|
|
MemoryCardProtocol.h
|
|
MemoryTypes.h
|
|
MultitapProtocol.h
|
|
Patch.h
|
|
PCSX2Base.h
|
|
PerformanceMetrics.h
|
|
PrecompiledHeader.h
|
|
R3000A.h
|
|
R5900Exceptions.h
|
|
R5900.h
|
|
R5900OpcodeTables.h
|
|
SaveState.h
|
|
ShaderCacheVersion.h
|
|
Sifcmd.h
|
|
Sif.h
|
|
SingleRegisterTypes.h
|
|
Sio.h
|
|
SPR.h
|
|
SysForwardDefs.h
|
|
System.h
|
|
Vif_Dma.h
|
|
Vif.h
|
|
Vif_Unpack.h
|
|
vtlb.h
|
|
VUflags.h
|
|
VUmicro.h
|
|
VUops.h)
|
|
|
|
# CDVD sources
|
|
set(pcsx2CDVDSources
|
|
CDVD/BlockdumpFileReader.cpp
|
|
CDVD/Ps1CD.cpp
|
|
CDVD/CDVDcommon.cpp
|
|
CDVD/CDVD.cpp
|
|
CDVD/CDVDdiscReader.cpp
|
|
CDVD/CDVDisoReader.cpp
|
|
CDVD/CDVDdiscThread.cpp
|
|
CDVD/InputIsoFile.cpp
|
|
CDVD/OutputIsoFile.cpp
|
|
CDVD/ChunksCache.cpp
|
|
CDVD/CompressedFileReader.cpp
|
|
CDVD/ChdFileReader.cpp
|
|
CDVD/CsoFileReader.cpp
|
|
CDVD/GzippedFileReader.cpp
|
|
CDVD/ThreadedFileReader.cpp
|
|
CDVD/IsoFS/IsoFile.cpp
|
|
CDVD/IsoFS/IsoFSCDVD.cpp
|
|
CDVD/IsoFS/IsoFS.cpp
|
|
)
|
|
|
|
# CDVD headers
|
|
set(pcsx2CDVDHeaders
|
|
CDVD/Ps1CD.h
|
|
CDVD/CDVDcommon.h
|
|
CDVD/CDVD.h
|
|
CDVD/CDVD_internal.h
|
|
CDVD/CDVDdiscReader.h
|
|
CDVD/ChunksCache.h
|
|
CDVD/CompressedFileReader.h
|
|
CDVD/ChdFileReader.h
|
|
CDVD/CsoFileReader.h
|
|
CDVD/GzippedFileReader.h
|
|
CDVD/ThreadedFileReader.h
|
|
CDVD/IsoFileFormats.h
|
|
CDVD/IsoFS/IsoDirectory.h
|
|
CDVD/IsoFS/IsoFileDescriptor.h
|
|
CDVD/IsoFS/IsoFile.h
|
|
CDVD/IsoFS/IsoFSCDVD.h
|
|
CDVD/IsoFS/IsoFS.h
|
|
CDVD/IsoFS/SectorSource.h
|
|
CDVD/zlib_indexed.h
|
|
)
|
|
|
|
# SPU2 sources
|
|
set(pcsx2SPU2Sources
|
|
SPU2/ADSR.cpp
|
|
SPU2/Debug.cpp
|
|
SPU2/DplIIdecoder.cpp
|
|
SPU2/Dma.cpp
|
|
SPU2/Mixer.cpp
|
|
SPU2/spu2.cpp
|
|
SPU2/ReadInput.cpp
|
|
SPU2/RegLog.cpp
|
|
SPU2/RegTable.cpp
|
|
SPU2/Reverb.cpp
|
|
SPU2/SndOut.cpp
|
|
SPU2/spu2freeze.cpp
|
|
SPU2/spu2sys.cpp
|
|
SPU2/Timestretcher.cpp
|
|
SPU2/Wavedump_wav.cpp
|
|
)
|
|
|
|
if(CUBEB_API)
|
|
list(APPEND pcsx2SPU2Sources SPU2/SndOut_Cubeb.cpp)
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE "SPU2X_CUBEB")
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE cubeb)
|
|
endif()
|
|
|
|
# SPU2 headers
|
|
set(pcsx2SPU2Headers
|
|
SPU2/Config.h
|
|
SPU2/Debug.h
|
|
SPU2/defs.h
|
|
SPU2/Dma.h
|
|
SPU2/Global.h
|
|
SPU2/interpolate_table.h
|
|
SPU2/Mixer.h
|
|
SPU2/spu2.h
|
|
SPU2/regs.h
|
|
SPU2/SndOut.h
|
|
SPU2/spdif.h
|
|
SPU2/WavFile.h
|
|
)
|
|
|
|
# DEV9 sources
|
|
set(pcsx2DEV9Sources
|
|
DEV9/AdapterUtils.cpp
|
|
DEV9/ATA/Commands/ATA_Command.cpp
|
|
DEV9/ATA/Commands/ATA_CmdDMA.cpp
|
|
DEV9/ATA/Commands/ATA_CmdExecuteDeviceDiag.cpp
|
|
DEV9/ATA/Commands/ATA_CmdNoData.cpp
|
|
DEV9/ATA/Commands/ATA_CmdPIOData.cpp
|
|
DEV9/ATA/Commands/ATA_CmdSMART.cpp
|
|
DEV9/ATA/Commands/ATA_SCE.cpp
|
|
DEV9/ATA/ATA_Info.cpp
|
|
DEV9/ATA/ATA_State.cpp
|
|
DEV9/ATA/ATA_Transfer.cpp
|
|
DEV9/ATA/HddCreate.cpp
|
|
DEV9/InternalServers/DHCP_Server.cpp
|
|
DEV9/InternalServers/DNS_Logger.cpp
|
|
DEV9/InternalServers/DNS_Server.cpp
|
|
DEV9/PacketReader/ARP/ARP_Packet.cpp
|
|
DEV9/PacketReader/IP/ICMP/ICMP_Packet.cpp
|
|
DEV9/PacketReader/IP/TCP/TCP_Options.cpp
|
|
DEV9/PacketReader/IP/TCP/TCP_Packet.cpp
|
|
DEV9/PacketReader/IP/UDP/DHCP/DHCP_Options.cpp
|
|
DEV9/PacketReader/IP/UDP/DHCP/DHCP_Packet.cpp
|
|
DEV9/PacketReader/IP/UDP/DNS/DNS_Classes.cpp
|
|
DEV9/PacketReader/IP/UDP/DNS/DNS_Packet.cpp
|
|
DEV9/PacketReader/IP/UDP/UDP_Packet.cpp
|
|
DEV9/PacketReader/IP/IP_Options.cpp
|
|
DEV9/PacketReader/IP/IP_Packet.cpp
|
|
DEV9/PacketReader/EthernetFrame.cpp
|
|
DEV9/PacketReader/NetLib.cpp
|
|
DEV9/Sessions/BaseSession.cpp
|
|
DEV9/Sessions/ICMP_Session/ICMP_Session.cpp
|
|
DEV9/Sessions/TCP_Session/TCP_Session.cpp
|
|
DEV9/Sessions/TCP_Session/TCP_Session_In.cpp
|
|
DEV9/Sessions/TCP_Session/TCP_Session_Out.cpp
|
|
DEV9/Sessions/UDP_Session/UDP_FixedPort.cpp
|
|
DEV9/Sessions/UDP_Session/UDP_Session.cpp
|
|
DEV9/smap.cpp
|
|
DEV9/sockets.cpp
|
|
DEV9/DEV9.cpp
|
|
DEV9/flash.cpp
|
|
DEV9/pcap_io.cpp
|
|
DEV9/net.cpp
|
|
)
|
|
|
|
# DEV9 headers
|
|
set(pcsx2DEV9Headers
|
|
DEV9/AdapterUtils.h
|
|
DEV9/ATA/ATA.h
|
|
DEV9/ATA/HddCreate.h
|
|
DEV9/DEV9.h
|
|
DEV9/InternalServers/DHCP_Server.cpp
|
|
DEV9/InternalServers/DNS_Logger.h
|
|
DEV9/InternalServers/DNS_Server.h
|
|
DEV9/net.h
|
|
DEV9/PacketReader/ARP/ARP_Packet.h
|
|
DEV9/PacketReader/IP/ICMP/ICMP_Packet.h
|
|
DEV9/PacketReader/IP/TCP/TCP_Options.h
|
|
DEV9/PacketReader/IP/TCP/TCP_Packet.h
|
|
DEV9/PacketReader/IP/UDP/DHCP/DHCP_Options.h
|
|
DEV9/PacketReader/IP/UDP/DHCP/DHCP_Packet.h
|
|
DEV9/PacketReader/IP/UDP/DNS/DNS_Classes.h
|
|
DEV9/PacketReader/IP/UDP/DNS/DNS_Enums.h
|
|
DEV9/PacketReader/IP/UDP/DNS/DNS_Packet.h
|
|
DEV9/PacketReader/IP/UDP/UDP_Packet.h
|
|
DEV9/PacketReader/IP/IP_Address.h
|
|
DEV9/PacketReader/IP/IP_Options.h
|
|
DEV9/PacketReader/IP/IP_Packet.h
|
|
DEV9/PacketReader/IP/IP_Payload.h
|
|
DEV9/PacketReader/EthernetFrame.h
|
|
DEV9/PacketReader/NetLib.h
|
|
DEV9/PacketReader/Payload.h
|
|
DEV9/pcap_io.h
|
|
DEV9/Sessions/BaseSession.h
|
|
DEV9/Sessions/ICMP_Session/ICMP_Session.h
|
|
DEV9/Sessions/TCP_Session/TCP_Session.h
|
|
DEV9/Sessions/UDP_Session/UDP_FixedPort.h
|
|
DEV9/Sessions/UDP_Session/UDP_BaseSession.h
|
|
DEV9/Sessions/UDP_Session/UDP_Session.h
|
|
DEV9/SimpleQueue.h
|
|
DEV9/smap.h
|
|
DEV9/sockets.h
|
|
DEV9/ThreadSafeMap.h
|
|
)
|
|
|
|
if(NOT PCSX2_CORE)
|
|
list(APPEND pcsx2DEV9Sources
|
|
DEV9/ConfigUI.cpp
|
|
DEV9/DEV9Config.cpp
|
|
DEV9/ATA/HddCreateWx.cpp
|
|
)
|
|
list(APPEND pcsx2DEV9Sources
|
|
DEV9/DEV9Config.h
|
|
DEV9/ATA/HddCreateWx.h
|
|
)
|
|
endif()
|
|
|
|
# USBNull
|
|
set(pcsx2USBNullSources USB/USBNull.cpp)
|
|
set(pcsx2USBNullHeaders USB/USB.h)
|
|
|
|
# USB sources
|
|
set(pcsx2USBSources
|
|
USB/USB.cpp
|
|
USB/deviceproxy.cpp
|
|
USB/configuration.cpp
|
|
USB/device_init.cpp
|
|
USB/qemu-usb/glib.cpp
|
|
USB/qemu-usb/vl.cpp
|
|
USB/qemu-usb/iov.cpp
|
|
USB/qemu-usb/desc.cpp
|
|
USB/qemu-usb/core.cpp
|
|
USB/qemu-usb/bus.cpp
|
|
USB/qemu-usb/usb-ohci.cpp
|
|
USB/qemu-usb/hid.cpp
|
|
USB/qemu-usb/input-keymap-qcode-to-qnum.cpp
|
|
USB/usb-msd/usb-msd.cpp
|
|
USB/usb-pad/usb-pad.cpp
|
|
USB/usb-pad/usb-pad-ff.cpp
|
|
USB/usb-pad/lg/lg_ff.cpp
|
|
USB/usb-pad/usb-seamic.cpp
|
|
USB/usb-mic/usb-mic-singstar.cpp
|
|
USB/usb-mic/usb-mic-logitech.cpp
|
|
USB/usb-mic/usb-headset.cpp
|
|
USB/usb-eyetoy/jo_mpeg.cpp
|
|
USB/usb-eyetoy/usb-eyetoy-webcam.cpp
|
|
USB/usb-hid/usb-hid.cpp
|
|
USB/shared/shared_usb.cpp
|
|
USB/shared/inifile_usb.cpp
|
|
USB/shared/ringbuffer.cpp
|
|
USB/usb-python2/usb-python2.cpp
|
|
USB/usb-python2/devices/acio.cpp
|
|
USB/usb-python2/devices/ddr_extio.cpp
|
|
USB/usb-python2/devices/icca.cpp
|
|
USB/usb-python2/devices/thrilldrive_belt.cpp
|
|
USB/usb-python2/devices/thrilldrive_handle.cpp
|
|
USB/usb-python2/devices/toysmarch_drumpad.cpp
|
|
USB/usb-python2/inputs/passthrough/python2-config-passthrough.cpp
|
|
USB/usb-python2/inputs/passthrough/usb-python2-passthrough.cpp
|
|
USB/usb-python2/patches.cpp
|
|
USB/usb-python2/api_init_linux.cpp
|
|
USB/usb-printer/usb-printer.cpp
|
|
)
|
|
|
|
set(pcsx2USBSourcesQt
|
|
USB/USB.cpp
|
|
USB/deviceproxy.cpp
|
|
USB/device_init.cpp
|
|
USB/qemu-usb/glib.cpp
|
|
USB/qemu-usb/vl.cpp
|
|
USB/qemu-usb/iov.cpp
|
|
USB/qemu-usb/desc.cpp
|
|
USB/qemu-usb/core.cpp
|
|
USB/qemu-usb/bus.cpp
|
|
USB/qemu-usb/usb-ohci.cpp
|
|
USB/qemu-usb/hid.cpp
|
|
USB/qemu-usb/input-keymap-qcode-to-qnum.cpp
|
|
USB/usb-hid/usb-hid.cpp
|
|
USB/shared/shared_usb.cpp
|
|
USB/shared/inifile_usb.cpp
|
|
USB/shared/ringbuffer.cpp
|
|
USB/usb-python2/usb-python2.cpp
|
|
USB/usb-python2/devices/acio.cpp
|
|
USB/usb-python2/devices/ddr_extio.cpp
|
|
USB/usb-python2/devices/icca.cpp
|
|
USB/usb-python2/devices/thrilldrive_belt.cpp
|
|
USB/usb-python2/devices/thrilldrive_handle.cpp
|
|
USB/usb-python2/devices/toysmarch_drumpad.cpp
|
|
USB/usb-python2/inputs/Python2QtInputManager.cpp
|
|
USB/usb-python2/inputs/passthrough/usb-python2-passthrough.cpp
|
|
USB/usb-python2/inputs/native/usb-python2-native.cpp
|
|
USB/usb-python2/patches.cpp
|
|
USB/usb-python2/api_init_linux.cpp
|
|
)
|
|
|
|
# USB headers
|
|
set(pcsx2USBHeaders
|
|
USB/USB.h
|
|
USB/proxybase.h
|
|
USB/deviceproxy.h
|
|
USB/configuration.h
|
|
USB/platcompat.h
|
|
USB/helpers.h
|
|
USB/readerwriterqueue/readerwriterqueue.h
|
|
USB/readerwriterqueue/atomicops.h
|
|
USB/qemu-usb/glib.h
|
|
USB/qemu-usb/vl.h
|
|
USB/qemu-usb/qusb.h
|
|
USB/qemu-usb/USBinternal.h
|
|
USB/qemu-usb/desc.h
|
|
USB/qemu-usb/iov.h
|
|
USB/qemu-usb/queue.h
|
|
USB/qemu-usb/hid.h
|
|
USB/qemu-usb/input-keymap.h
|
|
USB/usb-msd/usb-msd.h
|
|
USB/usb-pad/usb-pad.h
|
|
USB/usb-pad/padproxy.h
|
|
USB/usb-pad/lg/lg_ff.h
|
|
USB/usb-mic/audio.h
|
|
USB/usb-mic/audiodev.h
|
|
USB/usb-mic/audiodeviceproxy.h
|
|
USB/usb-mic/usb-mic-singstar.h
|
|
USB/usb-mic/usb-headset.h
|
|
USB/usb-mic/audiodev-noop.h
|
|
../3rdparty/jpgd/jpgd.h
|
|
../3rdparty/jpgd/jpge.h
|
|
USB/usb-eyetoy/jo_mpeg.h
|
|
USB/usb-eyetoy/videodeviceproxy.h
|
|
USB/usb-eyetoy/videodev.h
|
|
USB/usb-eyetoy/usb-eyetoy-webcam.h
|
|
USB/usb-eyetoy/ov519.h
|
|
USB/usb-hid/hidproxy.h
|
|
USB/usb-hid/usb-hid.h
|
|
USB/usb-hid/noop.h
|
|
USB/shared/shared_usb.h
|
|
USB/shared/inifile_usb.h
|
|
USB/shared/ringbuffer.h
|
|
USB/usb-python2/noop.h
|
|
USB/usb-python2/devices/acio.h
|
|
USB/usb-python2/devices/ddr_extio.h
|
|
USB/usb-python2/devices/icca.h
|
|
USB/usb-python2/devices/input_device.h
|
|
USB/usb-python2/devices/thrilldrive_belt.h
|
|
USB/usb-python2/devices/thrilldrive_handle.h
|
|
USB/usb-python2/devices/toysmarch_drumpad.h
|
|
USB/usb-python2/inputs/passthrough/usb-python2-passthrough.h
|
|
USB/usb-python2/patches.h
|
|
USB/usb-printer/usb-printer.h
|
|
)
|
|
|
|
set(pcsx2USBHeadersQt
|
|
USB/USB.h
|
|
USB/proxybase.h
|
|
USB/deviceproxy.h
|
|
USB/platcompat.h
|
|
USB/helpers.h
|
|
USB/readerwriterqueue/readerwriterqueue.h
|
|
USB/readerwriterqueue/atomicops.h
|
|
USB/qemu-usb/glib.h
|
|
USB/qemu-usb/vl.h
|
|
USB/qemu-usb/qusb.h
|
|
USB/qemu-usb/USBinternal.h
|
|
USB/qemu-usb/desc.h
|
|
USB/qemu-usb/iov.h
|
|
USB/qemu-usb/queue.h
|
|
USB/qemu-usb/hid.h
|
|
USB/qemu-usb/input-keymap.h
|
|
USB/usb-hid/hidproxy.h
|
|
USB/usb-hid/usb-hid.h
|
|
USB/usb-hid/noop.h
|
|
USB/shared/shared_usb.h
|
|
USB/shared/inifile_usb.h
|
|
USB/shared/ringbuffer.h
|
|
USB/usb-python2/noop.h
|
|
USB/usb-python2/devices/acio.h
|
|
USB/usb-python2/devices/ddr_extio.h
|
|
USB/usb-python2/devices/icca.h
|
|
USB/usb-python2/devices/input_device.h
|
|
USB/usb-python2/devices/thrilldrive_belt.h
|
|
USB/usb-python2/devices/thrilldrive_handle.h
|
|
USB/usb-python2/devices/toysmarch_drumpad.h
|
|
USB/usb-python2/inputs/Python2QtInputManager.h
|
|
USB/usb-python2/inputs/passthrough/usb-python2-passthrough.h
|
|
USB/usb-python2/inputs/native/usb-python2-native.h
|
|
USB/usb-python2/patches.h
|
|
)
|
|
|
|
if(TARGET PulseAudio::PulseAudio)
|
|
list(APPEND pcsx2USBSources USB/usb-mic/audiodev-pulse.cpp)
|
|
list(APPEND pcsx2USBHeaders USB/usb-mic/audiodev-pulse.h)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE PulseAudio::PulseAudio)
|
|
endif()
|
|
|
|
if(PCSX2_CORE)
|
|
# Host PAD
|
|
set(pcsx2PADSources
|
|
PAD/Host/KeyStatus.cpp
|
|
PAD/Host/PAD.cpp
|
|
PAD/Host/StateManagement.cpp
|
|
)
|
|
set(pcsx2PADHeaders
|
|
PAD/Host/Global.h
|
|
PAD/Host/KeyStatus.h
|
|
PAD/Host/PAD.h
|
|
PAD/Host/StateManagement.h
|
|
)
|
|
elseif(WIN32)
|
|
set(pcsx2PADSources
|
|
PAD/Windows/PADConfig.cpp
|
|
PAD/Windows/DeviceEnumerator.cpp
|
|
PAD/Windows/Diagnostics.cpp
|
|
PAD/Windows/DirectInput.cpp
|
|
PAD/Windows/DualShock3.cpp
|
|
PAD/Windows/HidDevice.cpp
|
|
PAD/Windows/InputManager.cpp
|
|
PAD/Windows/KeyboardQueue.cpp
|
|
PAD/Windows/PAD.cpp
|
|
PAD/Windows/PADRawInput.cpp
|
|
PAD/Windows/Tooltips.cpp
|
|
PAD/Windows/VKey.cpp
|
|
PAD/Windows/WindowsKeyboard.cpp
|
|
PAD/Windows/WindowsMessaging.cpp
|
|
PAD/Windows/WindowsMouse.cpp
|
|
PAD/Windows/WndProcEater.cpp
|
|
PAD/Windows/XInputEnum.cpp
|
|
)
|
|
|
|
set(pcsx2PADHeaders
|
|
PAD/Gamepad.h
|
|
PAD/Windows/PADConfig.h
|
|
PAD/Windows/DeviceEnumerator.h
|
|
PAD/Windows/Diagnostics.h
|
|
PAD/Windows/DirectInput.h
|
|
PAD/Windows/DualShock3.h
|
|
PAD/Windows/Global.h
|
|
PAD/Windows/HidDevice.h
|
|
PAD/Windows/InputManager.h
|
|
PAD/Windows/KeyboardQueue.h
|
|
PAD/Windows/PADRawInput.h
|
|
PAD/Windows/resource_pad.h
|
|
PAD/Windows/Tooltips.h
|
|
PAD/Windows/usb.h
|
|
PAD/Windows/VKey.h
|
|
PAD/Windows/WindowsKeyboard.h
|
|
PAD/Windows/WindowsMessaging.h
|
|
PAD/Windows/WindowsMouse.h
|
|
PAD/Windows/WndProcEater.h
|
|
PAD/Windows/XInputEnum.h
|
|
)
|
|
else()
|
|
# PAD resources pre-compilation
|
|
set(PADImgHeader "${CMAKE_BINARY_DIR}/pcsx2/PAD/Linux/ImgHeader")
|
|
set(PADImg "${CMAKE_SOURCE_DIR}/pcsx2/PAD/Linux/Img")
|
|
target_include_directories(PCSX2_FLAGS INTERFACE "${CMAKE_BINARY_DIR}/pcsx2/PAD/Linux/")
|
|
|
|
file(MAKE_DIRECTORY ${PADImgHeader})
|
|
|
|
foreach(result_file IN ITEMS
|
|
analog circle cross dp_bottom dp_left dp_right dp_up dualshock2
|
|
joystick_cursor l1 r1 l2 r2 l3 r3 select square start triangle arrow_up
|
|
arrow_bottom arrow_left arrow_right)
|
|
add_custom_command(
|
|
OUTPUT "${PADImgHeader}/${result_file}.h"
|
|
DEPENDS ${BIN2CPPDEP} "${PADImg}/${result_file}.png"
|
|
COMMAND ${BIN2CPP} "${PADImg}/${result_file}.png" "${PADImgHeader}/${result_file}" )
|
|
endforeach()
|
|
|
|
# PAD/Linux sources
|
|
set(pcsx2PADSources
|
|
PAD/Linux/Device.cpp
|
|
PAD/Linux/InputManager.cpp
|
|
PAD/Linux/SDL/joystick.cpp
|
|
PAD/Linux/keyboard.cpp
|
|
PAD/Linux/KeyStatus.cpp
|
|
PAD/Linux/PAD.cpp
|
|
PAD/Linux/state_management.cpp
|
|
PAD/Linux/wx_dialog/dialog.cpp
|
|
PAD/Linux/wx_dialog/opPanel.cpp
|
|
PAD/Linux/wx_dialog/GamepadConfiguration.cpp
|
|
PAD/Linux/wx_dialog/JoystickConfiguration.cpp
|
|
PAD/Linux/Config.cpp
|
|
)
|
|
|
|
# PAD/Linux headers
|
|
set(pcsx2PADHeaders
|
|
PAD/Gamepad.h
|
|
PAD/Linux/bitwise.h
|
|
PAD/Linux/Config.h
|
|
PAD/Linux/Device.h
|
|
PAD/Linux/Global.h
|
|
PAD/Linux/InputManager.h
|
|
PAD/Linux/SDL/joystick.h
|
|
PAD/Linux/keyboard.h
|
|
PAD/Linux/KeyStatus.h
|
|
PAD/Linux/state_management.h
|
|
PAD/Linux/wx_dialog/opPanel.h
|
|
PAD/Linux/wx_dialog/GamepadConfiguration.h
|
|
PAD/Linux/wx_dialog/JoystickConfiguration.h
|
|
# images
|
|
${PADImgHeader}/analog.h
|
|
${PADImgHeader}/circle.h
|
|
${PADImgHeader}/cross.h
|
|
${PADImgHeader}/dp_bottom.h
|
|
${PADImgHeader}/dp_left.h
|
|
${PADImgHeader}/dp_right.h
|
|
${PADImgHeader}/dp_up.h
|
|
${PADImgHeader}/dualshock2.h
|
|
${PADImgHeader}/joystick_cursor.h
|
|
${PADImgHeader}/l1.h
|
|
${PADImgHeader}/r1.h
|
|
${PADImgHeader}/l2.h
|
|
${PADImgHeader}/r2.h
|
|
${PADImgHeader}/l3.h
|
|
${PADImgHeader}/r3.h
|
|
${PADImgHeader}/select.h
|
|
${PADImgHeader}/square.h
|
|
${PADImgHeader}/start.h
|
|
${PADImgHeader}/triangle.h
|
|
${PADImgHeader}/arrow_up.h
|
|
${PADImgHeader}/arrow_bottom.h
|
|
${PADImgHeader}/arrow_left.h
|
|
${PADImgHeader}/arrow_right.h
|
|
)
|
|
endif()
|
|
|
|
# GS sources
|
|
set(pcsx2GSSourcesUnshared
|
|
GS/GSBlock.cpp
|
|
GS/GSLocalMemoryMultiISA.cpp
|
|
GS/GSXXH.cpp
|
|
GS/Renderers/Common/GSVertexTraceFMM.cpp
|
|
GS/Renderers/HW/GSRendererHWMultiISA.cpp
|
|
GS/Renderers/SW/GSDrawScanline.cpp
|
|
GS/Renderers/SW/GSDrawScanlineCodeGenerator.cpp
|
|
GS/Renderers/SW/GSDrawScanlineCodeGenerator.all.cpp
|
|
GS/Renderers/SW/GSRasterizer.cpp
|
|
GS/Renderers/SW/GSRendererSW.cpp
|
|
GS/Renderers/SW/GSSetupPrimCodeGenerator.cpp
|
|
GS/Renderers/SW/GSSetupPrimCodeGenerator.all.cpp
|
|
)
|
|
|
|
set(pcsx2GSSources
|
|
GS/GS.cpp
|
|
GS/GSAlignedClass.cpp
|
|
GS/GSCapture.cpp
|
|
GS/GSClut.cpp
|
|
GS/GSCodeBuffer.cpp
|
|
GS/GSCrc.cpp
|
|
GS/GSDrawingContext.cpp
|
|
GS/GSDump.cpp
|
|
GS/GSLocalMemory.cpp
|
|
GS/GSLzma.cpp
|
|
GS/GSPerfMon.cpp
|
|
GS/GSPng.cpp
|
|
GS/GSRingHeap.cpp
|
|
GS/GSState.cpp
|
|
GS/GSTables.cpp
|
|
GS/GSUtil.cpp
|
|
GS/GSVector.cpp
|
|
GS/MultiISA.cpp
|
|
GS/Renderers/Common/GSDevice.cpp
|
|
GS/Renderers/Common/GSDirtyRect.cpp
|
|
GS/Renderers/Common/GSFunctionMap.cpp
|
|
GS/Renderers/Common/GSRenderer.cpp
|
|
GS/Renderers/Common/GSTexture.cpp
|
|
GS/Renderers/Common/GSVertexTrace.cpp
|
|
GS/Renderers/Null/GSDeviceNull.cpp
|
|
GS/Renderers/Null/GSRendererNull.cpp
|
|
GS/Renderers/Null/GSTextureNull.cpp
|
|
GS/Renderers/HW/GSHwHack.cpp
|
|
GS/Renderers/HW/GSRendererHW.cpp
|
|
GS/Renderers/HW/GSTextureCache.cpp
|
|
GS/Renderers/HW/GSTextureReplacementLoaders.cpp
|
|
GS/Renderers/HW/GSTextureReplacements.cpp
|
|
GS/Renderers/SW/GSNewCodeGenerator.cpp
|
|
GS/Renderers/SW/GSTextureCacheSW.cpp
|
|
GS/Renderers/SW/GSTextureSW.cpp
|
|
GS/Window/GSSetting.cpp
|
|
)
|
|
|
|
# GS headers
|
|
set(pcsx2GSHeaders
|
|
GS/config.h
|
|
GS/GSAlignedClass.h
|
|
GS/GSBlock.h
|
|
GS/GSCapture.h
|
|
GS/GSClut.h
|
|
GS/GSCodeBuffer.h
|
|
GS/GSCrc.h
|
|
GS/GSDrawingContext.h
|
|
GS/GSDrawingEnvironment.h
|
|
GS/GSDump.h
|
|
GS/GSExtra.h
|
|
GS/GSGL.h
|
|
GS/GSIntrin.h
|
|
GS/GSRegs.h
|
|
GS/GS.h
|
|
GS/GSLocalMemory.h
|
|
GS/GSLzma.h
|
|
GS/GSPerfMon.h
|
|
GS/GSPng.h
|
|
GS/GSRingHeap.h
|
|
GS/GSState.h
|
|
GS/GSTables.h
|
|
GS/GSThread_CXX11.h
|
|
GS/GSThread.h
|
|
GS/GSUtil.h
|
|
GS/GSVector.h
|
|
GS/GSVector4.h
|
|
GS/GSVector4i.h
|
|
GS/GSVector8.h
|
|
GS/GSVector8i.h
|
|
GS/GSXXH.h
|
|
GS/MultiISA.h
|
|
GS/Renderers/Common/GSDevice.h
|
|
GS/Renderers/Common/GSDirtyRect.h
|
|
GS/Renderers/Common/GSFastList.h
|
|
GS/Renderers/Common/GSFunctionMap.h
|
|
GS/Renderers/Common/GSRenderer.h
|
|
GS/Renderers/Common/GSTexture.h
|
|
GS/Renderers/Common/GSVertex.h
|
|
GS/Renderers/Common/GSVertexList.h
|
|
GS/Renderers/Common/GSVertexTrace.h
|
|
GS/Renderers/Null/GSDeviceNull.h
|
|
GS/Renderers/Null/GSRendererNull.h
|
|
GS/Renderers/Null/GSTextureNull.h
|
|
GS/Renderers/HW/GSRendererHW.h
|
|
GS/Renderers/HW/GSTextureCache.h
|
|
GS/Renderers/HW/GSTextureReplacements.h
|
|
GS/Renderers/HW/GSVertexHW.h
|
|
GS/Renderers/SW/GSDrawScanlineCodeGenerator.h
|
|
GS/Renderers/SW/GSDrawScanlineCodeGenerator.all.h
|
|
GS/Renderers/SW/GSDrawScanline.h
|
|
GS/Renderers/SW/GSNewCodeGenerator.h
|
|
GS/Renderers/SW/GSRasterizer.h
|
|
GS/Renderers/SW/GSRendererSW.h
|
|
GS/Renderers/SW/GSScanlineEnvironment.h
|
|
GS/Renderers/SW/GSSetupPrimCodeGenerator.h
|
|
GS/Renderers/SW/GSSetupPrimCodeGenerator.all.h
|
|
GS/Renderers/SW/GSTextureCacheSW.h
|
|
GS/Renderers/SW/GSTextureSW.h
|
|
GS/Renderers/SW/GSVertexSW.h
|
|
GS/Window/GSCaptureDlg.h
|
|
GS/Window/GSDialog.h
|
|
GS/Window/GSSetting.h
|
|
)
|
|
|
|
if(USE_OPENGL)
|
|
list(APPEND pcsx2GSSources
|
|
GS/Renderers/OpenGL/GLLoader.cpp
|
|
GS/Renderers/OpenGL/GLState.cpp
|
|
GS/Renderers/OpenGL/GSDeviceOGL.cpp
|
|
GS/Renderers/OpenGL/GSTextureOGL.cpp
|
|
)
|
|
list(APPEND pcsx2GSHeaders
|
|
GS/Renderers/OpenGL/GLLoader.h
|
|
GS/Renderers/OpenGL/GLState.h
|
|
GS/Renderers/OpenGL/GSDeviceOGL.h
|
|
GS/Renderers/OpenGL/GSTextureOGL.h
|
|
)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE glad)
|
|
endif()
|
|
|
|
if(USE_VULKAN)
|
|
list(APPEND pcsx2GSSources
|
|
GS/Renderers/Vulkan/GSDeviceVK.cpp
|
|
GS/Renderers/Vulkan/GSTextureVK.cpp
|
|
)
|
|
list(APPEND pcsx2GSHeaders
|
|
GS/Renderers/Vulkan/GSDeviceVK.h
|
|
GS/Renderers/Vulkan/GSTextureVK.h
|
|
)
|
|
endif()
|
|
|
|
set(pcsx2GSMetalShaders
|
|
GS/Renderers/Metal/cas.metal
|
|
GS/Renderers/Metal/convert.metal
|
|
GS/Renderers/Metal/present.metal
|
|
GS/Renderers/Metal/merge.metal
|
|
GS/Renderers/Metal/misc.metal
|
|
GS/Renderers/Metal/interlace.metal
|
|
GS/Renderers/Metal/tfx.metal
|
|
GS/Renderers/Metal/fxaa.metal
|
|
)
|
|
|
|
if(PCSX2_CORE)
|
|
list(APPEND pcsx2SPU2Headers
|
|
SPU2/Host/Config.cpp
|
|
SPU2/Host/ConfigDebug.cpp
|
|
SPU2/Host/ConfigSoundTouch.cpp
|
|
)
|
|
list(APPEND pcsx2SPU2Headers
|
|
SPU2/Host/Config.h
|
|
SPU2/Host/Dialogs.h
|
|
)
|
|
if(NOT WIN32)
|
|
list(APPEND pcsx2SPU2Headers
|
|
SPU2/WavFile.cpp
|
|
)
|
|
endif()
|
|
else()
|
|
list(APPEND pcsx2GSSources
|
|
GS/Window/GSwxDialog.cpp
|
|
)
|
|
list(APPEND pcsx2GSHeaders
|
|
GS/Window/GSwxDialog.h
|
|
)
|
|
if(WIN32)
|
|
list(APPEND pcsx2SPU2Sources
|
|
SPU2/Windows/CfgHelpers.cpp
|
|
SPU2/Windows/Config.cpp
|
|
SPU2/Windows/ConfigDebug.cpp
|
|
SPU2/Windows/ConfigSoundTouch.cpp
|
|
SPU2/Windows/dsp.cpp
|
|
SPU2/Windows/RealtimeDebugger.cpp
|
|
SPU2/Windows/UIHelpers.cpp
|
|
)
|
|
list(APPEND pcsx2SPU2Headers
|
|
SPU2/Windows/Dialogs.h
|
|
SPU2/Windows/dsp.h
|
|
SPU2/Windows/resource.h
|
|
SPU2/Windows/WinConfig.h
|
|
)
|
|
else()
|
|
list(APPEND pcsx2SPU2Sources
|
|
SPU2/Linux/CfgHelpers.cpp
|
|
SPU2/Linux/Config.cpp
|
|
SPU2/Linux/ConfigDebug.cpp
|
|
SPU2/Linux/ConfigSoundTouch.cpp
|
|
SPU2/Linux/Dialogs.cpp
|
|
SPU2/WavFile.cpp
|
|
SPU2/wx/wxConfig.cpp
|
|
)
|
|
list(APPEND pcsx2SPU2Headers
|
|
SPU2/Linux/Config.h
|
|
SPU2/Linux/Dialogs.h
|
|
SPU2/wx/wxConfig.h
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
list(APPEND pcsx2SPU2Sources
|
|
SPU2/Windows/SndOut_XAudio2.cpp
|
|
)
|
|
|
|
list(APPEND pcsx2DEV9Sources
|
|
DEV9/Win32/pcap_io_win32.cpp
|
|
DEV9/Win32/tap-win32.cpp
|
|
)
|
|
list(APPEND pcsx2DEV9Headers
|
|
DEV9/Win32/pcap_io_win32_funcs.h
|
|
DEV9/Win32/tap.h
|
|
)
|
|
|
|
list(APPEND pcsx2USBSources
|
|
USB/qemu-usb/input-keymap-win32-to-qcode.cpp
|
|
USB/shared/hidapi.cpp
|
|
USB/shared/rawinput_usb.cpp
|
|
USB/usb-eyetoy/api_init_win32_eyetoy.cpp
|
|
USB/usb-eyetoy/cam-windows.cpp
|
|
USB/usb-hid/api_init_win32_hid.cpp
|
|
USB/usb-hid/raw/rawinput.cpp
|
|
USB/usb-mic/api_init_win32_mic.cpp
|
|
USB/usb-mic/audiodev-wasapi.cpp
|
|
USB/usb-msd/usb-msd-win32.cpp
|
|
USB/usb-pad/api_init_win32_pad.cpp
|
|
USB/usb-pad/dx/dinput-config.cpp
|
|
USB/usb-pad/dx/dinput.cpp
|
|
USB/usb-pad/dx/usb-pad-dx.cpp
|
|
USB/usb-pad/raw/raw-config.cpp
|
|
USB/usb-pad/raw/usb-pad-raw.cpp
|
|
USB/Win32/Config_usb.cpp
|
|
)
|
|
list(APPEND pcsx2USBHeaders
|
|
USB/qemu-usb/input-keymap-win32-to-qcode.h
|
|
USB/shared/rawinput_usb.h
|
|
USB/usb-eyetoy/cam-windows.h
|
|
USB/usb-mic/audiodev-wasapi.h
|
|
USB/usb-pad/dx/dx.h
|
|
USB/usb-pad/dx/usb-pad-dx.h
|
|
USB/usb-pad/dx/versionproxy.h
|
|
USB/usb-pad/raw/raw-config-res.h
|
|
USB/usb-pad/raw/usb-pad-raw.h
|
|
USB/Win32/Config_usb.h
|
|
USB/Win32/resource_usb.h
|
|
)
|
|
|
|
list(APPEND pcsx2GSSources
|
|
GS/Renderers/DX11/D3D.cpp
|
|
GS/Renderers/DX11/GSDevice11.cpp
|
|
GS/Renderers/DX11/GSTexture11.cpp
|
|
GS/Renderers/DX11/GSTextureFX11.cpp
|
|
GS/Renderers/DX12/GSDevice12.cpp
|
|
GS/Renderers/DX12/GSTexture12.cpp
|
|
GS/Window/GSCaptureDlg.cpp
|
|
GS/Window/GSDialog.cpp
|
|
)
|
|
list(APPEND pcsx2GSHeaders
|
|
GS/Renderers/DX11/D3D.h
|
|
GS/Renderers/DX11/GSDevice11.h
|
|
GS/Renderers/DX11/GSTexture11.h
|
|
GS/Renderers/DX12/GSDevice12.h
|
|
GS/Renderers/DX12/GSTexture12.h
|
|
)
|
|
else()
|
|
list(APPEND pcsx2USBSources
|
|
USB/icon_buzz_24.cpp
|
|
USB/linux/config-gtk.cpp
|
|
USB/linux/config.cpp
|
|
USB/linux/util.cpp
|
|
USB/qemu-usb/input-keymap-linux-to-qcode.cpp
|
|
USB/usb-eyetoy/api_init_linux.cpp
|
|
USB/usb-eyetoy/cam-linux.cpp
|
|
USB/usb-hid/api_init_linux.cpp
|
|
USB/usb-hid/evdev/evdev-gtk.cpp
|
|
USB/usb-mic/api_init_linux.cpp
|
|
USB/usb-msd/usb-msd-gtk.cpp
|
|
USB/usb-pad/api_init_linux.cpp
|
|
USB/usb-pad/evdev/evdev-ff.cpp
|
|
USB/usb-pad/evdev/evdev-gtk.cpp
|
|
USB/usb-pad/evdev/evdev.cpp
|
|
USB/usb-pad/evdev/shared-gtk.cpp
|
|
)
|
|
list(APPEND pcsx2USBHeaders
|
|
USB/gtk.h
|
|
USB/icon_buzz_24.h
|
|
USB/linux/actualfile.h
|
|
USB/linux/config.h
|
|
USB/linux/ini.h
|
|
USB/linux/util.h
|
|
USB/qemu-usb/input-keymap-linux-to-qcode.h
|
|
USB/usb-eyetoy/cam-linux.h
|
|
USB/usb-hid/evdev/evdev.cpp
|
|
USB/usb-hid/evdev/evdev.h
|
|
USB/usb-pad/evdev/evdev-ff.h
|
|
USB/usb-pad/evdev/evdev.h
|
|
USB/usb-pad/evdev/shared.h
|
|
)
|
|
endif()
|
|
|
|
# IPU sources
|
|
set(pcsx2IPUSources
|
|
IPU/IPU.cpp
|
|
IPU/IPU_Fifo.cpp
|
|
IPU/IPUdma.cpp
|
|
)
|
|
|
|
set(pcsx2IPUSourcesUnshared
|
|
IPU/IPU_MultiISA.cpp
|
|
IPU/IPUdither.cpp
|
|
IPU/mpeg2lib/Idct.cpp
|
|
IPU/mpeg2lib/Mpeg.cpp
|
|
IPU/yuv2rgb.cpp
|
|
)
|
|
|
|
# IPU headers
|
|
set(pcsx2IPUHeaders
|
|
IPU/IPU.h
|
|
IPU/IPU_Fifo.h
|
|
IPU/IPU_MultiISA.h
|
|
IPU/IPUdma.h
|
|
IPU/mpeg2lib/Mpeg.h
|
|
IPU/mpeg2lib/Vlc.h
|
|
IPU/yuv2rgb.h
|
|
)
|
|
|
|
if(DISABLE_ADVANCE_SIMD)
|
|
target_compile_definitions(PCSX2 PUBLIC MULTI_ISA_SHARED_COMPILATION)
|
|
if(USE_GCC)
|
|
target_link_options(PCSX2_FLAGS INTERFACE -Wno-odr)
|
|
endif()
|
|
if(WIN32)
|
|
set(compile_options_avx2 /arch:AVX2)
|
|
set(compile_options_avx /arch:AVX)
|
|
elseif(USE_GCC)
|
|
# GCC can't inline into multi-isa functions if we use march and mtune, but can if we use feature flags
|
|
set(compile_options_avx2 -msse4.1 -mavx -mavx2 -mbmi -mbmi2 -mfma)
|
|
set(compile_options_avx -msse4.1 -mavx)
|
|
set(compile_options_sse4 -msse4.1)
|
|
else()
|
|
set(compile_options_avx2 -march=haswell -mtune=haswell)
|
|
set(compile_options_avx -march=sandybridge -mtune=sandybridge)
|
|
set(compile_options_sse4 -msse4.1 -mtune=nehalem)
|
|
endif()
|
|
# ODR violation time!
|
|
# Everything would be fine if we only defined things in cpp files, but C++ tends to like inline functions (STL anyone?)
|
|
# Each ISA will bring with it its own copies of these inline header functions, and the linker gets to choose whichever one it wants! Not fun if the linker chooses the avx2 version and uses it with everything
|
|
# Thankfully, most linkers don't choose at random. When presented with a bunch of .o files, most linkers seem to choose the first implementation they see, so make sure you order these from oldest to newest
|
|
# Note: ld64 (macOS's linker) does not act the same way when presented with .a files, unless linked with `-force_load` (cmake WHOLE_ARCHIVE).
|
|
set(is_first_isa "1")
|
|
foreach(isa "sse4" "avx" "avx2")
|
|
add_library(GS-${isa} STATIC ${pcsx2GSSourcesUnshared} ${pcsx2IPUSourcesUnshared})
|
|
target_link_libraries(GS-${isa} PRIVATE PCSX2_FLAGS)
|
|
target_compile_definitions(GS-${isa} PRIVATE MULTI_ISA_UNSHARED_COMPILATION=isa_${isa} MULTI_ISA_IS_FIRST=${is_first_isa} ${pcsx2_defs_${isa}})
|
|
target_compile_options(GS-${isa} PRIVATE ${compile_options_${isa}})
|
|
if (${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.24)
|
|
target_link_libraries(PCSX2 PRIVATE $<LINK_LIBRARY:WHOLE_ARCHIVE,GS-${isa}>)
|
|
elseif(APPLE)
|
|
message(FATAL_ERROR "MacOS builds with DISABLE_ADVANCE_SIMD=ON require CMake 3.24")
|
|
else()
|
|
target_link_libraries(PCSX2 PRIVATE GS-${isa})
|
|
endif()
|
|
set(is_first_isa "0")
|
|
endforeach()
|
|
else()
|
|
list(APPEND pcsx2GSSources ${pcsx2GSSourcesUnshared})
|
|
list(APPEND pcsx2IPUSources ${pcsx2IPUSourcesUnshared})
|
|
endif()
|
|
|
|
# DebugTools sources
|
|
set(pcsx2DebugToolsSources
|
|
DebugTools/DebugInterface.cpp
|
|
DebugTools/DisassemblyManager.cpp
|
|
DebugTools/ExpressionParser.cpp
|
|
DebugTools/MIPSAnalyst.cpp
|
|
DebugTools/MipsAssembler.cpp
|
|
DebugTools/MipsAssemblerTables.cpp
|
|
DebugTools/MipsStackWalk.cpp
|
|
DebugTools/Breakpoints.cpp
|
|
DebugTools/SymbolMap.cpp
|
|
DebugTools/DisR3000A.cpp
|
|
DebugTools/DisR5900asm.cpp
|
|
DebugTools/DisVU0Micro.cpp
|
|
DebugTools/DisVU1Micro.cpp
|
|
DebugTools/BiosDebugData.cpp)
|
|
|
|
# DebugTools headers
|
|
set(pcsx2DebugToolsHeaders
|
|
DebugTools/DebugInterface.h
|
|
DebugTools/DisassemblyManager.h
|
|
DebugTools/ExpressionParser.h
|
|
DebugTools/MIPSAnalyst.h
|
|
DebugTools/MipsAssembler.h
|
|
DebugTools/MipsAssemblerTables.h
|
|
DebugTools/MipsStackWalk.h
|
|
DebugTools/Breakpoints.h
|
|
DebugTools/SymbolMap.h
|
|
DebugTools/Debug.h
|
|
DebugTools/DisASM.h
|
|
DebugTools/DisVUmicro.h
|
|
DebugTools/DisVUops.h
|
|
DebugTools/BiosDebugData.h)
|
|
|
|
# Frontend sources
|
|
set(pcsx2FrontendSources
|
|
Frontend/ImGuiManager.cpp
|
|
Frontend/ImGuiOverlays.cpp
|
|
)
|
|
|
|
# Frontend headers
|
|
set(pcsx2FrontendHeaders
|
|
Frontend/ImGuiManager.h
|
|
Frontend/ImGuiOverlays.h
|
|
)
|
|
|
|
if(USE_OPENGL)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/OpenGLHostDisplay.cpp
|
|
Frontend/imgui_impl_opengl3.cpp
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/OpenGLHostDisplay.h
|
|
Frontend/imgui_impl_opengl3.h
|
|
)
|
|
endif()
|
|
|
|
if(USE_VULKAN)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/VulkanHostDisplay.cpp
|
|
Frontend/imgui_impl_vulkan.cpp
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/imgui_impl_vulkan.h
|
|
Frontend/VulkanHostDisplay.h
|
|
)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/D3D11HostDisplay.cpp
|
|
Frontend/D3D12HostDisplay.cpp
|
|
Frontend/imgui_impl_dx11.cpp
|
|
Frontend/imgui_impl_dx12.cpp
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/D3D11HostDisplay.h
|
|
Frontend/D3D12HostDisplay.h
|
|
Frontend/imgui_impl_dx11.h
|
|
Frontend/imgui_impl_dx12.h
|
|
)
|
|
elseif(APPLE)
|
|
list(APPEND pcsx2GSSources
|
|
GS/Renderers/Metal/GSDeviceMTL.mm
|
|
GS/Renderers/Metal/GSMTLDeviceInfo.mm
|
|
GS/Renderers/Metal/GSTextureMTL.mm
|
|
)
|
|
list(APPEND pcsx2GSHeaders
|
|
GS/Renderers/Metal/GSDeviceMTL.h
|
|
GS/Renderers/Metal/GSMetalCPPAccessible.h
|
|
GS/Renderers/Metal/GSMTLDeviceInfo.h
|
|
GS/Renderers/Metal/GSMTLSharedHeader.h
|
|
GS/Renderers/Metal/GSMTLShaderCommon.h
|
|
GS/Renderers/Metal/GSTextureMTL.h
|
|
)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/MetalHostDisplay.mm
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/MetalHostDisplay.h
|
|
)
|
|
endif()
|
|
|
|
if(PCSX2_CORE)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/CommonHost.cpp
|
|
Frontend/CommonHotkeys.cpp
|
|
Frontend/FullscreenUI.cpp
|
|
Frontend/GameList.cpp
|
|
Frontend/HostSettings.cpp
|
|
Frontend/ImGuiFullscreen.cpp
|
|
Frontend/InputManager.cpp
|
|
Frontend/InputSource.cpp
|
|
Frontend/LayeredSettingsInterface.cpp
|
|
Frontend/LogSink.cpp
|
|
GSDumpReplayer.cpp
|
|
INISettingsInterface.cpp
|
|
VMManager.cpp
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/CommonHost.h
|
|
Frontend/FullscreenUI.h
|
|
Frontend/GameList.h
|
|
Frontend/ImGuiFullscreen.h
|
|
Frontend/InputManager.h
|
|
Frontend/InputSource.h
|
|
Frontend/LayeredSettingsInterface.h
|
|
Frontend/LogSink.h
|
|
GSDumpReplayer.h
|
|
HostSettings.h
|
|
INISettingsInterface.h
|
|
VMManager.h)
|
|
|
|
if(USE_ACHIEVEMENTS)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/Achievements.cpp
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/Achievements.h
|
|
)
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE
|
|
ENABLE_ACHIEVEMENTS
|
|
)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
rcheevos
|
|
)
|
|
endif()
|
|
if(USE_DISCORD_PRESENCE)
|
|
target_compile_definitions(PCSX2_FLAGS INTERFACE
|
|
ENABLE_DISCORD_PRESENCE
|
|
)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
discord-rpc
|
|
)
|
|
endif()
|
|
if(WIN32)
|
|
list(APPEND pcsx2FrontendSources
|
|
Frontend/DInputSource.cpp
|
|
Frontend/XInputSource.cpp
|
|
)
|
|
list(APPEND pcsx2FrontendHeaders
|
|
Frontend/DInputSource.h
|
|
Frontend/XInputSource.h
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# gui sources
|
|
set(pcsx2GuiSources
|
|
gui/AppAssert.cpp
|
|
gui/AppConfig.cpp
|
|
gui/AppCoreThread.cpp
|
|
gui/AppEventSources.cpp
|
|
gui/AppHost.cpp
|
|
gui/AppUserMode.cpp
|
|
gui/AppInit.cpp
|
|
gui/AppMain.cpp
|
|
gui/AppRes.cpp
|
|
gui/CheckedStaticBox.cpp
|
|
gui/ConsoleLogger.cpp
|
|
gui/Dialogs/AboutBoxDialog.cpp
|
|
gui/Dialogs/GSDumpDialog.cpp
|
|
gui/Dialogs/AssertionDialog.cpp
|
|
gui/Dialogs/BaseConfigurationDialog.cpp
|
|
gui/Dialogs/ConfirmationDialogs.cpp
|
|
gui/Dialogs/ConvertMemoryCardDialog.cpp
|
|
gui/Dialogs/CreateMemoryCardDialog.cpp
|
|
gui/Dialogs/FirstTimeWizard.cpp
|
|
gui/Dialogs/ImportSettingsDialog.cpp
|
|
gui/Dialogs/LogOptionsDialog.cpp
|
|
gui/Dialogs/McdConfigDialog.cpp
|
|
gui/Dialogs/PickUserModeDialog.cpp
|
|
gui/Dialogs/SysConfigDialog.cpp
|
|
gui/Dialogs/PINEDialog.cpp
|
|
gui/Debugger/BreakpointWindow.cpp
|
|
gui/Debugger/CtrlDisassemblyView.cpp
|
|
gui/Debugger/CtrlRegisterList.cpp
|
|
gui/Debugger/CtrlMemView.cpp
|
|
gui/Debugger/CtrlMemSearch.cpp
|
|
gui/Debugger/DebuggerLists.cpp
|
|
gui/Debugger/DisassemblyDialog.cpp
|
|
gui/Debugger/DebugEvents.cpp
|
|
gui/DriveList.cpp
|
|
gui/ExecutorThread.cpp
|
|
gui/FastFormatString.cpp
|
|
gui/FileUtils.cpp
|
|
gui/FrameForGS.cpp
|
|
gui/GlobalCommands.cpp
|
|
gui/IniInterface.cpp
|
|
gui/i18n.cpp
|
|
gui/IsoDropTarget.cpp
|
|
gui/MainFrame.cpp
|
|
gui/MainMenuClicks.cpp
|
|
gui/MessageBoxes.cpp
|
|
gui/Mutex.cpp
|
|
gui/MSWstuff.cpp
|
|
gui/Panels/BaseApplicableConfigPanel.cpp
|
|
gui/Panels/BiosSelectorPanel.cpp
|
|
gui/Panels/CpuPanel.cpp
|
|
gui/Panels/DirPickerPanel.cpp
|
|
gui/Panels/GameFixesPanel.cpp
|
|
gui/Panels/GSWindowPanel.cpp
|
|
gui/Panels/LogOptionsPanels.cpp
|
|
gui/Panels/MemoryCardListPanel.cpp
|
|
gui/Panels/MemoryCardListView.cpp
|
|
gui/Panels/MiscPanelStuff.cpp
|
|
gui/Panels/PathsPanel.cpp
|
|
gui/Panels/SpeedhacksPanel.cpp
|
|
gui/Panels/VideoPanel.cpp
|
|
gui/PathUtils.cpp
|
|
gui/PersistentThread.cpp
|
|
gui/pxCheckBox.cpp
|
|
gui/pxRadioPanel.cpp
|
|
gui/pxStaticText.cpp
|
|
gui/pxTranslate.cpp
|
|
gui/pxWindowTextWriter.cpp
|
|
gui/RecentIsoList.cpp
|
|
gui/Saveslots.cpp
|
|
gui/StringHelpers.cpp
|
|
gui/SysCoreThread.cpp
|
|
gui/SysState.cpp
|
|
gui/SysThreadBase.cpp
|
|
gui/ThreadingDialogs.cpp
|
|
gui/UpdateUI.cpp
|
|
gui/wxAppWithHelpers.cpp
|
|
gui/wxGuiTools.cpp
|
|
gui/wxHelpers.cpp
|
|
gui/wxSettingsInterface.cpp
|
|
)
|
|
|
|
# gui headers
|
|
set(pcsx2GuiHeaders
|
|
gui/AppAccelerators.h
|
|
gui/AppCommon.h
|
|
gui/AppConfig.h
|
|
gui/AppCoreThread.h
|
|
gui/AppEventListeners.h
|
|
gui/AppHost.h
|
|
gui/AppForwardDefs.h
|
|
gui/App.h
|
|
gui/ApplyState.h
|
|
gui/AppSaveStates.h
|
|
gui/CheckedStaticBox.h
|
|
gui/ConsoleLogger.h
|
|
gui/Debugger/BreakpointWindow.h
|
|
gui/Debugger/CtrlDisassemblyView.h
|
|
gui/Debugger/CtrlMemView.h
|
|
gui/Debugger/CtrlMemSearch.h
|
|
gui/Debugger/CtrlRegisterList.h
|
|
gui/Debugger/DebugEvents.h
|
|
gui/Debugger/DebuggerLists.h
|
|
gui/Debugger/DisassemblyDialog.h
|
|
gui/Dialogs/BaseConfigurationDialog.inl
|
|
gui/Dialogs/ConfigurationDialog.h
|
|
gui/Dialogs/LogOptionsDialog.h
|
|
gui/Dialogs/ModalPopups.h
|
|
gui/DriveList.h
|
|
gui/GSFrame.h
|
|
gui/i18n.h
|
|
gui/IniInterface.h
|
|
gui/IsoDropTarget.h
|
|
gui/MainFrame.h
|
|
gui/MSWstuff.h
|
|
gui/PathDefs.h
|
|
gui/Panels/ConfigurationPanels.h
|
|
gui/Panels/LogOptionsPanels.h
|
|
gui/Panels/MemoryCardPanels.h
|
|
gui/PersistentThread.h
|
|
gui/pxCheckBox.h
|
|
gui/pxEvents.h
|
|
gui/pxEventThread.h
|
|
gui/pxRadioPanel.h
|
|
gui/pxStaticText.h
|
|
gui/RecentIsoList.h
|
|
gui/Saveslots.h
|
|
gui/StringHelpers.h
|
|
gui/SysThreads.h
|
|
gui/ThreadingDialogs.h
|
|
gui/ThreadingDialogs.cpp
|
|
gui/wxDirName.h
|
|
gui/wxGuiTools.h
|
|
gui/wxSettingsInterface.h
|
|
)
|
|
|
|
# Warning: the declaration of the .h are mandatory in case of resources files. It will ensure the creation
|
|
# from the bin2cpp tools at right good moment (ie .h must be created before the pcsx2 compilation)
|
|
# Gui resources headers
|
|
set(res_bin "${CMAKE_BINARY_DIR}/pcsx2/gui/Resources")
|
|
set(res_src "${CMAKE_SOURCE_DIR}/pcsx2/gui/Resources")
|
|
set(pcsx2GuiResources
|
|
${res_bin}/AppIcon16.h
|
|
${res_bin}/AppIcon32.h
|
|
${res_bin}/AppIcon64.h
|
|
${res_bin}/BackgroundLogo.h
|
|
${res_bin}/ButtonIcon_Camera.h
|
|
${res_bin}/ConfigIcon_Cpu.h
|
|
${res_bin}/ConfigIcon_Gamefixes.h
|
|
${res_bin}/ConfigIcon_MemoryCard.h
|
|
${res_bin}/ConfigIcon_Paths.h
|
|
${res_bin}/ConfigIcon_Speedhacks.h
|
|
${res_bin}/ConfigIcon_Video.h
|
|
${res_bin}/Logo.h
|
|
${res_bin}/NoIcon.h
|
|
${res_bin}/Breakpoint_Active.h
|
|
${res_bin}/Breakpoint_Inactive.h
|
|
)
|
|
|
|
# Linux sources
|
|
set(pcsx2LinuxSources
|
|
CDVD/Linux/DriveUtility.cpp
|
|
CDVD/Linux/IOCtlSrc.cpp
|
|
Linux/LnxFlatFileReader.cpp
|
|
)
|
|
|
|
set(pcsx2OSXSources
|
|
CDVD/Linux/DriveUtility.cpp
|
|
CDVD/Linux/IOCtlSrc.cpp
|
|
Darwin/DarwinFlatFileReader.cpp
|
|
)
|
|
|
|
set(pcsx2FreeBSDSources
|
|
CDVD/Linux/DriveUtility.cpp
|
|
CDVD/Linux/IOCtlSrc.cpp
|
|
Darwin/DarwinFlatFileReader.cpp
|
|
)
|
|
|
|
if(NOT PCSX2_CORE)
|
|
list(APPEND pcsx2LinuxSources
|
|
Linux/LnxConsolePipe.cpp
|
|
Linux/LnxKeyCodes.cpp
|
|
)
|
|
list(APPEND pcsx2OSXSources
|
|
Linux/LnxConsolePipe.cpp
|
|
Darwin/DarwinKeyCodes.cpp
|
|
)
|
|
list(APPEND pcsx2FreeBSDSources
|
|
Linux/LnxConsolePipe.cpp
|
|
Linux/LnxKeyCodes.cpp
|
|
)
|
|
endif()
|
|
|
|
# Linux headers
|
|
set(pcsx2LinuxHeaders
|
|
)
|
|
|
|
# ps2 sources
|
|
set(pcsx2ps2Sources
|
|
ps2/BiosTools.cpp
|
|
ps2/pgif.cpp
|
|
ps2/Iop/IopHwRead.cpp
|
|
ps2/Iop/IopHwWrite.cpp
|
|
ps2/Iop/PsxBios.cpp)
|
|
|
|
# ps2 headers
|
|
set(pcsx2ps2Headers
|
|
ps2/BiosTools.h
|
|
ps2/eeHwTraceLog.inl
|
|
ps2/pgif.h
|
|
ps2/HwInternal.h
|
|
ps2/Iop/IopHw_Internal.h)
|
|
|
|
# RDebug sources
|
|
set(pcsx2RDebugSources
|
|
RDebug/deci2.cpp
|
|
RDebug/deci2_dbgp.cpp
|
|
RDebug/deci2_dcmp.cpp
|
|
RDebug/deci2_drfp.cpp
|
|
RDebug/deci2_iloadp.cpp
|
|
RDebug/deci2_netmp.cpp
|
|
RDebug/deci2_ttyp.cpp)
|
|
|
|
# RDebug headers
|
|
set(pcsx2RDebugHeaders
|
|
RDebug/deci2_dbgp.h
|
|
RDebug/deci2_dcmp.h
|
|
RDebug/deci2_drfp.h
|
|
RDebug/deci2.h
|
|
RDebug/deci2_iloadp.h
|
|
RDebug/deci2_netmp.h
|
|
RDebug/deci2_ttyp.h)
|
|
|
|
# Recording sources
|
|
set(rec_src "Recording")
|
|
set(rec_vp_src "${rec_src}/VirtualPad")
|
|
set(pcsx2RecordingSources
|
|
${rec_src}/InputRecording.cpp
|
|
${rec_src}/InputRecordingControls.cpp
|
|
${rec_src}/InputRecordingFile.cpp
|
|
${rec_src}/PadData.cpp
|
|
${rec_src}/Utilities/InputRecordingLogger.cpp
|
|
)
|
|
|
|
# Recording headers
|
|
set(pcsx2RecordingHeaders
|
|
${rec_src}/InputRecording.h
|
|
${rec_src}/InputRecordingControls.h
|
|
${rec_src}/InputRecordingFile.h
|
|
${rec_src}/PadData.h
|
|
${rec_src}/Utilities/InputRecordingLogger.h
|
|
)
|
|
|
|
# System headers
|
|
set(pcsx2SystemHeaders
|
|
System/RecTypes.h)
|
|
|
|
# Windows sources
|
|
set(pcsx2WindowsSources
|
|
CDVD/Windows/DriveUtility.cpp
|
|
CDVD/Windows/IOCtlSrc.cpp
|
|
windows/FlatFileReaderWindows.cpp
|
|
windows/Optimus.cpp
|
|
)
|
|
|
|
if(NOT PCSX2_CORE)
|
|
list(APPEND pcsx2WindowsSources
|
|
windows/WinConsolePipe.cpp
|
|
windows/WinKeyCodes.cpp
|
|
windows/WinPowerProfile.cpp
|
|
)
|
|
endif()
|
|
|
|
# Windows headers
|
|
set(pcsx2WindowsHeaders
|
|
windows/resource.h
|
|
windows/Win32.h)
|
|
|
|
# x86 sources
|
|
set(pcsx2x86Sources
|
|
x86/BaseblockEx.cpp
|
|
x86/iCOP0.cpp
|
|
x86/iCore.cpp
|
|
x86/iFPU.cpp
|
|
x86/iFPUd.cpp
|
|
x86/iMMI.cpp
|
|
x86/iR3000A.cpp
|
|
x86/iR3000Atables.cpp
|
|
x86/iR5900Analysis.cpp
|
|
x86/iR5900Misc.cpp
|
|
x86/ir5900tables.cpp
|
|
x86/ix86-32/iCore-32.cpp
|
|
x86/ix86-32/iR5900-32.cpp
|
|
x86/ix86-32/iR5900Arit.cpp
|
|
x86/ix86-32/iR5900AritImm.cpp
|
|
x86/ix86-32/iR5900Branch.cpp
|
|
x86/ix86-32/iR5900Jump.cpp
|
|
x86/ix86-32/iR5900LoadStore.cpp
|
|
x86/ix86-32/iR5900Move.cpp
|
|
x86/ix86-32/iR5900MultDiv.cpp
|
|
x86/ix86-32/iR5900Shift.cpp
|
|
x86/ix86-32/iR5900Templates.cpp
|
|
x86/ix86-32/recVTLB.cpp
|
|
x86/newVif_Dynarec.cpp
|
|
x86/newVif_Unpack.cpp
|
|
x86/newVif_UnpackSSE.cpp
|
|
)
|
|
|
|
# x86 headers
|
|
set(pcsx2x86Headers
|
|
x86/BaseblockEx.h
|
|
x86/iCOP0.h
|
|
x86/iCore.h
|
|
x86/iFPU.h
|
|
x86/iMMI.h
|
|
x86/iR3000A.h
|
|
x86/iR5900Arit.h
|
|
x86/iR5900AritImm.h
|
|
x86/iR5900Branch.h
|
|
x86/iR5900.h
|
|
x86/iR5900Analysis.h
|
|
x86/iR5900Jump.h
|
|
x86/iR5900LoadStore.h
|
|
x86/iR5900Move.h
|
|
x86/iR5900MultDiv.h
|
|
x86/iR5900Shift.h
|
|
x86/microVU_Alloc.inl
|
|
x86/microVU_Analyze.inl
|
|
x86/microVU_Branch.inl
|
|
x86/microVU_Clamp.inl
|
|
x86/microVU_Compile.inl
|
|
x86/microVU.cpp
|
|
x86/microVU_Execute.inl
|
|
x86/microVU_Flags.inl
|
|
x86/microVU.h
|
|
x86/microVU_IR.h
|
|
x86/microVU_Log.inl
|
|
x86/microVU_Lower.inl
|
|
x86/microVU_Macro.inl
|
|
x86/microVU_Misc.h
|
|
x86/microVU_Misc.inl
|
|
x86/microVU_Profiler.h
|
|
x86/microVU_Tables.inl
|
|
x86/microVU_Upper.inl
|
|
x86/newVif.h
|
|
x86/newVif_HashBucket.h
|
|
x86/newVif_UnpackSSE.h
|
|
x86/R5900_Profiler.h
|
|
)
|
|
|
|
# These ones benefit a lot from LTO
|
|
set(pcsx2LTOSources
|
|
${pcsx2Sources}
|
|
${pcsx2Headers}
|
|
${pcsx2IPUSources}
|
|
${pcsx2IPUHeaders}
|
|
${pcsx2x86Sources}
|
|
${pcsx2x86Headers}
|
|
${pcsx2SPU2Sources}
|
|
${pcsx2SPU2Headers}
|
|
${pcsx2GSSources}
|
|
${pcsx2GSHeaders}
|
|
)
|
|
|
|
if(LTO_PCSX2_CORE)
|
|
add_library(PCSX2_LTO ${pcsx2LTOSources})
|
|
if (WIN32)
|
|
target_compile_definitions(PCSX2_LTO PRIVATE _M_SSE=0x401)
|
|
endif()
|
|
if (DISABLE_ADVANCE_SIMD)
|
|
target_compile_definitions(PCSX2_LTO PRIVATE MULTI_ISA_SHARED_COMPILATION)
|
|
endif()
|
|
target_link_libraries(PCSX2_LTO PRIVATE PCSX2_FLAGS)
|
|
target_link_libraries(PCSX2 PRIVATE PCSX2_LTO)
|
|
set_target_properties(PCSX2_LTO PROPERTIES INTERPROCEDURAL_OPTIMIZATION true)
|
|
fixup_file_properties(PCSX2_LTO)
|
|
else()
|
|
target_sources(PCSX2 PRIVATE ${pcsx2LTOSources})
|
|
endif()
|
|
|
|
# common Sources
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2CDVDSources}
|
|
${pcsx2CDVDHeaders}
|
|
${pcsx2DEV9Sources}
|
|
${pcsx2DEV9Headers}
|
|
${pcsx2PADHeaders}
|
|
${pcsx2PADSources}
|
|
${pcsx2RecordingSources}
|
|
${pcsx2DebugToolsSources}
|
|
${pcsx2DebugToolsHeaders}
|
|
${pcsx2FrontendSources}
|
|
${pcsx2FrontendHeaders}
|
|
${pcsx2ps2Sources}
|
|
${pcsx2ps2Headers}
|
|
${pcsx2SystemHeaders}
|
|
)
|
|
|
|
# gui sources when not doing a qt build
|
|
if (NOT PCSX2_CORE)
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2GuiSources}
|
|
${pcsx2GuiResources}
|
|
${pcsx2GuiHeaders}
|
|
${pcsx2RecordingVirtualPadResources}
|
|
${pcsx2RecordingHeaders}
|
|
)
|
|
endif()
|
|
|
|
# platform sources
|
|
# Linux
|
|
if(Linux)
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2LinuxSources}
|
|
${pcsx2LinuxHeaders}
|
|
)
|
|
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
PkgConfig::AIO
|
|
PkgConfig::LIBUDEV
|
|
)
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE AND NOT PCSX2_CORE)
|
|
if(X11_API)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
PkgConfig::X11_XCB
|
|
PkgConfig::XCB
|
|
X11::X11
|
|
)
|
|
endif()
|
|
if(WAYLAND_API)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
Wayland::Client
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# Windows
|
|
if(Windows)
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2WindowsSources}
|
|
${pcsx2WindowsHeaders})
|
|
endif()
|
|
|
|
# MacOSX/BSD
|
|
if(UNIX AND NOT Linux)
|
|
if(APPLE)
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2OSXSources})
|
|
else()
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2FreeBSDSources})
|
|
endif()
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2LinuxHeaders}
|
|
${pcsx2USBSourcesQt}
|
|
${pcsx2USBHeadersQt})
|
|
else()
|
|
if(NOT PCSX2_CORE)
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2USBSources}
|
|
${pcsx2USBHeaders})
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
jpgd
|
|
PkgConfig::SAMPLERATE
|
|
)
|
|
else()
|
|
target_sources(PCSX2 PRIVATE
|
|
${pcsx2USBSourcesQt}
|
|
${pcsx2USBHeadersQt})
|
|
endif()
|
|
endif()
|
|
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
common
|
|
des
|
|
imgui
|
|
fmt::fmt
|
|
ryml
|
|
chdr-static
|
|
libzip::zip
|
|
cpuinfo
|
|
zydis
|
|
ZLIB::ZLIB
|
|
PkgConfig::SOUNDTOUCH
|
|
PNG::PNG
|
|
LibLZMA::LibLZMA
|
|
Zstd::Zstd
|
|
PkgConfig::DES
|
|
${LIBC_LIBRARIES}
|
|
)
|
|
|
|
if(PCSX2_CORE)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
simpleini
|
|
)
|
|
else()
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
wxWidgets::all
|
|
)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
baseclasses
|
|
WIL::WIL
|
|
D3D12MemAlloc
|
|
setupapi.lib
|
|
ws2_32.lib
|
|
shlwapi.lib
|
|
iphlpapi.lib
|
|
dsound.lib
|
|
dxguid.lib
|
|
dinput8.lib
|
|
hid.lib
|
|
PowrProf.lib
|
|
d3dcompiler.lib
|
|
d3d11.lib
|
|
dxgi.lib
|
|
strmiids.lib
|
|
opengl32.lib
|
|
comsuppw.lib
|
|
OneCore.lib
|
|
)
|
|
if(NOT PCSX2_CORE)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
pthreads4w
|
|
)
|
|
endif()
|
|
elseif(APPLE)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
PCAP::PCAP
|
|
)
|
|
else()
|
|
if (NOT PCSX2_CORE)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
GTK::gtk
|
|
HarfBuzz::HarfBuzz
|
|
)
|
|
endif()
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE
|
|
OpenGL::GL
|
|
PCAP::PCAP
|
|
)
|
|
endif()
|
|
|
|
### Generate the resources files
|
|
if(NOT PCSX2_CORE)
|
|
file(MAKE_DIRECTORY ${res_bin})
|
|
|
|
foreach(res_file IN ITEMS
|
|
AppIcon16 AppIcon32 AppIcon64 BackgroundLogo Logo NoIcon ButtonIcon_Camera
|
|
ConfigIcon_Cpu ConfigIcon_Gamefixes ConfigIcon_MemoryCard
|
|
ConfigIcon_Paths ConfigIcon_Speedhacks ConfigIcon_Video Breakpoint_Active Breakpoint_Inactive)
|
|
add_custom_command(
|
|
OUTPUT "${res_bin}/${res_file}.h"
|
|
DEPENDS ${BIN2CPPDEP} "${res_src}/${res_file}.png"
|
|
COMMAND ${BIN2CPP} "${res_src}/${res_file}.png" "${res_bin}/${res_file}"
|
|
)
|
|
endforeach()
|
|
endif()
|
|
|
|
# additonal include directories
|
|
target_include_directories(PCSX2_FLAGS INTERFACE
|
|
.
|
|
x86
|
|
${CMAKE_BINARY_DIR}/pcsx2
|
|
${CMAKE_BINARY_DIR}/common/include/
|
|
"${CMAKE_SOURCE_DIR}/3rdparty/jpgd/"
|
|
"${CMAKE_SOURCE_DIR}/3rdparty/xbyak/"
|
|
"${CMAKE_SOURCE_DIR}/3rdparty/des/"
|
|
)
|
|
|
|
if(COMMAND target_precompile_headers)
|
|
message("Using precompiled headers.")
|
|
target_precompile_headers(PCSX2_FLAGS INTERFACE PrecompiledHeader.h)
|
|
endif()
|
|
|
|
# Copy resource files if needed
|
|
function(pcsx2_resource target path basedir)
|
|
get_filename_component(dir ${path} DIRECTORY)
|
|
file(RELATIVE_PATH subdir ${basedir} ${dir})
|
|
if(APPLE)
|
|
target_sources(${target} PRIVATE ${path})
|
|
set_source_files_properties(${path} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${subdir})
|
|
elseif(PACKAGE_MODE)
|
|
install(FILES ${path} DESTINATION ${CMAKE_INSTALL_DATADIR}/PCSX2/resources/${subdir})
|
|
else()
|
|
add_custom_command(TARGET ${target} POST_BUILD
|
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "$<TARGET_FILE_DIR:${target}>/resources/${subdir}"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${path}" "$<TARGET_FILE_DIR:${target}>/resources/${subdir}")
|
|
endif()
|
|
source_group(Resources/${subdir} FILES ${path})
|
|
endfunction()
|
|
|
|
if (NOT APPLE)
|
|
set_target_properties(PCSX2 PROPERTIES
|
|
OUTPUT_NAME pcsx2
|
|
)
|
|
endif()
|
|
|
|
if(APPLE AND NOT GETTEXT_FOUND AND NOT NO_TRANSLATION AND NOT PCSX2_CORE)
|
|
message(FATAL_ERROR "MacOS cannot use the precompiled translation files. Please install gettext or disable translations with NO_TRANSLATION")
|
|
endif()
|
|
|
|
# Translation files
|
|
# CMake is dumb and can't properly associate custom command outputs with targets if they're made in different directories
|
|
# So this has to be here (and not in a CMakeLists.txt file in locales/)
|
|
if(GETTEXT_FOUND AND NOT NO_TRANSLATION AND NOT PCSX2_CORE)
|
|
include(Translation)
|
|
|
|
file(GLOB_RECURSE PO_ICO_FILES ${CMAKE_SOURCE_DIR}/locales/*/pcsx2_Iconized.po)
|
|
file(GLOB_RECURSE PO_MAIN_FILES ${CMAKE_SOURCE_DIR}/locales/*/pcsx2_Main.po)
|
|
|
|
# Macro to compile po file and install them
|
|
GETTEXT_CREATE_TRANSLATIONS_PCSX2(${CMAKE_SOURCE_DIR}/locales/templates/pcsx2_Iconized.pot ${PO_ICO_FILES})
|
|
GETTEXT_CREATE_TRANSLATIONS_PCSX2(${CMAKE_SOURCE_DIR}/locales/templates/pcsx2_Main.pot ${PO_MAIN_FILES})
|
|
endif()
|
|
|
|
fixup_file_properties(PCSX2)
|
|
|
|
if (APPLE)
|
|
find_library(METAL_LIBRARY Metal)
|
|
find_library(QUARTZCORE_LIBRARY QuartzCore)
|
|
target_link_libraries(PCSX2_FLAGS INTERFACE ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY})
|
|
|
|
# MacOS defaults to having a maximum protection of the __DATA segment of rw (non-executable)
|
|
# We have a bunch of page-sized arrays in bss that we use for jit
|
|
# Obviously not being able to make those arrays executable would be a problem
|
|
target_link_options(PCSX2_FLAGS INTERFACE -Wl,-segprot,__DATA,rwx,rw)
|
|
endif()
|
|
|
|
set_property(GLOBAL PROPERTY PCSX2_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
set_property(GLOBAL PROPERTY PCSX2_METAL_SHADERS ${pcsx2GSMetalShaders})
|
|
|
|
function(setup_main_executable target)
|
|
file(GLOB_RECURSE RESOURCE_FILES ${CMAKE_SOURCE_DIR}/bin/resources/*)
|
|
foreach(path IN LISTS RESOURCE_FILES)
|
|
get_filename_component(file ${path} NAME)
|
|
if("${file}" MATCHES "^\\.") # Don't copy macOS garbage (mainly Finder's .DS_Store files) into application
|
|
continue()
|
|
endif()
|
|
if (NOT WIN32 AND "${path}" MATCHES "/dx11/") # Don't include unneccessary stuff
|
|
continue()
|
|
endif()
|
|
if ((GETTEXT_FOUND OR NO_TRANSLATION OR PCSX2_CORE) AND "${path}" MATCHES "/locale/") # Generate locales with gettext instead of copying them from bin
|
|
continue()
|
|
endif()
|
|
pcsx2_resource(${target} ${path} ${CMAKE_SOURCE_DIR}/bin/resources/)
|
|
endforeach()
|
|
|
|
get_property(PCSX2_SOURCE_DIR GLOBAL PROPERTY PCSX2_SOURCE_DIR)
|
|
get_property(PCSX2_METAL_SHADERS GLOBAL PROPERTY PCSX2_METAL_SHADERS)
|
|
|
|
if(QT_BUILD)
|
|
get_target_property(MOC_EXECUTABLE_LOCATION Qt6::moc IMPORTED_LOCATION)
|
|
get_filename_component(QT_BINARY_DIRECTORY "${MOC_EXECUTABLE_LOCATION}" DIRECTORY)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
if(NOT PCSX2_CORE)
|
|
target_sources(${target} PRIVATE
|
|
${PCSX2_SOURCE_DIR}/GS/GS.rc
|
|
${PCSX2_SOURCE_DIR}/PAD/Windows/PAD.rc
|
|
${PCSX2_SOURCE_DIR}/SPU2/Windows/SPU2.rc
|
|
${PCSX2_SOURCE_DIR}/USB/usb-pad/dx/versionproxy.rc
|
|
${PCSX2_SOURCE_DIR}/USB/usb-pad/raw/raw-config.rc
|
|
)
|
|
endif()
|
|
target_sources(${target} PRIVATE
|
|
${PCSX2_SOURCE_DIR}/PCSX2.rc
|
|
${PCSX2_SOURCE_DIR}/windows/wxResources.rc
|
|
${PCSX2_SOURCE_DIR}/windows/PCSX2.manifest
|
|
)
|
|
set_target_properties(${target} PROPERTIES WIN32_EXECUTABLE TRUE)
|
|
if(MSVC)
|
|
install(FILES $<TARGET_PDB_FILE:${target}> DESTINATION ${CMAKE_SOURCE_DIR}/bin)
|
|
endif()
|
|
if(QT_BUILD)
|
|
find_program(WINDEPLOYQT_EXE windeployqt HINTS "${QT_BINARY_DIRECTORY}")
|
|
install(CODE "execute_process(COMMAND \"${WINDEPLOYQT_EXE}\" \"${CMAKE_SOURCE_DIR}/bin/pcsx2-qt.exe\" --plugindir ${CMAKE_SOURCE_DIR}/bin/QtPlugins --no-compiler-runtime --no-system-d3d-compiler)")
|
|
install(CODE "file(WRITE \"${CMAKE_SOURCE_DIR}/bin/qt.conf\" \"[Paths]\\nPlugins = ./QtPlugins\")")
|
|
endif()
|
|
endif()
|
|
|
|
if(APPLE)
|
|
if(CMAKE_GENERATOR MATCHES "Xcode")
|
|
# If we're generating an xcode project, you can just add the shaders to the main pcsx2 target and xcode will deal with them properly
|
|
# This will make sure xcode supplies code completion, etc (if you use a custom command, it won't)
|
|
set_target_properties(${target} PROPERTIES
|
|
XCODE_ATTRIBUTE_MTL_ENABLE_DEBUG_INFO INCLUDE_SOURCE
|
|
)
|
|
foreach(shader IN LISTS PCSX2_METAL_SHADERS)
|
|
target_sources(${target} PRIVATE ${PCSX2_SOURCE_DIR}/${shader})
|
|
set_source_files_properties(${PCSX2_SOURCE_DIR}/${shader} PROPERTIES LANGUAGE METAL)
|
|
endforeach()
|
|
else()
|
|
function(generateMetallib std triple outputName)
|
|
set(pcsx2GSMetalShaderOut)
|
|
set(flags
|
|
-ffast-math
|
|
$<$<NOT:$<CONFIG:Release,MinSizeRel>>:-gline-tables-only>
|
|
$<$<NOT:$<CONFIG:Release,MinSizeRel>>:-MO>
|
|
)
|
|
foreach(shader IN LISTS PCSX2_METAL_SHADERS)
|
|
set(shaderOut ${CMAKE_CURRENT_BINARY_DIR}/${outputName}/${shader}.air)
|
|
list(APPEND pcsx2GSMetalShaderOut ${shaderOut})
|
|
get_filename_component(shaderDir ${shaderOut} DIRECTORY)
|
|
add_custom_command(OUTPUT ${shaderOut}
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${shaderDir}
|
|
COMMAND xcrun metal ${flags} -std=${std} -target ${triple} -o ${shaderOut} -c ${PCSX2_SOURCE_DIR}/${shader}
|
|
DEPENDS ${PCSX2_SOURCE_DIR}/${shader} ${PCSX2_SOURCE_DIR}/GS/Renderers/Metal/GSMTLSharedHeader.h ${PCSX2_SOURCE_DIR}/GS/Renderers/Metal/GSMTLShaderCommon.h
|
|
)
|
|
set(metallib ${CMAKE_CURRENT_BINARY_DIR}/${outputName}.metallib)
|
|
endforeach()
|
|
add_custom_command(OUTPUT ${metallib}
|
|
COMMAND xcrun metallib -o ${metallib} ${pcsx2GSMetalShaderOut}
|
|
DEPENDS ${pcsx2GSMetalShaderOut}
|
|
)
|
|
pcsx2_resource(${target} ${metallib} ${CMAKE_CURRENT_BINARY_DIR})
|
|
endfunction()
|
|
generateMetallib(macos-metal2.0 air64-apple-macos10.13 default)
|
|
generateMetallib(macos-metal2.2 air64-apple-macos10.15 Metal22)
|
|
generateMetallib(macos-metal2.3 air64-apple-macos11.0 Metal23)
|
|
endif()
|
|
|
|
set_target_properties(${target} PROPERTIES
|
|
MACOSX_BUNDLE true
|
|
MACOSX_BUNDLE_INFO_PLIST "${PCSX2_SOURCE_DIR}/gui/Resources/Info.plist.in"
|
|
OUTPUT_NAME PCSX2
|
|
)
|
|
|
|
pcsx2_resource(${target} ${PCSX2_SOURCE_DIR}/gui/Resources/PCSX2.icns ${PCSX2_SOURCE_DIR}/gui/Resources)
|
|
|
|
# If they say to skip postprocess bundle, leave the target in but make it so they have
|
|
# to manually run it
|
|
if (SKIP_POSTPROCESS_BUNDLE)
|
|
set(postprocessBundleType "")
|
|
else()
|
|
set(postprocessBundleType ALL)
|
|
endif()
|
|
|
|
if(QT_BUILD)
|
|
find_program(MACDEPLOYQT_EXE macdeployqt HINTS "${QT_BINARY_DIRECTORY}")
|
|
add_custom_target(pcsx2-postprocess-bundle ${postprocessBundleType}
|
|
COMMAND "${MACDEPLOYQT_EXE}" "$<TARGET_FILE_DIR:${target}>/../.." -no-strip
|
|
)
|
|
else()
|
|
add_custom_target(pcsx2-postprocess-bundle ${postprocessBundleType}
|
|
COMMAND ${CMAKE_COMMAND} "-DPCSX2_BUNDLE_PATH=$<TARGET_FILE_DIR:${target}>/../.."
|
|
-P ${CMAKE_SOURCE_DIR}/cmake/Pcsx2PostprocessBundle.cmake
|
|
)
|
|
endif()
|
|
add_dependencies(pcsx2-postprocess-bundle ${target})
|
|
endif()
|
|
endfunction()
|
|
|
|
if (NOT QT_BUILD)
|
|
setup_main_executable(PCSX2)
|
|
endif()
|
|
|
|
if(NOT DISABLE_SETCAP AND NOT PCSX2_CORE AND NOT WIN32)
|
|
if(PACKAGE_MODE)
|
|
install(CODE "execute_process(COMMAND /bin/bash -c \"echo 'Enabling networking capability on Linux...';set -x; [ -f '${CMAKE_INSTALL_FULL_BINDIR}/pcsx2' ] && sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' '${CMAKE_INSTALL_FULL_BINDIR}/pcsx2'; set +x\")")
|
|
else()
|
|
install(CODE "execute_process(COMMAND /bin/bash -c \"echo 'Enabling networking capability on Linux...';set -x; [ -f '${CMAKE_SOURCE_DIR}/bin/pcsx2' ] && sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' '${CMAKE_SOURCE_DIR}/bin/pcsx2'; set +x\")")
|
|
endif()
|
|
endif()
|
|
|
|
source_groups_from_vcxproj_filters(pcsx2.vcxproj.filters)
|
|
|
|
# Unix-only files aren't in the vcxproj.filters
|
|
source_group(System/Ps2/DEV9 REGULAR_EXPRESSION DEV9/*)
|
|
source_group(System/Ps2/PAD FILES ${pcsx2PADSources} ${pcsx2PADHeaders})
|
|
source_group(System/Ps2/SPU2 REGULAR_EXPRESSION SPU2/*)
|
|
source_group(System/Ps2/USB REGULAR_EXPRESSION USB/*)
|
|
source_group(System/Ps2/GS/Renderers/Metal REGULAR_EXPRESSION GS/Renderers/Metal/*)
|
|
|
|
# Generated resource files
|
|
source_group(Resources/GUI FILES ${pcsx2GuiResources})
|
|
source_group(Resources/PAD FILES ${pcsx2PADResources})
|
|
source_group(Resources/Recording FILES ${pcsx2RecordingVirtualPadResources})
|
|
source_group(Resources REGULAR_EXPRESSION ${CMAKE_CURRENT_BINARY_DIR}/*)
|