mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
Problem: MS-Windows: Makefiles can be refactored Solution: Refactor using a common tools.mak, make some style changes (RestorerZ). closes: #18060 Signed-off-by: RestorerZ <restorer@mail2k.ru> Signed-off-by: Christian Brabandt <cb@256bit.org>
155 lines
3.5 KiB
Makefile
155 lines
3.5 KiB
Makefile
#
|
||
# Makefile for MS Windows for create self-installing exe of Vim.
|
||
# 2024‐04-05, Restorer, restorer@mail2k.ru
|
||
#
|
||
|
||
|
||
# included common tools
|
||
!INCLUDE ..\src\auto\nmake\tools.mak
|
||
|
||
# Read MAJOR and MINOR from version.h.
|
||
!IFNDEF MAJOR
|
||
! IF ![for /F "tokens=3" %G in \
|
||
('findstr /RC:"VIM_VERSION_MAJOR[ ^]*[0-9^]" ..\src\version.h') \
|
||
do @(echo:MAJOR=%G>> .\_major.tmp)]
|
||
! INCLUDE .\_major.tmp
|
||
! IF [$(RM) .\_major.tmp]
|
||
! ENDIF
|
||
! ELSE
|
||
MAJOR = 9
|
||
! ENDIF
|
||
!ENDIF
|
||
|
||
!IFNDEF MINOR
|
||
! IF ![for /F "tokens=3" %G in \
|
||
('findstr /RC:"VIM_VERSION_MINOR[ ^]*[0-9^]" ..\src\version.h') \
|
||
do @(echo:MINOR=%G>> .\_minor.tmp)]
|
||
! INCLUDE .\_minor.tmp
|
||
! IF [$(RM) .\_minor.tmp]
|
||
! ENDIF
|
||
! ELSE
|
||
MINOR = 1
|
||
! ENDIF
|
||
!ENDIF
|
||
|
||
# Read PATCHLEVEL from version.c
|
||
!IFNDEF PATCHLEVEL
|
||
! IF ![for /F %G in \
|
||
('findstr /NBLC:"static int included_patches" ..\src\version.c \
|
||
^| (set /p "_t=" ^& set /a _t+=2 ^)') do \
|
||
@$(CMD) $(CMDFLAGS) "for /F "skip=%G delims=, " %H in \
|
||
(..\src\version.c) do (echo:PATCHLEVEL=%H> .\_patchlvl.tmp & exit /b)"]
|
||
! INCLUDE .\_patchlvl.tmp
|
||
! IF [$(RM) .\_patchlvl.tmp]
|
||
! ENDIF
|
||
! ELSE
|
||
PATCHLEVEL = 0
|
||
! ENDIF
|
||
!ENDIF
|
||
|
||
!IF $(PATCHLEVEL) < 10
|
||
PATCHLEVEL = 000$(PATCHLEVEL)
|
||
!ELSEIF $(PATCHLEVEL) < 100
|
||
PATCHLEVEL = 00$(PATCHLEVEL)
|
||
!ELSEIF $(PATCHLEVEL) < 1000
|
||
PATCHLEVEL = 0$(PATCHLEVEL)
|
||
!ENDIF
|
||
|
||
.SUFFIXES :
|
||
|
||
!IFDEF PROGRAMW6432
|
||
ProgFiles=%%PROGRAMFILES(x86)%%
|
||
!ELSE
|
||
ProgFiles=$(PROGRAMFILES)
|
||
!ENDIF
|
||
|
||
!IFDEF VIMSRC
|
||
MKNSISFLAGS = /D"VIMSRC=$(VIMSRC)"
|
||
!ENDIF
|
||
|
||
!IFDEF VIMRT
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /D"VIMRT=$(VIMRT)"
|
||
!ENDIF
|
||
|
||
!IFDEF VIMTOOLS
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /D"VIMTOOLS=$(VIMTOOLS)"
|
||
!ENDIF
|
||
|
||
!IFDEF GETTEXT
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /D"GETTEXT=$(GETTEXT)"
|
||
!ENDIF
|
||
|
||
!IFDEF HAVE_UPX
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_UPX=$(HAVE_UPX)
|
||
!ENDIF
|
||
|
||
!IFDEF HAVE_NLS
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_NLS=$(HAVE_NLS)
|
||
!ENDIF
|
||
|
||
!IFDEF HAVE_MULTI_LANG
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_MULTI_LANG=$(HAVE_MULTI_LANG)
|
||
!ENDIF
|
||
|
||
!IFDEF WIN64
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /DWIN64=$(WIN64)
|
||
!ENDIF
|
||
|
||
!IFDEF ARM64
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /DARM64=$(ARM64)
|
||
!ENDIF
|
||
|
||
!IFDEF INCLUDE_LIBGCC
|
||
MKNSISFLAGS = $(MKNSISFLAGS) /DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC)
|
||
!ENDIF
|
||
|
||
!IFDEF X
|
||
XX = /X"$(X:;=" /X")"
|
||
!ENDIF
|
||
|
||
# If necessary, correct the full path of the NSIS compiler in the next line.
|
||
# Please do not enclose the path in quotation marks.
|
||
MKNSIS = $(ProgFiles)\NSIS\makensis.exe
|
||
|
||
MKNSISFLAGS = /INPUTCHARSET UTF8 $(MKNSISFLAGS)
|
||
|
||
|
||
all : makeinst
|
||
|
||
makeinst : prepare
|
||
^"$(MKNSIS)" $(MKNSISFLAGS) gvim.nsi $(XX)
|
||
|
||
prepare : unzipicons gvim_version.nsh license rename
|
||
|
||
unzipicons : icons.zip
|
||
@ if exist %|fF\nul $(RD) %|fF
|
||
@ $(PS) $(PSFLAGS) \
|
||
Add-Type -AssemblyName 'System.IO.Compression.FileSystem'; \
|
||
[System.IO.Compression.ZipFile]::ExtractToDirectory(\"$**\", \
|
||
\".\")
|
||
|
||
gvim_version.nsh : Make_mvc.mak
|
||
@ 1> $@ echo:^# Generated from Makefile: define the version numbers
|
||
@ 1>> $@ echo:^!ifndef __GVIM_VER__NSH__
|
||
@ 1>> $@ echo:^!define __GVIM_VER__NSH__
|
||
@ 1>> $@ echo:^!define VER_MAJOR $(MAJOR)
|
||
@ 1>> $@ echo:^!define VER_MINOR $(MINOR)
|
||
@ 1>> $@ echo:^!define PATCHLEVEL $(PATCHLEVEL)
|
||
@ 1>> $@ echo:^!endif
|
||
|
||
license : ..\lang\LICENSE.*.txt ..\LICENSE
|
||
!@ $(PS) $(PSFLAGS) \
|
||
Get-Content -Path '$**' -Encoding UTF8 ^| \
|
||
Set-Content -Path '..\lang\$(**B).nsis.txt' -Enc Unicode -Force
|
||
|
||
rename :
|
||
@ ..\tools\rename.bat "$(SRC)" "$(DST)" 1> nul
|
||
|
||
clean :
|
||
@ if exist .\gvim_version.nsh $(RM) .\gvim_version.nsh
|
||
@ if exist ..\lang\LICENSE*.nsis.txt $(RM) ..\lang\LICENSE*.nsis.txt
|
||
@ if exist .\icons\nul $(RD) .\icons
|
||
@ if exist .\gvim??.exe $(RM) .\gvim??.exe
|
||
|
||
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=79 ft=make:
|