mirror of https://github.com/PCSX2/pcsx2.git
633 lines
12 KiB
CMake
633 lines
12 KiB
CMake
# pcsx2
|
|
|
|
# set common flags
|
|
set(CommonFlags
|
|
-fno-guess-branch-probability
|
|
-fno-dse
|
|
-fno-tree-dse
|
|
-fno-strict-aliasing
|
|
-m32
|
|
-march=i486
|
|
-msse
|
|
-msse2
|
|
-pipe
|
|
-Wno-format
|
|
-Wno-unused-parameter
|
|
-Wno-unused-value
|
|
-Wunused-variable)
|
|
|
|
# set warning flags
|
|
set(DebugFlags
|
|
-W
|
|
-g)
|
|
|
|
# set linker flags
|
|
set(LinkerFlags
|
|
-s)
|
|
|
|
# set optimization flags
|
|
set(OptimizationFlags
|
|
-falign-functions
|
|
-falign-jumps
|
|
-falign-labels
|
|
-falign-loops
|
|
-fcaller-saves
|
|
-fcprop-registers
|
|
-fcrossjumping
|
|
-fcse-follow-jumps
|
|
-fcse-skip-blocks
|
|
-fdefer-pop
|
|
-fdelete-null-pointer-checks
|
|
-fgcse
|
|
-fgcse-lm
|
|
-fif-conversion
|
|
-fif-conversion2
|
|
-fmerge-constants
|
|
-foptimize-sibling-calls
|
|
-fpeephole2
|
|
-fregmove
|
|
-freorder-blocks
|
|
-freorder-functions
|
|
-frerun-cse-after-loop
|
|
-fsched-interblock
|
|
-fsched-spec
|
|
-fstrict-overflow
|
|
-fthread-jumps
|
|
-ftree-ccp
|
|
-ftree-ch
|
|
-ftree-copyrename
|
|
-ftree-dce
|
|
-ftree-dominator-opts
|
|
-ftree-fre
|
|
-ftree-lrs
|
|
-ftree-pre
|
|
-ftree-sra
|
|
-ftree-ter
|
|
-ftree-vrp
|
|
-funit-at-a-time)
|
|
|
|
# Debug - Build
|
|
if(CMAKE_BUILD_TYPE STREQUAL Debug)
|
|
# clear flags
|
|
set(CMAKE_C_FLAGS_DEBUG)
|
|
set(CMAKE_CXX_FLAGS_DEBUG)
|
|
|
|
# executable name
|
|
set(pcsx2Name pcsx2-dbg)
|
|
|
|
# add defines
|
|
add_definitions(${CommonFlags} ${DebugFlags} -DPCSX2_DEVBUILD -DPCSX2_DEBUG -DWX_PRECOMP)
|
|
endif(CMAKE_BUILD_TYPE STREQUAL Debug)
|
|
|
|
# Devel - Build
|
|
if(CMAKE_BUILD_TYPE STREQUAL Devel)
|
|
# clear flags
|
|
set(CMAKE_C_FLAGS_DEVEL)
|
|
set(CMAKE_CXX_FLAGS_DEVEL)
|
|
|
|
# executable name
|
|
set(pcsx2Name pcsx2-dev)
|
|
|
|
# add defines
|
|
add_definitions(${CommonFlags} ${OptimizationFlags} -DPCSX2_DEVBUILD -DPCSX2_DEVEL -DWX_PRECOMP)
|
|
endif(CMAKE_BUILD_TYPE STREQUAL Devel)
|
|
|
|
# Release - Build
|
|
if(CMAKE_BUILD_TYPE STREQUAL Release)
|
|
# clear flags
|
|
set(CMAKE_C_FLAGS_RELEASE)
|
|
set(CMAKE_CXX_FLAGS_RELEASE)
|
|
|
|
# executable name
|
|
set(pcsx2Name pcsx2)
|
|
|
|
# add defines
|
|
add_definitions(${CommonFlags} ${OptimizationFlags} ${LinkerFlags} -DWX_PRECOMP)
|
|
endif(CMAKE_BUILD_TYPE STREQUAL Release)
|
|
|
|
# get svn revision and generate svnrev.h
|
|
if(SVN)
|
|
# execute subversion
|
|
Subversion_WC_INFO(${CMAKE_SOURCE_DIR} tmpvar)
|
|
|
|
# write svnrev.h
|
|
file(WRITE ${CMAKE_BINARY_DIR}/pcsx2/svnrev.h "#define SVN_REV ${tmpvar_WC_REVISION} \n#define SVN_MODS 0")
|
|
else(SVN)
|
|
# write svnrev.h
|
|
file(WRITE ${CMAKE_BINARY_DIR}/pcsx2/svnrev.h "#define SVN_REV 0 \n#define SVN_MODS 0")
|
|
endif(SVN)
|
|
|
|
# variable with sources of this executable
|
|
set(pcsx2Sources
|
|
Cache.cpp
|
|
COP0.cpp
|
|
COP2.cpp
|
|
Counters.cpp
|
|
Dump.cpp
|
|
Elfheader.cpp
|
|
FiFo.cpp
|
|
FPU.cpp
|
|
Gif.cpp
|
|
GS.cpp
|
|
GSState.cpp
|
|
Hw.cpp
|
|
HwRead.cpp
|
|
HwWrite.cpp
|
|
Interpreter.cpp
|
|
IopBios.cpp
|
|
IopCounters.cpp
|
|
IopDma.cpp
|
|
IopHw.cpp
|
|
IopIrq.cpp
|
|
IopMem.cpp
|
|
IopSio2.cpp
|
|
# Mdec.cpp
|
|
Memory.cpp
|
|
MMI.cpp
|
|
MTGS.cpp
|
|
Patch.cpp
|
|
Pcsx2Config.cpp
|
|
pcsx2hostfs.cpp
|
|
PluginManager.cpp
|
|
PrecompiledHeader.cpp
|
|
R3000A.cpp
|
|
R3000AInterpreter.cpp
|
|
R3000AOpcodeTables.cpp
|
|
R5900.cpp
|
|
R5900OpcodeImpl.cpp
|
|
R5900OpcodeTables.cpp
|
|
RecoverySystem.cpp
|
|
SaveState.cpp
|
|
ShiftJisToUnicode.cpp
|
|
Sif.cpp
|
|
Sif0.cpp
|
|
Sif1.cpp
|
|
Sio.cpp
|
|
SourceLog.cpp
|
|
SPR.cpp
|
|
Stats.cpp
|
|
System.cpp
|
|
Vif_Commands.cpp
|
|
Vif0_Dma.cpp
|
|
Vif1_Dma.cpp
|
|
Vif1_MFIFO.cpp
|
|
Vif.cpp
|
|
Vif_Codes.cpp
|
|
Vif_Transfer.cpp
|
|
Vif_Unpack.cpp
|
|
Vif_Unpack.inl
|
|
vtlb.cpp
|
|
VU0.cpp
|
|
VUmicro.cpp
|
|
VU0micro.cpp
|
|
VU0microInterp.cpp
|
|
VU1micro.cpp
|
|
VU1microInterp.cpp
|
|
VUflags.cpp
|
|
VUmicroMem.cpp
|
|
VUops.cpp)
|
|
|
|
# variable with sources of this executable
|
|
set(pcsx2Headers
|
|
Cache.h
|
|
cheatscpp.h
|
|
Common.h
|
|
Config.h
|
|
COP0.h
|
|
Counters.h
|
|
Dmac.h
|
|
Dump.h
|
|
Elfheader.h
|
|
Gif.h
|
|
GS.h
|
|
Hardware.h
|
|
HostGui.h
|
|
Hw.h
|
|
IopBios.h
|
|
IopCommon.h
|
|
IopCounters.h
|
|
IopDma.h
|
|
IopHw.h
|
|
IopMem.h
|
|
IopSio2.h
|
|
# Mdec.h
|
|
Memory.h
|
|
MemoryTypes.h
|
|
NakedAsm.h
|
|
Patch.h
|
|
PathDefs.h
|
|
Plugins.h
|
|
PrecompiledHeader.h
|
|
R3000A.h
|
|
R5900Exceptions.h
|
|
R5900.h
|
|
R5900OpcodeTables.h
|
|
SamplProf.h
|
|
SaveState.h
|
|
Sifcmd.h
|
|
Sif.h
|
|
Sio.h
|
|
sio_internal.h
|
|
SPR.h
|
|
Stats.h
|
|
StringUtils.h
|
|
System.h
|
|
Vif_Dma.h
|
|
Vif.h
|
|
Vif_Unpack.h
|
|
vtlb.h
|
|
VUflags.h
|
|
VUmicro.h
|
|
VUops.h)
|
|
|
|
# CDVD sources
|
|
set(pcsx2CDVDSources
|
|
CDVD/CdRom.cpp
|
|
CDVD/CDVDaccess.cpp
|
|
CDVD/CDVD.cpp
|
|
CDVD/CDVDisoReader.cpp
|
|
CDVD/IsoFileFormats.cpp
|
|
CDVD/IsoFileTools.cpp
|
|
CDVD/IsoFS/IsoFile.cpp
|
|
CDVD/IsoFS/IsoFSCDVD.cpp
|
|
CDVD/IsoFS/IsoFS.cpp)
|
|
|
|
# CDVD headers
|
|
set(pcsx2CDVDHeaders
|
|
CDVD/CdRom.h
|
|
CDVD/CDVDaccess.h
|
|
CDVD/CDVD.h
|
|
CDVD/CDVD_internal.h
|
|
CDVD/CDVDisoReader.h
|
|
CDVD/IsoFileFormats.h
|
|
CDVD/IsoFileTools.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)
|
|
|
|
# DebugTools sources
|
|
set(pcsx2DebugToolsSources
|
|
DebugTools/DisR3000A.cpp
|
|
DebugTools/DisR5900asm.cpp
|
|
DebugTools/DisR5900.cpp
|
|
DebugTools/DisVU0Micro.cpp
|
|
DebugTools/DisVU1Micro.cpp)
|
|
|
|
# DebugTools headers
|
|
set(pcsx2DebugToolsHeaders
|
|
DebugTools/Debug.h
|
|
DebugTools/DisASm.h
|
|
DebugTools/DisVUmicro.h
|
|
DebugTools/DisVUops.h)
|
|
|
|
# gui sources
|
|
set(pcsx2GuiSources
|
|
gui/AdvancedDialog.cpp
|
|
gui/AppAssert.cpp
|
|
gui/AppConfig.cpp
|
|
gui/AppCoreThread.cpp
|
|
gui/AppEventSources.cpp
|
|
gui/AppInit.cpp
|
|
gui/AppMain.cpp
|
|
gui/AppRes.cpp
|
|
gui/ConsoleLogger.cpp
|
|
gui/CpuUsageProvider.cpp
|
|
gui/CpuUsageProviderLnx.cpp
|
|
gui/Dialogs/AboutBoxDialog.cpp
|
|
gui/Dialogs/AppConfigDialog.cpp
|
|
gui/Dialogs/AssertionDialog.cpp
|
|
gui/Panels/BaseApplicableConfigPanel.cpp
|
|
gui/Dialogs/BaseConfigurationDialog.cpp
|
|
gui/Dialogs/BaseConfigurationDialog.inl
|
|
gui/Dialogs/BiosSelectorDialog.cpp
|
|
gui/Dialogs/ConfirmationDialogs.cpp
|
|
gui/Dialogs/CreateMemoryCardDialog.cpp
|
|
gui/Dialogs/FirstTimeWizard.cpp
|
|
gui/Dialogs/ImportSettingsDialog.cpp
|
|
gui/Dialogs/LogOptionsDialog.cpp
|
|
gui/Dialogs/PickUserModeDialog.cpp
|
|
gui/Dialogs/StuckThreadDialog.cpp
|
|
gui/Dialogs/SysConfigDialog.cpp
|
|
gui/FrameForGS.cpp
|
|
gui/GlobalCommands.cpp
|
|
gui/i18n.cpp
|
|
gui/IniInterface.cpp
|
|
gui/IsoDropTarget.cpp
|
|
gui/MainFrame.cpp
|
|
gui/MainMenuClicks.cpp
|
|
gui/MemoryCardFile.cpp
|
|
gui/Panels/MemoryCardListPanel.cpp
|
|
gui/Panels/MemoryCardListView.h
|
|
gui/MessageBoxes.cpp
|
|
gui/MSWstuff.cpp
|
|
gui/Panels/AudioPanel.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/MemoryCardsPanel.cpp
|
|
gui/Panels/MiscPanelStuff.cpp
|
|
gui/Panels/PathsPanel.cpp
|
|
gui/Panels/PluginSelectorPanel.cpp
|
|
gui/Panels/SpeedhacksPanel.cpp
|
|
gui/Panels/VideoPanel.cpp
|
|
gui/Plugins.cpp
|
|
gui/pxLogTextCtrl.cpp
|
|
gui/RecentIsoList.cpp
|
|
gui/Saveslots.cpp
|
|
)
|
|
|
|
# gui headers
|
|
set(pcsx2GuiHeaders
|
|
gui/AdvancedDialog.h
|
|
gui/App.h
|
|
gui/ApplyState.h
|
|
gui/AppCommon.h
|
|
gui/AppConfig.h
|
|
gui/AppEventListeners.h
|
|
gui/AppForwardDefs.h
|
|
gui/ConsoleLogger.h
|
|
gui/CpuUsageProvider.h
|
|
gui/Dialogs/ConfigurationDialog.h
|
|
gui/Dialogs/LogOptionsDialog.h
|
|
gui/Dialogs/ModalPopups.h
|
|
gui/i18n.h
|
|
gui/IniInterface.h
|
|
gui/IsoDropTarget.h
|
|
gui/MainFrame.h
|
|
gui/MSWstuff.h
|
|
gui/Panels/ConfigurationPanels.h
|
|
gui/Panels/LogOptionsPanels.h
|
|
gui/RecentIsoList.h
|
|
)
|
|
|
|
# IPU sources
|
|
set(pcsx2IPUSources
|
|
IPU/coroutine.cpp
|
|
IPU/IPU.cpp
|
|
IPU/IPU_Fifo.cpp
|
|
IPU/mpeg2lib/Idct.cpp
|
|
IPU/mpeg2lib/Mpeg.cpp
|
|
IPU/yuv2rgb.cpp)
|
|
|
|
# IPU headers
|
|
set(pcsx2IPUHeaders
|
|
IPU/coroutine.h
|
|
IPU/IPU.h
|
|
IPU/IPU_Fifo.h
|
|
IPU/yuv2rgb.h)
|
|
|
|
# Linux sources
|
|
set(pcsx2LinuxSources
|
|
Linux/LnxHostSys.cpp
|
|
Linux/LnxKeyCodes.cpp)
|
|
|
|
# Linux headers
|
|
set(pcsx2LinuxHeaders
|
|
)
|
|
|
|
# ps2 sources
|
|
set(pcsx2ps2Sources
|
|
ps2/BiosTools.cpp
|
|
ps2/GIFpath.cpp
|
|
ps2/Iop/IopHwRead.cpp
|
|
ps2/Iop/IopHwWrite.cpp)
|
|
|
|
# ps2 headers
|
|
set(pcsx2ps2Headers
|
|
ps2/BiosTools.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)
|
|
|
|
# System sources
|
|
set(pcsx2SystemSources
|
|
System/SysCoreThread.cpp
|
|
System/SysThreadBase.cpp)
|
|
|
|
# System headers
|
|
set(pcsx2SystemHeaders
|
|
System/PageFaultSource.h
|
|
System/SysThreads.h)
|
|
|
|
# Utilities sources
|
|
set(pcsx2UtilitiesSources
|
|
Utilities/FileUtils.cpp)
|
|
|
|
# Utilities headers
|
|
set(pcsx2UtilitiesHeaders
|
|
Utilities/AsciiFile.h)
|
|
|
|
# Windows sources
|
|
set(pcsx2WindowsSources
|
|
windows/cheats/browser.cpp
|
|
windows/cheats/cheats.cpp
|
|
windows/DwmSetup.cpp
|
|
windows/ini.cpp
|
|
windows/PatchBrowser.cpp
|
|
windows/SampleProf.cp
|
|
windows/WinCompressNTFS.cpp
|
|
windows/WinConsolePipe.cpp
|
|
windows/WinSysExec.cpp)
|
|
|
|
# Windows headers
|
|
set(pcsx2WindowsHeaders
|
|
windows/cheats/cheats.h
|
|
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/iMisc.cpp
|
|
x86/iMMI.cpp
|
|
x86/iPsxMem.cpp
|
|
x86/iR3000A.cpp
|
|
x86/iR3000Atables.cpp
|
|
x86/iR5900Misc.cpp
|
|
x86/ir5900tables.cpp
|
|
x86/iVU1micro.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/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_Log.inl
|
|
x86/microVU_Lower.inl
|
|
x86/microVU_Macro.inl
|
|
x86/microVU_Misc.inl
|
|
x86/microVU_Tables.inl
|
|
x86/microVU_Upper.inl
|
|
x86/newVif_Dynarec.cpp
|
|
x86/newVif_Unpack.cpp
|
|
x86/newVif_UnpackSSE.cpp
|
|
x86/sVU_Lower.cpp
|
|
x86/sVU_Micro.cpp
|
|
x86/sVU_Upper.cpp
|
|
x86/sVU_zerorec.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/iR5900Jump.h
|
|
x86/iR5900LoadStore.h
|
|
x86/iR5900Move.h
|
|
x86/iR5900MultDiv.h
|
|
x86/iR5900Shift.h
|
|
x86/microVU.h
|
|
x86/microVU_IR.h
|
|
x86/microVU_Misc.h
|
|
x86/newVif.h
|
|
x86/newVif_BlockBuffer.h
|
|
x86/newVif_HashBucket.h
|
|
x86/newVif_UnpackSSE.h
|
|
x86/sVU_Debug.h
|
|
x86/sVU_Micro.h
|
|
x86/sVU_zerorec.h
|
|
)
|
|
|
|
# colect .asm files
|
|
set(pcsx2AsmFiles
|
|
IPU/acoroutine.asm
|
|
IPU/yuv2rgb.asm
|
|
x86/ix86-32/aVif_proc-32.asm)
|
|
|
|
# collect .S files
|
|
set(pcsx2SSources
|
|
IPU/acoroutine.S
|
|
x86/aVUzerorec.S)
|
|
|
|
# change language of .S-files to c++
|
|
set_source_files_properties(${pcsx2SSources} PROPERTIES LANGUAGE CXX)
|
|
|
|
# common Sources
|
|
set(Common
|
|
${pcsx2Sources}
|
|
${pcsx2Headers}
|
|
${pcsx2CDVDSources}
|
|
${pcsx2CDVDHeaders}
|
|
${pcsx2DebugToolsSources}
|
|
${pcsx2DebugToolsSources}
|
|
${pcsx2GuiSources}
|
|
${pcsx2GuiHeaders}
|
|
${pcsx2IPUSources}
|
|
${pcsx2IPUHeaders}
|
|
${pcsx2ps2Sources}
|
|
${pcsx2ps2Headers}
|
|
${pcsx2SystemSources}
|
|
${pcsx2SystemHeaders}
|
|
${pcsx2UtilitiesSources}
|
|
${pcsx2UtilitiesHeaders}
|
|
${pcsx2x86Sources}
|
|
${pcsx2x86Headers}
|
|
${pcsx2SSources})
|
|
|
|
# platform sources
|
|
# Linux
|
|
if(Linux)
|
|
set(Platform
|
|
${pcsx2LinuxSources}
|
|
${pcsx2LinuxHeaders})
|
|
endif(Linux)
|
|
|
|
# Windows
|
|
if(Windows)
|
|
set(Platform
|
|
${pcsx2WindowsSources}
|
|
${pcsx2WindowsHeaders})
|
|
endif(Windows)
|
|
|
|
# MacOSX
|
|
if(MacOSX)
|
|
set(PlatformSources
|
|
)
|
|
endif(MacOSX)
|
|
|
|
# additonal include directories
|
|
include_directories(.
|
|
gui
|
|
x86
|
|
${CMAKE_BINARY_DIR}/pcsx2)
|
|
|
|
# set runtime output directory
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
|
|
|
|
# add executable
|
|
add_executable(${pcsx2Name}
|
|
${Common}
|
|
${Platform})
|
|
|
|
# add dependencies
|
|
add_dependencies(${pcsx2Name} Resources)
|
|
|
|
# link target with project internal libraries
|
|
target_link_libraries(${pcsx2Name} Utilities x86emitter)
|
|
|
|
# link target with wx
|
|
target_link_libraries(${pcsx2Name} ${wxWidgets_LIBRARIES})
|
|
|
|
if(Linux)
|
|
# link target with gtk2
|
|
target_link_libraries(${pcsx2Name} ${GTK2_LIBRARIES})
|
|
endif(Linux)
|
|
|
|
# link target with zlib
|
|
if(projectZLIB)
|
|
target_link_libraries(${pcsx2Name} zlib)
|
|
else(projectZLIB)
|
|
target_link_libraries(${pcsx2Name} ${ZLIB_LIBRARIES})
|
|
endif(projectZLIB)
|
|
|