From 4213b4a409deef004a6aa45e55d69bb3ef02d621 Mon Sep 17 00:00:00 2001 From: TellowKrinkle Date: Sat, 17 Apr 2021 15:30:03 -0500 Subject: [PATCH] cmake: Use imported targets --- CMakeLists.txt | 12 +- cmake/CheckLib.cmake | 17 ++- cmake/FindPCAP.cmake | 10 ++ cmake/FindPulseAudio.cmake | 8 + cmake/FindVtune.cmake | 8 + cmake/FindXCB.cmake | 53 ------- cmake/Findlibsamplerate.cmake | 25 --- cmake/Pcsx2Utils.cmake | 18 +++ cmake/SearchForStuff.cmake | 193 ++++-------------------- common/src/Utilities/CMakeLists.txt | 35 ++--- common/src/x86emitter/CMakeLists.txt | 15 +- common/vsprops/3rdpartyDeps.props | 6 +- pcsx2/CMakeLists.txt | 69 +++++---- pcsx2/SPU2/Linux/ConfigSoundTouch.cpp | 2 +- pcsx2/SPU2/Timestretcher.cpp | 2 +- pcsx2/SPU2/Windows/ConfigSoundtouch.cpp | 2 +- 16 files changed, 143 insertions(+), 332 deletions(-) delete mode 100644 cmake/FindXCB.cmake delete mode 100644 cmake/Findlibsamplerate.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 07fa4b5bc7..fd06fc404d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ project(Pcsx2) # # Setting it to a range tells it that it supports the features on the newer # versions as well, avoiding setting policies. -cmake_minimum_required(VERSION 3.3.0...3.17) +cmake_minimum_required(VERSION 3.10...3.17) # Variable to check that people use the good file set(TOP_CMAKE_WAS_SOURCED TRUE) @@ -42,15 +42,11 @@ if(NOT NO_TRANSLATION) endif() # make common -if(common_libs) - add_subdirectory(common/src/Utilities) - add_subdirectory(common/src/x86emitter) -endif() +add_subdirectory(common/src/Utilities) +add_subdirectory(common/src/x86emitter) # make pcsx2 -if(EXISTS "${CMAKE_SOURCE_DIR}/pcsx2" AND pcsx2_core) - add_subdirectory(pcsx2) -endif() +add_subdirectory(pcsx2) # tests if(ACTUALLY_ENABLE_TESTS) diff --git a/cmake/CheckLib.cmake b/cmake/CheckLib.cmake index d36daf39e6..f4b85a1f62 100644 --- a/cmake/CheckLib.cmake +++ b/cmake/CheckLib.cmake @@ -7,16 +7,12 @@ endmacro() macro(check_lib var lib) set(_arg_list ${ARGN}) - if(PKG_CONFIG_FOUND AND NOT ${var}_FOUND AND NOT CMAKE_CROSSCOMPILING) + if(PKG_CONFIG_FOUND AND NOT CMAKE_CROSSCOMPILING) string(TOLOWER ${lib} lower_lib) - pkg_search_module(${var} QUIET ${lower_lib}) + pkg_search_module(${var} QUIET IMPORTED_TARGET ${lower_lib}) endif() - if(${var}_FOUND) - include_directories(${${var}_INCLUDE_DIRS}) - # Make sure include directories for headers found using find_path below - # are re-added when reconfiguring - include_directories(${${var}_INCLUDE}) + if(TARGET PkgConfig::${var}) _internal_message("-- ${var} found pkg") else() find_library(${var}_LIBRARIES ${lib}) @@ -27,7 +23,12 @@ macro(check_lib var lib) endif() if(${var}_LIBRARIES AND ${var}_INCLUDE) - include_directories(${${var}_INCLUDE}) + add_library(PkgConfig::${var} UNKNOWN IMPORTED GLOBAL) + # Imitate what pkg-config would have found + set_target_properties(PkgConfig::${var} PROPERTIES + IMPORTED_LOCATION "${${var}_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${${var}_INCLUDE}" + ) _internal_message("-- ${var} found") set(${var}_FOUND 1 CACHE INTERNAL "") elseif(${var}_LIBRARIES) diff --git a/cmake/FindPCAP.cmake b/cmake/FindPCAP.cmake index 90fab58067..4712b31b5e 100644 --- a/cmake/FindPCAP.cmake +++ b/cmake/FindPCAP.cmake @@ -11,6 +11,9 @@ # libpcap if the module has problems finding the # proper installation path. # +# Imported Targets: +# PCAP::PCAP The libpcap library, if found +# # Variables defined by this module: # # PCAP_FOUND System has libpcap, include and library dirs found @@ -67,6 +70,13 @@ set(CMAKE_REQUIRED_LIBRARIES ${PCAP_LIBRARY}) check_function_exists(pcap_get_pfring_id HAVE_PF_RING) set(CMAKE_REQUIRED_LIBRARIES) +if(PCAP_LIBRARY AND NOT TARGET PCAP::PCAP) + add_library(PCAP::PCAP UNKNOWN IMPORTED GLOBAL) + set_target_properties(PCAP::PCAP PROPERTIES + IMPORTED_LOCATION "${PCAP_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${PCAP_INCLUDE_DIR}") +endif() + mark_as_advanced( PCAP_ROOT_DIR PCAP_INCLUDE_DIR diff --git a/cmake/FindPulseAudio.cmake b/cmake/FindPulseAudio.cmake index c2548aec4d..ac4f810946 100644 --- a/cmake/FindPulseAudio.cmake +++ b/cmake/FindPulseAudio.cmake @@ -2,6 +2,7 @@ # # PULSEAUDIO_FOUND - True if PULSEAUDIO_INCLUDE_DIR & # PULSEAUDIO_LIBRARY are found +# PulseAudio::PulseAudio - Imported target for PulseAudio, if found # PULSEAUDIO_LIBRARIES - Set when PULSEAUDIO_LIBRARY is found # PULSEAUDIO_INCLUDE_DIRS - Set when PULSEAUDIO_INCLUDE_DIR is found # @@ -35,6 +36,13 @@ find_package_handle_standard_args(PulseAudio VERSION_VAR PULSEAUDIO_VERSION_STRING ) +if(PULSEAUDIO_LIBRARY AND NOT TARGET PulseAudio::PulseAudio) + add_library(PulseAudio::PulseAudio UNKNOWN IMPORTED GLOBAL) + set_target_properties(PulseAudio::PulseAudio PROPERTIES + IMPORTED_LOCATION "${PULSEAUDIO_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${PULSEAUDIO_INCLUDE_DIR}") +endif() + if(PULSEAUDIO_FOUND) set(PULSEAUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY}) set(PULSEAUDIO_INCLUDE_DIRS ${PULSEAUDIO_INCLUDE_DIR}) diff --git a/cmake/FindVtune.cmake b/cmake/FindVtune.cmake index be885270e8..172b0c1e99 100644 --- a/cmake/FindVtune.cmake +++ b/cmake/FindVtune.cmake @@ -1,6 +1,7 @@ # Find Intel's VTUNE tool # VTUNE_FOUND found Vtune +# Vtune::Vtune Imported target, if found # VTUNE_INCLUDE_DIRS include path to jitprofiling.h # VTUNE_LIBRARIES path to vtune libs @@ -29,5 +30,12 @@ endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Vtune DEFAULT_MSG VTUNE_LIBRARIES VTUNE_INCLUDE_DIRS) +if(VTUNE_LIBRARIES AND NOT TARGET Vtune::Vtune) + add_library(Vtune::Vtune UNKNOWN IMPORTED GLOBAL) + set_target_properties(Vtune::Vtune PROPERTIES + IMPORTED_LOCATION "${VTUNE_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${VTUNE_INCLUDE_DIRS}") +endif() + mark_as_advanced(VTUNE_FOUND VTUNE_INCLUDE_DIRS VTUNE_LIBRARIES) diff --git a/cmake/FindXCB.cmake b/cmake/FindXCB.cmake deleted file mode 100644 index c17669bcaa..0000000000 --- a/cmake/FindXCB.cmake +++ /dev/null @@ -1,53 +0,0 @@ -#.rst: -# FindXCB -# ------- -# -# Find XCB libraries -# -# Tries to find xcb libraries on unix systems. -# -# - Be sure to set the COMPONENTS to the components you want to link to -# - The XCB_LIBRARIES variable is set ONLY to your COMPONENTS list -# - To use only a specific component check the XCB_LIBRARIES_${COMPONENT} variable -# -# The following values are defined -# -# :: -# -# XCB_FOUND - True if xcb is available -# XCB_INCLUDE_DIRS - Include directories for xcb -# XCB_LIBRARIES - List of libraries for xcb -# XCB_DEFINITIONS - List of definitions for xcb -# -#============================================================================= -# Copyright (c) 2015 Jari Vetoniemi -# -# Distributed under the OSI-approved BSD License (the "License"); -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= - -include(FeatureSummary) -set_package_properties(XCB PROPERTIES - URL "http://xcb.freedesktop.org/" - DESCRIPTION "X protocol C-language Binding") - -find_package(PkgConfig) -pkg_check_modules(PC_XCB QUIET xcb ${XCB_FIND_COMPONENTS}) - -find_library(XCB_LIBRARIES xcb HINTS ${PC_XCB_LIBRARY_DIRS}) -find_path(XCB_INCLUDE_DIRS xcb/xcb.h PATH_SUFFIXES xcb HINTS ${PC_XCB_INCLUDE_DIRS}) - -foreach(COMPONENT ${XCB_FIND_COMPONENTS}) - find_library(XCB_LIBRARIES_${COMPONENT} ${COMPONENT} HINTS ${PC_XCB_LIBRARY_DIRS}) - list(APPEND XCB_LIBRARIES ${XCB_LIBRARIES_${COMPONENT}}) - mark_as_advanced(XCB_LIBRARIES_${COMPONENT}) -endforeach(COMPONENT ${XCB_FIND_COMPONENTS}) - -set(XCB_DEFINITIONS ${PC_XCB_CFLAGS_OTHER}) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS) -mark_as_advanced(XCB_INCLUDE_DIRS XCB_LIBRARIES XCB_DEFINITIONS) diff --git a/cmake/Findlibsamplerate.cmake b/cmake/Findlibsamplerate.cmake deleted file mode 100644 index a23d25ec97..0000000000 --- a/cmake/Findlibsamplerate.cmake +++ /dev/null @@ -1,25 +0,0 @@ -# - Try to find libsamplerate -# Once done this will define -# -# LIBSAMPLERATE_FOUND - system has libsamplerate -# LIBSAMPLERATE_INCLUDE_DIRS - the libsamplerate include directory -# LIBSAMPLERATE_LIBRARIES - The libsamplerate libraries - -find_package(PkgConfig) -if(PKG_CONFIG_FOUND) - pkg_check_modules (LIBSAMPLERATE samplerate) - list(APPEND LIBSAMPLERATE_INCLUDE_DIRS ${LIBSAMPLERATE_INCLUDEDIR}) -endif() - -if(NOT LIBSAMPLERATE_FOUND) - find_path( LIBSAMPLERATE_INCLUDE_DIRS "samplerate.h" - PATH_SUFFIXES "samplerate" ) - find_library( LIBSAMPLERATE_LIBRARIES samplerate) -endif() - -# handle the QUIETLY and REQUIRED arguments and set SAMPLERATE_FOUND to TRUE if -# all listed variables are TRUE -include( "FindPackageHandleStandardArgs" ) -find_package_handle_standard_args(libsamplerate DEFAULT_MSG LIBSAMPLERATE_INCLUDE_DIRS LIBSAMPLERATE_LIBRARIES) - -mark_as_advanced(LIBSAMPLERATE_INCLUDE_DIRS LIBSAMPLERATE_LIBRARIES) diff --git a/cmake/Pcsx2Utils.cmake b/cmake/Pcsx2Utils.cmake index e54b2ca6e6..51eca62336 100644 --- a/cmake/Pcsx2Utils.cmake +++ b/cmake/Pcsx2Utils.cmake @@ -95,6 +95,24 @@ function(check_no_parenthesis_in_path) endif() endfunction() +# Makes an imported target if it doesn't exist. Useful for when find scripts from older versions of cmake don't make the targets you need +function(make_imported_target_if_missing target lib) + if(${lib}_FOUND AND NOT TARGET ${target}) + add_library(_${lib} INTERFACE) + target_link_libraries(_${lib} INTERFACE "${${lib}_LIBRARIES}") + target_include_directories(_${lib} INTERFACE "${${lib}_INCLUDE_DIRS}") + add_library(${target} ALIAS _${lib}) + endif() +endfunction() + +# like add_library(new ALIAS old) but avoids add_library cannot create ALIAS target "new" because target "old" is imported but not globally visible. on older cmake +function(alias_library new old) + string(REPLACE "::" "" library_no_namespace ${old}) + add_library(_alias_${library_no_namespace} INTERFACE) + target_link_libraries(_alias_${library_no_namespace} INTERFACE ${old}) + add_library(${new} ALIAS _alias_${library_no_namespace}) +endfunction() + #NOTE: this macro is used to get rid of whitespace and newlines. macro(append_flags target flags) if(flags STREQUAL "") diff --git a/cmake/SearchForStuff.cmake b/cmake/SearchForStuff.cmake index 9e9c6b202e..b58ad515d3 100644 --- a/cmake/SearchForStuff.cmake +++ b/cmake/SearchForStuff.cmake @@ -3,22 +3,25 @@ #------------------------------------------------------------------------------- ## Use cmake package to find module if (Linux) - find_package(ALSA) + find_package(ALSA REQUIRED) + make_imported_target_if_missing(ALSA::ALSA ALSA) endif() -find_package(PCAP) -find_package(LibXml2) -find_package(Freetype) # GS OSD +find_package(PCAP REQUIRED) +find_package(LibXml2 REQUIRED) +make_imported_target_if_missing(LibXml2::LibXml2 LibXml2) +find_package(Freetype REQUIRED) # GS OSD find_package(Gettext) # translation tool if(EXISTS ${PROJECT_SOURCE_DIR}/.git) find_package(Git) endif() -find_package(LibLZMA) +find_package(LibLZMA REQUIRED) +make_imported_target_if_missing(LibLZMA::LibLZMA LIBLZMA) # Using find_package OpenGL without either setting your opengl preference to GLVND or LEGACY # is deprecated as of cmake 3.11. set(OpenGL_GL_PREFERENCE GLVND) -find_package(OpenGL) -find_package(PNG) +find_package(OpenGL REQUIRED) +find_package(PNG REQUIRED) find_package(Vtune) # Does not require the module (allow to compile non-wx plugins) @@ -86,23 +89,25 @@ else() endif() endif() -find_package(wxWidgets COMPONENTS base core adv) -find_package(ZLIB) +find_package(wxWidgets REQUIRED base core adv) +include(${wxWidgets_USE_FILE}) +make_imported_target_if_missing(wxWidgets::all wxWidgets) + +find_package(ZLIB REQUIRED) ## Use pcsx2 package to find module include(FindLibc) -## Use pcsx2 package to find module -include(Findlibsamplerate) - ## Use pcsx2 package to find module include(FindPulseAudio) ## Use CheckLib package to find module include(CheckLib) + if(Linux) check_lib(EGL EGL EGL/egl.h) check_lib(X11_XCB X11-xcb X11/Xlib-xcb.h) + check_lib(XCB xcb xcb/xcb.h) check_lib(AIO aio libaio.h) # There are two udev pkg config files - udev.pc (wrong), libudev.pc (correct) # When cross compiling, pkg-config will be skipped so we have to look for @@ -117,106 +122,41 @@ endif() if(PORTAUDIO_API) check_lib(PORTAUDIO portaudio portaudio.h pa_linux_alsa.h) endif() -check_lib(SOUNDTOUCH SoundTouch soundtouch/SoundTouch.h) +check_lib(SOUNDTOUCH SoundTouch SoundTouch.h PATH_SUFFIXES soundtouch) +check_lib(SAMPLERATE samplerate samplerate.h) if(SDL2_API) check_lib(SDL2 SDL2 SDL.h PATH_SUFFIXES SDL2) + alias_library(SDL::SDL PkgConfig::SDL2) else() # Tell cmake that we use SDL as a library and not as an application set(SDL_BUILDING_LIBRARY TRUE) - find_package(SDL) + find_package(SDL REQUIRED) endif() if(UNIX) - find_package(X11) + find_package(X11 REQUIRED) + make_imported_target_if_missing(X11::X11 X11) # Most plugins (if not all) and PCSX2 core need gtk2, so set the required flags if (GTK2_API) - find_package(GTK2 REQUIRED gtk) + find_package(GTK2 REQUIRED gtk) + alias_library(GTK::gtk GTK2::gtk) else() if(CMAKE_CROSSCOMPILING) find_package(GTK3 REQUIRED gtk) + alias_library(GTK::gtk GTK3::gtk) else() check_lib(GTK3 gtk+-3.0 gtk/gtk.h) + alias_library(GTK::gtk PkgConfig::GTK3) endif() endif() - find_package(XCB) endif() #---------------------------------------- # Use system include #---------------------------------------- -if(UNIX) - if(GTK3_FOUND) - include_directories(${GTK3_INCLUDE_DIRS}) - # A lazy solution - set(GTK2_LIBRARIES ${GTK3_LIBRARIES}) - elseif(GTK2_FOUND) - include_directories(${GTK2_INCLUDE_DIRS}) - endif() - - if(X11_FOUND) - include_directories(${X11_INCLUDE_DIR}) - endif() -endif() - -if(ALSA_FOUND) - include_directories(${ALSA_INCLUDE_DIRS}) -endif() - -if(CG_FOUND) - include_directories(${CG_INCLUDE_DIRS}) -endif() - -if(JPEG_FOUND) - include_directories(${JPEG_INCLUDE_DIR}) -endif() - -if(GLEW_FOUND) - include_directories(${GLEW_INCLUDE_DIR}) -endif() - -if(OPENGL_FOUND) - include_directories(${OPENGL_INCLUDE_DIR}) -endif() - -if(SDL_FOUND AND NOT SDL2_API) - include_directories(${SDL_INCLUDE_DIR}) -endif() - -if(USE_VTUNE AND VTUNE_FOUND) - include_directories(${VTUNE_INCLUDE_DIRS}) -endif() - -if(wxWidgets_FOUND) - include(${wxWidgets_USE_FILE}) -endif() - -if(PCAP_FOUND) - include_directories(${PCAP_INCLUDE_DIR}) -endif() - -if(LIBSAMPLERATE_FOUND) - include_directories(${LIBSAMPLERATE_INCLUDE_DIR}) -endif() - -if(PULSEAUDIO_FOUND) - include_directories(${PULSEAUDIO_INCLUDE_DIR}) -endif() - -if(LIBXML2_FOUND) - include_directories(${LIBXML2_INCLUDE_DIRS}) -endif() - -if(ZLIB_FOUND) - include_directories(${ZLIB_INCLUDE_DIRS}) -endif() - find_package(HarfBuzz) -if(HarfBuzz_FOUND) -include_directories(${HarfBuzz_INCLUDE_DIRS}) -endif() - set(ACTUALLY_ENABLE_TESTS ${ENABLE_TESTS}) if(ENABLE_TESTS) if(NOT EXISTS "${CMAKE_SOURCE_DIR}/3rdparty/gtest/CMakeLists.txt") @@ -225,17 +165,6 @@ if(ENABLE_TESTS) endif() endif() -#---------------------------------------- -# Use project-wide include directories -#---------------------------------------- -include_directories( - ${CMAKE_SOURCE_DIR}/common/include - ${CMAKE_SOURCE_DIR}/common/include/Utilities - ${CMAKE_SOURCE_DIR}/common/include/x86emitter - # File generated by Cmake - ${CMAKE_BINARY_DIR}/common/include -) - #---------------------------------------- # Check correctness of the parameter # Note: wxWidgets_INCLUDE_DIRS must be defined @@ -291,71 +220,3 @@ if(NOT USE_SYSTEM_YAML) endif() add_subdirectory(3rdparty/libchdr/libchdr EXCLUDE_FROM_ALL) - - - -#------------------------------------------------------------------------------- -# Dependency message print -#------------------------------------------------------------------------------- -set(msg_dep_common_libs "check these libraries -> wxWidgets (>=3.0), aio") -set(msg_dep_pcsx2 "check these libraries -> wxWidgets (>=3.0), gtk2, zlib (>=1.2.4), pcsx2 common libs") - -macro(print_dep str dep) - if (PACKAGE_MODE) - message(FATAL_ERROR "${str}:${dep}") - else() - message(STATUS "${str}:${dep}") - endif() -endmacro(print_dep) - -#------------------------------------------------------------------------------- -# Pcsx2 core & common libs -#------------------------------------------------------------------------------- -# Check for additional dependencies. -# If all dependencies are available, including OS, build it -#------------------------------------------------------------------------------- -if (GTK2_FOUND OR GTK3_FOUND) - set(GTKn_FOUND TRUE) -elseif(APPLE) # Not we have but that we don't change all if(gtkn) entries - set(GTKn_FOUND TRUE) -else() - set(GTKn_FOUND FALSE) -endif() - -if(SDL_FOUND OR SDL2_FOUND) - set(SDLn_FOUND TRUE) -else() - set(SDLn_FOUND FALSE) -endif() - -if(wxWidgets_FOUND) - set(common_libs TRUE) -elseif(NOT EXISTS "${CMAKE_SOURCE_DIR}/common/src") - set(common_libs FALSE) -else() - set(common_libs FALSE) - print_dep("Skip build of common libraries: missing dependencies" "${msg_dep_common_libs}") -endif() - -# Common dependancy -if(wxWidgets_FOUND AND ZLIB_FOUND AND common_libs AND NOT (Linux AND NOT AIO_FOUND)) - if(OPENGL_FOUND AND X11_FOUND AND GTKn_FOUND AND ZLIB_FOUND AND PNG_FOUND AND FREETYPE_FOUND AND LIBLZMA_FOUND AND ((EGL_FOUND AND X11_XCB_FOUND) OR APPLE)) - set(pcsx2_core TRUE) - else() - print_dep("Skip build of pcsx2 core: missing dependencies" "${msg_dep_pcsx2}") - set(pcsx2_core FALSE) - endif() -elseif(NOT EXISTS "${CMAKE_SOURCE_DIR}/pcsx2") - set(pcsx2_core FALSE) -else() - set(pcsx2_core FALSE) - print_dep("Skip build of pcsx2 core: missing dependencies" "${msg_dep_pcsx2}") -endif() - - - -# Linux, BSD, use gtk2, but not OSX -if(UNIX AND pcsx2_core AND NOT GTKn_FOUND AND NOT APPLE) - set(pcsx2_core FALSE) - print_dep("Skip build of pcsx2 core: missing dependencies" "${msg_dep_pcsx2}") -endif() diff --git a/common/src/Utilities/CMakeLists.txt b/common/src/Utilities/CMakeLists.txt index c32a257089..8f9e00a0e6 100644 --- a/common/src/Utilities/CMakeLists.txt +++ b/common/src/Utilities/CMakeLists.txt @@ -5,13 +5,6 @@ if(NOT TOP_CMAKE_WAS_SOURCED) It is advice to delete all wrongly generated cmake stuff => CMakeFiles & CMakeCache.txt") endif(NOT TOP_CMAKE_WAS_SOURCED) -set(Output Utilities) - -set(CommonFlags - ) - -set(UtilitiesFinalFlags ${CommonFlags}) - # variable with all sources of this library set(UtilitiesSources VirtualMemory.cpp @@ -108,21 +101,13 @@ set(UtilitiesFinalSources ${UtilitiesHeaders} ) -set(UtilitiesFinalLibs - ${LIBC_LIBRARIES} # Gold (new linux linker) does not get automatically dependency of dependency - ${wxWidgets_LIBRARIES} - yaml-cpp chdr-static -) - -add_pcsx2_lib(${Output} "${UtilitiesFinalSources}" "${UtilitiesFinalLibs}" "${UtilitiesFinalFlags}") -add_pcsx2_lib(${Output}_NO_TLS "${UtilitiesFinalSources}" "${UtilitiesFinalLibs}" "${UtilitiesFinalFlags} -DPCSX2_THREAD_LOCAL=0") - -target_compile_features(${Output} PUBLIC cxx_std_17) -target_compile_features(${Output}_NO_TLS PUBLIC cxx_std_17) -target_include_directories(${Output} PUBLIC ../../../3rdparty/include) -target_include_directories(${Output}_NO_TLS PUBLIC ../../../3rdparty/include) - -if(COMMAND target_precompile_headers) - target_precompile_headers(${Output} PRIVATE PrecompiledHeader.h) - target_precompile_headers(${Output}_NO_TLS PRIVATE PrecompiledHeader.h) -endif() +foreach(library Utilities Utilities_NO_TLS) + add_library(${library} "${UtilitiesFinalSources}") + target_link_libraries(${library} PRIVATE ${LIBC_LIBRARIES} PUBLIC wxWidgets::all) + target_compile_features(${library} PUBLIC cxx_std_17) + target_include_directories(${library} PUBLIC ../../../3rdparty/include ../../include ../../include/Utilities PRIVATE .) + if(COMMAND target_precompile_headers) + target_precompile_headers(${library} PRIVATE PrecompiledHeader.h) + endif() +endforeach() +target_compile_definitions(Utilities_NO_TLS PUBLIC PCSX2_THREAD_LOCAL=0) diff --git a/common/src/x86emitter/CMakeLists.txt b/common/src/x86emitter/CMakeLists.txt index e1f4a90635..2348113634 100644 --- a/common/src/x86emitter/CMakeLists.txt +++ b/common/src/x86emitter/CMakeLists.txt @@ -5,12 +5,6 @@ if(NOT TOP_CMAKE_WAS_SOURCED) It is advice to delete all wrongly generated cmake stuff => CMakeFiles & CMakeCache.txt") endif(NOT TOP_CMAKE_WAS_SOURCED) - -set(Output x86emitter) - -set(CommonFlags - ) - set(x86emitterFinalFlags ${CommonFlags}) # variable with all sources of this library @@ -69,12 +63,13 @@ set(x86emitterFinalSources ) set(x86emitterFinalLibs - ${wxWidgets_LIBRARIES} + wxWidgets::all ) -add_pcsx2_lib(${Output} "${x86emitterFinalSources}" "${x86emitterFinalLibs}" "${x86emitterFinalFlags}") -target_compile_features(${Output} PUBLIC cxx_std_17) +add_pcsx2_lib(x86emitter "${x86emitterFinalSources}" "${x86emitterFinalLibs}" "${x86emitterFinalFlags}") +target_compile_features(x86emitter PUBLIC cxx_std_17) +target_include_directories(x86emitter PUBLIC ../../include PRIVATE ../../include/x86emitter) if(COMMAND target_precompile_headers) - target_precompile_headers(${Output} PRIVATE PrecompiledHeader.h) + target_precompile_headers(x86emitter PRIVATE PrecompiledHeader.h) endif() diff --git a/common/vsprops/3rdpartyDeps.props b/common/vsprops/3rdpartyDeps.props index 9397bc349f..0eb19ad429 100644 --- a/common/vsprops/3rdpartyDeps.props +++ b/common/vsprops/3rdpartyDeps.props @@ -1,4 +1,4 @@ - + <_ProjectFileVersion>10.0.30128.1 @@ -6,10 +6,10 @@ - $(SolutionDir)3rdparty\;$(SolutionDir)3rdparty\soundtouch\;$(SolutionDir)3rdparty\yaml-cpp\yaml-cpp\include\;$(SolutionDir)3rdparty\fmt\fmt\include\;$(SolutionDir)3rdparty\libchdr\libchdr\include;$(SolutionDir)3rdparty\include\;%(AdditionalIncludeDirectories) + $(SolutionDir)3rdparty\;$(SolutionDir)3rdparty\soundtouch\soundtouch\;$(SolutionDir)3rdparty\yaml-cpp\yaml-cpp\include\;$(SolutionDir)3rdparty\fmt\fmt\include\;$(SolutionDir)3rdparty\libchdr\libchdr\include;$(SolutionDir)3rdparty\include\;%(AdditionalIncludeDirectories) $(SolutionDir)deps\$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) - \ No newline at end of file + diff --git a/pcsx2/CMakeLists.txt b/pcsx2/CMakeLists.txt index 1bc8564c27..de72770f9d 100644 --- a/pcsx2/CMakeLists.txt +++ b/pcsx2/CMakeLists.txt @@ -1202,11 +1202,16 @@ if(Linux) ) set(Platform_Libs - ${LIBUDEV_LIBRARIES} - ${X11_LIBRARIES} - ${X11_XCB_LIBRARIES} - ${XCB_LIBRARIES} + PkgConfig::AIO + PkgConfig::EGL + PkgConfig::LIBUDEV + PkgConfig::X11_XCB + PkgConfig::XCB + X11::X11 + ALSA::ALSA ) +elseif(UNIX AND NOT APPLE) + set(Platform_Libs X11::X11) endif() # Windows @@ -1240,41 +1245,32 @@ set(pcsx2FinalLibs Utilities x86emitter fmt::fmt - ${wxWidgets_LIBRARIES} - ${GTK2_LIBRARIES} - ${ZLIB_LIBRARIES} - ${AIO_LIBRARIES} - ${GCOV_LIBRARIES} - ${ALSA_LIBRARIES} - ${SOUNDTOUCH_LIBRARIES} - ${SDL2_LIBRARIES} - ${PCAP_LIBRARY} - ${LIBSAMPLERATE_LIBRARIES} - ${LIBXML2_LIBRARIES} - ${LIBC_LIBRARIES} - ${PNG_LIBRARIES} - ${FREETYPE_LIBRARIES} - ${LIBLZMA_LIBRARIES} - ${OPENGL_LIBRARIES} - ${EGL_LIBRARIES} + yaml-cpp + chdr-static + wxWidgets::all + GTK::gtk + HarfBuzz::HarfBuzz + ZLIB::ZLIB + PkgConfig::SOUNDTOUCH + SDL::SDL + PCAP::PCAP + PkgConfig::SAMPLERATE + LibXml2::LibXml2 + OpenGL::GL + PNG::PNG + Freetype::Freetype + LibLZMA::LibLZMA ${Platform_Libs} ) if(PORTAUDIO_FOUND) - set(pcsx2FinalLibs ${pcsx2FinalLibs} ${PORTAUDIO_LIBRARIES}) + set(pcsx2FinalLibs ${pcsx2FinalLibs} PkgConfig::PORTAUDIO) endif() if(PULSEAUDIO_FOUND) - set(pcsx2FinalLibs ${pcsx2FinalLibs} ${PULSEAUDIO_LIBRARIES}) + set(pcsx2FinalLibs ${pcsx2FinalLibs} PulseAudio::PulseAudio) endif() -# additonal include directories -include_directories( - gui - x86 - ${CMAKE_BINARY_DIR}/pcsx2/gui -) - ### Generate the resources files file(MAKE_DIRECTORY ${res_bin}) @@ -1294,12 +1290,20 @@ foreach(res_file IN ITEMS endforeach() if(USE_VTUNE) - set(pcsx2FinalLibs ${pcsx2FinalLibs} ${VTUNE_LIBRARIES}) + set(pcsx2FinalLibs ${pcsx2FinalLibs} Vtune::Vtune) endif() add_pcsx2_executable(${Output} "${pcsx2FinalSources}" "${pcsx2FinalLibs}" "${pcsx2FinalFlags}") target_compile_features(${Output} PRIVATE cxx_std_17) +# additonal include directories +target_include_directories(${Output} PRIVATE + gui + x86 + ${CMAKE_BINARY_DIR}/pcsx2/gui + ${CMAKE_BINARY_DIR}/common/include/ +) + if(COMMAND target_precompile_headers) message("Using precompiled headers.") target_precompile_headers(${Output} PRIVATE PrecompiledHeader.h) @@ -1311,6 +1315,9 @@ if (APPLE) # Obviously not being able to make those arrays executable would be a problem target_link_options(${Output} PRIVATE -Wl,-segprot,__DATA,rwx,rw) + # MacOS relies on X11's GL headers even though it doesn't use X11 + target_include_directories(${Output} PRIVATE ${X11_INCLUDE_DIR}) + set_target_properties(${Output} PROPERTIES MACOSX_BUNDLE true MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/gui/Resources/Info.plist.in" diff --git a/pcsx2/SPU2/Linux/ConfigSoundTouch.cpp b/pcsx2/SPU2/Linux/ConfigSoundTouch.cpp index 7914b427c6..f9a2e39c0d 100644 --- a/pcsx2/SPU2/Linux/ConfigSoundTouch.cpp +++ b/pcsx2/SPU2/Linux/ConfigSoundTouch.cpp @@ -17,7 +17,7 @@ #include "SPU2/Global.h" #include "Dialogs.h" #include "Config.h" -#include "soundtouch/SoundTouch.h" +#include "SoundTouch.h" namespace SoundtouchCfg { diff --git a/pcsx2/SPU2/Timestretcher.cpp b/pcsx2/SPU2/Timestretcher.cpp index 9584c3d588..3a3033288f 100644 --- a/pcsx2/SPU2/Timestretcher.cpp +++ b/pcsx2/SPU2/Timestretcher.cpp @@ -15,7 +15,7 @@ #include "PrecompiledHeader.h" #include "Global.h" -#include "soundtouch/SoundTouch.h" +#include "SoundTouch.h" #include #include diff --git a/pcsx2/SPU2/Windows/ConfigSoundtouch.cpp b/pcsx2/SPU2/Windows/ConfigSoundtouch.cpp index b76c259b4d..0a8df6e0f2 100644 --- a/pcsx2/SPU2/Windows/ConfigSoundtouch.cpp +++ b/pcsx2/SPU2/Windows/ConfigSoundtouch.cpp @@ -17,7 +17,7 @@ #include "SPU2/Global.h" #include "Dialogs.h" -#include "soundtouch/SoundTouch.h" +#include "SoundTouch.h" static int SequenceLenMS = 30; static int SeekWindowMS = 20;