Clean up CMake build after r188673
[WebKit-https.git] / Tools / TestWebKitAPI / CMakeLists.txt
1 set(TESTWEBKITAPI_DIR "${TOOLS_DIR}/TestWebKitAPI")
2 set(test_wtf_LIBRARIES
3     WTF${DEBUG_SUFFIX}
4     gtest
5 )
6
7 set(test_webcore_LIBRARIES
8     WTF${DEBUG_SUFFIX}
9     WebCore${DEBUG_SUFFIX}
10     gtest
11 )
12
13 set(TestWebKitAPI_LIBRARIES
14     WTF${DEBUG_SUFFIX}
15 )
16
17 if (ENABLE_WEBKIT2)
18     set(test_webkit2_api_LIBRARIES
19         JavaScriptCore
20         TestWebKitAPIBase
21         WTF
22         WebKit2
23         gtest
24     )
25     list(APPEND TestWebKitAPI_LIBRARIES
26         WebKit2
27     )
28 else ()
29     list(APPEND TestWebKitAPI_LIBRARIES
30         WebKit${DEBUG_SUFFIX}
31     )
32 endif ()
33
34
35 set(TestJavaScriptCore_LIBRARIES
36     JavaScriptCore
37     gtest
38 )
39
40 set(TestWTF_SOURCES
41     ${TESTWEBKITAPI_DIR}/Counters.cpp
42     ${TESTWEBKITAPI_DIR}/TestsController.cpp
43     ${TESTWEBKITAPI_DIR}/Tests/WTF/AtomicString.cpp
44     ${TESTWEBKITAPI_DIR}/Tests/WTF/CString.cpp
45     ${TESTWEBKITAPI_DIR}/Tests/WTF/Condition.cpp
46     ${TESTWEBKITAPI_DIR}/Tests/WTF/CheckedArithmeticOperations.cpp
47     ${TESTWEBKITAPI_DIR}/Tests/WTF/DateMath.cpp
48     ${TESTWEBKITAPI_DIR}/Tests/WTF/Deque.cpp
49     ${TESTWEBKITAPI_DIR}/Tests/WTF/Functional.cpp
50     ${TESTWEBKITAPI_DIR}/Tests/WTF/HashMap.cpp
51     ${TESTWEBKITAPI_DIR}/Tests/WTF/HashSet.cpp
52     ${TESTWEBKITAPI_DIR}/Tests/WTF/IntegerToStringConversion.cpp
53     ${TESTWEBKITAPI_DIR}/Tests/WTF/ListHashSet.cpp
54     ${TESTWEBKITAPI_DIR}/Tests/WTF/Lock.cpp
55     ${TESTWEBKITAPI_DIR}/Tests/WTF/MD5.cpp
56     ${TESTWEBKITAPI_DIR}/Tests/WTF/MathExtras.cpp
57     ${TESTWEBKITAPI_DIR}/Tests/WTF/MediaTime.cpp
58     ${TESTWEBKITAPI_DIR}/Tests/WTF/MetaAllocator.cpp
59     ${TESTWEBKITAPI_DIR}/Tests/WTF/NakedPtr.cpp
60     ${TESTWEBKITAPI_DIR}/Tests/WTF/ParkingLot.cpp
61     ${TESTWEBKITAPI_DIR}/Tests/WTF/RedBlackTree.cpp
62     ${TESTWEBKITAPI_DIR}/Tests/WTF/Ref.cpp
63     ${TESTWEBKITAPI_DIR}/Tests/WTF/RefPtr.cpp
64     ${TESTWEBKITAPI_DIR}/Tests/WTF/SHA1.cpp
65     ${TESTWEBKITAPI_DIR}/Tests/WTF/SaturatedArithmeticOperations.cpp
66     ${TESTWEBKITAPI_DIR}/Tests/WTF/StringBuilder.cpp
67     ${TESTWEBKITAPI_DIR}/Tests/WTF/StringHasher.cpp
68     ${TESTWEBKITAPI_DIR}/Tests/WTF/StringImpl.cpp
69     ${TESTWEBKITAPI_DIR}/Tests/WTF/StringOperators.cpp
70     ${TESTWEBKITAPI_DIR}/Tests/WTF/StringView.cpp
71     ${TESTWEBKITAPI_DIR}/Tests/WTF/TemporaryChange.cpp
72     ${TESTWEBKITAPI_DIR}/Tests/WTF/Vector.cpp
73     ${TESTWEBKITAPI_DIR}/Tests/WTF/WTFString.cpp
74     ${TESTWEBKITAPI_DIR}/Tests/WTF/WorkQueue.cpp
75 )
76
77 WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
78
79 include_directories(
80     ${TESTWEBKITAPI_DIR}
81     ${CMAKE_BINARY_DIR}
82     ${CMAKE_SOURCE_DIR}/Source
83     ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}
84     ${DERIVED_SOURCES_WEBCORE_DIR}
85     ${JAVASCRIPTCORE_DIR}
86     ${JAVASCRIPTCORE_DIR}/API
87     ${JAVASCRIPTCORE_DIR}/ForwardingHeaders
88     ${THIRDPARTY_DIR}/gtest/include
89     ${WEBCORE_DIR}/css
90     ${WEBCORE_DIR}/dom
91     ${WEBCORE_DIR}/editing
92     ${WEBCORE_DIR}/loader/cache
93     ${WEBCORE_DIR}/platform
94     ${WEBCORE_DIR}/platform/animation
95     ${WEBCORE_DIR}/platform/graphics
96     ${WEBCORE_DIR}/platform/text
97     ${WEBCORE_DIR}/platform/network
98     ${WEBCORE_DIR}/platform/network/soup
99     ${WEBCORE_DIR}/rendering/style
100     ${WEBKIT2_DIR}/Platform/IPC
101     ${WEBKIT2_DIR}/Shared
102     ${WEBKIT2_DIR}/Shared/API
103     ${WEBKIT2_DIR}/Shared/API/c
104     ${WEBKIT2_DIR}/Shared/Plugins
105     ${WEBKIT2_DIR}/UIProcess
106     ${WEBKIT2_DIR}/UIProcess/API
107     ${WEBKIT2_DIR}/WebProcess/InjectedBundle
108     ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/c
109     ${WTF_DIR}
110 )
111
112 if (ENABLE_WEBKIT2)
113     add_library(TestWebKitAPIInjectedBundle SHARED
114         ${bundle_harness_SOURCES}
115         ${TESTWEBKITAPI_DIR}/InjectedBundleController.cpp
116         ${TESTWEBKITAPI_DIR}/InjectedBundleMain.cpp
117         ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp
118         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/CanHandleRequest_Bundle.cpp
119         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp
120         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
121         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp
122         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp
123         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp
124         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp
125         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp
126         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp
127         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp
128         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp
129         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp
130         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp
131         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp
132         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp
133         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp
134         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ParentFrame_Bundle.cpp
135         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp
136         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp
137         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp
138         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/UserMessage_Bundle.cpp
139         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillLoad_Bundle.cpp
140         ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp
141     )
142
143     target_link_libraries(TestWebKitAPIInjectedBundle ${TestWebKitAPI_LIBRARIES})
144     add_dependencies(TestWebKitAPIInjectedBundle WTF ${ForwardingHeadersForTestWebKitAPI_NAME})
145
146     get_property(TestWebKitAPIInjectedBundle_PATH TARGET TestWebKitAPIInjectedBundle PROPERTY LOCATION)
147 endif ()
148
149 if (WIN32)
150     add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=0)
151 else ()
152     add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=1)
153 endif ()
154
155 add_definitions(-DGTEST_HAS_RTTI=0
156     -DTEST_WEBKIT2_RESOURCES_DIR=\"${TESTWEBKITAPI_DIR}/Tests/WebKit2\"
157     -DTEST_INJECTED_BUNDLE_PATH=\"${TestWebKitAPIInjectedBundle_PATH}\"
158 )
159
160 # FIXME: This works around compatibility problems in the old version of the third-pary
161 # googletest source code checkout. It should be removed once we upgrade to a newer version.
162 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
163     add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
164 endif ()
165
166 add_executable(TestWTF
167     ${test_main_SOURCES}
168     ${TestWTF_SOURCES}
169 )
170
171 target_link_libraries(TestWTF ${test_wtf_LIBRARIES})
172 add_dependencies(TestWTF WTF ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
173 add_test(TestWTF ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF}/TestWTF)
174 set_tests_properties(TestWTF PROPERTIES TIMEOUT 60)
175 set_target_properties(TestWTF PROPERTIES
176     RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF}
177 )
178
179 # FIXME: EFL is the only port that separates the WebCore binaries. Each port ought to do closer to the same thing.
180 foreach (testName ${test_webcore_BINARIES})
181     add_executable(${testName} ${test_main_SOURCES} ${TESTWEBKITAPI_DIR}/TestsController.cpp ${TESTWEBKITAPI_DIR}/Tests/WebCore/${testName}.cpp)
182     add_test(${testName} ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore/${testName})
183     set_tests_properties(${testName} PROPERTIES TIMEOUT 60)
184     target_link_libraries(${testName} ${test_webcore_LIBRARIES})
185     set_target_properties(${testName} PROPERTIES
186         RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore
187     )
188 endforeach ()
189
190 if (ENABLE_WEBKIT2)
191     add_library(TestWebKitAPIBase
192         ${test_main_SOURCES}
193         ${webkit2_api_harness_SOURCES}
194         ${TESTWEBKITAPI_DIR}/JavaScriptTest.cpp
195         ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp
196         ${TESTWEBKITAPI_DIR}/TestsController.cpp
197     )
198
199     add_dependencies(TestWebKitAPIBase WebKit2 ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
200
201     foreach (testName ${test_webkit2_api_BINARIES})
202         get_filename_component(testBaseName ${testName} NAME)
203         add_executable(${testBaseName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp)
204         add_test(${testBaseName} ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2/${testBaseName})
205         set_tests_properties(${testBaseName} PROPERTIES TIMEOUT 60)
206         target_link_libraries(${testBaseName} ${test_webkit2_api_LIBRARIES})
207         set_target_properties(${testBaseName} PROPERTIES
208             RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2
209         )
210     endforeach ()
211
212     # We don't run tests that are expected to fail. We could use the WILL_FAIL
213     # property, but it reports failure when the test crashes or timeouts and would
214     # make the bot red.
215     foreach (testName ${test_webkit2_api_fail_BINARIES})
216         add_executable(${testName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp)
217         target_link_libraries(${testName} ${test_webkit2_api_LIBRARIES})
218         set_target_properties(${testName} PROPERTIES
219             RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2/failure
220         )
221     endforeach ()
222 endif ()