# Note: This does assume an existing GLib installation!
# Visual Studio builds of GLib does not need an existing pkg-config
# installation, so build GLib first before using this.

# Change these if necessary.  If building from GLib's included
# Visual Studio projects, this should be able to locate the GLib build
# out-of-the-box if they were not moved.  GLib's headers will be found
# in $(GLIB_PREFIX)\include\glib-2.0 and $(GLIB_PREFIX)\lib\glib-2.0\include
# and its import library will be found in $(GLIB_PREFIX)\lib.

GLIB_PREFIX = ..\vs$(VSVER)\$(PLAT)

# The items below this line should not be changed, unless one is maintaining
# the NMake Makefiles.

!include detectenv-msvc.mak

!if "$(VALID_CFGSET)" == "TRUE"
CFLAGS = $(CFLAGS_ADD) /W3 /Zi /FImsvc_recommended_pragmas.h /I.		\
	/I$(GLIB_PREFIX)\include\glib-2.0					\
	/I$(GLIB_PREFIX)\lib\glib-2.0\include

# PKG_CONFIG_SYSTEM_INCLUDE_PATH and PKG_CONFIG_SYSTEM_LIBRARY_PATH only
# work for GCC builds for now, so just set this to nothing for now

pkg_config_CFLAGS =	\
	$(CFLAGS)				\
	/DHAVE_CONFIG_H				\
	/DPKG_CONFIG_SYSTEM_INCLUDE_PATH="\"\""	\
	/DPKG_CONFIG_SYSTEM_LIBRARY_PATH="\"\""

LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(GLIB_PREFIX)\lib /DEBUG
NULL=

!if "$(CFG)" == "debug"
LDFLAGS = $(LDFLAGS_BASE)
!else
LDFLAGS = $(LDFLAGS_BASE) /opt:ref /LTCG
!endif

!include Makefile.sources

# Convert the source (*.c) listing to object (.obj) listing in
# another NMake Makefile module, include it, and clean it up.

!if [echo pkg_config_OBJS = \> objs.mak]
!endif

!if [for %c in ($(pkg_config_SOURCES)) do @if "%~xc" == ".c" echo. ^$(CFG)\^$(PLAT)\pkg-config\%~nc.obj \>> objs.mak]
!endif

!if [echo. ^$(NULL)>> objs.mak]
!endif

!include objs.mak

!if [del /f /q objs.mak]
!endif

pkg_config_LIBS = glib-2.0.lib

{}.c{$(CFG)\$(PLAT)\pkg-config\}.obj::
	$(CC) $(pkg_config_CFLAGS) /Fo$(CFG)\$(PLAT)\pkg-config\ /c @<<
$<
<<

all: $(CFG)\$(PLAT)\pkg-config.exe

$(CFG)\$(PLAT)\pkg-config.exe: $(CFG)\$(PLAT)\pkg-config config.h $(pkg_config_OBJS)
	link $(LDFLAGS) $(pkg_config_LIBS) -out:$@ @<<
$(pkg_config_OBJS)
<<
	@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1

$(CFG)\$(PLAT)\pkg-config:
	@-mkdir $@

config.h: config.h.win32
	@-copy $@.win32 $@

clean:
	@-del /f /q $(CFG)\$(PLAT)\*.pdb
	@-del /f /q $(CFG)\$(PLAT)\*.exe.manifest
	@-del /f /q $(CFG)\$(PLAT)\*.exe
	@-del /f /q $(CFG)\$(PLAT)\*.ilk
	@-del /f /q $(CFG)\$(PLAT)\pkg-config\*.obj
	@-rmdir /s /q $(CFG)\$(PLAT)
	@-del vc$(VSVER)0.pdb
	@-del config.h

!else
all:
	@echo You need to specify a valid configuration, via
	@echo CFG=release or CFG=debug
!endif

