mirror of
https://gitlab.freedesktop.org/pkg-config/pkg-config.git
synced 2026-05-18 13:48:21 +02:00
NMake: Add support to build pkg-config without existing GLib
This adds support to the NMake Makefiles to build the bundled GLib 2.38.2 sources for use with building pkg-config with Visual Studio, which is now the default build variant. Building against a pre-installed GLib installation is now supported via passing in HAVE_GLIB=1 in the NMake command line. Notice that gettext-runtime (intl.lib, the one provided by proxy-libintl also works) is required for the build with the bundled GLib to work, and as in a previous commit, this will build the bundled GLib as a DLL, which must also be distributed with pkg-config.exe for things to run, with the gettext-runtime or proxy-libintl DLL as well.
This commit is contained in:
parent
1356751c49
commit
df33829d62
3 changed files with 139 additions and 20 deletions
|
|
@ -26,10 +26,25 @@ LIBDIR = $(GLIB_PREFIX)\lib
|
|||
!include detectenv-msvc.mak
|
||||
|
||||
!if "$(VALID_CFGSET)" == "TRUE"
|
||||
CFLAGS = $(CFLAGS_ADD) /W3 /Zi /FImsvc_recommended_pragmas.h /I. \
|
||||
/I.\vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config \
|
||||
/I$(INCLUDEDIR)\glib-2.0 \
|
||||
|
||||
INCLUDES_GLIB = \
|
||||
/I..\glib\glib /I..\glib \
|
||||
/I.\vs$(VSVER)\$(CFG)\$(PLAT)\glib\glib /I.\vs$(VSVER)\$(CFG)\$(PLAT)\glib \
|
||||
/I.\dirent
|
||||
|
||||
INCLUDES_PKGCONFIG = /I. /I.\vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config
|
||||
|
||||
CFLAGS = $(CFLAGS_ADD) /W3 /Zi
|
||||
!ifdef HAVE_GLIB
|
||||
CFLAGS = $(CFLAGS) /FImsvc_recommended_pragmas.h
|
||||
INCLUDES_PKGCONFIG = \
|
||||
$(INCLUDES_PKGCONFIG) \
|
||||
/I$(INCLUDEDIR)\glib-2.0 \
|
||||
/I$(LIBDIR)\glib-2.0\include
|
||||
!else
|
||||
CFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_WARNIGS /D_CRT_NONSTDC_NO_WARNINGS /wd4244
|
||||
INCLUDES_PKGCONFIG = $(INCLUDES_PKGCONFIG) $(INCLUDES_GLIB)
|
||||
!endif
|
||||
|
||||
# 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
|
||||
|
|
@ -40,19 +55,37 @@ pkg_config_CFLAGS = \
|
|||
/DPKG_CONFIG_SYSTEM_INCLUDE_PATH="\"\"" \
|
||||
/DPKG_CONFIG_SYSTEM_LIBRARY_PATH="\"\""
|
||||
|
||||
glib_CFLAGS = \
|
||||
$(CFLAGS) \
|
||||
/DHAVE_CONFIG_H \
|
||||
/DG_LOG_DOMAIN=\"GLib\" \
|
||||
/DGLIB_COMPILATION \
|
||||
/DGLIB_DISABLE_DEPRECATIONS \
|
||||
/DDLL_EXPORT \
|
||||
/DPCRE_STATIC
|
||||
|
||||
LDFLAGS_BASE = $(LDFLAGS_ARCH) /libpath:$(LIBDIR) /DEBUG
|
||||
NULL=
|
||||
|
||||
!if "$(CFG)" == "debug"
|
||||
LDFLAGS = $(LDFLAGS_BASE)
|
||||
ARFLAGS = $(LDFLAGS)
|
||||
!else
|
||||
LDFLAGS = $(LDFLAGS_BASE) /opt:ref /LTCG
|
||||
ARFLAGS = $(LDFLAGS_BASE) /LTCG
|
||||
!endif
|
||||
|
||||
!include ..\Makefile.sources
|
||||
!include create-lists-msvc.mak
|
||||
|
||||
pkg_config_build_deps =
|
||||
!ifdef HAVE_GLIB
|
||||
pkg_config_LIBS = glib-2.0.lib
|
||||
!else
|
||||
pkg_config_build_deps = vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config-glib.lib
|
||||
pkg_config_LIBS = $(pkg_config_build_deps)
|
||||
glib_dep_libs = intl.lib winmm.lib ws2_32.lib ole32.lib advapi32.lib shell32.lib user32.lib
|
||||
!endif
|
||||
|
||||
all: vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config.exe
|
||||
|
||||
|
|
|
|||
|
|
@ -1,27 +1,80 @@
|
|||
# rules for building objects, libraries and executables
|
||||
|
||||
{..\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\}.obj::
|
||||
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\ md vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config
|
||||
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\config.h copy config.h.win32 vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\config.h
|
||||
$(CC) $(pkg_config_CFLAGS) /Fovs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\ /Fdvs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\ /c @<<
|
||||
BASE_OBJDIR = vs$(VSVER)\$(CFG)\$(PLAT)
|
||||
|
||||
$(BASE_OBJDIR)\pkg-config\config.h: config.h.win32
|
||||
$(BASE_OBJDIR)\glib\config.h: ..\glib\config.h.win32
|
||||
$(BASE_OBJDIR)\glib\glib\glibconfig.h: ..\glib\glib\glibconfig.h.win32
|
||||
|
||||
$(BASE_OBJDIR)\pkg-config\config.h \
|
||||
$(BASE_OBJDIR)\glib\config.h \
|
||||
$(BASE_OBJDIR)\glib\glib\glibconfig.h:
|
||||
@echo Copying $** to $@
|
||||
@if not exist $(@D)\ md $(@D)
|
||||
@-copy $** $@
|
||||
|
||||
!include objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak
|
||||
|
||||
!if [del /f/q objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak]
|
||||
!endif
|
||||
|
||||
{..\}.c{$(BASE_OBJDIR)\pkg-config\}.obj::
|
||||
$(CC) $(pkg_config_CFLAGS) $(INCLUDES_PKGCONFIG) /Fo$(BASE_OBJDIR)\pkg-config\ /Fd$(BASE_OBJDIR)\pkg-config\ /c @<<
|
||||
$<
|
||||
<<
|
||||
|
||||
vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config.exe: $(pkg_config_OBJS)
|
||||
{..\glib\glib\}.c{$(BASE_OBJDIR)\glib\}.obj::
|
||||
$(CC) $(glib_CFLAGS) $(INCLUDES_GLIB) /Fo$(BASE_OBJDIR)\glib\ /Fd$(BASE_OBJDIR)\glib\ /c @<<
|
||||
$<
|
||||
<<
|
||||
|
||||
{..\glib\glib\deprecated\}.c{$(BASE_OBJDIR)\glib\}.obj::
|
||||
$(CC) $(glib_CFLAGS) $(INCLUDES_GLIB) /Fo$(BASE_OBJDIR)\glib\ /Fd$(BASE_OBJDIR)\glib\ /c @<<
|
||||
$<
|
||||
<<
|
||||
|
||||
{..\glib\glib\gnulib\}.c{$(BASE_OBJDIR)\glib\}.obj::
|
||||
$(CC) $(glib_CFLAGS) $(INCLUDES_GLIB) /Fo$(BASE_OBJDIR)\glib\ /Fd$(BASE_OBJDIR)\glib\ /c @<<
|
||||
$<
|
||||
<<
|
||||
|
||||
{..\glib\glib\libcharset\}.c{$(BASE_OBJDIR)\glib\}.obj::
|
||||
$(CC) /DLIBDIR=\"blah\" $(glib_CFLAGS) $(INCLUDES_GLIB) /Fo$(BASE_OBJDIR)\glib\ /Fd$(BASE_OBJDIR)\glib\ /c @<<
|
||||
$<
|
||||
<<
|
||||
|
||||
{.\dirent\}.c{$(BASE_OBJDIR)\glib\}.obj::
|
||||
$(CC) $(CFLAGS) /Fo$(BASE_OBJDIR)\glib\ /Fd$(BASE_OBJDIR)\glib\ /c @<<
|
||||
$<
|
||||
<<
|
||||
|
||||
$(BASE_OBJDIR)\pkg-config-glib.lib: $(glib_OBJS)
|
||||
link $(LDFLAGS) /DLL /out:$(@R).dll $(glib_dep_libs) @<<
|
||||
$**
|
||||
<<
|
||||
|
||||
$(BASE_OBJDIR)\pkg-config.exe: $(pkg_config_OBJS) $(pkg_config_build_deps)
|
||||
link $(LDFLAGS) $(pkg_config_LIBS) -out:$@ @<<
|
||||
$(pkg_config_OBJS)
|
||||
<<
|
||||
@-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
|
||||
|
||||
clean:
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.pdb
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe.manifest
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\*.obj
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\vc$(PDBVER).pdb
|
||||
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\config.h
|
||||
@-rd vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config
|
||||
@-rd vs$(VSVER)\$(CFG)\$(PLAT)
|
||||
@-rd vs$(VSVER)\$(CFG)
|
||||
@-rd vs$(VSVER)
|
||||
@-del /f /q $(BASE_OBJDIR)\*.exe.manifest
|
||||
@-del /f /q $(BASE_OBJDIR)\*.exe
|
||||
@-del /f /q $(BASE_OBJDIR)\*.dll.manifest
|
||||
@-del /f /q $(BASE_OBJDIR)\*.dll
|
||||
@-del /f /q $(BASE_OBJDIR)\*.exp
|
||||
@-del /f /q $(BASE_OBJDIR)\*.pdb
|
||||
@-del /f /q $(BASE_OBJDIR)\pkg-config-glib.lib
|
||||
@-del /f /q $(BASE_OBJDIR)\*.ilk
|
||||
@-del /f /q $(BASE_OBJDIR)\pkg-config\*.obj
|
||||
@-del /f /q $(BASE_OBJDIR)\pkg-config\vc$(PDBVER).pdb
|
||||
@-del /f /q $(BASE_OBJDIR)\pkg-config\config.h
|
||||
@-del /f /q $(BASE_OBJDIR)\glib\*.obj
|
||||
@-del /f /q $(BASE_OBJDIR)\glib\vc$(PDBVER).pdb
|
||||
@-del /f /q $(BASE_OBJDIR)\glib\glib\glibconfig.h
|
||||
@-del /f /q $(BASE_OBJDIR)\glib\config.h
|
||||
@-rd $(BASE_OBJDIR)\pkg-config
|
||||
@-rd $(BASE_OBJDIR)\glib\glib
|
||||
@-rd $(BASE_OBJDIR)\glib
|
||||
|
|
|
|||
|
|
@ -10,7 +10,40 @@
|
|||
!if [echo. ^$(NULL)>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [echo glib_OBJS = \>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\g*.c) do @if not "%~nxc" == "gspawn.c" if not "%~nxc" == "gthread-posix.c" if not "%~nxc" == "giounix.c" if not "%~nxc" == "glib-unix.c" echo. vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj \>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\deprecated\*.c) do @echo. vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj \>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\gnulib\*.c) do @echo. vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj \>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\libcharset\*.c) do @echo. vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj \>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [echo. ^$(NULL)>> objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!include objs_vs$(VSVER)_$(PLAT)_$(CFG).mak
|
||||
|
||||
!if [del /f /q objs_vs$(VSVER)_$(PLAT)_$(CFG).mak]
|
||||
!endif
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\g*.c) do @if not "%~nxc" == "gspawn.c" if not "%~nxc" == "glib-unix.c" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj: %c vs$(VSVER)\$(CFG)\$(PLAT)\glib\config.h vs$(VSVER)\$(CFG)\$(PLAT)\glib\glib\glibconfig.h>> objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\deprecated\g*.c) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj: %c vs$(VSVER)\$(CFG)\$(PLAT)\glib\config.h vs$(VSVER)\$(CFG)\$(PLAT)\glib\glib\glibconfig.h>> objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\gnulib\*.c) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj: %c vs$(VSVER)\$(CFG)\$(PLAT)\glib\config.h vs$(VSVER)\$(CFG)\$(PLAT)\glib\glib\glibconfig.h>> objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in (..\glib\glib\libcharset\*.c) do @echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\glib\%~nc.obj: %c vs$(VSVER)\$(CFG)\$(PLAT)\glib\config.h vs$(VSVER)\$(CFG)\$(PLAT)\glib\glib\glibconfig.h>> objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak]
|
||||
!endif
|
||||
|
||||
!if [for %c in ($(pkg_config_SOURCES)) do @if "%~xc" == ".c" echo vs^$(VSVER)\^$(CFG)\^$(PLAT)\pkg-config\%~nc.obj: ..\%c vs$(VSVER)\$(CFG)\$(PLAT)\pkg-config\config.h>> objs-targets-vs$(VSVER)-$(PLAT)-$(CFG).mak]
|
||||
!endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue