~ubuntu-branches/ubuntu/raring/qtwebkit-source/raring-proposed

« back to all changes in this revision

Viewing changes to Source/cmake/WebKitMacros.cmake

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-02-18 14:24:18 UTC
  • Revision ID: package-import@ubuntu.com-20130218142418-eon0jmjg3nj438uy
Tags: upstream-2.3
ImportĀ upstreamĀ versionĀ 2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
MACRO (INCLUDE_IF_EXISTS _file)
 
2
    IF (EXISTS ${_file})
 
3
        MESSAGE(STATUS "Using platform-specific CMakeLists: ${_file}")
 
4
        INCLUDE(${_file})
 
5
    ELSE ()
 
6
        MESSAGE(STATUS "Platform-specific CMakeLists not found: ${_file}")
 
7
    ENDIF ()
 
8
ENDMACRO ()
 
9
 
 
10
 
 
11
# Append the given dependencies to the source file
 
12
MACRO (ADD_SOURCE_DEPENDENCIES _source _deps)
 
13
    SET(_tmp)
 
14
    GET_SOURCE_FILE_PROPERTY(_tmp ${_source} OBJECT_DEPENDS)
 
15
    IF (NOT _tmp)
 
16
        SET(_tmp "")
 
17
    ENDIF ()
 
18
 
 
19
    FOREACH (f ${_deps})
 
20
        LIST(APPEND _tmp "${f}")
 
21
    ENDFOREACH ()
 
22
 
 
23
    SET_SOURCE_FILES_PROPERTIES(${_source} PROPERTIES OBJECT_DEPENDS "${_tmp}")
 
24
ENDMACRO ()
 
25
 
 
26
 
 
27
# Helper macro which wraps generate-bindings.pl script.
 
28
#   _output_source is a list name which will contain generated sources.(eg. WebCore_SOURCES)
 
29
#   _input_files are IDL files to generate.
 
30
#   _base_dir is base directory where script is called.
 
31
#   _idl_includes is value of --include argument. (eg. --include=${WEBCORE_DIR}/bindings/js)
 
32
#   _features is a value of --defines argument.
 
33
#   _destination is a value of --outputDir argument.
 
34
#   _prefix is a prefix of output files. (eg. JS - it makes JSXXX.cpp JSXXX.h from XXX.idl)
 
35
#   _generator is a value of --generator argument.
 
36
#   _supplemental_dependency_file is a value of --supplementalDependencyFile. (optional)
 
37
MACRO (GENERATE_BINDINGS _output_source _input_files _base_dir _idl_includes _features _destination _prefix _generator)
 
38
    SET(BINDING_GENERATOR ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl)
 
39
 
 
40
    SET(_supplemental_dependency_file ${ARGN})
 
41
    IF (_supplemental_dependency_file)
 
42
        SET(_supplemental_dependency --supplementalDependencyFile ${_supplemental_dependency_file})
 
43
    ENDIF ()
 
44
 
 
45
    FOREACH (_file ${_input_files})
 
46
        GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
 
47
 
 
48
        ADD_CUSTOM_COMMAND(
 
49
            OUTPUT ${_destination}/${_prefix}${_name}.cpp ${_destination}/${_prefix}${_name}.h
 
50
            MAIN_DEPENDENCY ${_file}
 
51
            DEPENDS ${BINDING_GENERATOR} ${SCRIPTS_BINDINGS} ${_supplemental_dependency_file}
 
52
            COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${BINDING_GENERATOR} --defines "${_features}" --generator ${_generator} ${_idl_includes} --outputDir "${_destination}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" ${_supplemental_dependency} ${_file}
 
53
            WORKING_DIRECTORY ${_base_dir}
 
54
            VERBATIM)
 
55
 
 
56
        LIST(APPEND ${_output_source} ${_destination}/${_prefix}${_name}.cpp)
 
57
    ENDFOREACH ()
 
58
ENDMACRO ()
 
59
 
 
60
 
 
61
MACRO (GENERATE_FONT_NAMES _infile)
 
62
    SET(NAMES_GENERATOR ${WEBCORE_DIR}/dom/make_names.pl)
 
63
    SET(_arguments  --fonts ${_infile})
 
64
    SET(_outputfiles ${DERIVED_SOURCES_WEBCORE_DIR}/WebKitFontFamilyNames.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/WebKitFontFamilyNames.h)
 
65
 
 
66
    ADD_CUSTOM_COMMAND(
 
67
        OUTPUT  ${_outputfiles}
 
68
        MAIN_DEPENDENCY ${_infile}
 
69
        DEPENDS ${NAMES_GENERATOR} ${SCRIPTS_BINDINGS}
 
70
        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${NAMES_GENERATOR} --outputDir ${DERIVED_SOURCES_WEBCORE_DIR} ${_arguments}
 
71
        VERBATIM)
 
72
ENDMACRO ()
 
73
 
 
74
 
 
75
MACRO (GENERATE_EVENT_FACTORY _infile _outfile)
 
76
    SET(NAMES_GENERATOR ${WEBCORE_DIR}/dom/make_event_factory.pl)
 
77
 
 
78
    ADD_CUSTOM_COMMAND(
 
79
        OUTPUT  ${DERIVED_SOURCES_WEBCORE_DIR}/${_outfile}
 
80
        MAIN_DEPENDENCY ${_infile}
 
81
        DEPENDS ${NAMES_GENERATOR} ${SCRIPTS_BINDINGS}
 
82
        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${NAMES_GENERATOR} --input ${_infile} --outputDir ${DERIVED_SOURCES_WEBCORE_DIR}
 
83
        VERBATIM)
 
84
ENDMACRO ()
 
85
 
 
86
 
 
87
MACRO (GENERATE_EXCEPTION_CODE_DESCRIPTION _infile _outfile)
 
88
    SET(NAMES_GENERATOR ${WEBCORE_DIR}/dom/make_dom_exceptions.pl)
 
89
 
 
90
    ADD_CUSTOM_COMMAND(
 
91
        OUTPUT  ${DERIVED_SOURCES_WEBCORE_DIR}/${_outfile}
 
92
        MAIN_DEPENDENCY ${_infile}
 
93
        DEPENDS ${NAMES_GENERATOR} ${SCRIPTS_BINDINGS}
 
94
        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${NAMES_GENERATOR} --input ${_infile} --outputDir ${DERIVED_SOURCES_WEBCORE_DIR}
 
95
        VERBATIM)
 
96
ENDMACRO ()
 
97
 
 
98
 
 
99
MACRO (GENERATE_SETTINGS_MACROS _infile _outfile)
 
100
    SET(NAMES_GENERATOR ${WEBCORE_DIR}/page/make_settings.pl)
 
101
 
 
102
    ADD_CUSTOM_COMMAND(
 
103
        OUTPUT  ${DERIVED_SOURCES_WEBCORE_DIR}/${_outfile}
 
104
        MAIN_DEPENDENCY ${_infile}
 
105
        DEPENDS ${NAMES_GENERATOR} ${SCRIPTS_BINDINGS}
 
106
        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${NAMES_GENERATOR} --input ${_infile} --outputDir ${DERIVED_SOURCES_WEBCORE_DIR}
 
107
        VERBATIM)
 
108
ENDMACRO ()
 
109
 
 
110
 
 
111
MACRO (GENERATE_DOM_NAMES _namespace _attrs)
 
112
    SET(NAMES_GENERATOR ${WEBCORE_DIR}/dom/make_names.pl)
 
113
    SET(_arguments  --attrs ${_attrs})
 
114
    SET(_outputfiles ${DERIVED_SOURCES_WEBCORE_DIR}/${_namespace}Names.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/${_namespace}Names.h)
 
115
    SET(_extradef)
 
116
    SET(_tags)
 
117
 
 
118
    FOREACH (f ${ARGN})
 
119
        IF (_tags)
 
120
            SET(_extradef "${_extradef} ${f}")
 
121
        ELSE ()
 
122
            SET(_tags ${f})
 
123
        ENDIF ()
 
124
    ENDFOREACH ()
 
125
 
 
126
    IF (_tags)
 
127
        SET(_arguments "${_arguments}" --tags ${_tags} --factory --wrapperFactory)
 
128
        SET(_outputfiles "${_outputfiles}" ${DERIVED_SOURCES_WEBCORE_DIR}/${_namespace}ElementFactory.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/${_namespace}ElementFactory.h ${DERIVED_SOURCES_WEBCORE_DIR}/JS${_namespace}ElementWrapperFactory.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/JS${_namespace}ElementWrapperFactory.h)
 
129
    ENDIF ()
 
130
 
 
131
    IF (_extradef)
 
132
        SET(_additionArguments "${_additionArguments}" --extraDefines=${_extradef})
 
133
    ENDIF ()
 
134
 
 
135
    ADD_CUSTOM_COMMAND(
 
136
        OUTPUT  ${_outputfiles}
 
137
        DEPENDS ${NAMES_GENERATOR} ${SCRIPTS_BINDINGS} ${_attrs} ${_tags}
 
138
        COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${NAMES_GENERATOR} --preprocessor "${CODE_GENERATOR_PREPROCESSOR_WITH_LINEMARKERS}" --outputDir ${DERIVED_SOURCES_WEBCORE_DIR} ${_arguments} ${_additionArguments}
 
139
        VERBATIM)
 
140
ENDMACRO ()
 
141
 
 
142
 
 
143
# - Create hash table *.lut.h
 
144
# GENERATE_HASH_LUT(input_file output_file)
 
145
MACRO (GENERATE_HASH_LUT _input _output)
 
146
    SET(HASH_LUT_GENERATOR "${JAVASCRIPTCORE_DIR}/create_hash_table")
 
147
 
 
148
    FOREACH (_tmp ${ARGN})
 
149
        IF (${_tmp} STREQUAL "MAIN_DEPENDENCY")
 
150
            SET(_main_dependency ${_input})
 
151
        ENDIF ()
 
152
    ENDFOREACH ()
 
153
 
 
154
    ADD_CUSTOM_COMMAND(
 
155
        OUTPUT ${_output}
 
156
        MAIN_DEPENDENCY ${_main_dependency}
 
157
        DEPENDS ${_input} ${HASH_LUT_GENERATOR}
 
158
        COMMAND ${PERL_EXECUTABLE} ${HASH_LUT_GENERATOR} ${_input} -i > ${_output}
 
159
        VERBATIM)
 
160
ENDMACRO ()
 
161
 
 
162
 
 
163
MACRO (GENERATE_GRAMMAR _prefix _input _output_header _output_source _features)
 
164
    # This is a workaround for winflexbison, which does not work corretly when
 
165
    # run in a different working directory than the installation directory.
 
166
    GET_FILENAME_COMPONENT(_working_directory ${BISON_EXECUTABLE} PATH)
 
167
 
 
168
    ADD_CUSTOM_COMMAND(
 
169
        OUTPUT ${_output_header} ${_output_source}
 
170
        MAIN_DEPENDENCY ${_input}
 
171
        DEPENDS ${_input}
 
172
        COMMAND ${PERL_EXECUTABLE} -I ${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/css/makegrammar.pl --outputDir ${DERIVED_SOURCES_WEBCORE_DIR} --extraDefines "${_features}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --bison "${BISON_EXECUTABLE}" --symbolsPrefix ${_prefix} ${_input}
 
173
        WORKING_DIRECTORY ${_working_directory}
 
174
        VERBATIM)
 
175
ENDMACRO ()
 
176
 
 
177
MACRO(MAKE_HASH_TOOLS _source)
 
178
    GET_FILENAME_COMPONENT(_name ${_source} NAME_WE)
 
179
 
 
180
    IF (${_source} STREQUAL "DocTypeStrings")
 
181
        SET(_hash_tools_h "${DERIVED_SOURCES_WEBCORE_DIR}/HashTools.h")
 
182
    ELSE ()
 
183
        SET(_hash_tools_h "")
 
184
    ENDIF ()
 
185
 
 
186
    ADD_CUSTOM_COMMAND(
 
187
        OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/${_name}.cpp ${_hash_tools_h}
 
188
        MAIN_DEPENDENCY ${_source}.gperf 
 
189
        COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/make-hash-tools.pl ${DERIVED_SOURCES_WEBCORE_DIR} ${_source}.gperf
 
190
        VERBATIM)
 
191
 
 
192
    UNSET(_name)
 
193
    UNSET(_hash_tools_h)
 
194
ENDMACRO()
 
195
 
 
196
MACRO (WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS)
 
197
    INCLUDE_IF_EXISTS(${CMAKE_CURRENT_SOURCE_DIR}/Platform${PORT}.cmake)
 
198
ENDMACRO ()
 
199
 
 
200
MACRO (WEBKIT_WRAP_SOURCELIST)
 
201
    FOREACH (_file ${ARGN})
 
202
        GET_FILENAME_COMPONENT(_basename ${_file} NAME_WE)
 
203
        GET_FILENAME_COMPONENT(_path ${_file} PATH)
 
204
 
 
205
        IF (NOT _file MATCHES "${DERIVED_SOURCES_WEBCORE_DIR}")
 
206
            STRING(REGEX REPLACE "/" "\\\\\\\\" _sourcegroup "${_path}")
 
207
            SOURCE_GROUP("${_sourcegroup}" FILES ${_file})
 
208
        ENDIF ()
 
209
 
 
210
        IF (WTF_PLATFORM_QT)
 
211
            SET(_moc_filename ${DERIVED_SOURCES_WEBCORE_DIR}/${_basename}.moc)
 
212
 
 
213
            FILE(READ ${_file} _contents)
 
214
 
 
215
            STRING(REGEX MATCHALL "#include[ ]+\"${_basename}\\.moc\"" _match "${_contents}")
 
216
            IF (_match)
 
217
                QT4_GENERATE_MOC(${_file} ${_moc_filename})
 
218
                ADD_SOURCE_DEPENDENCIES(${_file} ${_moc_filename})
 
219
            ENDIF ()
 
220
        ENDIF ()
 
221
    ENDFOREACH ()
 
222
 
 
223
    SOURCE_GROUP("DerivedSources" REGULAR_EXPRESSION "${DERIVED_SOURCES_WEBCORE_DIR}")
 
224
ENDMACRO ()
 
225
 
 
226
 
 
227
MACRO (WEBKIT_CREATE_FORWARDING_HEADER _target_directory _file)
 
228
    GET_FILENAME_COMPONENT(_absolute "${_file}" ABSOLUTE)
 
229
    GET_FILENAME_COMPONENT(_name "${_file}" NAME)
 
230
    SET(_content "#include \"${_absolute}\"\n")
 
231
    SET(_filename "${_target_directory}/${_name}")
 
232
 
 
233
    IF (EXISTS "${_filename}")
 
234
        FILE(READ "${_filename}" _old_content)
 
235
    ENDIF ()
 
236
 
 
237
    IF (NOT _old_content STREQUAL _content)
 
238
        FILE(WRITE "${_filename}" "${_content}")
 
239
    ENDIF ()
 
240
ENDMACRO ()
 
241
 
 
242
MACRO (WEBKIT_CREATE_FORWARDING_HEADERS _framework)
 
243
    SET(_processing_directories 0)
 
244
    SET(_processing_files 0)
 
245
    SET(_target_directory "${DERIVED_SOURCES_DIR}/ForwardingHeaders/${_framework}")
 
246
 
 
247
    FILE(GLOB _files "${_target_directory}/*.h")
 
248
    FOREACH (_file ${_files})
 
249
        FILE(READ "${_file}" _content)
 
250
        STRING(REGEX MATCH "^#include \"([^\"]*)\"" _matched ${_content})
 
251
        IF (_matched AND NOT EXISTS "${CMAKE_MATCH_1}")
 
252
           FILE(REMOVE "${_file}")
 
253
        ENDIF()
 
254
    ENDFOREACH ()
 
255
 
 
256
    FOREACH (_currentArg ${ARGN})
 
257
        IF ("${_currentArg}" STREQUAL "DIRECTORIES")
 
258
            SET(_processing_directories 1)
 
259
            SET(_processing_files 0)
 
260
        ELSEIF ("${_currentArg}" STREQUAL "FILES")
 
261
            SET(_processing_directories 0)
 
262
            SET(_processing_files 1)
 
263
        ELSEIF (_processing_directories)
 
264
            FILE(GLOB _files "${_currentArg}/*.h")
 
265
            FOREACH (_file ${_files})
 
266
                WEBKIT_CREATE_FORWARDING_HEADER(${_target_directory} ${_file})
 
267
            ENDFOREACH ()
 
268
        ELSEIF (_processing_files)
 
269
            WEBKIT_CREATE_FORWARDING_HEADER(${_target_directory} ${_currentArg})
 
270
        ENDIF ()
 
271
    ENDFOREACH ()
 
272
ENDMACRO ()