From 8b9981970d0524d88b1922488bdec9210b0479fe Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Wed, 19 Jan 2011 12:33:26 +0900 Subject: [PATCH] Reorganize build infrastructure. Generate glib marshallers for libeek, check for pangocairo instead of checking pango and cairo individually, and link libeek against pango and cairo. --- configure.ac | 46 ++++++-- eek/Makefile.am | 241 ++++++++++++++++++++++----------------- eek/eek-marshallers.list | 1 + 3 files changed, 178 insertions(+), 110 deletions(-) create mode 100644 eek/eek-marshallers.list diff --git a/configure.ac b/configure.ac index 24125e01..136168b8 100644 --- a/configure.ac +++ b/configure.ac @@ -16,13 +16,31 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA -AC_INIT([eekboard], [0.0.7], [ueno@unixuser.org]) -AC_CONFIG_SRCDIR([configure.ac]) AC_PREREQ(2.63) -AM_INIT_AUTOMAKE -AM_PROG_CC_C_O +dnl AC_CONFIG_SRCDIR([configure.ac]) AC_CONFIG_MACRO_DIR([m4]) + +AC_INIT([eekboard], [0.0.7], [ueno@unixuser.org]) + +dnl Init automake +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE([enable]) +AC_GNU_SOURCE + +dnl Support silent build m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) + +dnl Check for programs +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CC_STDC +AC_PROG_INSTALL +AC_PROG_CXX + +# define PACKAGE_VERSION_* variables +AM_DISABLE_STATIC +AC_ISC_POSIX +AC_HEADER_STDC LT_INIT IT_PROG_INTLTOOL([0.35.0]) @@ -70,14 +88,13 @@ AC_SUBST([EEK_LIBRARY_SUFFIX_U],[AS_TR_SH([$EEK_LIBRARY_SUFFIX])]) AM_CONDITIONAL([HAVE_GTK_2],[test "$with_gtk" = "2.0"]) AM_CONDITIONAL([HAVE_GTK_3],[test "$with_gtk" = "3.0"]) +AM_PATH_GLIB_2_0 PKG_CHECK_MODULES([GLIB2], [glib-2.0], , [AC_MSG_ERROR([GLib2 not found])]) PKG_CHECK_MODULES([GOBJECT2], [gobject-2.0], , [AC_MSG_ERROR([GObject2 not found])]) -PKG_CHECK_MODULES([CAIRO], [cairo], , - [AC_MSG_ERROR([Cairo not found])]) -PKG_CHECK_MODULES([PANGO], [pango], , - [AC_MSG_ERROR([Pango not found])]) +PKG_CHECK_MODULES([PANGOCAIRO], [pangocairo], , + [AC_MSG_ERROR([PangoCairo not found])]) PKG_CHECK_MODULES([GTK], [ gtk+-$GTK_API_VERSION >= $GTK_REQUIRED gdk-$GTK_API_VERSION >= $GTK_REQUIRED], , @@ -111,6 +128,7 @@ AC_DEFINE_UNQUOTED([NEED_LIBNOTIFY_ATTACH_WORKAROUND], $need_libnotify_attach_workaround, [Define if notify_notification_new work around is needed]) +dnl Vala langauge binding AC_MSG_CHECKING([whether you enable Vala language support]) AC_ARG_ENABLE(vala, AS_HELP_STRING([--enable-vala=no/yes], @@ -119,6 +137,7 @@ AC_ARG_ENABLE(vala, AC_MSG_RESULT($enable_vala) AM_CONDITIONAL(ENABLE_VALA, [test x$enable_vala = xyes]) +dnl standalone application AC_MSG_CHECKING([whether you enable eekboard]) AC_ARG_ENABLE(eekboard, AS_HELP_STRING([--enable-eekboard=no/yes], @@ -127,6 +146,7 @@ AC_ARG_ENABLE(eekboard, AC_MSG_RESULT($enable_eekboard) AM_CONDITIONAL(ENABLE_EEKBOARD, [test x$enable_eekboard = xyes]) +dnl Clutter AC_MSG_CHECKING([whether you enable Clutter]) AC_ARG_ENABLE(clutter, AS_HELP_STRING([--enable-clutter=no/yes], @@ -181,3 +201,13 @@ eek/eek-gtk-${EEK_API_VERSION}.pc eek/eek-xkb-${EEK_API_VERSION}.pc eek/eek-xkl-${EEK_API_VERSION}.pc]) AC_OUTPUT +AC_MSG_RESULT([ +Build options: + Version $VERSION + Install prefix $prefix + Build shared libs $enable_shared + Build static libs $enable_static + CFLAGS $CFLAGS + Build vala binding $enable_vala + Build document $enable_gtk_doc +]) diff --git a/eek/Makefile.am b/eek/Makefile.am index 5847a960..ba3a6f0b 100644 --- a/eek/Makefile.am +++ b/eek/Makefile.am @@ -16,111 +16,139 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA -lib_LTLIBRARIES = \ - libeek.la \ - libeek-gtk.la \ - libeek-xkb.la \ +lib_LTLIBRARIES = \ + libeek.la \ + libeek-gtk.la \ + libeek-xkb.la \ libeek-xkl.la if HAVE_CLUTTER lib_LTLIBRARIES += libeek-clutter.la endif -libeek_la_SOURCES = \ - $(srcdir)/eek-layout.c \ - $(srcdir)/eek-layout.h \ - $(srcdir)/eek-element.c \ - $(srcdir)/eek-element.h \ - $(srcdir)/eek-container.c \ - $(srcdir)/eek-container.h \ - $(srcdir)/eek-keyboard.c \ - $(srcdir)/eek-keyboard.h \ - $(srcdir)/eek-section.c \ - $(srcdir)/eek-section.h \ - $(srcdir)/eek-key.c \ - $(srcdir)/eek-key.h \ - $(srcdir)/eek-types.h \ - $(srcdir)/eek-types.c \ - $(srcdir)/eek-keysym.h \ - $(srcdir)/eek-keysym.c \ - $(srcdir)/eek-special-keysym-labels.h \ - $(srcdir)/eek-unicode-keysym-labels.h \ +libeek_public_headers = \ + $(srcdir)/eek-keysym.h \ + $(srcdir)/eek-layout.h \ + $(srcdir)/eek-element.h \ + $(srcdir)/eek-container.h \ + $(srcdir)/eek-keyboard.h \ + $(srcdir)/eek-section.h \ + $(srcdir)/eek-key.h \ + $(srcdir)/eek-types.h \ + $(srcdir)/eek-keysym.h \ + $(srcdir)/eek.h + +libeek_sources = \ + $(srcdir)/eek-layout.c \ + $(srcdir)/eek-element.c \ + $(srcdir)/eek-container.c \ + $(srcdir)/eek-keyboard.c \ + $(srcdir)/eek-section.c \ + $(srcdir)/eek-key.c \ + $(srcdir)/eek-types.c \ + $(srcdir)/eek-keysym.c \ + $(srcdir)/eek-drawing.c + +libeek_keysym_sources = \ + $(srcdir)/eek-special-keysym-labels.h \ + $(srcdir)/eek-unicode-keysym-labels.h \ $(srcdir)/eek-keyname-keysym-labels.h -libeek_la_CFLAGS = $(GOBJECT2_CFLAGS) -libeek_la_LIBADD = $(GOBJECT2_LIBS) -lm + +libeek_enumtypes_sources = \ + $(srcdir)/eek-enumtypes.c \ + $(srcdir)/eek-enumtypes.h + +libeek_marshallers_sources = \ + $(srcdir)/eek-marshallers.c \ + $(srcdir)/eek-marshallers.h + +libeek_private_headers = \ + $(srcdir)/eek-drawing.h \ + $(srcdir)/eek-special-keysym-labels.h \ + $(srcdir)/eek-unicode-keysym-labels.h \ + $(srcdir)/eek-keyname-keysym-labels.h \ + $(srcdir)/eek-marshallers.h + +BUILT_SOURCES = \ + $(libeek_keysym_sources) \ + $(libeek_marshallers_sources) + +libeek_la_SOURCES = \ + $(libeek_sources) \ + $(srcdir)/eek-marshallers.c + +libeek_la_CFLAGS = $(GOBJECT2_CFLAGS) $(PANGOCAIRO_CFLAGS) +libeek_la_LIBADD = $(GOBJECT2_LIBS) $(PANGOCAIRO_LIBS) -lm if HAVE_CLUTTER -libeek_clutter_la_SOURCES = \ - $(srcdir)/eek-clutter-keyboard.c \ - $(srcdir)/eek-clutter-keyboard.h \ - $(srcdir)/eek-clutter-section.c \ - $(srcdir)/eek-clutter-section.h \ - $(srcdir)/eek-clutter-key.c \ - $(srcdir)/eek-clutter-key.h \ - $(srcdir)/eek-clutter-key-actor.c \ - $(srcdir)/eek-clutter-key-actor.h \ - $(srcdir)/eek-clutter-drawing-context.c \ +libeek_clutter_public_headers = \ + $(srcdir)/eek-clutter-keyboard.h \ + $(srcdir)/eek-clutter-section.h \ + $(srcdir)/eek-clutter-key.h \ $(srcdir)/eek-clutter-drawing-context.h \ - $(srcdir)/eek-drawing.h \ - $(srcdir)/eek-drawing.c \ $(srcdir)/eek-clutter.h -libeek_clutter_la_CFLAGS = $(CLUTTER_CFLAGS) $(CAIRO_LIBS) $(PANGO_LIBS) -libeek_clutter_la_LIBADD = libeek.la $(CLUTTER_LIBS) $(CAIRO_LIBS) $(PANGO_LIBS) +libeek_clutter_private_headers = \ + $(srcdir)/eek-clutter-key-actor.h + +libeek_clutter_sources = \ + $(srcdir)/eek-clutter-keyboard.c \ + $(srcdir)/eek-clutter-section.c \ + $(srcdir)/eek-clutter-key.c \ + $(srcdir)/eek-clutter-key-actor.c \ + $(srcdir)/eek-clutter-drawing-context.c + +libeek_clutter_la_SOURCES = $(libeek_clutter_sources) +libeek_clutter_la_CFLAGS = $(CLUTTER_CFLAGS) +libeek_clutter_la_LIBADD = libeek.la $(CLUTTER_LIBS) endif -libeek_gtk_la_SOURCES = \ - $(srcdir)/eek-gtk-keyboard.c \ - $(srcdir)/eek-gtk-keyboard.h \ - $(srcdir)/eek-drawing.h \ - $(srcdir)/eek-drawing.c \ +libeek_gtk_public_headers = \ + $(srcdir)/eek-gtk-keyboard.h \ $(srcdir)/eek-gtk.h +libeek_gtk_sources = \ + $(srcdir)/eek-gtk-keyboard.c -libeek_gtk_la_CFLAGS = $(GTK_CFLAGS) $(CAIRO_LIBS) $(PANGO_LIBS) -libeek_gtk_la_LIBADD = libeek.la $(GTK_LIBS) $(CAIRO_LIBS) $(PANGO_LIBS) +libeek_gtk_la_SOURCES = $(libeek_gtk_sources) +libeek_gtk_la_CFLAGS = $(GTK_CFLAGS) +libeek_gtk_la_LIBADD = libeek.la $(GTK_LIBS) -libeek_xkb_la_SOURCES = \ - $(srcdir)/eek-xkb-layout.h \ +libeek_xkb_public_headers = \ + $(srcdir)/eek-xkb-layout.h \ + $(srcdir)/eek-xkb.h + +libeek_xkb_sources = \ $(srcdir)/eek-xkb-layout.c +libeek_xkb_la_SOURCES = $(libeek_xkb_sources) libeek_xkb_la_CFLAGS = $(XKB_CFLAGS) $(GTK_CFLAGS) libeek_xkb_la_LIBADD = libeek.la $(XKB_LIBS) $(GTK_LIBS) -libeek_xkl_la_SOURCES = \ - $(srcdir)/eek-xkl-layout.h \ +libeek_xkl_public_headers = \ + $(srcdir)/eek-xkl-layout.h \ + $(srcdir)/eek-xkl.h + +libeek_xkl_sources = \ $(srcdir)/eek-xkl-layout.c +libeek_xkl_la_SOURCES = $(libeek_xkl_sources) libeek_xkl_la_CFLAGS = $(LIBXKLAVIER_CFLAGS) $(GTK_CFLAGS) libeek_xkl_la_LIBADD = libeek-xkb.la $(LIBXKLAVIER_LIBS) $(GTK_LIBS) eekdir = $(includedir)/eek-$(EEK_API_VERSION)/eek -eek_HEADERS = \ - $(srcdir)/eek-element.h \ - $(srcdir)/eek-container.h \ - $(srcdir)/eek-keyboard.h \ - $(srcdir)/eek-section.h \ - $(srcdir)/eek-key.h \ - $(srcdir)/eek-layout.h \ - $(srcdir)/eek-keysym.h \ - $(srcdir)/eek-types.h \ - $(srcdir)/eek-gtk-keyboard.h \ - $(srcdir)/eek-xkb-layout.h \ - $(srcdir)/eek-xkl-layout.h \ - $(srcdir)/eek.h \ - $(srcdir)/eek-gtk.h \ - $(srcdir)/eek-xkb.h \ - $(srcdir)/eek-xkl.h +eek_HEADERS = \ + $(libeek_public_headers) \ + $(libeek_clutter_public_headers) \ + $(libeek_gtk_public_headers) \ + $(libeek_xkb_public_headers) \ + $(libeek_xkl_public_headers) -if HAVE_CLUTTER -eek_HEADERS += \ - $(srcdir)/eek-clutter-keyboard.h \ - $(srcdir)/eek-clutter-section.h \ - $(srcdir)/eek-clutter-key.h \ - $(srcdir)/eek-clutter-drawing-context.h \ - $(srcdir)/eek-clutter.h -endif - -eek-keysym.c: eek-special-keysym-labels.h eek-unicode-keysym-labels.h eek-keyname-keysym-labels.h +noinst_HEADERS = \ + $(libeek_private_headers) \ + $(libeek_clutter_private_headers) \ + $(libeek_gtk_private_headers) \ + $(libeek_xkb_private_headers) \ + $(libeek_xkl_private_headers) eek-special-keysym-labels.h: special-keysym-labels.txt $(PYTHON) ./gen-keysym-labels.py special_keysym_labels < $< > $@ @@ -129,27 +157,36 @@ eek-unicode-keysym-labels.h: unicode-keysym-labels.txt eek-keyname-keysym-labels.h: keyname-keysym-labels.txt $(PYTHON) ./gen-keysym-labels.py keyname_keysym_labels < $< > $@ +# gen marshal +eek-marshallers.h: eek-marshallers.list + $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshallers.list --header --internal > $@.tmp && \ + mv $@.tmp $@ + +eek-marshallers.c: eek-marshallers.list eek-marshallers.h + $(AM_V_GEN) (echo "#include \"eek-marshallers.h\""; \ + $(GLIB_GENMARSHAL) --prefix=_eek_marshal $(srcdir)/eek-marshallers.list --body --internal) > $@.tmp && \ + mv $@.tmp $@ + pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = \ - eek-$(EEK_API_VERSION).pc \ - eek-clutter-$(EEK_API_VERSION).pc \ - eek-gtk-$(EEK_API_VERSION).pc \ - eek-xkb-$(EEK_API_VERSION).pc \ +pkgconfig_DATA = \ + eek-$(EEK_API_VERSION).pc \ + eek-clutter-$(EEK_API_VERSION).pc \ + eek-gtk-$(EEK_API_VERSION).pc \ + eek-xkb-$(EEK_API_VERSION).pc \ eek-xkl-$(EEK_API_VERSION).pc -DISTCLEANFILES = \ - eek-special-keysym-labels.h \ - eek-unicode-keysym-labels.h \ - eek-keyname-keysym-labels.h \ +CLEANFILES = + +DISTCLEANFILES = \ + $(BUILT_SOURCES) \ $(pkgconfig_DATA) -EXTRA_DIST = \ - gen-keysym-labels.py \ - special-keysym-labels.txt \ - unicode-keysym-labels.txt \ - keyname-keysym-labels.txt - -CLEANFILES = +EXTRA_DIST = \ + gen-keysym-labels.py \ + special-keysym-labels.txt \ + unicode-keysym-labels.txt \ + keyname-keysym-labels.txt \ + eek-marshallers.list -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = @@ -163,42 +200,42 @@ Eek@EEK_LIBRARY_SUFFIX_U@_gir_SCANNERFLAGS = --strip-prefix=Eek --pkg=glib-2.0 Eek@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GLib-2.0 GObject-2.0 Eek@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_la_CFLAGS) Eek@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek.la -Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_la_SOURCES) +Eek@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_sources) $(libeek_public_headers) EekGtk@EEK_LIBRARY_SUFFIX@.gir: libeek-gtk.la Eek@EEK_LIBRARY_SUFFIX@.gir EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Gtk-@GTK_API_VERSION@ Eek@EEK_LIBRARY_SUFFIX@ EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_gtk_la_CFLAGS) EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-gtk.la -EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_gtk_la_SOURCES) +EekGtk@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_gtk_sources) $(libeek_gtk_public_headers) if HAVE_CLUTTER EekClutter@EEK_LIBRARY_SUFFIX@.gir: libeek-clutter.la Eek@EEK_LIBRARY_SUFFIX@.gir EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Clutter-1.0 Eek@EEK_LIBRARY_SUFFIX@ EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_clutter_la_CFLAGS) EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-clutter.la -EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_clutter_la_SOURCES) +EekClutter@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_clutter_sources) $(libeek_clutter_public_headers) endif EekXkb@EEK_LIBRARY_SUFFIX@.gir: libeek-xkb.la Eek@EEK_LIBRARY_SUFFIX@.gir EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 Eek@EEK_LIBRARY_SUFFIX@ EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkb_la_CFLAGS) EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkb.la -EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkb_la_SOURCES) +EekXkb@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkb_sources) $(libeek_xkb_public_headers) EekXkl@EEK_LIBRARY_SUFFIX@.gir: libeek-xkl.la EekXkb@EEK_LIBRARY_SUFFIX@.gir EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_INCLUDES = GObject-2.0 EekXkb@EEK_LIBRARY_SUFFIX@ EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_CFLAGS = $(libeek_xkl_la_CFLAGS) EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_LIBS = libeek-xkl.la -EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_la_SOURCES) +EekXkl@EEK_LIBRARY_SUFFIX_U@_gir_FILES = $(libeek_xkl_sources) $(libeek_xkl_public_headers) -INTROSPECTION_GIRS += \ - Eek@EEK_LIBRARY_SUFFIX@.gir \ - EekGtk@EEK_LIBRARY_SUFFIX@.gir \ - EekXkb@EEK_LIBRARY_SUFFIX@.gir \ +INTROSPECTION_GIRS += \ + Eek@EEK_LIBRARY_SUFFIX@.gir \ + EekGtk@EEK_LIBRARY_SUFFIX@.gir \ + EekXkb@EEK_LIBRARY_SUFFIX@.gir \ EekXkl@EEK_LIBRARY_SUFFIX@.gir if HAVE_CLUTTER -INTROSPECTION_GIRS += \ +INTROSPECTION_GIRS += \ EekClutter@EEK_LIBRARY_SUFFIX@.gir endif diff --git a/eek/eek-marshallers.list b/eek/eek-marshallers.list new file mode 100644 index 00000000..1f953ddf --- /dev/null +++ b/eek/eek-marshallers.list @@ -0,0 +1 @@ +VOID:INT,INT