# autogenerated from automake.am with automake.py
TOP = ..\..
PRJ_TOP = ..
PACKAGE = gio
PKG_VER = 2.0
!INCLUDE $(TOP)\glib\build\win32\make.msc

SUBDIRS = win32

sub-all: 
	for %d in ($(SUBDIRS)) do nmake -nologo -f makefile.msc sub-one THIS=%d

sub-one:
	cd $(THIS)
	nmake -nologo -f makefile.msc
	cd ..

INCLUDES = \
	-FImsvc_recommended_pragmas.h \
	-I .. -I ..\glib -I ..\gmodule -I . \
	$(INTL_CFLAGS)

DEFINES = \
	-DG_LOG_DOMAIN=\"GLib-GIO\" \
	-DGIO_MODULE_DIR=\"$(libdir)/gio/modules\" \
	-DGIO_COMPILATION

appinfo_sources = \
	gwin32appinfo.c gwin32appinfo.h

gio_headers =			\
	gappinfo.h 		\
	gasyncresult.h 		\
	gbufferedinputstream.h 	\
	gbufferedoutputstream.h \
	gcancellable.h 		\
	gcontenttype.h 		\
	gdatainputstream.h 	\
	gdataoutputstream.h 	\
	gdrive.h 		\
	gemblem.h		\
	gemblemedicon.h		\
	gfile.h 		\
	gfileattribute.h 	\
	gfileenumerator.h 	\
	gfileicon.h 		\
	gfileinfo.h 		\
	gfileinputstream.h 	\
	gfilemonitor.h 		\
	gfilenamecompleter.h 	\
	gfileoutputstream.h 	\
	gfilterinputstream.h 	\
	gfilteroutputstream.h 	\
	gicon.h 		\
	ginputstream.h 		\
	gio.h			\
	giotypes.h		\
	gioenums.h		\
	gioerror.h 		\
	giomodule.h 		\
	gioscheduler.h 		\
	gloadableicon.h 	\
	gmount.h 		\
	gmemoryinputstream.h 	\
	gmemoryoutputstream.h 	\
	gmountoperation.h 	\
	gnativevolumemonitor.h 	\
	goutputstream.h 	\
	gseekable.h 		\
	gsimpleasyncresult.h 	\
	gthemedicon.h 		\
	gvfs.h 			\
	gvolume.h 		\
	gvolumemonitor.h 	\
	$(NULL)

OBJECTS = \
	gappinfo.obj \
	gasynchelper.obj \
	gasyncinitable.obj \
	gasyncresult.obj \
	gbufferedinputstream.obj \
	gbufferedoutputstream.obj \
	gcancellable.obj \
	gcontenttype.obj \
	gdatainputstream.obj \
	gdataoutputstream.obj \
#	gdesktopappinfo.obj \
	gdrive.obj \
	gdummyfile.obj \
	gemblem.obj \
	gemblemedicon.obj \
	gfile.obj \
	gfileattribute.obj \
	gfileenumerator.obj \
	gfileicon.obj \
	gfileinfo.obj \
	gfileinputstream.obj \
	gfileiostream.obj \
	gfilemonitor.obj \
	gfilenamecompleter.obj \
	gfileoutputstream.obj \
	gfilterinputstream.obj \
	gfilteroutputstream.obj \
	gicon.obj \
	ginetaddress.obj \
	ginetsocketaddress.obj \
	ginitable.obj \
	ginputstream.obj \
	gioenumtypes.obj \
	gioerror.obj \
	giomodule.obj \
	gioscheduler.obj \
	giostream.obj \
	gloadableicon.obj \
	glocalfileiostream.obj \
	gmemoryinputstream.obj \
	gmemoryoutputstream.obj \
	gmount.obj \
	gmountoperation.obj \
	gnativevolumemonitor.obj \
	gnetworkaddress.obj \
	gnetworkservice.obj \
	goutputstream.obj \
	gpollfilemonitor.obj \
	gresolver.obj \
	gseekable.obj \
	gsimpleasyncresult.obj \
	gsocket.obj \
	gsocketaddress.obj \
	gsocketaddressenumerator.obj \
	gsocketclient.obj \
	gsocketconnectable.obj \
	gsocketconnection.obj \
	gsocketcontrolmessage.obj \
	gsocketlistener.obj \
	gsocketservice.obj \
	gsocketinputstream.obj \
	gsocketoutputstream.obj \
	gsrvtarget.obj \
	gtcpconnection.obj \
	gthreadedresolver.obj \
	gthreadedsocketservice.obj \
	gthemedicon.obj \
	gunionvolumemonitor.obj \
	gvfs.obj \
	gvolume.obj \
	gvolumemonitor.obj \
	\
	glocalvfs.obj \
	glocalfile.obj \
	glocalfileenumerator.obj \
	glocalfileinfo.obj \
	glocalfileinputstream.obj \
	glocalfileoutputstream.obj \
	glocalfilemonitor.obj \
	glocaldirectorymonitor.obj \
	gwin32appinfo.obj \
	\
	gio-marshal.obj \
	gwin32mount.obj \
	gwin32volumemonitor.obj \
	gwin32resolver.obj 

libgio_2_0_la_LIBADD = \
	$(top_builddir)/glib/libglib-2.0.la \
	$(top_builddir)/gobject/libgobject-2.0.la \
	$(top_builddir)/gmodule/libgmodule-2.0.la \
	$(platform_libadd) \
	$(SELINUX_LIBS) \
	$(GLIB_LIBS) \
	$(XATTR_LIBS) \
	$(NULL)

unix_sources = \
	gunixdrive.c \
	gunixdrive.h \
	gunixmounts.c \
	gunixmounts.h \
	gunixvolume.c \
	gunixvolume.h \
	gunixvolumemonitor.c \
	gunixvolumemonitor.h \
	$(NULL)

marshal_sources = \
	gio-marshal.h gio-marshal.c $(NULL)

GLIB_GEN_MARSHAL = ..\gobject\glib-genmarshal.exe 

gio-marshal.h: gio-marshal.list
	$(GLIB_GEN_MARSHAL) --prefix=_gio_marshal gio-marshal.list --header >> xgen-gwmh \
	&& copy /y xgen-gwmh gio-marshal.h \
	&& del xgen-gwmh xgen-gwmh~

gio-marshal.c: gio-marshal.h
	echo #include "gio-marshal.h" >> xgen-gwmc \
	&& $(GLIB_GEN_MARSHAL) --prefix=_gio_marshal gio-marshal.list --body >> xgen-gwmc \
	&& copy xgen-gwmc gio-marshal.c \
	&& del xgen-gwmc xgen-gwmc~

local_sources = \
	glocaldirectorymonitor.c \
	glocaldirectorymonitor.h \
	glocalfile.c \
	glocalfile.h \
	glocalfileenumerator.c \
	glocalfileenumerator.h \
	glocalfileinfo.c \
	glocalfileinfo.h \
	glocalfileinputstream.c \
	glocalfileinputstream.h \
	glocalfilemonitor.c \
	glocalfilemonitor.h \
	glocalfileoutputstream.c \
	glocalfileoutputstream.h \
	glocalvfs.c \
	glocalvfs.h \
	$(NULL)

all : \
	$(PRJ_TOP)\config.h \
	sub-all	\
	gio-marshal.c \
	gioenumtypes.h		\
	gioenumtypes.c		\
	libgio-$(PKG_VER)-0.dll


$(PRJ_TOP)\config.h: $(PRJ_TOP)\config.h.win32
	copy $(PRJ_TOP)\config.h.win32 $(PRJ_TOP)\config.h

gioenumtypes.h: $(gio_headers) gioenumtypes.h.template
	$(PERL) ..\gobject\glib-mkenums --template gioenumtypes.h.template $(gio_headers) > gioenumtypes.h
	
gioenumtypes.c: $(gio_headers) gioenumtypes.c.template
	$(PERL) ..\gobject\glib-mkenums --template gioenumtypes.c.template $(gio_headers) > gioenumtypes.c

gio.def: gio.symbols
	echo EXPORTS > gio.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 gio.symbols >> gio.def

RESOURCE = $(PACKAGE).res

$(PACKAGE).res : $(PACKAGE).rc
	rc -DBUILDNUMBER=0 -r -fo $(PACKAGE).res $(PACKAGE).rc

libgio-$(PKG_VER)-0.dll : $(OBJECTS) win32\giowin32.lib $(PACKAGE).def $(RESOURCE)
	$(CC) $(CFLAGS) -LD -Felibgio-$(PKG_VER)-0.dll $(OBJECTS) $(RESOURCE) \
	..\glib\glib-2.0.lib ..\gobject\gobject-2.0.lib ..\gmodule\gmodule-2.0.lib \
	win32\giowin32.lib \
	$(INTL_LIBS) \
	kernel32.lib user32.lib advapi32.lib shell32.lib wsock32.lib ws2_32.lib dnsapi.lib mpr.lib $(LDFLAGS) \
	/implib:gio-2.0.lib /def:$(PACKAGE).def

.c.obj :
	$(CC) $(CFLAGS) -c $(PKG_CFLAGS) $<
