mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-11-04 12:45:03 +01:00 
			
		
		
		
	Merge pull request #6459 from lat9nq/ubuntu-fixes
cmake: Improve Linux dependency checking for externals
This commit is contained in:
		
						commit
						bab400daaf
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								externals/libusb/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								externals/libusb/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							@ -5,6 +5,17 @@ if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE)
 | 
			
		||||
    # GNU toolchains for some reason doesn't work with the later half of this CMakeLists after
 | 
			
		||||
    # updating to 1.0.24, so we do it the old-fashioned way for now.
 | 
			
		||||
 | 
			
		||||
    # Require autoconf and libtoolize here, rather than crash during compilation
 | 
			
		||||
    find_program(AUTOCONF autoconf)
 | 
			
		||||
    if ("${AUTOCONF}" STREQUAL "AUTOCONF-NOTFOUND")
 | 
			
		||||
        message(FATAL_ERROR "Required program `autoconf` not found.")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    find_program(LIBTOOLIZE libtoolize)
 | 
			
		||||
    if ("${LIBTOOLIZE}" STREQUAL "LIBTOOLIZE-NOTFOUND")
 | 
			
		||||
        message(FATAL_ERROR "Required program `libtoolize` not found.")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    set(LIBUSB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libusb")
 | 
			
		||||
    set(LIBUSB_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libusb")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,10 @@ set(SHADER_FILES
 | 
			
		||||
    vulkan_uint8.comp
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
find_program(GLSLANGVALIDATOR "glslangValidator" REQUIRED)
 | 
			
		||||
find_program(GLSLANGVALIDATOR "glslangValidator")
 | 
			
		||||
if ("${GLSLANGVALIDATOR}" STREQUAL "GLSLANGVALIDATOR-NOTFOUND")
 | 
			
		||||
    message(FATAL_ERROR "Required program `glslangValidator` not found.")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
set(GLSL_FLAGS "")
 | 
			
		||||
set(QUIET_FLAG "--quiet")
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user