mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Merge pull request #2734 from yuriks/cmake-imported-libs
CMake: Use CMake target properties for all libraries
This commit is contained in:
		
						commit
						a4f88c7d7c
					
				@ -11,7 +11,7 @@ if [ "$TRAVIS_OS_NAME" = "linux" -o -z "$TRAVIS_OS_NAME" ]; then
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if [ ! -e $HOME/.local/bin/cmake ]; then
 | 
					    if [ ! -e $HOME/.local/bin/cmake ]; then
 | 
				
			||||||
        echo "CMake not found in the cache, get and extract it..."
 | 
					        echo "CMake not found in the cache, get and extract it..."
 | 
				
			||||||
        curl -L http://www.cmake.org/files/v3.2/cmake-3.2.0-Linux-i386.tar.gz \
 | 
					        curl -L http://www.cmake.org/files/v3.6/cmake-3.6.3-Linux-x86_64.tar.gz \
 | 
				
			||||||
            | tar -xz -C $HOME/.local --strip-components=1
 | 
					            | tar -xz -C $HOME/.local --strip-components=1
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        echo "Using cached CMake"
 | 
					        echo "Using cached CMake"
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										176
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										176
									
								
								CMakeLists.txt
									
									
									
									
									
								
							@ -1,20 +1,25 @@
 | 
				
			|||||||
# CMake 3.2 required for cmake to know the right flags for CXX standard on OSX
 | 
					# CMake 3.6 required for FindBoost to define IMPORTED libs properly on unknown Boost versions
 | 
				
			||||||
cmake_minimum_required(VERSION 3.2)
 | 
					cmake_minimum_required(VERSION 3.6)
 | 
				
			||||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
 | 
					list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
 | 
				
			||||||
 | 
					list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function(download_bundled_external remote_path lib_name prefix_var)
 | 
					project(citra)
 | 
				
			||||||
    set(prefix "${CMAKE_BINARY_DIR}/externals/${lib_name}")
 | 
					
 | 
				
			||||||
    if (NOT EXISTS "${prefix}")
 | 
					option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
 | 
				
			||||||
        message(STATUS "Downloading binaries for ${lib_name}...")
 | 
					option(CITRA_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" OFF)
 | 
				
			||||||
        file(DOWNLOAD
 | 
					
 | 
				
			||||||
            https://github.com/citra-emu/ext-windows-bin/raw/master/${remote_path}${lib_name}.7z
 | 
					option(ENABLE_QT "Enable the Qt frontend" ON)
 | 
				
			||||||
            "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" SHOW_PROGRESS)
 | 
					option(CITRA_USE_BUNDLED_QT "Download bundled Qt binaries" OFF)
 | 
				
			||||||
        execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z"
 | 
					
 | 
				
			||||||
            WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals")
 | 
					if(NOT EXISTS ${CMAKE_SOURCE_DIR}/.git/hooks/pre-commit)
 | 
				
			||||||
 | 
					    message(STATUS "Copying pre-commit hook")
 | 
				
			||||||
 | 
					    file(COPY hooks/pre-commit
 | 
				
			||||||
 | 
					        DESTINATION ${CMAKE_SOURCE_DIR}/.git/hooks)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
    message(STATUS "Using bundled binaries at ${prefix}")
 | 
					
 | 
				
			||||||
    set(${prefix_var} "${prefix}" PARENT_SCOPE)
 | 
					
 | 
				
			||||||
endfunction()
 | 
					# Detect current compilation architecture and create standard definitions
 | 
				
			||||||
 | 
					# =======================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(CheckSymbolExists)
 | 
					include(CheckSymbolExists)
 | 
				
			||||||
function(detect_architecture symbol arch)
 | 
					function(detect_architecture symbol arch)
 | 
				
			||||||
@ -33,20 +38,6 @@ function(detect_architecture symbol arch)
 | 
				
			|||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
endfunction()
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
project(citra)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
 | 
					 | 
				
			||||||
option(CITRA_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" OFF)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
option(ENABLE_QT "Enable the Qt frontend" ON)
 | 
					 | 
				
			||||||
option(CITRA_USE_BUNDLED_QT "Download bundled Qt binaries" OFF)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks/pre-commit)
 | 
					 | 
				
			||||||
    message(STATUS "Copying pre-commit hook")
 | 
					 | 
				
			||||||
    file(COPY hooks/pre-commit
 | 
					 | 
				
			||||||
        DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/.git/hooks)
 | 
					 | 
				
			||||||
endif()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if (MSVC)
 | 
					if (MSVC)
 | 
				
			||||||
    detect_architecture("_M_AMD64" x86_64)
 | 
					    detect_architecture("_M_AMD64" x86_64)
 | 
				
			||||||
    detect_architecture("_M_IX86" x86)
 | 
					    detect_architecture("_M_IX86" x86)
 | 
				
			||||||
@ -63,6 +54,10 @@ if (NOT DEFINED ARCHITECTURE)
 | 
				
			|||||||
endif()
 | 
					endif()
 | 
				
			||||||
message(STATUS "Target architecture: ${ARCHITECTURE}")
 | 
					message(STATUS "Target architecture: ${ARCHITECTURE}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Configure compilation flags
 | 
				
			||||||
 | 
					# ===========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(CMAKE_CXX_STANDARD 14)
 | 
					set(CMAKE_CXX_STANDARD 14)
 | 
				
			||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
					set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -130,25 +125,41 @@ add_definitions(-DSINGLETHREADED)
 | 
				
			|||||||
set_property(DIRECTORY APPEND PROPERTY
 | 
					set_property(DIRECTORY APPEND PROPERTY
 | 
				
			||||||
    COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG> $<$<NOT:$<CONFIG:Debug>>:NDEBUG>)
 | 
					    COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG> $<$<NOT:$<CONFIG:Debug>>:NDEBUG>)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# System imported libraries
 | 
				
			||||||
 | 
					# ======================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This function downloads a binary library package from our external repo.
 | 
				
			||||||
 | 
					# Params:
 | 
				
			||||||
 | 
					#   remote_path: path to the file to download, relative to the remote repository root
 | 
				
			||||||
 | 
					#   prefix_var: name of a variable which will be set with the path to the extracted contents
 | 
				
			||||||
 | 
					function(download_bundled_external remote_path lib_name prefix_var)
 | 
				
			||||||
 | 
					    set(prefix "${CMAKE_BINARY_DIR}/externals/${lib_name}")
 | 
				
			||||||
 | 
					    if (NOT EXISTS "${prefix}")
 | 
				
			||||||
 | 
					        message(STATUS "Downloading binaries for ${lib_name}...")
 | 
				
			||||||
 | 
					        file(DOWNLOAD
 | 
				
			||||||
 | 
					            https://github.com/citra-emu/ext-windows-bin/raw/master/${remote_path}${lib_name}.7z
 | 
				
			||||||
 | 
					            "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z" SHOW_PROGRESS)
 | 
				
			||||||
 | 
					        execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${CMAKE_BINARY_DIR}/externals/${lib_name}.7z"
 | 
				
			||||||
 | 
					            WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					    message(STATUS "Using bundled binaries at ${prefix}")
 | 
				
			||||||
 | 
					    set(${prefix_var} "${prefix}" PARENT_SCOPE)
 | 
				
			||||||
 | 
					endfunction()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_package(PNG QUIET)
 | 
					find_package(PNG QUIET)
 | 
				
			||||||
if (PNG_FOUND)
 | 
					if (NOT PNG_FOUND)
 | 
				
			||||||
    add_definitions(-DHAVE_PNG)
 | 
					 | 
				
			||||||
else()
 | 
					 | 
				
			||||||
    message(STATUS "libpng not found. Some debugging features have been disabled.")
 | 
					    message(STATUS "libpng not found. Some debugging features have been disabled.")
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_package(Boost 1.57.0 QUIET)
 | 
					find_package(Boost 1.63.0 QUIET)
 | 
				
			||||||
if (NOT Boost_FOUND)
 | 
					if (NOT Boost_FOUND)
 | 
				
			||||||
    message(STATUS "Boost 1.57.0 or newer not found, falling back to externals")
 | 
					    message(STATUS "Boost 1.63.0 or newer not found, falling back to externals")
 | 
				
			||||||
    set(Boost_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/externals/boost")
 | 
					
 | 
				
			||||||
 | 
					    set(BOOST_ROOT "${CMAKE_SOURCE_DIR}/externals/boost")
 | 
				
			||||||
 | 
					    set(Boost_NO_SYSTEM_PATHS OFF)
 | 
				
			||||||
 | 
					    find_package(Boost QUIET REQUIRED)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
include_directories(${Boost_INCLUDE_DIR})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Include bundled CMake modules
 | 
					 | 
				
			||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/externals/cmake-modules")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
find_package(OpenGL REQUIRED)
 | 
					 | 
				
			||||||
include_directories(${OPENGL_INCLUDE_DIR})
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Prefer the -pthread flag on Linux.
 | 
					# Prefer the -pthread flag on Linux.
 | 
				
			||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
 | 
					set(THREADS_PREFER_PTHREAD_FLAG ON)
 | 
				
			||||||
@ -174,10 +185,43 @@ if (ENABLE_SDL2)
 | 
				
			|||||||
    else()
 | 
					    else()
 | 
				
			||||||
        find_package(SDL2 REQUIRED)
 | 
					        find_package(SDL2 REQUIRED)
 | 
				
			||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (SDL2_FOUND)
 | 
				
			||||||
 | 
					        # TODO(yuriks): Make FindSDL2.cmake export an IMPORTED library instead
 | 
				
			||||||
 | 
					        add_library(SDL2 INTERFACE)
 | 
				
			||||||
 | 
					        target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARY}")
 | 
				
			||||||
 | 
					        target_include_directories(SDL2 INTERFACE "${SDL2_INCLUDE_DIR}")
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
    set(SDL2_FOUND NO)
 | 
					    set(SDL2_FOUND NO)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (ENABLE_QT)
 | 
				
			||||||
 | 
					    if (CITRA_USE_BUNDLED_QT)
 | 
				
			||||||
 | 
					        if (MSVC14 AND ARCHITECTURE_x86_64)
 | 
				
			||||||
 | 
					            set(QT_VER qt-5.7-msvc2015_64)
 | 
				
			||||||
 | 
					        else()
 | 
				
			||||||
 | 
					            message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable CITRA_USE_BUNDLED_QT and provide your own.")
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (DEFINED QT_VER)
 | 
				
			||||||
 | 
					            download_bundled_external("qt/" ${QT_VER} QT_PREFIX)
 | 
				
			||||||
 | 
					        endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        set(QT_PREFIX_HINT HINTS "${QT_PREFIX}")
 | 
				
			||||||
 | 
					    else()
 | 
				
			||||||
 | 
					        # Passing an empty HINTS seems to cause default system paths to get ignored in CMake 2.8 so
 | 
				
			||||||
 | 
					        # make sure to not pass anything if we don't have one.
 | 
				
			||||||
 | 
					        set(QT_PREFIX_HINT)
 | 
				
			||||||
 | 
					    endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    find_package(Qt5 REQUIRED COMPONENTS Widgets OpenGL ${QT_PREFIX_HINT})
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Platform-specific library requirements
 | 
				
			||||||
 | 
					# ======================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IF (APPLE)
 | 
					IF (APPLE)
 | 
				
			||||||
    FIND_LIBRARY(COCOA_LIBRARY Cocoa)           # Umbrella framework for everything GUI-related
 | 
					    FIND_LIBRARY(COCOA_LIBRARY Cocoa)           # Umbrella framework for everything GUI-related
 | 
				
			||||||
    set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
 | 
					    set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
 | 
				
			||||||
@ -206,28 +250,9 @@ if (UNIX OR MINGW)
 | 
				
			|||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (ENABLE_QT)
 | 
					 | 
				
			||||||
    if (CITRA_USE_BUNDLED_QT)
 | 
					 | 
				
			||||||
        if (MSVC14 AND ARCHITECTURE_x86_64)
 | 
					 | 
				
			||||||
            set(QT_VER qt-5.7-msvc2015_64)
 | 
					 | 
				
			||||||
        else()
 | 
					 | 
				
			||||||
            message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable CITRA_USE_BUNDLED_QT and provide your own.")
 | 
					 | 
				
			||||||
        endif()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (DEFINED QT_VER)
 | 
					# Include source code
 | 
				
			||||||
            download_bundled_external("qt/" ${QT_VER} QT_PREFIX)
 | 
					# ===================
 | 
				
			||||||
        endif()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        set(QT_PREFIX_HINT HINTS "${QT_PREFIX}")
 | 
					 | 
				
			||||||
    else()
 | 
					 | 
				
			||||||
        # Passing an empty HINTS seems to cause default system paths to get ignored in CMake 2.8 so
 | 
					 | 
				
			||||||
        # make sure to not pass anything if we don't have one.
 | 
					 | 
				
			||||||
        set(QT_PREFIX_HINT)
 | 
					 | 
				
			||||||
    endif()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    find_package(Qt5 REQUIRED COMPONENTS Widgets OpenGL ${QT_PREFIX_HINT})
 | 
					 | 
				
			||||||
    set(CITRA_QT_LIBS Qt5::Widgets Qt5::OpenGL)
 | 
					 | 
				
			||||||
endif()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This function should be passed a list of all files in a target. It will automatically generate
 | 
					# This function should be passed a list of all files in a target. It will automatically generate
 | 
				
			||||||
# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
 | 
					# file groups following the directory hierarchy, so that the layout of the files in IDEs matches the
 | 
				
			||||||
@ -251,30 +276,13 @@ get_git_head_revision(GIT_REF_SPEC GIT_REV)
 | 
				
			|||||||
git_describe(GIT_DESC --always --long --dirty)
 | 
					git_describe(GIT_DESC --always --long --dirty)
 | 
				
			||||||
git_branch_name(GIT_BRANCH)
 | 
					git_branch_name(GIT_BRANCH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(INI_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/externals/inih")
 | 
					 | 
				
			||||||
include_directories(${INI_PREFIX})
 | 
					 | 
				
			||||||
add_subdirectory(${INI_PREFIX})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
add_subdirectory(externals)
 | 
					add_subdirectory(externals)
 | 
				
			||||||
 | 
					add_subdirectory(src)
 | 
				
			||||||
option(DYNARMIC_TESTS OFF)
 | 
					 | 
				
			||||||
set(DYNARMIC_NO_BUNDLED_FMT ON)
 | 
					 | 
				
			||||||
add_subdirectory(externals/dynarmic)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
add_subdirectory(externals/glad)
 | 
					 | 
				
			||||||
include_directories(externals/microprofile)
 | 
					 | 
				
			||||||
include_directories(externals/nihstro/include)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if (MSVC)
 | 
					 | 
				
			||||||
    add_subdirectory(externals/getopt)
 | 
					 | 
				
			||||||
endif()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# process subdirectories
 | 
					 | 
				
			||||||
add_subdirectory(externals/soundtouch)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enable_testing()
 | 
					enable_testing()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_subdirectory(src)
 | 
					
 | 
				
			||||||
 | 
					# Installation instructions
 | 
				
			||||||
 | 
					# =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Install freedesktop.org metadata files, following those specifications:
 | 
					# Install freedesktop.org metadata files, following those specifications:
 | 
				
			||||||
# http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
 | 
					# http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										52
									
								
								externals/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								externals/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							@ -1,12 +1,52 @@
 | 
				
			|||||||
 | 
					# Definitions for all external bundled libraries
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Catch
 | 
				
			||||||
 | 
					add_library(catch-single-include INTERFACE)
 | 
				
			||||||
 | 
					target_include_directories(catch-single-include INTERFACE catch/single_include)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Crypto++
 | 
				
			||||||
 | 
					add_subdirectory(cryptopp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Dynarmic
 | 
				
			||||||
 | 
					# Dynarmic will skip defining xbyak if it's already defined, we then define it below
 | 
				
			||||||
 | 
					add_library(xbyak INTERFACE)
 | 
				
			||||||
 | 
					option(DYNARMIC_TESTS OFF)
 | 
				
			||||||
 | 
					set(DYNARMIC_NO_BUNDLED_FMT ON)
 | 
				
			||||||
 | 
					add_subdirectory(dynarmic)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# libfmt
 | 
				
			||||||
 | 
					add_subdirectory(fmt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# getopt
 | 
				
			||||||
 | 
					if (MSVC)
 | 
				
			||||||
 | 
					    add_subdirectory(getopt)
 | 
				
			||||||
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Glad
 | 
				
			||||||
 | 
					add_subdirectory(glad)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# inih
 | 
				
			||||||
 | 
					add_subdirectory(inih)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# MicroProfile
 | 
				
			||||||
 | 
					add_library(microprofile INTERFACE)
 | 
				
			||||||
 | 
					target_include_directories(microprofile INTERFACE ./microprofile)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Nihstro
 | 
				
			||||||
 | 
					add_library(nihstro-headers INTERFACE)
 | 
				
			||||||
 | 
					target_include_directories(nihstro-headers INTERFACE ./nihstro/include)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# SoundTouch
 | 
				
			||||||
 | 
					add_subdirectory(soundtouch)
 | 
				
			||||||
 | 
					# The SoundTouch target doesn't export the necessary include paths as properties by default
 | 
				
			||||||
 | 
					target_include_directories(SoundTouch INTERFACE ./soundtouch/include)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Xbyak
 | 
					# Xbyak
 | 
				
			||||||
if (ARCHITECTURE_x86_64)
 | 
					if (ARCHITECTURE_x86_64)
 | 
				
			||||||
    add_library(xbyak INTERFACE)
 | 
					    # Defined before "dynarmic" above
 | 
				
			||||||
    target_include_directories(xbyak INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/xbyak/xbyak)
 | 
					    # add_library(xbyak INTERFACE)
 | 
				
			||||||
 | 
					    target_include_directories(xbyak INTERFACE ./xbyak/xbyak)
 | 
				
			||||||
    if (NOT MSVC)
 | 
					    if (NOT MSVC)
 | 
				
			||||||
        target_compile_options(xbyak INTERFACE -fno-operator-names)
 | 
					        target_compile_options(xbyak INTERFACE -fno-operator-names)
 | 
				
			||||||
    endif()
 | 
					    endif()
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					 | 
				
			||||||
add_subdirectory(cryptopp)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
add_subdirectory(fmt)
 | 
					 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										6
									
								
								externals/cryptopp/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								externals/cryptopp/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							@ -10,6 +10,7 @@
 | 
				
			|||||||
#  - disabled installation
 | 
					#  - disabled installation
 | 
				
			||||||
#  - disabled documentation
 | 
					#  - disabled documentation
 | 
				
			||||||
#  - configured to build a static library only
 | 
					#  - configured to build a static library only
 | 
				
			||||||
 | 
					#  - adds include directories to the library target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(TestBigEndian)
 | 
					include(TestBigEndian)
 | 
				
			||||||
include(CheckCXXCompilerFlag)
 | 
					include(CheckCXXCompilerFlag)
 | 
				
			||||||
@ -148,14 +149,15 @@ endif()
 | 
				
			|||||||
# Compile targets
 | 
					# Compile targets
 | 
				
			||||||
#============================================================================
 | 
					#============================================================================
 | 
				
			||||||
add_library(cryptopp STATIC ${cryptopp_SOURCES})
 | 
					add_library(cryptopp STATIC ${cryptopp_SOURCES})
 | 
				
			||||||
 | 
					target_include_directories(cryptopp INTERFACE .)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#============================================================================
 | 
					#============================================================================
 | 
				
			||||||
# Third-party libraries
 | 
					# Third-party libraries
 | 
				
			||||||
#============================================================================
 | 
					#============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(WIN32)
 | 
					if(WIN32)
 | 
				
			||||||
    target_link_libraries(cryptopp ws2_32)
 | 
					    target_link_libraries(cryptopp PRIVATE ws2_32)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
find_package(Threads)
 | 
					find_package(Threads)
 | 
				
			||||||
target_link_libraries(cryptopp ${CMAKE_THREAD_LIBS_INIT})
 | 
					target_link_libraries(cryptopp PRIVATE ${CMAKE_THREAD_LIBS_INIT})
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								externals/glad/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								externals/glad/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							@ -9,6 +9,7 @@ set(HEADERS
 | 
				
			|||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
add_library(glad STATIC ${SRCS} ${HEADERS})
 | 
					add_library(glad STATIC ${SRCS} ${HEADERS})
 | 
				
			||||||
target_include_directories(glad PUBLIC "include/")
 | 
					target_include_directories(glad PUBLIC "include/")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
 | 
					if ("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
 | 
				
			||||||
    target_link_libraries(glad dl)
 | 
					    target_link_libraries(glad PRIVATE dl)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								externals/inih/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								externals/inih/CMakeLists.txt
									
									
									
									
										vendored
									
									
								
							@ -9,3 +9,4 @@ set(HEADERS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
add_library(inih ${SRCS} ${HEADERS})
 | 
					add_library(inih ${SRCS} ${HEADERS})
 | 
				
			||||||
 | 
					target_include_directories(inih INTERFACE .)
 | 
				
			||||||
 | 
				
			|||||||
@ -27,12 +27,9 @@ set(HEADERS
 | 
				
			|||||||
            time_stretch.h
 | 
					            time_stretch.h
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include_directories(../../externals/soundtouch/include)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if(SDL2_FOUND)
 | 
					if(SDL2_FOUND)
 | 
				
			||||||
    set(SRCS ${SRCS} sdl2_sink.cpp)
 | 
					    set(SRCS ${SRCS} sdl2_sink.cpp)
 | 
				
			||||||
    set(HEADERS ${HEADERS} sdl2_sink.h)
 | 
					    set(HEADERS ${HEADERS} sdl2_sink.h)
 | 
				
			||||||
    include_directories(${SDL2_INCLUDE_DIR})
 | 
					 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
@ -42,6 +39,6 @@ target_link_libraries(audio_core PUBLIC common core)
 | 
				
			|||||||
target_link_libraries(audio_core PRIVATE SoundTouch)
 | 
					target_link_libraries(audio_core PRIVATE SoundTouch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(SDL2_FOUND)
 | 
					if(SDL2_FOUND)
 | 
				
			||||||
    target_link_libraries(audio_core PRIVATE ${SDL2_LIBRARY})
 | 
					    target_link_libraries(audio_core PRIVATE SDL2)
 | 
				
			||||||
    target_compile_definitions(audio_core PRIVATE HAVE_SDL2)
 | 
					    target_compile_definitions(audio_core PRIVATE HAVE_SDL2)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
				
			|||||||
@ -15,15 +15,13 @@ set(HEADERS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include_directories(${SDL2_INCLUDE_DIR})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
add_executable(citra ${SRCS} ${HEADERS})
 | 
					add_executable(citra ${SRCS} ${HEADERS})
 | 
				
			||||||
target_link_libraries(citra PRIVATE common core input_common)
 | 
					target_link_libraries(citra PRIVATE common core input_common)
 | 
				
			||||||
target_link_libraries(citra PRIVATE ${SDL2_LIBRARY} ${OPENGL_gl_LIBRARY} inih glad)
 | 
					target_link_libraries(citra PRIVATE inih glad)
 | 
				
			||||||
if (MSVC)
 | 
					if (MSVC)
 | 
				
			||||||
    target_link_libraries(citra PRIVATE getopt)
 | 
					    target_link_libraries(citra PRIVATE getopt)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
target_link_libraries(citra PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
 | 
					target_link_libraries(citra PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(UNIX AND NOT APPLE)
 | 
					if(UNIX AND NOT APPLE)
 | 
				
			||||||
    install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
 | 
					    install(TARGETS citra RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
 | 
				
			||||||
 | 
				
			|||||||
@ -92,7 +92,7 @@ else()
 | 
				
			|||||||
    add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS})
 | 
					    add_executable(citra-qt ${SRCS} ${HEADERS} ${UI_HDRS})
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
target_link_libraries(citra-qt PRIVATE audio_core common core input_common video_core)
 | 
					target_link_libraries(citra-qt PRIVATE audio_core common core input_common video_core)
 | 
				
			||||||
target_link_libraries(citra-qt PRIVATE ${OPENGL_gl_LIBRARY} ${CITRA_QT_LIBS} glad)
 | 
					target_link_libraries(citra-qt PRIVATE Boost::boost glad nihstro-headers Qt5::OpenGL Qt5::Widgets)
 | 
				
			||||||
target_link_libraries(citra-qt PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
 | 
					target_link_libraries(citra-qt PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(UNIX AND NOT APPLE)
 | 
					if(UNIX AND NOT APPLE)
 | 
				
			||||||
 | 
				
			|||||||
@ -95,6 +95,7 @@ endif()
 | 
				
			|||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_library(common STATIC ${SRCS} ${HEADERS})
 | 
					add_library(common STATIC ${SRCS} ${HEADERS})
 | 
				
			||||||
 | 
					target_link_libraries(common PUBLIC Boost::boost microprofile)
 | 
				
			||||||
if (ARCHITECTURE_x86_64)
 | 
					if (ARCHITECTURE_x86_64)
 | 
				
			||||||
    target_link_libraries(common PRIVATE xbyak)
 | 
					    target_link_libraries(common PRIVATE xbyak)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
				
			|||||||
@ -374,11 +374,7 @@ set(HEADERS
 | 
				
			|||||||
            telemetry_session.h
 | 
					            telemetry_session.h
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include_directories(../../externals/dynarmic/include)
 | 
					 | 
				
			||||||
include_directories(../../externals/cryptopp)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
 | 
					 | 
				
			||||||
add_library(core STATIC ${SRCS} ${HEADERS})
 | 
					add_library(core STATIC ${SRCS} ${HEADERS})
 | 
				
			||||||
target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
 | 
					target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
 | 
				
			||||||
target_link_libraries(core PRIVATE cryptopp dynarmic)
 | 
					target_link_libraries(core PUBLIC Boost::boost PRIVATE cryptopp dynarmic)
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,6 @@ set(HEADERS
 | 
				
			|||||||
if(SDL2_FOUND)
 | 
					if(SDL2_FOUND)
 | 
				
			||||||
    set(SRCS ${SRCS} sdl/sdl.cpp)
 | 
					    set(SRCS ${SRCS} sdl/sdl.cpp)
 | 
				
			||||||
    set(HEADERS ${HEADERS} sdl/sdl.h)
 | 
					    set(HEADERS ${HEADERS} sdl/sdl.h)
 | 
				
			||||||
    include_directories(${SDL2_INCLUDE_DIR})
 | 
					 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
@ -22,6 +21,6 @@ add_library(input_common STATIC ${SRCS} ${HEADERS})
 | 
				
			|||||||
target_link_libraries(input_common PUBLIC core PRIVATE common)
 | 
					target_link_libraries(input_common PUBLIC core PRIVATE common)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(SDL2_FOUND)
 | 
					if(SDL2_FOUND)
 | 
				
			||||||
    target_link_libraries(input_common PRIVATE ${SDL2_LIBRARY})
 | 
					    target_link_libraries(input_common PRIVATE SDL2)
 | 
				
			||||||
    target_compile_definitions(input_common PRIVATE HAVE_SDL2)
 | 
					    target_compile_definitions(input_common PRIVATE HAVE_SDL2)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
				
			|||||||
@ -10,11 +10,9 @@ set(HEADERS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
create_directory_groups(${SRCS} ${HEADERS})
 | 
					create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include_directories(../../externals/catch/single_include/)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
add_executable(tests ${SRCS} ${HEADERS})
 | 
					add_executable(tests ${SRCS} ${HEADERS})
 | 
				
			||||||
target_link_libraries(tests PRIVATE common core)
 | 
					target_link_libraries(tests PRIVATE common core)
 | 
				
			||||||
target_link_libraries(tests PRIVATE glad) # To support linker work-around
 | 
					target_link_libraries(tests PRIVATE glad) # To support linker work-around
 | 
				
			||||||
target_link_libraries(tests PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
 | 
					target_link_libraries(tests PRIVATE ${PLATFORM_LIBRARIES} catch-single-include Threads::Threads)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_test(NAME tests COMMAND $<TARGET_FILE:tests>)
 | 
					add_test(NAME tests COMMAND tests)
 | 
				
			||||||
 | 
				
			|||||||
@ -80,14 +80,13 @@ create_directory_groups(${SRCS} ${HEADERS})
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
add_library(video_core STATIC ${SRCS} ${HEADERS})
 | 
					add_library(video_core STATIC ${SRCS} ${HEADERS})
 | 
				
			||||||
target_link_libraries(video_core PUBLIC common core)
 | 
					target_link_libraries(video_core PUBLIC common core)
 | 
				
			||||||
target_link_libraries(video_core PRIVATE glad)
 | 
					target_link_libraries(video_core PRIVATE glad nihstro-headers)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (ARCHITECTURE_x86_64)
 | 
					if (ARCHITECTURE_x86_64)
 | 
				
			||||||
    target_link_libraries(video_core PRIVATE xbyak)
 | 
					    target_link_libraries(video_core PRIVATE xbyak)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (PNG_FOUND)
 | 
					if (PNG_FOUND)
 | 
				
			||||||
    target_link_libraries(video_core PRIVATE ${PNG_LIBRARIES})
 | 
					    target_link_libraries(video_core PRIVATE PNG::PNG)
 | 
				
			||||||
    target_include_directories(video_core PRIVATE ${PNG_INCLUDE_DIRS})
 | 
					    target_compile_definitions(video_core PRIVATE HAVE_PNG)
 | 
				
			||||||
    target_compile_definitions(video_core PRIVATE ${PNG_DEFINITIONS})
 | 
					 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user