blob: 8350082b26cb5c3c9fcf3108bdd0888038272997 [file] [log] [blame]
RestorerZ2730d382025-01-17 14:04:44 +01001#
2# Makefile for MS Windows for create self-installing exe of Vim.
3# 05/04/2024, Restorer restorer@mail2k.ru
4#
5
6
7#!INCLUDE .\Make_all.mak
8
9.SUFFIXES :
10
11!IFDEF PROGRAMW6432
12ProgFiles=%%PROGRAMFILES(x86)%%
13!ELSE
14ProgFiles=$(PROGRAMFILES)
15!ENDIF
16
17!IFDEF VIMSRC
18MKNSISFLAGS = /D"VIMSRC=$(VIMSRC)"
19!ENDIF
20
21!IFDEF VIMRT
22MKNSISFLAGS = $(MKNSISFLAGS) /D"VIMRT=$(VIMRT)"
23!ENDIF
24
25!IFDEF VIMTOOLS
26MKNSISFLAGS = $(MKNSISFLAGS) /D"VIMTOOLS=$(VIMTOOLS)"
27!ENDIF
28
29!IFDEF GETTEXT
30MKNSISFLAGS = $(MKNSISFLAGS) /D"GETTEXT=$(GETTEXT)"
31!ENDIF
32
33!IFDEF HAVE_UPX
34MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_UPX=$(HAVE_UPX)
35!ENDIF
36
37!IFDEF HAVE_NLS
38MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_NLS=$(HAVE_NLS)
39!ENDIF
40
41!IFDEF HAVE_MULTI_LANG
42MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_MULTI_LANG=$(HAVE_MULTI_LANG)
43!ENDIF
44
45!IFDEF WIN64
46MKNSISFLAGS = $(MKNSISFLAGS) /DWIN64=$(WIN64)
47!ENDIF
48
RestorerZ54585fd2025-07-01 21:30:21 +020049!IFDEF ARM64
50MKNSISFLAGS = $(MKNSISFLAGS) /DARM64=$(ARM64)
51!ENDIF
52
RestorerZ2730d382025-01-17 14:04:44 +010053!IFDEF INCLUDE_LIBGCC
54MKNSISFLAGS = $(MKNSISFLAGS) /DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC)
55!ENDIF
56
57!IFDEF X
58XX = /X"$(X:;=" /X")"
59!ENDIF
60
61# If necessary, correct the full path of the NSIS compiler in the next line.
62# Please do not enclose the path in quotation marks.
63MKNSIS = $(ProgFiles)\NSIS
64
65PS = powershell.exe
66RM = del /f /q
67RD = rmdir /s /q
68
69MKNSISFLAGS = /INPUTCHARSET UTF8 $(MKNSISFLAGS)
70PSFLAGS = -NoLogo -NoProfile -Command
71
72# Read MAJOR and MINOR from version.h.
73!IF ![for /F "tokens=2,3" %G in ( \
74 'findstr /rc:"VIM_VERSION_MINOR[ ^]*[0-9^]" \
75 /rc:"VIM_VERSION_MAJOR[ ^]*[0-9^]" ..\src\version.h') do \
76 @if "VIM_VERSION_MAJOR"=="%G" (echo MAJOR=%H>>_ver.tmp) \
77 else echo MINOR=%H>>_ver.tmp]
78! INCLUDE .\_ver.tmp
79! IF [$(RM) .\_ver.tmp]
80! ENDIF
81!ENDIF
82
83# Read PATCHLEVEL from version.c
84!IF ![for /F %G in ( \
85 'findstr /nblc:"static int included_patches[^]" ..\src\version.c \
86 ^| (set /p "_t=" ^& set /a _t+=2 ^)') do \
87 @cmd /q /c "for /F "skip=%G delims=, " %H in (..\src\version.c) do \
88 (echo PATCH=%H>_patchlvl.tmp & exit /b)"]
89! INCLUDE .\_patchlvl.tmp
90! IF [$(RM) .\_patchlvl.tmp]
91! ENDIF
92!ENDIF
93!IF $(PATCH) < 10
94PATCH = 000$(PATCH)
95!ELSEIF $(PATCH) < 100
96PATCH = 00$(PATCH)
97!ELSEIF $(PATCH) < 1000
98PATCH = 0$(PATCH)
99!ENDIF
100
101
102all : makeinst
103
104makeinst : prepare
105 ^"$(MKNSIS)\makensis.exe" $(MKNSISFLAGS) gvim.nsi $(XX)
106
107prepare : unzipicons gvim_version.nsh license rename
108
109unzipicons : icons.zip
110 @ if exist %|fF\nul $(RD) %|fF
111 @ $(PS) $(PSFLAGS) \
112 Add-Type -AssemblyName 'System.IO.Compression.FileSystem'; \
113 [System.IO.Compression.ZipFile]::ExtractToDirectory(\"$**\", \".\")
114
115gvim_version.nsh : Make_mvc.mak
116 @ 1> $@ echo:^# Generated from Makefile: define the version numbers
117 @ 1>> $@ echo:^!ifndef __GVIM_VER__NSH__
118 @ 1>> $@ echo:^!define __GVIM_VER__NSH__
119 @ 1>> $@ echo:^!define VER_MAJOR $(MAJOR)
120 @ 1>> $@ echo:^!define VER_MINOR $(MINOR)
121 @ 1>> $@ echo:^!define PATCHLEVEL $(PATCH)
122 @ 1>> $@ echo:^!endif
123
124license : ..\lang\LICENSE.*.txt ..\LICENSE
125 !@ $(PS) $(PSFLAGS) \
126 Get-Content -Path '$**' -Encoding UTF8 ^| \
127 Set-Content -Path '..\lang\$(**B).nsis.txt' -Enc Unicode -Force
128
129rename :
130 @ ..\tools\rename.bat "$(SRC)" "$(DST)" 1> nul
131
132clean :
133 @ if exist .\gvim_version.nsh $(RM) .\gvim_version.nsh
134 @ if exist ..\lang\LICENSE*.nsis.txt $(RM) ..\lang\LICENSE*.nsis.txt
135 @ if exist .\icons\nul $(RD) .\icons
136 @ if exist .\gvim??.exe $(RM) .\gvim??.exe
137
138# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0 ft=make: