[CMake] Properly test if compiler supports compiler flags
[WebKit-https.git] / Source / PlatformGTK.cmake
1 add_subdirectory(${WEBCORE_DIR}/platform/gtk/po)
2
3 # This allows exposing a 'gir' target which builds all GObject introspection files.
4 if (ENABLE_INTROSPECTION)
5     add_custom_target(gir ALL DEPENDS ${GObjectIntrospectionTargets})
6 endif ()
7
8 list(APPEND DocumentationDependencies
9     WebKit2
10     "${CMAKE_SOURCE_DIR}/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml"
11     "${CMAKE_SOURCE_DIR}/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-${WEBKITGTK_API_VERSION}-sections.txt"
12 )
13
14 if (ENABLE_GTKDOC)
15     install(DIRECTORY ${CMAKE_BINARY_DIR}/Documentation/webkit2gtk-${WEBKITGTK_API_VERSION}/html/
16             DESTINATION "${CMAKE_INSTALL_DATADIR}/gtk-doc/html/webkit2gtk-${WEBKITGTK_API_VERSION}"
17     )
18     install(DIRECTORY ${CMAKE_BINARY_DIR}/Documentation/webkitdomgtk-${WEBKITGTK_API_VERSION}/html/
19             DESTINATION "${CMAKE_INSTALL_DATADIR}/gtk-doc/html/webkitdomgtk-${WEBKITGTK_API_VERSION}"
20     )
21 endif ()
22
23 macro(ADD_GTKDOC_GENERATOR _stamp_name _extra_args)
24     add_custom_command(
25         OUTPUT "${CMAKE_BINARY_DIR}/${_stamp_name}"
26         DEPENDS ${DocumentationDependencies}
27         COMMAND ${CMAKE_COMMAND} -E env "CC=${CMAKE_C_COMPILER}" "CFLAGS=${CMAKE_C_FLAGS} -Wno-unused-parameter" ${CMAKE_SOURCE_DIR}/Tools/gtk/generate-gtkdoc ${_extra_args}
28         COMMAND touch ${_stamp_name}
29         WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
30         VERBATIM
31     )
32 endmacro()
33
34 add_gtkdoc_generator("docs-build.stamp" "")
35 if (ENABLE_GTKDOC)
36     add_custom_target(gtkdoc ALL DEPENDS "${CMAKE_BINARY_DIR}/docs-build.stamp")
37 elseif (NOT ENABLED_COMPILER_SANITIZERS AND NOT CMAKE_CROSSCOMPILING AND NOT APPLE)
38     add_custom_target(gtkdoc DEPENDS "${CMAKE_BINARY_DIR}/docs-build.stamp")
39
40     # Add a default build step which check that documentation does not have any warnings
41     # or errors. This is useful to prevent breaking documentation inadvertently during
42     # the course of development.
43     if (DEVELOPER_MODE)
44         add_gtkdoc_generator("docs-build-no-html.stamp" "--skip-html")
45         add_custom_target(gtkdoc-no-html ALL DEPENDS "${CMAKE_BINARY_DIR}/docs-build-no-html.stamp")
46     endif ()
47 endif ()
48
49 add_custom_target(check
50     COMMAND ${TOOLS_DIR}/Scripts/run-gtk-tests
51     COMMAND ${TOOLS_DIR}/gtk/check-for-webkitdom-api-breaks
52 )
53
54 if (DEVELOPER_MODE)
55     configure_file(
56         ${TOOLS_DIR}/gtk/manifest.txt.in
57         ${CMAKE_BINARY_DIR}/manifest.txt
58     )
59
60     add_custom_command(
61         OUTPUT ${CMAKE_BINARY_DIR}/webkitgtk-${PROJECT_VERSION}.tar
62         DEPENDS ${TOOLS_DIR}/gtk/make-dist.py
63         DEPENDS ${CMAKE_BINARY_DIR}/manifest.txt
64         DEPENDS WebKit2
65         DEPENDS gtkdoc
66         COMMAND ${TOOLS_DIR}/gtk/make-dist.py
67                 --source-dir=${CMAKE_SOURCE_DIR}
68                 --build-dir=${CMAKE_BINARY_DIR}
69                 --version=${PROJECT_VERSION}
70                 ${CMAKE_BINARY_DIR}/manifest.txt
71     )
72
73     add_custom_command(
74         OUTPUT ${CMAKE_BINARY_DIR}/webkitgtk-${PROJECT_VERSION}.tar.xz
75         DEPENDS ${CMAKE_BINARY_DIR}/webkitgtk-${PROJECT_VERSION}.tar
76         COMMAND xz -f ${CMAKE_BINARY_DIR}/webkitgtk-${PROJECT_VERSION}.tar
77     )
78
79     add_custom_target(dist
80         DEPENDS ${CMAKE_BINARY_DIR}/webkitgtk-${PROJECT_VERSION}.tar.xz
81     )
82
83     add_custom_target(distcheck
84         DEPENDS ${TOOLS_DIR}/gtk/make-dist.py
85         DEPENDS ${CMAKE_BINARY_DIR}/manifest.txt
86         DEPENDS WebKit2
87         DEPENDS gtkdoc
88         COMMAND ${TOOLS_DIR}/gtk/make-dist.py
89                 --check
90                 --source-dir=${CMAKE_SOURCE_DIR}
91                 --build-dir=${CMAKE_BINARY_DIR}
92                 --version=${PROJECT_VERSION}
93                 ${CMAKE_BINARY_DIR}/manifest.txt
94         COMMAND xz -f ${CMAKE_BINARY_DIR}/webkitgtk-${PROJECT_VERSION}.tar
95     )
96 endif ()