forked from PCSX2/pcsx2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
156 lines (133 loc) · 6.19 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# Project Name
project(Pcsx2)
# Debian-based distributions require at least 2.8.5 due to multiarch.
cmake_minimum_required(VERSION 2.8.5)
# Keep OLD policy. Code was updated to support the new one but wasn't tested
#
# cmake version 2.8.9
# CMP0018
# Ignore CMAKE_SHARED_LIBRARY_<Lang>_FLAGS variable.
#
# CMake 2.8.8 and lower compiled sources in SHARED and MODULE libraries
# using the value of the undocumented CMAKE_SHARED_LIBRARY_<Lang>_FLAGS
# platform variable. The variable contained platform-specific flags
# needed to compile objects for shared libraries. Typically it included
# a flag such as -fPIC for position independent code but also included
# other flags needed on certain platforms. CMake 2.8.9 and higher
# prefer instead to use the POSITION_INDEPENDENT_CODE target property to
# determine what targets should be position independent, and new
# undocumented platform variables to select flags while ignoring
# CMAKE_SHARED_LIBRARY_<Lang>_FLAGS completely.
#
# The default for either approach produces identical compilation flags,
# but if a project modifies CMAKE_SHARED_LIBRARY_<Lang>_FLAGS from its
# original value this policy determines which approach to use.
#
# The OLD behavior for this policy is to ignore the
# POSITION_INDEPENDENT_CODE property for all targets and use the
# modified value of CMAKE_SHARED_LIBRARY_<Lang>_FLAGS for SHARED and
# MODULE libraries.
#
# The NEW behavior for this policy is to ignore
# CMAKE_SHARED_LIBRARY_<Lang>_FLAGS whether it is modified or not and
# honor the POSITION_INDEPENDENT_CODE target property.
if(POLICY CMP0018)
cmake_policy(SET CMP0018 OLD)
endif()
if(POLICY CMP0022)
cmake_policy(SET CMP0022 OLD)
endif()
# Variable to check that people use the good file
set(TOP_CMAKE_WAS_SOURCED TRUE)
# Print a clear message that 64bits is not supported
# It would avoid compilation failure later.
# Note: disable the failure in package mode
if(NOT PACKAGE_MODE)
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
message(WARNING "
PCSX2 does not support a 64-bits environment and has no plan to support a 64-bits architecture in the future.
It would need a complete rewrite of the core emulator and a lot of time.
You can still run a 32-bits binary if you install all 32-bits libraries (runtime and dev).")
endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
endif(NOT PACKAGE_MODE)
# 64 bits specific configuration
if(CMAKE_SIZEOF_VOID_P MATCHES "8")
# Do not search library in /usr/lib64
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS OFF)
# Probably useless but it will not harm
SET_PROPERTY(GLOBAL PROPERTY COMPILE_DEFINITIONS "-m32")
# Force the search on 32-bits path.
if(EXISTS "/usr/lib32")
set(CMAKE_LIBRARY_ARCHITECTURE "../lib32")
endif()
endif(CMAKE_SIZEOF_VOID_P MATCHES "8")
# Debian/ubuntu drop /usr/lib32 and move /usr/lib to /usr/lib/i386-linux-gnu
if(EXISTS "/usr/lib/i386-linux-gnu")
set(CMAKE_LIBRARY_ARCHITECTURE "i386-linux-gnu")
endif()
# * -fPIC option was removed for multiple reasons.
# - Code only supports the x86 architecture.
# - code uses the ebx register so it's not compliant with PIC.
# - Impacts the performance too much.
# - Only plugins. No package will link to them.
set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
# set module path
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
# include some generic functions to ensure correctness of the env
include(Pcsx2Utils)
check_no_parenthesis_in_path()
detectOperatingSystem()
check_compiler_version("4.7" "4.5")
#-------------------------------------------------------------------------------
# Include specific module
# BuildParameters Must be done before SearchForStuff
include(BuildParameters)
# SearchForStuff be done before SelectPcsx2Plugins
include(SearchForStuff)
include(SelectPcsx2Plugins)
# Must be done after SearchForStuff
write_svnrev_h()
# add additional project-wide include directories
include_directories(${CMAKE_SOURCE_DIR}/common/include
${CMAKE_SOURCE_DIR}/common/include/Utilities
${CMAKE_SOURCE_DIR}/common/include/x86emitter
# File generated by Cmake
${CMAKE_BINARY_DIR}/common/include
# WORKAROUND Some issue with multiarch on Debian/Ubuntu
/usr/include/i386-linux-gnu
# WORKAROUND Clang integration issue with multiarch on Debian
#/usr/include/i386-linux-gnu/c++
#/usr/include/i386-linux-gnu/c++/4.8
)
# make the translation
if(EXISTS "${CMAKE_SOURCE_DIR}/locales")
add_subdirectory(locales)
endif(EXISTS "${CMAKE_SOURCE_DIR}/locales")
# make 3rdParty
if(EXISTS "${CMAKE_SOURCE_DIR}/3rdparty")
add_subdirectory(3rdparty)
endif(EXISTS "${CMAKE_SOURCE_DIR}/3rdparty")
# make common
if(common_libs)
add_subdirectory(common/src/Utilities)
add_subdirectory(common/src/x86emitter)
endif(common_libs)
# make pcsx2
if(EXISTS "${CMAKE_SOURCE_DIR}/pcsx2" AND pcsx2_core)
add_subdirectory(pcsx2)
endif(EXISTS "${CMAKE_SOURCE_DIR}/pcsx2" AND pcsx2_core)
# make plugins
if(EXISTS "${CMAKE_SOURCE_DIR}/plugins")
add_subdirectory(plugins)
endif(EXISTS "${CMAKE_SOURCE_DIR}/plugins")
#-------------------------------------------------------------------------------
# Install some files to ease package creation
if(PACKAGE_MODE)
INSTALL(FILES "${CMAKE_SOURCE_DIR}/bin/cheats_ws.zip" DESTINATION "${GAMEINDEX_DIR}")
INSTALL(FILES "${CMAKE_SOURCE_DIR}/bin/GameIndex.dbf" DESTINATION "${GAMEINDEX_DIR}")
INSTALL(FILES "${CMAKE_SOURCE_DIR}/linux_various/pcsx2.desktop" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/applications")
INSTALL(FILES "${CMAKE_SOURCE_DIR}/linux_various/pcsx2.xpm" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/pixmaps")
INSTALL(FILES "${CMAKE_SOURCE_DIR}/bin/docs/PCSX2_FAQ.pdf" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/doc/pcsx2")
INSTALL(FILES "${CMAKE_SOURCE_DIR}/bin/docs/PCSX2_Readme.pdf" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/doc/pcsx2")
INSTALL(FILES "${CMAKE_SOURCE_DIR}/bin/docs/pcsx2.1" DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man1/")
endif(PACKAGE_MODE)