NMake builds: Include Visual Studio version in output dir
This avoids builds done with other Visual Studio versions being confused with the one that is being used now.
This commit is contained in:
parent
3e92891d8c
commit
28319ed36f
|
@ -36,8 +36,9 @@ and libpsl header, into appropriate locations under PREFIX (please see
|
||||||
below).
|
below).
|
||||||
|
|
||||||
This will build the libpsl DLL/LIB and the psl.exe utility in the
|
This will build the libpsl DLL/LIB and the psl.exe utility in the
|
||||||
$(CFG)\$(ARCH) subdirectory, where ARCH is Win32 for 32-bit builds
|
vsX\$(CFG)\$(ARCH) subdirectory, where X is the release version
|
||||||
and x64 for 64-bit (x86_64) builds.
|
of Visual Studio, such as 9 for 2008 and 16 for 2019, and ARCH is
|
||||||
|
Win32 for 32-bit builds and x64 for 64-bit (x86_64) builds.
|
||||||
|
|
||||||
A number of options can be passed into the NMake command, as follows.
|
A number of options can be passed into the NMake command, as follows.
|
||||||
Enable by setting each option to 1, unless otherwise indicated:
|
Enable by setting each option to 1, unless otherwise indicated:
|
||||||
|
|
|
@ -14,18 +14,18 @@
|
||||||
# $<
|
# $<
|
||||||
# <<
|
# <<
|
||||||
|
|
||||||
{..\src\}.c{$(CFG)\$(PLAT)\libpsl\}.obj::
|
{..\src\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\libpsl\}.obj::
|
||||||
$(CC) $(BASE_CFLAGS) $(PSL_ADDITIONAL_CFLAGS) $(PSL_INCLUDES) /Fo$(CFG)\$(PLAT)\libpsl\ /c @<<
|
$(CC) $(BASE_CFLAGS) $(PSL_ADDITIONAL_CFLAGS) $(PSL_INCLUDES) /Fovs$(VSVER)\$(CFG)\$(PLAT)\libpsl\ /c @<<
|
||||||
$<
|
$<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
{..\tools\}.c{$(CFG)\$(PLAT)\psl\}.obj::
|
{..\tools\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\psl\}.obj::
|
||||||
$(CC) $(BASE_CFLAGS) $(PSL_INCLUDES) /Fo$(CFG)\$(PLAT)\psl\ /c @<<
|
$(CC) $(BASE_CFLAGS) $(PSL_INCLUDES) /Fovs$(VSVER)\$(CFG)\$(PLAT)\psl\ /c @<<
|
||||||
$<
|
$<
|
||||||
<<
|
<<
|
||||||
|
|
||||||
# Make sure we generate suffixes_dafsa.h before trying to compile psl.c
|
# Make sure we generate suffixes_dafsa.h before trying to compile psl.c
|
||||||
$(CFG)\$(PLAT)\libpsl\psl.obj: $(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h
|
vs$(VSVER)\$(CFG)\$(PLAT)\libpsl\psl.obj: vs$(VSVER)\$(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h
|
||||||
|
|
||||||
# Inference rules for building the test programs
|
# Inference rules for building the test programs
|
||||||
# Used for programs with a single source file.
|
# Used for programs with a single source file.
|
||||||
|
@ -35,16 +35,16 @@ $(CFG)\$(PLAT)\libpsl\psl.obj: $(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h
|
||||||
# {$(srcdir)}.$(srcext){$(destdir)}.exe::
|
# {$(srcdir)}.$(srcext){$(destdir)}.exe::
|
||||||
# $(CC)|$(CXX) $(cflags) $< /Fo$*.obj /Fe$@ [/link $(linker_flags) $(dep_libs)]
|
# $(CC)|$(CXX) $(cflags) $< /Fo$*.obj /Fe$@ [/link $(linker_flags) $(dep_libs)]
|
||||||
|
|
||||||
{..\tests\}.c{$(CFG)\$(PLAT)\}.exe:
|
{..\tests\}.c{vs$(VSVER)\$(CFG)\$(PLAT)\}.exe:
|
||||||
@if not exist $(PSL_UTILS) $(MAKE) -f Makefile.vc $(PSL_MAKE_OPTIONS) $(PSL_UTILS)
|
@if not exist $(PSL_UTILS) $(MAKE) -f Makefile.vc $(PSL_MAKE_OPTIONS) $(PSL_UTILS)
|
||||||
@if not exist $(CFG)\$(PLAT)\tests $(MAKE) -f Makefile.vc $(PSL_MAKE_OPTIONS) $(CFG)\$(PLAT)\tests
|
@if not exist vs$(VSVER)\$(CFG)\$(PLAT)\tests $(MAKE) -f Makefile.vc $(PSL_MAKE_OPTIONS) vs$(VSVER)\$(CFG)\$(PLAT)\tests
|
||||||
$(CC) $(PSL_TEST_CFLAGS) $(PSL_INCLUDES) /Fo$(CFG)\$(PLAT)\tests\ /Fe$@ \
|
$(CC) $(PSL_TEST_CFLAGS) $(PSL_INCLUDES) /Fovs$(VSVER)\$(CFG)\$(PLAT)\tests\ /Fe$@ \
|
||||||
$< /link $(LDFLAGS) $(PSL_LIB) $(PSL_ADDITIONAL_LIBS)
|
$< /link $(LDFLAGS) $(PSL_LIB) $(PSL_ADDITIONAL_LIBS)
|
||||||
@if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
|
@if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
|
||||||
|
|
||||||
# Rules for building .lib files
|
# Rules for building .lib files
|
||||||
!ifdef STATIC
|
!ifdef STATIC
|
||||||
$(PSL_LIB): $(CFG)\$(PLAT)\libpsl ..\config.h $(libpsl_OBJS)
|
$(PSL_LIB): vs$(VSVER)\$(CFG)\$(PLAT)\libpsl ..\config.h $(libpsl_OBJS)
|
||||||
lib $(ARFLAGS) /out:$@ @<<
|
lib $(ARFLAGS) /out:$@ @<<
|
||||||
$(libpsl_OBJS)
|
$(libpsl_OBJS)
|
||||||
<<
|
<<
|
||||||
|
@ -75,7 +75,7 @@ $(libpsl_OBJS)
|
||||||
# <<
|
# <<
|
||||||
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
|
# @-if exist $@.manifest mt /manifest $@.manifest /outputresource:$@;1
|
||||||
|
|
||||||
$(CFG)\$(PLAT)\psl.exe: $(PSL_LIB) $(CFG)\$(PLAT)\psl $(psl_OBJS)
|
vs$(VSVER)\$(CFG)\$(PLAT)\psl.exe: $(PSL_LIB) vs$(VSVER)\$(CFG)\$(PLAT)\psl $(psl_OBJS)
|
||||||
link $(LDFLAGS) $(PSL_LIB) $(PSL_ADDITIONAL_LIBS) /PDB:$(@R)-tool.pdb /out:$@ @<<
|
link $(LDFLAGS) $(PSL_LIB) $(PSL_ADDITIONAL_LIBS) /PDB:$(@R)-tool.pdb /out:$@ @<<
|
||||||
$(psl_OBJS)
|
$(psl_OBJS)
|
||||||
<<
|
<<
|
||||||
|
@ -93,18 +93,18 @@ build-info:
|
||||||
@if not "$(ENABLED_BUILTIN)" == "none" echo PSL File: $(PSL_FILE)
|
@if not "$(ENABLED_BUILTIN)" == "none" echo PSL File: $(PSL_FILE)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@if exist $(CFG)\$(PLAT)\psl.dafsa del $(CFG)\$(PLAT)\psl.dafsa
|
@if exist vs$(VSVER)\$(CFG)\$(PLAT)\psl.dafsa del vs$(VSVER)\$(CFG)\$(PLAT)\psl.dafsa
|
||||||
@if exist $(CFG)\$(PLAT)\psl_ascii.dafsa del $(CFG)\$(PLAT)\psl_ascii.dafsa
|
@if exist vs$(VSVER)\$(CFG)\$(PLAT)\psl_ascii.dafsa del vs$(VSVER)\$(CFG)\$(PLAT)\psl_ascii.dafsa
|
||||||
@if exist .\libpsl.pc del /f /q .\libpsl.pc
|
@if exist .\libpsl.pc del /f /q .\libpsl.pc
|
||||||
@-del /f /q $(CFG)\$(PLAT)\*.exe
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.exe
|
||||||
@-del /f /q $(CFG)\$(PLAT)\*.lib
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.lib
|
||||||
@-del /f /q $(CFG)\$(PLAT)\*.pdb
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.pdb
|
||||||
@-del /f /q $(CFG)\$(PLAT)\*.dll.manifest
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.dll.manifest
|
||||||
@-del /f /q $(CFG)\$(PLAT)\*.dll
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.dll
|
||||||
@-del /f /q $(CFG)\$(PLAT)\*.ilk
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\*.ilk
|
||||||
@-if exist $(CFG)\$(PLAT)\tests del /f /q $(CFG)\$(PLAT)\tests\*.obj
|
@-if exist vs$(VSVER)\$(CFG)\$(PLAT)\tests del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\tests\*.obj
|
||||||
@-del /f /q $(CFG)\$(PLAT)\libpsl\*.obj
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libpsl\*.obj
|
||||||
@-del /f /q $(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h
|
@-del /f /q vs$(VSVER)\$(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h
|
||||||
@-del /f /q ..\config.h
|
@-del /f /q ..\config.h
|
||||||
@-del /f /q vc$(PDBVER)0.pdb
|
@-del /f /q vc$(PDBVER)0.pdb
|
||||||
@-rmdir /s /q $(CFG)\$(PLAT)
|
@-rmdir /s /q vs$(VSVER)\$(CFG)\$(PLAT)
|
||||||
|
|
|
@ -49,20 +49,20 @@ BASE_CFLAGS = \
|
||||||
/DHAVE_CONFIG_H \
|
/DHAVE_CONFIG_H \
|
||||||
/Dssize_t="$(SSIZE_T_DEF)"
|
/Dssize_t="$(SSIZE_T_DEF)"
|
||||||
|
|
||||||
PSL_INCLUDES = /I..\include /I.. /I$(CFG)\$(PLAT)\libpsl /I$(PREFIX)\include
|
PSL_INCLUDES = /I..\include /I.. /Ivs$(VSVER)\$(CFG)\$(PLAT)\libpsl /I$(PREFIX)\include
|
||||||
|
|
||||||
# We build the psl.dll or psl.lib at least, with the psl.exe utility
|
# We build the psl.dll or psl.lib at least, with the psl.exe utility
|
||||||
PSL_LIB = $(CFG)\$(PLAT)\psl.lib
|
PSL_LIB = vs$(VSVER)\$(CFG)\$(PLAT)\psl.lib
|
||||||
PSL_UTILS = $(CFG)\$(PLAT)\psl.exe
|
PSL_UTILS = vs$(VSVER)\$(CFG)\$(PLAT)\psl.exe
|
||||||
|
|
||||||
PSL_TESTS = \
|
PSL_TESTS = \
|
||||||
$(CFG)\$(PLAT)\test-is-public.exe \
|
vs$(VSVER)\$(CFG)\$(PLAT)\test-is-public.exe \
|
||||||
$(CFG)\$(PLAT)\test-is-public-all.exe \
|
vs$(VSVER)\$(CFG)\$(PLAT)\test-is-public-all.exe \
|
||||||
$(CFG)\$(PLAT)\test-is-cookie-domain-acceptable.exe
|
vs$(VSVER)\$(CFG)\$(PLAT)\test-is-cookie-domain-acceptable.exe
|
||||||
|
|
||||||
PSL_TEST_DATA = \
|
PSL_TEST_DATA = \
|
||||||
$(CFG)\$(PLAT)\psl.dafsa \
|
vs$(VSVER)\$(CFG)\$(PLAT)\psl.dafsa \
|
||||||
$(CFG)\$(PLAT)\psl_ascii.dafsa
|
vs$(VSVER)\$(CFG)\$(PLAT)\psl_ascii.dafsa
|
||||||
|
|
||||||
PSL_MAKE_OPTIONS = CFG^=$(CFG)
|
PSL_MAKE_OPTIONS = CFG^=$(CFG)
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ PSL_DLL_SUFFIX =
|
||||||
!endif
|
!endif
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
PSL_DLL = $(CFG)\$(PLAT)\$(PSL_DLL_PREFIX)psl$(PSL_DLL_SUFFIX).dll
|
PSL_DLL = vs$(VSVER)\$(CFG)\$(PLAT)\$(PSL_DLL_PREFIX)psl$(PSL_DLL_SUFFIX).dll
|
||||||
|
|
||||||
# ENABLE_RUNTIME_ICU and ENABLE_BUILTIN_ICU are currently dummy arguments to NMake
|
# ENABLE_RUNTIME_ICU and ENABLE_BUILTIN_ICU are currently dummy arguments to NMake
|
||||||
ENABLED_RUNTIME =
|
ENABLED_RUNTIME =
|
||||||
|
@ -111,8 +111,8 @@ PSL_LIBTYPE = DLL
|
||||||
PSL_ADDITIONAL_LIBS = $(PSL_ADDITIONAL_LIBS) $(ICUUC_LIB)
|
PSL_ADDITIONAL_LIBS = $(PSL_ADDITIONAL_LIBS) $(ICUUC_LIB)
|
||||||
PSL_TESTS = \
|
PSL_TESTS = \
|
||||||
$(PSL_TESTS) \
|
$(PSL_TESTS) \
|
||||||
$(CFG)\$(PLAT)\test-is-public-builtin.exe \
|
vs$(VSVER)\$(CFG)\$(PLAT)\test-is-public-builtin.exe \
|
||||||
$(CFG)\$(PLAT)\test-registrable-domain.exe
|
vs$(VSVER)\$(CFG)\$(PLAT)\test-registrable-domain.exe
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!ifdef USE_GETTEXT
|
!ifdef USE_GETTEXT
|
||||||
|
@ -132,8 +132,8 @@ PSL_TEST_CFLAGS = \
|
||||||
$(BASE_CFLAGS) \
|
$(BASE_CFLAGS) \
|
||||||
/DPSL_TESTFILE=\"$(PSL_TESTFILE_INPUT)\" \
|
/DPSL_TESTFILE=\"$(PSL_TESTFILE_INPUT)\" \
|
||||||
/DPSL_FILE=\"$(PSL_FILE_INPUT)\" \
|
/DPSL_FILE=\"$(PSL_FILE_INPUT)\" \
|
||||||
/DPSL_DAFSA=\"$(MAKEDIR:\=/)/$(CFG)/$(PLAT)/psl.dafsa\" \
|
/DPSL_DAFSA=\"$(MAKEDIR:\=/)/vs$(VSVER)/$(CFG)/$(PLAT)/psl.dafsa\" \
|
||||||
/DPSL_ASCII_DAFSA=\"$(MAKEDIR:\=/)/$(CFG)/$(PLAT)/psl_ascii.dafsa\"
|
/DPSL_ASCII_DAFSA=\"$(MAKEDIR:\=/)/vs$(VSVER)/$(CFG)/$(PLAT)/psl_ascii.dafsa\"
|
||||||
|
|
||||||
# Visual Studio 2013 or earlier does not have snprintf(),
|
# Visual Studio 2013 or earlier does not have snprintf(),
|
||||||
# so use _snprintf() which seems to be enough for our purposes
|
# so use _snprintf() which seems to be enough for our purposes
|
||||||
|
|
|
@ -40,7 +40,7 @@ NULL=
|
||||||
!if [call create-lists.bat header libpsl-msvc.mak libpsl_OBJS]
|
!if [call create-lists.bat header libpsl-msvc.mak libpsl_OBJS]
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if [for %c in ($(LIBPSL_SRCS)) do @if "%~xc" == ".c" @call create-lists.bat file libpsl-msvc.mak ^$(CFG)\^$(PLAT)\libpsl\%~nc.obj]
|
!if [for %c in ($(LIBPSL_SRCS)) do @if "%~xc" == ".c" @call create-lists.bat file libpsl-msvc.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\libpsl\%~nc.obj]
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if [call create-lists.bat footer libpsl-msvc.mak]
|
!if [call create-lists.bat footer libpsl-msvc.mak]
|
||||||
|
@ -49,7 +49,7 @@ NULL=
|
||||||
!if [call create-lists.bat header libpsl-msvc.mak psl_OBJS]
|
!if [call create-lists.bat header libpsl-msvc.mak psl_OBJS]
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if [for %c in (..\tools\*.c) do @call create-lists.bat file libpsl-msvc.mak ^$(CFG)\^$(PLAT)\psl\%~nc.obj]
|
!if [for %c in (..\tools\*.c) do @call create-lists.bat file libpsl-msvc.mak vs^$(VSVER)\^$(CFG)\^$(PLAT)\psl\%~nc.obj]
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
!if [call create-lists.bat footer libpsl-msvc.mak]
|
!if [call create-lists.bat footer libpsl-msvc.mak]
|
||||||
|
|
|
@ -4,20 +4,20 @@
|
||||||
# one is maintaining the NMake build files.
|
# one is maintaining the NMake build files.
|
||||||
|
|
||||||
# Create the build directories
|
# Create the build directories
|
||||||
$(CFG)\$(PLAT)\libpsl \
|
vs$(VSVER)\$(CFG)\$(PLAT)\libpsl \
|
||||||
$(CFG)\$(PLAT)\psl \
|
vs$(VSVER)\$(CFG)\$(PLAT)\psl \
|
||||||
$(CFG)\$(PLAT)\tests:
|
vs$(VSVER)\$(CFG)\$(PLAT)\tests:
|
||||||
@-md $@
|
@-md $@
|
||||||
|
|
||||||
$(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h: $(CFG)\$(PLAT)\libpsl $(PSL_FILE) ..\src\psl-make-dafsa
|
vs$(VSVER)\$(CFG)\$(PLAT)\libpsl\suffixes_dafsa.h: vs$(VSVER)\$(CFG)\$(PLAT)\libpsl $(PSL_FILE) ..\src\psl-make-dafsa
|
||||||
@echo Generating $@
|
@echo Generating $@
|
||||||
$(PYTHON) ..\src\psl-make-dafsa --output-format=cxx+ "$(PSL_FILE_INPUT)" $@
|
$(PYTHON) ..\src\psl-make-dafsa --output-format=cxx+ "$(PSL_FILE_INPUT)" $@
|
||||||
|
|
||||||
$(CFG)\$(PLAT)\psl.dafsa: $(CFG)\$(PLAT)\tests
|
vs$(VSVER)\$(CFG)\$(PLAT)\psl.dafsa: vs$(VSVER)\$(CFG)\$(PLAT)\tests
|
||||||
@echo Generating $@
|
@echo Generating $@
|
||||||
$(PYTHON) ..\src\psl-make-dafsa --output-format=binary "$(PSL_FILE_INPUT)" $@
|
$(PYTHON) ..\src\psl-make-dafsa --output-format=binary "$(PSL_FILE_INPUT)" $@
|
||||||
|
|
||||||
$(CFG)\$(PLAT)\psl_ascii.dafsa: $(CFG)\$(PLAT)\tests
|
vs$(VSVER)\$(CFG)\$(PLAT)\psl_ascii.dafsa: vs$(VSVER)\$(CFG)\$(PLAT)\tests
|
||||||
@echo Generating $@
|
@echo Generating $@
|
||||||
$(PYTHON) ..\src\psl-make-dafsa --output-format=binary --encoding=ascii "$(PSL_FILE_INPUT)" $@
|
$(PYTHON) ..\src\psl-make-dafsa --output-format=binary --encoding=ascii "$(PSL_FILE_INPUT)" $@
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,10 @@ install: all libpsl.pc build-info
|
||||||
@if not exist $(PREFIX)\bin\ mkdir $(PREFIX)\bin
|
@if not exist $(PREFIX)\bin\ mkdir $(PREFIX)\bin
|
||||||
@if not exist $(PREFIX)\lib\pkgconfig\ mkdir $(PREFIX)\lib\pkgconfig
|
@if not exist $(PREFIX)\lib\pkgconfig\ mkdir $(PREFIX)\lib\pkgconfig
|
||||||
@if not exist $(PREFIX)\include @mkdir $(PREFIX)\include
|
@if not exist $(PREFIX)\include @mkdir $(PREFIX)\include
|
||||||
@copy /b $(CFG)\$(PLAT)\psl.exe $(PREFIX)\bin
|
@copy /b vs$(VSVER)\$(CFG)\$(PLAT)\psl.exe $(PREFIX)\bin
|
||||||
@copy /b $(CFG)\$(PLAT)\psl-tool.pdb $(PREFIX)\bin
|
@copy /b vs$(VSVER)\$(CFG)\$(PLAT)\psl-tool.pdb $(PREFIX)\bin
|
||||||
@if "$(PSL_LIBTYPE)" == "DLL" copy /b $(PSL_DLL) $(PREFIX)\bin
|
@if "$(PSL_LIBTYPE)" == "DLL" copy /b $(PSL_DLL) $(PREFIX)\bin
|
||||||
@if "$(PSL_LIBTYPE)" == "DLL" copy /b $(CFG)\$(PLAT)\psl.pdb $(PREFIX)\bin
|
@if "$(PSL_LIBTYPE)" == "DLL" copy /b vs$(VSVER)\$(CFG)\$(PLAT)\psl.pdb $(PREFIX)\bin
|
||||||
@copy /b $(CFG)\$(PLAT)\psl.lib $(PREFIX)\lib
|
@copy /b vs$(VSVER)\$(CFG)\$(PLAT)\psl.lib $(PREFIX)\lib
|
||||||
@copy libpsl.pc $(PREFIX)\lib\pkgconfig
|
@copy libpsl.pc $(PREFIX)\lib\pkgconfig
|
||||||
@for %h in (..\include\*.h) do @copy %h $(PREFIX)\include\%~nxh
|
@for %h in (..\include\*.h) do @copy %h $(PREFIX)\include\%~nxh
|
||||||
|
|
Loading…
Reference in New Issue