|
|
|
@ -253,11 +253,82 @@ if(ENABLE_QT) |
|
|
|
|
|
|
|
# Check for system Qt on Linux, fallback to bundled Qt |
|
|
|
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") |
|
|
|
if (NOT YUZU_USE_BUNDLED_QT) |
|
|
|
find_package(Qt5 ${QT_VERSION} COMPONENTS Widgets QUIET) |
|
|
|
if (NOT Qt5_FOUND) |
|
|
|
set(YUZU_USE_BUNDLED_QT ON CACHE BOOL "Download bundled Qt" FORCE) |
|
|
|
find_package(Qt5 ${QT_VERSION} COMPONENTS Widgets) |
|
|
|
if (NOT Qt5_FOUND OR YUZU_USE_BUNDLED_QT) |
|
|
|
# Check for dependencies, then enable bundled Qt download |
|
|
|
|
|
|
|
# Check that the system GLIBCXX version is compatible |
|
|
|
find_program(OBJDUMP objdump) |
|
|
|
if ("${OBJDUMP}" STREQUAL "OBJDUMP-NOTFOUND") |
|
|
|
message(FATAL_ERROR "Required program `objdump` not found.") |
|
|
|
endif() |
|
|
|
find_library(LIBSTDCXX libstdc++.so.6) |
|
|
|
execute_process( |
|
|
|
COMMAND |
|
|
|
${OBJDUMP} -T ${LIBSTDCXX} |
|
|
|
COMMAND |
|
|
|
grep GLIBCXX_3.4.28 |
|
|
|
COMMAND |
|
|
|
sed "s/[0-9a-f]*.* //" |
|
|
|
COMMAND |
|
|
|
sed "s/ .*//" |
|
|
|
COMMAND |
|
|
|
sort -u |
|
|
|
OUTPUT_VARIABLE |
|
|
|
GLIBCXX_MET |
|
|
|
) |
|
|
|
if (NOT GLIBCXX_MET) |
|
|
|
message(FATAL_ERROR "Qt too old or not found, and bundled Qt package is not \ |
|
|
|
compatible with this system. Either install Qt ${QT_VERSION}, or provide the path \ |
|
|
|
to Qt by setting the variable Qt5_ROOT.") |
|
|
|
endif() |
|
|
|
|
|
|
|
# Check for headers |
|
|
|
Include(FindPkgConfig REQUIRED) |
|
|
|
pkg_check_modules(QT_DEP_GLU QUIET glu>=9.0.0) |
|
|
|
if (NOT QT_DEP_GLU_FOUND) |
|
|
|
message(FATAL_ERROR "Qt bundled pacakge dependency `glu` not found. \ |
|
|
|
Perhaps `libglu1-mesa-dev` needs to be installed?") |
|
|
|
endif() |
|
|
|
pkg_check_modules(QT_DEP_MESA QUIET dri>=20.0.8) |
|
|
|
if (NOT QT_DEP_MESA_FOUND) |
|
|
|
message(FATAL_ERROR "Qt bundled pacakge dependency `dri` not found. \ |
|
|
|
Perhaps `mesa-common-dev` needs to be installed?") |
|
|
|
endif() |
|
|
|
|
|
|
|
# Check for X libraries |
|
|
|
set(BUNDLED_QT_REQUIREMENTS |
|
|
|
libxcb-icccm.so.4 |
|
|
|
libxcb-image.so.0 |
|
|
|
libxcb-keysyms.so.1 |
|
|
|
libxcb-randr.so.0 |
|
|
|
libxcb-render-util.so.0 |
|
|
|
libxcb-render.so.0 |
|
|
|
libxcb-shape.so.0 |
|
|
|
libxcb-shm.so.0 |
|
|
|
libxcb-sync.so.1 |
|
|
|
libxcb-xfixes.so.0 |
|
|
|
libxcb-xinerama.so.0 |
|
|
|
libxcb-xkb.so.1 |
|
|
|
libxcb.so.1 |
|
|
|
libxkbcommon-x11.so.0 |
|
|
|
libxkbcommon.so.0 |
|
|
|
) |
|
|
|
set(UNRESOLVED_QT_DEPS "") |
|
|
|
foreach (REQUIREMENT ${BUNDLED_QT_REQUIREMENTS}) |
|
|
|
find_library(BUNDLED_QT_${REQUIREMENT} ${REQUIREMENT}) |
|
|
|
if ("${BUNDLED_QT_${REQUIREMENT}}" STREQUAL "BUNDLED_QT_${REQUIREMENT}-NOTFOUND") |
|
|
|
set(UNRESOLVED_QT_DEPS ${UNRESOLVED_QT_DEPS} ${REQUIREMENT}) |
|
|
|
endif() |
|
|
|
unset(BUNDLED_QT_${REQUIREMENT}) |
|
|
|
endforeach() |
|
|
|
unset(BUNDLED_QT_REQUIREMENTS) |
|
|
|
|
|
|
|
if (NOT "${UNRESOLVED_QT_DEPS}" STREQUAL "") |
|
|
|
message(FATAL_ERROR "Bundled Qt package missing required dependencies: ${UNRESOLVED_QT_DEPS}") |
|
|
|
endif() |
|
|
|
|
|
|
|
set(YUZU_USE_BUNDLED_QT ON CACHE BOOL "Download bundled Qt" FORCE) |
|
|
|
endif() |
|
|
|
if (YUZU_USE_BUNDLED_QT) |
|
|
|
# Binary package currently does not support Qt webengine, so make sure it's disabled |
|
|
|
@ -473,7 +544,15 @@ if (YUZU_USE_BUNDLED_FFMPEG) |
|
|
|
|
|
|
|
# FFmpeg has source that requires one of nasm or yasm to assemble it. |
|
|
|
# REQUIRED throws an error if not found here during configuration rather than during compilation. |
|
|
|
find_program(ASSEMBLER NAMES nasm yasm REQUIRED) |
|
|
|
find_program(ASSEMBLER NAMES nasm yasm) |
|
|
|
if ("${ASSEMBLER}" STREQUAL "ASSEMBLER-NOTFOUND") |
|
|
|
message(FATAL_ERROR "One of either `nasm` or `yasm` not found but is required.") |
|
|
|
endif() |
|
|
|
|
|
|
|
find_program(AUTOCONF autoconf) |
|
|
|
if ("${AUTOCONF}" STREQUAL "AUTOCONF-NOTFOUND") |
|
|
|
message(FATAL_ERROR "Required program `autoconf` not found.") |
|
|
|
endif() |
|
|
|
|
|
|
|
set(FFmpeg_PREFIX ${PROJECT_SOURCE_DIR}/externals/ffmpeg) |
|
|
|
set(FFmpeg_BUILD_DIR ${PROJECT_BINARY_DIR}/externals/ffmpeg) |
|
|
|
|