|
|
@ -11,6 +11,7 @@ project(yuzu)
|
|
|
|
# Set bundled sdl2/qt as dependent options.
|
|
|
|
# Set bundled sdl2/qt as dependent options.
|
|
|
|
# OFF by default, but if ENABLE_SDL2 and MSVC are true then ON
|
|
|
|
# OFF by default, but if ENABLE_SDL2 and MSVC are true then ON
|
|
|
|
option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
|
|
|
|
option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
|
|
|
|
|
|
|
|
CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF)
|
|
|
|
|
|
|
|
|
|
|
|
option(ENABLE_QT "Enable the Qt frontend" ON)
|
|
|
|
option(ENABLE_QT "Enable the Qt frontend" ON)
|
|
|
|
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
|
|
|
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
|
|
@ -166,8 +167,6 @@ macro(yuzu_find_packages)
|
|
|
|
# Cmake Pkg Prefix Version Conan Pkg
|
|
|
|
# Cmake Pkg Prefix Version Conan Pkg
|
|
|
|
"Catch2 2.13 catch2/2.13.0"
|
|
|
|
"Catch2 2.13 catch2/2.13.0"
|
|
|
|
"fmt 7.1 fmt/7.1.2"
|
|
|
|
"fmt 7.1 fmt/7.1.2"
|
|
|
|
# can't use until https://github.com/bincrafters/community/issues/1173
|
|
|
|
|
|
|
|
#"libzip 1.5 libzip/1.5.2@bincrafters/stable"
|
|
|
|
|
|
|
|
"lz4 1.8 lz4/1.9.2"
|
|
|
|
"lz4 1.8 lz4/1.9.2"
|
|
|
|
"nlohmann_json 3.8 nlohmann_json/3.8.0"
|
|
|
|
"nlohmann_json 3.8 nlohmann_json/3.8.0"
|
|
|
|
"ZLIB 1.2 zlib/1.2.11"
|
|
|
|
"ZLIB 1.2 zlib/1.2.11"
|
|
|
@ -251,22 +250,44 @@ if(ENABLE_QT)
|
|
|
|
if (ENABLE_QT_TRANSLATION)
|
|
|
|
if (ENABLE_QT_TRANSLATION)
|
|
|
|
find_package(Qt5 REQUIRED COMPONENTS LinguistTools ${QT_PREFIX_HINT})
|
|
|
|
find_package(Qt5 REQUIRED COMPONENTS LinguistTools ${QT_PREFIX_HINT})
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
if (NOT Qt5_FOUND)
|
|
|
|
|
|
|
|
list(APPEND CONAN_REQUIRED_LIBS "qt/5.14.1@bincrafters/stable")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the yuzu_find_package
|
|
|
|
# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the yuzu_find_package
|
|
|
|
if(ENABLE_SDL2)
|
|
|
|
if (ENABLE_SDL2)
|
|
|
|
if(EXISTS ${CMAKE_BINARY_DIR}/sdl2Config.cmake)
|
|
|
|
if (YUZU_USE_BUNDLED_SDL2)
|
|
|
|
include(${CMAKE_BINARY_DIR}/sdl2Config.cmake)
|
|
|
|
# Detect toolchain and platform
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CONAN_SDL2_ROOT_RELEASE}")
|
|
|
|
if ((MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1930) AND ARCHITECTURE_x86_64)
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${CONAN_SDL2_ROOT_RELEASE}")
|
|
|
|
set(SDL2_VER "SDL2-2.0.14")
|
|
|
|
|
|
|
|
else()
|
|
|
|
|
|
|
|
message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable YUZU_USE_BUNDLED_SDL2 and provide your own.")
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
find_package(SDL2)
|
|
|
|
|
|
|
|
if (NOT SDL2_FOUND)
|
|
|
|
if (DEFINED SDL2_VER)
|
|
|
|
# otherwise add this to the list of libraries to install
|
|
|
|
download_bundled_external("sdl2/" ${SDL2_VER} SDL2_PREFIX)
|
|
|
|
list(APPEND CONAN_REQUIRED_LIBS "sdl2/2.0.14@bincrafters/stable")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(SDL2_FOUND YES)
|
|
|
|
|
|
|
|
set(SDL2_INCLUDE_DIR "${SDL2_PREFIX}/include" CACHE PATH "Path to SDL2 headers")
|
|
|
|
|
|
|
|
set(SDL2_LIBRARY "${SDL2_PREFIX}/lib/x64/SDL2.lib" CACHE PATH "Path to SDL2 library")
|
|
|
|
|
|
|
|
set(SDL2_DLL_DIR "${SDL2_PREFIX}/lib/x64/" CACHE PATH "Path to SDL2.dll")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add_library(SDL2 INTERFACE)
|
|
|
|
|
|
|
|
target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARY}")
|
|
|
|
|
|
|
|
target_include_directories(SDL2 INTERFACE "${SDL2_INCLUDE_DIR}")
|
|
|
|
|
|
|
|
else()
|
|
|
|
|
|
|
|
find_package(SDL2 REQUIRED)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Some installations don't set SDL2_LIBRARIES
|
|
|
|
|
|
|
|
if("${SDL2_LIBRARIES}" STREQUAL "")
|
|
|
|
|
|
|
|
message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2")
|
|
|
|
|
|
|
|
set(SDL2_LIBRARIES "SDL2::SDL2")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
add_library(SDL2 INTERFACE)
|
|
|
|
|
|
|
|
target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARIES}")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
else()
|
|
|
|
|
|
|
|
set(SDL2_FOUND NO)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
# Install any missing dependencies with conan install
|
|
|
|
# Install any missing dependencies with conan install
|
|
|
@ -287,9 +308,6 @@ if (CONAN_REQUIRED_LIBS)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
conan_check(VERSION 1.24.0 REQUIRED)
|
|
|
|
conan_check(VERSION 1.24.0 REQUIRED)
|
|
|
|
# Add the bincrafters remote
|
|
|
|
|
|
|
|
conan_add_remote(NAME bincrafters
|
|
|
|
|
|
|
|
URL https://api.bintray.com/conan/bincrafters/public-conan)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Manually add iconv to fix a dep conflict between qt and sdl2
|
|
|
|
# Manually add iconv to fix a dep conflict between qt and sdl2
|
|
|
|
# We don't need to add it through find_package or anything since the other two can find it just fine
|
|
|
|
# We don't need to add it through find_package or anything since the other two can find it just fine
|
|
|
@ -340,11 +358,6 @@ if (CONAN_REQUIRED_LIBS)
|
|
|
|
find_package(Qt5 REQUIRED COMPONENTS WebEngineCore WebEngineWidgets)
|
|
|
|
find_package(Qt5 REQUIRED COMPONENTS WebEngineCore WebEngineWidgets)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
if(ENABLE_SDL2)
|
|
|
|
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CONAN_SDL2_ROOT_RELEASE}")
|
|
|
|
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${CONAN_SDL2_ROOT_RELEASE}")
|
|
|
|
|
|
|
|
find_package(SDL2 REQUIRED)
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
@ -360,23 +373,6 @@ elseif (TARGET Boost::boost)
|
|
|
|
add_library(boost ALIAS Boost::boost)
|
|
|
|
add_library(boost ALIAS Boost::boost)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
if (TARGET sdl2::sdl2)
|
|
|
|
|
|
|
|
# imported from the conan generated sdl2Config.cmake
|
|
|
|
|
|
|
|
set_target_properties(sdl2::sdl2 PROPERTIES IMPORTED_GLOBAL TRUE)
|
|
|
|
|
|
|
|
add_library(SDL2 ALIAS sdl2::sdl2)
|
|
|
|
|
|
|
|
elseif(SDL2_FOUND)
|
|
|
|
|
|
|
|
# found through the system package manager
|
|
|
|
|
|
|
|
# Some installations don't set SDL2_LIBRARIES
|
|
|
|
|
|
|
|
if("${SDL2_LIBRARIES}" STREQUAL "")
|
|
|
|
|
|
|
|
message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2")
|
|
|
|
|
|
|
|
set(SDL2_LIBRARIES "SDL2::SDL2")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
add_library(SDL2 INTERFACE)
|
|
|
|
|
|
|
|
target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARIES}")
|
|
|
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Ensure libusb is properly configured (based on dolphin libusb include)
|
|
|
|
# Ensure libusb is properly configured (based on dolphin libusb include)
|
|
|
|
if(NOT APPLE)
|
|
|
|
if(NOT APPLE)
|
|
|
|
include(FindPkgConfig)
|
|
|
|
include(FindPkgConfig)
|
|
|
|