mirror of
https://gitlab.freedesktop.org/pkg-config/pkg-config.git
synced 2025-12-20 03:10:03 +01:00
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.
96 lines
2.6 KiB
Text
96 lines
2.6 KiB
Text
# 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
|
|
|