summaryrefslogtreecommitdiff
path: root/CMakeModules
diff options
context:
space:
mode:
authorGravatar lat9nq2021-04-21 01:51:28 -0400
committerGravatar lat9nq2021-04-22 14:09:40 -0400
commitad55faaa359e82bd65d2fd40a3aec2615e72f1a6 (patch)
tree5e67b8c62beb5c25ffe7b5a2ab1587f7420567bf /CMakeModules
parentMerge pull request #6223 from lat9nq/ffmpeg-external-fixes (diff)
downloadyuzu-ad55faaa359e82bd65d2fd40a3aec2615e72f1a6.tar.gz
yuzu-ad55faaa359e82bd65d2fd40a3aec2615e72f1a6.tar.xz
yuzu-ad55faaa359e82bd65d2fd40a3aec2615e72f1a6.zip
cmake: Download Boost if inadequate local version
Building SDL2 from externals is incompatible with Conan's version of libiconv, a requirement of Conan's Boost package. Solution is to use the same Boost package in use by the linux-fresh container. This tells CMake to download boost_1_75_0.tar.xz from yuzu-emu/ext-linux-bin at CMake's configuration step, much the same way Qt and FFmpeg are downloaded for Windows. Also makes DownloadExternals.cmake cross-platform. Although the CMake code is not entirely specific to Linux, only Linux has Boost libraries available at ext-linux-bin, whereas there is no equivalent Boost package for Windows at ext-windows-bin. caveat emptor
Diffstat (limited to 'CMakeModules')
-rw-r--r--CMakeModules/DownloadExternals.cmake22
1 files changed, 18 insertions, 4 deletions
diff --git a/CMakeModules/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake
index d3f91764d..4c4dec5ff 100644
--- a/CMakeModules/DownloadExternals.cmake
+++ b/CMakeModules/DownloadExternals.cmake
@@ -4,15 +4,29 @@
4# remote_path: path to the file to download, relative to the remote repository root 4# remote_path: path to the file to download, relative to the remote repository root
5# prefix_var: name of a variable which will be set with the path to the extracted contents 5# prefix_var: name of a variable which will be set with the path to the extracted contents
6function(download_bundled_external remote_path lib_name prefix_var) 6function(download_bundled_external remote_path lib_name prefix_var)
7
8set(package_repo "no_platform")
9set(package_extension "no_platform")
10if (WIN32)
11 set(package_repo "ext-windows-bin/raw/master/")
12 set(package_extension ".7z")
13elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
14 set(package_repo "ext-linux-bin/raw/main/")
15 set(package_extension ".tar.xz")
16else()
17 message(FATAL_ERROR "No package available for this platform")
18endif()
19set(package_url "https://github.com/yuzu-emu/${package_repo}")
20
7set(prefix "${CMAKE_BINARY_DIR}/externals/${lib_name}") 21set(prefix "${CMAKE_BINARY_DIR}/externals/${lib_name}")
8if (NOT EXISTS "${prefix}") 22if (NOT EXISTS "${prefix}")
9 message(STATUS "Downloading binaries for ${lib_name}...") 23 message(STATUS "Downloading binaries for ${lib_name}...")
10 file(DOWNLOAD 24 file(DOWNLOAD
11 https://github.com/yuzu-emu/ext-windows-bin/raw/master/${remote_path}${lib_name}.7z 25 ${package_url}${remote_path}${lib_name}${package_extension}
12 "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" SHOW_PROGRESS) 26 "${CMAKE_BINARY_DIR}/externals/${lib_name}${package_extension}" SHOW_PROGRESS)
13 execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" 27 execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${CMAKE_BINARY_DIR}/externals/${lib_name}${package_extension}"
14 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") 28 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals")
15endif() 29endif()
16message(STATUS "Using bundled binaries at ${prefix}") 30message(STATUS "Using bundled binaries at ${prefix}")
17set(${prefix_var} "${prefix}" PARENT_SCOPE) 31set(${prefix_var} "${prefix}" PARENT_SCOPE)
18endfunction() \ No newline at end of file 32endfunction()