Change new etags test to use UTF-8 encoding
[emacs.git] / test / etags / Makefile
blob3f4ad7b70350c16fa0eb83850539722d4d8d85e1
1 ADASRC=$(addprefix ./ada-src/,etags-test-for.ada 2ataspri.adb 2ataspri.ads waroquiers.ada)
2 ASRC=$(addprefix ./a-src/,empty.zz empty.zz.gz)
3 CSRC=$(addprefix ./c-src/,abbrev.c .//c.c torture.c getopt.h etags.c\
4 exit.c exit.strange_suffix sysdep.h tab.c dostorture.c\
5 emacs/src/gmalloc.c emacs/src/regex.h emacs/src/keyboard.c emacs/src/lisp.h\
6 machsyscalls.c machsyscalls.h fail.c a/b/b.c) ../etags/c-src/h.h
7 CPSRC=$(addprefix ./cp-src/,c.C burton.cpp burton.cpp\
8 functions.cpp MDiagArray2.h Range.h\
9 screen.cpp screen.hpp conway.cpp conway.hpp clheir.cpp.gz clheir.hpp.gz fail.C)
10 ELSRC=$(addprefix ./el-src/,TAGTEST.EL emacs/lisp/progmodes/etags.el)
11 ERLSRC=$(addprefix ./erl-src/,gs_dialog.erl)
12 FORTHSRC=$(addprefix ./forth-src/,test-forth.fth)
13 FSRC=$(addprefix ./f-src/,entry.for entry.strange_suffix entry.strange)
14 HTMLSRC=$(addprefix ./html-src/,softwarelibero.html index.shtml algrthms.html software.html)
15 #JAVASRC=$(addprefix ./java-src/, )
16 LUASRC=$(addprefix ./lua-src/,allegro.lua)
17 MAKESRC=$(addprefix ./make-src/,Makefile)
18 OBJCSRC=$(addprefix ./objc-src/,Subprocess.h Subprocess.m PackInsp.h PackInsp.m)
19 OBJCPPSRC=$(addprefix ./objcpp-src/,SimpleCalc.H SimpleCalc.M)
20 PASSRC=$(addprefix ./pas-src/,common.pas)
21 PERLSRC=$(addprefix ./perl-src/,htlmify-cystic yagrip.pl kai-test.pl)
22 PHPSRC=$(addprefix ./php-src/,lce_functions.php ptest.php sendmail.php)
23 PSSRC=$(addprefix ./ps-src/,rfc1245.ps)
24 PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog)
25 PYTSRC=$(addprefix ./pyt-src/,server.py)
26 TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex)
27 YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y)
28 SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\
29 ${FORTHSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC} ${OBJCSRC}\
30 ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC} ${PROLSRC} ${PYTSRC}\
31 ${TEXSRC} ${YSRC}
32 NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz
34 ETAGS_PROG=../../lib-src/etags
35 CTAGS_PROG=../../lib-src/ctags
37 REGEX=/[ \t]*DEFVAR_[A-Z_ \t\n(]+"\([^"]+\)"/
38 xx="this line is here because of a fontlock bug
40 RUN=
42 OPTIONS=--members --declarations --regex=@regexfile
43 ARGS=- < srclist
45 infiles = $(filter-out ${NONSRCS},${SRCS}) srclist regexfile
47 # This test requires a UTF-8 locale. Use the current locale if it is UTF-8,
48 # else $(UTF8_LOCALE) if it works, else skip this test.
49 UTF8_LOCALE = en_US.utf8
50 UTF8_ENCODING = yes
51 ifneq ($(shell locale -k charmap), charmap="UTF-8")
52 ifeq ($(shell LC_ALL=$(UTF8_LOCALE) locale -k charmap), charmap="UTF-8")
53 export LC_ALL = $(UTF8_LOCALE)
54 else
55 UTF8_ENCODING = no
56 endif
57 endif
59 .PHONY: check ediff_1 ediff_2 ediff_3 ediff_4 ediff_5 cdiff ETAGS CTAGS
61 check:
62 ifeq ($(UTF8_ENCODING), yes)
63 @$(MAKE) OPTIONS='--no-members' ediff_1
64 @$(MAKE) OPTIONS='--declarations --no-members' ediff_2
65 @$(MAKE) OPTIONS='--members' ediff_3
66 @$(MAKE) OPTIONS='--regex=@regexfile --no-members' ediff_4
67 @$(MAKE) OPTIONS='nonexistent --members --declarations --regex=@regexfile' ediff_5
68 @$(MAKE) cdiff
69 else
70 : 'No locale with UTF-8 found; skipping check'
71 endif
73 ediff%: ETAGS.good% ETAGS ${infiles}
74 diff -u --suppress-common-lines --width=80 ETAGS.good$* ETAGS
76 cdiff: CTAGS.good CTAGS ${infiles}
77 diff -u --suppress-common-lines --width=80 CTAGS.good CTAGS
79 ETAGS: ${infiles}
80 ${RUN} ${ETAGS_PROG} ${OPTIONS} -o $@ ${ARGS}
82 CTAGS: ${infiles}
83 ${RUN} ${CTAGS_PROG} -o $@ --regex=@regexfile ${ARGS}
85 srclist: Makefile
86 @for i in $(SRCS); do echo $$i; done > srclist
87 @echo "srclist remade"
89 regexfile: Makefile
90 @echo ' -- This is for GNU Emacs source files' > regexfile
91 @printf '%s\n' '${REGEX}' >> regexfile
92 @printf '%s\n' '{c}${REGEX}\\1/m' >> regexfile
93 @echo "regexfile remade"