1## Makefile for building the gobject dll with Microsoft C
2## Use: nmake -f makefile.msc install
3
4TOP = ..\..
5
6!INCLUDE ..\build\win32\make.msc
7
8################################################################
9
10INCLUDES = -FImsvc_recommended_pragmas.h -I .. -I . -I ..\glib
11DEFINES = -DHAVE_CONFIG_H -DGOBJECT_COMPILATION -DG_LOG_DOMAIN=\"GLib-GObject\" \
12		-DG_ENABLE_DEBUG
13#		-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS
14#		-DG_DISABLE_CAST_CHECKS
15
16all :				\
17	glib-genmarshal.exe     \
18	gmarshal.h              \
19	gmarshal.c              \
20	gobjectalias.h	\
21	gobjectaliasdef.c \
22	gmarshal.strings \
23	gobject-query.exe \
24	libgobject-2.0-@LT_CURRENT_MINUS_AGE@.dll	\
25	gobject-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib \
26	testgobject.exe
27
28gobject_OBJECTS =		\
29	gboxed.obj		\
30	gclosure.obj		\
31	genums.obj		\
32	gobject.obj		\
33	gparam.obj		\
34	gparamspecs.obj		\
35	gsignal.obj		\
36	gsourceclosure.obj	\
37	gtype.obj		\
38	gtypemodule.obj		\
39	gtypeplugin.obj		\
40	gvalue.obj		\
41	gvaluearray.obj		\
42	gvaluetypes.obj	\
43	gvaluetransform.obj
44
45gobjectalias.h: gobject.symbols
46	perl makegobjectalias.pl < gobject.symbols > gobjectalias.h
47
48gobjectaliasdef.c: gobject.symbols
49	perl makegobjectalias.pl -def < gobject.symbols > gobjectaliasdef.c
50
51gobject.def: gobject.symbols
52	echo EXPORTS > gobject.def
53	cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES \
54		-DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \
55		-DG_GNUC_PRINTF=;G_GNUC_PRINTF gobject.symbols >> gobject.def
56
57gobject.res : gobject.rc
58	rc -DBUILDNUMBER=0 -r -fo gobject.res gobject.rc
59
60gmarshal.h : gmarshal.list glib-genmarshal.exe
61	echo #ifndef __G_MARSHAL_H__ > xgen-gmh
62	echo #define __G_MARSHAL_H__ >> xgen-gmh
63	glib-genmarshal --nostdinc --prefix=g_cclosure_marshal gmarshal.list --header >> xgen-gmh
64	echo #endif /* __G_MARSHAL_H__ */ >> xgen-gmh
65	copy xgen-gmh gmarshal.h
66
67gmarshal.c: gmarshal.list gmarshal.h glib-genmarshal.exe
68	glib-genmarshal --nostdinc --prefix=g_cclosure_marshal gmarshal.list --body > gmarshal.c
69
70libgobject-2.0-@LT_CURRENT_MINUS_AGE@.dll : $(gobject_OBJECTS) gobject.def gobject.res
71	$(CC) $(CFLAGS) -Fm -LD -Fe$@ $(gobject_OBJECTS) gobject.res \
72	..\glib\glib-2.0.lib $(LDFLAGS) /implib:gobject-2.0.lib /def:gobject.def || del $@
73
74gobject-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib : $(gobject_OBJECTS) 
75	lib /out:$@ $(gobject_OBJECTS)
76
77# link glib's static version to avoid installing 
78glib-genmarshal.exe : glib-genmarshal.c gmarshal.strings
79	$(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION glib-genmarshal.c \
80	..\glib\glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib user32.lib advapi32.lib ole32.lib shell32.lib $(INTL_LIBS) 
81
82gobject-query.exe : gobject-query.c libgobject-2.0-@LT_CURRENT_MINUS_AGE@.dll
83	$(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION gobject-query.c \
84	..\glib\glib-2.0.lib gobject-2.0.lib user32.lib advapi32.lib $(INTL_LIBS)
85
86gmarshal.strings : gmarshal.list
87	perl marshal-genstrings.pl > gmarshal.strings
88
89.c.exe :
90	$(CC) $(CFLAGS) -c $<
91	$(CC) $(CFLAGS) -Fe$@ $< gobject-2.0.lib ..\glib\glib-2.0.lib ..\gmodule\gmodule-2.0.lib $(LDFLAGS) user32.lib /subsystem:console
92