#
# Makefile for UNIX-like for create self-installing exe of Vim.
# 15/12/2024, Restorer restorer@mail2k.ru
#


.SUFFIXES:
.PHONY: all makeinst prepare rename clean 

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

MAJOR != grep -E 'VIM_VERSION_MAJOR\s{2,}' ../src/version.h | \
	awk '{ printf "%d",$$3 }'
MINOR != grep -E 'VIM_VERSION_MINOR\s{2,}' ../src/version.h | \
	awk '{ printf "%d",$$3 }'
PATCH != awk '/number below this line/,/,/' ../src/version.c | \
	awk 'NR == 3 { printf "%04d",$$1 }' | sed -e 's/[ ,]//g'

MKNSISFLAGS := -INPUTCHARSET UTF8 $(MKNSISFLAGS)

all: makeinst

makeinst: prepare
	makensis $(MKNSISFLAGS) gvim.nsi $(XX)

prepare: unzipicons gvim_version.nsh license rename

unzipicons: icons.zip
	if test -d `basename $? .zip` ; then rm -rf `basename $? .zip` ; fi
	unzip $?

gvim_version.nsh: Makefile
	echo "# Generated from Makefile: define the version numbers" > $@
	echo "!ifndef __GVIM_VER__NSH__"  >> $@
	echo "!define __GVIM_VER__NSH__"  >> $@
	echo "!define VER_MAJOR $(MAJOR)" >> $@
	echo "!define VER_MINOR $(MINOR)" >> $@
	echo "!define PATCHLEVEL $(PATCH)" >> $@
	echo "!endif" >> $@

license: ../lang/LICENSE.*.txt ../LICENSE
	for lic in $? ; do \
		bn=`basename $$lic .txt` ; \
		awk 'sub("$$", "\r")' < $$lic | \
		iconv -f UTF-8 -t UTF-16 > ../lang/$$bn.nsis.txt ; \
	done

rename:
	../tools/rename.bat "$(SRC)" "$(DST)"

clean:
	if test -f gvim_version.nsh ; then rm -f gvim_version.nsh ; fi
	rm -f ../lang/LICENSE*.nsis.txt
	if test -d icons ; then rm -rf icons ; fi
	if test -f gvim??.exe ; then rm -f gvim??.exe ; fi

# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0 ft=make:
