forked from neobrain/citra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
139 lines (116 loc) · 4.44 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# CMake 2.8.11 required for Qt5 settings to be applied automatically on
# dependent libraries.
cmake_minimum_required(VERSION 2.8.11)
project(citra)
if (NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-attributes")
else()
# Silence deprecation warnings
add_definitions(/D_CRT_SECURE_NO_WARNINGS)
endif()
add_definitions(-DSINGLETHREADED)
find_package(PNG)
if (PNG_FOUND)
add_definitions(-DHAVE_PNG)
endif ()
# Include bundled CMake modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/externals/cmake-modules")
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
option(ENABLE_GLFW "Enable the GLFW frontend" ON)
if (ENABLE_GLFW)
if (WIN32)
# Detect toolchain and platform
if (MSVC)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(TMP_ARCH "x64")
else()
set(TMP_ARCH "Win32")
endif()
if (MSVC11) # Visual C++ 2012
set(TMP_TOOLSET "v110")
elseif (MSVC12) # Visual C++ 2013
set(TMP_TOOLSET "v120")
else()
set(TMP_TOOLSET "UNSUPPORTED")
message(SEND_ERROR "We don't supply GLFW binaries for your version of MSVC, you might have to provide them yourself.")
endif()
set(TMP_TOOLSET "msvc_${TMP_TOOLSET}-${TMP_ARCH}")
else()
# Assume mingw
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(TMP_ARCH "x86_64")
else()
set(TMP_ARCH "i686")
endif()
set(TMP_TOOLSET "mingw-${TMP_ARCH}")
endif()
set(GLFW_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/externals/glfw-3.0.4.bin")
set(GLFW_INCLUDE_DIRS "${GLFW_PREFIX}/include" CACHE PATH "Path to GLFW3 headers")
set(GLFW_LIBRARY_DIRS "${GLFW_PREFIX}/lib-${TMP_TOOLSET}" CACHE PATH "Path to GLFW3 libraries")
# Clean up after ourselves
unset(TMP_TOOLSET)
unset(TMP_ARCH)
set(GLFW_LIBRARIES glfw3)
else()
if (NOT APPLE)
find_package(X11 REQUIRED)
endif()
find_package(PkgConfig REQUIRED)
pkg_search_module(GLFW REQUIRED glfw3)
endif()
include_directories(${GLFW_INCLUDE_DIRS})
link_directories(${GLFW_LIBRARY_DIRS})
endif()
IF (APPLE)
# CoreFoundation is required only on OSX
FIND_LIBRARY(COREFOUNDATION_LIBRARY CoreFoundation)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
ENDIF (APPLE)
option(ENABLE_QT "Enable the Qt frontend" ON)
option(CITRA_FORCE_QT4 "Use Qt4 even if Qt5 is available." OFF)
if (ENABLE_QT)
# Set CMAKE_PREFIX_PATH if QTDIR is defined in the environment This allows CMake to
# automatically find the Qt packages on Windows
if (DEFINED ENV{QTDIR})
list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR}")
endif()
if (NOT CITRA_FORCE_QT4)
find_package(Qt5 COMPONENTS Widgets OpenGL)
set(CITRA_QT_LIBS Qt5::Widgets Qt5::OpenGL)
endif()
if (CITRA_FORCE_QT4 OR NOT Qt5_FOUND)
# Try to fallback to Qt4
find_package(Qt4 REQUIRED COMPONENTS QtGui QtOpenGL)
set(CITRA_QT_LIBS Qt4::QtGui Qt4::QtOpenGL)
endif()
endif()
# 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.
function(create_directory_groups)
# 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 ".")
foreach(file_name ${ARGV})
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()
# generate git revision information
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REF_SPEC GIT_REV)
git_describe(GIT_DESC --always --long --dirty)
git_branch_name(GIT_BRANCH)
set(INI_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/externals/inih")
include_directories(${INI_PREFIX})
add_subdirectory(${INI_PREFIX})
# process subdirectories
if(ENABLE_QT)
include_directories(externals/qhexedit)
add_subdirectory(externals/qhexedit)
endif()
add_subdirectory(src)