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