diff –git a/Makefile-gir.am b/Makefile-gir.am index a09260a..540e2d1 100644 — a/Makefile-gir.am +++ b/Makefile-gir.am @@ -68,7 +68,8 @@ GLib_2_0_gir_SCANNERFLAGS = \

--symbol-prefix=g \
--symbol-prefix=glib \
--c-include="glib.h" \

+ $(GLib_2_0_gir_DOCSRC) \ + –library-path=$(GLIB_LIBDIR)

GLib_2_0_gir_PACKAGES = glib-2.0
GLib_2_0_gir_CFLAGS = \
            -I$(GLIB_INCLUDEDIR) \

@@ -87,7 +88,12 @@ endif

BUILT_GIRSOURCES += GLib-2.0.gir

-GLib-2.0.gir: g-ir-scanner g-ir-compiler$(EXEEXT) +if BUILD_SCANNER +G_IR_SCANNER_DEPENDENCY = g-ir-scanner +else +G_IR_SCANNER_DEPENDENCY = +endif +GLib-2.0.gir: $(G_IR_SCANNER_DEPENDENCY) g-ir-compiler$(EXEEXT)

gir/DBusGLib-1.0.typelib: GObject-2.0.gir

@@ -105,7 +111,8 @@ GObject_2_0_gir_SCANNERFLAGS = \

--identifier-prefix=G \
--c-include="glib-object.h" \
--add-include-path=. \

+ $(GObject_2_0_gir_DOCSRC) \ + –library-path=$(GOBJECT_LIBDIR)

GObject_2_0_gir_PACKAGES = gobject-2.0
GObject_2_0_gir_INCLUDES = GLib-2.0

@@ -133,7 +140,8 @@ GModule_2_0_gir_SCANNERFLAGS = \

--identifier-prefix=G \
--c-include="gmodule.h" \
--add-include-path=. \

+ $(GModule_2_0_gir_DOCSRC) \ + –library-path=$(GMODULE_LIBDIR)

GModule_2_0_gir_PACKAGES = gmodule-2.0
GModule_2_0_gir_INCLUDES = GLib-2.0

@@ -173,7 +181,8 @@ Gio_2_0_gir_SCANNERFLAGS = \

--c-include="gio/gio.h" \
$(GIO_CINCLUDES) \
--add-include-path=. \

+ $(Gio_2_0_gir_DOCSRC) \ + –library-path=$(GIO_LIBDIR)

Gio_2_0_gir_PACKAGES = gio-2.0 $(GIO_UNIX_PACKAGES)
Gio_2_0_gir_INCLUDES = GObject-2.0

diff –git a/Makefile-giscanner.am b/Makefile-giscanner.am index b0e1373..fd618c9 100644 — a/Makefile-giscanner.am +++ b/Makefile-giscanner.am @@ -1,17 +1,21 @@

## Process this file with automake to produce Makefile.in

+if BUILD_SCANNER

BUILT_SOURCES +=                       scannerparser.c                 scannerparser.h                 scannerlexer.c                  scannerlexer.h

+endif

AM_YFLAGS = -d -t

# Why do I have to do this automake?
scannerlexer.h: scannerlexer.c

+if BUILD_SCANNER

noinst_LTLIBRARIES += libgiscanner.la

+endif

libgiscanner_la_SOURCES = \
       giscanner/sourcescanner.c                               \

@@ -24,7 +28,9 @@ libgiscanner_la_CFLAGS = $(GOBJECT_CFLAGS) $(GIO_CFLAGS)

# Python module
pkgpyexecdir = $(pkglibdir)/giscanner

+if BUILD_SCANNER

pkgpyexec_LTLIBRARIES = _giscanner.la

+endif

pkgpyexec_PYTHON =                     \
       giscanner/__init__.py           \
       giscanner/annotationmain.py     \

diff –git a/Makefile-tools.am b/Makefile-tools.am index dbd264c..c9b58c2 100644 — a/Makefile-tools.am +++ b/Makefile-tools.am @@ -1,5 +1,7 @@

bin_PROGRAMS += g-ir-compiler g-ir-generate g-ir-inspect

+if BUILD_SCANNER

bin_SCRIPTS += g-ir-scanner g-ir-annotation-tool

+endif

if BUILD_DOCTOOL
bin_SCRIPTS += g-ir-doc-tool

@@ -10,6 +12,7 @@ EXTRA_DIST += \

TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON\@,$(PYTHON),

+if BUILD_SCANNER

g-ir-scanner: tools/g-ir-tool-template.in _giscanner.la Makefile
       $(AM_V_GEN) sed $(TOOL_SUBSTITUTIONS) -e s,@TOOL_MODULE\@,scannermain, -e s,@TOOL_FUNCTION\@,scanner_main, $< > $@.tmp && mv $@.tmp $@
       @chmod a+x $@

@@ -17,10 +20,13 @@ g-ir-scanner: tools/g-ir-tool-template.in _giscanner.la Makefile

g-ir-annotation-tool: tools/g-ir-tool-template.in _giscanner.la Makefile
       $(AM_V_GEN) sed $(TOOL_SUBSTITUTIONS) -e s,@TOOL_MODULE\@,annotationmain, -e s,@TOOL_FUNCTION\@,annotation_main, $< > $@.tmp && mv $@.tmp $@
       @chmod a+x $@

+endif

+if BUILD_DOCTOOL

g-ir-doc-tool: tools/g-ir-tool-template.in _giscanner.la Makefile
       $(AM_V_GEN) sed $(TOOL_SUBSTITUTIONS) -e s,@TOOL_MODULE\@,docmain, -e s,@TOOL_FUNCTION\@,doc_main, $< > $@.tmp && mv $@.tmp $@
       @chmod a+x $@

+endif

g_ir_compiler_SOURCES = tools/compiler.c
g_ir_compiler_CPPFLAGS = -DGIREPO_DEFAULT_SEARCH_PATH="\"$(libdir)\"" \

@@ -44,4 +50,12 @@ GCOVSOURCES = \

$(g_ir_compiler_SOURCES)                \
$(g_ir_generate_SOURCES)

-CLEANFILES += g-ir-scanner g-ir-annotation-tool g-ir-doc-tool g-ir-inspect +if BUILD_SCANNER +CLEANFILES += g-ir-scanner g-ir-annotation-tool +endif + +if BUILD_DOCTOOL +CLEANFILES += g-ir-doc-tool +endif + +CLEANFILES += g-ir-inspect diff –git a/Makefile.am b/Makefile.am index b080a89..344598a 100644 — a/Makefile.am +++ b/Makefile.am @@ -35,8 +35,11 @@ DISTCHECK_CONFIGURE_FLAGS = –enable-gtk-doc –enable-doctool

man_MANS +=                    \
       docs/g-ir-compiler.1    \

+ docs/g-ir-generate.1 +if BUILD_SCANNER +man_MANS += \

docs/g-ir-scanner.1

+endif

pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gobject-introspection-1.0.pc gobject-introspection-no-export-1.0.pc

diff –git a/common.mk b/common.mk index b778f7a..9d10e65 100644 — a/common.mk +++ b/common.mk @@ -9,11 +9,14 @@

INTROSPECTION_SCANNER = \
    env PATH=".libs:$(PATH)" \
        LPATH=.libs \

+ CC=“$(CC)” +if BUILD_SCANNER +INTROSPECTION_SCANNER += \

PYTHONPATH=$(top_builddir):$(top_srcdir) \
UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \

+ UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) +endif +INTROSPECTION_SCANNER += $(G_IR_SCANNER)

INTROSPECTION_SCANNER_ARGS = \
    --verbose \

diff –git a/configure.ac b/configure.ac index 6c91fa5..168a813 100644 — a/configure.ac +++ b/configure.ac @@ -250,32 +250,55 @@ AC_FUNC_STRTOD

AC_CHECK_FUNCS([memchr strchr strspn strstr strtol strtoull])
AC_CHECK_FUNCS([backtrace backtrace_symbols])

-# Python -# option to specify python interpreter to use; this just sets $PYTHON, so that -# we will fallback to reading $PYTHON if –with-python is not given, and -# python.m4 will get the expected input -AC_ARG_WITH(python,

-if test x“$PYTHON” = xyes; then

-fi -if test -n “$PYTHON” && ! which “$PYTHON”; then

-fi - -AM_PATH_PYTHON([2.7]) -case “$host” in ---mingw*)

+AC_ARG_WITH(g_ir_scanner, + AS_HELP_STRING(, + [Use existing g-ir-scanner instead of building. @<:@default=no@:>@]), + [], + [with_g_ir_scanner=no]) +case “x${with_g_ir_scanner}” in +xyes) + AC_PATH_PROG(G_IR_SCANNER, + [g-ir-scanner], + [AC_MSG_ERROR([g-ir-scanner not found.])]) + build_g_ir_scanner=no + ;; +xno) + # Python + # option to specify python interpreter to use; this just sets $PYTHON, so that + # we will fallback to reading $PYTHON if –with-python is not given, and + # python.m4 will get the expected input + AC_ARG_WITH(python, + AS_HELP_STRING(,[Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as “python3” or “python2”]), + [PYTHON=“$withval”], []) + if test x“$PYTHON” = xyes; then + AC_MSG_ERROR([–with-python option requires a path or program argument]) + fi + if test -n “$PYTHON” && ! which “$PYTHON”; then + AC_MSG_ERROR([Python interpreter $PYTHON does not exist]) + fi +

+ AM_PATH_PYTHON() + case “$host” in + --mingw*) + # Change backslashes to forward slashes in pyexecdir to avoid + # quoting issues + pyexecdir=`echo $pyexecdir | tr '\\' '/'` + ;; + esac + AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found])) + if test “x$os_win32” = “xyes”; then + AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.])) + fi + G_IR_SCANNER=“$(top_builddir)/g-ir-scanner” + build_g_ir_scanner=yes + ;; +*) + G_IR_SCANNER=“${with_g_ir_scanner}” + build_g_ir_scanner=no + ;;

esac

-AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found])) -if test “x$os_win32” = “xyes”; then

-fi +AC_SUBST(G_IR_SCANNER) +AM_CONDITIONAL(BUILD_SCANNER, test x${build_g_ir_scanner} = xyes)

dnl Not enabled by default until 3.6 cycle when we can propose mako as
dnl an external dependency

@@ -360,6 +383,13 @@ fi

AC_SUBST(EXTRA_LINK_FLAGS)

+AC_ARG_ENABLE(tests, + [AS_HELP_STRING(, + [disable tests])], + [], + [enable_tests=yes]) +AM_CONDITIONAL(ENABLE_TESTS, test x“$enable_tests” = xyes) +

AC_CONFIG_FILES([
Makefile
tests/Makefile

diff –git a/tests/Makefile.am b/tests/Makefile.am index bdd0fa7..70f1825 100644 — a/tests/Makefile.am +++ b/tests/Makefile.am @@ -17,7 +17,9 @@ tests_DATA = \

gimarshallingtests.h     gitestmacros.h

+if ENABLE_TESTS

EXTRA_LTLIBRARIES = libeverything-1.0.la libgimarshallingtests-1.0.la

+endif

libeverything_1_0_la_SOURCES = everything.c
libgimarshallingtests_1_0_la_SOURCES = gimarshallingtests.c

@@ -27,7 +29,9 @@ EXTRA_DIST += \

gi-tester \
gitestmacros.h

+if ENABLE_TESTS

BUILT_SOURCES += everything.c everything.h

+endif

CLEANFILES += \
    $(BUILT_SOURCES) \

diff –git a/tests/offsets/Makefile.am b/tests/offsets/Makefile.am index a40e90b..9e67a3e 100644 — a/tests/offsets/Makefile.am +++ b/tests/offsets/Makefile.am @@ -11,7 +11,9 @@ EXTRA_PROGRAMS =

############################################################

+if ENABLE_TESTS

EXTRA_LTLIBRARIES += liboffsets.la

+endif

liboffsets_la_SOURCES = \
       offsets.h       \

@@ -32,7 +34,9 @@ CLEANFILES += Offsets-1.0.gir Offsets-1.0.typelib liboffsets.la

############################################################

+if ENABLE_TESTS

EXTRA_PROGRAMS += gitestoffsets

+endif

nodist_gitestoffsets_SOURCES = gitestoffsets.c
gitestoffsets_CPPFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository -I$(top_srcdir)/tests

@@ -41,9 +45,11 @@ gitestoffsets_LDADD = $(top_builddir)/libgirepository-1.0.la $(GIREPO_LIBS)

gitestoffsets.c: gen-gitestoffsets offsets.h Offsets-1.0.typelib
       $(AM_V_GEN) $(PYTHON) $(srcdir)/gen-gitestoffsets $(srcdir)/offsets.h > $@ || ( rm -f $@ && false )

+if ENABLE_TESTS

EXTRA_DIST += gen-gitestoffsets
BUILT_SOURCES += gitestoffsets.c
CLEANFILES += gitestoffsets.c $(EXTRA_PROGRAMS)

+endif

############################################################

diff –git a/tests/repository/Makefile.am b/tests/repository/Makefile.am index d1cbaa5..6960e29 100644 — a/tests/repository/Makefile.am +++ b/tests/repository/Makefile.am @@ -2,8 +2,10 @@ AM_CFLAGS = $(GOBJECT_CFLAGS)

AM_LDFLAGS = -module -avoid-version
LIBS = $(GOBJECT_LIBS)

+if ENABLE_TESTS

EXTRA_PROGRAMS = gitestrepo giteststructinfo gitestthrows gitypelibtest
CLEANFILES = $(EXTRA_PROGRAMS)

+endif

gitestrepo_SOURCES = $(srcdir)/gitestrepo.c
gitestrepo_CPPFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository

diff –git a/tests/scanner/Makefile.am b/tests/scanner/Makefile.am index 13156c3..81f50ef 100644 — a/tests/scanner/Makefile.am +++ b/tests/scanner/Makefile.am @@ -9,6 +9,7 @@ INTROSPECTION_SCANNER_ARGS += –warn-all –reparse-validate

CLEANFILES =

+if ENABLE_TESTS

EXTRA_LTLIBRARIES = \
       libsletter.la \
       libutility.la \

@@ -19,6 +20,7 @@ EXTRA_LTLIBRARIES = \

       libtypedefs.la \
       $(NULL)
CLEANFILES += $(EXTRA_LTLIBRARIES)

+endif

GI_SCANNER_CFLAGS = -I$(top_srcdir)/tests
AM_CPPFLAGS = -I$(top_srcdir)/girepository

@@ -147,7 +149,7 @@ Typedefs_1_0_gir_FILES = $(libtypedefs_la_SOURCES)

Typedefs_1_0_gir_SCANNERFLAGS = $(INTROSPECTION_SCANNER_ARGS) --c-include="typedefs.h" --identifier-prefix=Typedefs --symbol-prefix=typedefs
GIRS += Typedefs-1.0.gir

-if !OS_WIN32 +if ENABLE_TESTS

EXTRA_PROGRAMS = barapp
CLEANFILES += $(EXTRA_PROGRAMS)