[egg-list-box/wip/libgd-like] Convert the build system to be similar to libgd



commit 5d6d8bff3416bb531f6bdd3a5c85be4cc2dc2fb4
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Wed Mar 20 18:19:51 2013 +0100

    Convert the build system to be similar to libgd
    
    Provide a EGG_LIST_BOX_INIT() macro similar to LIBGD_INIT, and stop
    using recursive configure, relying instead on the parent project
    to run automake and configure in the subdirectory.
    This way we can pass options down to the submodule, and the pkgdatadir /
    pkglibdir directories are picked correctly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=681224

 Makefile.am     |   51 ++++++++++++++++++++++++++++++------------------
 configure.ac    |   30 ----------------------------
 egg-list-box.m4 |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 90 insertions(+), 49 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 282ff54..c2d4142 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,31 +1,35 @@
 NULL =
+MAINTAINERCLEANFILES =
+noinst_DATA =
 
 AM_CPPFLAGS = \
        -include config.h \
-       $(LISTBOX_CFLAGS) \
+        -DG_LOG_DOMAIN=\"EggListBox\" \
+       $(EGG_LIST_BOX_CFLAGS) \
        $(NULL)
 
 AM_VALAFLAGS = \
-       @LISTBOX_PACKAGES@ \
+       --pkg gtk+-3.0 \
        --vapidir=. \
        $(NULL)
 
-noinst_LTLIBRARIES = \
-       libegglistbox.la \
-       libeggflowbox.la \
-       $(NULL)
+if EGG_LIST_BOX_STATIC
+noinst_LTLIBRARIES = libegglistbox.la libeggfloxbox.la
+else
+pkglib_LTLIBRARIES = libegglistbox.la libeggflowbox.la
+endif
 
 libegglistbox_la_SOURCES = \
        egg-list-box.c egg-list-box.h \
        egg-list-box-accessible.c egg-list-box-accessible.h
 
-libegglistbox_la_LIBADD = $(LISTBOX_LIBS)
+libegglistbox_la_LIBADD = $(EGG_LIST_BOX_LIBS)
 
 libeggflowbox_la_SOURCES = \
        egg-flow-box.c egg-flow-box.h \
        egg-flow-box-accessible.c egg-flow-box-accessible.h
 
-libeggflowbox_la_LIBADD = $(LISTBOX_LIBS)
+libeggflowbox_la_LIBADD = $(EGG_LIST_BOX_LIBS)
 
 noinst_PROGRAMS = test-list test-scrolled test-focus test-sel test-flow-box
 
@@ -34,7 +38,7 @@ test_sel_SOURCES = \
        $(NULL)
 
 test_sel_LDADD = \
-       $(LISTBOX_LIBS) \
+       $(EGG_LIST_BOX_LIBS) \
        libegglistbox.la \
        $(NULL)
 
@@ -43,7 +47,7 @@ test_list_SOURCES = \
        $(NULL)
 
 test_list_LDADD = \
-       $(LISTBOX_LIBS) \
+       $(EGG_LIST_BOX_LIBS) \
        libegglistbox.la \
        $(NULL)
 
@@ -71,7 +75,7 @@ test_focus_SOURCES = \
        $(NULL)
 
 test_focus_LDADD = \
-       $(LISTBOX_LIBS) \
+       $(EGG_LIST_BOX_LIBS) \
        libegglistbox.la \
        $(NULL)
 
@@ -80,7 +84,7 @@ test_flow_box_SOURCES = \
        $(NULL)
 
 test_flow_box_LDADD = \
-       $(LISTBOX_LIBS) \
+       $(EGG_LIST_BOX_LIBS) \
        libeggflowbox.la \
        $(NULL)
 
@@ -92,30 +96,39 @@ CLEANFILES = \
 EXTRA_DIST = \
        $(NULL)
 
+if EGG_LIST_BOX_GIR
 include $(INTROSPECTION_MAKEFILE)
 INTROSPECTION_GIRS =
 INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
 INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
 
-if HAVE_INTROSPECTION
-
 Egg-1.0.gir: libegglistbox.la Makefile
 Egg_1_0_gir_NAMESPACE = Egg
 Egg_1_0_gir_VERSION = 1.0
 Egg_1_0_gir_LIBS = libegglistbox.la libeggflowbox.la
-Egg_1_0_gir_CFLAGS = $(LISTBOX_CFLAGS)
+Egg_1_0_gir_CFLAGS = $(EGG_LIST_BOX_CFLAGS)
 Egg_1_0_gir_SCANNERFLAGS =                     \
        --warn-all                              \
        --symbol-prefix=egg                     \
        --identifier-prefix=Egg                 \
        $(NULL)
-Egg_1_0_gir_INCLUDES = GObject-2.0 Gtk-3.0
+Egg_1_0_gir_INCLUDES = $(EGG_LIST_BOX_GIR_INCLUDES)
 Egg_1_0_gir_FILES = $(libegglistbox_la_SOURCES) $(libeggflowbox_la_SOURCES)
 INTROSPECTION_GIRS += Egg-1.0.gir
 
-noinst_DATA = $(INTROSPECTION_GIRS)
+if EGG_LIST_BOX_STATIC
+noinst_DATA += $(srcdir)/Egg-1.0.gir
+EXTRA_DIST += $(srcdir)/Egg-1.0.gir
+MAINTAINERCLEANFILES += $(srcdir)/Egg-1.0.gir
+else
+girdir= $(pkgdatadir)/gir-1.0
+typelibdir= $(pkglibdir)/girepository-1.0
 
-CLEANFILES += $(gir_DATA) $(typelib_DATA)
-DISTCLEANFILES = $(builddir)/Egg-1.0.gir
+gir_DATA = $(INTROSPECTION_GIRS)
+typelib_DATA = $(gir_DATA:.gir=.typelib)
 
+CLEANFILES += $(gir_DATA) $(typelib_DATA)
 endif
+endif
+
+
diff --git a/egg-list-box.m4 b/egg-list-box.m4
new file mode 100644
index 0000000..ba45b49
--- /dev/null
+++ b/egg-list-box.m4
@@ -0,0 +1,58 @@
+dnl The option stuff below is based on the similar code from libgd
+
+# _EGG_LIST_BOX_MANGLE_OPTION(NAME)
+# -------------------------
+# Convert NAME to a valid m4 identifier, by replacing invalid characters
+# with underscores, and prepend the _EGG_LIST_BOX_OPTION_ suffix to it.
+AC_DEFUN([_EGG_LIST_BOX_MANGLE_OPTION],
+[[_EGG_LIST_BOX_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _EGG_LIST_BOX_SET_OPTION(NAME)
+# ----------------------
+# Set option NAME.  If NAME begins with a digit, treat it as a requested
+# Guile version number, and define _EGG_LIST_BOX_GUILE_VERSION to that number.
+# Otherwise, define the option using _EGG_LIST_BOX_MANGLE_OPTION.
+AC_DEFUN([_EGG_LIST_BOX_SET_OPTION],
+[m4_define(_EGG_LIST_BOX_MANGLE_OPTION([$1]), 1)])
+
+# _EGG_LIST_BOX_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of libgd options.
+AC_DEFUN([_EGG_LIST_BOX_SET_OPTIONS],
+[m4_foreach_w([_EGG_LIST_BOX_Option], [$1], [_EGG_LIST_BOX_SET_OPTION(_EGG_LIST_BOX_Option)])])
+
+# _EGG_LIST_BOX_IF_OPTION_SET(NAME,IF-SET,IF-NOT-SET)
+# -------------------------------------------
+# Check if option NAME is set.
+AC_DEFUN([_EGG_LIST_BOX_IF_OPTION_SET],
+[m4_ifset(_EGG_LIST_BOX_MANGLE_OPTION([$1]),[$2],[$3])])
+
+dnl EGG_LIST_BOX_INIT([OPTIONS], [DIR])
+dnl ----------------------------
+dnl OPTIONS      A whitespace-seperated list of options.
+dnl DIR          egg-list-box submodule directory (defaults to 'egg-list-box')
+AC_DEFUN([EGG_LIST_BOX_INIT], [
+    _EGG_LIST_BOX_SET_OPTIONS([$1])
+    AC_SUBST([EGG_LIST_BOX_MODULE_DIR],[m4_if([$2],,[egg-list-box],[$2])])
+
+    AC_REQUIRE([LT_INIT])
+    AC_REQUIRE([AC_CHECK_LIBM])
+    AC_REQUIRE([AM_PROG_VALAC])
+    AC_SUBST(LIBM)
+    EGG_LIST_BOX_MODULES="gtk+-3.0 >= 3.7.6
+                          glib-2.0 >= 2.31.10"
+    EGG_LIST_BOX_GIR_INCLUDES="Gtk-3.0"
+    EGG_LIST_BOX_SOURCES=""
+
+    AM_CONDITIONAL([EGG_LIST_BOX_STATIC],[_EGG_LIST_BOX_IF_OPTION_SET([static],[true],[false])])
+
+    # gir: gobject introspection support
+    AM_CONDITIONAL([EGG_LIST_BOX_GIR],[ _EGG_LIST_BOX_IF_OPTION_SET([gir],[true],[false])])
+    _EGG_LIST_BOX_IF_OPTION_SET([gir],[
+        GOBJECT_INTROSPECTION_REQUIRE([0.9.6])
+    ])
+
+    PKG_CHECK_MODULES(EGG_LIST_BOX, [ $EGG_LIST_BOX_MODULES ])
+    AC_SUBST(EGG_LIST_BOX_GIR_INCLUDES)
+    AC_SUBST(EGG_LIST_BOX_SOURCES)
+])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]