TOP = ..\..
-!INCLUDE $(TOP)\build\win32\make.msc
-
-# Possibly override GLib version in build\win32\object.defs
-GLIB_VER = @GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@
+!INCLUDE ..\build\win32\make.msc
################################################################
-# Nothing much configurable below
+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-@LT_CURRENT_MINUS_AGE@.dll \
+ gobject-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.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-@LT_CURRENT_MINUS_AGE@.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 $@
-INCLUDES = -I .. -I .
-DEFINES = -DHAVE_CONFIG_H -DGOBJECT_COMPILATION -DG_LOG_DOMAIN=g_log_domain_gobject
+gobject-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib : $(gobject_OBJECTS)
+ lib /out:$@ $(gobject_OBJECTS)
-all : \
- gobject-$(GLIB_VER).dll
+# 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-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib user32.lib advapi32.lib ole32.lib shell32.lib $(INTL_LIBS)
-gobject_OBJECTS = \
- gvalue.obj \
- gvaluetypes.obj \
- gparam.obj \
- gparamspecs.obj \
- genums.obj \
- gobject.obj \
- gtype.obj
+gobject-query.exe : gobject-query.c libgobject-2.0-@LT_CURRENT_MINUS_AGE@.dll
+ $(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION gobject-query.c \
+ ..\glib\glib-2.0.lib gobject-2.0.lib user32.lib advapi32.lib $(INTL_LIBS)
-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 >$@
+gmarshal.strings : gmarshal.list
+ perl marshal-genstrings.pl > gmarshal.strings
-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
+.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