[libgda] Initial support for GObject Introspection, bug #585351
- From: Vivien Malerba <vivien src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgda] Initial support for GObject Introspection, bug #585351
- Date: Wed, 9 Dec 2009 20:42:05 +0000 (UTC)
commit efdcbda91a42b7a6eca448a0b77bb5e20e0ff0bc
Author: Vivien Malerba <malerba gnome-db org>
Date: Wed Dec 9 21:41:35 2009 +0100
Initial support for GObject Introspection, bug #585351
thanks to Daniel Espinosa for the work!
INSTALL | 53 ++++++++++++++-------------
configure.in | 6 +++
introspection.m4 | 88 +++++++++++++++++++++++++++++++++++++++++++++
libgda/.gitignore | 4 ++-
libgda/Makefile.am | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++
libgda/gda-types.h | 2 +
6 files changed, 226 insertions(+), 27 deletions(-)
---
diff --git a/INSTALL b/INSTALL
index 23e5f25..d3c5b40 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,8 @@
Installation Instructions
*************************
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
@@ -10,7 +10,10 @@ unlimited permission to copy, distribute and modify it.
Basic Installation
==================
-These are generic installation instructions.
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -23,9 +26,9 @@ debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
+the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
-cache files.)
+cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
@@ -35,20 +38,17 @@ some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
+ `./configure' to configure the package for your system.
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
2. Type `make' to compile the package.
@@ -67,6 +67,9 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
+ 6. Often, you can also type `make uninstall' to remove the installed
+ files again.
+
Compilers and Options
=====================
@@ -78,7 +81,7 @@ details on some of the pertinent environment variables.
by setting variables in the command line or in the environment. Here
is an example:
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
@@ -87,17 +90,15 @@ Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
+own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
Installation Names
==================
@@ -190,12 +191,12 @@ them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script). Here is a another example:
+overridden in the site shell script).
- /bin/bash ./configure CONFIG_SHELL=/bin/bash
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
-configuration-related scripts to be executed by `/bin/bash'.
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
diff --git a/configure.in b/configure.in
index 63ceeb2..afa028b 100644
--- a/configure.in
+++ b/configure.in
@@ -3,6 +3,7 @@ m4_define(minor, 1)
m4_define(micro, 4)
m4_define([gda_stable],
m4_if(m4_eval(minor % 2), [0], [yes], [no]))
+m4_include(introspection.m4)
AC_INIT(GNU Data Access, major.minor.micro, gnome-db-list gnome org, libgda)
AC_PREREQ(2.59)
@@ -424,6 +425,11 @@ fi
AC_SUBST(JSON_GLIB_CFLAGS)
AC_SUBST(JSON_GLIB_LIBS)
+dnl *********************************
+dnl Check for GObject Introspection
+dnl *********************************
+GOBJECT_INTROSPECTION_CHECK([0.6.5])
+
dnl ******************************
dnl Checks for libgcrypt
dnl ******************************
diff --git a/introspection.m4 b/introspection.m4
new file mode 100644
index 0000000..bb3a0da
--- /dev/null
+++ b/introspection.m4
@@ -0,0 +1,88 @@
+dnl -*- mode: autoconf -*-
+dnl Copyright 2009 Johan Dahlin
+dnl
+dnl This file is free software; the author(s) gives unlimited
+dnl permission to copy and/or distribute it, with or without
+dnl modifications, as long as this notice is preserved.
+dnl
+
+# serial 1
+
+m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
+
+ dnl enable/disable introspection
+ m4_if([$2], [require],
+ [dnl
+ enable_introspection=yes
+ ],[dnl
+ AC_ARG_ENABLE(introspection,
+ AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
+ [Enable introspection for this build]),,
+ [enable_introspection=auto])
+ ])dnl
+
+ AC_MSG_CHECKING([for gobject-introspection])
+
+ dnl presence/version checking
+ AS_CASE([$enable_introspection],
+ [no], [dnl
+ found_introspection="no (disabled, use --enable-introspection to enable)"
+ ],dnl
+ [yes],[dnl
+ PKG_CHECK_EXISTS([gobject-introspection-1.0],,
+ AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
+ found_introspection=yes,
+ AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
+ ],dnl
+ [auto],[dnl
+ PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
+ ],dnl
+ [dnl
+ AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
+ ])dnl
+
+ AC_MSG_RESULT([$found_introspection])
+
+ INTROSPECTION_SCANNER=
+ INTROSPECTION_COMPILER=
+ INTROSPECTION_GENERATE=
+ INTROSPECTION_GIRDIR=
+ INTROSPECTION_TYPELIBDIR=
+ if test "x$found_introspection" = "xyes"; then
+ INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+ INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+ INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
+ INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
+ INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
+ fi
+ AC_SUBST(INTROSPECTION_SCANNER)
+ AC_SUBST(INTROSPECTION_COMPILER)
+ AC_SUBST(INTROSPECTION_GENERATE)
+ AC_SUBST(INTROSPECTION_GIRDIR)
+ AC_SUBST(INTROSPECTION_TYPELIBDIR)
+
+ AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
+])
+
+
+dnl Usage:
+dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
+
+AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
+[
+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
+])
+
+dnl Usage:
+dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
+
+
+AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
+[
+ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
+])
diff --git a/libgda/.gitignore b/libgda/.gitignore
index 2779932..2dba251 100644
--- a/libgda/.gitignore
+++ b/libgda/.gitignore
@@ -5,4 +5,6 @@ s-enum-types-c
s-enum-types-h
gda-enum-types.c
gda-enum-types.h
-libgda.def
\ No newline at end of file
+libgda.def
+Gda-4.0.gir
+Gda-4.0.typelib
diff --git a/libgda/Makefile.am b/libgda/Makefile.am
index 066d37f..e0a8395 100644
--- a/libgda/Makefile.am
+++ b/libgda/Makefile.am
@@ -1,3 +1,5 @@
+QUIET_GEN = $(Q:@= echo ' GEN '$@;)
+
lib_LTLIBRARIES = libgda-4.0.la
SUBDIRS = sqlite handlers binreloc sql-parser providers-support thread-wrapper
@@ -274,3 +276,101 @@ EXTRA_DIST = \
keywords.list
DISTCLEANFILES = .deps/*.P
+if HAVE_INTROSPECTION
+BUILT_GIRSOURCES =
+psupport = \
+ providers-support/gda-pstmt.h \
+ providers-support/gda-pstmt.c
+
+threadwrapper = \
+ thread-wrapper/gda-thread-wrapper.h \
+ thread-wrapper/gda-thread-wrapper.c
+
+sqlparser = \
+ sql-parser/gda-sql-parser.h \
+ sql-parser/gda-sql-parser-enum-types.c \
+ sql-parser/gda-sql-statement.h \
+ sql-parser/gda-statement-struct-decl.h \
+ sql-parser/gda-statement-struct.h \
+ sql-parser/gda-statement-struct-compound.h \
+ sql-parser/gda-statement-struct-delete.h \
+ sql-parser/gda-statement-struct-update.h \
+ sql-parser/gda-statement-struct-insert.h \
+ sql-parser/gda-statement-struct-parts.h \
+ sql-parser/gda-statement-struct-pspec.h \
+ sql-parser/gda-statement-struct-select.h \
+ sql-parser/gda-statement-struct-trans.h \
+ sql-parser/gda-statement-struct-unknown.h \
+ sql-parser/gda-statement-struct-util.h \
+ sql-parser/gda-sql-parser.c \
+ sql-parser/gda-sql-parser-enum-types.c \
+ sql-parser/gda-statement-struct.c \
+ sql-parser/gda-statement-struct-compound.c \
+ sql-parser/gda-statement-struct-delete.c \
+ sql-parser/gda-statement-struct-update.c \
+ sql-parser/gda-statement-struct-insert.c \
+ sql-parser/gda-statement-struct-parts.c \
+ sql-parser/gda-statement-struct-pspec.c \
+ sql-parser/gda-statement-struct-select.c \
+ sql-parser/gda-statement-struct-trans.c \
+ sql-parser/gda-statement-struct-unknown.c \
+ sql-parser/gda-statement-struct-util.c
+
+handlers = \
+ handlers/gda-handler-bin.h \
+ handlers/gda-handler-boolean.h \
+ handlers/gda-handler-numerical.h \
+ handlers/gda-handler-string.h \
+ handlers/gda-handler-time.h \
+ handlers/gda-handler-type.h \
+ handlers/gda-handler-bin.c \
+ handlers/gda-handler-boolean.c \
+ handlers/gda-handler-numerical.c \
+ handlers/gda-handler-string.c \
+ handlers/gda-handler-time.c \
+ handlers/gda-handler-type.c
+
+Gda- GDA_ABI_VERSION@.gir: $(INTROSPECTION_SCANNER) libgda- GDA_ABI_VERSION@.la
+ $(INTROSPECTION_SCANNER) -v \
+ --namespace Gda --nsversion= GDA_ABI_VERSION@ \
+ -I$(top_srcdir) \
+ $(LIBGDA_CFLAGS) \
+ --add-include-path=providers-support \
+ --add-include-path=sql-parser \
+ --add-include-path=thread-wrapper \
+ --add-include-path=handlers \
+ --c-include='libgda/libgda.h' \
+ --include=GL-1.0 \
+ --include=GObject-2.0 \
+ --include=libxml2-2.0 \
+ --library=gda- GDA_ABI_VERSION@ \
+ $(INCLUDE_CFLAGS) \
+ --output $@ \
+ $(gda_headers) gda-types.h \
+ $(gda_sources) \
+ $(psupport) \
+ $(sqlparser) \
+ $(threadwraper) \
+ $(handlers)
+
+BUILT_GIRSOURCES += Gda- GDA_ABI_VERSION@.gir
+
+endif
+
+girdir = $(datadir)/libgda-4.0/gir-1.0
+gir_DATA = $(BUILT_GIRSOURCES)
+
+typelibsdir = $(libdir)/girepository-1.0/
+
+typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
+
+Gda- GDA_ABI_VERSION@.typelib: Gda- GDA_ABI_VERSION@.gir $(INTROSPECTION_COMPILER)
+ $(QUIET_GEN)$(DEBUG) $(INTROSPECTION_COMPILER) \
+ --includedir=$(srcdir) --includedir=. \
+ --includedir=$(srcdir)/providers-support \
+ --includedir=$(srcdir)/sql-parser \
+ --includedir=$(srcdir)/thread-wrapper \
+ --includedir=$(srcdir)/handlers \
+ $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
+
+CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
diff --git a/libgda/gda-types.h b/libgda/gda-types.h
index 7c7863f..1580212 100644
--- a/libgda/gda-types.h
+++ b/libgda/gda-types.h
@@ -26,10 +26,12 @@ G_BEGIN_DECLS
/* Boxed type for GError will not be done in GLib see bug #300610 */
#define GDA_TYPE_ERROR (_gda_error_get_type())
+typedef GError GdaError;
GType _gda_error_get_type (void) G_GNUC_CONST;
/* Pointer type for GSList (not a boxed type!) */
#define GDA_TYPE_SLIST (_gda_slist_get_type())
+typedef GSList GdaSList;
GType _gda_slist_get_type (void) G_GNUC_CONST;
/* Pointer type for GdaMetaContext (not a boxed type!) */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]