add_library(rpcs3_emu STATIC cache_utils.cpp games_config.cpp IdManager.cpp localized_string.cpp savestate_utils.cpp System.cpp system_config.cpp system_config_types.cpp system_progress.cpp system_utils.cpp vfs_config.cpp VFS.cpp GDB.cpp title.cpp perf_meter.cpp perf_monitor.cpp IPC_config.cpp IPC_socket.cpp ) if(USE_ASAN) set_source_files_properties(../../Utilities/Thread.cpp PROPERTIES COMPILE_DEFINITIONS USE_ASAN) endif() target_link_libraries(rpcs3_emu PRIVATE 3rdparty::zlib 3rdparty::yaml-cpp PUBLIC 3rdparty::libevdev 3rdparty::flatbuffers) find_package(Threads REQUIRED) target_link_libraries(rpcs3_emu PUBLIC Threads::Threads) # For stdafx.h target_include_directories(rpcs3_emu PUBLIC ${PROJECT_SOURCE_DIR}/rpcs3) # Utilities target_sources(rpcs3_emu PRIVATE ../util/atomic.cpp ../util/media_utils.cpp ../util/video_provider.cpp ../util/logs.cpp ../util/yaml.cpp ../util/vm_native.cpp ../util/dyn_lib.cpp ../util/sysinfo.cpp ../util/cpu_stats.cpp ../../Utilities/bin_patch.cpp ../../Utilities/cheat_info.cpp ../../Utilities/cond.cpp ../../Utilities/Config.cpp ../../Utilities/File.cpp ../../Utilities/JIT.cpp ../../Utilities/LUrlParser.cpp ../../Utilities/mutex.cpp ../../Utilities/rXml.cpp ../../Utilities/sema.cpp ../../Utilities/simple_ringbuf.cpp ../../Utilities/stack_trace.cpp ../../Utilities/StrFmt.cpp ../../Utilities/Thread.cpp ../../Utilities/version.cpp ) if(APPLE) target_sources(rpcs3_emu PRIVATE ../../darwin/util/sysinfo_darwin.mm ) endif() target_include_directories(rpcs3_emu PUBLIC "${CMAKE_SOURCE_DIR}") target_link_libraries(rpcs3_emu PUBLIC 3rdparty::pugixml) if(MSVC) set_source_files_properties("../../Utilities/JIT.cpp" PROPERTIES COMPILE_FLAGS /GR- SKIP_PRECOMPILE_HEADERS ON ) else() set_source_files_properties("../../Utilities/JIT.cpp" PROPERTIES COMPILE_FLAGS -fno-rtti SKIP_PRECOMPILE_HEADERS ON ) endif() if(MSVC) set_source_files_properties("../util/yaml.cpp" PROPERTIES COMPILE_FLAGS /EHsc SKIP_PRECOMPILE_HEADERS ON ) else() set_source_files_properties("../util/yaml.cpp" PROPERTIES COMPILE_FLAGS -fexceptions SKIP_PRECOMPILE_HEADERS ON ) endif() # Crypto target_sources(rpcs3_emu PRIVATE ../Crypto/aes.cpp ../Crypto/aesni.cpp ../Crypto/decrypt_binaries.cpp ../Crypto/ec.cpp ../Crypto/key_vault.cpp ../Crypto/lz.cpp ../Crypto/md5.cpp ../Crypto/sha1.cpp ../Crypto/sha256.cpp ../Crypto/unedat.cpp ../Crypto/unpkg.cpp ../Crypto/unself.cpp ../Crypto/utils.cpp ) # Loader target_sources(rpcs3_emu PRIVATE ../Loader/disc.cpp ../Loader/ELF.cpp ../Loader/mself.cpp ../Loader/PSF.cpp ../Loader/PUP.cpp ../Loader/TAR.cpp ../Loader/TROPUSR.cpp ../Loader/TRP.cpp ) # Audio target_sources(rpcs3_emu PRIVATE Audio/audio_resampler.cpp Audio/AudioDumper.cpp Audio/AudioBackend.cpp Audio/Cubeb/CubebBackend.cpp Audio/Cubeb/cubeb_enumerator.cpp ) if(USE_FAUDIO) find_package(SDL2) if(SDL2_FOUND AND NOT SDL2_VERSION VERSION_LESS 2.0.9) target_sources(rpcs3_emu PRIVATE Audio/FAudio/FAudioBackend.cpp Audio/FAudio/faudio_enumerator.cpp ) target_link_libraries(rpcs3_emu PUBLIC 3rdparty::faudio) endif() endif() if(WIN32) target_include_directories(rpcs3_emu PUBLIC "${PROJECT_SOURCE_DIR}/3rdparty/XAudio2Redist/include") if(MSVC) target_link_libraries(rpcs3_emu PRIVATE "${PROJECT_SOURCE_DIR}/3rdparty/XAudio2Redist/libs/xaudio2_9redist.lib") target_link_options(rpcs3_emu PRIVATE /DELAYLOAD:xaudio2_9redist.dll) else() target_link_libraries(rpcs3_emu PRIVATE xaudio2_8) endif() target_sources(rpcs3_emu PRIVATE Audio/XAudio2/XAudio2Backend.cpp Audio/XAudio2/xaudio2_enumerator.cpp ) endif() target_link_libraries(rpcs3_emu PUBLIC 3rdparty::openal) target_link_libraries(rpcs3_emu PUBLIC 3rdparty::cubeb) target_link_libraries(rpcs3_emu PUBLIC 3rdparty::soundtouch) target_link_libraries(rpcs3_emu PUBLIC 3rdparty::miniupnpc) # Cell target_sources(rpcs3_emu PRIVATE Cell/MFC.cpp Cell/PPUAnalyser.cpp Cell/PPUDisAsm.cpp Cell/PPUFunction.cpp Cell/PPUInterpreter.cpp Cell/PPUModule.cpp Cell/PPUThread.cpp Cell/PPUTranslator.cpp Cell/RawSPUThread.cpp Cell/SPUAnalyser.cpp Cell/SPUASMJITRecompiler.cpp Cell/SPUDisAsm.cpp Cell/SPUInterpreter.cpp Cell/SPURecompiler.cpp Cell/SPUThread.cpp Cell/lv2/lv2.cpp Cell/lv2/sys_bdemu.cpp Cell/lv2/sys_btsetting.cpp Cell/lv2/sys_cond.cpp Cell/lv2/sys_console.cpp Cell/lv2/sys_crypto_engine.cpp Cell/lv2/sys_config.cpp Cell/lv2/sys_dbg.cpp Cell/lv2/sys_event.cpp Cell/lv2/sys_event_flag.cpp Cell/lv2/sys_fs.cpp Cell/lv2/sys_game.cpp Cell/lv2/sys_gamepad.cpp Cell/lv2/sys_gpio.cpp Cell/lv2/sys_hid.cpp Cell/lv2/sys_interrupt.cpp Cell/lv2/sys_io.cpp Cell/lv2/sys_lwcond.cpp Cell/lv2/sys_lwmutex.cpp Cell/lv2/sys_memory.cpp Cell/lv2/sys_mmapper.cpp Cell/lv2/sys_mutex.cpp Cell/lv2/sys_net.cpp Cell/lv2/sys_net/lv2_socket.cpp Cell/lv2/sys_net/lv2_socket_native.cpp Cell/lv2/sys_net/lv2_socket_raw.cpp Cell/lv2/sys_net/lv2_socket_p2p.cpp Cell/lv2/sys_net/lv2_socket_p2ps.cpp Cell/lv2/sys_net/network_context.cpp Cell/lv2/sys_net/nt_p2p_port.cpp Cell/lv2/sys_net/sys_net_helpers.cpp Cell/lv2/sys_overlay.cpp Cell/lv2/sys_ppu_thread.cpp Cell/lv2/sys_process.cpp Cell/lv2/sys_prx.cpp Cell/lv2/sys_rsx.cpp Cell/lv2/sys_rsxaudio.cpp Cell/lv2/sys_rwlock.cpp Cell/lv2/sys_semaphore.cpp Cell/lv2/sys_spu.cpp Cell/lv2/sys_sm.cpp Cell/lv2/sys_ss.cpp Cell/lv2/sys_storage.cpp Cell/lv2/sys_time.cpp Cell/lv2/sys_timer.cpp Cell/lv2/sys_trace.cpp Cell/lv2/sys_tty.cpp Cell/lv2/sys_uart.cpp Cell/lv2/sys_usbd.cpp Cell/lv2/sys_vm.cpp Cell/Modules/cellAdec.cpp Cell/Modules/cellAtrac.cpp Cell/Modules/cellAtracMulti.cpp Cell/Modules/cellAudio.cpp Cell/Modules/cellAudioOut.cpp Cell/Modules/cellAuthDialog.cpp Cell/Modules/cellAvconfExt.cpp Cell/Modules/cellBgdl.cpp Cell/Modules/cellCamera.cpp Cell/Modules/cellCelp8Enc.cpp Cell/Modules/cellCelpEnc.cpp Cell/Modules/cellCrossController.cpp Cell/Modules/cellDaisy.cpp Cell/Modules/cellDmux.cpp Cell/Modules/cellDtcpIpUtility.cpp Cell/Modules/cellFiber.cpp Cell/Modules/cellFont.cpp Cell/Modules/cellFontFT.cpp Cell/Modules/cell_FreeType2.cpp Cell/Modules/cellFs.cpp Cell/Modules/cellGame.cpp Cell/Modules/cellGameExec.cpp Cell/Modules/cellGcmSys.cpp Cell/Modules/cellGem.cpp Cell/Modules/cellGifDec.cpp Cell/Modules/cellHttp.cpp Cell/Modules/cellHttpUtil.cpp Cell/Modules/cellImeJp.cpp Cell/Modules/cellJpgDec.cpp Cell/Modules/cellJpgEnc.cpp Cell/Modules/cellKb.cpp Cell/Modules/cellKey2char.cpp Cell/Modules/cellL10n.cpp Cell/Modules/cellLibprof.cpp Cell/Modules/cellMic.cpp Cell/Modules/cellMouse.cpp Cell/Modules/cellMsgDialog.cpp Cell/Modules/cellMusic.cpp Cell/Modules/cellMusicDecode.cpp Cell/Modules/cellMusicSelectionContext.cpp Cell/Modules/cellMusicExport.cpp Cell/Modules/cellNetAoi.cpp Cell/Modules/cellNetCtl.cpp Cell/Modules/cellOskDialog.cpp Cell/Modules/cellOvis.cpp Cell/Modules/cellPad.cpp Cell/Modules/cellPamf.cpp Cell/Modules/cellPesmUtility.cpp Cell/Modules/cellPhotoDecode.cpp Cell/Modules/cellPhotoExport.cpp Cell/Modules/cellPhotoImport.cpp Cell/Modules/cellPngDec.cpp Cell/Modules/cellPngEnc.cpp Cell/Modules/cellPrint.cpp Cell/Modules/cellRec.cpp Cell/Modules/cellRemotePlay.cpp Cell/Modules/cellResc.cpp Cell/Modules/cellRtcAlarm.cpp Cell/Modules/cellRtc.cpp Cell/Modules/cellRudp.cpp Cell/Modules/cellSail.cpp Cell/Modules/cellSailRec.cpp Cell/Modules/cellSaveData.cpp Cell/Modules/cellScreenshot.cpp Cell/Modules/cellSearch.cpp Cell/Modules/cellSheap.cpp Cell/Modules/cellSpudll.cpp Cell/Modules/cellSpurs.cpp Cell/Modules/cellSpursJq.cpp Cell/Modules/cellSpursSpu.cpp Cell/Modules/cellSsl.cpp Cell/Modules/cellStorage.cpp Cell/Modules/cellSubDisplay.cpp Cell/Modules/cellSync2.cpp Cell/Modules/cellSync.cpp Cell/Modules/cellSysconf.cpp Cell/Modules/cellSysCache.cpp Cell/Modules/cellSysmodule.cpp Cell/Modules/cellSysutilAp.cpp Cell/Modules/cellSysutilAvc2.cpp Cell/Modules/cellSysutilAvc.cpp Cell/Modules/cellSysutilAvcExt.cpp Cell/Modules/cellSysutil.cpp Cell/Modules/cellSysutilMisc.cpp Cell/Modules/cellSysutilNpEula.cpp Cell/Modules/cellUsbd.cpp Cell/Modules/cellUsbpspcm.cpp Cell/Modules/cellUserInfo.cpp Cell/Modules/cellVdec.cpp Cell/Modules/cellVideoExport.cpp Cell/Modules/cellVideoOut.cpp Cell/Modules/cellVideoPlayerUtility.cpp Cell/Modules/cellVideoUpload.cpp Cell/Modules/cellVoice.cpp Cell/Modules/cellVpost.cpp Cell/Modules/cellWebBrowser.cpp Cell/Modules/HLE_PATCHES.cpp Cell/Modules/libad_async.cpp Cell/Modules/libad_core.cpp Cell/Modules/libmedi.cpp Cell/Modules/libmixer.cpp Cell/Modules/libsnd3.cpp Cell/Modules/libsynth2.cpp Cell/Modules/sceNp2.cpp Cell/Modules/sceNpClans.cpp Cell/Modules/sceNpCommerce2.cpp Cell/Modules/sceNp.cpp Cell/Modules/sceNpMatchingInt.cpp Cell/Modules/sceNpSns.cpp Cell/Modules/sceNpTrophy.cpp Cell/Modules/sceNpTus.cpp Cell/Modules/sceNpUtil.cpp Cell/Modules/StaticHLE.cpp Cell/Modules/sys_crashdump.cpp Cell/Modules/sys_game_.cpp Cell/Modules/sys_heap.cpp Cell/Modules/sys_io_.cpp Cell/Modules/sys_libc_.cpp Cell/Modules/sys_libc.cpp Cell/Modules/sys_lv2dbg.cpp Cell/Modules/sys_lwcond_.cpp Cell/Modules/sys_lwmutex_.cpp Cell/Modules/sys_mempool.cpp Cell/Modules/sys_mmapper_.cpp Cell/Modules/sys_net_.cpp Cell/Modules/sys_ppu_thread_.cpp Cell/Modules/sys_prx_.cpp Cell/Modules/sysPrxForUser.cpp Cell/Modules/sys_rsxaudio_.cpp Cell/Modules/sys_spinlock.cpp Cell/Modules/sys_spu_.cpp Cell/Modules/libfs_utility_init.cpp ) if(NOT MSVC) set_source_files_properties(Cell/PPUTranslator.cpp PROPERTIES COMPILE_FLAGS -fno-rtti SKIP_PRECOMPILE_HEADERS ON ) endif() target_link_libraries(rpcs3_emu PRIVATE 3rdparty::stblib 3rdparty::libpng) # CPU target_sources(rpcs3_emu PRIVATE CPU/CPUThread.cpp CPU/CPUTranslator.cpp ) target_link_libraries(rpcs3_emu PUBLIC 3rdparty::llvm 3rdparty::asmjit) # Io target_sources(rpcs3_emu PRIVATE Io/camera_config.cpp Io/recording_config.cpp Io/interception.cpp Io/KeyboardHandler.cpp Io/pad_config.cpp Io/pad_config_types.cpp Io/PadHandler.cpp Io/pad_types.cpp Io/usb_device.cpp Io/usb_vfs.cpp Io/Infinity.cpp Io/Skylander.cpp Io/GHLtar.cpp Io/midi_config_types.cpp Io/RB3MidiKeyboard.cpp Io/RB3MidiGuitar.cpp Io/Buzz.cpp Io/Turntable.cpp Io/usio.cpp ) target_link_libraries(rpcs3_emu PRIVATE 3rdparty::rtmidi ) # Np target_sources(rpcs3_emu PRIVATE NP/fb_helpers.cpp NP/np_cache.cpp NP/np_contexts.cpp NP/np_dnshook.cpp NP/np_handler.cpp NP/np_helpers.cpp NP/np_notifications.cpp NP/np_requests.cpp NP/signaling_handler.cpp NP/np_structs_extra.cpp NP/rpcn_client.cpp NP/rpcn_config.cpp NP/upnp_config.cpp NP/upnp_handler.cpp ) # Memory target_sources(rpcs3_emu PRIVATE Memory/vm.cpp ) # RSX target_sources(rpcs3_emu PRIVATE RSX/gcm_enums.cpp RSX/gcm_printing.cpp RSX/GSRender.cpp RSX/RSXFIFO.cpp RSX/rsx_methods.cpp RSX/rsx_vertex_data.cpp RSX/RSXOffload.cpp RSX/RSXTexture.cpp RSX/RSXThread.cpp RSX/RSXZCULL.cpp RSX/rsx_utils.cpp RSX/RSXDisAsm.cpp RSX/Common/BufferUtils.cpp RSX/Common/surface_store.cpp RSX/Common/TextureUtils.cpp RSX/Common/texture_cache.cpp RSX/Null/NullGSRender.cpp RSX/Overlays/HomeMenu/overlay_home_menu.cpp RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp RSX/Overlays/HomeMenu/overlay_home_menu_message_box.cpp RSX/Overlays/HomeMenu/overlay_home_menu_page.cpp RSX/Overlays/HomeMenu/overlay_home_menu_settings.cpp RSX/Overlays/overlay_animated_icon.cpp RSX/Overlays/overlay_animation.cpp RSX/Overlays/overlay_controls.cpp RSX/Overlays/overlay_cursor.cpp RSX/Overlays/overlay_edit_text.cpp RSX/Overlays/overlay_fonts.cpp RSX/Overlays/overlay_list_view.cpp RSX/Overlays/overlay_manager.cpp RSX/Overlays/overlay_media_list_dialog.cpp RSX/Overlays/overlay_message.cpp RSX/Overlays/overlay_message_dialog.cpp RSX/Overlays/overlay_osk.cpp RSX/Overlays/overlay_osk_panel.cpp RSX/Overlays/overlay_perf_metrics.cpp RSX/Overlays/overlay_progress_bar.cpp RSX/Overlays/overlay_save_dialog.cpp RSX/Overlays/overlay_compile_notification.cpp RSX/Overlays/overlay_user_list_dialog.cpp RSX/Overlays/overlay_utils.cpp RSX/Overlays/overlays.cpp RSX/Overlays/overlay_trophy_notification.cpp RSX/Overlays/Shaders/shader_loading_dialog.cpp RSX/Overlays/Shaders/shader_loading_dialog_native.cpp RSX/Program/CgBinaryFragmentProgram.cpp RSX/Program/CgBinaryVertexProgram.cpp RSX/Program/FragmentProgramDecompiler.cpp RSX/Program/GLSLCommon.cpp RSX/Program/program_util.cpp RSX/Program/ProgramStateCache.cpp RSX/Program/VertexProgramDecompiler.cpp RSX/Capture/rsx_capture.cpp RSX/Capture/rsx_replay.cpp RSX/GL/glutils/blitter.cpp RSX/GL/glutils/buffer_object.cpp RSX/GL/glutils/capabilities.cpp RSX/GL/glutils/common.cpp RSX/GL/glutils/fbo.cpp RSX/GL/glutils/image.cpp RSX/GL/glutils/program.cpp RSX/GL/glutils/ring_buffer.cpp RSX/GL/glutils/sampler.cpp RSX/GL/GLCommonDecompiler.cpp RSX/GL/GLCompute.cpp RSX/GL/GLDraw.cpp RSX/GL/GLFragmentProgram.cpp RSX/GL/GLGSRender.cpp RSX/GL/GLHelpers.cpp RSX/GL/GLOverlays.cpp RSX/GL/GLPipelineCompiler.cpp RSX/GL/GLPresent.cpp RSX/GL/GLRenderTargets.cpp RSX/GL/GLShaderInterpreter.cpp RSX/GL/GLTexture.cpp RSX/GL/GLVertexBuffers.cpp RSX/GL/GLVertexProgram.cpp RSX/GL/GLTextureCache.cpp RSX/GL/OpenGL.cpp ) if(TARGET 3rdparty_vulkan) target_sources(rpcs3_emu PRIVATE RSX/VK/upscalers/fsr1/fsr_pass.cpp RSX/VK/vkutils/barriers.cpp RSX/VK/vkutils/buffer_object.cpp RSX/VK/vkutils/chip_class.cpp RSX/VK/vkutils/commands.cpp RSX/VK/vkutils/data_heap.cpp RSX/VK/vkutils/descriptors.cpp RSX/VK/vkutils/image.cpp RSX/VK/vkutils/image_helpers.cpp RSX/VK/vkutils/scratch.cpp RSX/VK/vkutils/sync.cpp RSX/VK/vkutils/memory.cpp RSX/VK/vkutils/device.cpp RSX/VK/vkutils/sampler.cpp RSX/VK/vkutils/shared.cpp RSX/VK/VKAsyncScheduler.cpp RSX/VK/VKCommandStream.cpp RSX/VK/VKCommonDecompiler.cpp RSX/VK/VKCompute.cpp RSX/VK/VKDMA.cpp RSX/VK/VKDraw.cpp RSX/VK/VKFormats.cpp RSX/VK/VKFragmentProgram.cpp RSX/VK/VKFramebuffer.cpp RSX/VK/VKGSRender.cpp RSX/VK/VKHelpers.cpp RSX/VK/VKMemAlloc.cpp RSX/VK/VKOverlays.cpp RSX/VK/VKPipelineCompiler.cpp RSX/VK/VKPresent.cpp RSX/VK/VKProgramPipeline.cpp RSX/VK/VKQueryPool.cpp RSX/VK/VKRenderPass.cpp RSX/VK/VKRenderTargets.cpp RSX/VK/VKResolveHelper.cpp RSX/VK/VKResourceManager.cpp RSX/VK/VKShaderInterpreter.cpp RSX/VK/VKTexture.cpp RSX/VK/VKVertexBuffers.cpp RSX/VK/VKVertexProgram.cpp RSX/VK/VKTextureCache.cpp ) endif() target_link_libraries(rpcs3_emu PUBLIC 3rdparty::ffmpeg 3rdparty::sdl2 3rdparty::opengl 3rdparty::stblib 3rdparty::vulkan 3rdparty::glew 3rdparty::libusb 3rdparty::wolfssl PRIVATE 3rdparty::xxhash ) if(APPLE) check_function_exists(clock_gettime HAVE_CLOCK_GETTIME) if (HAVE_CLOCK_GETTIME) target_compile_definitions(rpcs3_emu PUBLIC -DHAVE_CLOCK_GETTIME) endif() endif() if(USE_PRECOMPILED_HEADERS) target_precompile_headers(rpcs3_emu PRIVATE "${PROJECT_SOURCE_DIR}/rpcs3/stdafx.h") endif()