## Makefile for building the gmodule DLL with gcc for mingw. The build
## uses tools running on cygwin, however.

## Use: make -f makefile.mingw

TOP = ../..

include ../build/win32/make.mingw

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

# Nothing much configurable below

INCLUDES = -I .. -I ../glib -I .
DEFINES = -DHAVE_CONFIG_H -DG_LOG_DOMAIN=\"GModule\" -DG_ENABLE_DEBUG

all : \
	gmoduleconf.h \
	gmodule-@GLIB_VERSION@.dll \
	testgmodule.exe \
	libgplugin_a.dll libgplugin_b.dll

ifeq ($(wildcard makefile.mingw.in),makefile.mingw.in)
makefile.mingw: makefile.mingw.in
	sed -e 's,@GLIB[_]VERSION@,@GLIB_VERSION@,' <$< >$@
endif

gmodule_OBJECTS = \
	gmodule.o

gmoduleconf.h: gmoduleconf.h.win32
	cp $< $@

################ The gmodule DLL

gmodule-@GLIB_VERSION@.dll : $(gmodule_OBJECTS) gmodule.def
	$(BUILD_DLL) gmodule @GLIB_VERSION@ $(CFLAGS) gmodule.def $(gmodule_OBJECTS) -L ../glib -lglib

################ test prog

testgmodule.exe : gmodule-@GLIB_VERSION@.dll testgmodule.o 
# We have to generate an .exp file separately with dlltool, and link
# with that. Sigh.
	dlltool --output-exp testgmodule.exp testgmodule.o
	$(CC) $(CFLAGS) -o testgmodule.exe testgmodule.o testgmodule.exp -L ../glib -lglib -L . -lgmodule $(LFLAGS)

libgplugin_a.dll : libgplugin_a.o
	$(BUILD_DLL) libgplugin_a - libgplugin_a.o -L ../glib -lglib -L . -lgmodule

libgplugin_b.dll : libgplugin_b.o
	$(BUILD_DLL) libgplugin_b - libgplugin_b.o -L ../glib -lglib -L . -lgmodule

################ Other stuff

clean::
	-rm gmoduleconf.h
