1 dnl Process this -*- autoconf -*- file with autoconf to produce a
3 AC_INIT(dia, 0.91, http://bugzilla.gnome.org/enter_bug.cgi?product=dia)
4 AC_CONFIG_SRCDIR(app/diagram.c)
5 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME,AC_PACKAGE_VERSION)
8 AC_REVISION($Revision: 1.201 $)
10 dnl Specify a header configuration file
11 AM_CONFIG_HEADER(config.h)
13 dnl do this check now, to keep autogen quiet.
16 dnl Initialize maintainer mode
19 dnl Initialize libtool
23 dnl Build time sanity check
26 dnl Checks for programs.
27 dnl AC_PROG_CC # already done
33 dnl Checks for header files.
36 AC_CHECK_HEADERS(stddef.h fcntl.h unistd.h utime.h)
38 dnl Checks for typedefs, structures, and compiler characteristics.
41 dnl Checks for library functions.
42 AC_CHECK_FUNCS(select strcspn strdup strtol snprintf)
44 dnl stuff for intltool
45 AC_PROG_INTLTOOL(0.21)
51 dnl Checks for libraries
53 AM_PATH_GLIB_2_0(2.0.0)
54 AM_PATH_GTK_2_0(2.0.0)
56 GTK_MODULES="gtk+-2.0 libxml-2.0 gdk-pixbuf-2.0"
57 PKG_CHECK_MODULES(PANGOVERSION, pango >= 1.1.5, ,
58 AC_MSG_ERROR([Need Pango version 1.1.5 or higher]))
59 PKG_CHECK_MODULES(PANGOFT2,pangoft2,have_pangoft2=true,have_pangoft2=false)
60 if test "$have_pangoft2" = "true"; then
61 dnl On Solaris with Forte C, at least, need to link app/dia with -lfreetype.
62 dnl It's not enough that -lpangoft2 implicitly pulls it in.
64 AC_CHECK_LIB(freetype,FT_Init_FreeType,have_freetype=true,have_freetype=false,`freetype-config --libs`)
65 if test "$have_freetype" = "true"; then
66 dnl Need 2.0.9, as a bug was fixed for us there.
67 dnl However, freetype-config doesn't give a meaningful version, so we must
69 AC_MSG_CHECKING([if FreeType version is 2.0.9 or higher])
70 old_CPPFLAGS="$CPPFLAGS"
71 CPPFLAGS=`$CPPFLAGS freetype-config --cflags`
72 AC_TRY_CPP([#include <freetype/freetype.h>
73 #if (FREETYPE_MAJOR*1000+FREETYPE_MINOR)*1000+FREETYPE_PATCH < 2000009
74 #error Freetype version too low.
78 FREETYPE_LIBS=`freetype-config --libs`
79 AC_SUBST(FREETYPE_LIBS)
80 FREETYPE_CFLAGS=`freetype-config --cflags`
81 AC_SUBST(FREETYPE_CFLAGS)
82 GTK_MODULES="$GTK_MODULES pangoft2"
83 AC_DEFINE(HAVE_FREETYPE,1,[Define if you have the FreeType2 library])]
85 [AC_MSG_ERROR([Need FreeType library version 2.0.9 or higher])])
86 CPPFLAGS="$old_CPPFLAGS"
88 AC_MSG_ERROR(Can't find FreeType library)
91 AC_MSG_ERROR(Can't find PangoFT2 library)
94 CFLAGS="$FREETYPE_CFLAGS $CFLAGS"
97 PKG_CHECK_MODULES(LIBART,libart-2.0,have_libart=yes,have_libart=no)
98 if test "$have_libart" = "yes" ; then
99 GTK_MODULES="$GTK_MODULES libart-2.0"
100 AC_DEFINE(HAVE_LIBART,1,[Define if building with LIBART support])
103 AC_MSG_CHECKING([whether GNOME specific code should be used])
104 AC_ARG_ENABLE(gnome,[ --enable-gnome enable gnome code],
105 GNOME=$enableval, GNOME=no)
106 if test "$GNOME" = "yes" ; then
107 GTK_MODULES="$GTK_MODULES libgnome-2.0 libgnomeui-2.0"
108 AC_DEFINE(GNOME,1,[Define if building with GNOME support])
109 AC_DEFINE_UNQUOTED(GNOME_ICONDIR, "${prefix}/share/pixmaps", [GNOME icon directory])
114 AM_CONDITIONAL(HAVE_GNOME, $have_gnome)
115 AC_MSG_RESULT($GNOME)
117 dnl GTK2: libgnomecanvas-2.0 ?
119 PKG_CHECK_MODULES(GTK,$GTK_MODULES)
120 AM_CONDITIONAL(HAVE_BONOBO,false)
124 # Check if XSLT is available at all
126 PKG_CHECK_MODULES(XSLT, libxslt, have_xslt=true, have_xslt=false)
127 AM_CONDITIONAL(HAVE_XSLT, $have_xslt)
128 if test "$have_xslt" = "true"; then
130 XSLT_LIBS="`$PKG_CONFIG --libs libxslt`"
131 XSLT_CFLAGS="`$PKG_CONFIG --cflags libxslt`"
136 AC_SUBST(XSLT_CFLAGS)
138 # Figure out a prefix for where to find libxslt at runtime.
139 AC_ARG_WITH(xslt-prefix,
140 [ --with-xslt-prefix=DIR Specify where to find the optional XSLT libraries
142 libxslt_prefix=$withval,
143 libxslt_prefix=/usr/lib)
144 AC_DEFINE_UNQUOTED(LIBXSLT_PREFIX,"$libxslt_prefix", [Place to look for XSLT libs])
150 AC_CHECK_LIB(popt, poptSetOtherOptionHelp, [
151 AC_DEFINE(HAVE_LIBPOPT,,[popt library available])
153 AC_CHECK_HEADERS(popt.h)
155 APP_LIBS="$APP_LIBS $POPT_LIBS"
160 dnl this likely already comes from GTK
162 AC_CHECK_HEADER(png.h, png_ok=yes, png_ok=no)
163 AC_CHECK_LIB(png, png_read_info, ,png_ok=no, -lz -lm)
164 if test "$png_ok" = yes; then
165 AC_MSG_CHECKING([for png_structp in png.h])
166 AC_LINK_IFELSE([#include <png.h>
170 main() { void*foo = png_create_read_struct; }],
173 AC_MSG_RESULT($png_ok)
174 if test "$png_ok" = yes; then
175 PNG_LIBS='-lpng -lz -lm'
176 AC_DEFINE(HAVE_LIBPNG,,[PNG library available])
180 LIBS="${LIBS} ${PNG_LIBS}"
186 [ --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],
188 enable_debug=minimum)
190 if test "x$enable_debug" = "xyes"; then
191 DEBUG_FLAGS="-g -DENABLE_DEBUG"
193 if test "x$enable_debug" = "xno"; then
199 AC_SUBST(DEBUG_FLAGS)
206 AC_SUBST(GETTEXT_PACKAGE)
207 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Needed for glib gettext])
208 ALL_LINGUAS="am az be ca cs da de el en_GB es fi fr ga hu it ja ko mk ml ms nl nn no pl pt pt_BR ro ru sk sl sr sr@Latn sv tr uk vi zh_CN zh_TW"
211 dnl INTLOBJS doesn't seem to always get subst'ed, but I believe it's
215 localedir='${prefix}/${DATADIRNAME}/locale'
219 dnl Locate the gnome-xml library
221 dnl GTK2: remove support for libxml1. move check for libxml2 in
222 dnl AM_PATH_GTK_2_0's fourth argument (module is libxml-2.0)
225 if test $found_libxml = false; then
226 AC_CHECK_PROG(XML2_CONFIG, xml2-config, xml2-config)
227 if test "x$XML2_CONFIG" != x ; then
228 AC_MSG_CHECKING(for libxml >= 2.3.9)
229 vers=`$XML2_CONFIG --version | sed -e "s/libxml //" | awk 'BEGIN {FS=".";} { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
231 if test "$vers" -ge 2003009; then
234 XML_LIBS="`$XML2_CONFIG --libs`"
235 XML_CFLAGS="`$XML2_CONFIG --cflags`"
237 if test "$enable_gnome_print" = "yes"
239 gnome-config --cflags print | \
240 grep gnome-xml 2>&1 >/dev/null && \
241 AC_MSG_ERROR(libxml2 found but gnome-print uses libxml1 ; this is a conflict.\nPlease do either provide libxml1 or disable gnome-print.)
243 echo $GNOME_CFLAGS | \
244 grep gnome-xml 2>&1 >/dev/null && \
245 AC_MSG_ERROR(libxml2 found but one GNOME component uses libxml1 ; this is a conflict.\nPlease do either provide libxml1 or disable the offending GNOME component.)
248 AC_MSG_RESULT(not found)
253 if test $found_libxml = false; then
254 AC_CHECK_PROG(XML_CONFIG, xml-config, xml-config)
255 if test "x$XML_CONFIG" != x ; then
256 AC_MSG_CHECKING(for libxml >= 1.8.14)
257 vers=`$XML_CONFIG --version | sed -e "s/libxml //" | awk 'BEGIN {FS=".";} { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
259 dnl 1.18.14 is required for xmlUseNewParser()
260 if test "$vers" -ge 1008014; then
263 XML_LIBS="`$XML_CONFIG --libs`"
264 XML_CFLAGS="`$XML_CONFIG --cflags`"
266 AC_MSG_RESULT(not found)
271 if test $found_libxml = false; then
272 AC_MSG_ERROR(Neither libxml1 or libxml2 found. You must install one (libxml1, preferably))
278 CFLAGS="$XML_CFLAGS $CFLAGS"
281 AC_CHECK_HEADERS(zlib.h,
282 AC_CHECK_LIB(z, gzread,[
283 AC_DEFINE(HAVE_LIBZ,, we have the libz compression library)
284 if test "x${Z_DIR}" != "x"; then
285 Z_CFLAGS="-I${Z_DIR}/include"
286 Z_LIBS="-L${Z_DIR}/lib -lz"
293 CFLAGS="${CFLAGS} ${Z_CFLAGS}"
294 LIBS="${LIBS} ${Z_LIBS}"
296 dnl Platform-specific fixes.
299 dnl Sun Forte C provides isinf() in the unbundled -lsunmath. Solaris
300 dnl declares finite() in ieeefp.h. It's preferrable not to link
301 dnl to -lsunmath as it's not present on all machines.
303 AC_CHECK_HEADERS(math.h,
304 AC_CHECK_LIB(m,isinf,
307 if test "$have_isinf" = "no"; then
308 AC_CHECK_HEADER(ieeefp.h,
309 [AC_CHECK_FUNC(finite,
310 AC_DEFINE(HAVE_IEEEFP_H,1,
311 [Define if finite() is defined in ieeefp.h]),
312 AC_MSG_ERROR([Can't find a definition of neither
313 finite nor isinf]))],
314 [AC_MSG_ERROR(Can't find neither a definition of
315 isinf nor ieeefp.h)])
317 AC_DEFINE([HAVE_ISINF], 1,
318 [Define if the isinf() function is available])
321 dnl Alpha needs -mieee or we get a segfault
322 dnl This shouldn't be needed but is here until a real solution is found
325 CFLAGS="$CFLAGS -mieee"
329 if test "$GCC" = yes; then
330 dnl Relieve register pressure on i386. Other architectures may become unable
331 dnl to debug, and usually have more registers anyway.
334 dnl DIA_CHECK_CFLAG(-fomit-frame-pointer)
337 dnl (it looks like gdb is very confused by this now even on x86. We might be
338 dnl getting poor stack traces with bug-buddy because of this)
340 DIA_CHECK_CFLAG(-Wall)
341 DIA_CHECK_CFLAG(-Wunused)
342 dnl Premature optimization is the root of all evil. Uncomment this if
343 dnl you want ti figure out functions that should have been inlined but aint.
344 dnl DIA_CHECK_CFLAG(-Winline)
345 DIA_CHECK_CFLAG(-Wmissing-prototypes)
346 DIA_CHECK_CFLAG(-Wmissing-declarations)
347 DIA_CHECK_CFLAG(-finline-functions)
348 DIA_CHECK_CFLAG(-fstrict-aliasing)
351 AM_CONDITIONAL(HAVE_GCC, test "$GCC" = yes)
353 dnl Do we have the db2html script to build the documentation?
354 AC_ARG_ENABLE(db2html,
355 [ --enable-db2html don't rebuild documentation],,enable_db2html=no)
356 AC_PATH_PROG(DB2HTML, db2html, no)
357 AM_CONDITIONAL(HAVE_DB2HTML,
358 test "x$enable_db2html" != xno && test "x$DB2HTML" != xno)
360 dnl Handling for Python
362 [ --with-python compile python plug-in],,with_python=no)
364 if test "x$with_python" != xno; then
365 AM_PATH_PYTHON(1.5.2)
366 AM_CHECK_PYMOD(gtk,,,[AC_MSG_ERROR(could not find pygtk module)])
367 AM_CHECK_PYTHON_HEADERS
370 if test -z "$PYTHON_INCLUDES" || test -z "$PYTHON_LIBS"; then
371 AC_MSG_ERROR([could not find files required to build python plugin])
374 AM_CONDITIONAL(WITH_PYTHON, test "x$with_python" != "xno")
381 dnl objects/sybase/Makefile
382 objects/bondgraph/Makefile
383 objects/chronogram/Makefile
384 objects/custom/Makefile
386 objects/flowchart/Makefile
388 objects/GRAFCET/Makefile
389 objects/Misc/Makefile
390 objects/network/Makefile
391 objects/SADT/Makefile
392 objects/standard/Makefile
395 shapes/Assorted/Makefile
396 shapes/Circuit/Makefile
397 shapes/Cisco/Makefile
398 shapes/Civil/Makefile
399 shapes/Contact/Makefile
400 shapes/Electric/Makefile
401 shapes/flowchart/Makefile
402 shapes/jigsaw/Makefile
403 shapes/Logic/Makefile
406 shapes/network/Makefile
407 shapes/Pneumatic/Makefile
409 shapes/sybase/Makefile
414 sheets/GRAFCET/Makefile
417 plug-ins/cgm/Makefile
418 plug-ins/dxf/Makefile
419 plug-ins/hpgl/Makefile
420 plug-ins/metapost/Makefile
421 plug-ins/pixbuf/Makefile
422 plug-ins/pstricks/Makefile
423 plug-ins/python/Makefile
424 plug-ins/shape/Makefile
425 plug-ins/svg/Makefile
426 plug-ins/wmf/Makefile
427 plug-ins/wpg/Makefile
428 plug-ins/xfig/Makefile
429 plug-ins/xslt/Makefile
435 dnl GTK2: simplify this, we will have much less options.
439 Source code location: ${srcdir}
442 Gnome support: ${GNOME}
443 Python support: ${with_python}
444 Libart support (PNG export): ${have_libart}
447 echo "Now type make to build dia..."