Skip to content

Commit 15d8f25

Browse files
committed
[CMake] Determine when to use $<TARGET_OBJECTS> for executables
https://bugs.webkit.org/show_bug.cgi?id=219648 Reviewed by Michael Catanzaro. .: When a WebKit framework is declared as an OBJECT library the WebKit::${framework} ALIAS does not propagate the objects to the executable being built. As a workaround ports will explicitly add $<TARGET_OBJECTS> to the list of libraries being linked. There is already enough information to determine when $<TARGET_OBJECTS> is needed so this decision is moved into the WEBKIT_EXECUTABLE macros. An additional ${taget_name}_FRAMEWORKS variable is added which specifies the WebKit frameworks being used. This will link the WebKit::${framework} alias and if necessary the associated $<TARGET_OBJECTS>. This functionality will be expanded upon when support for ${target_name}_FRAMEWORKS is added to WebKit frameworks to support hidden visibility across ports. * Source/cmake/WebKitMacros.cmake: Source/JavaScriptCore: Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables. * CMakeLists.txt: * shell/CMakeLists.txt: Source/WebDriver: Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables. Remove use of $<TARGET_OBJECTS>. * CMakeLists.txt: * PlatformPlayStation.cmake: * PlatformWin.cmake: Tools: Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables. Remove use of $<TARGET_OBJECTS>. * TestWebKitAPI/CMakeLists.txt: * TestWebKitAPI/PlatformPlayStation.cmake: * TestWebKitAPI/PlatformWin.cmake: * WebKitTestRunner/CMakeLists.txt: Canonical link: https://commits.webkit.org/232316@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@270652 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 61a49bb commit 15d8f25

14 files changed

Lines changed: 117 additions & 52 deletions

File tree

ChangeLog

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
2020-12-10 Don Olmstead <don.olmstead@sony.com>
2+
3+
[CMake] Determine when to use $<TARGET_OBJECTS> for executables
4+
https://bugs.webkit.org/show_bug.cgi?id=219648
5+
6+
Reviewed by Michael Catanzaro.
7+
8+
When a WebKit framework is declared as an OBJECT library the WebKit::${framework} ALIAS
9+
does not propagate the objects to the executable being built. As a workaround ports will
10+
explicitly add $<TARGET_OBJECTS> to the list of libraries being linked. There is already
11+
enough information to determine when $<TARGET_OBJECTS> is needed so this decision is moved
12+
into the WEBKIT_EXECUTABLE macros.
13+
14+
An additional ${taget_name}_FRAMEWORKS variable is added which specifies the WebKit
15+
frameworks being used. This will link the WebKit::${framework} alias and if necessary the
16+
associated $<TARGET_OBJECTS>.
17+
18+
This functionality will be expanded upon when support for ${target_name}_FRAMEWORKS is
19+
added to WebKit frameworks to support hidden visibility across ports.
20+
21+
* Source/cmake/WebKitMacros.cmake:
22+
123
2020-12-07 Don Olmstead <don.olmstead@sony.com>
224

325
[CMake] Remove WEBKIT_WRAP_SOURCELIST

Source/JavaScriptCore/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ set(LLIntSettingsExtractor_SOURCES
323323
set(LLIntSettingsExtractor_PRIVATE_INCLUDE_DIRECTORIES
324324
$<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES>
325325
)
326-
set(LLIntSettingsExtractor_PRIVATE_LIBRARIES WebKit::WTF)
326+
set(LLIntSettingsExtractor_FRAMEWORKS WTF)
327327
set(LLIntSettingsExtractor_DEPENDENCIES JavaScriptCore_CopyHeaders)
328328
WEBKIT_EXECUTABLE(LLIntSettingsExtractor)
329329

@@ -336,7 +336,7 @@ set(LLIntOffsetsExtractor_SOURCES
336336
set(LLIntOffsetsExtractor_PRIVATE_INCLUDE_DIRECTORIES
337337
$<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES>
338338
)
339-
set(LLIntOffsetsExtractor_PRIVATE_LIBRARIES WebKit::WTF)
339+
set(LLIntOffsetsExtractor_FRAMEWORKS WTF)
340340
set(LLIntOffsetsExtractor_DEPENDENCIES JavaScriptCore_CopyHeaders)
341341
WEBKIT_EXECUTABLE(LLIntOffsetsExtractor)
342342

Source/JavaScriptCore/ChangeLog

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
2020-12-10 Don Olmstead <don.olmstead@sony.com>
2+
3+
[CMake] Determine when to use $<TARGET_OBJECTS> for executables
4+
https://bugs.webkit.org/show_bug.cgi?id=219648
5+
6+
Reviewed by Michael Catanzaro.
7+
8+
Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables.
9+
10+
* CMakeLists.txt:
11+
* shell/CMakeLists.txt:
12+
113
2020-12-10 Don Olmstead <don.olmstead@sony.com>
214

315
[CMake] Use WEBKIT_EXECUTABLE macro for LLInt executables

Source/JavaScriptCore/shell/CMakeLists.txt

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
1-
set(jsc_SOURCES
2-
../jsc.cpp
3-
)
4-
51
if ("${JavaScriptCore_LIBRARY_TYPE}" MATCHES "STATIC")
62
set(jsc_PRIVATE_DEFINITIONS STATICALLY_LINKED_WITH_JavaScriptCore)
73
endif ()
84

9-
set(jsc_LIBRARIES
10-
${CMAKE_DL_LIBS}
11-
WebKit::JavaScriptCore
12-
)
5+
set(jsc_SOURCES ../jsc.cpp)
6+
set(jsc_LIBRARIES ${CMAKE_DL_LIBS})
7+
set(jsc_FRAMEWORKS JavaScriptCore)
138

149
set(jsc_PRIVATE_INCLUDE_DIRECTORIES
1510
$<TARGET_PROPERTY:JavaScriptCore,INCLUDE_DIRECTORIES>
@@ -42,17 +37,17 @@ if (DEVELOPER_MODE)
4237
)
4338
set(testapi_DEFINITIONS ${jsc_PRIVATE_DEFINITIONS})
4439
set(testapi_PRIVATE_INCLUDE_DIRECTORIES ${jsc_PRIVATE_INCLUDE_DIRECTORIES})
45-
set(testapi_LIBRARIES WebKit::JavaScriptCore)
40+
set(testapi_FRAMEWORKS ${jsc_FRAMEWORKS})
4641

4742
set(testmasm_SOURCES ../assembler/testmasm.cpp)
4843
set(testmasm_DEFINITIONS ${jsc_PRIVATE_DEFINITIONS})
4944
set(testmasm_PRIVATE_INCLUDE_DIRECTORIES ${jsc_PRIVATE_INCLUDE_DIRECTORIES})
50-
set(testmasm_LIBRARIES WebKit::JavaScriptCore)
45+
set(testmasm_FRAMEWORKS ${jsc_FRAMEWORKS})
5146

5247
set(testRegExp_SOURCES ../testRegExp.cpp)
5348
set(testRegExp_DEFINITIONS ${jsc_PRIVATE_DEFINITIONS})
5449
set(testRegExp_PRIVATE_INCLUDE_DIRECTORIES ${jsc_PRIVATE_INCLUDE_DIRECTORIES})
55-
set(testRegExp_LIBRARIES WebKit::JavaScriptCore)
50+
set(testRegExp_FRAMEWORKS ${jsc_FRAMEWORKS})
5651

5752
set(testb3_SOURCES
5853
../b3/testb3_1.cpp
@@ -66,17 +61,17 @@ if (DEVELOPER_MODE)
6661
)
6762
set(testb3_DEFINITIONS ${jsc_PRIVATE_DEFINITIONS})
6863
set(testb3_PRIVATE_INCLUDE_DIRECTORIES ${jsc_PRIVATE_INCLUDE_DIRECTORIES})
69-
set(testb3_LIBRARIES WebKit::JavaScriptCore)
64+
set(testb3_FRAMEWORKS ${jsc_FRAMEWORKS})
7065

7166
set(testair_SOURCES ../b3/air/testair.cpp)
7267
set(testair_DEFINITIONS ${jsc_PRIVATE_DEFINITIONS})
7368
set(testair_PRIVATE_INCLUDE_DIRECTORIES ${jsc_PRIVATE_INCLUDE_DIRECTORIES})
74-
set(testair_LIBRARIES WebKit::JavaScriptCore)
69+
set(testair_FRAMEWORKS ${jsc_FRAMEWORKS})
7570

7671
set(testdfg_SOURCES ../dfg/testdfg.cpp)
7772
set(testdfg_DEFINITIONS ${jsc_PRIVATE_DEFINITIONS})
7873
set(testdfg_PRIVATE_INCLUDE_DIRECTORIES ${jsc_PRIVATE_INCLUDE_DIRECTORIES})
79-
set(testdfg_LIBRARIES WebKit::JavaScriptCore)
74+
set(testdfg_FRAMEWORKS ${jsc_FRAMEWORKS})
8075

8176
WEBKIT_EXECUTABLE_DECLARE(testapi)
8277
WEBKIT_EXECUTABLE_DECLARE(testRegExp)

Source/WebDriver/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ set(WebDriver_SOURCES
1717
WebDriverService.cpp
1818
)
1919

20-
set(WebDriver_LIBRARIES
21-
WebKit::WTF
20+
set(WebDriver_FRAMEWORKS
21+
WTF
2222
)
2323

2424
set(WebDriver_SCRIPTS

Source/WebDriver/ChangeLog

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
2020-12-10 Don Olmstead <don.olmstead@sony.com>
2+
3+
[CMake] Determine when to use $<TARGET_OBJECTS> for executables
4+
https://bugs.webkit.org/show_bug.cgi?id=219648
5+
6+
Reviewed by Michael Catanzaro.
7+
8+
Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables.
9+
Remove use of $<TARGET_OBJECTS>.
10+
11+
* CMakeLists.txt:
12+
* PlatformPlayStation.cmake:
13+
* PlatformWin.cmake:
14+
115
2020-12-09 Carlos Garcia Campos <cgarcia@igalia.com>
216

317
WebDriver: add support for pen pointer events

Source/WebDriver/PlatformPlayStation.cmake

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ list(APPEND WebDriver_PRIVATE_INCLUDE_DIRECTORIES
1313
"${WEBDRIVER_DIR}/socket"
1414
)
1515

16-
list(APPEND WebDriver_PRIVATE_LIBRARIES
17-
WebKit::JavaScriptCore
16+
list(APPEND WebDriver_FRAMEWORKS
17+
JavaScriptCore
1818
)
19-
20-
if (ENABLE_STATIC_JSC)
21-
list(APPEND WebDriver_PRIVATE_LIBRARIES
22-
$<TARGET_OBJECTS:JavaScriptCore>
23-
)
24-
endif ()

Source/WebDriver/PlatformWin.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ list(APPEND WebDriver_PRIVATE_INCLUDE_DIRECTORIES
1515
"${WEBDRIVER_DIR}/socket"
1616
)
1717

18-
list(APPEND WebDriver_LIBRARIES
19-
WebKit::JavaScriptCore
18+
list(APPEND WebDriver_FRAMEWORKS
19+
JavaScriptCore
2020
)
2121

2222
WEBKIT_WRAP_EXECUTABLE(WebDriver

Source/cmake/WebKitMacros.cmake

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,18 @@ macro(_WEBKIT_TARGET_ANALYZE _target)
193193
endif ()
194194
endmacro()
195195

196+
macro(_WEBKIT_EXECUTABLE_LINK_FRAMEWORK _target)
197+
foreach (framework IN LISTS ${_target}_FRAMEWORKS)
198+
list(APPEND ${_target}_PRIVATE_LIBRARIES WebKit::${framework})
199+
200+
# The WebKit:: alias targets do not propagate OBJECT libraries so the
201+
# underyling library's objects are explicitly added to link properly
202+
if (TARGET ${framework} AND ${framework}_LIBRARY_TYPE STREQUAL "OBJECT")
203+
list(APPEND ${_target}_PRIVATE_LIBRARIES $<TARGET_OBJECTS:${framework}>)
204+
endif ()
205+
endforeach ()
206+
endmacro()
207+
196208
macro(WEBKIT_FRAMEWORK _target)
197209
_WEBKIT_TARGET(${_target} ${_target})
198210
_WEBKIT_TARGET_ANALYZE(${_target})
@@ -226,6 +238,7 @@ macro(WEBKIT_FRAMEWORK_TARGET _target)
226238
endmacro()
227239

228240
macro(WEBKIT_EXECUTABLE _target)
241+
_WEBKIT_EXECUTABLE_LINK_FRAMEWORK(${_target})
229242
_WEBKIT_TARGET(${_target} ${_target})
230243
_WEBKIT_TARGET_ANALYZE(${_target})
231244

@@ -257,6 +270,7 @@ macro(WEBKIT_WRAP_EXECUTABLE _target)
257270

258271
add_library(${_wrapped_target_name} SHARED "${CMAKE_BINARY_DIR}/cmakeconfig.h")
259272

273+
_WEBKIT_EXECUTABLE_LINK_FRAMEWORK(${_target})
260274
_WEBKIT_TARGET(${_target} ${_wrapped_target_name})
261275
_WEBKIT_TARGET_ANALYZE(${_wrapped_target_name})
262276

@@ -267,6 +281,8 @@ macro(WEBKIT_WRAP_EXECUTABLE _target)
267281
unset(${_target}_INCLUDE_DIRECTORIES)
268282
unset(${_target}_SYSTEM_INCLUDE_DIRECTORIES)
269283
unset(${_target}_PRIVATE_INCLUDE_DIRECTORIES)
284+
unset(${_target}_PRIVATE_LIBRARIES)
285+
unset(${_target}_FRAMEWORKS)
270286

271287
# Reset the sources
272288
set(${_target}_SOURCES ${opt_SOURCES})

Tools/ChangeLog

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
2020-12-10 Don Olmstead <don.olmstead@sony.com>
2+
3+
[CMake] Determine when to use $<TARGET_OBJECTS> for executables
4+
https://bugs.webkit.org/show_bug.cgi?id=219648
5+
6+
Reviewed by Michael Catanzaro.
7+
8+
Use ${taget_name}_FRAMEWORKS to specify WebKit frameworks when linking executables.
9+
Remove use of $<TARGET_OBJECTS>.
10+
11+
* TestWebKitAPI/CMakeLists.txt:
12+
* TestWebKitAPI/PlatformPlayStation.cmake:
13+
* TestWebKitAPI/PlatformWin.cmake:
14+
* WebKitTestRunner/CMakeLists.txt:
15+
116
2020-12-10 Alex Christensen <achristensen@webkit.org>
217

318
Introduce new download SPI

0 commit comments

Comments
 (0)