388 lines
7.9 KiB
CMake
388 lines
7.9 KiB
CMake
add_library(common
|
|
Analytics.cpp
|
|
Analytics.h
|
|
Assembler/AssemblerShared.cpp
|
|
Assembler/AssemblerShared.h
|
|
Assembler/AssemblerTables.cpp
|
|
Assembler/AssemblerTables.h
|
|
Assembler/GekkoAssembler.cpp
|
|
Assembler/GekkoAssembler.h
|
|
Assembler/GekkoIRGen.cpp
|
|
Assembler/GekkoIRGen.h
|
|
Assembler/GekkoLexer.cpp
|
|
Assembler/GekkoLexer.h
|
|
Assembler/GekkoParser.cpp
|
|
Assembler/GekkoParser.h
|
|
Assert.h
|
|
BitField.h
|
|
BitSet.h
|
|
BitUtils.h
|
|
BlockingLoop.h
|
|
ChunkFile.h
|
|
CodeBlock.h
|
|
ColorUtil.cpp
|
|
ColorUtil.h
|
|
Common.h
|
|
CommonFuncs.cpp
|
|
CommonFuncs.h
|
|
CommonPaths.h
|
|
CommonTypes.h
|
|
Config/Config.cpp
|
|
Config/Config.h
|
|
Config/ConfigInfo.cpp
|
|
Config/ConfigInfo.h
|
|
Config/Enums.h
|
|
Config/Layer.cpp
|
|
Config/Layer.h
|
|
CPUDetect.h
|
|
Crypto/AES.cpp
|
|
Crypto/AES.h
|
|
Crypto/bn.cpp
|
|
Crypto/bn.h
|
|
Crypto/ec.cpp
|
|
Crypto/ec.h
|
|
Crypto/HMAC.cpp
|
|
Crypto/HMAC.h
|
|
Crypto/SHA1.cpp
|
|
Crypto/SHA1.h
|
|
Debug/MemoryPatches.cpp
|
|
Debug/MemoryPatches.h
|
|
Debug/Threads.h
|
|
Debug/Watches.cpp
|
|
Debug/Watches.h
|
|
DynamicLibrary.cpp
|
|
DynamicLibrary.h
|
|
ENet.cpp
|
|
ENet.h
|
|
EnumFormatter.h
|
|
EnumMap.h
|
|
EnumUtils.h
|
|
Event.h
|
|
FatFsUtil.cpp
|
|
FatFsUtil.h
|
|
FileSearch.cpp
|
|
FileSearch.h
|
|
FileUtil.cpp
|
|
FileUtil.h
|
|
FixedSizeQueue.h
|
|
Flag.h
|
|
FloatUtils.cpp
|
|
FloatUtils.h
|
|
FormatUtil.h
|
|
FPURoundMode.h
|
|
GekkoDisassembler.cpp
|
|
GekkoDisassembler.h
|
|
Hash.cpp
|
|
Hash.h
|
|
HookableEvent.h
|
|
HostDisassembler.cpp
|
|
HostDisassembler.h
|
|
HttpRequest.cpp
|
|
HttpRequest.h
|
|
Image.cpp
|
|
Image.h
|
|
IniFile.cpp
|
|
IniFile.h
|
|
Inline.h
|
|
IOFile.cpp
|
|
IOFile.h
|
|
JitRegister.cpp
|
|
JitRegister.h
|
|
JsonUtil.h
|
|
JsonUtil.cpp
|
|
Lazy.h
|
|
LinearDiskCache.h
|
|
Logging/ConsoleListener.h
|
|
Logging/Log.h
|
|
Logging/LogManager.cpp
|
|
Logging/LogManager.h
|
|
MathUtil.h
|
|
Matrix.cpp
|
|
Matrix.h
|
|
MemArena.h
|
|
MemoryUtil.cpp
|
|
MemoryUtil.h
|
|
MinizipUtil.h
|
|
MsgHandler.cpp
|
|
MsgHandler.h
|
|
NandPaths.cpp
|
|
NandPaths.h
|
|
Network.cpp
|
|
Network.h
|
|
PcapFile.cpp
|
|
PcapFile.h
|
|
Profiler.cpp
|
|
Profiler.h
|
|
QoSSession.cpp
|
|
QoSSession.h
|
|
Random.cpp
|
|
Random.h
|
|
Result.h
|
|
ScopeGuard.h
|
|
SDCardUtil.cpp
|
|
SDCardUtil.h
|
|
Semaphore.h
|
|
SettingsHandler.cpp
|
|
SettingsHandler.h
|
|
SFMLHelper.cpp
|
|
SFMLHelper.h
|
|
SmallVector.h
|
|
SocketContext.cpp
|
|
SocketContext.h
|
|
SpanUtils.h
|
|
SPSCQueue.h
|
|
StringLiteral.h
|
|
StringUtil.cpp
|
|
StringUtil.h
|
|
SymbolDB.cpp
|
|
SymbolDB.h
|
|
Thread.cpp
|
|
Thread.h
|
|
Timer.cpp
|
|
Timer.h
|
|
TimeUtil.cpp
|
|
TimeUtil.h
|
|
TraversalClient.cpp
|
|
TraversalClient.h
|
|
TraversalProto.h
|
|
TypeUtils.h
|
|
Unreachable.h
|
|
UPnP.cpp
|
|
UPnP.h
|
|
VariantUtil.h
|
|
Version.cpp
|
|
Version.h
|
|
WindowSystemInfo.h
|
|
WorkQueueThread.h
|
|
)
|
|
|
|
add_dependencies(common dolphin_scmrev)
|
|
|
|
if(NOT MSVC AND _M_ARM_64)
|
|
set_source_files_properties(
|
|
Crypto/AES.cpp
|
|
Crypto/SHA1.cpp
|
|
PROPERTIES COMPILE_FLAGS "-march=armv8-a+crypto")
|
|
endif()
|
|
|
|
target_link_libraries(common
|
|
PUBLIC
|
|
${CMAKE_THREAD_LIBS_INIT}
|
|
enet::enet
|
|
fmt::fmt
|
|
MbedTLS::mbedtls
|
|
minizip::minizip
|
|
sfml-network
|
|
|
|
PRIVATE
|
|
CURL::libcurl
|
|
FatFs
|
|
Iconv::Iconv
|
|
spng::spng
|
|
${VTUNE_LIBRARIES}
|
|
)
|
|
|
|
if ((DEFINED CMAKE_ANDROID_ARCH_ABI AND CMAKE_ANDROID_ARCH_ABI MATCHES "x86|x86_64") OR
|
|
(NOT DEFINED CMAKE_ANDROID_ARCH_ABI AND _M_X86_64))
|
|
target_link_libraries(common PRIVATE bdisasm)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
target_link_libraries(common
|
|
PRIVATE
|
|
${APPKIT_LIBRARY}
|
|
${COREFOUNDATION_LIBRARY}
|
|
${IOK_LIBRARY}
|
|
)
|
|
elseif(WIN32)
|
|
target_link_libraries(common
|
|
PRIVATE
|
|
kernel32.lib
|
|
shlwapi.lib
|
|
winmm.lib
|
|
)
|
|
if (_M_X86_64)
|
|
target_link_libraries(common PRIVATE opengl32.lib)
|
|
endif()
|
|
elseif (ANDROID)
|
|
target_link_libraries(common
|
|
PRIVATE
|
|
androidcommon
|
|
)
|
|
elseif(HAIKU)
|
|
target_link_libraries(common PRIVATE be GL)
|
|
endif()
|
|
|
|
if(ANDROID)
|
|
target_sources(common PRIVATE
|
|
AndroidAnalytics.cpp
|
|
AndroidAnalytics.h
|
|
Logging/ConsoleListenerDroid.cpp
|
|
MemArenaAndroid.cpp
|
|
)
|
|
elseif(WIN32)
|
|
target_sources(common PRIVATE
|
|
LdrWatcher.cpp
|
|
LdrWatcher.h
|
|
Logging/ConsoleListenerWin.cpp
|
|
MemArenaWin.cpp
|
|
)
|
|
else()
|
|
target_sources(common PRIVATE
|
|
Logging/ConsoleListenerNix.cpp
|
|
MemArenaUnix.cpp
|
|
)
|
|
endif()
|
|
|
|
if(_M_ARM_64)
|
|
target_sources(common PRIVATE
|
|
Arm64Emitter.cpp
|
|
Arm64Emitter.h
|
|
ArmCommon.h
|
|
ArmCPUDetect.cpp
|
|
ArmFPURoundMode.cpp
|
|
)
|
|
else()
|
|
if(_M_X86_64) #X86
|
|
target_sources(common PRIVATE
|
|
x64ABI.cpp
|
|
x64ABI.h
|
|
x64Emitter.cpp
|
|
x64Emitter.h
|
|
x64FPURoundMode.cpp
|
|
x64CPUDetect.cpp
|
|
x64Reg.h
|
|
)
|
|
else() # Generic
|
|
target_sources(common PRIVATE
|
|
GenericFPURoundMode.cpp
|
|
GenericCPUDetect.cpp
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# OpenGL Interface
|
|
target_sources(common PRIVATE
|
|
GL/GLContext.cpp
|
|
GL/GLContext.h
|
|
GL/GLUtil.cpp
|
|
GL/GLUtil.h
|
|
GL/GLExtensions/GLExtensions.cpp
|
|
GL/GLExtensions/GLExtensions.h
|
|
)
|
|
|
|
if(ENABLE_EGL AND EGL_FOUND)
|
|
target_sources(common PRIVATE
|
|
GL/GLInterface/EGL.cpp
|
|
GL/GLInterface/EGL.h
|
|
)
|
|
if(ANDROID)
|
|
target_sources(common PRIVATE
|
|
GL/GLInterface/EGLAndroid.cpp
|
|
GL/GLInterface/EGLAndroid.h
|
|
)
|
|
elseif(ENABLE_X11 AND X11_FOUND)
|
|
target_sources(common PRIVATE
|
|
GL/GLInterface/EGLX11.cpp
|
|
GL/GLInterface/EGLX11.h
|
|
)
|
|
endif()
|
|
target_include_directories(common PRIVATE ${EGL_INCLUDE_DIRS})
|
|
target_link_libraries(common PUBLIC ${EGL_LIBRARIES})
|
|
endif()
|
|
|
|
if(WIN32)
|
|
target_sources(common PRIVATE
|
|
CompatPatches.cpp
|
|
GL/GLInterface/WGL.cpp
|
|
GL/GLInterface/WGL.h
|
|
WindowsRegistry.cpp
|
|
)
|
|
elseif(APPLE)
|
|
target_sources(common PRIVATE
|
|
GL/GLInterface/AGL.h
|
|
GL/GLInterface/AGL.mm
|
|
)
|
|
elseif(HAIKU)
|
|
target_sources(common PRIVATE
|
|
GL/GLInterface/BGL.h
|
|
GL/GLInterface/BGL.cpp
|
|
)
|
|
elseif(ENABLE_X11 AND X11_FOUND)
|
|
target_sources(common PRIVATE
|
|
GL/GLX11Window.cpp
|
|
GL/GLX11Window.h
|
|
GL/GLInterface/GLX.cpp
|
|
GL/GLInterface/GLX.h
|
|
)
|
|
|
|
# GLX has a hard dependency on libGL.
|
|
# Make sure to link to it if using GLX.
|
|
target_link_libraries(common PUBLIC ${OPENGL_LIBRARIES})
|
|
endif()
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
target_link_libraries(common PUBLIC dl rt)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
target_sources(common PRIVATE HRWrap.h HRWrap.cpp)
|
|
endif()
|
|
|
|
if(USE_UPNP)
|
|
target_link_libraries(common PRIVATE Miniupnpc::miniupnpc)
|
|
endif()
|
|
|
|
if(OPROFILE_FOUND)
|
|
target_link_libraries(common PRIVATE OProfile::OProfile)
|
|
endif()
|
|
|
|
if(ENABLE_LLVM)
|
|
find_package(LLVM CONFIG)
|
|
if(LLVM_FOUND)
|
|
message(STATUS "LLVM found, enabling LLVM support in disassembler")
|
|
target_compile_definitions(common PRIVATE HAVE_LLVM)
|
|
# Minimal documentation about LLVM's CMake functions is available here:
|
|
# https://releases.llvm.org/16.0.0/docs/CMake.html#embedding-llvm-in-your-project
|
|
# https://groups.google.com/g/llvm-dev/c/YeEVe7HTasQ?pli=1
|
|
#
|
|
# However, you have to read the source code in any case.
|
|
# Look for LLVM-Config.cmake in your (Unix) system:
|
|
# $ find /usr -name LLVM-Config\\.cmake 2>/dev/null
|
|
llvm_expand_pseudo_components(LLVM_EXPAND_COMPONENTS
|
|
AllTargetsInfos AllTargetsDisassemblers AllTargetsCodeGens
|
|
)
|
|
llvm_config(common USE_SHARED
|
|
mcdisassembler target ${LLVM_EXPAND_COMPONENTS}
|
|
)
|
|
target_include_directories(common PRIVATE ${LLVM_INCLUDE_DIRS})
|
|
endif()
|
|
endif()
|
|
|
|
if(UNIX)
|
|
# Posix networking code needs to be fixed for Windows
|
|
add_executable(traversal_server TraversalServer.cpp)
|
|
target_link_libraries(traversal_server PRIVATE common fmt::fmt)
|
|
if(SYSTEMD_FOUND)
|
|
target_link_libraries(traversal_server PRIVATE ${SYSTEMD_LIBRARIES})
|
|
endif()
|
|
elseif(WIN32)
|
|
find_package(PowerShell REQUIRED)
|
|
execute_process(
|
|
COMMAND ${POWERSHELL_EXE} -Command "[System.Diagnostics.FileVersionInfo]::GetVersionInfo('$ENV{VCToolsRedistDir}vc_redist.x64.exe').ProductVersion"
|
|
OUTPUT_VARIABLE VC_TOOLS_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/build_info.txt.in"
|
|
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/build_info.txt"
|
|
)
|
|
|
|
target_link_libraries(common PRIVATE "-INCLUDE:enableCompatPatches")
|
|
endif()
|
|
|
|
if(MSVC)
|
|
# Add precompiled header
|
|
target_link_libraries(common PRIVATE use_pch)
|
|
endif()
|