diff --git a/.gitignore b/.gitignore index dc97ee57..309be31d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ a.out *.trs tmp test/variables.sh +libvips/introspect scan compile po/*.pot diff --git a/libvips/Makefile.am b/libvips/Makefile.am index 80058c41..4fe34b05 100644 --- a/libvips/Makefile.am +++ b/libvips/Makefile.am @@ -79,6 +79,25 @@ INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) if HAVE_INTROSPECTION + +AM_CPPFLAGS = \ + `pkg-config gobject-introspection-1.0 --cflags` \ + -I${top_srcdir}/libvips/include \ + @VIPS_CFLAGS@ \ + @VIPS_INCLUDES@ +AM_LDFLAGS = \ + `pkg-config gobject-introspection-1.0 --libs` \ + @LDFLAGS@ +LDADD = @VIPS_CFLAGS@ libvips.la @VIPS_LIBS@ +if ENABLE_CXX +LDADD += @VIPS_CXX_LIBS@ +endif + +noinst_PROGRAMS = \ + introspect +introspect_SOURCES = \ + introspect.c + # we can't get the _SOURCES lists from the subdirs directly, we get passed it # by configure instead introspection_sources = @vips_introspection_sources@ @@ -95,6 +114,7 @@ INTROSPECTION_GIRS += Vips-8.0.gir # we have an unusual markup with optional args and we don't want to see all # those warnings Vips_8_0_gir_SCANNERFLAGS = \ + --program=./introspect \ --identifier-prefix=Vips \ --identifier-prefix=vips \ --symbol-prefix=vips diff --git a/libvips/introspect.c b/libvips/introspect.c new file mode 100644 index 00000000..0b7b8334 --- /dev/null +++ b/libvips/introspect.c @@ -0,0 +1,97 @@ +/* Entry point for g-ir-scanner ... this program is used during build time + * only. + * + * 19/12/14 + * - quick hack + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#ifdef HAVE_CONFIG_H +#include +#endif /*HAVE_CONFIG_H*/ +#include + +#include + +#include +#include + +static char *main_option_introspect_dump = NULL; + +static GOptionEntry main_option[] = { + { "introspect-dump", 'i', 0, + G_OPTION_ARG_NONE, &main_option_introspect_dump, + N_( "dump introspection data" ), NULL }, + { NULL } +}; + +int +main( int argc, char *argv[] ) +{ + GOptionContext *context; + GOptionGroup *main_group; + GError *error = NULL; + + if( VIPS_INIT( argv[0] ) ) + vips_error_exit( "unable to start VIPS" ); + textdomain( GETTEXT_PACKAGE ); + setlocale( LC_ALL, "" ); + + context = g_option_context_new( _( "- introspect" ) ); + main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); + g_option_group_add_entries( main_group, main_option ); + vips_add_option_entries( main_group ); + g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); + g_option_context_set_main_group( context, main_group ); + + if( !g_option_context_parse( context, &argc, &argv, &error ) ) { + if( error ) { + fprintf( stderr, "%s\n", error->message ); + g_error_free( error ); + } + + vips_error_exit( "try \"%s --help\"", g_get_prgname() ); + } + + g_option_context_free( context ); + + if( main_option_introspect_dump && + !g_irepository_dump( main_option_introspect_dump, &error ) ) { + if( error ) { + fprintf( stderr, "%s\n", error->message ); + g_error_free( error ); + } + + vips_error_exit( "unable to dump introspection" ); + } + + vips_shutdown(); + + return( 0 ); +}