build: initial support for GTK+3
[adg.git] / configure.ac
blob28127c0cafc9962f414d3563890ce5540e30fa2a
1 m4_define([adg_version],[0.6.3])
2 m4_define([adg_api_version],[1.0])
3 m4_define([adg_lt_version],[1:0:0])
5 m4_define([cpml_version],adg_version)
6 m4_define([cpml_api_version],adg_api_version)
7 m4_define([cpml_lt_version],[1:0:0])
9 m4_define([gtkdoc_prereq],[1.9])
10 m4_define([gobject_prereq],[2.10.1])
11 m4_define([cairo_prereq],[1.7.4])
12 m4_define([gtk2_prereq],[2.12.0])
13 m4_define([gtk3_prereq],[3.0.0])
14 m4_define([pangocairo_prereq],[1.18.0])
15 m4_define([gi_prereq],[0.9.5])dnl Picked up from clutter
18 # Initialization
20 dnl autoconf 2.62 is required by GObject introspection:
21 dnl http://live.gnome.org/GObjectIntrospection/AutotoolsIntegration
22 AC_PREREQ([2.62])
23 AC_INIT([adg-1],adg_version,[http://dev.entidi.com/p/adg/],[adg],[http://adg.entidi.com/])
24 AC_CONFIG_SRCDIR([configure.ac])
25 AC_CONFIG_HEADERS([src/config.h])
26 AC_CONFIG_AUX_DIR([build])
27 AC_CONFIG_MACRO_DIR([build])
28 AM_INIT_AUTOMAKE([1.10 gnits no-dist-gzip dist-bzip2 -Wall -Wno-portability])
30 dnl m4 backward compatibility stuff
31 m4_ifdef([AM_SILENT_RULES],
32          [AM_SILENT_RULES([yes])],
33          [AC_SUBST([AM_V_GEN],[])])
34 m4_ifdef([AM_SUBST_NOTMAKE],[],
35          [AC_DEFUN([AM_SUBST_NOTMAKE],[_AM_SUBST_NOTMAKE($@)])])
36 m4_ifdef([AM_COND_IF],[],
37          [AC_DEFUN([AM_COND_IF],
38                    [AS_IF([test -z "$$1_TRUE"],[$2],[$3])])])
41 # Check for host information
43 AC_CANONICAL_HOST
44 case "${host}" in
45   *-*-linux*)
46     guessed_host=linux
47     ;;
48   *-*-freebsd*)
49     guessed_host=freebsd
50     ;;
51   *-*-mingw*)
52     guessed_host=mingw
53     ;;
54   *-*-solaris*)
55     guessed_host=solaris
56     ;;
57   *-*-darwin*)
58     guessed_host=darwin
59     ;;
60   *-*-beos*)
61     guessed_host=beos
62     ;;
63   *-*-cygwin*)
64     guessed_host=cygwin
65     ;;
66   *-*-minix)
67     guessed_host=minix
68     ;;
69   *-*-aix*)
70     guessed_host=aix
71     ;;
72   *)
73     guessed_host=unknown
74     ;;
75 esac
76 AM_CONDITIONAL([OS_UNIX],[test "${guessed_host}" != "mingw"])
77 AM_CONDITIONAL([OS_WINDOWS],[test "${guessed_host}" = "mingw" -o "${guessed_host}" = "cygwin"])
80 # Check for programs
82 AC_PROG_CC
83 AC_PROG_SED
84 PKG_PROG_PKG_CONFIG
85 AC_PATH_PROG([XSLTPROC],[xsltproc],[/usr/bin/xsltproc])
86 AC_PATH_PROG([GLIB_MKENUMS],[glib-mkenums],[/usr/bin/glib-mkenums])
87 AC_PATH_PROG([GLIB_GENMARSHAL],[glib-genmarshal],[/usr/bin/glib-genmarshal])
88 AC_PATH_PROG([GTESTER],[gtester],[/usr/bin/gtester])
89 AC_PATH_PROG([GTESTER_REPORT],[gtester-report],[/usr/bin/gtester-report])
90 AC_PATH_PROG([GLADE3],[glade-3],[/usr/bin/glade-3])
93 # Check for libraries
95 AC_CHECK_LIB([m],[cos])
98 # Libtool initialization
100 AC_MSG_CHECKING([which libtool initialization strategy to adopt])
101 AC_MSG_RESULT([m4_ifset([LT_INIT],[LT-INIT],[AC-PROG-LIBTOOL])])
102 m4_ifset([LT_INIT],
103          [LT_INIT([disable-static win32-dll])],
104          [AC_DISABLE_STATIC
105           AC_LIBTOOL_WIN32_DLL
106           AC_PROG_LIBTOOL])
109 # I18n
111 AC_SUBST([ADG_API_PACKAGE],AC_PACKAGE_TARNAME-adg_api_version)
112 AC_SUBST([GETTEXT_PACKAGE],[${ADG_API_PACKAGE}])
113 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["${ADG_API_PACKAGE}"],
114                    [Define to the domain used by gettext.])
115 ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
116 IT_PROG_INTLTOOL(0.40.1)
117 AM_GLIB_GNU_GETTEXT
118 GLIB_DEFINE_LOCALEDIR([LOCALEDIR])
119 AC_CONFIG_COMMANDS([default],
120                    [case "${CONFIG_FILES}" in *po-properties/Makefile.in*)
121         ${SED} -e "/POTFILES =/r po-properties/POTFILES" po-properties/Makefile.in > po-properties/Makefile
122     esac],
123                    [SED="${SED}"])
126 # Check for required packages
128 PKG_CHECK_MODULES([GLIB],[glib-2.0])
129 PKG_CHECK_MODULES([GOBJECT],[gobject-2.0 >= ]gobject_prereq)
130 PKG_CHECK_MODULES([CAIRO],[cairo >= ]cairo_prereq)
133 # Check for optional packages
135 dnl PangoCairo
136 AC_ARG_ENABLE([pango],
137               [AS_HELP_STRING([--enable-pango],
138                               [use pango for rendering text @<:@default=check@:>@])],
139               [],[enable_pango=check])
140 AS_IF([test "x${enable_pango}" != "xno"],
141       [PKG_CHECK_MODULES([PANGO],[pangocairo >= ]pangocairo_prereq,
142                          [enable_pango=yes
143                           AC_DEFINE_UNQUOTED([PANGO_ENABLED],[1],
144                                              [Defined if the pango support is enabled.])],
145                          [AS_IF([test "x${enable_pango}" = "xyes"],
146                                 [AC_MSG_ERROR([${PANGO_PKG_ERRORS} and pango support requested])],
147                                 [enable_pango=no])])])
148 AM_CONDITIONAL([HAVE_PANGO],[test "x${enable_pango}" = "xyes"])
150 dnl GTK+ support
151 AC_ARG_WITH(gtk,
152             [AC_HELP_STRING([--with-gtk=@<:@gtk2/gtk3@:>@],
153                             [include GTK+ specific widgets @<:@default=check@:>@])],
154             [],[with_gtk=check])
155 AS_IF([test "x${with_gtk}" = "xgtk3" -o "x${with_gtk}" = "xcheck"],
156       [PKG_CHECK_MODULES([GTK3],[gtk+-3.0 >= ]gtk3_prereq,
157                          [with_gtk=gtk3
158                           AC_DEFINE_UNQUOTED([GTK3_ENABLED],[1],
159                                              [Defined if the GTK+3 support is enabled.])],
160                          [AS_IF([test "x${with_gtk}" = "xgtk3"],
161                                 [AC_MSG_ERROR([${GTK3_PKG_ERRORS} and GTK+3 support requested])])])])
162 AS_IF([test "x${with_gtk}" = "xgtk2" -o "x{with_gtk}" = "xcheck"],
163       [PKG_CHECK_MODULES([GTK2],[gtk+-2.0 >= ]gtk2_prereq,
164                          [with_gtk=gtk2
165                           AC_DEFINE_UNQUOTED([GTK2_ENABLED],[1],
166                                              [Defined if the GTK+2 support is enabled.])],
167                          [AS_IF([test "x${with_gtk}" = "xgtk2"],
168                                 [AC_MSG_ERROR([${GTK2_PKG_ERRORS} and GTK+2 support requested])])])])
169 AM_CONDITIONAL([HAVE_GTK], [test "x${with_gtk}" = "xgtk2" -o "x${with_gtk}" = "xgtk3"])
170 AM_CONDITIONAL([HAVE_GTK2],[test "x${with_gtk}" = "xgtk2"])
171 AM_CONDITIONAL([HAVE_GTK3],[test "x${with_gtk}" = "xgtk3"])
173 dnl Glade
174 AC_ARG_ENABLE([glade],
175               [AS_HELP_STRING([--enable-glade],
176                               [install glade catalog file @<:@default=check@:>@])],
177               [],[enable_glade=check])
178 AS_IF([test "x${enable_glade}" != "xno"],
179       [PKG_CHECK_MODULES([GLADE],[gladeui-1.0],
180                          [enable_glade=yes],
181                          [AS_IF([test "x${enable_glade}" = "xyes"],
182                                 [AC_MSG_ERROR([${GLADE_PKG_ERRORS} and glade support requested])],
183                                 [enable_glade=no])])])
184 AM_CONDITIONAL([HAVE_GLADE],[test "x${enable_glade}" = "xyes"])
186 dnl gtk-doc
187 GTK_DOC_CHECK(gtkdoc_prereq)
189 dnl GObject introspection
190 GOBJECT_INTROSPECTION_CHECK(gi_prereq)
191 AM_COND_IF([HAVE_INTROSPECTION],
192            [enable_introspection='yes'],
193            [enable_introspection='no'])
196 dnl GLib test framework
197 AC_ARG_ENABLE([test_framework],
198               [AS_HELP_STRING([--enable-test-framework],
199                               [enable GLib test framework @<:@default=check@:>@])],
200               [],[enable_test_framework=check])
201 AS_IF([test "x${enable_test_framework}" != "xno"],
202       [PKG_CHECK_EXISTS([glib-2.0 >= 2.16.0],
203                         [enable_test_framework=yes],
204                         [AS_IF([test "x${enable_test_framework}" = "xyes"],
205                                [AC_MSG_ERROR([The test framework needs glib2-2.16.0 or later])],
206                                [enable_test_framework=no])])])
207 AM_CONDITIONAL([HAVE_TEST_FRAMEWORK],[test "x${enable_test_framework}" = "xyes"])
210 # Check for compiler characteristics
212 AC_C_CONST
215 # Substitutions
217 DLLDIR="$(${PKG_CONFIG} --variable=prefix gobject-2.0)/bin"
218 CPML_REQUIRES='cairo >= cairo_prereq'
219 AM_COND_IF([HAVE_PANGO],
220       [ADG_REQUIRES='pangocairo >= pangocairo_prereq'
221        ADG_H_ADDITIONAL='
222 #include <pango/pango.h>
223 #include "adg/adg-text.h"
224 #include "adg/adg-pango-style.h"
226       [ADG_REQUIRES='gobject-2.0 >= gobject_prereq'
227        ADG_H_ADDITIONAL=''])
228 AM_COND_IF([HAVE_GTK3],[ADG_REQUIRES='gtk+-3.0 >= gtk3_prereq'])
229 AM_COND_IF([HAVE_GTK2],[ADG_REQUIRES='gtk+-2.0 >= gtk2_prereq'])
230 AM_COND_IF([HAVE_GTK],
231            [ADG_H_ADDITIONAL="${ADG_H_ADDITIONAL}
232 #include <gtk/gtk.h>
233 #include \"adg/adg-gtk-utils.h\"
234 #include \"adg/adg-gtk-area.h\"
235 #include \"adg/adg-gtk-layout.h\"
237             ADG_CANVAS_H_ADDITIONAL='
238 void            adg_canvas_set_paper            (AdgCanvas      *canvas,
239                                                  const gchar    *paper_name,
240                                                  GtkPageOrientation orientation);
241 void            adg_canvas_set_page_setup       (AdgCanvas      *canvas,
242                                                  GtkPageSetup   *page_setup);
244            [ADG_CANVAS_H_ADDITIONAL=''])
245 AM_COND_IF([HAVE_GLADE],
246            [gladeroot=`${PKG_CONFIG} --variable=datarootdir gladeui-1.0`
247             AS_IF([test "x${gladeroot}" = "x"],
248                   [GLADE_CATALOGDIR="\${datarootdir}/glade3/catalogs}"],
249                   [gladecatalog=`${PKG_CONFIG} --variable=catalogdir gladeui-1.0`
250                    GLADE_CATALOGDIR=`echo "${gladecatalog}" | ${SED} -e "s|^${gladeroot}|"'${datarootdir}|'`])
251             report_glade_catalogdir="
252                   Glade catalog dir: ${GLADE_CATALOGDIR}"],
253            [GLADE_CATALOGDIR=''
254             report_glade_catalogdir=''])
256 AC_SUBST([CPML_API_VERSION],cpml_api_version)
257 AC_SUBST([CPML_LT_VERSION],cpml_lt_version)
258 AC_SUBST([CPML_REQUIRES])
259 AC_SUBST([ADG_API_VERSION],adg_api_version)
260 AC_SUBST([ADG_LT_VERSION],adg_lt_version)
261 AC_SUBST([ADG_REQUIRES])
262 AC_SUBST([ADG_H_ADDITIONAL])
263 AC_SUBST([ADG_CANVAS_H_ADDITIONAL])
264 AC_SUBST([DLLDIR])
265 AC_SUBST([GLADE_CATALOGDIR])
267 AM_SUBST_NOTMAKE([CPML_REQUIRES])
268 AM_SUBST_NOTMAKE([ADG_REQUIRES])
269 AM_SUBST_NOTMAKE([ADG_H_ADDITIONAL])
270 AM_SUBST_NOTMAKE([ADG_CANVAS_H_ADDITIONAL])
271 AM_SUBST_NOTMAKE([DLLDIR])
274 # Generation
276 AC_CONFIG_FILES([build/adg.nsi
277                  Makefile
278                  src/Makefile
279                  src/cpml/cpml-1.pc
280                  src/cpml/Makefile
281                  src/cpml/tests/Makefile
282                  src/adg/adg-1.pc
283                  src/adg.h
284                  src/adg/Makefile
285                  src/adg/adg-canvas.h
286                  src/adg/tests/Makefile
287                  demo/Makefile
288                  demo/cpml-demo.ui
289                  demo/adg-demo.ui
290                  po/Makefile.in
291                  po-properties/Makefile.in
292                  docs/Makefile
293                  docs/cpml/Makefile
294                  docs/cpml/bookinfo.xml
295                  docs/adg/Makefile
296                  docs/adg/bookinfo.xml])
297 AC_CONFIG_FILES([demo/adg-glade],[chmod +x demo/adg-glade])
298 AC_OUTPUT
301 # Report
303 AC_MSG_NOTICE([generating report
305 AC_PACKAGE_NAME adg_version will be built with the following options:
306 ----------------------------------------------------------
307                   API compatibility: adg_api_version
308                 CPML library to use: internal (cpml-adg_version)
309          Build pango based entities: ${enable_pango}
310                        GTK+ support: ${with_gtk}
311              Install glade catalogs: ${enable_glade}${report_glade_catalogdir}
312                 Build API reference: ${enable_gtk_doc}
313              GObject instrospection: ${enable_introspection}
314              Test framework support: ${enable_test_framework}