-
-
Notifications
You must be signed in to change notification settings - Fork 546
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Integrate support for building with dependencies from vcpkg (#1880)
* Integrate support for building with dependencies from vcpkg Configure the build using -DUSE_VCPKG=ON to use vcpkg. By default recommended triplets targeting the OS versions official builds support are used. You can opt out of this with -DUSE_RECOMMENDED_TRIPLETS=OFF. * Add the vcpkg manifest * Fetch vcpkg with FetchContent if we don't have it * macOS cross compiling fixes - can't use the x86_64 one as host triplet on arm64 because building Qt fails for whatever reason. Because of course it does :D - vcpkg doesn't always like periods in triplet names so removed those * x86_64 macOS should also use its recommended target when building arm64 builds
- Loading branch information
1 parent
4d3af0d
commit 27ac8db
Showing
5 changed files
with
137 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
include(FetchContent) | ||
|
||
set(_DEFAULT_VCPKG_ROOT "${CMAKE_SOURCE_DIR}/vcpkg") | ||
set(VCPKG_ROOT "${_DEFAULT_VCPKG_ROOT}" CACHE STRING "The path to the vcpkg repository") | ||
|
||
if (VCPKG_ROOT STREQUAL "${_DEFAULT_VCPKG_ROOT}") | ||
FetchContent_Declare(vcpkg | ||
GIT_REPOSITORY "https://github.com/Microsoft/vcpkg.git" | ||
GIT_TAG 2023.10.19 | ||
SOURCE_DIR "${CMAKE_SOURCE_DIR}/vcpkg") | ||
FetchContent_MakeAvailable(vcpkg) | ||
endif() | ||
|
||
set(VCPKG_OVERLAY_TRIPLETS "${CMAKE_SOURCE_DIR}/cmake/overlay-triplets") | ||
|
||
option(USE_RECOMMENDED_TRIPLETS "Use the recommended triplets that are used for official builds" ON) | ||
|
||
if (CMAKE_OSX_ARCHITECTURES MATCHES ";") | ||
message(FATAL_ERROR "macOS universal builds are not supported. Build them individually and combine afterwards instead.") | ||
endif() | ||
|
||
if (USE_RECOMMENDED_TRIPLETS) | ||
execute_process( | ||
COMMAND uname -m | ||
OUTPUT_VARIABLE _HOST_PROCESSOR | ||
OUTPUT_STRIP_TRAILING_WHITESPACE) | ||
|
||
set(_CAN_TARGET_AS_HOST OFF) | ||
|
||
if (APPLE) | ||
if (NOT CMAKE_OSX_ARCHITECTURES) | ||
if (_HOST_PROCESSOR STREQUAL arm64) | ||
set(CMAKE_OSX_ARCHITECTURES arm64) | ||
else() | ||
set(CMAKE_OSX_ARCHITECTURES x86_64) | ||
endif() | ||
endif() | ||
|
||
if (CMAKE_OSX_ARCHITECTURES STREQUAL arm64) | ||
set(_WANTED_TRIPLET arm64-osx-11-release) | ||
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0) | ||
else() | ||
set(_WANTED_TRIPLET x64-osx-1015-release) | ||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15) | ||
endif() | ||
elseif(WIN32) | ||
# TODO Windows arm64 if possible | ||
set(_CAN_TARGET_AS_HOST ON) | ||
set(_WANTED_TRIPLET x64-mingw-static) | ||
endif() | ||
|
||
# Don't override it if the user set something else | ||
if (NOT VCPKG_TARGET_TRIPLET) | ||
set(VCPKG_TARGET_TRIPLET "${_WANTED_TRIPLET}") | ||
else() | ||
set(_WANTED_TRIPLET "${VCPKG_TARGET_TRIPLET}") | ||
endif() | ||
|
||
if (APPLE) | ||
if (_HOST_PROCESSOR MATCHES arm64) | ||
if (_WANTED_TRIPLET MATCHES "^arm64-osx-") | ||
set(_CAN_TARGET_AS_HOST ON) | ||
elseif (_WANTED_TRIPLET STREQUAL "x64-osx-1015-release") | ||
# Use the default triplet for when building for arm64 | ||
# because we're probably making a universal build | ||
set(VCPKG_HOST_TRIPLET arm64-osx-11-release) | ||
endif() | ||
else() | ||
if (_WANTED_TRIPLET MATCHES "^x64-osx-") | ||
set(_CAN_TARGET_AS_HOST ON) | ||
elseif (_WANTED_TRIPLET STREQUAL "arm64-osx-11-release") | ||
set(VCPKG_HOST_TRIPLET x64-osx-1015-release) | ||
endif() | ||
endif() | ||
endif() | ||
|
||
# If host and target triplet differ, vcpkg seems to always assume that the host can't run the target's binaries. | ||
# In cases like cross compiling from ARM -> Intel macOS, or target being an older version of the host OS, we *can* do that so the packages built targeting the host are redundant. | ||
if (_CAN_TARGET_AS_HOST AND NOT VCPKG_HOST_TRIPLET) | ||
option(VCPKG_TARGET_AS_HOST "Use the target as host triplet to speed up builds" ON) | ||
else() | ||
option(VCPKG_TARGET_AS_HOST "Use the target as host triplet to speed up builds" OFF) | ||
endif() | ||
|
||
if (VCPKG_TARGET_AS_HOST) | ||
set(VCPKG_HOST_TRIPLET "${VCPKG_TARGET_TRIPLET}" CACHE STRING "Host triplet to use for vcpkg") | ||
endif() | ||
endif() | ||
|
||
set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
set(VCPKG_TARGET_ARCHITECTURE arm64) | ||
set(VCPKG_CRT_LINKAGE dynamic) | ||
set(VCPKG_LIBRARY_LINKAGE static) | ||
|
||
set(VCPKG_CMAKE_SYSTEM_NAME Darwin) | ||
set(VCPKG_CMAKE_SYSTEM_VERSION 11.0) | ||
set(VCPKG_OSX_ARCHITECTURES arm64) | ||
set(VCPKG_BUILD_TYPE release) | ||
set(VCPKG_OSX_DEPLOYMENT_TARGET 11.0) | ||
|
||
set(VCPKG_C_FLAGS -mmacosx-version-min=11.0) | ||
set(VCPKG_CXX_FLAGS -mmacosx-version-min=11.0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
set(VCPKG_TARGET_ARCHITECTURE x64) | ||
set(VCPKG_CRT_LINKAGE dynamic) | ||
set(VCPKG_LIBRARY_LINKAGE static) | ||
|
||
set(VCPKG_CMAKE_SYSTEM_NAME Darwin) | ||
set(VCPKG_CMAKE_SYSTEM_VERSION 10.15) | ||
set(VCPKG_OSX_ARCHITECTURES x86_64) | ||
set(VCPKG_BUILD_TYPE release) | ||
set(VCPKG_OSX_DEPLOYMENT_TARGET 10.15) | ||
|
||
set(VCPKG_C_FLAGS -mmacosx-version-min=10.15) | ||
set(VCPKG_CXX_FLAGS -mmacosx-version-min=10.15) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"dependencies": [ | ||
"sdl2", | ||
"libarchive", | ||
"libslirp", | ||
"zstd", | ||
{ | ||
"name": "qtbase", | ||
"default-features": false, | ||
"features": ["gui", "png", "thread", "widgets", "opengl", "zstd"] | ||
}, | ||
{ | ||
"name": "qtmultimedia", | ||
"default-features": false | ||
}, | ||
"qtsvg" | ||
] | ||
} |