fixing MSVC build
[dia.git] / configure.in
blob5b9cd4324ea1f9221f036a7f2d21ea5e324dcdeb
1 dnl Process this -*- autoconf -*- file with autoconf to produce a 
2 dnl configure script.
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)
7 AC_PREREQ(2.50)
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.
14 AC_PROG_CC 
16 dnl Initialize maintainer mode
17 AM_MAINTAINER_MODE
19 dnl Initialize libtool
20 AC_DISABLE_STATIC
21 AC_PROG_LIBTOOL
23 dnl Build time sanity check
24 AM_SANITY_CHECK
26 dnl Checks for programs.
27 dnl AC_PROG_CC # already done 
28 AC_PROG_INSTALL
29 AC_PROG_LN_S
30 AC_PROG_MAKE_SET
31 AC_ISC_POSIX
33 dnl Checks for header files.
34 AC_HEADER_DIRENT
35 AC_HEADER_STDC
36 AC_CHECK_HEADERS(stddef.h fcntl.h unistd.h utime.h)
38 dnl Checks for typedefs, structures, and compiler characteristics.
39 AC_C_CONST
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) 
47 APP_LIBS=""
48 AC_SUBST(APP_LIBS)
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.
63   have_freetype=false
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
68     dnl do it like this.
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.
75 #endif
77         [AC_MSG_RESULT(yes)
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])]
84     ,
85         [AC_MSG_ERROR([Need FreeType library version 2.0.9 or higher])])
86     CPPFLAGS="$old_CPPFLAGS"
87   else
88    AC_MSG_ERROR(Can't find FreeType library)
89   fi
90 else
91    AC_MSG_ERROR(Can't find PangoFT2 library)
94 CFLAGS="$FREETYPE_CFLAGS $CFLAGS"
96 dnl Try for libart
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])
110     have_gnome=true
111 else
112     have_gnome=false
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)
122 dnl XSLT
124 # Check if XSLT is available at all
125 XSLT_DIR=""
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
129   XSLT_DIR="xslt"
130   XSLT_LIBS="`$PKG_CONFIG --libs libxslt`"
131   XSLT_CFLAGS="`$PKG_CONFIG --cflags libxslt`"
134 AC_SUBST(XSLT_DIR)
135 AC_SUBST(XSLT_LIBS)
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
141                              (default=/usr/lib)], 
142             libxslt_prefix=$withval,
143             libxslt_prefix=/usr/lib)
144 AC_DEFINE_UNQUOTED(LIBXSLT_PREFIX,"$libxslt_prefix", [Place to look for XSLT libs])
147 dnl Popt
150 AC_CHECK_LIB(popt, poptSetOtherOptionHelp, [
151                 AC_DEFINE(HAVE_LIBPOPT,,[popt library available])
152                    POPT_LIBS="-lpopt"])
153 AC_CHECK_HEADERS(popt.h)
154 AC_SUBST(POPT_LIBS)
155 APP_LIBS="$APP_LIBS $POPT_LIBS"
158 dnl libpng
160 dnl this likely already comes from GTK
161 png_ok=no
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>
167                   png_structp pp;
168                   png_infop info; 
169                   png_colorp cmap; 
170                   main() { void*foo = png_create_read_struct; }],
171                  png_ok=yes,
172                  png_ok=no)
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])
177   fi
179 AC_SUBST(PNG_LIBS)
180 LIBS="${LIBS} ${PNG_LIBS}"
183 dnl Debugging
185 AC_ARG_ENABLE(debug, 
186 [  --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],
187   ,
188   enable_debug=minimum)
190 if test "x$enable_debug" = "xyes"; then
191   DEBUG_FLAGS="-g -DENABLE_DEBUG"
192 else
193   if test "x$enable_debug" = "xno"; then
194     DEBUG_FLAGS=""
195   else
196     DEBUG_FLAGS=""
197   fi
199 AC_SUBST(DEBUG_FLAGS)
202 dnl i18n
205 GETTEXT_PACKAGE=dia
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"
209 AM_GLIB_GNU_GETTEXT
211 dnl INTLOBJS doesn't seem to always get subst'ed, but I believe it's
212 dnl idempotent
213 AC_SUBST(INTLOBJS)
215 localedir='${prefix}/${DATADIRNAME}/locale'
216 AC_SUBST(localedir)
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)
224 found_libxml=false
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
232       AC_MSG_RESULT(found)
233       found_libxml=true
234       XML_LIBS="`$XML2_CONFIG --libs`"
235       XML_CFLAGS="`$XML2_CONFIG --cflags`"
237       if test "$enable_gnome_print" = "yes"
238       then
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.)
242       fi
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.)
246         
247     else
248       AC_MSG_RESULT(not found)
249     fi
250   fi
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
261     AC_MSG_RESULT(found)
262     found_libxml=true
263     XML_LIBS="`$XML_CONFIG --libs`"
264     XML_CFLAGS="`$XML_CONFIG --cflags`"
265   else
266     AC_MSG_RESULT(not found)
267   fi
271 if test $found_libxml = false; then
272     AC_MSG_ERROR(Neither libxml1 or libxml2 found. You must install one (libxml1, preferably))
275 AC_SUBST(XML_LIBS)
276 AC_SUBST(XML_CFLAGS)
278 CFLAGS="$XML_CFLAGS $CFLAGS"
280 dnl LibZ
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"
287         else
288             Z_LIBS="-lz"
289         fi]))
291 AC_SUBST(Z_LIBS)
293 CFLAGS="${CFLAGS} ${Z_CFLAGS}"
294 LIBS="${LIBS} ${Z_LIBS}"
296 dnl Platform-specific fixes.
297 dnl 
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.
302 have_isinf=no
303 AC_CHECK_HEADERS(math.h,
304         AC_CHECK_LIB(m,isinf,
305                 have_isinf=yes))
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)])
316 else
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
323 case "$host" in
324   alpha*-*-linux*)
325     CFLAGS="$CFLAGS -mieee"
326     ;;
327 esac
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.
332   dnl case "$host" in 
333   dnl  i?86-pc-*)
334   dnl    DIA_CHECK_CFLAG(-fomit-frame-pointer)
335   dnl    ;;
336   dnl esac
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
361 AC_ARG_WITH(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
368   AM_CHECK_PYTHON_LIB
370   if test -z "$PYTHON_INCLUDES" || test -z "$PYTHON_LIBS"; then
371     AC_MSG_ERROR([could not find files required to build python plugin])
372   fi
374 AM_CONDITIONAL(WITH_PYTHON, test "x$with_python" != "xno")
376 AC_OUTPUT(
377 Makefile
378 lib/Makefile
379 po/Makefile.in
380 objects/Makefile
381 dnl objects/sybase/Makefile
382 objects/bondgraph/Makefile
383 objects/chronogram/Makefile
384 objects/custom/Makefile
385 objects/ER/Makefile
386 objects/flowchart/Makefile
387 objects/FS/Makefile
388 objects/GRAFCET/Makefile
389 objects/Misc/Makefile
390 objects/network/Makefile
391 objects/SADT/Makefile
392 objects/standard/Makefile
393 objects/UML/Makefile
394 shapes/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
404 shapes/Misc/Makefile
405 shapes/MSE/Makefile
406 shapes/network/Makefile
407 shapes/Pneumatic/Makefile
408 shapes/SDL/Makefile
409 shapes/sybase/Makefile
410 app/Makefile
411 samples/Makefile
412 sheets/Makefile
413 sheets/ER/Makefile
414 sheets/GRAFCET/Makefile
415 sheets/UML/Makefile
416 plug-ins/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
430 doc/Makefile
431 doc/en/Makefile
432 doc/pl/Makefile
435 dnl GTK2: simplify this, we will have much less options.
436 echo "
438 Configuration:
439         Source code location:   ${srcdir}
440         Compiler:               ${CC}
442         Gnome support:                          ${GNOME}
443         Python support:                         ${with_python}
444         Libart support (PNG export):            ${have_libart}
447 echo "Now type make to build dia..."