## 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 -DPCRE_STATIC -DG_DISABLE_DEPRECATED \
	-DDLL_EXPORT=1

DEPCFLAGS = -Zm400 $(INTL_CFLAGS) $(DIRENT_CFLAGS)

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


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

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

glib_OBJECTS =			\
	garray.obj		\
	gasyncqueue.obj		\
	gatomic.obj	\
	gbacktrace.obj		\
	gbase64.obj	\
	gbookmarkfile.obj \
	gcache.obj \
	gchecksum.obj	\
	gcompletion.obj	\
	gconvert.obj \
	gdataset.obj \
	gdate.obj \
	gdir.obj \
	gerror.obj \
	gfileutils.obj \
	ghash.obj \
	ghostutils.obj \
	ghook.obj \
	giochannel.obj \
	giowin32.obj \
	gpoll.obj \
	gkeyfile.obj \
	glist.obj \
	gmain.obj \
	gmappedfile.obj	\
	gmarkup.obj \
	gmem.obj \
	gmessages.obj \
	gnode.obj \
	goption.obj \
	gpattern.obj \
	gprimes.obj \
	gprintf.obj \
	gqsort.obj \
	gqueue.obj \
	grand.obj \
	gregex.obj \
	grel.obj \
	gscanner.obj \
	gsequence.obj \
	gshell.obj \
	gslice.obj \
	gslist.obj \
	gspawn-win32.obj \
	gstdio.obj \
	gstrfuncs.obj \
	gstring.obj \
	gtestutils.obj \
	gthread.obj \
	gthreadpool.obj \
	gtimer.obj \
	gtree.obj \
	gunibreak.obj \
	gunicollate.obj \
	gunidecomp.obj \
	guniprop.obj \
	gurifuncs.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

localcharset.obj : libcharset\localcharset.c
	$(CC) $(CFLAGS) -DLIBDIR=\".\" -c libcharset\localcharset.c

glib.def: glib.symbols
	echo EXPORTS > glib.def
	cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DINCLUDE_INTERNAL_SYMBOLS -DALL_FILES \
		-DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \
		-DG_GNUC_PRINTF=;G_GNUC_PRINTF -DG_GNUC_FORMAT=;G_GNUC_FORMAT 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 pcre\pcre.lib
	lib /out:glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@s.lib $(glib_OBJECTS) gnulib\gnulib.lib pcre\pcre.lib

libglib-2.0-0.dll : $(glib_OBJECTS) gnulib\gnulib.lib pcre\pcre.lib glib.def glib.res
	$(CC) $(CFLAGS) -LD -Fe$@ $(glib_OBJECTS) glib.res $(INTL_LIBS) \
	gnulib\gnulib.lib pcre\pcre.lib $(DIRENT_LIBS) user32.lib advapi32.lib shell32.lib wsock32.lib ole32.lib ws2_32.lib winmm.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

gspawn-win32-helper-console.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:console user32.lib

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

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

