350 lines
12 KiB
Makefile
Executable file
350 lines
12 KiB
Makefile
Executable file
#!/usr/bin/make -f
|
|
|
|
export DH_OPTIONS
|
|
|
|
# Upstream handles the _FORTIFY_SOURCE flag on their own
|
|
DEB_BUILD_MAINT_OPTIONS = hardening=+all,-fortify future=+lfs
|
|
|
|
include /usr/share/dpkg/default.mk
|
|
|
|
BUILDER = maintainers@lists.progress-linux.org
|
|
|
|
# Work around #1082125
|
|
ifeq (s390x,$(DEB_HOST_ARCH))
|
|
CFLAGS += -O1
|
|
endif
|
|
|
|
MAKETEST = no
|
|
ifeq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
|
|
MAKETEST = yes
|
|
endif
|
|
|
|
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
MAKEFLAGS += -j$(NUMJOBS)
|
|
endif
|
|
|
|
RUBY_SUBSTVARS = -Vvim:Ruby-Provides= -Vvim:Ruby-Desc=
|
|
RUBY_CFGFLAGS = --disable-ruby
|
|
|
|
# Set to TEST_SKIP_PAT=<vim pattern> to exclude running tests matching the pattern
|
|
EXCLUDE_PAT = TEST_SKIP_PAT='Test_crash1\|glvs'
|
|
|
|
CFGFLAGS = --prefix=/usr --mandir='$${prefix}'/share/man --without-local-dir
|
|
CFGFLAGS += --with-modified-by="$(BUILDER)"
|
|
CFGFLAGS += --with-compiledby="$(BUILDER)"
|
|
CFGFLAGS += --enable-fail-if-missing
|
|
CFGFLAGS += --with-global-runtime='/var/lib/vim/addons,/etc/vim,$$VIM/vimfiles'
|
|
|
|
TINYFLAGS = --with-features=small
|
|
TINYFLAGS += --disable-gui
|
|
TINYFLAGS += --disable-xsmp
|
|
TINYFLAGS += --disable-xsmp-interact
|
|
TINYFLAGS += --disable-netbeans
|
|
TINYFLAGS += --disable-gpm
|
|
TINYFLAGS += --enable-nls
|
|
TINYFLAGS += --enable-acl
|
|
TINYFLAGS += --disable-terminal
|
|
TINYFLAGS += --disable-canberra
|
|
TINYFLAGS += --disable-libsodium
|
|
|
|
OPTFLAGS = --enable-cscope
|
|
ifeq ($(DEB_HOST_ARCH_OS),linux)
|
|
OPTFLAGS += --enable-gpm
|
|
OPTFLAGS += --enable-selinux --disable-smack
|
|
TINYFLAGS += --enable-selinux --disable-smack
|
|
else
|
|
OPTFLAGS += --disable-gpm
|
|
endif
|
|
OPTFLAGS += --with-features=huge
|
|
OPTFLAGS += --enable-acl
|
|
OPTFLAGS += --enable-terminal
|
|
OPTFLAGS += --enable-libsodium
|
|
|
|
NOXFLAGS = --without-x
|
|
NOXFLAGS += --enable-gui=no
|
|
NOXFLAGS += --disable-canberra
|
|
|
|
GUIFLAGS = --with-x
|
|
GUIFLAGS += --enable-xim
|
|
GUIFLAGS += --enable-canberra
|
|
|
|
GTK3FLAGS = --enable-gui=gtk3
|
|
GTK3FLAGS += --enable-gtk3-check
|
|
GTK3FLAGS += --disable-gnome-check
|
|
GTK3FLAGS += --disable-motif-check
|
|
GTK3FLAGS += --disable-motif-check
|
|
GTK3FLAGS += --disable-fontset
|
|
|
|
MOTIFFLAGS = --enable-gui=motif
|
|
MOTIFFLAGS += --disable-gtk2-check
|
|
MOTIFFLAGS += --disable-gtk3-check
|
|
MOTIFFLAGS += --disable-gnome-check
|
|
MOTIFFLAGS += --disable-motif-check
|
|
MOTIFFLAGS += --enable-motif-check
|
|
MOTIFFLAGS += --enable-fontset
|
|
|
|
NOINTERPFLAGS = --disable-luainterp
|
|
NOINTERPFLAGS += --disable-mzschemeinterp
|
|
NOINTERPFLAGS += --disable-perlinterp
|
|
NOINTERPFLAGS += --enable-python3interp --with-python3-config-dir=$(shell python3-config --configdir)
|
|
NOINTERPFLAGS += --disable-pythoninterp
|
|
NOINTERPFLAGS += --disable-rubyinterp
|
|
NOINTERPFLAGS += --disable-tclinterp
|
|
|
|
ALLINTERPFLAGS = --enable-luainterp
|
|
ALLINTERPFLAGS += --disable-mzschemeinterp
|
|
ALLINTERPFLAGS += --enable-perlinterp
|
|
ALLINTERPFLAGS += --enable-python3interp --with-python3-config-dir=$(shell python3-config --configdir)
|
|
ALLINTERPFLAGS += --disable-pythoninterp
|
|
ALLINTERPFLAGS += --enable-tclinterp
|
|
ALLINTERPFLAGS += --with-tclsh=/usr/bin/tclsh
|
|
|
|
# Each vim-xxx package is said to be a vim variant and contains only a vim
|
|
# binary built with some compile-time options. Makefile VARIANTS below are
|
|
# one-to-one with those packages with the exception of "vim-basic". In this
|
|
# Makefile vim-basic is used to build 4 packages: "vim", "vim-runtime",
|
|
# "vim-common", "vim-gui-common". "vim-tiny" is the only variant package not
|
|
# depending on vim-runtime.
|
|
|
|
VARIANTS += vim-tiny
|
|
VARIANTS += vim-gtk3
|
|
VARIANTS += vim-motif
|
|
VARIANTS += vim-nox
|
|
VARIANTS += vim-basic
|
|
|
|
ifneq ($(origin VARIANT), undefined)
|
|
VARIANTS = $(VARIANT) vim-basic
|
|
endif
|
|
|
|
CFLAGS += -DSYS_VIMRC_FILE="'\"/etc/vim/vimrc\"'" -DSYS_GVIMRC_FILE="'\"/etc/vim/gvimrc\"'"
|
|
|
|
CFLAGS_vim-basic = $(CFLAGS)
|
|
CFGFLAGS_vim-basic = $(CFGFLAGS) $(OPTFLAGS) $(NOXFLAGS) $(NOINTERPFLAGS)
|
|
|
|
CFLAGS_vim-tiny = $(CFLAGS) -DTINY_VIMRC -DSYS_TINYRC_FILE="'\"/etc/vim/vimrc.tiny\"'"
|
|
CFGFLAGS_vim-tiny = $(CFGFLAGS) $(TINYFLAGS)
|
|
|
|
CFLAGS_vim-gtk3 = $(CFLAGS)
|
|
CFGFLAGS_vim-gtk3 = $(CFGFLAGS) $(OPTFLAGS) $(GUIFLAGS) $(ALLINTERPFLAGS) $(GTK3FLAGS) $(RUBY_CFGFLAGS)
|
|
|
|
CFLAGS_vim-motif = $(CFLAGS)
|
|
CFGFLAGS_vim-motif = $(CFGFLAGS) $(OPTFLAGS) $(GUIFLAGS) $(MOTIFFLAGS) $(ALLINTERPFLAGS) $(RUBY_CFGFLAGS)
|
|
|
|
CFLAGS_vim-nox = $(CFLAGS)
|
|
CFGFLAGS_vim-nox = $(CFGFLAGS) $(OPTFLAGS) $(NOXFLAGS) $(ALLINTERPFLAGS) $(RUBY_CFGFLAGS)
|
|
|
|
NAME = vim
|
|
# Convert x.y.z to x.y
|
|
VERSION = $(basename $(DEB_VERSION_UPSTREAM))
|
|
VIMMAJOR = $(basename $(VERSION))
|
|
VIMCUR = $(NAME)$(subst .,,$(VERSION))
|
|
LANGS = da de fr it ja pl ru tr
|
|
|
|
DOT_IN_DEPS = debian/vim-runtime.postrm
|
|
DOT_IN_DEPS += debian/vim-runtime.preinst
|
|
DOT_IN_DEPS_TINY = debian/tiny/vimrc.tiny
|
|
|
|
foreach-variant = \
|
|
set -e; for v in $(VARIANTS); do \
|
|
$1; \
|
|
done
|
|
|
|
%:
|
|
dh $@
|
|
|
|
update-changelog:
|
|
dh_testdir
|
|
wget -O debian/changelog.upstream http://ftp.vim.org/pub/vim/patches/$(VERSION)/README
|
|
|
|
override_dh_auto_clean:
|
|
# The vim-basic variant is always enabled, so we can rely on it when checking
|
|
# whether we can call "make distclean". The config.cache check is to avoid
|
|
# calling make when configure has not run, otherwise make will run configure to
|
|
# generate an include file
|
|
[ ! -f src/vim-basic/auto/config.cache ] || make distclean
|
|
[ ! -f debian/configure.dist ] || mv debian/configure.dist src/auto/configure
|
|
find src/testdir -name '*.pyc' -delete
|
|
for v in $(VARIANTS); do \
|
|
if [ "$${v}" = vim-basic ]; then \
|
|
[ ! -L src/"$${v}"/po ] || $(MAKE) -C src/"$${v}"/po clean; \
|
|
fi; \
|
|
rm -rf src/"$${v}"; \
|
|
done
|
|
rm -f $(DOT_IN_DEPS)
|
|
rm -f $(DOT_IN_DEPS_TINY)
|
|
|
|
override_dh_auto_configure-indep: autoconf-stamp
|
|
$(MAKE) -f debian/rules configure-vim-basic
|
|
|
|
override_dh_auto_configure-arch: autoconf-stamp
|
|
$(call foreach-variant, $(MAKE) -f debian/rules configure-"$${v}")
|
|
|
|
override_dh_auto_build-indep: autoconf-stamp
|
|
override_dh_auto_build-indep:
|
|
$(MAKE) -f debian/rules build-vim-basic
|
|
$(MAKE) -C runtime/doc html
|
|
$(MAKE) -C debian/policy text html
|
|
$(MAKE) -C src/po vim.pot VIMPROG=$(CURDIR)/src/vim-basic/vim
|
|
|
|
override_dh_auto_build-arch: autoconf-stamp
|
|
$(call foreach-variant, $(MAKE) -f debian/rules build-"$${v}")
|
|
$(MAKE) -C src/vim-basic xxd/xxd
|
|
|
|
override_dh_auto_test-indep:
|
|
|
|
override_dh_auto_test-arch:
|
|
$(call foreach-variant, $(MAKE) -f debian/rules test-"$${v}")
|
|
|
|
autoconf-stamp:
|
|
dh_testdir
|
|
[ -f debian/configure.dist ] || cp src/auto/configure debian/configure.dist
|
|
# The autoconf target generates a new configure, and touches some other
|
|
# configure-related things. Need to run scratch afterward or timestamps
|
|
# will be off and the next make that runs will think it needs to run
|
|
# configure. This breaks parallel builds since two configures are being run
|
|
# in the same directory at the same time instead of in their own shadow
|
|
# directories.
|
|
$(MAKE) -C src autoconf
|
|
$(MAKE) -C src scratch
|
|
touch $@
|
|
|
|
src/vim-%: VARIANT=vim-$*
|
|
src/vim-%:
|
|
$(MAKE) -C src shadow SHADOWDIR=$(VARIANT)
|
|
|
|
configure-vim-%: VARIANT=vim-$*
|
|
configure-vim-%: autoconf-stamp
|
|
configure-vim-%:
|
|
$(MAKE) -f debian/rules src/$(VARIANT)
|
|
cd src/$(VARIANT) && LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS_$(VARIANT))" ./configure $(CFGFLAGS_$(VARIANT))
|
|
|
|
build-vim-%: VARIANT=vim-$*
|
|
build-vim-%: configure-$(VARIANT)
|
|
build-vim-%:
|
|
$(MAKE) -C src/$(VARIANT)
|
|
$(MAKE) -C runtime/doc tags VIMPROG=$(CURDIR)/src/$(VARIANT)/vim
|
|
|
|
test-vim-%: VARIANT=vim-$*
|
|
test-vim-%:
|
|
:
|
|
ifeq (yes,$(MAKETEST))
|
|
# Sanitize LC_* env so they don't leak through to child processes and cause problems in build chroots (e.g., missing locales)
|
|
# and set sane values for TERM/LC_ALL/LANG
|
|
for e in ADDRESS COLLATE CTYPE IDENTIFICATION MEASUREMENT MESSAGES MONETARY NAME NUMERIC PAPER TELEPHONE TIME; do \
|
|
unset LC_$${e}; \
|
|
done; \
|
|
env $(EXCLUDE_PAT) TERM=xterm LC_ALL=C.UTF-8 LANG=C.UTF-8 $(MAKE) -j1 -C src/$(VARIANT) test
|
|
endif
|
|
|
|
override_dh_auto_install-arch:
|
|
|
|
# Use UTF-8 manpages for all languages
|
|
# If a .UTF-8 directory doesn't exist, then the $L directory is already UTF-8.
|
|
define munge-man-directories
|
|
for L in $(LANGS); do \
|
|
if [ -d "$(DESTDIR)/usr/share/man/$$L.UTF-8" ]; then \
|
|
rm -rf "$(DESTDIR)/usr/share/man/$$L"; \
|
|
mv "$(DESTDIR)/usr/share/man/$$L.UTF-8" "$(DESTDIR)/usr/share/man/$$L"; \
|
|
fi; \
|
|
rm -rf "$(DESTDIR)/usr/share/man/$$L."*; \
|
|
done
|
|
endef
|
|
|
|
override_dh_auto_install-indep: DESTDIR=$(CURDIR)/debian/tmp
|
|
override_dh_auto_install-indep:
|
|
$(MAKE) -f debian/rules build-vim-basic
|
|
mkdir -p "$(DESTDIR)/usr/bin"
|
|
# installruntime requires a "vim" in /usr/bin
|
|
cp src/vim-basic/vim "$(DESTDIR)/usr/bin"
|
|
$(MAKE) -C src/vim-basic "DESTDIR=$(DESTDIR)" \
|
|
installtutorbin \
|
|
installgtutorbin \
|
|
installruntime \
|
|
install-languages \
|
|
install-icons
|
|
rm -f "$(DESTDIR)/usr/bin/vim"
|
|
|
|
COMMON_HELP_PATHS = runtime/doc/uganda.txt runtime/doc/sponsor.txt runtime/doc/version$(VIMMAJOR).txt
|
|
debian/tiny/doc/tags: $(COMMON_HELP_PATHS)
|
|
./debian/generate-tiny-tags debian/tiny/doc/help.txt $(COMMON_HELP_PATHS) > debian/tiny/doc/tags
|
|
|
|
override_dh_install-indep: DESTDIR=$(CURDIR)/debian/tmp
|
|
override_dh_install-indep:
|
|
$(MAKE) -f debian/rules $(DOT_IN_DEPS)
|
|
$(munge-man-directories)
|
|
|
|
# rm stuff handled by alternatives or our own symlinks
|
|
find "$(DESTDIR)/usr/share/man" \( -name view.1 -o -name ex.1 -o -name rvim.1 -o -name rview.1 \) -delete
|
|
|
|
# helpztags manpage
|
|
pod2man -c "User Commands" -s 1 -q none -r "vim $(VERSION)" \
|
|
-d "August 2010" debian/helpztags debian/helpztags.1
|
|
|
|
# Icons
|
|
gs -sDefaultCMYKProfile=ps_cmyk.icc -sOutputICCProfile=ps_rgb.icc \
|
|
-dSAFER -dEPSCrop -dBATCH -dNOPAUSE \
|
|
-sDEVICE=ps2write -sOutputFile=debian/tmplogo.ps runtime/vimlogo.eps
|
|
ps2pdf debian/tmplogo.ps debian/tmplogo.pdf
|
|
pdf2svg debian/tmplogo.pdf debian/vim-common/usr/share/icons/hicolor/scalable/apps/gvim.svg
|
|
|
|
env VIMCUR=$(VIMCUR) VIMMAJOR=$(VIMMAJOR) dh_install -p vim-runtime $(subst runtime/doc/,-X ,$(COMMON_HELP_PATHS)) -X vim2html.pl -X 'README*.txt' -X README.el.txt -X README.el.cp737.txt
|
|
env VIMCUR=$(VIMCUR) VIMMAJOR=$(VIMMAJOR) dh_install -i -N vim-runtime
|
|
# adjust things for vim-gui-common
|
|
cp debian/vim-common/usr/share/man/man1/vim.1 \
|
|
debian/vim-gui-common/usr/share/man/man1/gvim.1
|
|
cp debian/vim-common/usr/share/man/man1/vimdiff.1 \
|
|
debian/vim-gui-common/usr/share/man/man1/gvimdiff.1
|
|
cp debian/vim-runtime/usr/share/man/man1/vimtutor.1 \
|
|
debian/vim-gui-common/usr/share/man/man1/gvimtutor.1
|
|
for L in $(LANGS); do \
|
|
DIR=usr/share/man/$$L; \
|
|
[ ! -e "debian/vim-common/$$DIR/man1/vim.1" ] || \
|
|
cp debian/vim-common/$$DIR/man1/vim.1 \
|
|
debian/vim-gui-common/$$DIR/man1/gvim.1; \
|
|
[ ! -e "debian/vim-common/$$DIR/man1/vimdiff.1" ] || \
|
|
cp debian/vim-common/$$DIR/man1/vimdiff.1 \
|
|
debian/vim-gui-common/$$DIR/man1/gvimdiff.1; \
|
|
[ ! -e "debian/vim-runtime/$$DIR/man1/vimtutor.1" ] || \
|
|
cp debian/vim-runtime/$$DIR/man1/vimtutor.1 \
|
|
debian/vim-gui-common/$$DIR/man1/gvimtutor.1; \
|
|
done
|
|
|
|
override_dh_installchangelogs:
|
|
dh_installchangelogs -A debian/changelog.upstream
|
|
|
|
install-xxd: DESTDIR=$(CURDIR)/debian/xxd
|
|
install-xxd:
|
|
$(MAKE) -C src/vim-basic STRIP=: DESTDIR=$(DESTDIR) installtools install-tool-languages
|
|
rm -r $(DESTDIR)/usr/share/vim
|
|
$(munge-man-directories)
|
|
# No xxd.1 translations for these languages yet
|
|
for lang in da de tr.ISO8859-9 tr.UTF-8 tr; do \
|
|
rmdir $(DESTDIR)/usr/share/man/$$lang/man1 $(DESTDIR)/usr/share/man/$$lang; \
|
|
done
|
|
|
|
override_dh_auto_install-arch:
|
|
$(MAKE) -f debian/rules install-xxd
|
|
|
|
override_dh_bugfiles:
|
|
$(call foreach-variant, dh_bugfiles -A -p "$${v%-basic}")
|
|
|
|
install-vim-%: SHADOWDIR=vim-$*
|
|
install-vim-%: VARIANT=$*
|
|
install-vim-%: BIN=$(subst -,.,vim-$(VARIANT))
|
|
install-vim-%:
|
|
cp src/$(SHADOWDIR)/vim src/$(SHADOWDIR)/$(BIN)
|
|
[ $(VARIANT) != tiny ] || $(MAKE) -f debian/rules $(DOT_IN_DEPS_TINY) debian/tiny/doc/tags
|
|
|
|
override_dh_install-arch:
|
|
$(call foreach-variant, $(MAKE) -f debian/rules install-$${v})
|
|
env VIMCUR=$(VIMCUR) VIMMAJOR=$(VIMMAJOR) dh_install -a
|
|
|
|
$(DOT_IN_DEPS) $(DOT_IN_DEPS_TINY): %: %.in
|
|
cat $< | sed 's/@VIMCUR@/$(VIMCUR)/' > $@
|
|
|
|
override_dh_gencontrol:
|
|
dh_gencontrol -- $(RUBY_SUBSTVARS)
|
|
|
|
.NOTPARALLEL:
|
|
# vim: set foldmethod=marker:
|