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

TOP = ..\..

!INCLUDE ..\build\win32\make.msc

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

INCLUDES = -FImsvc_recommended_pragmas.h -I .. -I . -I ..\glib
DEFINES = -DHAVE_CONFIG_H -DGOBJECT_COMPILATION -DG_LOG_DOMAIN=\"GLib-GObject\" \
		-DG_ENABLE_DEBUG
#		-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS
#		-DG_DISABLE_CAST_CHECKS

all :				\
	glib-genmarshal.exe     \
	gmarshal.h              \
	gmarshal.c              \
	gmarshal.strings \
	gobject-query.exe \
	libgobject-2.0-0.dll	\
	gobject-2.49s.lib \
	testgobject.exe

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

gobject.def: gobject.symbols
	echo EXPORTS > gobject.def
	cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES \
		-DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \
		-DG_GNUC_PRINTF=;G_GNUC_PRINTF gobject.symbols >> gobject.def

gobject.res : gobject.rc
	rc -DBUILDNUMBER=0 -r -fo gobject.res gobject.rc

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

libgobject-2.0-0.dll : $(gobject_OBJECTS) gobject.def gobject.res
	$(CC) $(CFLAGS) -Fm -LD -Fe$@ $(gobject_OBJECTS) gobject.res \
	..\glib\glib-2.0.lib $(LDFLAGS) /implib:gobject-2.0.lib /def:gobject.def || del $@

gobject-2.49s.lib : $(gobject_OBJECTS) 
	lib /out:$@ $(gobject_OBJECTS)

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

gobject-query.exe : gobject-query.c libgobject-2.0-0.dll
	$(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION gobject-query.c \
	..\glib\glib-2.0.lib gobject-2.0.lib user32.lib advapi32.lib $(INTL_LIBS)

gmarshal.strings : gmarshal.list
	perl marshal-genstrings.pl > gmarshal.strings

.c.exe :
	$(CC) $(CFLAGS) -c $<
	$(CC) $(CFLAGS) -Fe$@ $< gobject-2.0.lib ..\glib\glib-2.0.lib ..\gmodule\gmodule-2.0.lib $(LDFLAGS) user32.lib /subsystem:console
