1 <!--
2 * Inkscape build file.
3 *
4 * See buildtool.cpp for use.
5 *
6 * Authors:
7 * Bob Jamison
8 * Others
9 *
10 * Copyright (C) 2006-2008 Inkscape.org
11 *
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public
14 * License as published by the Free Software Foundation; either
15 * version 2.1 of the License, or (at your option) any later version.
16 *
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
21 *
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with this library; if not, write to the Free Software
24 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 -->
29 <!--
30 ########################################################################
31 ## P R O J E C T : I N K S C A P E
32 ########################################################################
33 -->
34 <project name="Inkscape" default="dist" basedir=".">
35 <description>
36 Build file for the Inkscape SVG editor. This version
37 is configured for Unix/Linux, but hopefully we can merge
38 in the future.
39 </description>
41 <!-- set global properties for this build -->
42 <property name="version" value="0.46+devel"/>
43 <property name="src" location="src"/>
44 <property name="lib" location="lib"/>
45 <property name="build" location="build"/>
46 <property name="dist" location="inkscape"/>
48 <!-- Use these settings for Unix -->
49 <!-- -->
50 <property name="arch" value=""/>
51 <property name="archutil" value=""/>
52 <property name="devlibs" location="/usr"/>
53 <property name="datadir" location="${dist}/share"/>
55 <!-- -->
57 <!-- Use these settings for the MinGW native compiler -->
58 <!--
59 <property name="arch" value="mingw32-"/>
60 <property name="archutil" value=""/>
61 <property name="devlibs" location="c:/devlibs"/>
62 -->
64 <!-- Use these settings for the MinGW cross compiler -->
65 <!--
66 <property name="arch" value="i686-pc-mingw32-"/>
67 <property name="archutil" value="${arch}"/>
68 <property name="gtk" location="/target"/>
69 -->
71 <!-- Extra properties -->
72 <property name="refresh" value="false"/>
74 <!--
75 This is for package-config. With these two settings, pkg-config
76 queries can be as simple as ${pcc.packageName} for cflags, and
77 ${pcl.packageName} for libs. Dependencies are calculated automatically.
78 -->
79 <property name="pkg-config-path" location="${devlibs}/lib/pkgconfig"/>
80 <property name="pkg-config-prefix" location="${devlibs}"/>
83 <!--
84 ########################################################################
85 ## T A R G E T : I N I T
86 ########################################################################
87 -->
88 <target name="init"
89 description=
90 "Do all preparatory tasks, like make directories and copy files">
93 <mkdir dir="${build}"/>
94 <mkdir dir="${build}/java"/>
95 <mkdir dir="${build}/java/classes"/>
96 <mkdir dir="${build}/java/lib"/>
98 <mkdir dir="${build}"/>
99 <mkdir dir="${dist}"/>
100 <copy file="${src}/helper/sp-marshal.h.mingw"
101 tofile="${src}/helper/sp-marshal.h"/>
102 <copy file="${src}/helper/sp-marshal.cpp.mingw"
103 tofile="${src}/helper/sp-marshal.cpp"/>
104 <makefile file="inkscape_version.h">
105 #define INKSCAPE_VERSION "${version}, revision ${svn.revision}"
106 </makefile>
107 <makefile file="config.h">
108 #ifndef _CONFIG_H_
109 #define _CONFIG_H_
111 /*######################################
112 ## This is for require-config.h, whose
113 ## purpose I cannot fathom.
114 ######################################*/
116 #define PACKAGE_TARNAME
118 /*######################################
119 #### RESOURCE DIRECTORIES
120 ######################################*/
122 #define INKSCAPE_DATADIR "."
123 #define PACKAGE_LOCALE_DIR "locale"
126 /*######################################
127 #### OTHER DEFINITIONS
128 ######################################*/
130 #define GETTEXT_PACKAGE "inkscape"
132 #define PACKAGE_STRING VERSION
134 #define HAVE_GETOPT_H 1
135 #define HAVE_STRING_H 1
136 #define HAVE_LIBINTL_H 1
137 #define HAVE_MALLOC_H 1
138 #define HAVE_STDLIB_H 1
139 #define HAVE_SYS_STAT_H 1
140 #define HAVE_INTTYPES_H 1
141 #define HAVE_ZLIB_H 1
143 #define ENABLE_LCMS 1
145 #define ENABLE_NLS 1
146 #define HAVE_BIND_TEXTDOMAIN_CODESET 1
148 /* make us relocatable */
149 #define BR_PTHREADS 1
150 #define ENABLE_BINRELOC 1
152 /* CairoPDF options */
153 #define HAVE_CAIRO_PDF 1
154 #define PANGO_ENABLE_ENGINE 1
155 #define RENDER_WITH_PANGO_CAIRO 1
157 #define HAVE_GTK_WINDOW_FULLSCREEN 1
159 /* internal interpreter */
160 #define WITH_PYTHON 1
162 /* shared whiteboard */
163 #define WITH_INKBOARD 1
164 #define HAVE_SSL 1
166 /* use poppler for pdf import? */
167 #define HAVE_POPPLER 1
168 #define HAVE_POPPLER_CAIRO 1
170 /* do we want bitmap manipulation? */
171 #define WITH_IMAGE_MAGICK 1
173 /* Allow reading WordPerfect? */
174 #define WITH_LIBWPG 1
176 #endif /* _CONFIG_H_ */
177 </makefile>
178 </target>
182 <!--
183 ########################################################################
184 ## T A R G E T : T O U C H A B O U T
185 ########################################################################
186 -->
187 <target name="touchabout"
188 description="update the modification time of aboutbox.cpp">
189 <!-- not good <touch file="${src}/ui/dialog/aboutbox.cpp"/> -->
190 <!-- better -->
191 <delete file="${build}/obj/ui/dialog/aboutbox.o"/>
192 <delete file="inkscape_version.h"/>
193 </target>
196 <!--
197 ########################################################################
198 ## T A R G E T : C O M P I L E
199 ########################################################################
200 -->
201 <target name="compile" depends="init"
202 description="compile the source to .o" >
204 <!-- Compile from source to build -->
205 <cc cc="${arch}gcc" cxx="${arch}g++"
206 destdir="${build}/obj"
207 continueOnError="false"
208 refreshCache="${refresh}">
209 <fileset dir="${src}">
210 <!-- THINGS TO EXCLUDE -->
211 <exclude name="2geom/chebyshev.cpp"/>
212 <exclude name="ast/.*"/>
213 <exclude name="bonobo/.*"/>
214 <exclude name="deptool.cpp"/>
215 <exclude name="test-all.cpp"/>
216 <exclude name="display/testnr.cpp"/>
217 <exclude name="display/bezier-utils-test.cpp"/>
218 <exclude name="dom/work/.*"/>
219 <exclude name="dom/odf/SvgOdg.cpp"/>
220 <exclude name="extension/api.cpp"/>
221 <exclude name="extension/dxf2svg/.*"/>
222 <exclude name="extension/implementation/plugin.cpp"/>
223 <exclude name="extension/script/bindtest.cpp"/>
224 <exclude name="extension/script/cpptest.cpp"/>
225 <exclude name="extension/plugin/.*"/>
226 <exclude name="extract-uri-test.cpp"/>
227 <exclude name="helper/units-test.cpp"/>
228 <!-- exclude name="inkview.cpp"/-->
229 <exclude name="libnr/test-nr.cpp"/>
230 <exclude name="libnr/test-nr-main.cpp"/>
231 <exclude name="libnr/testnr.cpp"/>
232 <exclude name="libnr/in-svg-plane-test.cpp"/>
233 <exclude name="libnr/nr-compose-reference.cpp"/>
234 <exclude name="libnr/nr-compose-test.cpp"/>
235 <exclude name="libnr/nr-matrix-test.cpp"/>
236 <exclude name="libnr/nr-point-fns-test.cpp"/>
237 <exclude name="libnr/nr-rotate-fns-test.cpp"/>
238 <exclude name="libnr/nr-rotate-test.cpp"/>
239 <exclude name="libnr/nr-scale-test.cpp"/>
240 <exclude name="libnr/nr-translate-test.cpp"/>
241 <exclude name="libnr/nr-types-test.cpp"/>
242 <exclude name="livarot/Path-test.cpp"/>
243 <exclude name="mod360-test.cpp"/>
244 <exclude name="trace/potrace/potest.cpp"/>
245 <exclude name="round-test.cpp"/>
246 <exclude name="sp-gradient-test.cpp"/>
247 <exclude name="svg/ftos.cpp"/>
248 <exclude name="svg/test-svg.cpp"/>
249 <exclude name="svg/test-svg-main.cpp"/>
250 <exclude name="utest/.*"/>
251 <exclude name="widgets/test-widgets.cpp"/>
252 <exclude name="xml/quote-test.cpp"/>
253 <exclude name="xml/repr-action-test.cpp"/>
254 <exclude name="xml/test-xml.cpp"/>
255 <exclude name="xml/test-xml-main.cpp"/>
256 <exclude name="io/streamtest.cpp"/>
257 <!--JABBER-->
258 <exclude name="pedro/pedrogui.cpp"/>
259 <exclude name="pedro/pedrogui.h"/>
260 <exclude name="pedro/work/.*"/>
261 <!--WHITEBOARD-->
262 <exclude name="ui/dialog/session-player.cpp"/>
263 <exclude name="ui/dialog/whiteboard-connect.cpp"/>
264 <exclude name="ui/dialog/whiteboard-sharewithchat.cpp"/>
265 <exclude name="ui/dialog/whiteboard-sharewithuser.cpp"/>
266 <exclude name="dialogs/whiteboard-connect-dialog.cpp"/>
267 <exclude name="dialogs/whiteboard-common-dialog.cpp"/>
268 <exclude name="dialogs/whiteboard-sharewithchat-dialog.cpp"/>
269 <exclude name="dialogs/whiteboard-sharewithuser-dialog.cpp"/>
270 <exclude name="jabber_whiteboard/node-tracker.cpp"/>
271 <exclude name="jabber_whiteboard/node-utilities.cpp"/>
272 <!--OVERLAP-->
273 <exclude name="removeoverlap/placement_SolveVPSC.cpp"/>
274 <exclude name="removeoverlap/placement_SolveVPSC.h"/>
275 <exclude name="removeoverlap/test.cpp"/>
276 <exclude name="removeoverlap/remove_rectangle_overlap-test.cpp"/>
277 <exclude name="removeoverlap/remove_rectangle_overlap-test.h"/>
278 <!--WIN32 -->
279 <exclude name="registrytool.cpp"/>
280 <exclude name="extension/internal/win32.cpp"/>
281 <exclude name="libgdl/gdl-win32.c"/>
282 </fileset>
283 <excludeinc dir="${src}">
284 <file name="extension/param"/>
285 </excludeinc>
286 <flags>
287 -Wall -Wformat -Werror=format-security -W -Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch
288 -O2
289 </flags>
290 <defines>
291 -DVERSION=\"${version}\"
292 -DHAVE_CONFIG_H
293 -D_INTL_REDIRECT_INLINE
294 -DHAVE_SSL
295 -DRELAYTOOL_SSL="static const int libssl_is_present=1; static int __attribute__((unused)) libssl_symbol_is_present(char *s){ return 1; }" <!-- inkboard -->
296 </defines>
297 <includes>
298 -I${devlibs}/include
299 <!-- GTK / GTKMM -->
300 ${pcc.gtkmm-2.4}
301 <!-- OTHER -->
302 ${pcc.libxslt}
303 ${pcc.freetype2}
304 ${pcc.cairo}
305 ${pcc.poppler}
306 -I${devlibs}/include/gc
307 ${pcc.libwpg-0.1} ${pcc.libwpg-stream-0.1}
308 <!-- PYTHON -->
309 -I${devlibs}/python/include
310 <!-- JAVA -->
311 -I${src}/bind/javainc -I${src}/bind/javainc/linux
312 </includes>
313 </cc>
314 </target>
317 <!--
318 ########################################################################
319 ## T A R G E T : L I B
320 ########################################################################
321 -->
322 <target name="lib" depends="compile"
323 description="create a static library">
324 <staticlib command="${archutil}ar crsv"
325 file="${build}/libinkscape.a">
326 <fileset dir="${build}/obj">
327 <exclude name="main.o"/>
328 <exclude name="winmain.o"/>
329 <exclude name="inkview.o"/>
330 </fileset>
331 </staticlib>
332 </target>
336 <!--
337 ########################################################################
338 ## T A R G E T : I 1 8 N
339 ########################################################################
340 -->
341 <target name="i18n" depends="compile"
342 description="compile gettext .po files to .mo">
344 <msgfmt todir="${build}/locale" owndir="true"
345 out="LC_MESSAGES/inkscape.mo">
346 <fileset dir="po">
347 </fileset>
348 </msgfmt>
349 </target>
355 <!--
356 ########################################################################
357 ## T A R G E T : L I N K
358 ########################################################################
359 -->
360 <target name="link" depends="lib"
361 description="link objects and library to create executable">
363 <link command="${arch}g++" out="${build}/inkscape"
364 strip="true" symfile="${build}/inkscape.dbg"
365 stripcommand="${archutil}strip"
366 objcopycommand="${archutil}objcopy">
367 <flags>
368 </flags>
369 <fileset dir="${build}">
370 <include name="obj/main.o"/>
371 <include name="libinkscape.a"/>
372 </fileset>
373 <libs>
374 -L${devlibs}/lib
375 ${pcl.poppler} ${pcl.poppler-cairo} ${pcl.poppler-glib}
376 ${pcl.gtkmm-2.4}
377 ${pcl.cairo} ${pcl.cairomm-1.0}
378 ${pcl.gthread-2.0}
379 ${pcl.libxslt}
380 ${pcl.libwpg-0.1} ${pcl.libwpg-stream-0.1}
381 ${pcl.ImageMagick++}
382 ${pcl.fontconfig} ${pcl.freetype2}
383 ${pcl.lcms}
384 ${pcl.gsl}
385 -lssl -lcrypto
386 -lpng -ljpeg -ltiff -lpopt -lz
387 -lgc -lm
388 </libs>
389 </link>
390 </target>
396 <!--
397 ########################################################################
398 ## T A R G E T : L I N K I N K V I E W
399 ########################################################################
400 -->
401 <target name="linkinkview" depends="lib"
402 description="link objects and library to create Inkview executable">
404 <link command="${arch}g++" out="${build}/inkview"
405 strip="true" symfile="${build}/inkview.dbg"
406 stripcommand="${archutil}strip"
407 objcopycommand="${archutil}objcopy">
408 <flags>
409 </flags>
410 <fileset dir="${build}">
411 <include name="obj/inkview.o"/>
412 <include name="libinkscape.a"/>
413 </fileset>
414 <libs>
415 -L${devlibs}/lib
416 ${pcl.poppler}
417 ${pcl.gtkmm-2.4}
418 ${pcl.cairo} ${pcl.cairomm-1.0}
419 <!-- PERL -->
420 -L${devlibs}/perl/lib/CORE -lperl58
421 <!-- PYTHON -->
422 -L${devlibs}/python/libs -lpython25
423 -lxml2 -lxslt
424 -lwpg-0.1 -lwpg-stream-0.1
425 ${pcl.ImageMagick++}
426 ${pcl.fontconfig} ${pcl.freetype2}
427 ${pcl.lcms}
428 -lssl -lcrypto
429 -lpng -ljpeg -ltiff -lpopt -lz
430 -lgc
431 -lintl -liconv -lm
432 </libs>
433 </link>
434 </target>
438 <!--
439 ########################################################################
440 ## T A R G E T : D I S T
441 ########################################################################
442 -->
443 <target name="dist" depends="link,i18n"
444 description="generate the distribution directory with all needed files">
446 <!-- Create the distribution directory -->
447 <mkdir dir="${dist}/bin"/>
448 <mkdir dir="${dist}/lib"/>
450 <!-- Copy Inkscape files -->
451 <copy file="${build}/inkscape" todir="${dist}/bin"/>
452 <copy file="${build}/inkscape.dbg" todir="${dist}/bin"/>
453 <copy file="AUTHORS" todir="${dist}"/>
454 <copy file="COPYING" todir="${dist}"/>
455 <copy file="COPYING.LIB" todir="${dist}"/>
456 <copy file="NEWS" todir="${dist}"/>
457 <copy file="README" todir="${dist}"/>
458 <copy file="TRANSLATORS" todir="${dist}"/>
459 <copy todir="${datadir}/inkscape">
460 <fileset dir="share/clipart"> <exclude name=".*\.am"/> </fileset>
461 </copy>
462 <copy todir="${datadir}/inkscape">
463 <fileset dir="share/examples"> <exclude name=".*\.am"/> </fileset>
464 </copy>
465 <copy todir="${datadir}/inkscape">
466 <fileset dir="share/extensions"> <exclude name=".*\.am"/> </fileset>
467 </copy>
468 <copy todir="${datadir}/inkscape">
469 <fileset dir="share/fonts"> <exclude name=".*\.am"/> </fileset>
470 </copy>
471 <copy todir="${datadir}/inkscape">
472 <fileset dir="share/gradients"> <exclude name=".*\.am"/> </fileset>
473 </copy>
474 <copy todir="${datadir}/inkscape">
475 <fileset dir="share/icons"> <exclude name=".*\.am"/> </fileset>
476 </copy>
477 <copy todir="${datadir}/inkscape">
478 <fileset dir="share/keys"> <exclude name=".*\.am"/> </fileset>
479 </copy>
480 <copy todir="${datadir}/inkscape">
481 <fileset dir="share/markers"> <exclude name=".*\.am"/> </fileset>
482 </copy>
483 <copy todir="${datadir}/inkscape">
484 <fileset dir="share/palettes"> <exclude name=".*\.am"/> </fileset>
485 </copy>
486 <copy todir="${datadir}/inkscape">
487 <fileset dir="share/patterns"> <exclude name=".*\.am"/> </fileset>
488 </copy>
489 <copy todir="${datadir}/inkscape">
490 <fileset dir="share/screens"> <exclude name=".*\.am"/> </fileset>
491 </copy>
492 <copy todir="${datadir}/inkscape">
493 <fileset dir="share/templates"> <exclude name=".*\.am"/> </fileset>
494 </copy>
495 <copy todir="${datadir}/inkscape">
496 <fileset dir="share/tutorials"> <exclude name=".*\.am"/> </fileset>
497 </copy>
498 <copy todir="${datadir}/inkscape">
499 <fileset dir="share/ui"> <exclude name=".*\.am"/> </fileset>
500 </copy>
501 <copy todir="${datadir}">
502 <fileset dir="${build}/locale"> <exclude name=".*\.am"/> </fileset>
503 </copy>
505 <!-- Copy devlibs files -->
508 </target>
511 <!--
512 ########################################################################
513 ## T A R G E T : JAVAC
514 ########################################################################
515 -->
516 <target name="javac" depends="init"
517 description="compile java binding classes">
518 <javac srcdir="${src}/bind/java" destdir="${build}/java/classes"/>
519 </target>
522 <!--
523 ########################################################################
524 ## T A R G E T : JAR
525 ########################################################################
526 -->
527 <target name="jar" depends="javac"
528 description="pack java classes and resources into a jar file">
529 <copy todir="${build}/java/classes"> <fileset dir="bind/data"/></copy>
530 <jar basedir="${build}/java/classes" destfile="${build}/java/lib/inkscape.jar"/>
531 </target>
533 <!--
534 ########################################################################
535 ## T A R G E T : BINDDIST
536 ########################################################################
537 -->
538 <target name="binddist" depends="jar"
539 description="pack java classes and resources into a jar file">
540 <copy todir="${datadir}/inkscape/bind"> <fileset dir="bind/java"/> </copy>
541 <copy todir="${datadir}/inkscape/bind/java"> <fileset dir="${build}/java/lib"/> </copy>
543 </target>
545 <!--
546 ########################################################################
547 ## T A R G E T : BINDCLEAN
548 ########################################################################
549 -->
550 <target name="bindclean" depends=""
551 description="clean up java binding classes">
552 <delete dir="${build}/java"/>
553 </target>
558 <!--
559 ########################################################################
560 ## T A R G E T : D I S T - A L L
561 ########################################################################
562 -->
563 <target name="dist-all" depends="dist"
564 description="generate the distribution, along with inkview" >
566 <copy file="${build}/inkview" todir="${dist}/bin"/>
567 <copy file="${build}/inkview.dbg" todir="${dist}/bin"/>
569 </target>
575 <!--
576 ########################################################################
577 ## T A R G E T : C L E A N
578 ########################################################################
579 -->
580 <target name="clean" depends="bindclean"
581 description="clean up. deleting build and distro dirs" >
583 <delete dir="${build}"/>
584 <delete dir="${dist}"/>
585 <delete file="build.dep"/>
586 <delete file="config.h"/>
587 <delete file="inkscape_version.h"/>
589 </target>
593 </project>
594 <!--
595 ########################################################################
596 ## E N D
597 ########################################################################
598 -->