Fix doc typo
[adg.git] / configure.ac
blob795d0a42a7ebc0fac4cd3f952cce576c5e196da2
1 m4_define([adg_version],[0.9.1])
2 m4_define([cpml_version],adg_version)
4 dnl How to handle {adg,cmpl}_lt_version (current:revision:age):
5 dnl - ABI unmodified (e.g. refactoring):      current:revision+1:age
6 dnl - Backward compatible ABI (e.g. new API): current+1:0:age+1
7 dnl - Backward incompatible ABI:              current+1:0:0
8 m4_define([adg_lt_version],[7:0:0])
9 m4_define([cpml_lt_version],[4:0:0])
11 m4_define([gtkdoc_prereq],    [1.12]  )dnl Support introspection annotations
12 m4_define([gobject_prereq],   [2.14.0])dnl Required by GRegex
13 m4_define([cairo_prereq],     [1.7.4] )dnl Required by cairo_scaled_font_text_to_glyphs()
14 m4_define([gtk2_prereq],      [2.18.0])dnl Required by gtk_widget_get_allocation()
15 m4_define([gtk3_prereq],      [3.0.0] )dnl First stable release
16 m4_define([pangocairo_prereq],[1.10.0])dnl Cairo support in Pango
17 m4_define([gi_prereq],        [1.0.0] )dnl First stable release
20 # Initialization
22 dnl autoconf 2.62 is required by GObject introspection:
23 dnl http://live.gnome.org/GObjectIntrospection/AutotoolsIntegration
24 AC_PREREQ([2.62])
25 AC_INIT([adg-1],adg_version,[http://dev.entidi.com/p/adg/],[adg],[http://adg.entidi.com/])
26 AC_CONFIG_SRCDIR([configure.ac])
27 AC_CONFIG_HEADERS([src/config.h])
28 AC_CONFIG_AUX_DIR([build])
29 AC_CONFIG_MACRO_DIR([build])
30 AM_INIT_AUTOMAKE([1.10 gnits no-dist-gzip dist-bzip2 -Wall -Wno-portability])
32 dnl m4 backward compatibility stuff
33 m4_ifdef([AM_SILENT_RULES],
34          [AM_SILENT_RULES([yes])],
35          [AC_SUBST([AM_V_GEN],[])])
36 m4_ifdef([AM_SUBST_NOTMAKE],[],
37          [AC_DEFUN([AM_SUBST_NOTMAKE],[_AM_SUBST_NOTMAKE($@)])])
38 m4_ifdef([AM_COND_IF],[],
39          [AC_DEFUN([AM_COND_IF],
40                    [AS_IF([test -z "$$1_TRUE"],[$2],[$3])])])
42 AC_DEFUN([ADG_DEPENDENCY],
43          [EXTRADIR="$EXTRADIR --extra-dir=$($PKG_CONFIG --variable=prefix $1)/share/gtk-doc/html/$2"])
45 # Check for host information
47 AC_CANONICAL_HOST
48 case "${host}" in
49   *-*-linux*)
50     guessed_host=linux
51     ;;
52   *-*-freebsd*)
53     guessed_host=freebsd
54     ;;
55   *-*-mingw*)
56     guessed_host=mingw
57     ;;
58   *-*-solaris*)
59     guessed_host=solaris
60     ;;
61   *-*-darwin*)
62     guessed_host=darwin
63     ;;
64   *-*-beos*)
65     guessed_host=beos
66     ;;
67   *-*-cygwin*)
68     guessed_host=cygwin
69     ;;
70   *-*-minix*)
71     guessed_host=minix
72     ;;
73   *-*-aix*)
74     guessed_host=aix
75     ;;
76   *)
77     guessed_host=unknown
78     ;;
79 esac
80 AM_CONDITIONAL([OS_UNIX],[test "${guessed_host}" != "mingw"])
81 AM_CONDITIONAL([OS_WINDOWS],[test "${guessed_host}" = "mingw" -o "${guessed_host}" = "cygwin"])
84 # Check for programs
86 AC_PROG_CC
87 AC_PROG_SED
88 PKG_PROG_PKG_CONFIG
89 AC_PATH_PROG([XSLTPROC],[xsltproc],[/usr/bin/xsltproc])
90 AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums],[/usr/bin/glib-mkenums])
91 AC_PATH_PROG([GLIB_GENMARSHAL],[glib-genmarshal],[/usr/bin/glib-genmarshal])
92 AC_PATH_PROG([GTESTER],[gtester],[/usr/bin/gtester])
93 AC_PATH_PROG([GTESTER_REPORT],[gtester-report],[/usr/bin/gtester-report])
94 AC_PATH_PROG([GLADE3],[glade-3],[/usr/bin/glade-3])
95 AC_ARG_VAR([TAR])
96 AC_PATH_PROG([TAR],[tar],[/usr/bin/tar])
97 AC_ARG_VAR([BZIP2])
98 AC_PATH_PROG([BZIP2],[bzip2],[/usr/bin/bzip2])
101 # Check for coverage build
103 dnl Coverage with gcov is available only for GNU gcc
104 AS_IF([test "x$GNU" != "xyes"],
105       [AC_ARG_ENABLE([gcov],
106                      [AS_HELP_STRING([--enable-gcov],
107                                      [enable coverage build @<:@default=no@:>@])],
108                      [],[enable_gcov=no])])
109 AS_IF([test "x$enable_gcov" = "xyes"],
110       [AC_ARG_VAR([GCOV])
111        AC_CHECK_TOOL([GCOV],[gcov],[/usr/bin/gcov])
112        CFLAGS="$CFLAGS --coverage"
113        LDFLAGS="$LDFLAGS --coverage"])
114 AM_CONDITIONAL([ENABLE_GCOV],[test "x$enable_gcov" = "xyes"])
117 # Check for libraries
119 AC_CHECK_LIB([m],[cos])
121 dnl On Windows, GLib 2.16 is required by _adg_dgettext() for the
122 dnl g_win32_get_package_installation_directory_of_module() API.
123 dnl On other platforms, it just needs to be in sync with GObject.
124 AM_COND_IF([OS_WINDOWS],
125            [AC_PATH_PROG([MAKENSIS],[makensis],[/usr/bin/makensis])
126             AC_PATH_PROG([WINE],[wine])
127             AC_ARG_VAR([WINDRES],[Command for Windows resources manipulation])
128             AC_CHECK_TOOL([WINDRES],[windres])
129             glib_prereq=2.16.0],
130            [glib_prereq=]gobject_prereq)
133 # Libtool initialization
135 AC_MSG_CHECKING([which libtool initialization strategy to adopt])
136 AC_MSG_RESULT([m4_ifset([LT_INIT],[LT-INIT],[AC-PROG-LIBTOOL])])
137 m4_ifset([LT_INIT],
138          [LT_INIT([disable-static win32-dll])],
139          [AC_DISABLE_STATIC
140           AC_LIBTOOL_WIN32_DLL
141           AC_PROG_LIBTOOL])
144 # I18n
146 dnl The following macro is required in order to be able to use
147 dnl autopoint (formerly called gettextize) from autoreconf.
148 dnl The argument is a trade-off between modern and supported.
149 AM_GNU_GETTEXT_VERSION([0.17])
151 AM_GNU_GETTEXT([external])
152 AC_SUBST([ADG_API_PACKAGE],AC_PACKAGE_TARNAME)
153 AC_SUBST([GETTEXT_PACKAGE],[${ADG_API_PACKAGE}])
154 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["${ADG_API_PACKAGE}"],
155                    [Define to the domain used by gettext.])
158 # Check for required packages
160 PKG_CHECK_MODULES([GLIB],[glib-2.0 >= ]${glib_prereq},
161                   [glib_postfix=" (glib-$($PKG_CONFIG --modversion glib-2.0))"])
162 ADG_DEPENDENCY([glib-2.0],[glib])
163 PKG_CHECK_MODULES([GOBJECT],[gobject-2.0 >= ]gobject_prereq)
164 ADG_DEPENDENCY([gobject-2.0],[gobject])
165 PKG_CHECK_MODULES([CAIRO],[cairo >= ]cairo_prereq)
166 ADG_DEPENDENCY([cairo],[cairo])
169 # Check for optional packages
171 dnl PangoCairo
172 AC_ARG_ENABLE([pango],
173               [AS_HELP_STRING([--enable-pango],
174                               [use pango for rendering text @<:@default=check@:>@])],
175               [],[enable_pango=check])
176 AS_IF([test "x${enable_pango}" != "xno"],
177       [PKG_CHECK_MODULES([PANGO],[pangocairo >= ]pangocairo_prereq,
178                          [enable_pango=yes
179                           AC_DEFINE_UNQUOTED([PANGO_ENABLED],[1],
180                                              [Defined if the pango support is enabled.])
181                           ADG_DEPENDENCY([pangocairo],[pango])
182                           pango_postfix=" (pangocairo-$($PKG_CONFIG --modversion pangocairo))"],
183                          [AS_IF([test "x${enable_pango}" = "xyes"],
184                                 [AC_MSG_ERROR([${PANGO_PKG_ERRORS} and pango support requested])],
185                                 [enable_pango=no])])])
186 AM_CONDITIONAL([HAVE_PANGO],[test "x${enable_pango}" = "xyes"])
188 dnl GTK+ support
189 AC_ARG_WITH(gtk,
190             [AS_HELP_STRING([--with-gtk@<:@=gtk2/gtk3@:>@],
191                             [include GTK+ specific widgets @<:@default=check@:>@])],
192             [],[with_gtk=check])
193 AS_CASE(["${with_gtk}"],
194         [gtk2],      [gtk2_pkg=yes; gtk3_pkg=no],
195         [gtk3],      [gtk2_pkg=no;  gtk3_pkg=yes],
196         [check|yes], [gtk2_pkg=yes; gtk3_pkg=yes],
197         [no],        [gtk2_pkg=no;  gtk3_pkg=no],
198         [AC_MSG_ERROR([Invalid option passed to --with-gtk])])
200 # GTK+ autodetection, giving precedence to GTK+3
201 AS_IF([test "x${gtk3_pkg}" = "xyes"],
202       [PKG_CHECK_MODULES([GTK3],[gtk+-3.0 >= ]gtk3_prereq,
203                          [gtk_pkg=gtk3
204                           ADG_DEPENDENCY([gtk+-3.0],[gtk3])],
205                          [:])])
206 AS_IF([test "x${gtk2_pkg}" = "xyes" -a "x${gtk_pkg}" = "x"],
207       [PKG_CHECK_MODULES([GTK2],[gtk+-2.0 >= ]gtk2_prereq,
208                          [gtk_pkg=gtk2
209                           ADG_DEPENDENCY([gtk+-2.0],[gtk2])],
210                          [:])])
211 AS_IF([test "x${gtk_pkg}" != "x"],[with_gtk=${gtk_pkg}])
213 # Handle "check" graceful degradation
214 AS_IF([test "x${with_gtk}" = "xcheck"],[with_gtk=no])
216 # Handle failures
217 AS_IF([test "x${with_gtk}" != "xno" -a "x${gtk_pkg}" = "x"],
218       [AC_MSG_ERROR([GTK+ support explicitely required but no valid GTK+ found])])
220 AS_IF([test "x${with_gtk}" = "xgtk3"],
221       [gtk_postfix=" (gtk+-$($PKG_CONFIG --modversion gtk+-3.0))"
222        AC_DEFINE_UNQUOTED([GTK3_ENABLED],[1],
223                           [Defined if the GTK+3 support is enabled.])])
224 AS_IF([test "x${with_gtk}" = "xgtk2"],
225       [gtk_postfix=" (gtk+-$($PKG_CONFIG --modversion gtk+-2.0))"
226        AC_DEFINE_UNQUOTED([GTK2_ENABLED],[1],
227                           [Defined if the GTK+2 support is enabled.])])
229 AM_CONDITIONAL([HAVE_GTK], [test "x${with_gtk}" != "xno"])
230 AM_CONDITIONAL([HAVE_GTK2],[test "x${with_gtk}" = "xgtk2"])
231 AM_CONDITIONAL([HAVE_GTK3],[test "x${with_gtk}" = "xgtk3"])
234 dnl Glade catalog dir
235 AC_ARG_WITH(glade_catalogdir,
236             [AS_HELP_STRING([--with-glade-catalogdir@<:@=DIR@:>@],
237                             [where to install the glade catalogs @<:@default=check@:>@])],
238             [],[with_glade_catalogdir=check])
240 # Both "check" and "yes" mean gladeui autodetection,
241 # but "yes" will fail on gladeui not found
242 AS_IF([test "x${with_glade_catalogdir}" = "xcheck" -o "x${with_glade_catalogdir}" = "xyes"],
243       [glade_pkg=check])
245 # gladeui autodetection, giving precedence to gladeui-2.0 if possible
246 AS_IF([test "x${glade_pkg}" = "xcheck" -a "x${with_gtk}" != "xgtk2"],
247       [PKG_CHECK_MODULES([GLADEUI2],[gladeui-2.0],[glade_pkg=gladeui-2.0],[:])])
248 AS_IF([test "x${glade_pkg}" = "xcheck"],
249       [PKG_CHECK_MODULES([GLADEUI1],[gladeui-1.0],[glade_pkg=gladeui-1.0],[:])])
250 AS_IF([test "x${glade_pkg}" != "x" -a "x${glade_pkg}" != "xcheck"],
251       [NTD_UNEXPAND([${glade_pkg}],
252                     [catalogdir],
253                     [with_glade_catalogdir="${NTD_UNEXPANDED}"],
254                     [AC_MSG_ERROR([${glade_pkg} found but pkg-config file invalid])])])
256 # Handle "yes" failure
257 AS_IF([test "x${glade_pkg}" = "xcheck" -a "x${with_glade_catalogdir}" = "xyes"],
258       [AC_MSG_ERROR([Glade support explicitely required but no valid gladeui found])])
260 # Handle "check" graceful degradation
261 AS_IF([test "x${glade_pkg}" = "xcheck" -a "x${with_glade_catalogdir}" = "xcheck"],
262       [with_glade_catalogdir=no])
264 AM_CONDITIONAL([HAVE_GLADE],[test "x${with_glade_catalogdir}" != "xno"])
265 AM_COND_IF([HAVE_GLADE],
266            [enable_glade=yes
267             report_glade="
268                   Glade catalog dir: ${with_glade_catalogdir}"],
269            [enable_glade=no
270             report_glade=""])
271 AC_SUBST([GLADE_CATALOGDIR],${with_glade_catalogdir})
274 dnl gtk-doc
275 GTK_DOC_CHECK(gtkdoc_prereq)
276 AS_IF([test "x$enable_gtk_doc" = "xyes"],
277       [gtkdoc_postfix=" (gtk-doc-$($PKG_CONFIG --modversion gtk-doc))"])
280 dnl GObject introspection
281 GOBJECT_INTROSPECTION_CHECK(gi_prereq)
283 dnl If introspection is used, GObject support in cairo must be enabled.
284 dnl This in turn means cairo-gobject library must be present. That
285 dnl library has been introduced in cairo 1.10.0.
286 AS_IF([test "x$enable_introspection" = "xyes"],
287       [PKG_CHECK_MODULES([CAIRO_GOBJECT],[cairo-gobject],
288                          [AC_DEFINE_UNQUOTED([CAIRO_GOBJECT_ENABLED],[1],
289                                              [Defined if GObject support in cairo is present.])],
290                          [AC_MSG_ERROR([GObject introspection requires the cairo-gobject library])])])
292 dnl Introspection girdir
293 AC_ARG_WITH(girdir,
294             [AS_HELP_STRING([--with-girdir@<:@=DIR@:>@],
295                             [where to install the .gir files @<:@default=check@:>@])],
296             [],[with_girdir=check])
297 AS_IF([test "x$with_girdir" = "xcheck"],
298       [with_girdir="$INTROSPECTION_GIRDIR"])
299 AC_SUBST([ADG_GIRDIR],${with_girdir})
301 dnl Introspection typelibdir
302 AC_ARG_WITH(typelibdir,
303             [AS_HELP_STRING([--with-typelibdir@<:@=DIR@:>@],
304                             [where to install the .typelib files @<:@default=check@:>@])],
305             [],[with_typelibdir=check])
306 AS_IF([test "x$with_typelibdir" = "xcheck"],
307       [with_typelibdir="$INTROSPECTION_TYPELIBDIR"])
308 AC_SUBST([ADG_TYPELIBDIR],${with_typelibdir})
310 dnl Introspection report
311 AS_IF([test "x$enable_introspection" = "xyes"],
312       [report_introspection="
313          Where to install gir files: $with_girdir
314  Where to install the typelib files: $with_typelibdir"],
315       [report_introspection=""])
318 dnl GLib test framework
319 AC_ARG_ENABLE([test_framework],
320               [AS_HELP_STRING([--enable-test-framework],
321                               [enable GLib test framework @<:@default=check@:>@])],
322               [],[enable_test_framework=check])
323 AS_IF([test "x$enable_gcov" = "xyes"], [enable_test_framework=yes])
324 AS_IF([test "x${enable_test_framework}" != "xno"],
325       [PKG_CHECK_EXISTS([glib-2.0 >= 2.16.0],
326                         [enable_test_framework=yes],
327                         [AS_IF([test "x${enable_test_framework}" = "xyes"],
328                                [AC_MSG_ERROR([The test framework needs glib2-2.16.0 or later])],
329                                [enable_test_framework=no])])])
330 AM_CONDITIONAL([HAVE_TEST_FRAMEWORK],[test "x${enable_test_framework}" = "xyes"])
333 # Check for compiler characteristics
335 AC_C_CONST
338 # Windows substitutions for NSis installer
340 dnl Get the HOSTPREFIX from gobject-2.0.pc: all the dependencies *must* be
341 dnl installed under the same prefix.
342 HOSTPREFIX="$($PKG_CONFIG --variable=prefix gobject-2.0)"
343 AC_SUBST([HOSTPREFIX])
344 AM_SUBST_NOTMAKE([HOSTPREFIX])
346 dnl -win$PACKAGE_ARCH will be appended to the installer file name
347 AS_IF([test "x${host_cpu}" = "xx86_64"],[PACKAGE_ARCH=64],[PACKAGE_ARCH=32])
348 AC_SUBST([PACKAGE_ARCH])
351 # Additional substitutions
353 dnl The GObject dependency can be made optional by skipping
354 dnl the building of the GObject wrappers.
355 CPML_REQUIRES='cairo >= cairo_prereq gobject-2.0 >= gobject_prereq'
356 AM_COND_IF([HAVE_PANGO],
357       [ADG_REQUIRES='pangocairo >= pangocairo_prereq'
358        ADG_H_ADDITIONAL='
359 #include <pango/pango.h>
360 #include "adg/adg-text.h"
361 #include "adg/adg-pango-style.h"
363       [ADG_REQUIRES='gobject-2.0 >= gobject_prereq'
364        ADG_H_ADDITIONAL=''])
365 AM_COND_IF([HAVE_GTK3],[ADG_REQUIRES='gtk+-3.0 >= gtk3_prereq'])
366 AM_COND_IF([HAVE_GTK2],[ADG_REQUIRES='gtk+-2.0 >= gtk2_prereq'])
367 AM_COND_IF([HAVE_GTK],
368            [ADG_H_ADDITIONAL="${ADG_H_ADDITIONAL}
369 #include <gtk/gtk.h>
370 #include \"adg/adg-gtk-utils.h\"
371 #include \"adg/adg-gtk-area.h\"
372 #include \"adg/adg-gtk-layout.h\"
374             ADG_CANVAS_H_ADDITIONAL='
375 #include <gtk/gtk.h>
377 void            adg_canvas_set_paper            (AdgCanvas      *canvas,
378                                                  const gchar    *paper_name,
379                                                  GtkPageOrientation orientation);
380 void            adg_canvas_set_page_setup       (AdgCanvas      *canvas,
381                                                  GtkPageSetup   *page_setup);
382 GtkPageSetup *  adg_canvas_get_page_setup       (AdgCanvas      *canvas);
384            [ADG_CANVAS_H_ADDITIONAL=''])
386 AC_SUBST([CPML_LT_VERSION],cpml_lt_version)
387 AC_SUBST([CPML_REQUIRES])
388 AC_SUBST([ADG_LT_VERSION],adg_lt_version)
389 AC_SUBST([ADG_REQUIRES])
390 AC_SUBST([ADG_H_ADDITIONAL])
391 AC_SUBST([ADG_CANVAS_H_ADDITIONAL])
393 AM_SUBST_NOTMAKE([CPML_REQUIRES])
394 AM_SUBST_NOTMAKE([ADG_REQUIRES])
395 AM_SUBST_NOTMAKE([ADG_H_ADDITIONAL])
396 AM_SUBST_NOTMAKE([ADG_CANVAS_H_ADDITIONAL])
398 dnl CPML compiler flags and library dependencies
399 CPML_CFLAGS="$CAIRO_CFLAGS $GOBJECT_CFLAGS"
400 CPML_LIBS="$CAIRO_LIBS $GOBJECT_LIBS"
401 AC_SUBST([CPML_CFLAGS])
402 AC_SUBST([CPML_LIBS])
404 dnl ADG compiler flags and library dependencies
405 ADG_CFLAGS="$CAIRO_GOBJECT_CFLAGS"
406 ADG_LIBS="$CAIRO_GOBJECT_LIBS"
407 AM_COND_IF([HAVE_PANGO],
408            [ADG_CFLAGS="$PANGO_CFLAGS $ADG_CFLAGS"
409             ADG_LIBS="$PANGO_LIBS $ADG_LIBS"])
410 AM_COND_IF([HAVE_GTK2],
411            [ADG_CFLAGS="$GTK2_CFLAGS $ADG_CFLAGS"
412             ADG_LIBS="$GTK2_LIBS $ADG_LIBS"])
413 AM_COND_IF([HAVE_GTK3],
414            [ADG_CFLAGS="$GTK3_CFLAGS $ADG_CFLAGS"
415             ADG_LIBS="$GTK3_LIBS $ADG_LIBS"])
416 AC_SUBST([ADG_CFLAGS])
417 AC_SUBST([ADG_LIBS])
419 AC_SUBST([EXTRADIR])
422 # Generation
424 AC_CONFIG_FILES([build/Custom.nsh
425                  Makefile
426                  src/Makefile
427                  src/tests/Makefile
428                  src/cpml/cpml-1.pc
429                  src/cpml/Makefile
430                  src/cpml/tests/Makefile
431                  src/adg/adg-1.pc
432                  src/adg.h
433                  src/adg/Makefile
434                  src/adg/adg-canvas.h
435                  src/adg/tests/Makefile
436                  demo/Makefile
437                  demo/cpml-demo.ui
438                  demo/adg-demo.ui
439                  po/Makefile.in
440                  docs/Makefile
441                  docs/cpml/Makefile
442                  docs/cpml/bookinfo.xml
443                  docs/adg/Makefile
444                  docs/adg/bookinfo.xml])
445 AC_CONFIG_FILES([demo/adg-glade],[chmod +x demo/adg-glade])
446 AC_OUTPUT
449 # Report
451 AC_MSG_NOTICE([generating report
453 AC_PACKAGE_NAME adg_version will be built with the following options:
454 ----------------------------------------------------------
455                 CPML library to use: internal (cpml-adg_version)
456          Build pango based entities: ${enable_pango}${pango_postfix}
457                        GTK+ support: ${with_gtk}${gtk_postfix}
458              Install glade catalogs: ${enable_glade}${report_glade}
459                 Build API reference: ${enable_gtk_doc}${gtkdoc_postfix}
460              GObject instrospection: ${enable_introspection}${report_introspection}
461                 Test coverage build: ${enable_gcov}
462              Test framework support: ${enable_test_framework}${glib_postfix}