| 
									
										
										
										
											2018-08-11 19:36:19 -04:00
										 |  |  | cmake_minimum_required(VERSION 3.7) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") | 
					
						
							|  |  |  | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") | 
					
						
							| 
									
										
										
										
											2017-09-09 11:24:13 -06:00
										 |  |  | include(DownloadExternals) | 
					
						
							| 
									
										
										
										
											2018-01-20 00:46:04 -07:00
										 |  |  | include(CMakeDependentOption) | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-11 19:21:20 -07:00
										 |  |  | project(yuzu) | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 00:46:04 -07:00
										 |  |  | # Set bundled sdl2/qt as dependent options. | 
					
						
							|  |  |  | # OFF by default, but if ENABLE_SDL2 and MSVC are true then ON | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | option(ENABLE_SDL2 "Enable the SDL2 frontend" ON) | 
					
						
							| 
									
										
										
										
											2018-01-20 00:46:04 -07:00
										 |  |  | CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF) | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | option(ENABLE_QT "Enable the Qt frontend" ON) | 
					
						
							| 
									
										
										
										
											2018-01-25 22:04:04 -07:00
										 |  |  | CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" ON "ENABLE_QT;MSVC" OFF) | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:29:05 +00:00
										 |  |  | option(YUZU_USE_BUNDLED_UNICORN "Build/Download bundled Unicorn" ON) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-28 13:44:50 -04:00
										 |  |  | option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 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() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-16 19:52:05 +01:00
										 |  |  | # Sanity check : Check that all submodules are present | 
					
						
							|  |  |  | # ======================================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function(check_submodules_present) | 
					
						
							|  |  |  |     file(READ "${CMAKE_SOURCE_DIR}/.gitmodules" gitmodules) | 
					
						
							|  |  |  |     string(REGEX MATCHALL "path *= *[^ \t\r\n]*" gitmodules ${gitmodules}) | 
					
						
							|  |  |  |     foreach(module ${gitmodules}) | 
					
						
							|  |  |  |         string(REGEX REPLACE "path *= *" "" module ${module}) | 
					
						
							|  |  |  |         if (NOT EXISTS "${CMAKE_SOURCE_DIR}/${module}/.git") | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |             message(FATAL_ERROR "Git submodule ${module} not found. " | 
					
						
							| 
									
										
										
										
											2017-07-16 19:52:05 +01:00
										 |  |  |                     "Please run: git submodule update --init --recursive") | 
					
						
							|  |  |  |         endif() | 
					
						
							|  |  |  |     endforeach() | 
					
						
							|  |  |  | endfunction() | 
					
						
							|  |  |  | check_submodules_present() | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-29 15:42:53 +02:00
										 |  |  | configure_file(${CMAKE_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc | 
					
						
							|  |  |  |                ${CMAKE_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc | 
					
						
							|  |  |  |                COPYONLY) | 
					
						
							|  |  |  | if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${CMAKE_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) | 
					
						
							|  |  |  |     message(STATUS "Downloading compatibility list for yuzu...") | 
					
						
							|  |  |  |     file(DOWNLOAD | 
					
						
							|  |  |  |         https://api.yuzu-emu.org/gamedb/ | 
					
						
							|  |  |  |         "${CMAKE_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS) | 
					
						
							|  |  |  | endif() | 
					
						
							|  |  |  | if (NOT EXISTS ${CMAKE_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) | 
					
						
							|  |  |  |     file(WRITE ${CMAKE_BINARY_DIR}/dist/compatibility_list/compatibility_list.json "") | 
					
						
							|  |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | # Detect current compilation architecture and create standard definitions | 
					
						
							|  |  |  | # ======================================================================= | 
					
						
							| 
									
										
										
										
											2015-08-28 16:57:08 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 16:55:22 -03:00
										 |  |  | include(CheckSymbolExists) | 
					
						
							|  |  |  | function(detect_architecture symbol arch) | 
					
						
							|  |  |  |     if (NOT DEFINED ARCHITECTURE) | 
					
						
							|  |  |  |         set(CMAKE_REQUIRED_QUIET 1) | 
					
						
							|  |  |  |         check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch}) | 
					
						
							|  |  |  |         unset(CMAKE_REQUIRED_QUIET) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # The output variable needs to be unique across invocations otherwise | 
					
						
							|  |  |  |         # CMake's crazy scope rules will keep it defined | 
					
						
							|  |  |  |         if (ARCHITECTURE_${arch}) | 
					
						
							|  |  |  |             set(ARCHITECTURE "${arch}" PARENT_SCOPE) | 
					
						
							|  |  |  |             set(ARCHITECTURE_${arch} 1 PARENT_SCOPE) | 
					
						
							|  |  |  |             add_definitions(-DARCHITECTURE_${arch}=1) | 
					
						
							|  |  |  |         endif() | 
					
						
							|  |  |  |     endif() | 
					
						
							|  |  |  | endfunction() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-19 19:36:09 -05:00
										 |  |  | if (NOT ENABLE_GENERIC) | 
					
						
							|  |  |  |     if (MSVC) | 
					
						
							|  |  |  |         detect_architecture("_M_AMD64" x86_64) | 
					
						
							|  |  |  |         detect_architecture("_M_IX86" x86) | 
					
						
							|  |  |  |         detect_architecture("_M_ARM" ARM) | 
					
						
							| 
									
										
										
										
											2018-08-14 19:04:46 -04:00
										 |  |  |         detect_architecture("_M_ARM64" ARM64) | 
					
						
							| 
									
										
										
										
											2018-01-19 19:36:09 -05:00
										 |  |  |     else() | 
					
						
							|  |  |  |         detect_architecture("__x86_64__" x86_64) | 
					
						
							|  |  |  |         detect_architecture("__i386__" x86) | 
					
						
							|  |  |  |         detect_architecture("__arm__" ARM) | 
					
						
							| 
									
										
										
										
											2018-08-14 19:04:46 -04:00
										 |  |  |         detect_architecture("__aarch64__" ARM64) | 
					
						
							| 
									
										
										
										
											2018-01-19 19:36:09 -05:00
										 |  |  |     endif() | 
					
						
							| 
									
										
										
										
											2015-08-28 16:55:22 -03:00
										 |  |  | endif() | 
					
						
							| 
									
										
										
										
											2018-01-19 19:36:09 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-28 16:55:22 -03:00
										 |  |  | if (NOT DEFINED ARCHITECTURE) | 
					
						
							|  |  |  |     set(ARCHITECTURE "GENERIC") | 
					
						
							|  |  |  |     set(ARCHITECTURE_GENERIC 1) | 
					
						
							|  |  |  |     add_definitions(-DARCHITECTURE_GENERIC=1) | 
					
						
							| 
									
										
										
										
											2015-08-14 22:29:08 -04:00
										 |  |  | endif() | 
					
						
							| 
									
										
										
										
											2015-08-28 16:55:22 -03:00
										 |  |  | message(STATUS "Target architecture: ${ARCHITECTURE}") | 
					
						
							| 
									
										
										
										
											2015-08-14 22:29:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Configure compilation flags | 
					
						
							|  |  |  | # =========================== | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-12 19:37:23 -05:00
										 |  |  | set(CMAKE_CXX_STANDARD 17) | 
					
						
							| 
									
										
										
										
											2016-06-30 11:59:32 -06:00
										 |  |  | set(CMAKE_CXX_STANDARD_REQUIRED ON) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  | if (NOT MSVC) | 
					
						
							| 
									
										
										
										
											2016-06-30 11:59:32 -06:00
										 |  |  |     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes") | 
					
						
							| 
									
										
										
										
											2016-03-27 11:59:50 +08:00
										 |  |  |     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") | 
					
						
							| 
									
										
										
										
											2016-08-01 15:13:35 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (MINGW) | 
					
						
							|  |  |  |         add_definitions(-DMINGW_HAS_SECURE_API) | 
					
						
							| 
									
										
										
										
											2016-11-21 18:21:36 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-01 15:13:35 -06:00
										 |  |  |         if (MINGW_STATIC_BUILD) | 
					
						
							|  |  |  |             add_definitions(-DQT_STATICPLUGIN) | 
					
						
							|  |  |  |             set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static") | 
					
						
							|  |  |  |             set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") | 
					
						
							|  |  |  |         endif() | 
					
						
							|  |  |  |     endif() | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  | else() | 
					
						
							| 
									
										
										
										
											2015-05-06 22:59:59 -03:00
										 |  |  |     # Silence "deprecation" warnings | 
					
						
							| 
									
										
										
										
											2015-09-01 15:11:25 -03:00
										 |  |  |     add_definitions(/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_DEPRECATE /D_SCL_SECURE_NO_WARNINGS) | 
					
						
							| 
									
										
										
										
											2015-05-06 22:59:59 -03:00
										 |  |  |     # Avoid windows.h junk | 
					
						
							|  |  |  |     add_definitions(/DNOMINMAX) | 
					
						
							| 
									
										
										
										
											2017-06-25 02:38:16 +02:00
										 |  |  |     # Avoid windows.h from including some usually unused libs like winsocks.h, since this might cause some redefinition errors. | 
					
						
							|  |  |  |     add_definitions(/DWIN32_LEAN_AND_MEAN) | 
					
						
							| 
									
										
										
										
											2015-05-06 22:59:59 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-01 18:48:27 -05:00
										 |  |  |     # set up output paths for executable binaries (.exe-files, and .dll-files on DLL-capable platforms) | 
					
						
							|  |  |  |     set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | 
					
						
							| 
									
										
										
										
											2016-09-01 17:06:34 -04:00
										 |  |  |     set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2014-12-21 05:18:12 -02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Tweak optimization settings | 
					
						
							|  |  |  |     # As far as I can tell, there's no way to override the CMake defaults while leaving user | 
					
						
							|  |  |  |     # changes intact, so we'll just clobber everything and say sorry. | 
					
						
							| 
									
										
										
										
											2015-01-13 17:47:32 -02:00
										 |  |  |     message(STATUS "Cache compiler flags ignored, please edit CMakeLists.txt to change the flags.") | 
					
						
							| 
									
										
										
										
											2015-07-09 16:07:37 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # /W3 - Level 3 warnings | 
					
						
							| 
									
										
										
										
											2015-03-26 04:00:49 -06:00
										 |  |  |     # /MP - Multi-threaded compilation | 
					
						
							| 
									
										
										
										
											2016-09-01 17:06:34 -04:00
										 |  |  |     # /Zi - Output debugging information | 
					
						
							| 
									
										
										
										
											2017-06-17 12:21:26 -07:00
										 |  |  |     # /Zo - enhanced debug info for optimized builds | 
					
						
							|  |  |  |     # /permissive- - enables stricter C++ standards conformance checks | 
					
						
							|  |  |  |     set(CMAKE_C_FLAGS   "/W3 /MP /Zi /Zo /permissive-" CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2015-07-09 16:07:37 -03:00
										 |  |  |     # /EHsc - C++-only exception handling semantics | 
					
						
							| 
									
										
										
										
											2017-06-17 12:21:26 -07:00
										 |  |  |     # /Zc:throwingNew - let codegen assume `operator new` will never return null | 
					
						
							|  |  |  |     # /Zc:inline - let codegen omit inline functions in object files | 
					
						
							| 
									
										
										
										
											2018-06-23 03:17:32 -04:00
										 |  |  |     set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} /EHsc /std:c++latest /Zc:throwingNew,inline" CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2015-07-09 16:07:37 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-25 14:58:47 -07:00
										 |  |  |     # /MDd - Multi-threaded Debug Runtime DLL | 
					
						
							| 
									
										
										
										
											2016-09-01 17:06:34 -04:00
										 |  |  |     set(CMAKE_C_FLAGS_DEBUG   "/Od /MDd" CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2015-07-09 16:07:37 -03:00
										 |  |  |     set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING "" FORCE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # /O2 - Optimization level 2 | 
					
						
							|  |  |  |     # /GS- - No stack buffer overflow checks | 
					
						
							| 
									
										
										
										
											2015-02-25 14:58:47 -07:00
										 |  |  |     # /MD - Multi-threaded runtime DLL | 
					
						
							| 
									
										
										
										
											2016-09-01 17:06:34 -04:00
										 |  |  |     set(CMAKE_C_FLAGS_RELEASE   "/O2 /GS- /MD" CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2015-07-09 16:07:37 -03:00
										 |  |  |     set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2015-05-25 20:34:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-31 18:37:11 -04:00
										 |  |  |     set(CMAKE_EXE_LINKER_FLAGS_DEBUG   "/DEBUG /MANIFEST:NO" CACHE STRING "" FORCE) | 
					
						
							|  |  |  |     set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /MANIFEST:NO /INCREMENTAL:NO /OPT:REF,ICF" CACHE STRING "" FORCE) | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  | endif() | 
					
						
							| 
									
										
										
										
											2015-01-10 18:42:24 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-14 21:48:01 -05:00
										 |  |  | # Fix GCC C++17 and Boost.ICL incompatibility (needed to build dynarmic) | 
					
						
							|  |  |  | # See https://bugzilla.redhat.com/show_bug.cgi?id=1485641#c1 | 
					
						
							|  |  |  | if (CMAKE_COMPILER_IS_GNUCC) | 
					
						
							|  |  |  |     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-new-ttp-matching") | 
					
						
							|  |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-17 04:30:00 -06:00
										 |  |  | # Set file offset size to 64 bits. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # On modern Unixes, this is typically already the case. The lone exception is | 
					
						
							|  |  |  | # glibc, which may default to 32 bits. glibc allows this to be configured | 
					
						
							|  |  |  | # by setting _FILE_OFFSET_BITS. | 
					
						
							|  |  |  | if(CMAKE_SYSTEM_NAME STREQUAL "Linux") | 
					
						
							|  |  |  |     add_definitions(-D_FILE_OFFSET_BITS=64) | 
					
						
							|  |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-10 18:42:24 -02:00
										 |  |  | # CMake seems to only define _DEBUG on Windows | 
					
						
							|  |  |  | set_property(DIRECTORY APPEND PROPERTY | 
					
						
							|  |  |  |     COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG> $<$<NOT:$<CONFIG:Debug>>:NDEBUG>) | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-21 18:27:07 +01:00
										 |  |  | math(EXPR EMU_ARCH_BITS ${CMAKE_SIZEOF_VOID_P}*8) | 
					
						
							|  |  |  | add_definitions(-DEMU_ARCH_BITS=${EMU_ARCH_BITS}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | # System imported libraries | 
					
						
							|  |  |  | # ====================== | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 19:21:06 -07:00
										 |  |  | find_package(Boost 1.63.0 QUIET) | 
					
						
							| 
									
										
										
										
											2016-09-01 22:55:07 -04:00
										 |  |  | if (NOT Boost_FOUND) | 
					
						
							| 
									
										
										
										
											2017-05-27 19:21:06 -07:00
										 |  |  |     message(STATUS "Boost 1.63.0 or newer not found, falling back to externals") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     set(BOOST_ROOT "${CMAKE_SOURCE_DIR}/externals/boost") | 
					
						
							|  |  |  |     set(Boost_NO_SYSTEM_PATHS OFF) | 
					
						
							|  |  |  |     find_package(Boost QUIET REQUIRED) | 
					
						
							| 
									
										
										
										
											2014-12-07 22:22:04 +01:00
										 |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-15 10:42:40 +01:00
										 |  |  | # Output binaries to bin/ | 
					
						
							|  |  |  | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-24 23:39:25 +08:00
										 |  |  | # Prefer the -pthread flag on Linux. | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | set(THREADS_PREFER_PTHREAD_FLAG ON) | 
					
						
							| 
									
										
										
										
											2016-03-27 11:59:50 +08:00
										 |  |  | find_package(Threads REQUIRED) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-01 17:24:18 +00:00
										 |  |  | if (ENABLE_SDL2) | 
					
						
							| 
									
										
										
										
											2018-01-15 23:05:20 +01:00
										 |  |  |     if (YUZU_USE_BUNDLED_SDL2) | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |         # Detect toolchain and platform | 
					
						
							| 
									
										
										
										
											2018-08-11 19:36:19 -04:00
										 |  |  |         if ((MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) AND ARCHITECTURE_x86_64) | 
					
						
							| 
									
										
										
										
											2018-08-12 02:42:10 -04:00
										 |  |  |             set(SDL2_VER "SDL2-2.0.8") | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |         else() | 
					
						
							| 
									
										
										
										
											2018-01-15 23:05:20 +01:00
										 |  |  |             message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable YUZU_USE_BUNDLED_SDL2 and provide your own.") | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |         endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-01 17:24:18 +00:00
										 |  |  |         if (DEFINED SDL2_VER) | 
					
						
							|  |  |  |             download_bundled_external("sdl2/" ${SDL2_VER} SDL2_PREFIX) | 
					
						
							| 
									
										
										
										
											2015-08-28 16:57:08 -03:00
										 |  |  |         endif() | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-27 10:57:29 +01:00
										 |  |  |         set(SDL2_FOUND YES) | 
					
						
							| 
									
										
										
										
											2016-03-01 17:24:18 +00:00
										 |  |  |         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") | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |     else() | 
					
						
							| 
									
										
										
										
											2016-03-01 17:24:18 +00:00
										 |  |  |         find_package(SDL2 REQUIRED) | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |     endif() | 
					
						
							| 
									
										
										
										
											2017-05-27 21:38:49 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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() | 
					
						
							| 
									
										
										
										
											2016-04-27 10:57:29 +01:00
										 |  |  | else() | 
					
						
							|  |  |  |     set(SDL2_FOUND NO) | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  | endif() | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  | # If unicorn isn't found, msvc -> download bundled unicorn; everyone else -> build external | 
					
						
							| 
									
										
										
										
											2018-01-21 13:29:05 +00:00
										 |  |  | if (YUZU_USE_BUNDLED_UNICORN) | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |     if (MSVC) | 
					
						
							|  |  |  |         message(STATUS "unicorn not found, falling back to bundled") | 
					
						
							|  |  |  |         # Detect toolchain and platform | 
					
						
							| 
									
										
										
										
											2018-08-11 19:36:19 -04:00
										 |  |  |         if ((MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) AND ARCHITECTURE_x86_64) | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |             set(UNICORN_VER "unicorn-yuzu") | 
					
						
							|  |  |  |         else() | 
					
						
							|  |  |  |             message(FATAL_ERROR "No bundled Unicorn binaries for your toolchain. Disable YUZU_USE_BUNDLED_UNICORN and provide your own.") | 
					
						
							|  |  |  |         endif() | 
					
						
							| 
									
										
										
										
											2018-01-04 00:13:23 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |         if (DEFINED UNICORN_VER) | 
					
						
							|  |  |  |             download_bundled_external("unicorn/" ${UNICORN_VER} UNICORN_PREFIX) | 
					
						
							|  |  |  |         endif() | 
					
						
							| 
									
										
										
										
											2018-01-04 00:13:23 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |         if (DEFINED UNICORN_VER) | 
					
						
							|  |  |  |             download_bundled_external("unicorn/" ${UNICORN_VER} UNICORN_PREFIX) | 
					
						
							|  |  |  |         endif() | 
					
						
							| 
									
										
										
										
											2018-01-04 00:13:23 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |         set(UNICORN_FOUND YES) | 
					
						
							|  |  |  |         set(LIBUNICORN_INCLUDE_DIR "${UNICORN_PREFIX}/include" CACHE PATH "Path to Unicorn headers" FORCE) | 
					
						
							|  |  |  |         set(LIBUNICORN_LIBRARY "${UNICORN_PREFIX}/lib/x64/unicorn_dynload.lib" CACHE PATH "Path to Unicorn library" FORCE) | 
					
						
							|  |  |  |         set(UNICORN_DLL_DIR "${UNICORN_PREFIX}/lib/x64/" CACHE PATH "Path to unicorn.dll" FORCE) | 
					
						
							| 
									
										
										
										
											2018-01-15 20:53:53 -07:00
										 |  |  |     else() | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |         message(STATUS "unicorn not found, falling back to externals") | 
					
						
							|  |  |  |         if (MINGW) | 
					
						
							|  |  |  |             set(UNICORN_LIB_NAME "unicorn.a") | 
					
						
							|  |  |  |         else() | 
					
						
							|  |  |  |             set(UNICORN_LIB_NAME "libunicorn.a") | 
					
						
							|  |  |  |         endif() | 
					
						
							| 
									
										
										
										
											2018-01-15 20:53:53 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |         set(UNICORN_FOUND YES) | 
					
						
							|  |  |  |         set(UNICORN_PREFIX ${CMAKE_SOURCE_DIR}/externals/unicorn) | 
					
						
							|  |  |  |         set(LIBUNICORN_LIBRARY "${UNICORN_PREFIX}/${UNICORN_LIB_NAME}" CACHE PATH "Path to Unicorn library" FORCE) | 
					
						
							|  |  |  |         set(LIBUNICORN_INCLUDE_DIR "${UNICORN_PREFIX}/include" CACHE PATH "Path to Unicorn headers" FORCE) | 
					
						
							|  |  |  |         set(UNICORN_DLL_DIR "${UNICORN_PREFIX}/" CACHE PATH "Path to unicorn dynamic library" FORCE) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 20:05:05 +01:00
										 |  |  |         find_package(PythonInterp 2.7 REQUIRED) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |         add_custom_command(OUTPUT ${LIBUNICORN_LIBRARY} | 
					
						
							| 
									
										
										
										
											2018-01-21 13:57:14 +00:00
										 |  |  |             COMMAND ${CMAKE_COMMAND} -E env UNICORN_ARCHS="aarch64" PYTHON="${PYTHON_EXECUTABLE}" /bin/sh make.sh macos-universal-no | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  |             WORKING_DIRECTORY ${UNICORN_PREFIX} | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         # ALL makes this custom target build every time | 
					
						
							|  |  |  |         # but it won't actually build if LIBUNICORN_LIBRARY is up to date | 
					
						
							|  |  |  |         add_custom_target(unicorn-build ALL | 
					
						
							|  |  |  |             DEPENDS ${LIBUNICORN_LIBRARY} | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         unset(UNICORN_LIB_NAME) | 
					
						
							|  |  |  |     endif() | 
					
						
							| 
									
										
										
										
											2018-01-21 13:29:05 +00:00
										 |  |  | else() | 
					
						
							|  |  |  |     find_package(Unicorn REQUIRED) | 
					
						
							| 
									
										
										
										
											2018-01-04 00:13:23 -05:00
										 |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (UNICORN_FOUND) | 
					
						
							|  |  |  |     add_library(unicorn INTERFACE) | 
					
						
							| 
									
										
										
										
											2018-01-07 22:43:41 +00:00
										 |  |  |     target_link_libraries(unicorn INTERFACE "${LIBUNICORN_LIBRARY}") | 
					
						
							|  |  |  |     target_include_directories(unicorn INTERFACE "${LIBUNICORN_INCLUDE_DIR}") | 
					
						
							| 
									
										
										
										
											2018-01-16 09:39:07 -07:00
										 |  |  | else() | 
					
						
							|  |  |  |     message(FATAL_ERROR "Could not find or build unicorn which is required.") | 
					
						
							| 
									
										
										
										
											2018-01-04 00:13:23 -05:00
										 |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | if (ENABLE_QT) | 
					
						
							| 
									
										
										
										
											2018-01-15 23:05:20 +01:00
										 |  |  |     if (YUZU_USE_BUNDLED_QT) | 
					
						
							| 
									
										
										
										
											2018-08-11 19:36:19 -04:00
										 |  |  |         if ((MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS 1920) AND ARCHITECTURE_x86_64) | 
					
						
							| 
									
										
										
										
											2018-01-17 09:20:53 -05:00
										 |  |  |             set(QT_VER qt-5.10.0-msvc2015_64) | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  |         else() | 
					
						
							| 
									
										
										
										
											2018-01-15 23:05:20 +01:00
										 |  |  |             message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable YUZU_USE_BUNDLED_QT and provide your own.") | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  |         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 | 
					
						
							|  |  |  | # ====================================== | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-28 19:40:39 -07:00
										 |  |  | IF (APPLE) | 
					
						
							| 
									
										
										
										
											2018-08-04 17:20:10 -04:00
										 |  |  |     find_library(COCOA_LIBRARY Cocoa)           # Umbrella framework for everything GUI-related | 
					
						
							| 
									
										
										
										
											2016-10-10 17:35:23 +00:00
										 |  |  |     set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY}) | 
					
						
							| 
									
										
										
										
											2015-05-25 20:34:09 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-09 23:05:46 -08:00
										 |  |  |     if (CMAKE_CXX_COMPILER_ID STREQUAL Clang) | 
					
						
							|  |  |  |         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") | 
					
						
							|  |  |  |         set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++") | 
					
						
							|  |  |  |     endif() | 
					
						
							| 
									
										
										
										
											2016-11-28 19:38:47 +01:00
										 |  |  | ELSEIF (WIN32) | 
					
						
							| 
									
										
										
										
											2016-11-30 15:59:26 +01:00
										 |  |  |     # WSAPoll and SHGetKnownFolderPath (AppData/Roaming) didn't exist before WinNT 6.x (Vista) | 
					
						
							| 
									
										
										
										
											2016-11-28 19:38:47 +01:00
										 |  |  |     add_definitions(-D_WIN32_WINNT=0x0600 -DWINVER=0x0600) | 
					
						
							| 
									
										
										
										
											2015-01-10 12:32:28 -05:00
										 |  |  |     set(PLATFORM_LIBRARIES winmm ws2_32) | 
					
						
							| 
									
										
										
										
											2016-11-30 15:59:26 +01:00
										 |  |  |     IF (MINGW) | 
					
						
							| 
									
										
										
										
											2016-11-28 19:38:47 +01:00
										 |  |  |         # PSAPI is the Process Status API | 
					
						
							| 
									
										
										
										
											2016-11-30 15:59:26 +01:00
										 |  |  |         set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version) | 
					
						
							| 
									
										
										
										
											2016-11-28 19:38:47 +01:00
										 |  |  |     ENDIF (MINGW) | 
					
						
							|  |  |  | ELSEIF (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$") | 
					
						
							| 
									
										
										
										
											2014-12-24 10:34:25 +01:00
										 |  |  |     set(PLATFORM_LIBRARIES rt) | 
					
						
							| 
									
										
										
										
											2014-04-28 19:40:39 -07:00
										 |  |  | ENDIF (APPLE) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-10 17:35:23 +00:00
										 |  |  | # MINGW: GCC does not support codecvt, so use iconv instead | 
					
						
							|  |  |  | if (UNIX OR MINGW) | 
					
						
							|  |  |  |     find_library(ICONV_LIBRARY NAMES iconv) | 
					
						
							|  |  |  |     if (ICONV_LIBRARY) | 
					
						
							|  |  |  |         list(APPEND PLATFORM_LIBRARIES ${ICONV_LIBRARY}) | 
					
						
							|  |  |  |     endif() | 
					
						
							|  |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-20 00:31:44 -07:00
										 |  |  | # Setup a custom clang-format target (if clang-format can be found) that will run | 
					
						
							|  |  |  | # against all the src files. This should be used before making a pull request. | 
					
						
							|  |  |  | # ======================================================================= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | set(CLANG_FORMAT_POSTFIX "-6.0") | 
					
						
							|  |  |  | find_program(CLANG_FORMAT | 
					
						
							|  |  |  |     NAMES clang-format${CLANG_FORMAT_POSTFIX} | 
					
						
							|  |  |  |           clang-format | 
					
						
							|  |  |  |     PATHS ${CMAKE_BINARY_DIR}/externals) | 
					
						
							|  |  |  | # if find_program doesn't find it, try to download from externals | 
					
						
							|  |  |  | if (NOT CLANG_FORMAT) | 
					
						
							|  |  |  |     if (WIN32) | 
					
						
							|  |  |  |         message(STATUS "Clang format not found! Downloading...") | 
					
						
							|  |  |  |         set(CLANG_FORMAT "${CMAKE_BINARY_DIR}/externals/clang-format${CLANG_FORMAT_POSTFIX}.exe") | 
					
						
							|  |  |  |         file(DOWNLOAD | 
					
						
							|  |  |  |             https://github.com/yuzu-emu/ext-windows-bin/raw/master/clang-format${CLANG_FORMAT_POSTFIX}.exe | 
					
						
							|  |  |  |             "${CLANG_FORMAT}" SHOW_PROGRESS | 
					
						
							|  |  |  |             STATUS DOWNLOAD_SUCCESS) | 
					
						
							|  |  |  |         if (NOT DOWNLOAD_SUCCESS EQUAL 0) | 
					
						
							|  |  |  |             message(WARNING "Could not download clang format! Disabling the clang format target") | 
					
						
							|  |  |  |             file(REMOVE ${CLANG_FORMAT}) | 
					
						
							|  |  |  |             unset(CLANG_FORMAT) | 
					
						
							|  |  |  |         endif() | 
					
						
							|  |  |  |     else() | 
					
						
							|  |  |  |         message(WARNING "Clang format not found! Disabling the clang format target") | 
					
						
							|  |  |  |     endif() | 
					
						
							|  |  |  | endif() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (CLANG_FORMAT) | 
					
						
							|  |  |  |     set(SRCS ${CMAKE_SOURCE_DIR}/src) | 
					
						
							|  |  |  |     set(CCOMMENT "Running clang format against all the .h and .cpp files in src/") | 
					
						
							|  |  |  |     if (WIN32) | 
					
						
							|  |  |  |         add_custom_target(clang-format | 
					
						
							|  |  |  |             COMMAND powershell.exe -Command "${CLANG_FORMAT} -i @(Get-ChildItem -Recurse ${SRCS}/* -Include \'*.h\', \'*.cpp\')" | 
					
						
							|  |  |  |             COMMENT ${CCOMMENT}) | 
					
						
							|  |  |  |     elseif(MINGW) | 
					
						
							|  |  |  |         add_custom_target(clang-format | 
					
						
							|  |  |  |             COMMAND find `cygpath -u ${SRCS}` -iname *.h -o -iname *.cpp | xargs `cygpath -u ${CLANG_FORMAT}` -i | 
					
						
							|  |  |  |             COMMENT ${CCOMMENT}) | 
					
						
							|  |  |  |     else() | 
					
						
							|  |  |  |         add_custom_target(clang-format | 
					
						
							|  |  |  |             COMMAND find ${SRCS} -iname *.h -o -iname *.cpp | xargs ${CLANG_FORMAT} -i | 
					
						
							|  |  |  |             COMMENT ${CCOMMENT}) | 
					
						
							|  |  |  |     endif() | 
					
						
							|  |  |  |     unset(SRCS) | 
					
						
							|  |  |  |     unset(CCOMMENT) | 
					
						
							|  |  |  | endif() | 
					
						
							| 
									
										
										
										
											2015-08-28 16:57:08 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | # Include source code | 
					
						
							|  |  |  | # =================== | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  | # 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 | 
					
						
							|  |  |  | # one in the filesystem. | 
					
						
							| 
									
										
										
										
											2018-01-17 19:37:34 -05:00
										 |  |  | function(create_target_directory_groups target_name) | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |     # Place any files that aren't in the source list in a separate group so that they don't get in | 
					
						
							|  |  |  |     # the way. | 
					
						
							|  |  |  |     source_group("Other Files" REGULAR_EXPRESSION ".") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-17 19:37:34 -05:00
										 |  |  |     get_target_property(target_sources "${target_name}" SOURCES) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     foreach(file_name IN LISTS target_sources) | 
					
						
							| 
									
										
										
										
											2014-08-23 22:22:05 -03:00
										 |  |  |         get_filename_component(dir_name "${file_name}" PATH) | 
					
						
							|  |  |  |         # Group names use '\' as a separator even though the entire rest of CMake uses '/'... | 
					
						
							|  |  |  |         string(REPLACE "/" "\\" group_name "${dir_name}") | 
					
						
							|  |  |  |         source_group("${group_name}" FILES "${file_name}") | 
					
						
							|  |  |  |     endforeach() | 
					
						
							|  |  |  | endfunction() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-01 19:54:24 -04:00
										 |  |  | # Gets a UTC timstamp and sets the provided variable to it | 
					
						
							|  |  |  | function(get_timestamp _var) | 
					
						
							|  |  |  |     string(TIMESTAMP timestamp UTC) | 
					
						
							|  |  |  |     set(${_var} "${timestamp}" PARENT_SCOPE) | 
					
						
							|  |  |  | endfunction() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # generate git/build information | 
					
						
							| 
									
										
										
										
											2014-04-23 18:43:57 -07:00
										 |  |  | include(GetGitRevisionDescription) | 
					
						
							|  |  |  | get_git_head_revision(GIT_REF_SPEC GIT_REV) | 
					
						
							|  |  |  | git_describe(GIT_DESC --always --long --dirty) | 
					
						
							| 
									
										
										
										
											2014-04-23 19:13:00 -07:00
										 |  |  | git_branch_name(GIT_BRANCH) | 
					
						
							| 
									
										
										
										
											2017-08-01 19:54:24 -04:00
										 |  |  | get_timestamp(BUILD_DATE) | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-01 22:11:06 +01:00
										 |  |  | enable_testing() | 
					
						
							| 
									
										
										
										
											2016-12-11 14:59:28 -08:00
										 |  |  | add_subdirectory(externals) | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | add_subdirectory(src) | 
					
						
							| 
									
										
										
										
											2015-04-22 13:34:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 23:45:55 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Installation instructions | 
					
						
							|  |  |  | # ========================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-22 13:34:42 +02:00
										 |  |  | # Install freedesktop.org metadata files, following those specifications: | 
					
						
							|  |  |  | # http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html | 
					
						
							|  |  |  | # http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html | 
					
						
							|  |  |  | # http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html | 
					
						
							| 
									
										
										
										
											2016-10-10 05:58:05 +00:00
										 |  |  | if(ENABLE_QT AND UNIX AND NOT APPLE) | 
					
						
							| 
									
										
										
										
											2018-01-13 15:39:31 -07:00
										 |  |  |     install(FILES "${CMAKE_SOURCE_DIR}/dist/yuzu.desktop" | 
					
						
							| 
									
										
										
										
											2015-04-22 13:34:42 +02:00
										 |  |  |             DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications") | 
					
						
							| 
									
										
										
										
											2018-01-13 15:39:31 -07:00
										 |  |  |     install(FILES "${CMAKE_SOURCE_DIR}/dist/yuzu.svg" | 
					
						
							| 
									
										
										
										
											2018-01-26 04:00:12 +01:00
										 |  |  |             DESTINATION "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps") | 
					
						
							| 
									
										
										
										
											2018-01-13 15:39:31 -07:00
										 |  |  |     install(FILES "${CMAKE_SOURCE_DIR}/dist/yuzu.xml" | 
					
						
							| 
									
										
										
										
											2015-04-22 13:34:42 +02:00
										 |  |  |             DESTINATION "${CMAKE_INSTALL_PREFIX}/share/mime/packages") | 
					
						
							|  |  |  | endif() |