| # 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 |
| |