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