Code

process source subdirectories with INCLUDE() instead of ADD_DIRECTORIES()
[inkscape.git] / src / CMakeLists.txt
1 SET(INKSCAPE_SRC)\r
2 \r
3 # A macro to replace slashes and spaces in a string with underscores\r
4 MACRO(SANITIZE_PATH _string_var)\r
5   STRING(REGEX REPLACE "[\\/ ]+" "_" ${_string_var} ${${_string_var}})\r
6 ENDMACRO(SANITIZE_PATH _string_var)\r
7 \r
8 # A macro to prepend a given string onto the beginning of each string in a list\r
9 MACRO(PREPEND _list _str)\r
10   SET(_temp_list ${${_list}})\r
11   SET(${_list})\r
12   FOREACH(x ${_temp_list})\r
13     SET(${_list} ${${_list}} ${_str}${x})\r
14   ENDFOREACH(x)\r
15 ENDMACRO(PREPEND _list _str)\r
16 \r
17 # All folder with CMakeLists.txt files (excluding internal libraries)\r
18 SET(srcfolders\r
19 algorithms\r
20 api\r
21 bind\r
22 debug\r
23 display\r
24 dom\r
25 dom/io\r
26 dom/odf\r
27 dom/util\r
28 dom/work\r
29 extension\r
30 extension/dxf2svg\r
31 extension/implementation\r
32 extension/internal\r
33 extension/param\r
34 graphlayout\r
35 helper\r
36 inkjar\r
37 io\r
38 jabber_whiteboard\r
39 jabber_whiteboard/dialog\r
40 live_effects\r
41 live_effects/parameter\r
42 pedro\r
43 removeoverlap\r
44 svg\r
45 trace\r
46 trace/potrace\r
47 traits\r
48 ui/cache\r
49 ui\r
50 ui/dialog\r
51 ui/view\r
52 ui/widget\r
53 utest\r
54 util\r
55 widgets\r
56 xml\r
57 )\r
58 \r
59 # 1) include each list file\r
60 # 2) grab the variable inside \r
61 # 3) prepend the full relative path to each file in list\r
62 # 4) append the list to INKSCAPE_SRC\r
63 FOREACH(dirlist ${srcfolders})\r
64   SET(_temp_dirlist "${dirlist}")\r
65   MESSAGE(STATUS "Processing ${CMAKE_CURRENT_SOURCE_DIR}/${dirlist}/CMakeLists.txt")\r
66   INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/${dirlist}/CMakeLists.txt)\r
67   SANITIZE_PATH(dirlist)\r
68   PREPEND(${dirlist}_SRC "${_temp_dirlist}/")\r
69   SET(INKSCAPE_SRC ${INKSCAPE_SRC} ${${dirlist}_SRC})\r
70 ENDFOREACH(dirlist)\r
71 \r
72 \r
73 # All directories containing lists files that describe building internal libraries\r
74 SET(libfolders\r
75 application\r
76 dialogs\r
77 libavoid\r
78 libcola\r
79 libcroco\r
80 libgdl\r
81 libnr\r
82 libnrtype\r
83 libvpsc\r
84 )\r
85 \r
86 FOREACH(dirlist ${libfolders})\r
87   ADD_SUBDIRECTORY(${dirlist})\r
88 ENDFOREACH(dirlist)\r
89 \r
90 IF(WIN32)\r
91 SET(ONLY_WIN\r
92 registrytool.cpp\r
93 deptool.cpp)\r
94 ELSEIF(WIN32)\r
95 SET(ONLY_WIN)\r
96 ENDIF(WIN32)\r
97 \r
98 SET(INKSCAPE_SRC\r
99 ${INKSCAPE_SRC}\r
100 arc-context.cpp\r
101 attributes.cpp\r
102 axis-manip.cpp\r
103 box3d-context.cpp\r
104 box3d.cpp\r
105 box3d-side.cpp\r
106 color.cpp\r
107 color-profile.cpp\r
108 composite-undo-stack-observer.cpp\r
109 conditions.cpp\r
110 conn-avoid-ref.cpp\r
111 connector-context.cpp\r
112 console-output-undo-observer.cpp\r
113 context-fns.cpp\r
114 desktop-affine.cpp\r
115 desktop.cpp\r
116 desktop-events.cpp\r
117 desktop-handles.cpp\r
118 desktop-style.cpp\r
119 dir-util.cpp\r
120 document.cpp\r
121 document-subset.cpp\r
122 document-undo.cpp\r
123 doxygen-main.cpp\r
124 draw-anchor.cpp\r
125 draw-context.cpp\r
126 dropper-context.cpp\r
127 dyna-draw-context.cpp\r
128 ege-adjustment-action.cpp\r
129 ege-color-prof-tracker.cpp\r
130 ege-output-action.cpp\r
131 ege-select-one-action.cpp\r
132 event-context.cpp\r
133 event-log.cpp\r
134 extract-uri.cpp\r
135 file.cpp\r
136 filter-chemistry.cpp\r
137 filter-enums.cpp\r
138 fixes.cpp\r
139 flood-context.cpp\r
140 fontsize-expansion.cpp\r
141 gc-anchored.cpp\r
142 gc.cpp\r
143 gc-finalized.cpp\r
144 gradient-chemistry.cpp\r
145 gradient-context.cpp\r
146 gradient-drag.cpp\r
147 guide-snapper.cpp\r
148 help.cpp\r
149 ink-action.cpp\r
150 inkscape.cpp\r
151 inkscape-stock.cpp\r
152 ##inkview is another executable file\r
153 ##needs to be separated as a second target\r
154 #inkview.cpp\r
155 interface.cpp\r
156 knot.cpp\r
157 knotholder.cpp\r
158 layer-fns.cpp\r
159 layer-manager.cpp\r
160 line-geometry.cpp\r
161 line-snapper.cpp\r
162 main-cmdlineact.cpp\r
163 main.cpp\r
164 marker.cpp\r
165 media.cpp\r
166 message-context.cpp\r
167 message-stack.cpp\r
168 mod360.cpp\r
169 node-context.cpp\r
170 nodepath.cpp\r
171 object-edit.cpp\r
172 object-hierarchy.cpp\r
173 object-snapper.cpp\r
174 path-chemistry.cpp\r
175 pencil-context.cpp\r
176 pen-context.cpp\r
177 persp3d.cpp\r
178 persp3d-reference.cpp\r
179 perspective-line.cpp\r
180 preferences.cpp\r
181 prefix.cpp\r
182 prefs-utils.cpp\r
183 print.cpp\r
184 profile-manager.cpp\r
185 proj_pt.cpp\r
186 rect-context.cpp\r
187 rubberband.cpp\r
188 satisfied-guide-cns.cpp\r
189 selcue.cpp\r
190 select-context.cpp\r
191 selection-chemistry.cpp\r
192 selection.cpp\r
193 selection-describer.cpp\r
194 seltrans.cpp\r
195 seltrans-handles.cpp\r
196 shape-editor.cpp\r
197 shortcuts.cpp\r
198 snap.cpp\r
199 snapped-line.cpp\r
200 snapped-point.cpp\r
201 snapper.cpp\r
202 sp-anchor.cpp\r
203 sp-animation.cpp\r
204 sp-clippath.cpp\r
205 sp-conn-end.cpp\r
206 sp-conn-end-pair.cpp\r
207 sp-cursor.cpp\r
208 sp-defs.cpp\r
209 sp-ellipse.cpp\r
210 sp-feblend.cpp\r
211 sp-fecolormatrix.cpp\r
212 sp-fecomponenttransfer.cpp\r
213 sp-fecomposite.cpp\r
214 sp-feconvolvematrix.cpp\r
215 sp-fediffuselighting.cpp\r
216 sp-fedisplacementmap.cpp\r
217 sp-fedistantlight.cpp\r
218 sp-feflood.cpp\r
219 sp-feimage.cpp\r
220 sp-femerge.cpp\r
221 sp-femergenode.cpp\r
222 sp-femorphology.cpp\r
223 sp-feoffset.cpp\r
224 sp-fepointlight.cpp\r
225 sp-fespecularlighting.cpp\r
226 sp-fespotlight.cpp\r
227 sp-fetile.cpp\r
228 sp-feturbulence.cpp\r
229 sp-filter.cpp\r
230 sp-filter-primitive.cpp\r
231 sp-filter-reference.cpp\r
232 sp-flowdiv.cpp\r
233 sp-flowregion.cpp\r
234 sp-flowtext.cpp\r
235 sp-gaussian-blur.cpp\r
236 sp-gradient.cpp\r
237 sp-gradient-reference.cpp\r
238 sp-guide.cpp\r
239 sp-image.cpp\r
240 spiral-context.cpp\r
241 sp-item.cpp\r
242 sp-item-group.cpp\r
243 sp-item-notify-moveto.cpp\r
244 sp-item-rm-unsatisfied-cns.cpp\r
245 sp-item-transform.cpp\r
246 sp-item-update-cns.cpp\r
247 sp-line.cpp\r
248 splivarot.cpp\r
249 sp-mask.cpp\r
250 sp-metadata.cpp\r
251 sp-metrics.cpp\r
252 sp-namedview.cpp\r
253 sp-object.cpp\r
254 sp-object-group.cpp\r
255 sp-object-repr.cpp\r
256 sp-offset.cpp\r
257 sp-paint-server.cpp\r
258 sp-path.cpp\r
259 sp-pattern.cpp\r
260 sp-polygon.cpp\r
261 sp-polyline.cpp\r
262 sp-rect.cpp\r
263 sp-root.cpp\r
264 sp-shape.cpp\r
265 sp-skeleton.cpp\r
266 sp-spiral.cpp\r
267 sp-star.cpp\r
268 sp-string.cpp\r
269 sp-style-elem.cpp\r
270 sp-switch.cpp\r
271 sp-symbol.cpp\r
272 sp-text.cpp\r
273 sp-tref.cpp\r
274 sp-tref-reference.cpp\r
275 sp-tspan.cpp\r
276 sp-use.cpp\r
277 sp-use-reference.cpp\r
278 star-context.cpp\r
279 streams-gzip.cpp\r
280 streams-handles.cpp\r
281 streams-jar.cpp\r
282 streams-zlib.cpp\r
283 style.cpp\r
284 #style-test.cpp\r
285 svg-view.cpp\r
286 svg-view-widget.cpp\r
287 text-chemistry.cpp\r
288 text-context.cpp\r
289 text-editing.cpp\r
290 tools-switch.cpp\r
291 transf_mat_3x4.cpp\r
292 tweak-context.cpp\r
293 uri.cpp\r
294 uri-references.cpp\r
295 vanishing-point.cpp\r
296 verbs.cpp\r
297 version.cpp\r
298 winmain.cpp\r
299 zoom-context.cpp\r
300 ${ONLY_WIN}\r
301 )\r
302 \r
303 # make executable for INKSCAPE\r
304 ADD_EXECUTABLE(inkscape ${INKSCAPE_SRC})\r
305 TARGET_LINK_LIBRARIES(inkscape\r
306         "${INKSCAPE_LINK_FLAGS}" avoid cola croco gdl nr nrtype vpsc\r
307 )\r
308 #INSTALL(TARGETS INKSCAPE\r
309 #  RUNTIME DESTINATION bin\r
310 #  LIBRARY DESTINATION lib\r
311 #  ARCHIVE DESTINATION lib\r
312 #)\r
313 \r
314 #FILE(GLOB files "${CMAKE_CURRENT_SOURCE_DIR}/*.h")\r
315 #INSTALL(FILES ${files} DESTINATION include/INKSCAPE/INKSCAPE)\r
316 \r
317 #CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/INKSCAPE.pc.in\r
318 #                ${CMAKE_BINARY_DIR}/INKSCAPE.pc @ONLY IMMEDIATE )\r
319 #INSTALL(FILES "${CMAKE_BINARY_DIR}/INKSCAPE.pc" DESTINATION lib/pkgconfig)\r