## Makefile for building the GLib dlls with Microsoft C
## Use: nmake -f makefile.msc

TOP = ..\..

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

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

INCLUDES = -FImsvc_recommended_pragmas.h -I . -I ..
DEFINES = -DHAVE_CONFIG_H -DGLIB_COMPILATION -DG_LOG_DOMAIN=\"GLib\" -DG_ENABLE_DEBUG
DEPCFLAGS = -Zm400 $(INTL_CFLAGS) $(LIBICONV_CFLAGS) $(DIRENT_CFLAGS)

all :				\
	..\config.h		\
	..\glibconfig.h	\
	galias.h		\
	gnulib\gnulib.lib	\
	libglib-2.0-@LT_CURRENT_MINUS_AGE@.dll \
	glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib \
	gspawn-win32-helper.exe	\


gnulib\gnulib.lib :
	cd gnulib
	nmake -f makefile.msc
	cd ..

glib_OBJECTS =			\
	garray.obj		\
	gasyncqueue.obj		\
	gatomic.obj	\
	gbacktrace.obj		\
	gcache.obj		\
	gcompletion.obj		\
	gconvert.obj		\
	gdataset.obj		\
	gdate.obj		\
	gdir.obj	\
	gerror.obj		\
	gfileutils.obj		\
	ghash.obj		\
	ghook.obj		\
	gkeyfile.obj		\
	giochannel.obj		\
	giowin32.obj		\
	glist.obj		\
	gmain.obj		\
	gmarkup.obj		\
	gmem.obj		\
	gmessages.obj		\
	gnode.obj		\
	goption.obj	\
	gprimes.obj		\
	gqsort.obj		\
	gqueue.obj		\
	gpattern.obj	\
	gprintf.obj	\
	grand.obj		\
	grel.obj		\
	gscanner.obj		\
	gshell.obj		\
	gslist.obj		\
	gspawn-win32.obj	\
	gstdio.obj	\
	gstrfuncs.obj		\
	gstring.obj		\
	gthread.obj		\
	gthreadpool.obj		\
	gtimer.obj		\
	gtree.obj		\
	gunibreak.obj		\
	gunicollate.obj		\
	gunidecomp.obj		\
	guniprop.obj		\
	gutf8.obj		\
	gutils.obj		\
	gwin32.obj		\
	localcharset.obj

..\glibconfig.h: ..\glibconfig.h.win32
	copy ..\glibconfig.h.win32 ..\glibconfig.h

..\config.h: ..\config.h.win32
	copy ..\config.h.win32 ..\config.h

galias.h: glib.symbols
	perl makegalias.pl < glib.symbols > galias.h

localcharset.c : libcharset/localcharset.c
	copy libcharset\localcharset.c localcharset.c

glib.def: glib.symbols
	echo EXPORTS > glib.def
	cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DINCLUDE_INTERNAL_SYMBOLS glib.symbols >> glib.def

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

################ glib

# create a static libary
# static library can well have the real version number in the name
glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib : $(glib_OBJECTS) gnulib\gnulib.lib
	lib /out:glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib $(glib_OBJECTS) gnulib\gnulib.lib

libglib-2.0-@LT_CURRENT_MINUS_AGE@.dll : $(glib_OBJECTS) gnulib\gnulib.lib glib.def glib.res
	$(CC) $(CFLAGS) -LD -Fe$@ $(glib_OBJECTS) glib.res $(LIBICONV_LIBS) $(INTL_LIBS) \
	gnulib\gnulib.lib $(DIRENT_LIBS) user32.lib advapi32.lib shell32.lib wsock32.lib ole32.lib $(LDFLAGS) /implib:glib-2.0.lib /def:glib.def

gspawn-win32-helper.exe : gspawn-win32-helper.c libglib-2.0-@LT_CURRENT_MINUS_AGE@.dll
	$(CC) $(CFLAGS) -Fe$@ -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32-helper.c glib-2.0.lib $(LDFLAGS) /subsystem:windows user32.lib

################ other stuff

clean::
	del ..\config.h
	del ..\glibconfig.h

