# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@

# Copyright (C) 1994-2014 Free Software Foundation, Inc.

# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

@SET_MAKE@

# GLIB - Library of useful C routines




VPATH = @srcdir@
am__is_gnu_make = { \
  if test -z '$(MAKELEVEL)'; then \
    false; \
  elif test -n '$(MAKE_HOST)'; then \
    true; \
  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
    true; \
  else \
    false; \
  fi; \
}
am__make_running_with_option = \
  case $${target_option-} in \
      ?) ;; \
      *) echo "am__make_running_with_option: internal error: invalid" \
              "target option '$${target_option-}' specified" >&2; \
         exit 1;; \
  esac; \
  has_opt=no; \
  sane_makeflags=$$MAKEFLAGS; \
  if $(am__is_gnu_make); then \
    sane_makeflags=$$MFLAGS; \
  else \
    case $$MAKEFLAGS in \
      *\\[\ \	]*) \
        bs=\\; \
        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
    esac; \
  fi; \
  skip_next=no; \
  strip_trailopt () \
  { \
    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
  }; \
  for flg in $$sane_makeflags; do \
    test $$skip_next = yes && { skip_next=no; continue; }; \
    case $$flg in \
      *=*|--*) continue;; \
        -*I) strip_trailopt 'I'; skip_next=yes;; \
      -*I?*) strip_trailopt 'I';; \
        -*O) strip_trailopt 'O'; skip_next=yes;; \
      -*O?*) strip_trailopt 'O';; \
        -*l) strip_trailopt 'l'; skip_next=yes;; \
      -*l?*) strip_trailopt 'l';; \
      -[dEDm]) skip_next=yes;; \
      -[JT]) skip_next=yes;; \
    esac; \
    case $$flg in \
      *$$target_option*) has_opt=yes; break;; \
    esac; \
  done; \
  test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
installed_test_PROGRAMS = $(am__EXEEXT_11)
noinst_PROGRAMS = $(am__EXEEXT_12)
check_PROGRAMS = $(am__EXEEXT_10) testgdateparser$(EXEEXT) \
	unicode-normalize$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_6) \
	$(am__EXEEXT_8)
TESTS = $(am__EXEEXT_13) $(am__EXEEXT_6) $(am__EXEEXT_14)
@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
@OS_WIN32_TRUE@         $(dist_test_scripts) $(dist_uninstalled_test_scripts)

@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs)
@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs)
@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts)
@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data)
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs)
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs)
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts)
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data)
@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \
@ENABLE_INSTALLED_TESTS_TRUE@                          $(test_extra_programs) $(installed_test_extra_programs)

@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(installed_test_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(test_extra_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(test_installed_extra_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(dist_test_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(dist_test_extra_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(dist_installed_test_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(dist_installed_test_extra_scripts)
@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(installed_test_data) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(dist_test_data) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(dist_installed_test_data)
@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries)
@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA)
@OS_UNIX_TRUE@am__append_15 = \
@OS_UNIX_TRUE@	spawn-test				\
@OS_UNIX_TRUE@	iochannel-test				\
@OS_UNIX_TRUE@	$(NULL)


# see http://lists.gnu.org/archive/html/bug-libtool/2013-05/msg00009.html and gio/tests/Makefile.am
@ENABLE_INSTALLED_TESTS_FALSE@am__append_16 = -rpath /
@ENABLE_INSTALLED_TESTS_FALSE@am__append_17 = -rpath /
@HAVE_CXX_TRUE@am__append_18 = cxx-test
@ENABLE_TIMELOOP_TRUE@am__append_19 = timeloop
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
	$(top_srcdir)/m4macros/glibtests.m4 \
	$(top_srcdir)/m4macros/gtk-doc.m4 \
	$(top_srcdir)/m4macros/libtool.m4 \
	$(top_srcdir)/m4macros/ltoptions.m4 \
	$(top_srcdir)/m4macros/ltsugar.m4 \
	$(top_srcdir)/m4macros/ltversion.m4 \
	$(top_srcdir)/m4macros/lt~obsolete.m4 \
	$(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \
	$(top_srcdir)/glib/libcharset/codeset.m4 \
	$(top_srcdir)/glib/libcharset/glibc21.m4 \
	$(top_srcdir)/m4macros/glib-gettext.m4 \
	$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = makefile.msc
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    *) f=$$p;; \
  esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
  for p in $$list; do echo "$$p $$p"; done | \
  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
    if (++n[$$2] == $(am__install_max)) \
      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
    END { for (dir in files) print dir, files[dir] }'
am__base_list = \
  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
  test -z "$$files" \
    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
         $(am__cd) "$$dir" && rm -f $$files; }; \
  }
am__installdirs = "$(DESTDIR)$(installed_testdir)" \
	"$(DESTDIR)$(installed_testdir)" \
	"$(DESTDIR)$(installed_testdir)" \
	"$(DESTDIR)$(installed_test_metadir)" \
	"$(DESTDIR)$(installed_testdir)"
LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
libmoduletestplugin_a_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
	../gmodule/libgmodule-2.0.la ../glib/libglib-2.0.la
am_libmoduletestplugin_a_la_OBJECTS = libmoduletestplugin_a.lo
libmoduletestplugin_a_la_OBJECTS =  \
	$(am_libmoduletestplugin_a_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 = 
libmoduletestplugin_a_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
	$(AM_CFLAGS) $(CFLAGS) $(libmoduletestplugin_a_la_LDFLAGS) \
	$(LDFLAGS) -o $@
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am_libmoduletestplugin_a_la_rpath =
@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am_libmoduletestplugin_a_la_rpath =
@ENABLE_INSTALLED_TESTS_TRUE@am_libmoduletestplugin_a_la_rpath =  \
@ENABLE_INSTALLED_TESTS_TRUE@	-rpath $(installed_testdir)
libmoduletestplugin_b_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
	../gmodule/libgmodule-2.0.la ../glib/libglib-2.0.la
am_libmoduletestplugin_b_la_OBJECTS = libmoduletestplugin_b.lo
libmoduletestplugin_b_la_OBJECTS =  \
	$(am_libmoduletestplugin_b_la_OBJECTS)
libmoduletestplugin_b_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
	$(AM_CFLAGS) $(CFLAGS) $(libmoduletestplugin_b_la_LDFLAGS) \
	$(LDFLAGS) -o $@
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am_libmoduletestplugin_b_la_rpath =
@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am_libmoduletestplugin_b_la_rpath =
@ENABLE_INSTALLED_TESTS_TRUE@am_libmoduletestplugin_b_la_rpath =  \
@ENABLE_INSTALLED_TESTS_TRUE@	-rpath $(installed_testdir)
am__EXEEXT_1 =
@OS_UNIX_TRUE@am__EXEEXT_2 = spawn-test$(EXEEXT) \
@OS_UNIX_TRUE@	iochannel-test$(EXEEXT) $(am__EXEEXT_1)
am__EXEEXT_3 = testglib$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \
	module-test$(EXEEXT)
@HAVE_CXX_TRUE@am__EXEEXT_4 = cxx-test$(EXEEXT)
@ENABLE_TIMELOOP_TRUE@am__EXEEXT_5 = timeloop$(EXEEXT)
am__EXEEXT_6 = testgdate$(EXEEXT) datetime$(EXEEXT) \
	atomic-test$(EXEEXT) bit-test$(EXEEXT) child-test$(EXEEXT) \
	completion-test$(EXEEXT) dirname-test$(EXEEXT) \
	file-test$(EXEEXT) env-test$(EXEEXT) gio-test$(EXEEXT) \
	mainloop-test$(EXEEXT) mapping-test$(EXEEXT) onceinit$(EXEEXT) \
	asyncqueue-test$(EXEEXT) qsort-test$(EXEEXT) \
	relation-test$(EXEEXT) slice-concurrent$(EXEEXT) \
	slice-threadinit$(EXEEXT) sources$(EXEEXT) \
	thread-test$(EXEEXT) threadpool-test$(EXEEXT) \
	type-test$(EXEEXT) unicode-caseconv$(EXEEXT) \
	unicode-encoding$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_4) \
	$(am__EXEEXT_5)
am__EXEEXT_7 = slice-test$(EXEEXT) slice-color$(EXEEXT) \
	assert-msg-test$(EXEEXT) unicode-collate$(EXEEXT) \
	$(am__EXEEXT_1)
@PLATFORM_WIN32_TRUE@am__EXEEXT_8 = spawn-test-win32-gui$(EXEEXT)
am__EXEEXT_9 = $(am__EXEEXT_3) $(am__EXEEXT_6) $(am__EXEEXT_7) \
	$(am__EXEEXT_8)
@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_10 = $(am__EXEEXT_9)
@ENABLE_INSTALLED_TESTS_TRUE@am__EXEEXT_11 = $(am__EXEEXT_3) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(am__EXEEXT_6) $(am__EXEEXT_7) \
@ENABLE_INSTALLED_TESTS_TRUE@	$(am__EXEEXT_8)
@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_12 = $(am__EXEEXT_9)
PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
assert_msg_test_SOURCES = assert-msg-test.c
assert_msg_test_OBJECTS = assert-msg-test.$(OBJEXT)
assert_msg_test_LDADD = $(LDADD)
assert_msg_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
asyncqueue_test_SOURCES = asyncqueue-test.c
asyncqueue_test_OBJECTS = asyncqueue-test.$(OBJEXT)
asyncqueue_test_LDADD = $(LDADD)
asyncqueue_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
atomic_test_SOURCES = atomic-test.c
atomic_test_OBJECTS = atomic-test.$(OBJEXT)
atomic_test_LDADD = $(LDADD)
atomic_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
bit_test_SOURCES = bit-test.c
bit_test_OBJECTS = bit-test.$(OBJEXT)
bit_test_LDADD = $(LDADD)
bit_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
child_test_SOURCES = child-test.c
child_test_OBJECTS = child-test.$(OBJEXT)
child_test_LDADD = $(LDADD)
child_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
completion_test_SOURCES = completion-test.c
completion_test_OBJECTS = completion-test.$(OBJEXT)
completion_test_LDADD = $(LDADD)
completion_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
am__cxx_test_SOURCES_DIST = cxx-test.C
@HAVE_CXX_TRUE@am_cxx_test_OBJECTS = cxx-test.$(OBJEXT)
cxx_test_OBJECTS = $(am_cxx_test_OBJECTS)
cxx_test_LDADD = $(LDADD)
cxx_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
datetime_SOURCES = datetime.c
datetime_OBJECTS = datetime.$(OBJEXT)
datetime_LDADD = $(LDADD)
datetime_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
dirname_test_SOURCES = dirname-test.c
dirname_test_OBJECTS = dirname-test.$(OBJEXT)
dirname_test_LDADD = $(LDADD)
dirname_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
env_test_SOURCES = env-test.c
env_test_OBJECTS = env-test.$(OBJEXT)
env_test_LDADD = $(LDADD)
env_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
file_test_SOURCES = file-test.c
file_test_OBJECTS = file-test.$(OBJEXT)
file_test_LDADD = $(LDADD)
file_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
gio_test_SOURCES = gio-test.c
gio_test_OBJECTS = gio-test.$(OBJEXT)
gio_test_LDADD = $(LDADD)
gio_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
iochannel_test_SOURCES = iochannel-test.c
iochannel_test_OBJECTS = iochannel-test.$(OBJEXT)
iochannel_test_LDADD = $(LDADD)
iochannel_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
mainloop_test_SOURCES = mainloop-test.c
mainloop_test_OBJECTS = mainloop-test.$(OBJEXT)
mainloop_test_LDADD = $(LDADD)
mainloop_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
mapping_test_SOURCES = mapping-test.c
mapping_test_OBJECTS = mapping-test.$(OBJEXT)
mapping_test_LDADD = $(LDADD)
mapping_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
module_test_SOURCES = module-test.c
module_test_OBJECTS = module-test.$(OBJEXT)
module_test_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
	$(module_test_LDFLAGS) $(LDFLAGS) -o $@
onceinit_SOURCES = onceinit.c
onceinit_OBJECTS = onceinit.$(OBJEXT)
onceinit_LDADD = $(LDADD)
onceinit_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
qsort_test_SOURCES = qsort-test.c
qsort_test_OBJECTS = qsort-test.$(OBJEXT)
qsort_test_LDADD = $(LDADD)
qsort_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
relation_test_SOURCES = relation-test.c
relation_test_OBJECTS = relation-test.$(OBJEXT)
relation_test_LDADD = $(LDADD)
relation_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
am_slice_color_OBJECTS = slice-color.$(OBJEXT) memchunks.$(OBJEXT)
slice_color_OBJECTS = $(am_slice_color_OBJECTS)
slice_color_LDADD = $(LDADD)
slice_color_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
slice_concurrent_SOURCES = slice-concurrent.c
slice_concurrent_OBJECTS = slice-concurrent.$(OBJEXT)
slice_concurrent_LDADD = $(LDADD)
slice_concurrent_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
am_slice_test_OBJECTS = slice-test.$(OBJEXT) memchunks.$(OBJEXT)
slice_test_OBJECTS = $(am_slice_test_OBJECTS)
slice_test_LDADD = $(LDADD)
slice_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
slice_threadinit_SOURCES = slice-threadinit.c
slice_threadinit_OBJECTS = slice-threadinit.$(OBJEXT)
slice_threadinit_DEPENDENCIES =  \
	$(top_builddir)/gthread/libgthread-2.0.la $(LDADD)
sources_SOURCES = sources.c
sources_OBJECTS = sources.$(OBJEXT)
sources_LDADD = $(LDADD)
sources_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
spawn_test_SOURCES = spawn-test.c
spawn_test_OBJECTS = spawn-test.$(OBJEXT)
spawn_test_LDADD = $(LDADD)
spawn_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
spawn_test_win32_gui_SOURCES = spawn-test-win32-gui.c
spawn_test_win32_gui_OBJECTS = spawn-test-win32-gui.$(OBJEXT)
spawn_test_win32_gui_LDADD = $(LDADD)
spawn_test_win32_gui_DEPENDENCIES =  \
	$(top_builddir)/glib/libglib-2.0.la
spawn_test_win32_gui_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
	$(AM_CFLAGS) $(CFLAGS) $(spawn_test_win32_gui_LDFLAGS) \
	$(LDFLAGS) -o $@
testgdate_SOURCES = testgdate.c
testgdate_OBJECTS = testgdate.$(OBJEXT)
testgdate_LDADD = $(LDADD)
testgdate_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
testgdateparser_SOURCES = testgdateparser.c
testgdateparser_OBJECTS = testgdateparser.$(OBJEXT)
testgdateparser_LDADD = $(LDADD)
testgdateparser_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
testglib_SOURCES = testglib.c
testglib_OBJECTS = testglib.$(OBJEXT)
testglib_LDADD = $(LDADD)
testglib_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
thread_test_SOURCES = thread-test.c
thread_test_OBJECTS = thread-test.$(OBJEXT)
thread_test_LDADD = $(LDADD)
thread_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
threadpool_test_SOURCES = threadpool-test.c
threadpool_test_OBJECTS = threadpool-test.$(OBJEXT)
threadpool_test_LDADD = $(LDADD)
threadpool_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
timeloop_SOURCES = timeloop.c
timeloop_OBJECTS = timeloop.$(OBJEXT)
timeloop_LDADD = $(LDADD)
timeloop_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
type_test_SOURCES = type-test.c
type_test_OBJECTS = type-test.$(OBJEXT)
type_test_LDADD = $(LDADD)
type_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
unicode_caseconv_SOURCES = unicode-caseconv.c
unicode_caseconv_OBJECTS = unicode-caseconv.$(OBJEXT)
unicode_caseconv_LDADD = $(LDADD)
unicode_caseconv_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
unicode_collate_SOURCES = unicode-collate.c
unicode_collate_OBJECTS = unicode-collate.$(OBJEXT)
unicode_collate_LDADD = $(LDADD)
unicode_collate_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
unicode_encoding_SOURCES = unicode-encoding.c
unicode_encoding_OBJECTS = unicode-encoding.$(OBJEXT)
unicode_encoding_LDADD = $(LDADD)
unicode_encoding_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
unicode_normalize_SOURCES = unicode-normalize.c
unicode_normalize_OBJECTS = unicode-normalize.$(OBJEXT)
unicode_normalize_LDADD = $(LDADD)
unicode_normalize_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo "  GEN     " $@;
am__v_GEN_1 = 
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 = 
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
	$(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_@AM_V@)
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
am__v_CXX_0 = @echo "  CXX     " $@;
am__v_CXX_1 = 
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo "  CXXLD   " $@;
am__v_CXXLD_1 = 
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
	$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo "  CC      " $@;
am__v_CC_1 = 
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
	$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo "  CCLD    " $@;
am__v_CCLD_1 = 
SOURCES = $(libmoduletestplugin_a_la_SOURCES) \
	$(libmoduletestplugin_b_la_SOURCES) assert-msg-test.c \
	asyncqueue-test.c atomic-test.c bit-test.c child-test.c \
	completion-test.c $(cxx_test_SOURCES) datetime.c \
	dirname-test.c env-test.c file-test.c gio-test.c \
	iochannel-test.c mainloop-test.c mapping-test.c module-test.c \
	onceinit.c qsort-test.c relation-test.c $(slice_color_SOURCES) \
	slice-concurrent.c $(slice_test_SOURCES) slice-threadinit.c \
	sources.c spawn-test.c spawn-test-win32-gui.c testgdate.c \
	testgdateparser.c testglib.c thread-test.c threadpool-test.c \
	timeloop.c type-test.c unicode-caseconv.c unicode-collate.c \
	unicode-encoding.c unicode-normalize.c
DIST_SOURCES = $(libmoduletestplugin_a_la_SOURCES) \
	$(libmoduletestplugin_b_la_SOURCES) assert-msg-test.c \
	asyncqueue-test.c atomic-test.c bit-test.c child-test.c \
	completion-test.c $(am__cxx_test_SOURCES_DIST) datetime.c \
	dirname-test.c env-test.c file-test.c gio-test.c \
	iochannel-test.c mainloop-test.c mapping-test.c module-test.c \
	onceinit.c qsort-test.c relation-test.c $(slice_color_SOURCES) \
	slice-concurrent.c $(slice_test_SOURCES) slice-threadinit.c \
	sources.c spawn-test.c spawn-test-win32-gui.c testgdate.c \
	testgdateparser.c testglib.c thread-test.c threadpool-test.c \
	timeloop.c type-test.c unicode-caseconv.c unicode-collate.c \
	unicode-encoding.c unicode-normalize.c
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
	ctags-recursive dvi-recursive html-recursive info-recursive \
	install-data-recursive install-dvi-recursive \
	install-exec-recursive install-html-recursive \
	install-info-recursive install-pdf-recursive \
	install-ps-recursive install-recursive installcheck-recursive \
	installdirs-recursive pdf-recursive ps-recursive \
	tags-recursive uninstall-recursive
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \
	$(noinst_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
  distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
  $(RECURSIVE_TARGETS) \
  $(RECURSIVE_CLEAN_TARGETS) \
  $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
	check recheck distdir
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates.  Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
  BEGIN { nonempty = 0; } \
  { items[$$0] = 1; nonempty = 1; } \
  END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique.  This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
  list='$(am__tagged_files)'; \
  unique=`for i in $$list; do \
    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
am__tty_colors_dummy = \
  mgn= red= grn= lgn= blu= brg= std=; \
  am__color_tests=no
am__tty_colors = { \
  $(am__tty_colors_dummy); \
  if test "X$(AM_COLOR_TESTS)" = Xno; then \
    am__color_tests=no; \
  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
    am__color_tests=yes; \
  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
    am__color_tests=yes; \
  fi; \
  if test $$am__color_tests = yes; then \
    red='[0;31m'; \
    grn='[0;32m'; \
    lgn='[1;32m'; \
    blu='[1;34m'; \
    mgn='[0;35m'; \
    brg='[1m'; \
    std='[m'; \
  fi; \
}
am__recheck_rx = ^[ 	]*:recheck:[ 	]*
am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
# A command that, given a newline-separated list of test names on the
# standard input, print the name of the tests that are to be re-run
# upon "make recheck".
am__list_recheck_tests = $(AWK) '{ \
  recheck = 1; \
  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
    { \
      if (rc < 0) \
        { \
          if ((getline line2 < ($$0 ".log")) < 0) \
	    recheck = 0; \
          break; \
        } \
      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
        { \
          recheck = 0; \
          break; \
        } \
      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
        { \
          break; \
        } \
    }; \
  if (recheck) \
    print $$0; \
  close ($$0 ".trs"); \
  close ($$0 ".log"); \
}'
# A command that, given a newline-separated list of test names on the
# standard input, create the global log from their .trs and .log files.
am__create_global_log = $(AWK) ' \
function fatal(msg) \
{ \
  print "fatal: making $@: " msg | "cat >&2"; \
  exit 1; \
} \
function rst_section(header) \
{ \
  print header; \
  len = length(header); \
  for (i = 1; i <= len; i = i + 1) \
    printf "="; \
  printf "\n\n"; \
} \
{ \
  copy_in_global_log = 1; \
  global_test_result = "RUN"; \
  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
    { \
      if (rc < 0) \
         fatal("failed to read from " $$0 ".trs"); \
      if (line ~ /$(am__global_test_result_rx)/) \
        { \
          sub("$(am__global_test_result_rx)", "", line); \
          sub("[ 	]*$$", "", line); \
          global_test_result = line; \
        } \
      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
        copy_in_global_log = 0; \
    }; \
  if (copy_in_global_log) \
    { \
      rst_section(global_test_result ": " $$0); \
      while ((rc = (getline line < ($$0 ".log"))) != 0) \
      { \
        if (rc < 0) \
          fatal("failed to read from " $$0 ".log"); \
        print line; \
      }; \
      printf "\n"; \
    }; \
  close ($$0 ".trs"); \
  close ($$0 ".log"); \
}'
# Restructured Text title.
am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
# Solaris 10 'make', and several other traditional 'make' implementations,
# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
# by disabling -e (using the XSI extension "set +e") if it's set.
am__sh_e_setup = case $$- in *e*) set +e;; esac
# Default flags passed to test drivers.
am__common_driver_flags = \
  --color-tests "$$am__color_tests" \
  --enable-hard-errors "$$am__enable_hard_errors" \
  --expect-failure "$$am__expect_failure"
# To be inserted before the command running the test.  Creates the
# directory for the log if needed.  Stores in $dir the directory
# containing $f, in $tst the test, in $log the log.  Executes the
# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
# will run the test scripts (or their associated LOG_COMPILER, if
# thy have one).
am__check_pre = \
$(am__sh_e_setup);					\
$(am__vpath_adj_setup) $(am__vpath_adj)			\
$(am__tty_colors);					\
srcdir=$(srcdir); export srcdir;			\
case "$@" in						\
  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
    *) am__odir=.;; 					\
esac;							\
test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
if test -f "./$$f"; then dir=./;			\
elif test -f "$$f"; then dir=;				\
else dir="$(srcdir)/"; fi;				\
tst=$$dir$$f; log='$@'; 				\
if test -n '$(DISABLE_HARD_ERRORS)'; then		\
  am__enable_hard_errors=no; 				\
else							\
  am__enable_hard_errors=yes; 				\
fi; 							\
case " $(XFAIL_TESTS) " in				\
  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
    am__expect_failure=yes;;				\
  *)							\
    am__expect_failure=no;;				\
esac; 							\
$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
# A shell command to get the names of the tests scripts with any registered
# extension removed (i.e., equivalently, the names of the test logs, with
# the '.log' extension removed).  The result is saved in the shell variable
# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
# since that might cause problem with VPATH rewrites for suffix-less tests.
# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
am__set_TESTS_bases = \
  bases='$(TEST_LOGS)'; \
  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
  bases=`echo $$bases`
RECHECK_LOGS = $(TEST_LOGS)
@OS_WIN32_TRUE@am__EXEEXT_13 = $(am__EXEEXT_3)
@OS_UNIX_TRUE@am__EXEEXT_14 = run-collate-tests.sh \
@OS_UNIX_TRUE@	run-assert-msg-test.sh $(am__EXEEXT_1)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
am__set_b = \
  case '$@' in \
    */*) \
      case '$*' in \
        */*) b='$*';; \
          *) b=`echo '$@' | sed 's/\.log$$//'`; \
       esac;; \
    *) \
      b='$*';; \
  esac
am__test_logs1 = $(TESTS:=.log)
am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
TEST_LOGS = $(am__test_logs2:.test.log=.log)
TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
	$(TEST_LOG_FLAGS)
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/makefile.msc.in \
	$(top_srcdir)/depcomp $(top_srcdir)/glib.mk \
	$(top_srcdir)/test-driver
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
  dir0=`pwd`; \
  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
  sed_rest='s,^[^/]*/*,,'; \
  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
  sed_butlast='s,/*[^/]*$$,,'; \
  while test -n "$$dir1"; do \
    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
    if test "$$first" != "."; then \
      if test "$$first" = ".."; then \
        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
      else \
        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
        if test "$$first2" = "$$first"; then \
          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
        else \
          dir2="../$$dir2"; \
        fi; \
        dir0="$$dir0"/"$$first"; \
      fi; \
    fi; \
    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
  done; \
  reldir="$$dir2"
ABS_TAPSET_DIR = @ABS_TAPSET_DIR@
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CARBON_LIBS = @CARBON_LIBS@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
COCOA_LIBS = @COCOA_LIBS@
CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DATADIRNAME = @DATADIRNAME@
DBUS1_CFLAGS = @DBUS1_CFLAGS@
DBUS1_LIBS = @DBUS1_LIBS@
DBUS_DAEMON = @DBUS_DAEMON@
DEFS = -DGLIB_DISABLE_DEPRECATION_WARNINGS -DG_LOG_DOMAIN=\"GLib\"
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DTRACE = @DTRACE@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FAM_LIBS = @FAM_LIBS@
FGREP = @FGREP@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GIO = @GIO@
GIO_MODULE_DIR = @GIO_MODULE_DIR@
GLIBC21 = @GLIBC21@
GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
GLIB_VERSION = @GLIB_VERSION@
GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GREP = @GREP@
GSPAWN = @GSPAWN@
GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@
GTKDOC_CHECK = @GTKDOC_CHECK@
GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
G_LIBS_EXTRA = @G_LIBS_EXTRA@
G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@
G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@
G_MODULE_IMPL = @G_MODULE_IMPL@
G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@
G_MODULE_LIBS = @G_MODULE_LIBS@
G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@
G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@
G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@
G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@
G_THREAD_CFLAGS = @G_THREAD_CFLAGS@
G_THREAD_LIBS = @G_THREAD_LIBS@
G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@
G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@
HTML_DIR = @HTML_DIR@
ICONV_LIBS = @ICONV_LIBS@
INDENT = @INDENT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTOBJEXT = @INSTOBJEXT@
INTLLIBS = @INTLLIBS@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBELF_CFLAGS = @LIBELF_CFLAGS@
LIBELF_LIBS = @LIBELF_LIBS@
LIBFFI_CFLAGS = @LIBFFI_CFLAGS@
LIBFFI_LIBS = @LIBFFI_LIBS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBSYSTEMD_CFLAGS = @LIBSYSTEMD_CFLAGS@
LIBSYSTEMD_LIBS = @LIBSYSTEMD_LIBS@
LIBTOOL = @LIBTOOL@
LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
LTP = @LTP@
LTP_GENHTML = @LTP_GENHTML@
LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@
LT_RELEASE = @LT_RELEASE@
LT_REVISION = @LT_REVISION@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MSGFMT_OPTS = @MSGFMT_OPTS@
NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
NETWORK_LIBS = @NETWORK_LIBS@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PCRE_CFLAGS = @PCRE_CFLAGS@
PCRE_LIBS = @PCRE_LIBS@
PCRE_REQUIRES = @PCRE_REQUIRES@
PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@
PERL = @PERL@
PERL_PATH = @PERL_PATH@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PLATFORMDEP = @PLATFORMDEP@
POFILES = @POFILES@
POSUB = @POSUB@
PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
PYTHON = @PYTHON@
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
REBUILD = @REBUILD@
SED = @SED@
SELINUX_LIBS = @SELINUX_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHTOOL = @SHTOOL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WINDRES = @WINDRES@
WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
XATTR_LIBS = @XATTR_LIBS@
XGETTEXT = @XGETTEXT@
XMLCATALOG = @XMLCATALOG@
XML_CATALOG_FILE = @XML_CATALOG_FILE@
XSLTPROC = @XSLTPROC@
ZLIB_CFLAGS = @ZLIB_CFLAGS@
ZLIB_LIBS = @ZLIB_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
config_h_INCLUDES = @config_h_INCLUDES@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gio_INCLUDES = @gio_INCLUDES@
glib_INCLUDES = @glib_INCLUDES@
gmodule_INCLUDES = @gmodule_INCLUDES@
gobject_INCLUDES = @gobject_INCLUDES@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
installed_test_metadir = @installed_test_metadir@
installed_testdir = @installed_testdir@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
ms_librarian = @ms_librarian@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
pkgpyexecdir = @pkgpyexecdir@
pkgpythondir = @pkgpythondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
pyexecdir = @pyexecdir@
pythondir = @pythondir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@

#GTESTER = gtester 			# for non-GLIB packages
#GTESTER_REPORT = gtester-report        # for non-GLIB packages
GTESTER = $(top_builddir)/glib/gtester			# for the GLIB package
GTESTER_REPORT = $(top_builddir)/glib/gtester-report	# for the GLIB package
NULL = 

# initialize variables for unconditional += appending
BUILT_SOURCES = 
BUILT_EXTRA_DIST = makefile.msc
CLEANFILES = *.log *.trs $(am__append_14)
DISTCLEANFILES = iochannel-test-outfile file-test-get-contents maptest \
	mapchild collate.out
MAINTAINERCLEANFILES = 
EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \
	$(test_scripts) makefile.msc.in gen-casefold-txt.pl \
	gen-casemap-txt.pl iochannel-test-infile timeloop-basic.c \
	assert-msg-test.gdb

# We support a fairly large range of possible variables.  It is expected that all types of files in a test suite
# will belong in exactly one of the following variables.
#
# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
#
#   test_programs, test_scripts, test_data, test_ltlibraries
#
# The above are used to list files that are involved in both uninstalled and installed testing.  The
# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
# installed in the same way as it appears in the package layout.
#
# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
# like so:
#
#   installed_test_programs, uninstalled_test_programs
#   installed_test_scripts, uninstalled_test_scripts
#   installed_test_data, uninstalled_test_data
#   installed_test_ltlibraries, uninstalled_test_ltlibraries
#
# Additionally, we support 'extra' infixes for programs and scripts.  This is used for support programs/scripts
# that should not themselves be run as testcases (but exist to be used from other testcases):
#
#   test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
#   test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
#
# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
# file automatically end up in the tarball.
#
#   dist_test_scripts, dist_test_data, dist_test_extra_scripts
#   dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
#   dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
#
# Note that no file is automatically disted unless it appears in one of the dist_ variables.  This follows the
# standard automake convention of not disting programs scripts or data by default.
#
# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
# variants) will be run as part of the in-tree 'make check'.  These are all assumed to be runnable under
# gtester.  That's a bit strange for scripts, but it's possible.

# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
TEST_PROGS = $(strip $(test_programs) $(test_scripts) \
	$(uninstalled_test_programs) $(uninstalled_test_scripts) \
	$(dist_test_scripts) $(dist_uninstalled_test_scripts))
installed_test_LTLIBRARIES = $(am__append_13)
installed_test_SCRIPTS = $(am__append_11)
nobase_installed_test_DATA = $(am__append_12)
noinst_LTLIBRARIES = $(am__append_2)
noinst_SCRIPTS = $(am__append_4)
noinst_DATA = $(am__append_5)
check_LTLIBRARIES = $(am__append_6)
check_SCRIPTS = $(am__append_8) $(installed_test_scripts)
check_DATA = $(am__append_9)

# Note: build even the installed-only targets during 'make check' to ensure that they still work.
# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
                        $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)

all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \
	$(installed_test_scripts) $(test_extra_scripts) \
	$(uninstalled_test_extra_scripts) \
	$(installed_test_extra_scripts) $(all_dist_test_scripts)
all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
                        $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)

all_test_data = $(test_data) $(uninstalled_test_data) \
	$(installed_test_data) $(all_dist_test_data)
all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \
@ENABLE_INSTALLED_TESTS_TRUE@                      $(test_scripts) $(installed_test_scripts) \
@ENABLE_INSTALLED_TESTS_TRUE@                      $(dist_test_scripts) $(dist_installed_test_scripts)

@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test)
SUBDIRS = gobject refcount
LDADD = $(top_builddir)/glib/libglib-2.0.la
AM_CPPFLAGS = $(gmodule_INCLUDES) $(GLIB_DEBUG_FLAGS)
AM_CFLAGS = -g

# So far, this is the only gtester-ified testcase here
test_programs = testglib $(NULL) $(am__append_15) module-test

# These are not yet gtester-ified, so mark them as for 'installed' only so we
# don't run them under the framework.  We will handle them manually below.
installed_test_programs = testgdate datetime atomic-test bit-test \
	child-test completion-test dirname-test file-test env-test \
	gio-test mainloop-test mapping-test onceinit asyncqueue-test \
	qsort-test relation-test slice-concurrent slice-threadinit \
	sources thread-test threadpool-test type-test unicode-caseconv \
	unicode-encoding $(NULL) $(am__append_18) $(am__append_19)
test_extra_programs = \
	slice-test				\
	slice-color				\
	assert-msg-test				\
	unicode-collate				\
	$(NULL)


# These don't appear to work installed and we don't want to run them under gtester either...
@OS_UNIX_TRUE@dist_uninstalled_test_extra_scripts = \
@OS_UNIX_TRUE@	run-collate-tests.sh			\
@OS_UNIX_TRUE@	run-assert-msg-test.sh			\
@OS_UNIX_TRUE@	$(NULL)

dist_test_data = \
	iochannel-test-infile			\
	casemap.txt				\
	casefold.txt				\
	utf8.txt				\
	$(NULL)

TESTS_ENVIRONMENT = \
	G_TEST_SRCDIR=$(abs_srcdir)				\
	G_TEST_BUILDDIR=$(abs_builddir)				\
	LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset	\
	MALLOC_CHECK_=2						\
	MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256))

module_test_DEPENDENCIES = libmoduletestplugin_a.la libmoduletestplugin_b.la
module_test_LDADD = $(top_builddir)/gmodule/libgmodule-2.0.la $(LDADD)
module_test_LDFLAGS = $(G_MODULE_LDFLAGS)
slice_test_SOURCES = slice-test.c memchunks.c
slice_color_SOURCES = slice-color.c memchunks.c
slice_threadinit_LDADD = $(top_builddir)/gthread/libgthread-2.0.la $(LDADD)
test_ltlibraries = libmoduletestplugin_a.la libmoduletestplugin_b.la
libmoduletestplugin_a_la_SOURCES = libmoduletestplugin_a.c
libmoduletestplugin_a_la_LDFLAGS = $(G_MODULE_LDFLAGS) -avoid-version \
	-module $(no_undefined) $(am__append_16)
libmoduletestplugin_a_la_LIBADD = $(G_MODULE_LIBS) ../gmodule/libgmodule-2.0.la ../glib/libglib-2.0.la
libmoduletestplugin_b_la_SOURCES = libmoduletestplugin_b.c
libmoduletestplugin_b_la_LDFLAGS = $(G_MODULE_LDFLAGS) -avoid-version \
	-module $(no_undefined) $(am__append_17)
libmoduletestplugin_b_la_LIBADD = $(G_MODULE_LIBS) ../gmodule/libgmodule-2.0.la ../glib/libglib-2.0.la
@HAVE_CXX_TRUE@cxx_test_SOURCES = cxx-test.C
@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined
@PLATFORM_WIN32_TRUE@module_test_exp = module-test.exp
@PLATFORM_WIN32_TRUE@installed_test_extra_programs = spawn-test-win32-gui
@PLATFORM_WIN32_TRUE@spawn_test_win32_gui_LDFLAGS = -mwindows
all: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) all-recursive

.SUFFIXES:
.SUFFIXES: .C .c .lo .log .o .obj .test .test$(EXEEXT) .trs
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu tests/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
	esac;
$(top_srcdir)/glib.mk $(am__empty):

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
makefile.msc: $(top_builddir)/config.status $(srcdir)/makefile.msc.in
	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@

clean-checkLTLIBRARIES:
	-test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
	@list='$(check_LTLIBRARIES)'; \
	locs=`for p in $$list; do echo $$p; done | \
	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
	      sort -u`; \
	test -z "$$locs" || { \
	  echo rm -f $${locs}; \
	  rm -f $${locs}; \
	}

install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES)
	@$(NORMAL_INSTALL)
	@list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
	list2=; for p in $$list; do \
	  if test -f $$p; then \
	    list2="$$list2 $$p"; \
	  else :; fi; \
	done; \
	test -z "$$list2" || { \
	  echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \
	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \
	}

uninstall-installed_testLTLIBRARIES:
	@$(NORMAL_UNINSTALL)
	@list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \
	for p in $$list; do \
	  $(am__strip_dir) \
	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \
	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \
	done

clean-installed_testLTLIBRARIES:
	-test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES)
	@list='$(installed_test_LTLIBRARIES)'; \
	locs=`for p in $$list; do echo $$p; done | \
	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
	      sort -u`; \
	test -z "$$locs" || { \
	  echo rm -f $${locs}; \
	  rm -f $${locs}; \
	}

clean-noinstLTLIBRARIES:
	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
	@list='$(noinst_LTLIBRARIES)'; \
	locs=`for p in $$list; do echo $$p; done | \
	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
	      sort -u`; \
	test -z "$$locs" || { \
	  echo rm -f $${locs}; \
	  rm -f $${locs}; \
	}

libmoduletestplugin_a.la: $(libmoduletestplugin_a_la_OBJECTS) $(libmoduletestplugin_a_la_DEPENDENCIES) $(EXTRA_libmoduletestplugin_a_la_DEPENDENCIES) 
	$(AM_V_CCLD)$(libmoduletestplugin_a_la_LINK) $(am_libmoduletestplugin_a_la_rpath) $(libmoduletestplugin_a_la_OBJECTS) $(libmoduletestplugin_a_la_LIBADD) $(LIBS)

libmoduletestplugin_b.la: $(libmoduletestplugin_b_la_OBJECTS) $(libmoduletestplugin_b_la_DEPENDENCIES) $(EXTRA_libmoduletestplugin_b_la_DEPENDENCIES) 
	$(AM_V_CCLD)$(libmoduletestplugin_b_la_LINK) $(am_libmoduletestplugin_b_la_rpath) $(libmoduletestplugin_b_la_OBJECTS) $(libmoduletestplugin_b_la_LIBADD) $(LIBS)

clean-checkPROGRAMS:
	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
	echo " rm -f" $$list; \
	rm -f $$list || exit $$?; \
	test -n "$(EXEEXT)" || exit 0; \
	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
	echo " rm -f" $$list; \
	rm -f $$list
install-installed_testPROGRAMS: $(installed_test_PROGRAMS)
	@$(NORMAL_INSTALL)
	@list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
	fi; \
	for p in $$list; do echo "$$p $$p"; done | \
	sed 's/$(EXEEXT)$$//' | \
	while read p p1; do if test -f $$p \
	 || test -f $$p1 \
	  ; then echo "$$p"; echo "$$p"; else :; fi; \
	done | \
	sed -e 'p;s,.*/,,;n;h' \
	    -e 's|.*|.|' \
	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
	sed 'N;N;N;s,\n, ,g' | \
	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
	    else { print "f", $$3 "/" $$4, $$1; } } \
	  END { for (d in files) print "f", d, files[d] }' | \
	while read type dir files; do \
	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
	    test -z "$$files" || { \
	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
	    } \
	; done

uninstall-installed_testPROGRAMS:
	@$(NORMAL_UNINSTALL)
	@list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \
	files=`for p in $$list; do echo "$$p"; done | \
	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
	      -e 's/$$/$(EXEEXT)/' \
	`; \
	test -n "$$list" || exit 0; \
	echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \
	cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files

clean-installed_testPROGRAMS:
	@list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \
	echo " rm -f" $$list; \
	rm -f $$list || exit $$?; \
	test -n "$(EXEEXT)" || exit 0; \
	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
	echo " rm -f" $$list; \
	rm -f $$list

clean-noinstPROGRAMS:
	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
	echo " rm -f" $$list; \
	rm -f $$list || exit $$?; \
	test -n "$(EXEEXT)" || exit 0; \
	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
	echo " rm -f" $$list; \
	rm -f $$list

assert-msg-test$(EXEEXT): $(assert_msg_test_OBJECTS) $(assert_msg_test_DEPENDENCIES) $(EXTRA_assert_msg_test_DEPENDENCIES) 
	@rm -f assert-msg-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(assert_msg_test_OBJECTS) $(assert_msg_test_LDADD) $(LIBS)

asyncqueue-test$(EXEEXT): $(asyncqueue_test_OBJECTS) $(asyncqueue_test_DEPENDENCIES) $(EXTRA_asyncqueue_test_DEPENDENCIES) 
	@rm -f asyncqueue-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(asyncqueue_test_OBJECTS) $(asyncqueue_test_LDADD) $(LIBS)

atomic-test$(EXEEXT): $(atomic_test_OBJECTS) $(atomic_test_DEPENDENCIES) $(EXTRA_atomic_test_DEPENDENCIES) 
	@rm -f atomic-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(atomic_test_OBJECTS) $(atomic_test_LDADD) $(LIBS)

bit-test$(EXEEXT): $(bit_test_OBJECTS) $(bit_test_DEPENDENCIES) $(EXTRA_bit_test_DEPENDENCIES) 
	@rm -f bit-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(bit_test_OBJECTS) $(bit_test_LDADD) $(LIBS)

child-test$(EXEEXT): $(child_test_OBJECTS) $(child_test_DEPENDENCIES) $(EXTRA_child_test_DEPENDENCIES) 
	@rm -f child-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(child_test_OBJECTS) $(child_test_LDADD) $(LIBS)

completion-test$(EXEEXT): $(completion_test_OBJECTS) $(completion_test_DEPENDENCIES) $(EXTRA_completion_test_DEPENDENCIES) 
	@rm -f completion-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(completion_test_OBJECTS) $(completion_test_LDADD) $(LIBS)

cxx-test$(EXEEXT): $(cxx_test_OBJECTS) $(cxx_test_DEPENDENCIES) $(EXTRA_cxx_test_DEPENDENCIES) 
	@rm -f cxx-test$(EXEEXT)
	$(AM_V_CXXLD)$(CXXLINK) $(cxx_test_OBJECTS) $(cxx_test_LDADD) $(LIBS)

datetime$(EXEEXT): $(datetime_OBJECTS) $(datetime_DEPENDENCIES) $(EXTRA_datetime_DEPENDENCIES) 
	@rm -f datetime$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(datetime_OBJECTS) $(datetime_LDADD) $(LIBS)

dirname-test$(EXEEXT): $(dirname_test_OBJECTS) $(dirname_test_DEPENDENCIES) $(EXTRA_dirname_test_DEPENDENCIES) 
	@rm -f dirname-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(dirname_test_OBJECTS) $(dirname_test_LDADD) $(LIBS)

env-test$(EXEEXT): $(env_test_OBJECTS) $(env_test_DEPENDENCIES) $(EXTRA_env_test_DEPENDENCIES) 
	@rm -f env-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(env_test_OBJECTS) $(env_test_LDADD) $(LIBS)

file-test$(EXEEXT): $(file_test_OBJECTS) $(file_test_DEPENDENCIES) $(EXTRA_file_test_DEPENDENCIES) 
	@rm -f file-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(file_test_OBJECTS) $(file_test_LDADD) $(LIBS)

gio-test$(EXEEXT): $(gio_test_OBJECTS) $(gio_test_DEPENDENCIES) $(EXTRA_gio_test_DEPENDENCIES) 
	@rm -f gio-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(gio_test_OBJECTS) $(gio_test_LDADD) $(LIBS)

iochannel-test$(EXEEXT): $(iochannel_test_OBJECTS) $(iochannel_test_DEPENDENCIES) $(EXTRA_iochannel_test_DEPENDENCIES) 
	@rm -f iochannel-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(iochannel_test_OBJECTS) $(iochannel_test_LDADD) $(LIBS)

mainloop-test$(EXEEXT): $(mainloop_test_OBJECTS) $(mainloop_test_DEPENDENCIES) $(EXTRA_mainloop_test_DEPENDENCIES) 
	@rm -f mainloop-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(mainloop_test_OBJECTS) $(mainloop_test_LDADD) $(LIBS)

mapping-test$(EXEEXT): $(mapping_test_OBJECTS) $(mapping_test_DEPENDENCIES) $(EXTRA_mapping_test_DEPENDENCIES) 
	@rm -f mapping-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(mapping_test_OBJECTS) $(mapping_test_LDADD) $(LIBS)

module-test$(EXEEXT): $(module_test_OBJECTS) $(module_test_DEPENDENCIES) $(EXTRA_module_test_DEPENDENCIES) 
	@rm -f module-test$(EXEEXT)
	$(AM_V_CCLD)$(module_test_LINK) $(module_test_OBJECTS) $(module_test_LDADD) $(LIBS)

onceinit$(EXEEXT): $(onceinit_OBJECTS) $(onceinit_DEPENDENCIES) $(EXTRA_onceinit_DEPENDENCIES) 
	@rm -f onceinit$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(onceinit_OBJECTS) $(onceinit_LDADD) $(LIBS)

qsort-test$(EXEEXT): $(qsort_test_OBJECTS) $(qsort_test_DEPENDENCIES) $(EXTRA_qsort_test_DEPENDENCIES) 
	@rm -f qsort-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(qsort_test_OBJECTS) $(qsort_test_LDADD) $(LIBS)

relation-test$(EXEEXT): $(relation_test_OBJECTS) $(relation_test_DEPENDENCIES) $(EXTRA_relation_test_DEPENDENCIES) 
	@rm -f relation-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(relation_test_OBJECTS) $(relation_test_LDADD) $(LIBS)

slice-color$(EXEEXT): $(slice_color_OBJECTS) $(slice_color_DEPENDENCIES) $(EXTRA_slice_color_DEPENDENCIES) 
	@rm -f slice-color$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(slice_color_OBJECTS) $(slice_color_LDADD) $(LIBS)

slice-concurrent$(EXEEXT): $(slice_concurrent_OBJECTS) $(slice_concurrent_DEPENDENCIES) $(EXTRA_slice_concurrent_DEPENDENCIES) 
	@rm -f slice-concurrent$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(slice_concurrent_OBJECTS) $(slice_concurrent_LDADD) $(LIBS)

slice-test$(EXEEXT): $(slice_test_OBJECTS) $(slice_test_DEPENDENCIES) $(EXTRA_slice_test_DEPENDENCIES) 
	@rm -f slice-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(slice_test_OBJECTS) $(slice_test_LDADD) $(LIBS)

slice-threadinit$(EXEEXT): $(slice_threadinit_OBJECTS) $(slice_threadinit_DEPENDENCIES) $(EXTRA_slice_threadinit_DEPENDENCIES) 
	@rm -f slice-threadinit$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(slice_threadinit_OBJECTS) $(slice_threadinit_LDADD) $(LIBS)

sources$(EXEEXT): $(sources_OBJECTS) $(sources_DEPENDENCIES) $(EXTRA_sources_DEPENDENCIES) 
	@rm -f sources$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(sources_OBJECTS) $(sources_LDADD) $(LIBS)

spawn-test$(EXEEXT): $(spawn_test_OBJECTS) $(spawn_test_DEPENDENCIES) $(EXTRA_spawn_test_DEPENDENCIES) 
	@rm -f spawn-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(spawn_test_OBJECTS) $(spawn_test_LDADD) $(LIBS)

spawn-test-win32-gui$(EXEEXT): $(spawn_test_win32_gui_OBJECTS) $(spawn_test_win32_gui_DEPENDENCIES) $(EXTRA_spawn_test_win32_gui_DEPENDENCIES) 
	@rm -f spawn-test-win32-gui$(EXEEXT)
	$(AM_V_CCLD)$(spawn_test_win32_gui_LINK) $(spawn_test_win32_gui_OBJECTS) $(spawn_test_win32_gui_LDADD) $(LIBS)

testgdate$(EXEEXT): $(testgdate_OBJECTS) $(testgdate_DEPENDENCIES) $(EXTRA_testgdate_DEPENDENCIES) 
	@rm -f testgdate$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(testgdate_OBJECTS) $(testgdate_LDADD) $(LIBS)

testgdateparser$(EXEEXT): $(testgdateparser_OBJECTS) $(testgdateparser_DEPENDENCIES) $(EXTRA_testgdateparser_DEPENDENCIES) 
	@rm -f testgdateparser$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(testgdateparser_OBJECTS) $(testgdateparser_LDADD) $(LIBS)

testglib$(EXEEXT): $(testglib_OBJECTS) $(testglib_DEPENDENCIES) $(EXTRA_testglib_DEPENDENCIES) 
	@rm -f testglib$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(testglib_OBJECTS) $(testglib_LDADD) $(LIBS)

thread-test$(EXEEXT): $(thread_test_OBJECTS) $(thread_test_DEPENDENCIES) $(EXTRA_thread_test_DEPENDENCIES) 
	@rm -f thread-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(thread_test_OBJECTS) $(thread_test_LDADD) $(LIBS)

threadpool-test$(EXEEXT): $(threadpool_test_OBJECTS) $(threadpool_test_DEPENDENCIES) $(EXTRA_threadpool_test_DEPENDENCIES) 
	@rm -f threadpool-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(threadpool_test_OBJECTS) $(threadpool_test_LDADD) $(LIBS)

timeloop$(EXEEXT): $(timeloop_OBJECTS) $(timeloop_DEPENDENCIES) $(EXTRA_timeloop_DEPENDENCIES) 
	@rm -f timeloop$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(timeloop_OBJECTS) $(timeloop_LDADD) $(LIBS)

type-test$(EXEEXT): $(type_test_OBJECTS) $(type_test_DEPENDENCIES) $(EXTRA_type_test_DEPENDENCIES) 
	@rm -f type-test$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(type_test_OBJECTS) $(type_test_LDADD) $(LIBS)

unicode-caseconv$(EXEEXT): $(unicode_caseconv_OBJECTS) $(unicode_caseconv_DEPENDENCIES) $(EXTRA_unicode_caseconv_DEPENDENCIES) 
	@rm -f unicode-caseconv$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unicode_caseconv_OBJECTS) $(unicode_caseconv_LDADD) $(LIBS)

unicode-collate$(EXEEXT): $(unicode_collate_OBJECTS) $(unicode_collate_DEPENDENCIES) $(EXTRA_unicode_collate_DEPENDENCIES) 
	@rm -f unicode-collate$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unicode_collate_OBJECTS) $(unicode_collate_LDADD) $(LIBS)

unicode-encoding$(EXEEXT): $(unicode_encoding_OBJECTS) $(unicode_encoding_DEPENDENCIES) $(EXTRA_unicode_encoding_DEPENDENCIES) 
	@rm -f unicode-encoding$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unicode_encoding_OBJECTS) $(unicode_encoding_LDADD) $(LIBS)

unicode-normalize$(EXEEXT): $(unicode_normalize_OBJECTS) $(unicode_normalize_DEPENDENCIES) $(EXTRA_unicode_normalize_DEPENDENCIES) 
	@rm -f unicode-normalize$(EXEEXT)
	$(AM_V_CCLD)$(LINK) $(unicode_normalize_OBJECTS) $(unicode_normalize_LDADD) $(LIBS)
install-installed_testSCRIPTS: $(installed_test_SCRIPTS)
	@$(NORMAL_INSTALL)
	@list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
	fi; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
	done | \
	sed -e 'p;s,.*/,,;n' \
	    -e 'h;s|.*|.|' \
	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
	      if (++n[d] == $(am__install_max)) { \
		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
	    else { print "f", d "/" $$4, $$1 } } \
	  END { for (d in files) print "f", d, files[d] }' | \
	while read type dir files; do \
	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
	     test -z "$$files" || { \
	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \
	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \
	     } \
	; done

uninstall-installed_testSCRIPTS:
	@$(NORMAL_UNINSTALL)
	@list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \
	files=`for p in $$list; do echo "$$p"; done | \
	       sed -e 's,.*/,,;$(transform)'`; \
	dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)

mostlyclean-compile:
	-rm -f *.$(OBJEXT)

distclean-compile:
	-rm -f *.tab.c

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/assert-msg-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asyncqueue-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bit-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/child-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/completion-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cxx-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/datetime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gio-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iochannel-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoduletestplugin_a.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoduletestplugin_b.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mainloop-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapping-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memchunks.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/onceinit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qsort-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relation-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice-color.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice-concurrent.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice-threadinit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sources.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn-test-win32-gui.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgdate.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testgdateparser.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testglib.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadpool-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeloop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/type-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode-caseconv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode-collate.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode-encoding.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode-normalize.Po@am__quote@

.C.o:
@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<

.C.obj:
@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`

.C.lo:
@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<

.c.o:
@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<

.c.obj:
@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`

.c.lo:
@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs
install-installed_test_metaDATA: $(installed_test_meta_DATA)
	@$(NORMAL_INSTALL)
	@list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \
	fi; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  echo "$$d$$p"; \
	done | $(am__base_list) | \
	while read files; do \
	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \
	  $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \
	done

uninstall-installed_test_metaDATA:
	@$(NORMAL_UNINSTALL)
	@list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \
	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
	dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir)
install-nobase_installed_testDATA: $(nobase_installed_test_DATA)
	@$(NORMAL_INSTALL)
	@list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \
	fi; \
	$(am__nobase_list) | while read dir files; do \
	  xfiles=; for file in $$files; do \
	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
	  test -z "$$xfiles" || { \
	    test "x$$dir" = x. || { \
	      echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \
	      $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \
	    echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \
	    $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \
	done

uninstall-nobase_installed_testDATA:
	@$(NORMAL_UNINSTALL)
	@list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \
	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
	dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir)

# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
#     (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
	@fail=; \
	if $(am__make_keepgoing); then \
	  failcom='fail=yes'; \
	else \
	  failcom='exit 1'; \
	fi; \
	dot_seen=no; \
	target=`echo $@ | sed s/-recursive//`; \
	case "$@" in \
	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
	  *) list='$(SUBDIRS)' ;; \
	esac; \
	for subdir in $$list; do \
	  echo "Making $$target in $$subdir"; \
	  if test "$$subdir" = "."; then \
	    dot_seen=yes; \
	    local_target="$$target-am"; \
	  else \
	    local_target="$$target"; \
	  fi; \
	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
	  || eval $$failcom; \
	done; \
	if test "$$dot_seen" = "no"; then \
	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
	fi; test -z "$$fail"

ID: $(am__tagged_files)
	$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags

tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
	set x; \
	here=`pwd`; \
	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
	  include_option=--etags-include; \
	  empty_fix=.; \
	else \
	  include_option=--include; \
	  empty_fix=; \
	fi; \
	list='$(SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    test ! -f $$subdir/TAGS || \
	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
	  fi; \
	done; \
	$(am__define_uniq_tagged_files); \
	shift; \
	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  if test $$# -gt 0; then \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      "$$@" $$unique; \
	  else \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      $$unique; \
	  fi; \
	fi
ctags: ctags-recursive

CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
	$(am__define_uniq_tagged_files); \
	test -z "$(CTAGS_ARGS)$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && $(am__cd) $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-recursive

cscopelist-am: $(am__tagged_files)
	list='$(am__tagged_files)'; \
	case "$(srcdir)" in \
	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
	  *) sdir=$(subdir)/$(srcdir) ;; \
	esac; \
	for i in $$list; do \
	  if test -f "$$i"; then \
	    echo "$(subdir)/$$i"; \
	  else \
	    echo "$$sdir/$$i"; \
	  fi; \
	done >> $(top_builddir)/cscope.files

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

# Recover from deleted '.trs' file; this should ensure that
# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
# to avoid problems with "make -n".
.log.trs:
	rm -f $< $@
	$(MAKE) $(AM_MAKEFLAGS) $<

# Leading 'am--fnord' is there to ensure the list of targets does not
# expand to empty, as could happen e.g. with make check TESTS=''.
am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
am--force-recheck:
	@:

$(TEST_SUITE_LOG): $(TEST_LOGS)
	@$(am__set_TESTS_bases); \
	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
	redo_bases=`for i in $$bases; do \
	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
	            done`; \
	if test -n "$$redo_bases"; then \
	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
	  if $(am__make_dryrun); then :; else \
	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
	  fi; \
	fi; \
	if test -n "$$am__remaking_logs"; then \
	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
	       "recursion detected" >&2; \
	elif test -n "$$redo_logs"; then \
	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
	fi; \
	if $(am__make_dryrun); then :; else \
	  st=0;  \
	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
	  for i in $$redo_bases; do \
	    test -f $$i.trs && test -r $$i.trs \
	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
	    test -f $$i.log && test -r $$i.log \
	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
	  done; \
	  test $$st -eq 0 || exit 1; \
	fi
	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
	ws='[ 	]'; \
	results=`for b in $$bases; do echo $$b.trs; done`; \
	test -n "$$results" || results=/dev/null; \
	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
	  success=true; \
	else \
	  success=false; \
	fi; \
	br='==================='; br=$$br$$br$$br$$br; \
	result_count () \
	{ \
	    if test x"$$1" = x"--maybe-color"; then \
	      maybe_colorize=yes; \
	    elif test x"$$1" = x"--no-color"; then \
	      maybe_colorize=no; \
	    else \
	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
	    fi; \
	    shift; \
	    desc=$$1 count=$$2; \
	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
	      color_start=$$3 color_end=$$std; \
	    else \
	      color_start= color_end=; \
	    fi; \
	    echo "$${color_start}# $$desc $$count$${color_end}"; \
	}; \
	create_testsuite_report () \
	{ \
	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
	  result_count $$1 "PASS: " $$pass  "$$grn"; \
	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
	  result_count $$1 "FAIL: " $$fail  "$$red"; \
	  result_count $$1 "XPASS:" $$xpass "$$red"; \
	  result_count $$1 "ERROR:" $$error "$$mgn"; \
	}; \
	{								\
	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
	    $(am__rst_title);						\
	  create_testsuite_report --no-color;				\
	  echo;								\
	  echo ".. contents:: :depth: 2";				\
	  echo;								\
	  for b in $$bases; do echo $$b; done				\
	    | $(am__create_global_log);					\
	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
	if $$success; then						\
	  col="$$grn";							\
	 else								\
	  col="$$red";							\
	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
	fi;								\
	echo "$${col}$$br$${std}"; 					\
	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
	echo "$${col}$$br$${std}"; 					\
	create_testsuite_report --maybe-color;				\
	echo "$$col$$br$$std";						\
	if $$success; then :; else					\
	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
	  fi;								\
	  echo "$$col$$br$$std";					\
	fi;								\
	$$success || exit 1

check-TESTS:
	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
	@set +e; $(am__set_TESTS_bases); \
	log_list=`for i in $$bases; do echo $$i.log; done`; \
	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
	exit $$?;
recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA)
	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
	@set +e; $(am__set_TESTS_bases); \
	bases=`for i in $$bases; do echo $$i; done \
	         | $(am__list_recheck_tests)` || exit 1; \
	log_list=`for i in $$bases; do echo $$i.log; done`; \
	log_list=`echo $$log_list`; \
	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
	        am__force_recheck=am--force-recheck \
	        TEST_LOGS="$$log_list"; \
	exit $$?
testglib.log: testglib$(EXEEXT)
	@p='testglib$(EXEEXT)'; \
	b='testglib'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
spawn-test.log: spawn-test$(EXEEXT)
	@p='spawn-test$(EXEEXT)'; \
	b='spawn-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
iochannel-test.log: iochannel-test$(EXEEXT)
	@p='iochannel-test$(EXEEXT)'; \
	b='iochannel-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
module-test.log: module-test$(EXEEXT)
	@p='module-test$(EXEEXT)'; \
	b='module-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
testgdate.log: testgdate$(EXEEXT)
	@p='testgdate$(EXEEXT)'; \
	b='testgdate'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
datetime.log: datetime$(EXEEXT)
	@p='datetime$(EXEEXT)'; \
	b='datetime'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
atomic-test.log: atomic-test$(EXEEXT)
	@p='atomic-test$(EXEEXT)'; \
	b='atomic-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
bit-test.log: bit-test$(EXEEXT)
	@p='bit-test$(EXEEXT)'; \
	b='bit-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
child-test.log: child-test$(EXEEXT)
	@p='child-test$(EXEEXT)'; \
	b='child-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
completion-test.log: completion-test$(EXEEXT)
	@p='completion-test$(EXEEXT)'; \
	b='completion-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
dirname-test.log: dirname-test$(EXEEXT)
	@p='dirname-test$(EXEEXT)'; \
	b='dirname-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
file-test.log: file-test$(EXEEXT)
	@p='file-test$(EXEEXT)'; \
	b='file-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
env-test.log: env-test$(EXEEXT)
	@p='env-test$(EXEEXT)'; \
	b='env-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
gio-test.log: gio-test$(EXEEXT)
	@p='gio-test$(EXEEXT)'; \
	b='gio-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
mainloop-test.log: mainloop-test$(EXEEXT)
	@p='mainloop-test$(EXEEXT)'; \
	b='mainloop-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
mapping-test.log: mapping-test$(EXEEXT)
	@p='mapping-test$(EXEEXT)'; \
	b='mapping-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
onceinit.log: onceinit$(EXEEXT)
	@p='onceinit$(EXEEXT)'; \
	b='onceinit'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
asyncqueue-test.log: asyncqueue-test$(EXEEXT)
	@p='asyncqueue-test$(EXEEXT)'; \
	b='asyncqueue-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
qsort-test.log: qsort-test$(EXEEXT)
	@p='qsort-test$(EXEEXT)'; \
	b='qsort-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
relation-test.log: relation-test$(EXEEXT)
	@p='relation-test$(EXEEXT)'; \
	b='relation-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
slice-concurrent.log: slice-concurrent$(EXEEXT)
	@p='slice-concurrent$(EXEEXT)'; \
	b='slice-concurrent'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
slice-threadinit.log: slice-threadinit$(EXEEXT)
	@p='slice-threadinit$(EXEEXT)'; \
	b='slice-threadinit'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
sources.log: sources$(EXEEXT)
	@p='sources$(EXEEXT)'; \
	b='sources'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
thread-test.log: thread-test$(EXEEXT)
	@p='thread-test$(EXEEXT)'; \
	b='thread-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
threadpool-test.log: threadpool-test$(EXEEXT)
	@p='threadpool-test$(EXEEXT)'; \
	b='threadpool-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
type-test.log: type-test$(EXEEXT)
	@p='type-test$(EXEEXT)'; \
	b='type-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
unicode-caseconv.log: unicode-caseconv$(EXEEXT)
	@p='unicode-caseconv$(EXEEXT)'; \
	b='unicode-caseconv'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
unicode-encoding.log: unicode-encoding$(EXEEXT)
	@p='unicode-encoding$(EXEEXT)'; \
	b='unicode-encoding'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
cxx-test.log: cxx-test$(EXEEXT)
	@p='cxx-test$(EXEEXT)'; \
	b='cxx-test'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
timeloop.log: timeloop$(EXEEXT)
	@p='timeloop$(EXEEXT)'; \
	b='timeloop'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
run-collate-tests.sh.log: run-collate-tests.sh
	@p='run-collate-tests.sh'; \
	b='run-collate-tests.sh'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
run-assert-msg-test.sh.log: run-assert-msg-test.sh
	@p='run-assert-msg-test.sh'; \
	b='run-assert-msg-test.sh'; \
	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
.test.log:
	@p='$<'; \
	$(am__set_b); \
	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
	--log-file $$b.log --trs-file $$b.trs \
	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
	"$$tst" $(AM_TESTS_FD_REDIRECT)
@am__EXEEXT_TRUE@.test$(EXEEXT).log:
@am__EXEEXT_TRUE@	@p='$<'; \
@am__EXEEXT_TRUE@	$(am__set_b); \
@am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
@am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
@am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
@am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)

distdir: $(DISTFILES)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d "$(distdir)/$$file"; then \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
	  else \
	    test -f "$(distdir)/$$file" \
	    || cp -p $$d/$$file "$(distdir)/$$file" \
	    || exit 1; \
	  fi; \
	done
	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
	  if test "$$subdir" = .; then :; else \
	    $(am__make_dryrun) \
	      || test -d "$(distdir)/$$subdir" \
	      || $(MKDIR_P) "$(distdir)/$$subdir" \
	      || exit 1; \
	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
	    $(am__relativize); \
	    new_distdir=$$reldir; \
	    dir1=$$subdir; dir2="$(top_distdir)"; \
	    $(am__relativize); \
	    new_top_distdir=$$reldir; \
	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
	    ($(am__cd) $$subdir && \
	      $(MAKE) $(AM_MAKEFLAGS) \
	        top_distdir="$$new_top_distdir" \
	        distdir="$$new_distdir" \
		am__remove_distdir=: \
		am__skip_length_check=: \
		am__skip_mode_fix=: \
	        distdir) \
	      || exit 1; \
	  fi; \
	done
	$(MAKE) $(AM_MAKEFLAGS) \
	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
	  dist-hook
check-am: all-am
	$(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \
	  $(check_SCRIPTS) $(check_DATA)
	$(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
check: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) check-recursive
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA)
installdirs: installdirs-recursive
installdirs-am:
	for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \
	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
	done
install: $(BUILT_SOURCES)
	$(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-recursive
install-strip:
	if test -z '$(STRIP)'; then \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	      install; \
	else \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
	fi
mostlyclean-generic:
	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)

clean-generic:
	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)

distclean-generic:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive

clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
	clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
	clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
	mostlyclean-am

distclean: distclean-recursive
	-rm -rf ./$(DEPDIR)
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
	distclean-tags

dvi: dvi-recursive

dvi-am:

html: html-recursive

html-am:

info: info-recursive

info-am:

install-data-am: install-installed_testLTLIBRARIES \
	install-installed_testPROGRAMS install-installed_testSCRIPTS \
	install-installed_test_metaDATA \
	install-nobase_installed_testDATA

install-dvi: install-dvi-recursive

install-dvi-am:

install-exec-am:

install-html: install-html-recursive

install-html-am:

install-info: install-info-recursive

install-info-am:

install-man:

install-pdf: install-pdf-recursive

install-pdf-am:

install-ps: install-ps-recursive

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-recursive
	-rm -rf ./$(DEPDIR)
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-recursive

mostlyclean-am: mostlyclean-compile mostlyclean-generic \
	mostlyclean-libtool

pdf: pdf-recursive

pdf-am:

ps: ps-recursive

ps-am:

uninstall-am: uninstall-installed_testLTLIBRARIES \
	uninstall-installed_testPROGRAMS \
	uninstall-installed_testSCRIPTS \
	uninstall-installed_test_metaDATA \
	uninstall-nobase_installed_testDATA

.MAKE: $(am__recursive_targets) all check check-am install install-am \
	install-strip

.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
	check-TESTS check-am check-local clean clean-checkLTLIBRARIES \
	clean-checkPROGRAMS clean-generic \
	clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \
	clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
	cscopelist-am ctags ctags-am dist-hook distclean \
	distclean-compile distclean-generic distclean-libtool \
	distclean-tags distdir dvi dvi-am html html-am info info-am \
	install install-am install-data install-data-am install-dvi \
	install-dvi-am install-exec install-exec-am install-html \
	install-html-am install-info install-info-am \
	install-installed_testLTLIBRARIES \
	install-installed_testPROGRAMS install-installed_testSCRIPTS \
	install-installed_test_metaDATA install-man \
	install-nobase_installed_testDATA install-pdf install-pdf-am \
	install-ps install-ps-am install-strip installcheck \
	installcheck-am installdirs installdirs-am maintainer-clean \
	maintainer-clean-generic mostlyclean mostlyclean-compile \
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	recheck tags tags-am uninstall uninstall-am \
	uninstall-installed_testLTLIBRARIES \
	uninstall-installed_testPROGRAMS \
	uninstall-installed_testSCRIPTS \
	uninstall-installed_test_metaDATA \
	uninstall-nobase_installed_testDATA

.PRECIOUS: Makefile


# test-nonrecursive: run tests only in cwd
@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
@OS_UNIX_TRUE@	@test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
@OS_UNIX_FALSE@test-nonrecursive:

.PHONY: test-nonrecursive

.PHONY: lcov genlcov lcov-clean
# use recursive makes in order to ignore errors during check
lcov:
	-$(MAKE) $(AM_MAKEFLAGS) -k check
	$(MAKE) $(AM_MAKEFLAGS) genlcov

# we have to massage the lcov.info file slightly to hide the effect of libtool
# placing the objects files in the .libs/ directory separate from the *.c
# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
genlcov:
	$(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \
	  $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \
	  $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\*  gio/tests/gdbus-object-manager-example/\* ; \
	  LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source
	@echo "file://$(abs_top_builddir)/glib-lcov/index.html"

lcov-clean:
	if test -n "$(LTP)"; then \
	  $(LTP) --quiet --directory $(top_builddir) -z; \
	fi

# run tests in cwd as part of make check
check-local: test-nonrecursive

@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile
@ENABLE_INSTALLED_TESTS_TRUE@	$(AM_V_GEN) (echo '[Test]' > $@.tmp; \
@ENABLE_INSTALLED_TESTS_TRUE@	echo 'Type=session' >> $@.tmp; \
@ENABLE_INSTALLED_TESTS_TRUE@	echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \
@ENABLE_INSTALLED_TESTS_TRUE@	mv $@.tmp $@)

dist-hook: $(BUILT_EXTRA_DIST)
	files='$(BUILT_EXTRA_DIST)';				\
	for f in $$files; do					\
	  if test -f $$f; then d=.; else d=$(srcdir); fi;	\
	  cp $$d/$$f $(distdir) || exit 1;			\
	done
	mkdir $(distdir)/collate;				\
	for f in $(srcdir)/collate/* ; do			\
	  if test -f $$f; then cp $$f $(distdir)/collate; fi;	\
	done

@PLATFORM_WIN32_TRUE@module-test.exp: module-test.o
@PLATFORM_WIN32_TRUE@	$(DLLTOOL) --output-exp module-test.exp module-test.o

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
