aboutsummaryrefslogtreecommitdiff
path: root/editors/vim/Makefile
blob: 5ee67ee2e4a927aea698916143f587b3c0bf8545 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
# Created by: David O'Brien <obrien@cs.ucdavis.edu>

PORTNAME=	vim
PORTVERSION=	8.2.3394
DISTVERSIONPREFIX=	v
CATEGORIES=	editors

MAINTAINER=	adamw@FreeBSD.org
COMMENT=	Improved version of the vi editor (${FLAVOR:U} flavor)

LICENSE=	VIM
LICENSE_NAME=	VIM License
LICENSE_FILE=	${WRKSRC}/runtime/doc/uganda.txt
LICENSE_PERMS=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept

USES=		cpe iconv ncurses pkgconfig shebangfix
USE_GITHUB=	yes

# Vim will try to link against libcanberra if it's installed
CONFIGURE_ARGS=	--disable-canberra \
		--enable-cscope \
		--enable-gui=${GUI} \
		--enable-multibyte \
		--with-tlib=ncursesw
MAKE_ARGS=	STRIP="${STRIP_CMD}" \
		VIMRCLOC=${ETCDIR} \
		VIMRUNTIMEDIR=${PREFIX}/share/vim/${VIM_VER}

CPE_VERSION=	${PORTVERSION:R}
GNU_CONFIGURE=	yes
PLIST_SUB=	VIM_VER=${VIM_VER}
PORTDATA=	${VIM_VER}
PORTSCOUT=	ignore:1
SHEBANG_FILES=	runtime/tools/demoserver.py runtime/tools/efm_perl.pl
VIM_VER=	${PORTNAME}${PORTVERSION:R:S|.||g}

# Flavors {{{1
# FLAVORS are used to build various Vim GUIs. The default flavor (`vim') is
# console-only.
FLAVORS=	console athena gtk2 gtk3 motif x11 tiny

# GUI flavors
.if ${FLAVOR:U} == console
GUI=		no
PLIST_SUB+=	GUI="@comment " DESKTOP="@comment "
CONFLICTS_INSTALL=	vim-athena vim-gtk2 vim-gtk3 vim-motif vim-tiny vim-x11

.elif ${FLAVOR:U} == tiny
PKGNAMESUFFIX=	-tiny
GUI=		no
PLIST=		${.CURDIR}/pkg-plist-tiny
CONFLICTS_INSTALL=	vim-athena vim-console vim-gtk2 vim-gtk3 vim-motif vim-x11

.elif ${FLAVOR:U} == athena
PKGNAMESUFFIX=	-athena
GUI=		athena
CONFIGURE_ARGS+=--enable-xim --enable-fontset
PLIST_SUB+=	GUI="" DESKTOP="@comment "
USES+=		xorg
USE_XORG+=	ice sm x11 xaw xmu xpm xt
CONFLICTS_INSTALL=	vim-console vim-gtk2 vim-gtk3 vim-motif vim-tiny vim-x11

.elif ${FLAVOR:U} == gtk2
PKGNAMESUFFIX=	-gtk2
GUI=		gtk2
INSTALLS_ICONS=	yes
CONFIGURE_ARGS+=--enable-xim --enable-fontset
PLIST_SUB+=	GUI="" DESKTOP=""
USES+=		desktop-file-utils gnome xorg
USE_GNOME=	gdkpixbuf2 gtk20
USE_XORG=	ice sm x11 xpm xt
CONFLICTS_INSTALL=	vim-athena vim-console vim-gtk3 vim-motif vim-tiny vim-x11

.elif ${FLAVOR:U} == gtk3
PKGNAMESUFFIX=	-gtk3
GUI=		gtk3
INSTALLS_ICONS=	yes
CONFIGURE_ARGS+=--enable-xim --enable-fontset
PLIST_SUB+=	GUI="" DESKTOP=""
USES+=		desktop-file-utils gnome xorg
USE_GNOME=	cairo gdkpixbuf2 gtk30
USE_XORG=	ice sm x11 xpm xt
CONFLICTS_INSTALL=	vim-athena vim-console vim-gtk2 vim-motif vim-tiny vim-x11

.elif ${FLAVOR:U} == motif
PKGNAMESUFFIX=	-motif
GUI=		motif
CONFIGURE_ARGS+=--enable-xim --enable-fontset --with-motif=lib="${MOTIFLIB}"
CONFIGURE_ENV+=	MOTIFHOME=${LOCALBASE}
PLIST_SUB+=	GUI="" DESKTOP="@comment "
USES+=		motif xorg
USE_XORG=	ice sm x11 xmu xt
CONFLICTS_INSTALL=	vim-athena vim-console vim-gtk2 vim-gtk3 vim-tiny vim-x11

.elif ${FLAVOR:U} == x11
PKGNAMESUFFIX=	-x11
GUI=		no
CONFIGURE_ARGS+=--enable-xim --enable-fontset --with-x
PLIST_SUB+=	GUI="@comment " DESKTOP="@comment "
USES+=		xorg
USE_XORG=	ice sm x11 xt
CONFLICTS_INSTALL=	vim-athena vim-console vim-gtk2 vim-gtk3 vim-motif vim-tiny
.endif

# Options {{{1
# The bulk of the OPTIONS are for normal (non-tiny) vim
### Make sure any new options are excluded below in CONSOLE/TINY
OPTIONS_DEFAULT=	CTAGS_BASE DEFAULT_VIMRC PYTHON
OPTIONS_DEFINE=		DEFAULT_VIMRC MAKE_JOBS NLS XTERM_SAVE
OPTIONS_SINGLE=		CTAGS
OPTIONS_SINGLE_CTAGS=	CTAGS_BASE CTAGS_EXUBERANT CTAGS_UNIVERSAL
OPTIONS_GROUP=		LANGBIND
OPTIONS_GROUP_LANGBIND=	LUA PERL PYTHON RUBY SCHEME TCL
OPTIONS_SUB=		yes

# vim-tiny excludes everything except CONSOLE, DEFAULT_VIMRC, MAKE_JOBS
.if ${FLAVOR:U} == tiny
OPTIONS_EXCLUDE:=	${OPTIONS_DEFINE:NDEFAULT_VIMRC:NMAKE_JOBS} \
			${OPTIONS_SINGLE_UI:NCONSOLE} \
			${OPTIONS_GROUP_LANGBIND} \
			${OPTIONS_SINGLE_CTAGS}
.endif

DEFAULT_VIMRC_DESC=	Install bundled vimrc as default setting
MAKE_JOBS_DESC=		Enable parallel build
XTERM_SAVE_DESC=	Restore xterm screen after exit

CTAGS_BASE_DESC=	Use system ctags
CTAGS_EXUBERANT_DESC=	Use exctags instead of ctags
CTAGS_UNIVERSAL_DESC=	Use uctags instead of ctags

# BROKEN: ruby.h: error: wrong number of arguments specified for 'deprecated' attribute
OPTIONS_EXCLUDE_powerpc64=	RUBY
OPTIONS_EXCLUDE_powerpc64le=	RUBY

# GENERAL OPTIONS
CTAGS_EXUBERANT_RUN_DEPENDS=	exctags:devel/ctags
CTAGS_UNIVERSAL_RUN_DEPENDS=	uctags:devel/universal-ctags

MAKE_JOBS_VARS_OFF=	MAKE_JOBS_UNSAFE=yes

NLS_CONFIGURE_ENABLE=	nls
NLS_USES=		gettext

# LANGUAGE BINDINGS
LANGBIND_DESC=		Optional language bindings

LUA_CONFIGURE_ENABLE=	luainterp
LUA_CONFIGURE_WITH=	lua-prefix=${LOCALBASE}
LUA_USES=		lua

PERL_CONFIGURE_ENABLE=	perlinterp
PERL_USES=		perl5

PYTHON_USES=		python:3.6+
PYTHON_USES_OFF=	python:env
PYTHON_CONFIGURE_ARGS=	--enable-python3interp --with-python3-command=${PYTHON_CMD}

RUBY_CONFIGURE_ENABLE=	rubyinterp
RUBY_USE=		RUBY=yes

SCHEME_DESC=		MzScheme (Racket) bindings
SCHEME_CONFIGURE_ENABLE=mzschemeinterp
SCHEME_BUILD_DEPENDS=	mzscheme:lang/racket
SCHEME_RUN_DEPENDS=	${SCHEME_BUILD_DEPENDS}

TCL_CONFIGURE_ENABLE=	tclinterp
TCL_CONFIGURE_WITH=	tclsh=tclsh${TCL_VER}
TCL_USES=		tcl

# Targets {{{1
.include <bsd.port.pre.mk>

.if ${PORT_OPTIONS:MPYTHON} && !empty(WITH_DEBUG)
CFLAGS+=		-DPy_DEBUG -DPy_DEBUG_NO_PYMALLOC
.endif

post-extract:
	${INSTALL_DATA} ${FILESDIR}/vietnamese_viscii.vim ${WRKSRC}/runtime/keymap

post-patch:
	${ECHO_CMD} '#define SYS_VIMRC_FILE "'${ETCDIR}'/vimrc"' >> ${WRKSRC}/src/feature.h
	${ECHO_CMD} '#define SYS_GVIMRC_FILE "'${ETCDIR}'/gvimrc"' >> ${WRKSRC}/src/feature.h
	${REINPLACE_CMD} -e 's|-liconv|${ICONV_LIB}|g; s|/usr/local|${LOCALBASE}|g' \
		${WRKSRC}/src/auto/configure

post-configure:
# Needed when devel/libsysinfo is installed:
	${REINPLACE_CMD} -e '/^#define HAVE_SYSINFO/ d' ${WRKSRC}/src/auto/config.h

post-install-DEFAULT_VIMRC-on:
	${MKDIR} ${STAGEDIR}${ETCDIR}
	${INSTALL_DATA} ${FILESDIR}/vimrc ${STAGEDIR}${ETCDIR}/vimrc.sample

.if ${FLAVOR:U} == tiny
do-install:
	${MKDIR} ${STAGEDIR}${DATADIR}/${VIM_VER}
	${INSTALL_PROGRAM} ${WRKSRC}/src/vim ${STAGEDIR}${PREFIX}/bin
	${TOUCH} ${STAGEDIR}${DATADIR}/${VIM_VER}/defaults.vim
	${INSTALL_MAN} ${WRKSRC}/runtime/doc/vim.1 ${STAGEDIR}${MAN1PREFIX}/man/man1

.else  # flavor != tiny
post-install:
	${RM} ${STAGEDIR}${PREFIX}/bin/ex
	${RM} ${STAGEDIR}${PREFIX}/bin/view
.  for F in eview evim gview gvim gvimdiff rgview rgvim rview rvim vimdiff
	${LN} -sf vim ${STAGEDIR}${PREFIX}/bin/$F
.  endfor

# OPTIONS
post-patch-CTAGS_BASE-on:
	${FIND} ${WRKSRC}/runtime -name 'menu*.vim' | ${XARGS} ${GREP} -l 'ctags -R' | \
		${XARGS} ${REINPLACE_CMD} -Ee 's!ctags -R ?\.!${FIND} . -type f \\| ${XARGS} ctags!g'

post-patch-CTAGS_EXUBERANT-on:
	${FIND} ${WRKSRC}/runtime -name 'menu*.vim' | ${XARGS} ${GREP} -l 'ctags -R' | \
		${XARGS} ${REINPLACE_CMD} -e 's|ctags -R|exctags -R|g'

post-patch-CTAGS_UNIVERSAL-on:
	${FIND} ${WRKSRC}/runtime -name 'menu*.vim' | ${XARGS} ${GREP} -l 'ctags -R' | \
		${XARGS} ${REINPLACE_CMD} -e 's|ctags -R|uctags -R|g'

post-patch-LUA-on:
	${REINPLACE_CMD} -e 's|set dummy lua;|set dummy ${LUA_CMD};|g' ${WRKSRC}/src/auto/configure
	${REINPLACE_CMD} -e '/$$LUA_LIBS/ s|^|LUA_LIBS="-L${LUA_LIBDIR} -llua-${LUA_VER}";|' ${WRKSRC}/src/auto/configure
	${REINPLACE_CMD} -e '/LUA_CFLAGS=/s|".*"|"-I${LUA_INCDIR}"|' ${WRKSRC}/src/auto/configure

post-patch-XTERM_SAVE-on:
	${REINPLACE_CMD} -e '/FEAT_XTERM_SAVE/ s|.*|#define FEAT_XTERM_SAVE|' ${WRKSRC}/src/feature.h

post-install-NLS-off:
	${MKDIR} ${STAGEDIR}${DATADIR}/${VIM_VER}/lang
	${MKDIR} ${STAGEDIR}${DATADIR}/${VIM_VER}/keymap
	${INSTALL_DATA} ${WRKSRC}/runtime/keymap/* ${STAGEDIR}${DATADIR}/${VIM_VER}/keymap
.endif	#!defined(TINY)

.include <bsd.port.post.mk>