xref: /freebsd/usr.bin/vi/Makefile (revision df7f5d4de4592a8948a25ce01e5bddfbb7ce39dc)
1#
2# $Id$
3#
4# This has most of the glue needed to compile tknvi and the perl hooks,
5# but not all.
6#
7
8SRCDIR=		${.CURDIR}/../../contrib/nvi
9
10.if defined(RELEASE_BUILD_FIXIT)
11# When building `vi' for the fixit floppy, don't include any of the
12# API stuff.
13APISTUFF=	ex_notcl.c ex_noperl.c
14
15.else
16
17TCLINTERP=	yes	#fine, in base tree, little cost
18#TKNVI=		yes	#not ready, needs X11, tk, doesn't quite work yet
19#PERLINTERP=	yes	#needs the perl5 v5.003 port
20
21APISTUFF=	ex_tcl.c ex_perl.c
22
23# Any better ideas?
24#PERL=		/usr/local/bin/perl5.003
25#CFLAGS+=	-DHAVE_PERL_5_003_01	# If perl >= 5.03.01
26
27.endif
28
29#if using ncurses:
30#CFLAGS+=	-DSYSV_CURSES
31
32VI=	nvi
33EX=	nex
34VIEW=	nview
35
36PROG=	nvi
37
38LINKS=	${BINDIR}/${VI} ${BINDIR}/${EX} ${BINDIR}/${VI} ${BINDIR}/${VIEW}
39LINKS+= ${BINDIR}/${VI} ${BINDIR}/vi ${BINDIR}/${EX} ${BINDIR}/ex
40LINKS+= ${BINDIR}/${VI} ${BINDIR}/view
41
42MAN1=	${SRCDIR}/docs/USD.doc/vi.man/vi.1
43MLINKS+=vi.1 ex.1 vi.1 view.1
44MLINKS+=vi.1 nex.1 vi.1 nview.1 vi.1 nvi.1
45
46CATALOGS= dutch english french german ru_SU.KOI8-R spanish swedish
47NLLINKS= nl_NL
48ENLINKS= en_AU en_CA en_GB en_US
49FRLINKS= fr_BE fr_CA fr_CH fr_FR
50DELINKS= de_AT de_CH de_DE
51ESLINKS= es_ES
52SVLINKS= sv_SE
53
54.PATH:	${SRCDIR}/common
55.PATH:	${SRCDIR}/ex
56.PATH:	${SRCDIR}/cl
57.PATH:	${SRCDIR}/vi
58
59CFLAGS+=-I${.CURDIR} -I${SRCDIR} -I${SRCDIR}/include
60
61.if !defined(TKNVI)
62DPADD+=		${LIBCURSES} ${LIBTERMCAP}
63LDADD+=		-lcurses -ltermcap
64.endif
65
66.if defined(TKNVI)
67.PATH:		${SRCDIR}/tk
68LDADD+=		-L/usr/local/lib -L/usr/X11R6/lib -ltk41 -lX11
69CFLAGS+=	-I/usr/local/include -I/usr/X11R6/include
70.endif
71
72.if defined(TCLINTERP)
73.PATH:		${SRCDIR}/tcl_api
74DPADD+=		${LIBTCL} ${LIBM}
75LDADD+=		-ltcl -lm
76CFLAGS+=	-DHAVE_TCL_INTERP
77.endif
78
79.if defined(PERLINTERP)
80.PATH:		${SRCDIR}/perl_api
81
82# Perl "knows" how to compile it's components. Ask it for details...
83PERLLIB!=	${PERL} -MConfig -e 'print $$Config{privlib}'
84PERLCPPFLAGS!=	cd ${SRCDIR}/build; ${PERL} -MExtUtils::Embed -e 'ccflags;perl_inc'
85PERLLIBS!=	cd ${SRCDIR}/build; ${PERL} -MExtUtils::Embed -e 'ldopts'
86PERLLDFLAGS!=	cd ${SRCDIR}/build; ${PERL} -MExtUtils::Embed -e 'ccdlflags'
87
88LDADD+=	 ${PERLLDFLAGS} ${PERLLIBS}
89CFLAGS+= -DHAVE_PERL_INTERP ${PERLCPPFLAGS}
90
91.endif
92
93CLEANFILES+=${EX}
94
95# Vi curses sources
96.if !defined(TKNVI)
97SRCS+=	cl_bsd.c cl_funcs.c cl_main.c cl_read.c cl_screen.c cl_term.c
98.endif
99
100# Vi Tk sources
101.if defined(TKNVI)
102SRCS+=	tk_funcs.c tk_main.c tk_read.c tk_screen.c tk_term.c tk_util.c
103.endif
104
105# Vi Tcl/Perl interpreter sources
106.if defined(TCLINTERP) || defined(PERLINTERP)
107SRCS+=	api.c
108.endif
109.if defined(TCLINTERP)
110SRCS+=	tcl.c
111.endif
112.if defined(PERLINTERP)
113# perl.c is generated
114SRCS+=	perl.c perlsfio.c
115.endif
116
117# General sources.
118SRCS+=	cut.c delete.c exf.c key.c line.c log.c main.c mark.c msg.c options.c \
119	options_f.c put.c screen.c search.c seq.c recover.c util.c
120
121# Ex source.
122SRCS+=	ex.c ex_abbrev.c ex_append.c ex_args.c ex_argv.c ex_at.c ex_bang.c \
123	ex_cd.c ex_cmd.c ex_cscope.c ex_delete.c ex_display.c \
124	ex_edit.c ex_equal.c ex_file.c ex_filter.c ex_global.c \
125	ex_init.c ex_join.c ex_map.c ex_mark.c ex_mkexrc.c ex_move.c \
126	ex_open.c ex_preserve.c ex_print.c ex_put.c ex_quit.c \
127	ex_read.c ex_screen.c ex_script.c ex_set.c ex_shell.c \
128	ex_shift.c ex_source.c ex_stop.c ex_subst.c ex_tag.c \
129	ex_txt.c ex_undo.c ex_usage.c ex_util.c ex_version.c ex_visual.c \
130	ex_write.c ex_yank.c ex_z.c ${APISTUFF}
131
132# Vi source.
133SRCS+=	getc.c v_at.c v_ch.c v_cmd.c v_delete.c v_ex.c v_increment.c v_init.c \
134	v_itxt.c v_left.c v_mark.c v_match.c v_paragraph.c v_put.c v_redraw.c \
135	v_replace.c v_right.c v_screen.c v_scroll.c v_search.c v_section.c \
136	v_sentence.c v_status.c v_txt.c v_ulcase.c v_undo.c \
137	v_util.c v_word.c v_xchar.c v_yank.c v_z.c v_zexit.c vi.c
138
139# Vi screen source.
140SRCS+=	vs_line.c vs_msg.c vs_refresh.c vs_relative.c vs_smap.c vs_split.c
141
142# Generate perl.c
143.if defined(PERLINTERP)
144perl.c:	perl.xs typemap
145	echo "#define _PATH_PERLSCRIPTS \"/usr/share/vi/perl\"" > $@
146	$(PERL) $(PERLLIB)/ExtUtils/xsubpp -typemap \
147	    $(PERLLIB)/ExtUtils/typemap $(SRCDIR)/perl_api/perl.xs >> $@
148	($(PERL) -ne 'print "sub $$1 {\$$curscr->$$1(\@_)}\n" \
149	    if /newXS\("VI::([^":]*)"/;' $@ ; echo "1;") > VI.pm
150
151CLEANFILES+=	VI.pm perl.c
152.endif
153
154# unifdef has some *weird* exit codes, sigh!  RTFM unifdef(1)...
155ex_notcl.c: ex_tcl.c
156	-unifdef -UHAVE_TCL_INTERP ${SRCDIR}/ex/ex_tcl.c > ${.TARGET}
157
158ex_noperl.c: ex_perl.c
159	-unifdef -UHAVE_PERL_INTERP ${SRCDIR}/ex/ex_perl.c > ${.TARGET}
160
161CLEANFILES+=	ex_notcl.c ex_noperl.c
162
163afterinstall:
164	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
165		${CATALOGS:S;^;${SRCDIR}/catalog/;} \
166		${DESTDIR}/usr/share/vi/catalog
167	for l in ${NLLINKS}; do \
168		ln -fs dutch ${DESTDIR}/usr/share/vi/catalog/$$l.ISO_8859-1; \
169	done
170	for l in ${ENLINKS}; do \
171		ln -fs english ${DESTDIR}/usr/share/vi/catalog/$$l.ISO_8859-1; \
172	done
173	ln -fs english ${DESTDIR}/usr/share/vi/catalog/us-ascii
174	for l in ${FRLINKS}; do \
175		ln -fs french ${DESTDIR}/usr/share/vi/catalog/$$l.ISO_8859-1; \
176	done
177	for l in ${DELINKS}; do \
178		ln -fs german ${DESTDIR}/usr/share/vi/catalog/$$l.ISO_8859-1; \
179	done
180	for l in ${ESLINKS}; do \
181		ln -fs spanish ${DESTDIR}/usr/share/vi/catalog/$$l.ISO_8859-1; \
182	done
183	for l in ${SVLINKS}; do \
184		ln -fs swedish ${DESTDIR}/usr/share/vi/catalog/$$l.ISO_8859-1; \
185	done
186	ln -fs ru_SU.KOI8-R ${DESTDIR}/usr/share/vi/catalog/ru_RU.KOI8-R
187	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
188		${SRCDIR}/tcl_scripts/*.tcl \
189		${DESTDIR}/usr/share/vi/tcl
190	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 \
191		${SRCDIR}/perl_scripts/*.pl \
192		${DESTDIR}/usr/share/vi/perl
193.if defined(PERLINTERP)
194	${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 444 VI.pm \
195		${DESTDIR}/usr/share/vi/perl
196.endif
197
198.include <bsd.prog.mk>
199