mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-13 18:57:48 +00:00

Some games open two USB interfaces, e.g. /dev/usb/oh0 and /dev/usb/hid. This was causing us to run two scanning threads at once, using up more CPU time for scanning than we need to.
396 lines
8.1 KiB
CMake
396 lines
8.1 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
|
|
Contains.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
|
|
Projection.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
|
|
WaitableFlag.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
|
|
)
|
|
elseif(APPLE)
|
|
target_sources(common PRIVATE
|
|
Logging/ConsoleListenerNix.cpp
|
|
MemArenaDarwin.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()
|