/
CMakeLists.txt
227 lines (191 loc) · 9.35 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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
PROJECT(QtWebKit)
# Name and version of our package
SET(PACKAGE_NAME QtWebKit)
SET(PACKAGE_VERSION 5.212.0)
# Version of our package's library
SET(MAJOR_LIBRARY_VERSION 5)
SET(MINOR_LIBRARY_VERSION 212)
SET(LIBRARY_VERSION ${MAJOR_LIBRARY_VERSION}.${MINOR_LIBRARY_VERSION}.0)
# Git tag for our library
SET(GIT_TAG v5.212.0-alpha2)
# Package repository and release tag
SET(PACKAGE_REPOSITORY qtwebkitreloaded)
SET(RELEASE_TAG v5.212.0-alpha2)
# Platform target for our library
SET(TARGET_PLATFORM ${PLATFORM})
# Specify where our local package will be installed
# Note: on Windows, we would normally distinguish between release and debug
# modes, but QtWebKit's build system doesn't, hence we go one folder up...
IF(WIN32)
STRING(REGEX REPLACE "/[^/]+$" "" REAL_LOCAL_EXTERNAL_PACKAGE_DIR ${LOCAL_EXTERNAL_PACKAGE_DIR})
ELSE()
SET(REAL_LOCAL_EXTERNAL_PACKAGE_DIR ${LOCAL_EXTERNAL_PACKAGE_DIR})
ENDIF()
SET(FULL_LOCAL_EXTERNAL_PACKAGE_DIR ${PROJECT_SOURCE_DIR}/${REAL_LOCAL_EXTERNAL_PACKAGE_DIR})
# Name of our package's shared library (and of its import library, if any)
IF(WIN32)
SET(QTWEBKIT_SHARED_LIBRARY Qt${QT_VERSION_MAJOR}WebKit${CMAKE_SHARED_LIBRARY_SUFFIX})
SET(QTWEBKIT_IMPORT_LIBRARY Qt${QT_VERSION_MAJOR}WebKit${CMAKE_IMPORT_LIBRARY_SUFFIX})
SET(QTWEBKITD_SHARED_LIBRARY Qt${QT_VERSION_MAJOR}WebKitd${CMAKE_SHARED_LIBRARY_SUFFIX})
SET(QTWEBKITD_IMPORT_LIBRARY Qt${QT_VERSION_MAJOR}WebKitd${CMAKE_IMPORT_LIBRARY_SUFFIX})
SET(QTWEBKITWIDGETS_SHARED_LIBRARY Qt${QT_VERSION_MAJOR}WebKitWidgets${CMAKE_SHARED_LIBRARY_SUFFIX})
SET(QTWEBKITWIDGETS_IMPORT_LIBRARY Qt${QT_VERSION_MAJOR}WebKitWidgets${CMAKE_IMPORT_LIBRARY_SUFFIX})
SET(QTWEBKITWIDGETSD_SHARED_LIBRARY Qt${QT_VERSION_MAJOR}WebKitWidgetsd${CMAKE_SHARED_LIBRARY_SUFFIX})
SET(QTWEBKITWIDGETSD_IMPORT_LIBRARY Qt${QT_VERSION_MAJOR}WebKitWidgetsd${CMAKE_IMPORT_LIBRARY_SUFFIX})
SET(ICUDT_SHARED_LIBRARY icudt${ICU_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX})
SET(ICUIN_SHARED_LIBRARY icuin${ICU_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX})
SET(ICUUC_SHARED_LIBRARY icuuc${ICU_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX})
ELSEIF(APPLE)
SET(QTWEBKIT_SHARED_LIBRARY QtWebKit.framework/Versions/${QT_VERSION_MAJOR}/QtWebKit)
SET(QTWEBKIT_IMPORT_LIBRARY ${QTWEBKIT_SHARED_LIBRARY})
SET(QTWEBKITWIDGETS_SHARED_LIBRARY QtWebKitWidgets.framework/Versions/${QT_VERSION_MAJOR}/QtWebKitWidgets)
SET(QTWEBKITWIDGETS_IMPORT_LIBRARY ${QTWEBKITWIDGETS_SHARED_LIBRARY})
ELSE()
SET(QTWEBKIT_SHARED_LIBRARY ${CMAKE_SHARED_LIBRARY_PREFIX}Qt${QT_VERSION_MAJOR}WebKit${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBRARY_VERSION})
SET(QTWEBKIT_IMPORT_LIBRARY ${QTWEBKIT_SHARED_LIBRARY})
SET(QTWEBKITWIDGETS_SHARED_LIBRARY ${CMAKE_SHARED_LIBRARY_PREFIX}Qt${QT_VERSION_MAJOR}WebKitWidgets${CMAKE_SHARED_LIBRARY_SUFFIX}.${LIBRARY_VERSION})
SET(QTWEBKITWIDGETS_IMPORT_LIBRARY ${QTWEBKITWIDGETS_SHARED_LIBRARY})
ENDIF()
# Specify the files that need to have their SHA-1 value checked
IF(WIN32)
SET(SHARED_LIBRARIES_DIR bin)
ELSEIF(APPLE)
SET(SHARED_LIBRARIES_DIR lib)
ELSE()
SET(SHARED_LIBRARIES_DIR lib/x86_64-linux-gnu)
ENDIF()
SET(SHA1_FILES
${SHARED_LIBRARIES_DIR}/${QTWEBKIT_SHARED_LIBRARY}
${SHARED_LIBRARIES_DIR}/${QTWEBKITWIDGETS_SHARED_LIBRARY}
)
IF(WIN32)
LIST(APPEND SHA1_FILES
${SHARED_LIBRARIES_DIR}/${QTWEBKITD_SHARED_LIBRARY}
${SHARED_LIBRARIES_DIR}/${QTWEBKITWIDGETSD_SHARED_LIBRARY}
lib/${QTWEBKIT_IMPORT_LIBRARY}
lib/${QTWEBKITWIDGETS_IMPORT_LIBRARY}
lib/${QTWEBKITD_IMPORT_LIBRARY}
lib/${QTWEBKITWIDGETSD_IMPORT_LIBRARY}
bin/${ICUDT_SHARED_LIBRARY}
bin/${ICUIN_SHARED_LIBRARY}
bin/${ICUUC_SHARED_LIBRARY}
)
ENDIF()
# Use the pre-built version of our package unless instructed otherwise
IF(USE_PREBUILT_QTWEBKIT_PACKAGE)
# Retrieve the plugin's package
STRING(REPLACE "${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/" ""
RELATIVE_PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/${PLATFORM_DIR}")
IF(WIN32)
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION}
${RELATIVE_PROJECT_SOURCE_DIR} 8dbe5333fd85bb3d02b3ee34ebcf116bf5005792
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY}
RELEASE_TAG ${RELEASE_TAG}
SHA1_FILES ${SHA1_FILES}
SHA1_VALUES dd553394bc30b2abd837684a0cc8fcd8e8290735
6cd9bc498817366f0158b54ec1df4501e5a84edb
eb12d7fecced18da57590421265c5dbb79a314d9
87d68e4885b35de0f3118068f16fd2960cc9e667
f6db0a70c3f5405fa6526587de775562327ed83a
773ea29754a4d252267555c4bbaca7cfe2bcf569
dfd1812b3e43af731fca6bbb02c6f1a0b38639f1
3aa536cca6c1ce5e8ce0d1bc6a8be34ddd64ae5a
874175a6db51afe0902882f0b00f7855ab498c79
47cb72ba7c899ca218be75dd89a0c0f900b968b8
a386658900a742f31f1f08d55c0915d577af2d7e)
ELSEIF(APPLE)
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION}
${RELATIVE_PROJECT_SOURCE_DIR} 58b9b74bfb4b849b577b639405e7ee5f934bd504
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY}
RELEASE_TAG ${RELEASE_TAG}
SHA1_FILES ${SHA1_FILES}
SHA1_VALUES 888d5d4800fe8ff884151edc9c4b68c3fc651f83
fb40bf07a6cde27fc57122b5c47a02a8023ffd60)
ELSE()
RETRIEVE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION}
${RELATIVE_PROJECT_SOURCE_DIR} 9368fe4d5dd114195b36cca336c3adab2617739f
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY}
RELEASE_TAG ${RELEASE_TAG}
SHA1_FILES ${SHA1_FILES}
SHA1_VALUES 14ee3611a2828df60fa22f7389dff78f95ac341b
7a9b7858a4f096b04915cc068ecbb4e3671b4578)
ENDIF()
ELSE()
# Build QtWebKit as an external project
SET(PACKAGE_BUILD ${PACKAGE_NAME}Build)
ExternalProject_Add(${PACKAGE_BUILD}
SOURCE_DIR
${CMAKE_SOURCE_DIR}/ext/${PACKAGE_NAME}
INSTALL_DIR
${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}
GIT_REPOSITORY
https://github.com/opencor/qtwebkitreloaded
GIT_TAG
${GIT_TAG}
CMAKE_GENERATOR
${CMAKE_GENERATOR}
CMAKE_ARGS
${CMAKE_ARGS}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DENABLE_ACCELERATED_2D_CANVAS=ON
-DENABLE_ALLINONE_BUILD=ON
-DENABLE_API_TESTS=ON
-DENABLE_CSS_GRID_LAYOUT=ON
-DENABLE_DATABASE_PROCESS=ON
-DENABLE_DATALIST_ELEMENT=ON
-DENABLE_DEVICE_ORIENTATION=ON
-DENABLE_DRAG_SUPPORT=ON
-DENABLE_FULLSCREEN_API=ON
-DENABLE_GAMEPAD_DEPRECATED=OFF
-DENABLE_GEOLOCATION=ON
-DENABLE_ICONDATABASE=ON
-DENABLE_INDEXED_DATABASE=ON
-DENABLE_INSPECTOR_UI=ON
-DENABLE_JIT=ON
-DENABLE_LEGACY_WEB_AUDIO=OFF
-DENABLE_LINK_PREFETCH=ON
-DENABLE_MEDIA_SOURCE=OFF
-DENABLE_NETSCAPE_PLUGIN_API=OFF
-DENABLE_OPENGL=ON
-DENABLE_PRINT_SUPPORT=ON
-DENABLE_QT_GESTURE_EVENTS=ON
-DENABLE_QT_WEBCHANNEL=ON
-DENABLE_SAMPLING_PROFILER=ON
-DENABLE_SPELLCHECK=ON
-DENABLE_TOUCH_EVENTS=ON
-DENABLE_VIDEO=ON
-DENABLE_WEBKIT2=ON
-DENABLE_WEB_AUDIO=OFF
-DENABLE_X11_TARGET=OFF
-DENABLE_XSLT=ON
-DPORT=Qt
-DUSE_GSTREAMER=OFF
-DUSE_LIBHYPHEN=OFF
-DUSE_MEDIA_FOUNDATION=OFF
-DUSE_QT_MULTIMEDIA=ON
-DUSE_SYSTEM_MALLOC=OFF
-DUSE_WOFF2=ON
BUILD_BYPRODUCTS
<INSTALL_DIR>/${SHARED_LIBRARIES_DIR}/${QTWEBKIT_IMPORT_LIBRARY}
<INSTALL_DIR>/${SHARED_LIBRARIES_DIR}/${QTWEBKITWIDGETS_IMPORT_LIBRARY}
)
# Package our external project
CREATE_PACKAGE_FILE(${PACKAGE_NAME} ${PACKAGE_VERSION}
${LOCAL_EXTERNAL_PACKAGE_DIR}
PACKAGE_REPOSITORY ${PACKAGE_REPOSITORY}
RELEASE_TAG ${RELEASE_TAG}
PACKAGED_FILES include ${SHARED_LIBRARIES_DIR}/cmake ${SHA1_FILES}
SHA1_FILES ${SHA1_FILES}
TARGET ${PACKAGE_BUILD})
ENDIF()
# Allow other external projects to find our QtWebKit package
SET(CMAKE_PREFIX_PATH
${CMAKE_PREFIX_PATH}
${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}/${SHARED_LIBRARIES_DIR}/cmake
PARENT_SCOPE
)
SET(QTWEBKIT_ROOT_DIR ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR} PARENT_SCOPE)
SET(QTWEBKIT_INCLUDE_DIR ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}/include PARENT_SCOPE)
SET(QTWEBKIT_BINARIES_DIR ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}/bin PARENT_SCOPE)
SET(QTWEBKIT_LIBRARIES_DIR ${FULL_LOCAL_EXTERNAL_PACKAGE_DIR}/${SHARED_LIBRARIES_DIR} PARENT_SCOPE)