[cmake] refactor: Use CPM over submodules #143
12 changed files with 75 additions and 55 deletions
12
.gitmodules
vendored
12
.gitmodules
vendored
|
@ -13,9 +13,6 @@
|
|||
[submodule "cpp-httplib"]
|
||||
path = externals/cpp-httplib
|
||||
url = https://github.com/yhirose/cpp-httplib.git
|
||||
[submodule "vcpkg"]
|
||||
path = externals/vcpkg
|
||||
url = https://github.com/microsoft/vcpkg.git
|
||||
[submodule "cpp-jwt"]
|
||||
path = externals/cpp-jwt
|
||||
url = https://github.com/arun11299/cpp-jwt.git
|
||||
|
@ -31,21 +28,12 @@
|
|||
[submodule "externals/dynarmic/externals/fmt"]
|
||||
path = externals/dynarmic/externals/fmt
|
||||
url = https://github.com/fmtlib/fmt.git
|
||||
[submodule "externals/dynarmic/externals/unordered_dense"]
|
||||
path = externals/dynarmic/externals/unordered_dense
|
||||
url = https://github.com/Lizzie841/unordered_dense.git
|
||||
[submodule "externals/dynarmic/externals/zycore-c"]
|
||||
path = externals/dynarmic/externals/zycore-c
|
||||
url = https://github.com/zyantific/zycore-c.git
|
||||
[submodule "externals/dynarmic/externals/zydis"]
|
||||
path = externals/dynarmic/externals/zydis
|
||||
url = https://github.com/zyantific/zydis.git
|
||||
[submodule "externals/nx_tzdb/tzdb_to_nx/externals/tz/tz"]
|
||||
path = externals/nx_tzdb/tzdb_to_nx/externals/tz/tz
|
||||
url = https://github.com/eggert/tz.git
|
||||
[submodule "externals/sirit/externals/SPIRV-Headers"]
|
||||
path = externals/sirit/externals/SPIRV-Headers
|
||||
url = https://github.com/KhronosGroup/SPIRV-Headers.git
|
||||
[submodule "externals/SPIRV-Tools"]
|
||||
path = externals/SPIRV-Tools
|
||||
url = https://github.com/KhronosGroup/SPIRV-Tools.git
|
||||
|
|
|
@ -58,14 +58,18 @@ else()
|
|||
option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" ON)
|
||||
endif()
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
option(YUZU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" OFF)
|
||||
else()
|
||||
option(YUZU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ON)
|
||||
endif()
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
option(YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" OFF)
|
||||
else()
|
||||
option(YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ON)
|
||||
endif()
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ON "YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES" OFF)
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
option(YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS "Use SPIRV-Tools from externals" OFF)
|
||||
else()
|
||||
|
@ -100,6 +104,7 @@ CMAKE_DEPENDENT_OPTION(YUZU_ROOM_STANDALONE "Enable standalone room executable"
|
|||
|
||||
CMAKE_DEPENDENT_OPTION(YUZU_CMD "Compile the eden-cli executable" ON "NOT ANDROID" OFF)
|
||||
|
||||
# TODO(crueter): remove? cpm?
|
||||
CMAKE_DEPENDENT_OPTION(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
|
||||
|
||||
option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}")
|
||||
|
@ -160,6 +165,8 @@ if (ANDROID)
|
|||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # Workaround for Oboe
|
||||
endif()
|
||||
|
||||
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
|
||||
|
||||
if (YUZU_USE_BUNDLED_VCPKG)
|
||||
if (ANDROID)
|
||||
set(ENV{ANDROID_NDK_HOME} "${ANDROID_NDK}")
|
||||
|
@ -204,7 +211,16 @@ if (YUZU_USE_BUNDLED_VCPKG)
|
|||
list(APPEND VCPKG_MANIFEST_FEATURES "android")
|
||||
endif()
|
||||
|
||||
include(${CMAKE_SOURCE_DIR}/externals/vcpkg/scripts/buildsystems/vcpkg.cmake)
|
||||
include(CPM)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME vcpkg
|
||||
DOWNLOAD_ONLY YES
|
||||
URL "https://github.com/microsoft/vcpkg/archive/ea2a964f93.zip"
|
||||
)
|
||||
|
||||
include(${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake)
|
||||
elseif(NOT "$ENV{VCPKG_TOOLCHAIN_FILE}" STREQUAL "")
|
||||
# Disable manifest mode (use vcpkg classic mode) when using a custom vcpkg installation
|
||||
option(VCPKG_MANIFEST_MODE "")
|
||||
|
@ -324,7 +340,7 @@ if (UNIX)
|
|||
add_definitions(-DYUZU_UNIX=1)
|
||||
endif()
|
||||
|
||||
if (ARCHITECTURE_arm64 AND (ANDROID OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
|
||||
if (ARCHITECTURE_arm64 AND (ANDROID OR APPLE OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
|
||||
set(HAS_NCE 1)
|
||||
add_definitions(-DHAS_NCE=1)
|
||||
endif()
|
||||
|
@ -386,7 +402,6 @@ find_package(fmt 8 REQUIRED)
|
|||
find_package(LLVM MODULE COMPONENTS Demangle)
|
||||
find_package(lz4 REQUIRED)
|
||||
find_package(nlohmann_json 3.8 REQUIRED)
|
||||
find_package(Opus 1.3 MODULE)
|
||||
find_package(RenderDoc MODULE)
|
||||
find_package(SimpleIni MODULE)
|
||||
find_package(stb MODULE)
|
||||
|
@ -395,13 +410,14 @@ find_package(ZLIB 1.2 REQUIRED)
|
|||
find_package(zstd 1.5 REQUIRED)
|
||||
|
||||
# if (NOT YUZU_USE_EXTERNAL_VULKAN_HEADERS)
|
||||
# find_package(VulkanHeaders 1.3.274)
|
||||
# find_package(VulkanHeaders 1.3.274 REQUIRED)
|
||||
# endif()
|
||||
|
||||
# if (NOT YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
|
||||
# find_package(VulkanUtilityLibraries)
|
||||
# find_package(VulkanUtilityLibraries REQUIRED)
|
||||
# endif()
|
||||
|
||||
# TODO(crueter): Work around this
|
||||
if (NOT YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(SPIRV-Tools REQUIRED SPIRV-Tools)
|
||||
|
@ -427,6 +443,10 @@ if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
|
|||
find_package(dynarmic 6.4.0 CONFIG)
|
||||
endif()
|
||||
|
||||
if (ENABLE_CUBEB)
|
||||
find_package(cubeb CONFIG)
|
||||
endif()
|
||||
|
||||
if (USE_DISCORD_PRESENCE)
|
||||
find_package(DiscordRPC MODULE)
|
||||
endif()
|
||||
|
@ -488,8 +508,6 @@ set(FFmpeg_COMPONENTS
|
|||
avutil
|
||||
swscale)
|
||||
|
||||
set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm)
|
||||
|
||||
add_subdirectory(externals)
|
||||
|
||||
if (ENABLE_QT)
|
||||
|
|
12
externals/CMakeLists.txt
vendored
12
externals/CMakeLists.txt
vendored
|
@ -11,8 +11,10 @@ include(CPM)
|
|||
# some of its variables, which is only possible in 3.13+
|
||||
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
|
||||
|
||||
# Disable tests in all externals supporting the standard option name
|
||||
# Disable tests/tools in all externals supporting the standard option name
|
||||
set(BUILD_TESTING OFF)
|
||||
set(BUILD_TESTS OFF)
|
||||
set(BUILD_TOOLS OFF)
|
||||
|
||||
# Build only static externals
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
@ -191,8 +193,12 @@ CPMAddPackage(
|
|||
|
||||
# SPIRV-Tools
|
||||
if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
||||
set(SPIRV_SKIP_EXECUTABLES ON)
|
||||
add_subdirectory(SPIRV-Tools)
|
||||
CPMAddPackage(
|
||||
NAME SPIRV-Tools
|
||||
URL "https://github.com/KhronosGroup/SPIRV-Tools/archive/40eb301f32.zip"
|
||||
OPTIONS
|
||||
"SPIRV_SKIP_EXECUTABLES ON"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Boost headers
|
||||
|
|
1
externals/SPIRV-Tools
vendored
1
externals/SPIRV-Tools
vendored
|
@ -1 +0,0 @@
|
|||
Subproject commit 40eb301f320e1d85ce3bc12798022149eae3eee3
|
11
externals/dynarmic/CMakeLists.txt
vendored
11
externals/dynarmic/CMakeLists.txt
vendored
|
@ -39,8 +39,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
# Disable in-source builds
|
||||
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
|
||||
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
||||
# set(CMAKE_DISABLE_SOURCE_CHANGES ON)
|
||||
# set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
|
||||
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
||||
message(SEND_ERROR "In-source builds are not allowed.")
|
||||
endif()
|
||||
|
@ -144,13 +144,15 @@ if (DYNARMIC_USE_BUNDLED_EXTERNALS)
|
|||
set(CMAKE_DISABLE_FIND_PACKAGE_oaknut ON)
|
||||
set(CMAKE_DISABLE_FIND_PACKAGE_unordered_dense ON)
|
||||
set(CMAKE_DISABLE_FIND_PACKAGE_xbyak ON)
|
||||
set(CMAKE_DISABLE_FIND_PACKAGE_Zydis ON)
|
||||
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
else()
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
endif()
|
||||
|
||||
find_package(Boost 1.57 REQUIRED)
|
||||
find_package(fmt 9 CONFIG)
|
||||
find_package(mcl 0.1.12 EXACT CONFIG)
|
||||
find_package(unordered_dense CONFIG)
|
||||
|
||||
if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS)
|
||||
find_package(oaknut 2.0.1 CONFIG)
|
||||
|
@ -162,7 +164,6 @@ endif()
|
|||
|
||||
if ("x86_64" IN_LIST ARCHITECTURE)
|
||||
find_package(xbyak 7 CONFIG)
|
||||
find_package(Zydis 4 CONFIG)
|
||||
endif()
|
||||
|
||||
if (DYNARMIC_USE_LLVM)
|
||||
|
|
33
externals/dynarmic/externals/CMakeLists.txt
vendored
33
externals/dynarmic/externals/CMakeLists.txt
vendored
|
@ -1,3 +1,5 @@
|
|||
include(CPM)
|
||||
|
||||
# Always build externals as static libraries, even when dynarmic is built as shared
|
||||
if (BUILD_SHARED_LIBS)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
@ -25,6 +27,7 @@ endif()
|
|||
|
||||
# catch
|
||||
|
||||
# TODO(crueter): dedup
|
||||
if (NOT TARGET Catch2::Catch2WithMain)
|
||||
if (DYNARMIC_TESTS)
|
||||
add_subdirectory(catch EXCLUDE_FROM_ALL)
|
||||
|
@ -58,13 +61,15 @@ endif()
|
|||
|
||||
# unordered_dense
|
||||
|
||||
if (NOT TARGET ankerl::unordered_dense)
|
||||
set(UNORDERED_DENSE_INSTALL ON)
|
||||
add_subdirectory(unordered_dense)
|
||||
endif()
|
||||
CPMAddPackage(
|
||||
NAME unordered_dense
|
||||
URL "https://github.com/Lizzie841/unordered_dense/archive/e59d30b7b1.zip"
|
||||
OPTIONS
|
||||
"UNORDERED_DENSE_INSTALL ON"
|
||||
)
|
||||
|
||||
# xbyak
|
||||
# uncomment if in an independent repo.
|
||||
# uncomment if in an independent repo
|
||||
|
||||
# if (NOT TARGET xbyak::xbyak)
|
||||
# if ("x86_64" IN_LIST ARCHITECTURE)
|
||||
|
@ -74,15 +79,19 @@ endif()
|
|||
|
||||
# zydis
|
||||
|
||||
if (NOT TARGET Zydis::Zydis)
|
||||
CPMAddPackage(
|
||||
NAME Zydis
|
||||
VERSION 4
|
||||
URL "https://github.com/zyantific/zydis/archive/c2d2bab025.zip"
|
||||
OPTIONS
|
||||
"ZYDIS_BUILD_TOOLS OFF"
|
||||
"ZYDIS_BUILD_EXAMPLES OFF"
|
||||
"ZYDIS_BUILD_DOXYGEN OFF"
|
||||
)
|
||||
|
||||
if (Zydis_ADDED)
|
||||
if ("x86_64" IN_LIST ARCHITECTURE)
|
||||
set(ZYDIS_BUILD_TOOLS OFF)
|
||||
set(ZYDIS_BUILD_EXAMPLES OFF)
|
||||
set(ZYDIS_BUILD_DOXYGEN OFF)
|
||||
set(ZYAN_ZYCORE_PATH "${CMAKE_CURRENT_LIST_DIR}/zycore-c" CACHE PATH "")
|
||||
set(CMAKE_DISABLE_FIND_PACKAGE_Doxygen ON)
|
||||
if (NOT TARGET Zydis)
|
||||
add_subdirectory(zydis)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
1
externals/dynarmic/externals/unordered_dense
vendored
1
externals/dynarmic/externals/unordered_dense
vendored
|
@ -1 +0,0 @@
|
|||
Subproject commit e59d30b7b12e1d04cc2fc9c6219e35bda447c17e
|
1
externals/dynarmic/externals/zydis
vendored
1
externals/dynarmic/externals/zydis
vendored
|
@ -1 +0,0 @@
|
|||
Subproject commit c2d2bab0255e53a7c3e9b615f4eb69449eb942df
|
|
@ -164,7 +164,7 @@ if ("x86_64" IN_LIST ARCHITECTURE)
|
|||
target_link_libraries(dynarmic
|
||||
PRIVATE
|
||||
xbyak::xbyak
|
||||
Zydis::Zydis
|
||||
Zydis
|
||||
)
|
||||
|
||||
target_architecture_specific_sources(dynarmic "x86_64"
|
||||
|
@ -405,7 +405,7 @@ target_link_libraries(dynarmic
|
|||
Boost::boost
|
||||
fmt::fmt
|
||||
merry::mcl
|
||||
unordered_dense::unordered_dense
|
||||
unordered_dense
|
||||
)
|
||||
if (DYNARMIC_USE_LLVM)
|
||||
target_include_directories(dynarmic PRIVATE ${LLVM_INCLUDE_DIRS})
|
||||
|
|
1
externals/vcpkg
vendored
1
externals/vcpkg
vendored
|
@ -1 +0,0 @@
|
|||
Subproject commit ea2a964f9303270322cf3f2d51c265ba146c422d
|
|
@ -226,7 +226,8 @@ else()
|
|||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(audio_core PUBLIC common core Opus::opus)
|
||||
target_link_libraries(audio_core PUBLIC common core Opus)
|
||||
target_include_directories(audio_core PRIVATE ${Opus_INCLUDE_DIR})
|
||||
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
|
||||
target_link_libraries(audio_core PRIVATE dynarmic::dynarmic)
|
||||
endif()
|
||||
|
|
13
src/audio_core/externals/cubeb/CMakeLists.txt
vendored
13
src/audio_core/externals/cubeb/CMakeLists.txt
vendored
|
@ -3,7 +3,7 @@
|
|||
|
||||
# TODO(crueter): Create a common CPMUtil.cmake that does this for me
|
||||
include(CPM)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
CPMAddPackage(
|
||||
NAME cubeb
|
||||
URL "https://github.com/mozilla/cubeb/archive/fa02160712.zip"
|
||||
|
@ -13,17 +13,18 @@ CPMAddPackage(
|
|||
)
|
||||
|
||||
if (cubeb_ADDED)
|
||||
set(BUILD_TESTS OFF)
|
||||
set(BUILD_TOOLS OFF)
|
||||
|
||||
if (NOT MSVC)
|
||||
if (TARGET speex)
|
||||
target_compile_options(speex PRIVATE -Wno-sign-compare)
|
||||
endif()
|
||||
target_compile_options(cubeb PRIVATE
|
||||
|
||||
set_target_properties(cubeb PROPERTIES COMPILE_OPTIONS "")
|
||||
target_compile_options(cubeb INTERFACE
|
||||
-Wno-implicit-const-int-float-conversion
|
||||
-Wno-shadow
|
||||
-Wno-missing-declarations -Wno-return-type
|
||||
-Wno-missing-declarations
|
||||
-Wno-return-type
|
||||
-Wno-maybe-uninitialized
|
||||
)
|
||||
else()
|
||||
target_compile_options(cubeb PRIVATE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue