Merge lp:~jonnor/smoke-gobject/856878 into lp:smoke-gobject
- 856878
- Merge into trunk
Proposed by
Jon Nordby
Status: | Merged |
---|---|
Merged at revision: | 172 |
Proposed branch: | lp:~jonnor/smoke-gobject/856878 |
Merge into: | lp:smoke-gobject |
Diff against target: |
1008 lines (+224/-446) 27 files modified
.bzrignore (+2/-1) CMakeLists.txt (+20/-1) GSmokeConfig.cmake.in (+15/-0) README (+6/-1) gsmoke_module_gen.cmake (+56/-0) modules/CMakeLists.txt (+15/-0) modules/atk/CMakeLists.txt (+1/-27) modules/cairo/CMakeLists.txt (+1/-27) modules/clutter/CMakeLists.txt (+1/-27) modules/cogl/CMakeLists.txt (+2/-27) modules/gdk/CMakeLists.txt (+2/-27) modules/gdkpixbuf/CMakeLists.txt (+2/-27) modules/gio/CMakeLists.txt (+1/-27) modules/gl/CMakeLists.txt (+1/-27) modules/glib/CMakeLists.txt (+1/-27) modules/gmodule/CMakeLists.txt (+2/-27) modules/gobject/CMakeLists.txt (+1/-27) modules/gtk/CMakeLists.txt (+1/-28) modules/json/CMakeLists.txt (+1/-28) modules/pango/CMakeLists.txt (+1/-27) modules/tests/CMakeLists.txt (+1/-0) modules/tests/helloworld/CMakeLists.txt (+6/-10) src/CMakeLists.txt (+2/-13) tests/CMakeLists.txt (+0/-1) tools/gsmokegen/cppgenerator.cpp (+58/-32) tools/gsmokegen/cppgenerator.h (+11/-2) tools/gsmokegen/main.cpp (+14/-5) |
To merge this branch: | bzr merge lp:~jonnor/smoke-gobject/856878 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jon Nordby | Approve | ||
Review via email: mp+76916@code.launchpad.net |
Commit message
Description of the change
Proposed fix for bug #856878
Note that parallel make in modules can still fail; cross-module dependencies are not tracked properly yet.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.bzrignore' |
2 | --- .bzrignore 2011-09-22 17:22:15 +0000 |
3 | +++ .bzrignore 2011-09-25 21:38:17 +0000 |
4 | @@ -11,9 +11,10 @@ |
5 | ./tests/codegen/tst_codegen |
6 | ./tests/everything/tst_everything |
7 | ./tests/gimarshallingtests/tst_gimarshallingtests |
8 | -./tests/helloworld/helloworld |
9 | ./tools/dumper/gi_dumper |
10 | ./tools/gsmokegen/gsmokegen |
11 | |
12 | +./modules/tests/helloworld/helloworld |
13 | ./modules/*/*.cpp |
14 | ./modules/*/*.h |
15 | + |
16 | |
17 | === modified file 'CMakeLists.txt' |
18 | --- CMakeLists.txt 2011-08-14 08:33:47 +0000 |
19 | +++ CMakeLists.txt 2011-09-25 21:38:17 +0000 |
20 | @@ -4,11 +4,30 @@ |
21 | find_package(Qt4) |
22 | find_package(PkgConfig) |
23 | pkg_check_modules(GLIB2 REQUIRED glib-2.0) |
24 | +pkg_check_modules(GOBJECT REQUIRED gobject-2.0) |
25 | pkg_check_modules(GOBJECT-INTROSPECTION REQUIRED gobject-introspection-1.0) |
26 | |
27 | + |
28 | set(GSMOKE_GEN_BIN ${CMAKE_BINARY_DIR}/tools/gsmokegen/gsmokegen) |
29 | +set(GSMOKE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src) |
30 | +set(GSMOKE_BINARY_DIR ${CMAKE_BINARY_DIR}/src) |
31 | + |
32 | +set(GSMOKE_INCLUDES ${GLIB2_INCLUDE_DIRS} |
33 | + ${GOBJECT-INTROSPECTION_INCLUDE_DIRS} |
34 | + ${QT_INCLUDES}) |
35 | + |
36 | +set(GSMOKE_LIBS |
37 | + gio-2.0 |
38 | + gobject-2.0 |
39 | + gmodule-2.0 |
40 | + ${GLIB2_LIBRARIES} |
41 | + ffi |
42 | + ${QT_QTCORE_LIBRARY} |
43 | + girepository-1.0) |
44 | + |
45 | +configure_file(GSmokeConfig.cmake.in "${CMAKE_BINARY_DIR}/GSmokeConfig.cmake" @ONLY ) |
46 | |
47 | add_subdirectory(src) |
48 | add_subdirectory(tools) |
49 | -add_subdirectory(modules) |
50 | add_subdirectory(tests) |
51 | +# modules is built separately |
52 | |
53 | === added file 'GSmokeConfig.cmake.in' |
54 | --- GSmokeConfig.cmake.in 1970-01-01 00:00:00 +0000 |
55 | +++ GSmokeConfig.cmake.in 2011-09-25 21:38:17 +0000 |
56 | @@ -0,0 +1,15 @@ |
57 | +# - Config file for the GSmoke package |
58 | +# It defines the following variables |
59 | +# GSMOKE_INCLUDE_DIRS - include directories for GSmoke |
60 | +# GSMOKE_LIBRARIES - libraries to link against |
61 | +# GSMOKE_GEN_EXECUTABLE - the module generator executable |
62 | +# |
63 | +# Note: currently only supports in-tree builds |
64 | + |
65 | +set(GSMOKE_INCLUDE_DIRS |
66 | + "@GSMOKE_SOURCE_DIR@" |
67 | + "@GSMOKE_BINARY_DIR@") |
68 | +set(GSMOKE_LIBRARIES "@GSMOKE_LIBS@" gsmoke) |
69 | +set(GSMOKE_GEN_EXECUTABLE "@GSMOKE_GEN_BIN@") |
70 | +set(GSMOKE_LIBRARY_DIRS |
71 | + "@GSMOKE_BINARY_DIR@") |
72 | |
73 | === modified file 'README' |
74 | --- README 2011-07-14 07:57:32 +0000 |
75 | +++ README 2011-09-25 21:38:17 +0000 |
76 | @@ -25,6 +25,11 @@ |
77 | called 'build' in the source tree, and then type 'cmake ..' from |
78 | there |
79 | |
80 | +Modules need to be built separately, after having built the toplevel. |
81 | + cd modules |
82 | + cmake . |
83 | + make |
84 | + |
85 | Testing |
86 | ======= |
87 | In build/tests/gimarshallingtests use the following command: |
88 | @@ -49,4 +54,4 @@ |
89 | generator.generate("Gio"); |
90 | |
91 | This will generate the C++ source files for the Gio namespace and all |
92 | -the classes within it |
93 | \ No newline at end of file |
94 | +the classes within it |
95 | |
96 | === added file 'gsmoke_module_gen.cmake' |
97 | --- gsmoke_module_gen.cmake 1970-01-01 00:00:00 +0000 |
98 | +++ gsmoke_module_gen.cmake 2011-09-25 21:38:17 +0000 |
99 | @@ -0,0 +1,56 @@ |
100 | +MACRO(GSMOKE_MODULE_GEN LIB_NAME GI_NAME EXTRA_FILES) |
101 | +# Macro for generating a gsmoke module |
102 | +# Arguments - |
103 | +# LIB_NAME - The library name. Example: gtk |
104 | +# GI_NAME - The GObject instrospection name. Example: Gtk |
105 | +# EXTRA_FILES - Extra files (not generated) that should be included |
106 | +# EXCLUDE - Path to an exclude file |
107 | + |
108 | +# FIXME: make exclude optional |
109 | + |
110 | +set(EXCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/exclude.txt) |
111 | + |
112 | +execute_process(COMMAND ${GSMOKE_GEN_EXECUTABLE} |
113 | + --list-files -o ${CMAKE_CURRENT_BINARY_DIR} -e ${EXCLUDE} ${GI_NAME} |
114 | + OUTPUT_VARIABLE GENERATED) |
115 | + |
116 | +string(REPLACE \n " " GENERATED_FILES ${GENERATED}) |
117 | + |
118 | +string(REPLACE \n " " GENERATED_FILES_TEMP ${GENERATED}) |
119 | +separate_arguments(GENERATED_FILES_TEMP) |
120 | + |
121 | +foreach(FILE ${GENERATED_FILES_TEMP}) |
122 | + if (FILE MATCHES .*.cpp) |
123 | + list(APPEND GENERATED_FILES_CPP ${FILE}) |
124 | + endif (FILE MATCHES .*.cpp) |
125 | +endforeach(FILE) |
126 | + |
127 | + |
128 | +set_source_files_properties(${GENERATED_FILES_CPP} |
129 | + PROPERTIES GENERATED true) |
130 | + |
131 | +SET(SOURCES |
132 | + ${EXTRA_FILES} |
133 | + ${GENERATED_FILES_CPP} |
134 | +) |
135 | + |
136 | +include_directories( |
137 | + ${CMAKE_CURRENT_BINARY_DIR}/.. # For other modules |
138 | + ${CMAKE_CURRENT_SOURCE_DIR}/.. |
139 | + ${GSMOKE_INCLUDE_DIRS} |
140 | +) |
141 | + |
142 | +link_directories(${GSMOKE_LIBRARY_DIRS}) |
143 | + |
144 | +add_custom_command(OUTPUT ${GENERATED_FILES_CPP} |
145 | + COMMAND ${GSMOKE_GEN_EXECUTABLE} |
146 | + ARGS -o ${CMAKE_CURRENT_BINARY_DIR} -e ${EXCLUDE} ${GI_NAME} |
147 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
148 | + |
149 | +add_library(smoke${LIB_NAME} SHARED ${SOURCES}) |
150 | + |
151 | +target_link_libraries(smoke${LIB_NAME} |
152 | + ${GSMOKE_LIBRARIES} |
153 | +) |
154 | + |
155 | +ENDMACRO(GSMOKE_MODULE_GEN LIB_NAME GI_NAME EXTRA_FILES) |
156 | |
157 | === modified file 'modules/CMakeLists.txt' |
158 | --- modules/CMakeLists.txt 2011-08-14 12:58:51 +0000 |
159 | +++ modules/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
160 | @@ -1,3 +1,17 @@ |
161 | + |
162 | +cmake_minimum_required(VERSION 2.6) |
163 | + |
164 | +find_package(Qt4) |
165 | +find_package(PkgConfig) |
166 | +pkg_check_modules(GOBJECT2 REQUIRED gobject-2.0) |
167 | +pkg_check_modules(GOBJECT-INTROSPECTION REQUIRED gobject-introspection-1.0) |
168 | + |
169 | +SET(CMAKE_MODULE_PATH ../) |
170 | +SET(GSmoke_DIR ../) |
171 | + |
172 | +find_package(GSmoke REQUIRED) |
173 | +include(gsmoke_module_gen) |
174 | + |
175 | add_subdirectory(glib) |
176 | add_subdirectory(cairo) |
177 | add_subdirectory(gobject) |
178 | @@ -13,3 +27,4 @@ |
179 | add_subdirectory(json) |
180 | add_subdirectory(clutter) |
181 | |
182 | +add_subdirectory(tests) |
183 | |
184 | === modified file 'modules/atk/CMakeLists.txt' |
185 | --- modules/atk/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
186 | +++ modules/atk/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
187 | @@ -1,28 +1,2 @@ |
188 | |
189 | -FILE(GLOB ATK_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
190 | - |
191 | -SET(smokeatk_LIB_SRCS |
192 | - atk.cpp |
193 | - ${ATK_CPP} |
194 | -) |
195 | - |
196 | -include_directories( |
197 | - ${CMAKE_SOURCE_DIR}/src |
198 | - ${CMAKE_BINARY_DIR}/modules |
199 | - ${QT_INCLUDES} |
200 | -) |
201 | - |
202 | -add_custom_command(OUTPUT atk.cpp |
203 | - COMMAND gsmokegen |
204 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
205 | - Atk |
206 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
207 | - |
208 | -add_library(smokeatk SHARED ${smokeatk_LIB_SRCS}) |
209 | - |
210 | -target_link_libraries(smokeatk |
211 | - ${QT_QTCORE_LIBRARY} |
212 | - gobject-2.0 |
213 | - glib-2.0 |
214 | - gsmoke |
215 | -) |
216 | +GSMOKE_MODULE_GEN(atk Atk "") |
217 | |
218 | === modified file 'modules/cairo/CMakeLists.txt' |
219 | --- modules/cairo/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
220 | +++ modules/cairo/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
221 | @@ -1,28 +1,2 @@ |
222 | |
223 | -FILE(GLOB CAIRO_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
224 | - |
225 | -SET(smokecairo_LIB_SRCS |
226 | - cairo.cpp |
227 | - ${CAIRO_CPP} |
228 | -) |
229 | - |
230 | -include_directories( |
231 | - ${CMAKE_SOURCE_DIR}/src |
232 | - ${CMAKE_BINARY_DIR}/modules |
233 | - ${QT_INCLUDES} |
234 | -) |
235 | - |
236 | -add_custom_command(OUTPUT cairo.cpp |
237 | - COMMAND gsmokegen |
238 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
239 | - cairo |
240 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
241 | - |
242 | -add_library(smokecairo SHARED ${smokecairo_LIB_SRCS}) |
243 | - |
244 | -target_link_libraries(smokecairo |
245 | - ${QT_QTCORE_LIBRARY} |
246 | - gobject-2.0 |
247 | - glib-2.0 |
248 | - gsmoke |
249 | -) |
250 | +GSMOKE_MODULE_GEN(cairo cairo "") |
251 | |
252 | === modified file 'modules/clutter/CMakeLists.txt' |
253 | --- modules/clutter/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
254 | +++ modules/clutter/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
255 | @@ -1,28 +1,2 @@ |
256 | |
257 | -FILE(GLOB CLUTTER_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
258 | - |
259 | -SET(smokeclutter_LIB_SRCS |
260 | - clutter.cpp |
261 | - ${CLUTTER_CPP} |
262 | -) |
263 | - |
264 | -include_directories( |
265 | - ${CMAKE_SOURCE_DIR}/src |
266 | - ${CMAKE_BINARY_DIR}/modules |
267 | - ${QT_INCLUDES} |
268 | -) |
269 | - |
270 | -add_custom_command(OUTPUT clutter.cpp |
271 | - COMMAND gsmokegen |
272 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} -e ${CMAKE_CURRENT_SOURCE_DIR}/exclude.txt |
273 | - Clutter |
274 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
275 | - |
276 | -add_library(smokeclutter SHARED ${smokeclutter_LIB_SRCS}) |
277 | - |
278 | -target_link_libraries(smokeclutter |
279 | - ${QT_QTCORE_LIBRARY} |
280 | - gobject-2.0 |
281 | - glib-2.0 |
282 | - gsmoke |
283 | -) |
284 | +GSMOKE_MODULE_GEN(clutter Clutter "") |
285 | |
286 | === modified file 'modules/cogl/CMakeLists.txt' |
287 | --- modules/cogl/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
288 | +++ modules/cogl/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
289 | @@ -1,28 +1,3 @@ |
290 | |
291 | -FILE(GLOB COGL_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
292 | - |
293 | -SET(smokecogl_LIB_SRCS |
294 | - cogl.cpp |
295 | - ${COGL_CPP} |
296 | -) |
297 | - |
298 | -include_directories( |
299 | - ${CMAKE_SOURCE_DIR}/src |
300 | - ${CMAKE_BINARY_DIR}/modules |
301 | - ${QT_INCLUDES} |
302 | -) |
303 | - |
304 | -add_custom_command(OUTPUT cogl.cpp |
305 | - COMMAND gsmokegen |
306 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
307 | - Cogl |
308 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
309 | - |
310 | -add_library(smokecogl SHARED ${smokecogl_LIB_SRCS}) |
311 | - |
312 | -target_link_libraries(smokecogl |
313 | - ${QT_QTCORE_LIBRARY} |
314 | - gobject-2.0 |
315 | - glib-2.0 |
316 | - gsmoke |
317 | -) |
318 | +GSMOKE_MODULE_GEN(cogl Cogl "") |
319 | + |
320 | |
321 | === modified file 'modules/gdk/CMakeLists.txt' |
322 | --- modules/gdk/CMakeLists.txt 2011-09-22 14:41:13 +0000 |
323 | +++ modules/gdk/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
324 | @@ -1,28 +1,3 @@ |
325 | |
326 | -FILE(GLOB GDK_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
327 | - |
328 | -SET(smokegdk_LIB_SRCS |
329 | - gdk.cpp |
330 | - ${GDK_CPP} |
331 | -) |
332 | - |
333 | -include_directories( |
334 | - ${CMAKE_SOURCE_DIR}/src |
335 | - ${CMAKE_BINARY_DIR}/modules |
336 | - ${QT_INCLUDES} |
337 | -) |
338 | - |
339 | -add_custom_command(OUTPUT gdk.cpp |
340 | - COMMAND gsmokegen |
341 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
342 | - Gdk |
343 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
344 | - |
345 | -add_library(smokegdk SHARED ${smokegdk_LIB_SRCS}) |
346 | - |
347 | -target_link_libraries(smokegdk |
348 | - ${QT_QTCORE_LIBRARY} |
349 | - gobject-2.0 |
350 | - glib-2.0 |
351 | - gsmoke |
352 | -) |
353 | +GSMOKE_MODULE_GEN(gdk Gdk "") |
354 | + |
355 | |
356 | === modified file 'modules/gdkpixbuf/CMakeLists.txt' |
357 | --- modules/gdkpixbuf/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
358 | +++ modules/gdkpixbuf/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
359 | @@ -1,28 +1,3 @@ |
360 | |
361 | -FILE(GLOB GDKPIXBUF_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
362 | - |
363 | -SET(smokegdkpixbuf_LIB_SRCS |
364 | - gdkpixbuf.cpp |
365 | - ${GDKPIXBUF_CPP} |
366 | -) |
367 | - |
368 | -include_directories( |
369 | - ${CMAKE_SOURCE_DIR}/src |
370 | - ${CMAKE_BINARY_DIR}/modules |
371 | - ${QT_INCLUDES} |
372 | -) |
373 | - |
374 | -add_custom_command(OUTPUT gdkpixbuf.cpp |
375 | - COMMAND gsmokegen |
376 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
377 | - GdkPixbuf |
378 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
379 | - |
380 | -add_library(smokegdkpixbuf SHARED ${smokegdkpixbuf_LIB_SRCS}) |
381 | - |
382 | -target_link_libraries(smokegdkpixbuf |
383 | - ${QT_QTCORE_LIBRARY} |
384 | - gobject-2.0 |
385 | - glib-2.0 |
386 | - gsmoke |
387 | -) |
388 | +GSMOKE_MODULE_GEN(gdkpixbuf GdkPixbuf "") |
389 | + |
390 | |
391 | === modified file 'modules/gio/CMakeLists.txt' |
392 | --- modules/gio/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
393 | +++ modules/gio/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
394 | @@ -1,28 +1,2 @@ |
395 | |
396 | -FILE(GLOB GIO_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
397 | - |
398 | -SET(smokegio_LIB_SRCS |
399 | - gio.cpp |
400 | - ${GIO_CPP} |
401 | -) |
402 | - |
403 | -include_directories( |
404 | - ${CMAKE_SOURCE_DIR}/src |
405 | - ${CMAKE_BINARY_DIR}/modules |
406 | - ${QT_INCLUDES} |
407 | -) |
408 | - |
409 | -add_custom_command(OUTPUT gio.cpp |
410 | - COMMAND gsmokegen |
411 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} -e ${CMAKE_CURRENT_SOURCE_DIR}/exclude.txt |
412 | - Gio |
413 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
414 | - |
415 | -add_library(smokegio SHARED ${smokegio_LIB_SRCS}) |
416 | - |
417 | -target_link_libraries(smokegio |
418 | - ${QT_QTCORE_LIBRARY} |
419 | - gobject-2.0 |
420 | - glib-2.0 |
421 | - gsmoke |
422 | -) |
423 | +GSMOKE_MODULE_GEN(gio Gio "") |
424 | |
425 | === modified file 'modules/gl/CMakeLists.txt' |
426 | --- modules/gl/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
427 | +++ modules/gl/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
428 | @@ -1,28 +1,2 @@ |
429 | |
430 | -FILE(GLOB GL_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
431 | - |
432 | -SET(smokegl_LIB_SRCS |
433 | - gl.cpp |
434 | - ${GL_CPP} |
435 | -) |
436 | - |
437 | -include_directories( |
438 | - ${CMAKE_SOURCE_DIR}/src |
439 | - ${CMAKE_BINARY_DIR}/modules |
440 | - ${QT_INCLUDES} |
441 | -) |
442 | - |
443 | -add_custom_command(OUTPUT gl.cpp |
444 | - COMMAND gsmokegen |
445 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
446 | - GL |
447 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
448 | - |
449 | -add_library(smokegl SHARED ${smokegl_LIB_SRCS}) |
450 | - |
451 | -target_link_libraries(smokegl |
452 | - ${QT_QTCORE_LIBRARY} |
453 | - gobject-2.0 |
454 | - glib-2.0 |
455 | - gsmoke |
456 | -) |
457 | +GSMOKE_MODULE_GEN(gl GL "") |
458 | |
459 | === modified file 'modules/glib/CMakeLists.txt' |
460 | --- modules/glib/CMakeLists.txt 2011-09-22 14:41:13 +0000 |
461 | +++ modules/glib/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
462 | @@ -1,28 +1,2 @@ |
463 | |
464 | -FILE(GLOB GLIB_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
465 | - |
466 | -SET(smokeglib_LIB_SRCS |
467 | - glib.cpp |
468 | - ${GLIB_CPP} |
469 | -) |
470 | - |
471 | -include_directories( |
472 | - ${CMAKE_SOURCE_DIR}/src |
473 | - ${CMAKE_BINARY_DIR}/modules |
474 | - ${QT_INCLUDES} |
475 | -) |
476 | - |
477 | -add_custom_command(OUTPUT glib.cpp |
478 | - COMMAND gsmokegen |
479 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
480 | - GLib |
481 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
482 | - |
483 | -add_library(smokeglib SHARED ${smokeglib_LIB_SRCS}) |
484 | - |
485 | -target_link_libraries(smokeglib |
486 | - ${QT_QTCORE_LIBRARY} |
487 | - gobject-2.0 |
488 | - glib-2.0 |
489 | - gsmoke |
490 | -) |
491 | +GSMOKE_MODULE_GEN(glib GLib "") |
492 | |
493 | === modified file 'modules/gmodule/CMakeLists.txt' |
494 | --- modules/gmodule/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
495 | +++ modules/gmodule/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
496 | @@ -1,28 +1,3 @@ |
497 | |
498 | -FILE(GLOB GMODULE_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
499 | - |
500 | -SET(smokegmodule_LIB_SRCS |
501 | - gmodule.cpp |
502 | - ${GMODULE_CPP} |
503 | -) |
504 | - |
505 | -include_directories( |
506 | - ${CMAKE_SOURCE_DIR}/src |
507 | - ${CMAKE_BINARY_DIR}/modules |
508 | - ${QT_INCLUDES} |
509 | -) |
510 | - |
511 | -add_custom_command(OUTPUT gmodule.cpp |
512 | - COMMAND gsmokegen |
513 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
514 | - GModule |
515 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
516 | - |
517 | -add_library(smokegmodule SHARED ${smokegmodule_LIB_SRCS}) |
518 | - |
519 | -target_link_libraries(smokegmodule |
520 | - ${QT_QTCORE_LIBRARY} |
521 | - gobject-2.0 |
522 | - glib-2.0 |
523 | - gsmoke |
524 | -) |
525 | \ No newline at end of file |
526 | + |
527 | +GSMOKE_MODULE_GEN(gmodule GModule "") |
528 | |
529 | === modified file 'modules/gobject/CMakeLists.txt' |
530 | --- modules/gobject/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
531 | +++ modules/gobject/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
532 | @@ -1,28 +1,2 @@ |
533 | |
534 | -FILE(GLOB GOBJECT_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
535 | - |
536 | -SET(smokegobject_LIB_SRCS |
537 | - gobject.cpp |
538 | - ${GOBJECT_CPP} |
539 | -) |
540 | - |
541 | -include_directories( |
542 | - ${CMAKE_SOURCE_DIR}/src |
543 | - ${CMAKE_BINARY_DIR}/modules |
544 | - ${QT_INCLUDES} |
545 | -) |
546 | - |
547 | -add_custom_command(OUTPUT gobject.cpp |
548 | - COMMAND gsmokegen |
549 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
550 | - GObject |
551 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
552 | - |
553 | -add_library(smokegobject SHARED ${smokegobject_LIB_SRCS}) |
554 | - |
555 | -target_link_libraries(smokegobject |
556 | - ${QT_QTCORE_LIBRARY} |
557 | - gobject-2.0 |
558 | - glib-2.0 |
559 | - gsmoke |
560 | -) |
561 | +GSMOKE_MODULE_GEN(gobject GObject "") |
562 | |
563 | === modified file 'modules/gtk/CMakeLists.txt' |
564 | --- modules/gtk/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
565 | +++ modules/gtk/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
566 | @@ -1,29 +1,2 @@ |
567 | |
568 | -FILE(GLOB GTK_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
569 | - |
570 | -SET(smokegtk_LIB_SRCS |
571 | - gtk.cpp |
572 | - gtkinit.cpp |
573 | - ${GTK_CPP} |
574 | -) |
575 | - |
576 | -include_directories( |
577 | - ${CMAKE_SOURCE_DIR}/src |
578 | - ${CMAKE_BINARY_DIR}/modules |
579 | - ${QT_INCLUDES} |
580 | -) |
581 | - |
582 | -add_custom_command(OUTPUT gtk.cpp |
583 | - COMMAND gsmokegen |
584 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
585 | - Gtk |
586 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
587 | - |
588 | -add_library(smokegtk SHARED ${smokegtk_LIB_SRCS}) |
589 | - |
590 | -target_link_libraries(smokegtk |
591 | - ${QT_QTCORE_LIBRARY} |
592 | - gobject-2.0 |
593 | - glib-2.0 |
594 | - gsmoke |
595 | -) |
596 | \ No newline at end of file |
597 | +GSMOKE_MODULE_GEN(gtk Gtk gtkinit.cpp) |
598 | |
599 | === modified file 'modules/json/CMakeLists.txt' |
600 | --- modules/json/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
601 | +++ modules/json/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
602 | @@ -1,28 +1,1 @@ |
603 | - |
604 | -FILE(GLOB JSON_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
605 | - |
606 | -SET(smokejson_LIB_SRCS |
607 | - json.cpp |
608 | - ${JSON_CPP} |
609 | -) |
610 | - |
611 | -include_directories( |
612 | - ${CMAKE_SOURCE_DIR}/src |
613 | - ${CMAKE_BINARY_DIR}/modules |
614 | - ${QT_INCLUDES} |
615 | -) |
616 | - |
617 | -add_custom_command(OUTPUT json.cpp |
618 | - COMMAND gsmokegen |
619 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
620 | - Json |
621 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
622 | - |
623 | -add_library(smokejson SHARED ${smokejson_LIB_SRCS}) |
624 | - |
625 | -target_link_libraries(smokejson |
626 | - ${QT_QTCORE_LIBRARY} |
627 | - gobject-2.0 |
628 | - glib-2.0 |
629 | - gsmoke |
630 | -) |
631 | +GSMOKE_MODULE_GEN(json Json "") |
632 | |
633 | === modified file 'modules/pango/CMakeLists.txt' |
634 | --- modules/pango/CMakeLists.txt 2011-08-15 16:23:02 +0000 |
635 | +++ modules/pango/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
636 | @@ -1,28 +1,2 @@ |
637 | |
638 | -FILE(GLOB PANGO_CPP "${CMAKE_CURRENT_BINARY_DIR}/*.cpp") |
639 | - |
640 | -SET(smokepango_LIB_SRCS |
641 | - pango.cpp |
642 | - ${PANGO_CPP} |
643 | -) |
644 | - |
645 | -include_directories( |
646 | - ${CMAKE_SOURCE_DIR}/src |
647 | - ${CMAKE_BINARY_DIR}/modules |
648 | - ${QT_INCLUDES} |
649 | -) |
650 | - |
651 | -add_custom_command(OUTPUT pango.cpp |
652 | - COMMAND gsmokegen |
653 | - ARGS -o ${CMAKE_CURRENT_BINARY_DIR} |
654 | - Pango |
655 | - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) |
656 | - |
657 | -add_library(smokepango SHARED ${smokepango_LIB_SRCS}) |
658 | - |
659 | -target_link_libraries(smokepango |
660 | - ${QT_QTCORE_LIBRARY} |
661 | - gobject-2.0 |
662 | - glib-2.0 |
663 | - gsmoke |
664 | -) |
665 | \ No newline at end of file |
666 | +GSMOKE_MODULE_GEN(pango Pango "") |
667 | |
668 | === added directory 'modules/tests' |
669 | === added file 'modules/tests/CMakeLists.txt' |
670 | --- modules/tests/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
671 | +++ modules/tests/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
672 | @@ -0,0 +1,1 @@ |
673 | +add_subdirectory(helloworld) |
674 | |
675 | === renamed directory 'tests/helloworld' => 'modules/tests/helloworld' |
676 | === modified file 'modules/tests/helloworld/CMakeLists.txt' |
677 | --- tests/helloworld/CMakeLists.txt 2011-08-15 15:29:10 +0000 |
678 | +++ modules/tests/helloworld/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
679 | @@ -14,14 +14,13 @@ |
680 | myobject.cpp |
681 | ) |
682 | |
683 | +link_directories(${GSMOKE_LIBRARY_DIRS}) |
684 | + |
685 | include_directories( |
686 | - # ${GLIB2_INCLUDE_DIRS} |
687 | ${QT_INCLUDES} |
688 | - # ${GOBJECT-INTROSPECTION_INCLUDE_DIRS} |
689 | - ${CMAKE_SOURCE_DIR}/src |
690 | - ${CMAKE_SOURCE_DIR}/tests/helloworld |
691 | - ${CMAKE_BINARY_DIR}/modules |
692 | - ${CMAKE_SOURCE_DIR}/modules |
693 | + ${CMAKE_BINARY_DIR} |
694 | + ${CMAKE_SOURCE_DIR} |
695 | + ${GSMOKE_INCLUDE_DIRS} |
696 | ) |
697 | |
698 | #qt4_automoc(${helloworld_SRCS}) |
699 | @@ -31,10 +30,7 @@ |
700 | |
701 | target_link_libraries( helloworld |
702 | ${QT_QTCORE_LIBRARY} |
703 | - gobject-2.0 |
704 | - glib-2.0 |
705 | -# gtk-2.0 |
706 | - gsmoke |
707 | + ${GSMOKE_LIBRARIES} |
708 | smokeatk |
709 | smokecairo |
710 | smokegdkpixbuf |
711 | |
712 | === modified file 'src/CMakeLists.txt' |
713 | --- src/CMakeLists.txt 2011-08-13 15:52:51 +0000 |
714 | +++ src/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
715 | @@ -15,22 +15,11 @@ |
716 | utils.cpp |
717 | ) |
718 | |
719 | -include_directories( ${GLIB2_INCLUDE_DIRS} |
720 | - ${GOBJECT-INTROSPECTION_INCLUDE_DIRS} |
721 | - ${QT_INCLUDES} |
722 | - ) |
723 | +include_directories(${GSMOKE_INCLUDES}) |
724 | |
725 | add_library(gsmoke SHARED ${gsmoke_SRCS}) |
726 | |
727 | -target_link_libraries( gsmoke |
728 | - gio-2.0 |
729 | - gobject-2.0 |
730 | - gmodule-2.0 |
731 | - ${GLIB2_LIBRARIES} |
732 | - ffi |
733 | - ${QT_QTCORE_LIBRARY} |
734 | - girepository-1.0 |
735 | - ) |
736 | +target_link_libraries(gsmoke ${GSMOKE_LIBS}) |
737 | |
738 | # A bit early to install yet.. |
739 | # INSTALL(TARGETS gsmoke DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) |
740 | |
741 | === modified file 'tests/CMakeLists.txt' |
742 | --- tests/CMakeLists.txt 2011-08-13 09:44:01 +0000 |
743 | +++ tests/CMakeLists.txt 2011-09-25 21:38:17 +0000 |
744 | @@ -1,5 +1,4 @@ |
745 | add_subdirectory(libs) |
746 | add_subdirectory(codegen) |
747 | -add_subdirectory(helloworld) |
748 | add_subdirectory(everything) |
749 | add_subdirectory(gimarshallingtests) |
750 | |
751 | === modified file 'tools/gsmokegen/cppgenerator.cpp' |
752 | --- tools/gsmokegen/cppgenerator.cpp 2011-08-15 14:37:24 +0000 |
753 | +++ tools/gsmokegen/cppgenerator.cpp 2011-09-25 21:38:17 +0000 |
754 | @@ -648,7 +648,26 @@ |
755 | header() << " };" << endl << endl; |
756 | } |
757 | |
758 | -void CppGenerator::generateClass(const QByteArray& classPath, int classId) |
759 | +void CppGenerator::generateClass(const QByteArray& classPath, int classId, GenerationMode mode) |
760 | +{ |
761 | + QByteArray headerFilename(classPath + ".h"); |
762 | + headerFilename.replace("::", "_"); |
763 | + headerFilename = headerFilename.toLower(); |
764 | + QFile headerFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(headerFilename)); |
765 | + |
766 | + QByteArray cppFilename(classPath + ".cpp"); |
767 | + cppFilename.replace("::", "_"); |
768 | + cppFilename = cppFilename.toLower(); |
769 | + QFile cppFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(cppFilename)); |
770 | + |
771 | + m_generatedFiles << headerFile.fileName() << cppFile.fileName(); |
772 | + |
773 | + if (mode == GenerateCode) { |
774 | + generateClassCode(classPath, classId, headerFile, cppFile); |
775 | + } |
776 | +} |
777 | + |
778 | +void CppGenerator::generateClassCode(const QByteArray& classPath, int classId, QFile& headerFile, QFile& cppFile) |
779 | { |
780 | const QMetaObject *meta = Smoke::GObjectNamespace::findMetaObject(classPath); |
781 | if (meta == 0) { |
782 | @@ -658,25 +677,15 @@ |
783 | |
784 | QByteArray className = classPath.mid(classPath.lastIndexOf(":") + 1); |
785 | |
786 | - QByteArray headerFilename(classPath + ".h"); |
787 | - headerFilename.replace("::", "_"); |
788 | - headerFilename = headerFilename.toLower(); |
789 | - QFile headerFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(headerFilename)); |
790 | - |
791 | if (!headerFile.open(QIODevice::WriteOnly | QIODevice::Text)) { |
792 | - qWarning() << Q_FUNC_INFO << "File open failed:" << headerFilename; |
793 | + qWarning() << Q_FUNC_INFO << "File open failed:" << headerFile.fileName(); |
794 | return; |
795 | } |
796 | |
797 | m_header = new QTextStream(&headerFile); |
798 | |
799 | - QByteArray cppFilename(classPath + ".cpp"); |
800 | - cppFilename.replace("::", "_"); |
801 | - cppFilename = cppFilename.toLower(); |
802 | - QFile cppFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(cppFilename)); |
803 | - |
804 | if (!cppFile.open(QIODevice::WriteOnly | QIODevice::Text)) { |
805 | - qWarning() << Q_FUNC_INFO << "File open failed:" << cppFilename; |
806 | + qWarning() << Q_FUNC_INFO << "File open failed:" << cppFile.fileName(); |
807 | return; |
808 | } |
809 | |
810 | @@ -704,7 +713,7 @@ |
811 | header() << "#include <" << superclassHeader << ">" << endl << endl; |
812 | } |
813 | |
814 | - cpp() << "#include <" << module + "/" + headerFilename << ">" << endl << endl; |
815 | + cpp() << "#include <" << module + "/" + QFileInfo(headerFile).fileName() << ">" << endl << endl; |
816 | |
817 | generateClassForwardDeclarations(className); |
818 | |
819 | @@ -960,7 +969,7 @@ |
820 | cppFile.close(); |
821 | } |
822 | |
823 | -void CppGenerator::generate(const QByteArray& name, const QString &outputDirectory) |
824 | +void CppGenerator::generate(const QByteArray& name, const QString &outputDirectory, GenerationMode mode) |
825 | { |
826 | m_directory = QDir(outputDirectory); |
827 | nameSpace = name; |
828 | @@ -970,31 +979,52 @@ |
829 | return; |
830 | } |
831 | |
832 | + QByteArray headerFilename(nameSpace + ".h"); |
833 | + headerFilename.replace("::", "_"); |
834 | + headerFilename = headerFilename.toLower(); |
835 | + QFile headerFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(headerFilename)); |
836 | + |
837 | + QByteArray cppFilename(nameSpace + ".cpp"); |
838 | + cppFilename.replace("::", "_"); |
839 | + cppFilename = cppFilename.toLower(); |
840 | + QFile cppFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(cppFilename)); |
841 | + |
842 | + m_generatedFiles << headerFile.fileName() << cppFile.fileName(); |
843 | + |
844 | + if (mode == GenerateCode) { |
845 | + generateCode(name, headerFile, cppFile); |
846 | + } |
847 | + |
848 | + for (int classId = 0; classId < ns->classNames.size(); ++classId) { |
849 | + generateClass(ns->classNames[classId], classId, mode); |
850 | + } |
851 | + |
852 | + if (mode == GenerateFileList ) { |
853 | + QFile f; |
854 | + f.open(stdout, QIODevice::WriteOnly); |
855 | + QTextStream stream(&f); |
856 | + stream << m_generatedFiles.join("\n") << "\n"; |
857 | + f.close(); |
858 | + } |
859 | +} |
860 | + |
861 | +void CppGenerator::generateCode(const QByteArray& name, QFile& headerFile, QFile& cppFile) |
862 | +{ |
863 | const QMetaObject *meta = Smoke::GObjectNamespace::findMetaObject(nameSpace); |
864 | if (meta == 0) { |
865 | qWarning() << Q_FUNC_INFO << "QMetaObject not found:" << nameSpace; |
866 | return; |
867 | } |
868 | |
869 | - QByteArray headerFilename(nameSpace + ".h"); |
870 | - headerFilename.replace("::", "_"); |
871 | - headerFilename = headerFilename.toLower(); |
872 | - QFile headerFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(headerFilename)); |
873 | - |
874 | if (!headerFile.open(QIODevice::WriteOnly | QIODevice::Text)) { |
875 | - qWarning() << Q_FUNC_INFO << "File open failed:" << headerFilename; |
876 | + qWarning() << Q_FUNC_INFO << "File open failed:" << headerFile.fileName(); |
877 | return; |
878 | } |
879 | |
880 | m_header = new QTextStream(&headerFile); |
881 | |
882 | - QByteArray cppFilename(nameSpace + ".cpp"); |
883 | - cppFilename.replace("::", "_"); |
884 | - cppFilename = cppFilename.toLower(); |
885 | - QFile cppFile(m_directory.absolutePath() + QDir::separator() + QString::fromUtf8(cppFilename)); |
886 | - |
887 | if (!cppFile.open(QIODevice::WriteOnly | QIODevice::Text)) { |
888 | - qWarning() << Q_FUNC_INFO << "File open failed:" << cppFilename; |
889 | + qWarning() << Q_FUNC_INFO << "File open failed:" << cppFile.fileName(); |
890 | return; |
891 | } |
892 | |
893 | @@ -1018,7 +1048,7 @@ |
894 | header() << "#include \"" << superclassHeader << "\"" << endl << endl; |
895 | } |
896 | |
897 | - cpp() << "#include \"" << headerFilename << "\"" << endl << endl; |
898 | + cpp() << "#include \"" << QFileInfo(headerFile).fileName() << "\"" << endl << endl; |
899 | |
900 | generateForwardDeclarations(); |
901 | |
902 | @@ -1180,10 +1210,6 @@ |
903 | |
904 | headerFile.close(); |
905 | cppFile.close(); |
906 | - |
907 | - for (int classId = 0; classId < ns->classNames.size(); ++classId) { |
908 | - generateClass(ns->classNames[classId], classId); |
909 | - } |
910 | } |
911 | |
912 | } |
913 | |
914 | === modified file 'tools/gsmokegen/cppgenerator.h' |
915 | --- tools/gsmokegen/cppgenerator.h 2011-08-15 14:24:53 +0000 |
916 | +++ tools/gsmokegen/cppgenerator.h 2011-09-25 21:38:17 +0000 |
917 | @@ -34,6 +34,11 @@ |
918 | |
919 | class CppGenerator { |
920 | public: |
921 | + enum GenerationMode { |
922 | + GenerateCode, |
923 | + GenerateFileList |
924 | + }; |
925 | + |
926 | CppGenerator(const QList<QRegExp>& excludeSignatures = QList<QRegExp>()); |
927 | QTextStream &header() { return *m_header; } |
928 | QTextStream &cpp() { return *m_cpp; } |
929 | @@ -54,8 +59,11 @@ |
930 | void generateStructs(); |
931 | QByteArray generateMethodSignature(GIFunctionInfo * function, QByteArray& signature); |
932 | void generateInterface(GIInterfaceInfo* interface); |
933 | - void generateClass(const QByteArray& classPath, int classId); |
934 | - void generate(const QByteArray& nameSpace, const QString &outputDirectory = QString()); |
935 | + void generateClass(const QByteArray& classPath, int classId, GenerationMode mode = GenerateCode); |
936 | + void generateClassCode(const QByteArray& classPath, int classId, QFile& headerFile, QFile& cppFile); |
937 | + void generate(const QByteArray& nameSpace, const QString &outputDirectory = QString(), GenerationMode mode = GenerateCode); |
938 | + void generateCode(const QByteArray& name, QFile& headerFile, QFile& cppFile); |
939 | + |
940 | private: |
941 | QByteArray nameSpace; |
942 | GObjectNamespace *ns; |
943 | @@ -63,6 +71,7 @@ |
944 | QTextStream *m_cpp; |
945 | QDir m_directory; |
946 | QList<QRegExp> m_excludeSignatures; |
947 | + QStringList m_generatedFiles; |
948 | }; |
949 | |
950 | } |
951 | |
952 | === modified file 'tools/gsmokegen/main.cpp' |
953 | --- tools/gsmokegen/main.cpp 2011-08-15 12:54:01 +0000 |
954 | +++ tools/gsmokegen/main.cpp 2011-09-25 21:38:17 +0000 |
955 | @@ -25,24 +25,30 @@ |
956 | static QStringList modules; |
957 | |
958 | |
959 | -#define PRINT_USAGE() \ |
960 | - qDebug() << "Usage:" << argv[0] << "[-o <output directory>] [-e <exclude file>] module.." |
961 | +void print_usage(const char *programName) |
962 | +{ |
963 | + qDebug() << "Usage:" << programName << |
964 | + "[-o <output directory>] [-e <exclude file>] [-l] module.." << "\n\n" << |
965 | + "If -l or --list-files is passed, a list of the files generated will be \n" |
966 | + "printed to stdout without actually generating the files."; |
967 | +} |
968 | |
969 | int main(int argc, char** argv) |
970 | { |
971 | QCoreApplication app(argc, argv); |
972 | QStringList arguments = app.arguments(); |
973 | QList<QRegExp> excludeSignatures; |
974 | + Smoke::CppGenerator::GenerationMode generationMode = Smoke::CppGenerator::GenerateCode; |
975 | |
976 | if (argc == 1) { |
977 | - PRINT_USAGE(); |
978 | + print_usage(argv[0]); |
979 | return 0; |
980 | } |
981 | |
982 | int i = 1; |
983 | while (i < arguments.length()) { |
984 | if (arguments[i] == QLatin1String("-h") || arguments[i] == QLatin1String("--help")) { |
985 | - PRINT_USAGE(); |
986 | + print_usage(argv[0]); |
987 | return 0; |
988 | } else if (arguments[i] == QLatin1String("-o") || arguments[i] == QLatin1String("--output")) { |
989 | i++; |
990 | @@ -50,6 +56,9 @@ |
991 | outputDirectory = arguments[i].toUtf8(); |
992 | } |
993 | i++; |
994 | + } else if (arguments[i] == QLatin1String("-l") || arguments[i] == QLatin1String("--list-files")) { |
995 | + generationMode = Smoke::CppGenerator::GenerateFileList; |
996 | + i++; |
997 | } else if (arguments[i] == QLatin1String("-e") || arguments[i] == QLatin1String("--excludes")) { |
998 | i++; |
999 | if (i < arguments.length()) { |
1000 | @@ -78,7 +87,7 @@ |
1001 | |
1002 | foreach (QString module, modules) { |
1003 | Smoke::GObjectNamespace *ns = new Smoke::GObjectNamespace(module.toLatin1()); |
1004 | - generator.generate(module.toLatin1(), outputDirectory); |
1005 | + generator.generate(module.toLatin1(), outputDirectory, generationMode); |
1006 | } |
1007 | |
1008 | return 0; |
Pretty clear improvement to current situation, so I merged it.