From 5f70074d46be6887a3d8e6c02c7292350fdcbdd3 Mon Sep 17 00:00:00 2001 From: Chun-wei Fan Date: Fri, 16 Oct 2015 13:13:38 +0800 Subject: build: Add NMake makefiles for Visual Studio builds This adds a set of NMake Makefiles that can be used to build pkg-config on Windows using Visual Studio. Note that, since the Visual Studio builds of GLib does not use pkg-config, this NMake Makefile set does not support the build of the bundled GLib sources, instead, having GLib built beforehand is required. --- Makefile.vc | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 Makefile.vc (limited to 'Makefile.vc') diff --git a/Makefile.vc b/Makefile.vc new file mode 100644 index 0000000..b8d5316 --- /dev/null +++ b/Makefile.vc @@ -0,0 +1,96 @@ +# 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 + -- cgit v1.2.1