Mercurial > projects > qtd
annotate generator/CMakeLists.txt @ 236:fcc0ada121e1
The fix from rev.236 is back
author | SokoL_SD |
---|---|
date | Sun, 19 Jul 2009 18:20:15 +0000 |
parents | b796329e8c38 |
children | 62d0dce52dac |
rev | line source |
---|---|
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) | |
235
b796329e8c38
We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents:
232
diff
changeset
|
305 endforeach(package ${all_packages}) |
132 | 306 mark_as_advanced(d_inc_file_found) |
307 set(d_inc_file_found 1) | |
308 | |
235
b796329e8c38
We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents:
232
diff
changeset
|
309 set(dgen_impl ${CMAKE_BINARY_DIR}/build/cpp/qt_core/ArrayOps_shell.cpp) |
232 | 310 if(CMAKE_HOST_WIN32) |
311 set(sep ";") | |
312 else(CMAKE_HOST_WIN32) | |
313 set(sep ":") | |
314 endif(CMAKE_HOST_WIN32) | |
315 foreach(path ${QT_INCLUDES}) | |
316 set(inc_paths ${path}${sep}) | |
317 endforeach(path ${QT_INCLUDES}) | |
132 | 318 add_custom_command(OUTPUT ${dgen_impl} |
319 COMMAND ${CMAKE_COMMAND} -E remove -f ${dgen_impl} | |
320 COMMAND "generator" | |
236 | 321 ARGS ${GEN_OPT} --include-paths=${inc_paths} |
235
b796329e8c38
We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents:
232
diff
changeset
|
322 --output-directory=${CMAKE_BINARY_DIR}/build |
132 | 323 --source-directory=${CMAKE_SOURCE_DIR}/generator |
324 qtjambi_masterinclude.h | |
325 ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt | |
326 COMMENT "Generating binding..." | |
235
b796329e8c38
We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents:
232
diff
changeset
|
327 DEPENDS ${gen_sources} ${CMAKE_BINARY_DIR}/CMakeFiles/build.txt |
b796329e8c38
We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents:
232
diff
changeset
|
328 ) |
b796329e8c38
We need to start cmake twice. It is necessary for getting a class list from the generator and using this list for building other parts of QtD.
SokoL_SD
parents:
232
diff
changeset
|
329 add_custom_target(dgen ALL DEPENDS ${dgen_impl} COMMENT "") |