summaryrefslogtreecommitdiff
path: root/Makefile.vc
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2015-10-16 13:13:38 +0800
committerDan Nicholson <dbn.lists@gmail.com>2015-10-26 09:16:56 -0700
commit5f70074d46be6887a3d8e6c02c7292350fdcbdd3 (patch)
treee80ea263bffd9add2544e4018649307c8280357a /Makefile.vc
parent1ed336759fdf3bfbb1f233e5a5c5b611530436ef (diff)
downloadpkg-config-5f70074d46be6887a3d8e6c02c7292350fdcbdd3.tar.gz
build: Add NMake makefiles for Visual Studio buildsmsvc
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.
Diffstat (limited to 'Makefile.vc')
-rw-r--r--Makefile.vc96
1 files changed, 96 insertions, 0 deletions
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
+