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

# build . first, then SUBDIRS
SUBDIRS = gmodule docs
all-recursive-am: all-am
# alpha `automake' supports this better
#SUBDIRS = . gmodule docs

configincludedir = $(pkglibdir)/include

bin_SCRIPTS=glib-config
BUILT_SOURCES=glib-config
glib-config: glib-config.in

INCLUDES = -DG_LOG_DOMAIN=g_log_domain_glib @GLIB_DEBUG_FLAGS@

EXTRA_DIST = \
	glib.m4		\
	glib.spec	\
	sanity_check	\
	README.win32	\
	glib.def	\
	makefile.lcc	\
	makefile.msc	\
	glibconfig.h.win32

lib_LTLIBRARIES = libglib.la

libglib_la_SOURCES = \
		garray.c	\
		gcache.c	\
		gcompletion.c	\
		gdataset.c	\
                gdate.c         \
		gerror.c	\
		ghash.c		\
		ghook.c		\
		glist.c		\
		gmain.c         \
		giochannel.c    \
		giounix.c       \
		gmem.c		\
		gmessages.c	\
		gnode.c		\
		gprimes.c	\
		gslist.c	\
		gtimer.c	\
		gtree.c		\
		grel.c		\
		gstring.c	\
		gstrfuncs.c	\
		gscanner.c	\
		gutils.c

include_HEADERS = \
		glib.h

configinclude_DATA = \
		glibconfig.h

BUILT_SOURCES = stamp-gc-h #note: not glibconfig.h
glibconfig.h: stamp-gc-h
	@:
stamp-gc-h: config.status
	CONFIG_FILES= CONFIG_HEADERS= CONFIG_OTHER=glibconfig.h ./config.status
	echo timestamp > stamp-gc-h

libglib_la_LDFLAGS = \
	-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE)

noinst_PROGRAMS = testglib testgdate testgdateparser
testglib_LDADD = libglib.la
testgdate_LDADD = libglib.la
testgdateparser_LDADD = libglib.la

m4datadir = $(datadir)/aclocal
m4data_DATA = glib.m4

.PHONY: files release sanity snapshot

files:
	@files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \
	  echo $$p; \
	done

release:
	rm -rf .deps */.deps
	cd docs && make glib.html
	$(MAKE) distcheck

sanity:
	./sanity_check $(VERSION)

snapshot:
	$(MAKE) dist distdir=$(PACKAGE)`date +"%y%m%d"`
