cmake,ci: vcpkg for MSVC default, fix lz4 include, catch2, cleanup
vcpkg: Add Catch2 2.13.9 Catch2 >= 3.0 is not compatible with earlier versions, and for now we must override the desired version in our vcpkg manifest. We can do this programmatically by using VCPKG_MANIFEST_FEATURES. CMakeLists: Search for lz4 CONFIG mode first vcpkg's lz4 CONFIG cmake script works in Release mode but not in Debug mode, failing to copy the correct DLLs at compile time. We still need to search for the regular mode for system-installed versions. CMakeLists: Clean up boost exports Remove some Conan-specific workarounds. CMakeLists: Use vcpkg for MSVC by default Not enabling it generally since it's much easier to have system dependencies installed for Linux and MinGW.
This commit is contained in:
parent
52dd68cfff
commit
dfc6dd0a2d
|
@ -9,7 +9,7 @@ parameters:
|
||||||
steps:
|
steps:
|
||||||
- script: choco install vulkan-sdk
|
- script: choco install vulkan-sdk
|
||||||
displayName: 'Install vulkan-sdk'
|
displayName: 'Install vulkan-sdk'
|
||||||
- script: refreshenv && mkdir build && cd build && cmake -G "Visual Studio 16 2019" -A x64 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON .. && cd ..
|
- script: refreshenv && mkdir build && cd build && cmake -G "Visual Studio 16 2019" -A x64 -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release .. && cd ..
|
||||||
displayName: 'Configure CMake'
|
displayName: 'Configure CMake'
|
||||||
- task: MSBuild@1
|
- task: MSBuild@1
|
||||||
displayName: 'Build'
|
displayName: 'Build'
|
||||||
|
|
|
@ -104,7 +104,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
glslangValidator --version
|
glslangValidator --version
|
||||||
mkdir build
|
mkdir build
|
||||||
cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=ON -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DCLANG_FORMAT_SUFFIX=discordplzdontclang -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON
|
cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=ON -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DCLANG_FORMAT_SUFFIX=discordplzdontclang
|
||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build build
|
run: cmake --build build
|
||||||
- name: Cache Summary
|
- name: Cache Summary
|
||||||
|
|
|
@ -38,9 +38,13 @@ option(YUZU_USE_BUNDLED_OPUS "Compile bundled opus" ON)
|
||||||
|
|
||||||
option(YUZU_TESTS "Compile tests" ON)
|
option(YUZU_TESTS "Compile tests" ON)
|
||||||
|
|
||||||
option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" OFF)
|
option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}")
|
||||||
|
|
||||||
if (YUZU_USE_BUNDLED_VCPKG)
|
if (YUZU_USE_BUNDLED_VCPKG)
|
||||||
|
if (YUZU_TESTS)
|
||||||
|
list(APPEND VCPKG_MANIFEST_FEATURES "yuzu-tests")
|
||||||
|
endif()
|
||||||
|
|
||||||
include(${CMAKE_SOURCE_DIR}/externals/vcpkg/scripts/buildsystems/vcpkg.cmake)
|
include(${CMAKE_SOURCE_DIR}/externals/vcpkg/scripts/buildsystems/vcpkg.cmake)
|
||||||
elseif(NOT "$ENV{VCPKG_TOOLCHAIN_FILE}" STREQUAL "")
|
elseif(NOT "$ENV{VCPKG_TOOLCHAIN_FILE}" STREQUAL "")
|
||||||
# Disable manifest mode (use vcpkg classic mode) when using a custom vcpkg installation
|
# Disable manifest mode (use vcpkg classic mode) when using a custom vcpkg installation
|
||||||
|
@ -160,7 +164,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||||||
# =======================================================================
|
# =======================================================================
|
||||||
|
|
||||||
find_package(fmt 8.0.1 REQUIRED CONFIG)
|
find_package(fmt 8.0.1 REQUIRED CONFIG)
|
||||||
find_package(lz4 1.8 REQUIRED)
|
|
||||||
find_package(nlohmann_json 3.8 REQUIRED CONFIG)
|
find_package(nlohmann_json 3.8 REQUIRED CONFIG)
|
||||||
find_package(ZLIB 1.2 REQUIRED)
|
find_package(ZLIB 1.2 REQUIRED)
|
||||||
|
|
||||||
|
@ -170,6 +173,12 @@ if (NOT zstd_FOUND)
|
||||||
find_package(zstd 1.5 REQUIRED)
|
find_package(zstd 1.5 REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# lz4 1.8 is required, but vcpkg's lz4-config.cmake does not have version info
|
||||||
|
find_package(lz4 CONFIG)
|
||||||
|
if (NOT lz4_FOUND)
|
||||||
|
find_package(lz4 1.8 REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (YUZU_TESTS)
|
if (YUZU_TESTS)
|
||||||
find_package(Catch2 2.13.7 REQUIRED CONFIG)
|
find_package(Catch2 2.13.7 REQUIRED CONFIG)
|
||||||
endif()
|
endif()
|
||||||
|
@ -355,16 +364,10 @@ if (ENABLE_SDL2)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO(lat9nq): Determine what if any of this we still need
|
# Reexport some targets that are named differently when using the upstream CmakeConfig
|
||||||
#
|
|
||||||
# Reexport some targets that are named differently when using the upstream CmakeConfig vs the generated Conan config
|
|
||||||
# In order to ALIAS targets to a new name, they first need to be IMPORTED_GLOBAL
|
# In order to ALIAS targets to a new name, they first need to be IMPORTED_GLOBAL
|
||||||
# Dynarmic checks for target `boost` and so we want to make sure it can find it through our system instead of using their external
|
# Dynarmic checks for target `boost` and so we want to make sure it can find it through our system instead of using their external
|
||||||
if (TARGET Boost::Boost)
|
if (TARGET Boost::boost)
|
||||||
set_target_properties(Boost::Boost PROPERTIES IMPORTED_GLOBAL TRUE)
|
|
||||||
add_library(Boost::boost ALIAS Boost::Boost)
|
|
||||||
add_library(boost ALIAS Boost::Boost)
|
|
||||||
elseif (TARGET Boost::boost)
|
|
||||||
set_target_properties(Boost::boost PROPERTIES IMPORTED_GLOBAL TRUE)
|
set_target_properties(Boost::boost PROPERTIES IMPORTED_GLOBAL TRUE)
|
||||||
add_library(boost ALIAS Boost::boost)
|
add_library(boost ALIAS Boost::boost)
|
||||||
endif()
|
endif()
|
||||||
|
|
13
vcpkg.json
13
vcpkg.json
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
|
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
|
||||||
"name": "yuzu",
|
"name": "yuzu",
|
||||||
|
"builtin-baseline": "cef0b3ec767df6e83806899fe9525f6cf8d7bc91",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"boost-algorithm",
|
"boost-algorithm",
|
||||||
|
@ -25,5 +26,17 @@
|
||||||
"nlohmann-json",
|
"nlohmann-json",
|
||||||
"zlib",
|
"zlib",
|
||||||
"zstd"
|
"zstd"
|
||||||
|
],
|
||||||
|
"features": {
|
||||||
|
"yuzu-tests": {
|
||||||
|
"description": "Compile tests",
|
||||||
|
"dependencies": [ "catch2" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"name": "catch2",
|
||||||
|
"version": "2.13.9"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue