132
|
1 PROJECT(generator CXX C)
|
|
2 cmake_minimum_required(VERSION 2.6)
|
|
3 FIND_PACKAGE(Qt4 REQUIRED)
|
|
4
|
|
5 ## Force Release settings
|
|
6 STRING(TOUPPER "${CMAKE_BUILD_TYPE}" build_type_upper)
|
|
7 set(CMAKE_CXX_FLAGS_${build_type_upper} ${CMAKE_CXX_FLAGS_RELEASE})
|
|
8 get_property(dir_prop DIRECTORY
|
|
9 PROPERTY COMPILE_DEFINITIONS_RELEASE)
|
|
10 set_property(DIRECTORY PROPERTY COMPILE_DEFINITIONS_${build_type_upper} ${dir_prop})
|
|
11
|
|
12 ## Sources
|
|
13 set(srcs
|
|
14 classlistgenerator.cpp
|
|
15 cppgenerator.cpp
|
|
16 cppheadergenerator.cpp
|
|
17 cppimplgenerator.cpp
|
|
18 docparser.cpp
|
|
19 generatorsetd.cpp
|
|
20 dgenerator.cpp
|
|
21 jumptable.cpp
|
|
22 metainfogenerator.cpp
|
|
23 metajavabuilder.cpp
|
|
24 qdocgenerator.cpp
|
|
25 uiconverter.cpp
|
|
26 containergenerator.cpp
|
|
27
|
|
28 generator.cpp
|
|
29 main.cpp
|
|
30 reporthandler.cpp
|
|
31 typeparser.cpp
|
|
32 typesystem.cpp
|
|
33 asttoxml.cpp
|
|
34 fileout.cpp
|
|
35 generatorset.cpp
|
|
36 metajava.cpp
|
|
37 customtypes.cpp
|
|
38 abstractmetabuilder.cpp
|
|
39 abstractmetalang.cpp
|
|
40 prigenerator.cpp
|
|
41
|
|
42 # rxx
|
|
43 parser/ast.cpp
|
|
44 parser/lexer.cpp
|
|
45 parser/list.cpp
|
|
46 parser/parser.cpp
|
|
47 parser/smallobject.cpp
|
|
48 parser/control.cpp
|
|
49 parser/visitor.cpp
|
|
50 parser/default_visitor.cpp
|
|
51 parser/dumptree.cpp
|
|
52 parser/tokens.cpp
|
|
53 parser/binder.cpp
|
|
54 parser/codemodel.cpp
|
|
55 parser/type_compiler.cpp
|
|
56 parser/name_compiler.cpp
|
|
57 parser/declarator_compiler.cpp
|
|
58 parser/class_compiler.cpp
|
|
59 parser/codemodel_finder.cpp
|
|
60 parser/compiler_utils.cpp
|
|
61
|
|
62 ## rpp
|
|
63 parser/rpp/preprocessor.cpp
|
|
64 )
|
|
65 ## Moc headers
|
|
66 set(moc_hdrs
|
|
67 #classlistgenerator.h
|
|
68 cppgenerator.h
|
|
69 cppheadergenerator.h
|
|
70 cppimplgenerator.h
|
|
71 #docparser.h
|
|
72 generatorsetd.h
|
|
73 dgenerator.h
|
|
74 jumptable.h
|
|
75 #metainfogenerator.h
|
|
76 #metajavabuilder.h
|
|
77 #qdocgenerator.h
|
|
78 #uiconverter.h
|
|
79 containergenerator.h
|
|
80 generator.h
|
|
81 #main.h
|
|
82 #reporthandler.h
|
|
83 #typeparser.h
|
|
84 #typesystem.h
|
|
85 #asttoxml.h
|
|
86 fileout.h
|
|
87 generatorset.h
|
|
88 #metajava.h
|
|
89 #customtypes.h
|
|
90 #abstractmetabuilder.h
|
|
91 #abstractmetalang.h
|
|
92 prigenerator.h
|
|
93
|
|
94 ## rxx
|
|
95 #parser/ast.h
|
|
96 #parser/lexer.h
|
|
97 #parser/list.h
|
|
98 #parser/parser.h
|
|
99 #parser/rxx_allocator.h
|
|
100 #parser/rpp-allocator.h
|
|
101 #parser/smallobject.h
|
|
102 #parser/tokens.h
|
|
103 #parser/symbol.h
|
|
104 #parser/control.h
|
|
105 #parser/visitor.h
|
|
106 #parser/default_visitor.h
|
|
107 #parser/dumptree.h
|
|
108 #parser/binder.h
|
|
109 #parser/codemodel.h
|
|
110 #parser/codemodel_pointer.h
|
|
111 #parser/codemodel_fwd.h
|
|
112 #parser/type_compiler.h
|
|
113 #parser/name_compiler.h
|
|
114 #parser/declarator_compiler.h
|
|
115 #parser/class_compiler.h
|
|
116 #parser/codemodel_finder.h
|
|
117 #parser/compiler_utils.h
|
|
118
|
|
119 # rpp
|
|
120 #parser/rpp/pp-cctype.h
|
|
121 #parser/rpp/pp-engine-bits.h
|
|
122 #parser/rpp/pp-engine.h
|
|
123 #parser/rpp/pp-environment.h
|
|
124 #parser/rpp/pp-fwd.h
|
|
125 #parser/rpp/pp-internal.h
|
|
126 #parser/rpp/pp-iterator.h
|
|
127 #parser/rpp/pp-macro-expander.h
|
|
128 #parser/rpp/pp-macro.h
|
|
129 #parser/rpp/pp-scanner.h
|
|
130 #parser/rpp/pp-string.h
|
|
131 #parser/rpp/pp-symbol.h
|
|
132 #parser/rpp/pp.h
|
|
133 #parser/rpp/preprocessor.h
|
|
134
|
|
135 )
|
|
136
|
|
137 ## Resources.
|
|
138 set(res_files
|
|
139 generator.qrc
|
|
140 )
|
|
141
|
|
142 #win32-msvc2005:{
|
|
143 # QMAKE_CXXFLAGS += -wd4996
|
|
144 # QMAKE_CFLAGS += -wd4996
|
|
145 #}
|
|
146
|
|
147 #if(MSVC)
|
|
148 # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zm500 /Zc:wchar_t-")
|
|
149 #endif(MSVC)
|
|
150
|
|
151 #win32-msvc.net {
|
|
152 # QMAKE_CXXFLAGS += /Zm500
|
|
153 # QMAKE_CXXFLAGS -= -Zm200
|
|
154 # QMAKE_CFLAGS -= -Zm200
|
|
155 #}
|
|
156
|
|
157 ## Includes path.
|
|
158 set(inc_paths
|
|
159 ${CMAKE_CURRENT_SOURCE_DIR}/../common
|
|
160 ${CMAKE_CURRENT_SOURCE_DIR}/parser
|
|
161 ${CMAKE_CURRENT_SOURCE_DIR}
|
|
162 ${CMAKE_CURRENT_SOURCE_DIR}/parser/rpp
|
|
163 #${CMAKE_CURRENT_SOURCE_DIR}/parser/include
|
|
164 )
|
|
165
|
|
166 add_definitions(-DRXX_ALLOCATOR_INIT_0)
|
|
167
|
|
168 ## Build project
|
|
169 find_package (Qt4 REQUIRED)
|
|
170 set (QT_USE_QTMAIN true)
|
|
171 set (QT_USE_QTGUI false)
|
|
172 set (QT_USE_QTXML true)
|
|
173
|
|
174 include(${QT_USE_FILE} ${CMAKE_CURRENT_SOURCE_DIR})
|
|
175
|
|
176 set(inc_paths
|
|
177 ${inc_paths}
|
|
178 ${QT_INCLUDES}
|
|
179 )
|
|
180 set(lib_paths
|
|
181 ${lib_paths}
|
|
182 ${QT_LIBRARY_DIR}
|
|
183 )
|
|
184 set(libs
|
|
185 ${QT_LIBRARIES}
|
|
186 )
|
|
187
|
|
188 qt4_wrap_cpp(moc_srcs ${moc_hdrs})
|
|
189 qt4_add_resources(res_wrapped_files ${res_files})
|
|
190
|
|
191 set (all_srcs
|
|
192 ${srcs} ${moc_srcs}
|
|
193 ${res_wrapped_files})
|
|
194 include_directories(${inc_paths})
|
|
195 add_executable(generator ${all_srcs} )
|
|
196 target_link_libraries(generator ${libs})
|
|
197
|
|
198 ## TODO: Precompilated header work well, but I don`t known license of PCHSupport_26.cmake.
|
|
199 ## downloaded from http://www.vtk.org/Bug/view.php?id=1260.
|
|
200 #OPTION(USEPCH "Build the project with precompiled-headers" ON)
|
|
201 #include(../cmake/PCHSupport_26.cmake)
|
|
202 #
|
|
203 #IF(NOT USEPCH)
|
|
204 # MESSAGE(STATUS "NOT using precompiled-header")
|
|
205 #ELSE(NOT USEPCH)
|
|
206 # MESSAGE(STATUS "Using precompiled-header")
|
|
207 # add_precompiled_header(generator ${CMAKE_CURRENT_SOURCE_DIR}/generator_pch.h)
|
|
208 #ENDIF(NOT USEPCH)
|
|
209
|
|
210 macro(add_dgen_target package)
|
|
211 string(TOLOWER ${package} package)
|
|
212 set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/built_${package}.txt)
|
|
213 set(dgen_build_conf_req ${CMAKE_BINARY_DIR}/CMakeFiles/built_${package}_with_req.txt)
|
|
214 file(REMOVE ${dgen_build_conf})
|
|
215 file(REMOVE ${dgen_build_conf_req})
|
|
216 file(APPEND ${dgen_build_conf} "<typesystem>\n")
|
|
217 file(APPEND ${dgen_build_conf_req} "<typesystem>\n")
|
|
218 foreach(req ${ARGN})
|
|
219 string(TOLOWER ${req} req_lower)
|
|
220 file(APPEND ${dgen_build_conf} " <load-typesystem name=\"typesystem_${req_lower}.xml\" generate=\"no\" />\n")
|
|
221 file(APPEND ${dgen_build_conf_req} " <load-typesystem name=\"typesystem_${req_lower}.xml\" generate=\"yes\" />\n")
|
|
222 endforeach(req ${ARGN})
|
|
223
|
|
224 if(${package} STREQUAL "all")
|
|
225 foreach(pack ${ARGN})
|
|
226 set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${pack}/metainfo.cpp) ## Temporary
|
|
227 break(pack ${ARGN})
|
|
228 endforeach(pack ${ARGN})
|
|
229 else(${package} STREQUAL "all")
|
|
230 set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${package}/qt_${package}.pri)
|
|
231 set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}.xml
|
|
232 ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}-java.java)
|
|
233 file(APPEND ${dgen_build_conf} " <load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n")
|
|
234 file(APPEND ${dgen_build_conf_req} " <load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n")
|
|
235 endif(${package} STREQUAL "all")
|
|
236
|
|
237 file(APPEND ${dgen_build_conf} "</typesystem>\n")
|
|
238 file(APPEND ${dgen_build_conf_req} "</typesystem>\n")
|
|
239
|
|
240 foreach(pack ${ARGN})
|
|
241 string(TOLOWER ${pack} pack_lower)
|
|
242 set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack_lower}.xml
|
|
243 ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack_lower}-java.java)
|
|
244 endforeach(pack ${ARGN})
|
|
245
|
|
246 add_custom_command(OUTPUT ${dgen_impl}
|
|
247 COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl}
|
|
248 COMMAND "generator"
|
|
249 ARGS ${GEN_OPT} --no-repreprocess --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=./
|
|
250 --source-directory=${CMAKE_SOURCE_DIR}/generator
|
|
251 qtjambi_masterinclude.h
|
|
252 ${dgen_build_conf}
|
|
253 COMMENT "Generating binding..."
|
|
254 DEPENDS generator ${gen_sources}
|
|
255 )
|
|
256 add_custom_target(dgen_${package} DEPENDS ${dgen_impl} COMMENT "")
|
|
257 endmacro(add_dgen_target target package required)
|
|
258
|
|
259 foreach(pack ${packages})
|
|
260 set(gen_typesystem ${gen_typesystem} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack}.xml)
|
|
261 set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${pack}-java.java)
|
|
262 endforeach(pack ${packages})
|
|
263
|
|
264 set(dgen_build_conf ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt)
|
|
265 file(REMOVE ${dgen_build_conf})
|
|
266 file(APPEND ${dgen_build_conf} "<typesystem>\n")
|
|
267 foreach(package ${packages})
|
|
268 file(APPEND ${dgen_build_conf} " <load-typesystem name=\"typesystem_${package}.xml\" generate=\"yes\" />\n")
|
|
269 endforeach(package ${packages})
|
|
270 file(APPEND ${dgen_build_conf} "</typesystem>\n")
|
|
271
|
|
272 # macro(add_sources_for_generating)
|
|
273 # set(parameters_list_file ${CMAKE_BINARY_DIR}/CMakeFiles/dgen_parameters)
|
|
274 # if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
|
|
275 # file(REMOVE ${parameters_list_file})
|
|
276 # foreach(arg ${ARGN})
|
|
277 # file(APPEND ${parameters_list_file} "${arg}\n")
|
|
278 # endforeach(arg)
|
|
279 # set(param @${parameters_list_file})
|
|
280 # elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
|
|
281 # set(param ${parameters})
|
|
282 # endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
|
|
283 # foreach(dgen_impl ${ARGN})
|
|
284 # add_custom_command(OUTPUT ${dgen_impl}
|
|
285 # COMMAND ${CMAKE_COMMAND} -E remove -f ${param}
|
|
286 # COMMAND "generator"
|
|
287 # ARGS ${GEN_OPT} --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=${CMAKE_BINARY_DIR}
|
|
288 # --source-directory=${CMAKE_SOURCE_DIR}/generator
|
|
289 # qtjambi_masterinclude.h
|
|
290 # ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt
|
|
291 # COMMENT "Generating binding..."
|
|
292 # DEPENDS generator ${gen_typesystem} ${gen_sources}
|
|
293 # )
|
|
294 # endforeach(dgen_impl ${ARGN})
|
|
295 # add_custom_target(dgen DEPENDS ${ARGN})
|
|
296 # endmacro(add_sources_for_generating)
|
|
297
|
|
298 set(gen_sources)
|
|
299 foreach(package ${packages})
|
|
300 set(gen_sources ${gen_sources} ${CMAKE_SOURCE_DIR}/generator/typesystem_${package}.xml)
|
|
301 find_file(d_inc_file_found typesystem_${package}-java.java PATHS ${CMAKE_SOURCE_DIR}/generator/)
|
|
302 if(d_inc_file_found)
|
|
303 set(${CMAKE_SOURCE_DIR}/generator/typesystem_${package}-java.java)
|
|
304 endif(d_inc_file_found)
|
|
305 endforeach(package ${packages})
|
|
306 mark_as_advanced(d_inc_file_found)
|
|
307 set(d_inc_file_found 1)
|
|
308
|
|
309 foreach(package ${packages})
|
|
310 set(dgen_impl ${CMAKE_BINARY_DIR}/cpp/qt_${package}/qt_${package}.pri)
|
|
311 break(package ${packages})
|
|
312 endforeach(package ${packages})
|
|
313
|
|
314 add_custom_command(OUTPUT ${dgen_impl}
|
|
315 COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl}
|
|
316 COMMAND "generator"
|
|
317 ARGS ${GEN_OPT} --qt-include-directory=${QT_INCLUDE_DIR} --output-directory=${CMAKE_BINARY_DIR}
|
|
318 --source-directory=${CMAKE_SOURCE_DIR}/generator
|
|
319 qtjambi_masterinclude.h
|
|
320 ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt
|
|
321 COMMENT "Generating binding..."
|
|
322 DEPENDS generator ${gen_sources}
|
|
323 )
|
|
324 add_custom_target(dgen DEPENDS ${dgen_impl} COMMENT "")
|
|
325
|
|
326 macro(add_sources_for_generating)
|
|
327 foreach(source ${ARGN})
|
|
328 add_custom_command(OUTPUT "${source}"
|
|
329 COMMAND ""
|
|
330 ARGS ""
|
|
331 DEPENDS ${dgen_impl}
|
|
332 COMMENT ""
|
|
333 )
|
|
334 endforeach(source ${ARGN})
|
4
|
335 endmacro(add_sources_for_generating) |