7
7
8
8
set (SOURCE_DIR ${ROOT_DIR} /3rdparty)
9
9
10
- set (INCLUDE_DIRS ${SOURCE_DIR} /wxWidgets_setup_h ${SOURCE_DIR} /wxWidgets/include )
11
- include_directories (${INCLUDE_DIRS} )
10
+ set (ARCHS_64BIT_INTEL "amd64" "x86_64" )
11
+ set (ARCHS_64BIT_ARM "arm64" "aarch64" )
12
+ set (ARCHS_32BIT_INTEL "x86" "i686" )
13
+
14
+ string (TOLOWER "${CMAKE_SYSTEM_PROCESSOR} " _SYSTEM_PROCESSOR_LOWERED)
15
+
16
+ list (FIND ARCHS_64BIT_INTEL "${_SYSTEM_PROCESSOR_LOWERED} " _list_idx)
17
+ if (${_list_idx} GREATER -1)
18
+ set (WEBVIEW2_LOADER_ARCH "x64" )
19
+ endif (${_list_idx} GREATER -1)
20
+
21
+ list (FIND ARCHS_64BIT_ARM "${_SYSTEM_PROCESSOR_LOWERED} " _list_idx)
22
+ if (${_list_idx} GREATER -1)
23
+ set (WEBVIEW2_LOADER_ARCH "arm64" )
24
+ endif (${_list_idx} GREATER -1)
12
25
26
+ list (FIND ARCHS_32BIT_INTEL "${_SYSTEM_PROCESSOR_LOWERED} " _list_idx)
27
+ if (${_list_idx} GREATER -1)
28
+ set (WEBVIEW2_LOADER_ARCH "x86" )
29
+ endif (${_list_idx} GREATER -1)
30
+
13
31
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
14
32
15
33
add_definitions (
@@ -28,6 +46,7 @@ set(SOURCES
28
46
${SOURCE_DIR} /wxWidgets/src/common/arrstr.cpp
29
47
${SOURCE_DIR} /wxWidgets/src/common/artprov.cpp
30
48
${SOURCE_DIR} /wxWidgets/src/common/bmpbase.cpp
49
+ ${SOURCE_DIR} /wxWidgets/src/common/bmpbndl.cpp
31
50
${SOURCE_DIR} /wxWidgets/src/common/btncmn.cpp
32
51
${SOURCE_DIR} /wxWidgets/src/common/checkboxcmn.cpp
33
52
${SOURCE_DIR} /wxWidgets/src/common/clntdata.cpp
@@ -45,14 +64,16 @@ set(SOURCES
45
64
${SOURCE_DIR} /wxWidgets/src/common/dlgcmn.cpp
46
65
${SOURCE_DIR} /wxWidgets/src/common/dobjcmn.cpp
47
66
${SOURCE_DIR} /wxWidgets/src/common/dpycmn.cpp
48
- ${SOURCE_DIR} /wxWidgets/src/common/dynarray.cpp
49
67
${SOURCE_DIR} /wxWidgets/src/common/dynlib.cpp
50
68
${SOURCE_DIR} /wxWidgets/src/common/encconv.cpp
51
69
${SOURCE_DIR} /wxWidgets/src/common/event.cpp
52
70
${SOURCE_DIR} /wxWidgets/src/common/evtloopcmn.cpp
71
+ ${SOURCE_DIR} /wxWidgets/src/common/ffile.cpp
53
72
${SOURCE_DIR} /wxWidgets/src/common/file.cpp
73
+ ${SOURCE_DIR} /wxWidgets/src/common/fileback.cpp
54
74
${SOURCE_DIR} /wxWidgets/src/common/filefn.cpp
55
75
${SOURCE_DIR} /wxWidgets/src/common/filename.cpp
76
+ ${SOURCE_DIR} /wxWidgets/src/common/filesys.cpp
56
77
${SOURCE_DIR} /wxWidgets/src/common/fmapbase.cpp
57
78
${SOURCE_DIR} /wxWidgets/src/common/fontcmn.cpp
58
79
${SOURCE_DIR} /wxWidgets/src/common/fontmap.cpp
@@ -63,6 +84,7 @@ set(SOURCES
63
84
${SOURCE_DIR} /wxWidgets/src/common/hash.cpp
64
85
${SOURCE_DIR} /wxWidgets/src/common/hashmap.cpp
65
86
${SOURCE_DIR} /wxWidgets/src/common/iconbndl.cpp
87
+ ${SOURCE_DIR} /wxWidgets/src/common/imagbmp.cpp
66
88
${SOURCE_DIR} /wxWidgets/src/common/image.cpp
67
89
${SOURCE_DIR} /wxWidgets/src/common/init.cpp
68
90
${SOURCE_DIR} /wxWidgets/src/common/intl.cpp
@@ -72,6 +94,7 @@ set(SOURCES
72
94
${SOURCE_DIR} /wxWidgets/src/common/list.cpp
73
95
${SOURCE_DIR} /wxWidgets/src/common/longlong.cpp
74
96
${SOURCE_DIR} /wxWidgets/src/common/matrix.cpp
97
+ ${SOURCE_DIR} /wxWidgets/src/common/mstream.cpp
75
98
${SOURCE_DIR} /wxWidgets/src/common/menucmn.cpp
76
99
${SOURCE_DIR} /wxWidgets/src/common/modalhook.cpp
77
100
${SOURCE_DIR} /wxWidgets/src/common/module.cpp
@@ -84,6 +107,7 @@ set(SOURCES
84
107
${SOURCE_DIR} /wxWidgets/src/common/platinfo.cpp
85
108
${SOURCE_DIR} /wxWidgets/src/common/powercmn.cpp
86
109
${SOURCE_DIR} /wxWidgets/src/common/process.cpp
110
+ ${SOURCE_DIR} /wxWidgets/src/common/quantize.cpp
87
111
${SOURCE_DIR} /wxWidgets/src/common/rendcmn.cpp
88
112
${SOURCE_DIR} /wxWidgets/src/common/rgncmn.cpp
89
113
${SOURCE_DIR} /wxWidgets/src/common/settcmn.cpp
@@ -93,13 +117,15 @@ set(SOURCES
93
117
${SOURCE_DIR} /wxWidgets/src/common/stdpbase.cpp
94
118
${SOURCE_DIR} /wxWidgets/src/common/stockitem.cpp
95
119
${SOURCE_DIR} /wxWidgets/src/common/strconv.cpp
120
+ ${SOURCE_DIR} /wxWidgets/src/common/stream.cpp
96
121
${SOURCE_DIR} /wxWidgets/src/common/string .cpp
97
122
${SOURCE_DIR} /wxWidgets/src/common/stringimpl.cpp
98
123
${SOURCE_DIR} /wxWidgets/src/common/stringops.cpp
99
124
${SOURCE_DIR} /wxWidgets/src/common/strvararg.cpp
100
125
${SOURCE_DIR} /wxWidgets/src/common/sysopt.cpp
101
126
${SOURCE_DIR} /wxWidgets/src/common/textbuf.cpp
102
127
${SOURCE_DIR} /wxWidgets/src/common/textcmn.cpp
128
+ ${SOURCE_DIR} /wxWidgets/src/common/textentrycmn.cpp
103
129
${SOURCE_DIR} /wxWidgets/src/common/textmeasurecmn.cpp
104
130
${SOURCE_DIR} /wxWidgets/src/common/threadinfo.cpp
105
131
${SOURCE_DIR} /wxWidgets/src/common/time.cpp
@@ -108,11 +134,17 @@ set(SOURCES
108
134
${SOURCE_DIR} /wxWidgets/src/common/tokenzr.cpp
109
135
${SOURCE_DIR} /wxWidgets/src/common/toplvcmn.cpp
110
136
${SOURCE_DIR} /wxWidgets/src/common/translation.cpp
137
+ ${SOURCE_DIR} /wxWidgets/src/common/txtstrm.cpp
138
+ ${SOURCE_DIR} /wxWidgets/src/common/uilocale.cpp
111
139
${SOURCE_DIR} /wxWidgets/src/common/unichar.cpp
112
140
${SOURCE_DIR} /wxWidgets/src/common/uri.cpp
113
141
${SOURCE_DIR} /wxWidgets/src/common/ustring.cpp
114
142
${SOURCE_DIR} /wxWidgets/src/common/utilscmn.cpp
115
143
${SOURCE_DIR} /wxWidgets/src/common/variant.cpp
144
+ ${SOURCE_DIR} /wxWidgets/src/common/webview.cpp
145
+ ${SOURCE_DIR} /wxWidgets/src/common/webviewfshandler.cpp
146
+ ${SOURCE_DIR} /wxWidgets/src/common/webviewarchivehandler.cpp
147
+ ${SOURCE_DIR} /wxWidgets/src/common/wfstream.cpp
116
148
${SOURCE_DIR} /wxWidgets/src/common/wincmn.cpp
117
149
${SOURCE_DIR} /wxWidgets/src/common/windowid.cpp
118
150
${SOURCE_DIR} /wxWidgets/src/common/wrapsizer.cpp
@@ -130,6 +162,7 @@ set(SOURCES
130
162
${SOURCE_DIR} /wxWidgets/src/msw/artmsw.cpp
131
163
${SOURCE_DIR} /wxWidgets/src/msw/basemsw.cpp
132
164
${SOURCE_DIR} /wxWidgets/src/msw/bitmap.cpp
165
+ ${SOURCE_DIR} /wxWidgets/src/msw/bmpbndl.cpp
133
166
${SOURCE_DIR} /wxWidgets/src/msw/brush.cpp
134
167
${SOURCE_DIR} /wxWidgets/src/msw/button.cpp
135
168
${SOURCE_DIR} /wxWidgets/src/msw/checkbox.cpp
@@ -177,21 +210,75 @@ set(SOURCES
177
210
${SOURCE_DIR} /wxWidgets/src/msw/statbmp.cpp
178
211
${SOURCE_DIR} /wxWidgets/src/msw/stattext.cpp
179
212
${SOURCE_DIR} /wxWidgets/src/msw/stdpaths.cpp
213
+ ${SOURCE_DIR} /wxWidgets/src/msw/textctrl.cpp
214
+ ${SOURCE_DIR} /wxWidgets/src/msw/textentry.cpp
180
215
${SOURCE_DIR} /wxWidgets/src/msw/textmeasure.cpp
181
216
${SOURCE_DIR} /wxWidgets/src/msw/thread.cpp
182
217
${SOURCE_DIR} /wxWidgets/src/msw/timer.cpp
183
218
${SOURCE_DIR} /wxWidgets/src/msw/toplevel.cpp
219
+ ${SOURCE_DIR} /wxWidgets/src/msw/uilocale.cpp
184
220
${SOURCE_DIR} /wxWidgets/src/msw/utils.cpp
185
221
${SOURCE_DIR} /wxWidgets/src/msw/utilsexc.cpp
186
222
${SOURCE_DIR} /wxWidgets/src/msw/utilsgui.cpp
187
223
${SOURCE_DIR} /wxWidgets/src/msw/utilswin.cpp
188
224
${SOURCE_DIR} /wxWidgets/src/msw/uxtheme.cpp
225
+ ${SOURCE_DIR} /wxWidgets/src/msw/webview_edge.cpp
226
+ ${SOURCE_DIR} /wxWidgets/src/msw/webview_ie.cpp
189
227
${SOURCE_DIR} /wxWidgets/src/msw/window.cpp
190
228
${SOURCE_DIR} /wxWidgets/src/msw/ownerdrw.cpp
229
+ ${SOURCE_DIR} /wxWidgets/src/msw/ole/automtn.cpp
191
230
${SOURCE_DIR} /wxWidgets/src/common/wxprintf.cpp)
192
231
193
232
add_library (${PROJECT_NAME} OBJECT ${SOURCES} )
233
+
234
+ file (READ "${CMAKE_CURRENT_SOURCE_DIR} /../../packages.config" PACKAGES_CONFIG_FILE)
235
+ string (REGEX MATCH "package id=\" Microsoft.Web.WebView2\" version=\" ([^\" ]+)\" " WEBVIEW_MATCH "${PACKAGES_CONFIG_FILE} " )
236
+
237
+ message (STATUS "Using WebView2 version ${CMAKE_MATCH_1} " )
238
+
239
+ set (WEBVIEW2_VERSION ${CMAKE_MATCH_1} )
240
+ set (WEBVIEW2_URL "https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/${WEBVIEW2_VERSION} " )
241
+
242
+ set (WEBVIEW2_DEFAULT_PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR} /packages/Microsoft.Web.WebView2.${WEBVIEW2_VERSION} " )
243
+
244
+ if (NOT EXISTS ${WEBVIEW2_PACKAGE_DIR} )
245
+ unset (WEBVIEW2_PACKAGE_DIR CACHE )
246
+ endif ()
247
+ find_path (WEBVIEW2_PACKAGE_DIR
248
+ NAMES build /native/include /WebView2.h
249
+ PATHS
250
+ "${PROJECT_SOURCE_DIR} /3rdparty/webview2"
251
+ ${WEBVIEW2_DEFAULT_PACKAGE_DIR}
252
+ )
253
+
254
+ if (NOT WEBVIEW2_PACKAGE_DIR)
255
+ message (STATUS "WebView2 SDK not found locally, downloading..." )
256
+ set (WEBVIEW2_PACKAGE_DIR ${WEBVIEW2_DEFAULT_PACKAGE_DIR} CACHE PATH "WebView2 SDK PATH" FORCE)
257
+ file (DOWNLOAD
258
+ ${WEBVIEW2_URL}
259
+ ${CMAKE_CURRENT_BINARY_DIR} /webview2.nuget)
260
+ file (MAKE_DIRECTORY ${WEBVIEW2_PACKAGE_DIR} )
261
+ execute_process (COMMAND
262
+ "${CMAKE_COMMAND} " -E tar x "${CMAKE_CURRENT_BINARY_DIR} /webview2.nuget"
263
+ WORKING_DIRECTORY "${WEBVIEW2_PACKAGE_DIR} "
264
+ )
265
+ endif ()
266
+ set (WEBVIEW2_PACKAGE_DIR ${WEBVIEW2_PACKAGE_DIR} CACHE INTERNAL "" FORCE)
267
+
268
+ set (INCLUDE_DIRS ${SOURCE_DIR} /wxWidgets/include /wx/msw/wrl ${SOURCE_DIR} /wxWidgets_setup_h ${SOURCE_DIR} /wxWidgets/include )
269
+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
270
+ # Note: WebView2Loader is built with buffercheck, which isn't available on LLVM MinGW. Thus, we have no choice
271
+ # but to require WebView2Loader.dll along with WinSparkle when built with this version of MinGW.
272
+ set (WEBVIEW2_LOADER_LIB "${WEBVIEW2_PACKAGE_DIR} /build/native/${WEBVIEW2_LOADER_ARCH} /WebView2Loader.dll.lib" )
273
+ set (WEBVIEW2_LOADER_LIB_DLL "${WEBVIEW2_PACKAGE_DIR} /build/native/${WEBVIEW2_LOADER_ARCH} /WebView2Loader.dll" )
274
+ set (WEBVIEW2_LOADER_LIB_DLL ${WEBVIEW2_LOADER_LIB_DLL} CACHE INTERNAL "" FORCE)
275
+ else (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
276
+ set (WEBVIEW2_LOADER_LIB "${WEBVIEW2_PACKAGE_DIR} /build/native/${WEBVIEW2_LOADER_ARCH} /WebView2LoaderStatic.lib" )
277
+ endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
278
+ set (WEBVIEW2_LOADER_LIB ${WEBVIEW2_LOADER_LIB} CACHE INTERNAL "" FORCE)
279
+
194
280
set (wxWidgets_INCLUDE_DIRS ${INCLUDE_DIRS} PARENT_SCOPE)
281
+ include_directories (${INCLUDE_DIRS} )
195
282
196
283
set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} " )
197
284
include (PCHSupport)
@@ -200,3 +287,5 @@ if(NOT PCHSupport_FOUND)
200
287
endif ()
201
288
202
289
ADD_PRECOMPILED_HEADER(${PROJECT_NAME} ${SOURCE_DIR} /wxWidgets/include /wx/wxprec.h)
290
+
291
+ target_include_directories (${PROJECT_NAME} PUBLIC "${WEBVIEW2_PACKAGE_DIR} /build/native/include" )
0 commit comments