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}"
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 aboutdialog.cpp">
189 <!-- not good <touch file="${src}/ui/dialog/aboutdialog.cpp"/> -->
190 <!-- better -->
191 <delete file="${build}/obj/ui/dialog/aboutdialog.o"/>
192 </target>
195 <!--
196 ########################################################################
197 ## T A R G E T : C O M P I L E
198 ########################################################################
199 -->
200 <target name="compile" depends="init"
201 description="compile the source to .o" >
203 <!-- Compile from source to build -->
204 <cc cc="${arch}gcc" cxx="${arch}g++"
205 destdir="${build}/obj"
206 continueOnError="false"
207 refreshCache="${refresh}">
208 <fileset dir="${src}">
209 <!-- THINGS TO EXCLUDE -->
210 <exclude name="2geom/chebyshev.cpp"/>
211 <exclude name="ast/.*"/>
212 <exclude name="bonobo/.*"/>
213 <exclude name="deptool.cpp"/>
214 <exclude name="test-all.cpp"/>
215 <exclude name="display/testnr.cpp"/>
216 <exclude name="display/bezier-utils-test.cpp"/>
217 <exclude name="dom/work/.*"/>
218 <exclude name="dom/odf/SvgOdg.cpp"/>
219 <exclude name="extension/api.cpp"/>
220 <exclude name="extension/dxf2svg/.*"/>
221 <exclude name="extension/implementation/plugin.cpp"/>
222 <exclude name="extension/script/bindtest.cpp"/>
223 <exclude name="extension/script/cpptest.cpp"/>
224 <exclude name="extension/plugin/.*"/>
225 <exclude name="extract-uri-test.cpp"/>
226 <exclude name="helper/units-test.cpp"/>
227 <!-- exclude name="inkview.cpp"/-->
228 <exclude name="libnr/test-nr.cpp"/>
229 <exclude name="libnr/test-nr-main.cpp"/>
230 <exclude name="libnr/testnr.cpp"/>
231 <exclude name="libnr/in-svg-plane-test.cpp"/>
232 <exclude name="libnr/nr-compose-reference.cpp"/>
233 <exclude name="libnr/nr-compose-test.cpp"/>
234 <exclude name="libnr/nr-matrix-test.cpp"/>
235 <exclude name="libnr/nr-point-fns-test.cpp"/>
236 <exclude name="libnr/nr-rotate-fns-test.cpp"/>
237 <exclude name="libnr/nr-rotate-test.cpp"/>
238 <exclude name="libnr/nr-scale-test.cpp"/>
239 <exclude name="libnr/nr-translate-test.cpp"/>
240 <exclude name="libnr/nr-types-test.cpp"/>
241 <exclude name="livarot/Path-test.cpp"/>
242 <exclude name="mod360-test.cpp"/>
243 <exclude name="trace/potrace/potest.cpp"/>
244 <exclude name="round-test.cpp"/>
245 <exclude name="sp-gradient-test.cpp"/>
246 <exclude name="svg/ftos.cpp"/>
247 <exclude name="svg/test-svg.cpp"/>
248 <exclude name="svg/test-svg-main.cpp"/>
249 <exclude name="utest/.*"/>
250 <exclude name="widgets/test-widgets.cpp"/>
251 <exclude name="xml/quote-test.cpp"/>
252 <exclude name="xml/repr-action-test.cpp"/>
253 <exclude name="xml/test-xml.cpp"/>
254 <exclude name="xml/test-xml-main.cpp"/>
255 <exclude name="io/streamtest.cpp"/>
256 <!--JABBER-->
257 <exclude name="pedro/pedrogui.cpp"/>
258 <exclude name="pedro/pedrogui.h"/>
259 <exclude name="pedro/work/.*"/>
260 <!--WHITEBOARD-->
261 <exclude name="ui/dialog/session-player.cpp"/>
262 <exclude name="ui/dialog/whiteboard-connect.cpp"/>
263 <exclude name="ui/dialog/whiteboard-sharewithchat.cpp"/>
264 <exclude name="ui/dialog/whiteboard-sharewithuser.cpp"/>
265 <exclude name="dialogs/whiteboard-connect-dialog.cpp"/>
266 <exclude name="dialogs/whiteboard-common-dialog.cpp"/>
267 <exclude name="dialogs/whiteboard-sharewithchat-dialog.cpp"/>
268 <exclude name="dialogs/whiteboard-sharewithuser-dialog.cpp"/>
269 <exclude name="jabber_whiteboard/node-tracker.cpp"/>
270 <exclude name="jabber_whiteboard/node-utilities.cpp"/>
271 <!--OVERLAP-->
272 <exclude name="removeoverlap/placement_SolveVPSC.cpp"/>
273 <exclude name="removeoverlap/placement_SolveVPSC.h"/>
274 <exclude name="removeoverlap/test.cpp"/>
275 <exclude name="removeoverlap/remove_rectangle_overlap-test.cpp"/>
276 <exclude name="removeoverlap/remove_rectangle_overlap-test.h"/>
277 <!--WIN32 -->
278 <exclude name="registrytool.cpp"/>
279 <exclude name="extension/internal/win32.cpp"/>
280 <exclude name="libgdl/gdl-win32.c"/>
281 </fileset>
282 <excludeinc dir="${src}">
283 <file name="extension/param"/>
284 </excludeinc>
285 <flags>
286 -Wall -Wformat -Werror=format-security -W -Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch
287 -O2
288 </flags>
289 <defines>
290 -DVERSION=\"${version}\"
291 -DHAVE_CONFIG_H
292 -D_INTL_REDIRECT_INLINE
293 -DHAVE_SSL
294 -DRELAYTOOL_SSL="static const int libssl_is_present=1; static int __attribute__((unused)) libssl_symbol_is_present(char *s){ return 1; }" <!-- inkboard -->
295 </defines>
296 <includes>
297 -I${devlibs}/include
298 <!-- GTK / GTKMM -->
299 ${pcc.gtkmm-2.4}
300 <!-- OTHER -->
301 ${pcc.libxslt}
302 ${pcc.freetype2}
303 ${pcc.cairo}
304 ${pcc.poppler}
305 -I${devlibs}/include/gc
306 ${pcc.libwpg-0.1} ${pcc.libwpg-stream-0.1}
307 <!-- PYTHON -->
308 -I${devlibs}/python/include
309 <!-- JAVA -->
310 -I${src}/bind/javainc -I${src}/bind/javainc/linux
311 </includes>
312 </cc>
313 </target>
316 <!--
317 ########################################################################
318 ## T A R G E T : L I B
319 ########################################################################
320 -->
321 <target name="lib" depends="compile"
322 description="create a static library">
323 <staticlib command="${archutil}ar crsv"
324 file="${build}/libinkscape.a">
325 <fileset dir="${build}/obj">
326 <exclude name="main.o"/>
327 <exclude name="winmain.o"/>
328 <exclude name="inkview.o"/>
329 </fileset>
330 </staticlib>
331 </target>
335 <!--
336 ########################################################################
337 ## T A R G E T : I 1 8 N
338 ########################################################################
339 -->
340 <target name="i18n" depends="compile"
341 description="compile gettext .po files to .mo">
343 <msgfmt todir="${build}/locale" owndir="true"
344 out="LC_MESSAGES/inkscape.mo">
345 <fileset dir="po">
346 </fileset>
347 </msgfmt>
348 </target>
354 <!--
355 ########################################################################
356 ## T A R G E T : L I N K
357 ########################################################################
358 -->
359 <target name="link" depends="lib"
360 description="link objects and library to create executable">
362 <link command="${arch}g++" out="${build}/inkscape"
363 strip="true" symfile="${build}/inkscape.dbg"
364 stripcommand="${archutil}strip"
365 objcopycommand="${archutil}objcopy">
366 <flags>
367 </flags>
368 <fileset dir="${build}">
369 <include name="obj/main.o"/>
370 <include name="libinkscape.a"/>
371 </fileset>
372 <libs>
373 -L${devlibs}/lib
374 ${pcl.poppler} ${pcl.poppler-cairo} ${pcl.poppler-glib}
375 ${pcl.gtkmm-2.4}
376 ${pcl.cairo} ${pcl.cairomm-1.0}
377 ${pcl.gthread-2.0}
378 ${pcl.libxslt}
379 ${pcl.libwpg-0.1} ${pcl.libwpg-stream-0.1}
380 ${pcl.ImageMagick++}
381 ${pcl.fontconfig} ${pcl.freetype2}
382 ${pcl.lcms}
383 ${pcl.gsl}
384 -lssl -lcrypto
385 -lpng -ljpeg -ltiff -lpopt -lz
386 -lgc -lm
387 </libs>
388 </link>
389 </target>
395 <!--
396 ########################################################################
397 ## T A R G E T : L I N K I N K V I E W
398 ########################################################################
399 -->
400 <target name="linkinkview" depends="lib"
401 description="link objects and library to create Inkview executable">
403 <link command="${arch}g++" out="${build}/inkview"
404 strip="true" symfile="${build}/inkview.dbg"
405 stripcommand="${archutil}strip"
406 objcopycommand="${archutil}objcopy">
407 <flags>
408 </flags>
409 <fileset dir="${build}">
410 <include name="obj/inkview.o"/>
411 <include name="libinkscape.a"/>
412 </fileset>
413 <libs>
414 -L${devlibs}/lib
415 ${pcl.poppler}
416 ${pcl.gtkmm-2.4}
417 ${pcl.cairo} ${pcl.cairomm-1.0}
418 <!-- PERL -->
419 -L${devlibs}/perl/lib/CORE -lperl58
420 <!-- PYTHON -->
421 -L${devlibs}/python/libs -lpython25
422 -lxml2 -lxslt
423 -lwpg-0.1 -lwpg-stream-0.1
424 ${pcl.ImageMagick++}
425 ${pcl.fontconfig} ${pcl.freetype2}
426 ${pcl.lcms}
427 -lssl -lcrypto
428 -lpng -ljpeg -ltiff -lpopt -lz
429 -lgc
430 -lintl -liconv -lm
431 </libs>
432 </link>
433 </target>
437 <!--
438 ########################################################################
439 ## T A R G E T : D I S T
440 ########################################################################
441 -->
442 <target name="dist" depends="link,i18n"
443 description="generate the distribution directory with all needed files">
445 <!-- Create the distribution directory -->
446 <mkdir dir="${dist}/bin"/>
447 <mkdir dir="${dist}/lib"/>
449 <!-- Copy Inkscape files -->
450 <copy file="${build}/inkscape" todir="${dist}/bin"/>
451 <copy file="${build}/inkscape.dbg" todir="${dist}/bin"/>
452 <copy file="AUTHORS" todir="${dist}"/>
453 <copy file="COPYING" todir="${dist}"/>
454 <copy file="COPYING.LIB" todir="${dist}"/>
455 <copy file="NEWS" todir="${dist}"/>
456 <copy file="README" todir="${dist}"/>
457 <copy file="TRANSLATORS" todir="${dist}"/>
458 <copy todir="${datadir}/inkscape">
459 <fileset dir="share/clipart"> <exclude name=".*\.am"/> </fileset>
460 </copy>
461 <copy todir="${datadir}/inkscape">
462 <fileset dir="share/examples"> <exclude name=".*\.am"/> </fileset>
463 </copy>
464 <copy todir="${datadir}/inkscape">
465 <fileset dir="share/extensions"> <exclude name=".*\.am"/> </fileset>
466 </copy>
467 <copy todir="${datadir}/inkscape">
468 <fileset dir="share/fonts"> <exclude name=".*\.am"/> </fileset>
469 </copy>
470 <copy todir="${datadir}/inkscape">
471 <fileset dir="share/gradients"> <exclude name=".*\.am"/> </fileset>
472 </copy>
473 <copy todir="${datadir}/inkscape">
474 <fileset dir="share/icons"> <exclude name=".*\.am"/> </fileset>
475 </copy>
476 <copy todir="${datadir}/inkscape">
477 <fileset dir="share/keys"> <exclude name=".*\.am"/> </fileset>
478 </copy>
479 <copy todir="${datadir}/inkscape">
480 <fileset dir="share/markers"> <exclude name=".*\.am"/> </fileset>
481 </copy>
482 <copy todir="${datadir}/inkscape">
483 <fileset dir="share/palettes"> <exclude name=".*\.am"/> </fileset>
484 </copy>
485 <copy todir="${datadir}/inkscape">
486 <fileset dir="share/patterns"> <exclude name=".*\.am"/> </fileset>
487 </copy>
488 <copy todir="${datadir}/inkscape">
489 <fileset dir="share/screens"> <exclude name=".*\.am"/> </fileset>
490 </copy>
491 <copy todir="${datadir}/inkscape">
492 <fileset dir="share/templates"> <exclude name=".*\.am"/> </fileset>
493 </copy>
494 <copy todir="${datadir}/inkscape">
495 <fileset dir="share/tutorials"> <exclude name=".*\.am"/> </fileset>
496 </copy>
497 <copy todir="${datadir}/inkscape">
498 <fileset dir="share/ui"> <exclude name=".*\.am"/> </fileset>
499 </copy>
500 <copy todir="${datadir}">
501 <fileset dir="${build}/locale"> <exclude name=".*\.am"/> </fileset>
502 </copy>
504 <!-- Copy devlibs files -->
507 </target>
510 <!--
511 ########################################################################
512 ## T A R G E T : JAVAC
513 ########################################################################
514 -->
515 <target name="javac" depends="init"
516 description="compile java binding classes">
517 <javac srcdir="${src}/bind/java" destdir="${build}/java/classes"/>
518 </target>
521 <!--
522 ########################################################################
523 ## T A R G E T : JAR
524 ########################################################################
525 -->
526 <target name="jar" depends="javac"
527 description="pack java classes and resources into a jar file">
528 <copy todir="${build}/java/classes"> <fileset dir="bind/data"/></copy>
529 <jar basedir="${build}/java/classes" destfile="${build}/java/lib/inkscape.jar"/>
530 </target>
532 <!--
533 ########################################################################
534 ## T A R G E T : BINDDIST
535 ########################################################################
536 -->
537 <target name="binddist" depends="jar"
538 description="pack java classes and resources into a jar file">
539 <copy todir="${datadir}/inkscape/bind"> <fileset dir="bind/java"/> </copy>
540 <copy todir="${datadir}/inkscape/bind/java"> <fileset dir="${build}/java/lib"/> </copy>
542 </target>
544 <!--
545 ########################################################################
546 ## T A R G E T : BINDCLEAN
547 ########################################################################
548 -->
549 <target name="bindclean" depends=""
550 description="clean up java binding classes">
551 <delete dir="${build}/java"/>
552 </target>
557 <!--
558 ########################################################################
559 ## T A R G E T : D I S T - A L L
560 ########################################################################
561 -->
562 <target name="dist-all" depends="dist"
563 description="generate the distribution, along with inkview" >
565 <copy file="${build}/inkview" todir="${dist}/bin"/>
566 <copy file="${build}/inkview.dbg" todir="${dist}/bin"/>
568 </target>
574 <!--
575 ########################################################################
576 ## T A R G E T : C L E A N
577 ########################################################################
578 -->
579 <target name="clean" depends="bindclean"
580 description="clean up. deleting build and distro dirs" >
582 <delete dir="${build}"/>
583 <delete dir="${dist}"/>
584 <delete file="build.dep"/>
585 <delete file="config.h"/>
587 </target>
591 </project>
592 <!--
593 ########################################################################
594 ## E N D
595 ########################################################################
596 -->