## Makefile for building the GLib test programs with gcc for mingw.
## Use: make -f makefile.mingw check

TOP = ../..

include ../build/win32/make.mingw

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

# Nothing much configurable below

INCLUDES = -I .. -I ../glib -I ../gmodule
DEFINES = -DHAVE_CONFIG_H

NONAUTOMATIC_TESTS = \
	testglib.exe	\
	testgdate.exe	\
	testgdateparser.exe \
	patterntest.exe \
	unicode-normalize.exe \
	unicode-collate.exe

TESTS = \
	array-test.exe	\
	date-test.exe	\
	dirname-test.exe\
	gio-test.exe	\
	hash-test.exe	\
	list-test.exe	\
	mainloop-test.exe \
	markup-test.exe	\
	module-test.exe	\
	node-test.exe	\
	queue-test.exe	\
	rand-test.exe	\
	relation-test.exe\
	shell-test.exe	\
	slist-test.exe	\
	spawn-test.exe	\
	strfunc-test.exe\
	string-test.exe	\
	strtod-test.exe \
	thread-test.exe	\
	threadpool-test.exe\
	tree-test.exe	\
	type-test.exe	\
	unicode-caseconv.exe \
	unicode-encoding.exe

DLLS = \
	libmoduletestplugin_a.dll \
	libmoduletestplugin_b.dll

all:	$(TESTS) $(NONAUTOMATIC_TESTS) $(DLLS)

.SUFFIXES: .c .i .exe

.c.exe:
	$(CC) $(CFLAGS) -o $@ $< -L ../gthread -lgthread-2.0 -L ../glib -lglib-2.0

module-test.exe : module-test.o
	$(CC) $(CFLAGS) -Wl,--base-file,module-test.base -o module-test.exe module-test.o -L ../glib -lglib-2.0 -L ../gmodule -lgmodule-2.0 $(LDFLAGS)
	$(DLLTOOL) --base-file module-test.base --output-exp module-test.exp module-test.o
	$(CC) $(CFLAGS) -Wl,--base-file,module-test.base,module-test.exp -o module-test.exe module-test.o -L ../glib -lglib-2.0 -L ../gmodule -lgmodule-2.0 $(LDFLAGS)
	$(DLLTOOL) --base-file module-test.base --output-exp module-test.exp module-test.o
	$(CC) $(CFLAGS) -Wl,module-test.exp -o module-test.exe module-test.o -L ../glib -lglib-2.0 -L ../gmodule -lgmodule-2.0 $(LDFLAGS)

libmoduletestplugin_a.dll : libmoduletestplugin_a.o
	$(BUILD_DLL) libmoduletestplugin_a - libmoduletestplugin_a.o -L ../glib -lglib-2.0 -L ../gmodule -lgmodule-2.0

libmoduletestplugin_b.dll : libmoduletestplugin_b.o
	$(BUILD_DLL) libmoduletestplugin_b - libmoduletestplugin_b.o -L ../glib -lglib-2.0 -L ../gmodule -lgmodule-2.0

check:	all
	@for P in $(TESTS) ; do echo $$P; PATH=../glib:../gmodule:../gobject:../gthread:$$PATH ./$$P; done
	@echo All tests successful.
