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 9SRCDIR= ${.CURDIR}/../../contrib/nvi 10CONTRIBDIR= ${SRCDIR} 11WARNS?= 0 12 13.if defined(RELEASE_CRUNCH) 14# When building `vi' for the fixit floppy, don't include any of the 15# API stuff. 16APISTUFF= 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 24APISTUFF= ex_tcl.c ex_perl.c 25 26.if defined(PERLINTERP) 27PERL?= /usr/bin/perl5 28CFLAGS+= -DHAVE_PERL_5_003_01 # If perl >= 5.03.01 29.endif 30 31.endif 32 33CFLAGS+= -DGTAGS 34 35#if using ncurses: 36CFLAGS+= -DSYSV_CURSES 37 38VI= nvi 39EX= nex 40VIEW= nview 41 42PROG= nvi 43 44LINKS= ${BINDIR}/${VI} ${BINDIR}/${EX} ${BINDIR}/${VI} ${BINDIR}/${VIEW} 45LINKS+= ${BINDIR}/${VI} ${BINDIR}/vi ${BINDIR}/${EX} ${BINDIR}/ex 46LINKS+= ${BINDIR}/${VI} ${BINDIR}/view 47 48MAN= ${SRCDIR}/docs/USD.doc/vi.man/vi.1 49MLINKS+=vi.1 ex.1 vi.1 view.1 50MLINKS+=vi.1 nex.1 vi.1 nview.1 vi.1 nvi.1 51 52CATALOGS= dutch english french german polish ru_SU.KOI8-R spanish swedish \ 53 uk_UA.KOI8-U 54NLLINKS= nl_NL 55ENLINKS= en_AU en_CA en_GB en_US 56FRLINKS= fr_BE fr_CA fr_CH fr_FR 57DELINKS= de_AT de_CH de_DE 58ESLINKS= es_ES 59SVLINKS= sv_SE 60PLLINKS= pl_PL 61 62.PATH: ${SRCDIR}/common 63.PATH: ${SRCDIR}/ex 64.PATH: ${SRCDIR}/cl 65.PATH: ${SRCDIR}/vi 66 67CFLAGS+=-I${.CURDIR} -I${SRCDIR} -I${SRCDIR}/include -I${SRCDIR}/vi 68 69.if !defined(TKNVI) 70DPADD+= ${LIBNCURSES} 71LDADD+= -lncurses 72 73.else 74 75.PATH: ${SRCDIR}/tk 76LDADD+= -L/usr/local/lib -L/usr/X11R6/lib -ltk41 -lX11 77CFLAGS+= -I/usr/local/include -I/usr/X11R6/include 78.endif 79 80.if defined(TCLINTERP) 81.PATH: ${SRCDIR}/tcl_api 82DPADD+= ${LIBTCL} ${LIBM} 83LDADD+= -ltcl -lm 84CFLAGS+= -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... 91PERLLIB!= ${PERL} -MConfig -e 'print $$Config{privlib}' 92PERLCPPFLAGS!= cd ${SRCDIR}/build; ${PERL} -MExtUtils::Embed -e 'ccflags;perl_inc' 93PERLLIBS!= cd ${SRCDIR}/build; ${PERL} -MExtUtils::Embed -e 'ldopts' 94PERLLDFLAGS!= cd ${SRCDIR}/build; ${PERL} -MExtUtils::Embed -e 'ccdlflags' 95 96LDADD+= ${PERLLDFLAGS} ${PERLLIBS} 97CFLAGS+= -DHAVE_PERL_INTERP ${PERLCPPFLAGS} 98 99.endif 100 101CLEANFILES+=${EX} 102 103# Vi curses sources 104.if !defined(TKNVI) 105SRCS+= 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) 110SRCS+= 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) 115SRCS+= api.c 116.endif 117.if defined(TCLINTERP) 118SRCS+= tcl.c 119.endif 120.if defined(PERLINTERP) 121# perl.c is generated 122SRCS+= perl.c perlsfio.c 123.endif 124 125# General sources. 126SRCS+= 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. 130SRCS+= 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. 141SRCS+= 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. 148SRCS+= 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) 152perl.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 159CLEANFILES+= VI.pm perl.c 160.endif 161 162# unifdef has some *weird* exit codes, sigh! RTFM unifdef(1)... 163ex_notcl.c: ex_tcl.c 164 -unifdef -UHAVE_TCL_INTERP ${SRCDIR}/ex/ex_tcl.c > ${.TARGET} 165 166ex_noperl.c: ex_perl.c 167 -unifdef -UHAVE_PERL_INTERP ${SRCDIR}/ex/ex_perl.c > ${.TARGET} 168 169v_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 172ex_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 175CLEANFILES+= ex_notcl.c ex_noperl.c 176 177afterinstall: 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> 240