## Makefile for building the gobject dll with Microsoft C
## Use: nmake -f makefile.msc install

TOP = ..\..

!INCLUDE $(TOP)\build\win32\make.msc

# Possibly override GLib version in build\win32\object.defs
GLIB_VER = @GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@

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

# Nothing much configurable below

INCLUDES = -I .. -I .
DEFINES = -DHAVE_CONFIG_H -DGOBJECT_COMPILATION -DG_LOG_DOMAIN=g_log_domain_gruntime -DG_ENABLE_DEBUG

all :				\
	glib-genmarshal.exe \
	gmarshal.h \
	gmarshal.c \
	gobject-$(GLIB_VER).dll	\

gobject_OBJECTS =		\
	gboxed.obj		\
	gbsearcharray.obj	\
	gclosure.obj		\
	genums.obj		\
	gobject.obj		\
	gparam.obj		\
	gparamspecs.obj		\
	gsignal.obj		\
	gtype.obj		\
	gtypemodule.obj		\
	gtypeplugin.obj		\
	gvalue.obj		\
	gvaluearray.obj		\
	gvaluetypes.obj	\
	gvaluetransform.obj

gmarshal.h : gmarshal.list glib-genmarshal.exe
	echo #ifndef __G_MARSHAL_H__ > xgen-gmh
	echo #define __G_MARSHAL_H__ >> xgen-gmh
	glib-genmarshal --nostdinc --prefix=g_cclosure_marshal gmarshal.list --header >> xgen-gmh
	echo #endif /* __G_MARSHAL_H__ */ >> xgen-gmh
	copy xgen-gmh gmarshal.h

gmarshal.c: gmarshal.list gmarshal.h glib-genmarshal.exe
	glib-genmarshal --nostdinc --prefix=g_cclosure_marshal gmarshal.list --body > gmarshal.c

makefile.msc: makefile.msc.in
	$(SED) -e s,@GLIB[_]MAJOR_VERSION@,@GLIB_MAJOR_VERSION@, \
	       -e s,@GLIB[_]MINOR_VERSION@,@GLIB_MINOR_VERSION@, <makefile.msc.in >$@

gobject-$(GLIB_VER).dll : $(gobject_OBJECTS) gobject.def
	$(CC) $(CFLAGS) -LD -Fegobject-$(GLIB_VER).dll $(gobject_OBJECTS) ..\glib-$(GLIB_VER).lib $(LDFLAGS) /def:gobject.def

# link glib's static version to avoid installing 
glib-genmarshal.exe : glib-genmarshal.c ..\glib-$(GLIB_VER)s.lib
	$(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION glib-genmarshal.c ..\glib-$(GLIB_VER)s.lib user32.lib advapi32.lib $(INTL_LIBS)
