1# $Id: Makefile.in,v 1.28 2021/08/08 22:39:34 tom Exp $
2# @(#) @Header: /home/daffy/u0/vern/flex/RCS/Makefile.in,v 1.45 96/09/10 16:59:04 vern Exp @ (LBL)
3
4@SET_MAKE@
5
6# Possible values for DEFS:
7#
8# By default, flex generates 8-bit scanners when using table compression,
9# and 7-bit scanners when using uncompressed tables (-f or -F options).
10# For flex to always generate 8-bit scanners, add "-DDEFAULT_CSIZE=256"
11# to DEFS.
12#
13# For Vax/VMS, add "-DVMS" to DEFS.
14#
15# For MS-DOS, add "-DMS_DOS" to DEFS.  See the directory MISC/MSDOS for
16# additional info.
17
18CFLAGS          = @CFLAGS@
19DEFS            = @DEFS@
20LDFLAGS         = @LDFLAGS@
21LIBS            = @LIBS@
22
23o		= .@OBJEXT@
24x		= @EXEEXT@
25
26# Installation targeting.  Files will be installed under the tree
27# rooted at prefix.  flex will be installed in bindir, libfl.a in
28# libdir, FlexLexer.h will be installed in includedir, and the manual
29# pages will be installed in mandir with extension manext.
30#
31# Raw, unformatted troff source will be installed if INSTALLMAN=man,
32# nroff preformatted versions will be installed if INSTALLMAN=cat.
33
34prefix          = @prefix@
35exec_prefix     = @exec_prefix@
36bindir          = @bindir@
37libdir          = @libdir@
38includedir      = @includedir@
39datarootdir     = @datarootdir@
40mandir          = @mandir@
41
42BINDIR		= $(DESTDIR)$(bindir)
43LIBDIR		= $(DESTDIR)$(libdir)
44INCLUDEDIR	= $(DESTDIR)$(includedir)
45MANDIR		= $(DESTDIR)$(mandir)
46
47manext          = 1
48mansubdir       = $(MANDIR)/man$(manext)
49
50transform       = @program_transform_name@
51
52# You can define these to be "lex" and "l" if you want to replace
53# lex at your site.
54PROGRAM_ROOT	= flex
55LIBRARY_ROOT	= fl
56
57FLEX            = $(PROGRAM_ROOT)$x
58FLEXLIB         = lib$(LIBRARY_ROOT).a
59
60actual_PROGRAM  = `echo $(PROGRAM_ROOT)| sed '$(transform)'`
61actual_LIBROOT  = `echo $(LIBRARY_ROOT)| sed '$(transform)'`
62actual_HEADER	= `echo FlexLexer|sed '$(transform)'`.h
63
64actual_LIBNAME  = lib$(actual_LIBROOT).a
65
66INSTALLMAN      = man
67
68SHELL           = /bin/sh
69srcdir          = @srcdir@
70VPATH           = @srcdir@
71
72LN_S            = @LN_S@
73YACC            = @YACC@
74CC              = @CC@
75AR              = @AR@
76ARFLAGS         = @ARFLAGS@
77RANLIB          = @RANLIB@
78INSTALL         = @INSTALL@
79INSTALL_DATA    = @INSTALL_DATA@
80INSTALL_PROGRAM = @INSTALL_PROGRAM@
81
82CTAGS		= @CTAGS@
83ETAGS		= @ETAGS@
84LINT		= @LINT@
85LINT_OPTS	= @LINT_OPTS@
86
87EXTRA_CFLAGS	= @EXTRA_CFLAGS@
88
89# You normally do not need to modify anything below this point.
90# ------------------------------------------------------------
91
92CPPFLAGS        = -I. -I$(srcdir) \
93		$(DEFS) @CPPFLAGS@ \
94		-DFLEXLEXER_HDR=\"$(actual_HEADER)\"
95
96.c$o:
97	@RULE_CC@
98	@ECHO_CC@$(CC) -c $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) $<
99
100HEADERS = flexdef.h version.h
101
102SOURCES = ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.y \
103	scan.l skel.c sym.c tblcmp.c yylex.c
104OBJECTS = ccl$o dfa$o ecs$o gen$o main$o misc$o nfa$o parse$o \
105	scan$o skel$o sym$o tblcmp$o yylex$o @ALLOCA@
106
107LIBSRCS = libmain.c libyywrap.c
108LIBOBJS = libmain$o libyywrap$o
109
110LINTSRCS = ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.c \
111	scan.c skel.c sym.c tblcmp.c yylex.c
112
113DISTFILES = README NEWS COPYING INSTALL FlexLexer.h \
114	configure.in conf.in Makefile.in mkskel.sh flex.skl \
115	$(HEADERS) $(SOURCES) $(LIBSRCS) MISC \
116	flex.1 scan.c install-sh configure
117
118DIST_NAME       = flex
119
120# which "flex" to use to generate scan.c from scan.l
121FLEX_EXEC       = ./$(FLEX)
122FLEX_FLAGS      = -t $(PERF_REPORT)
123COMPRESSION     =
124PERF_REPORT     = -p
125
126
127all: $(FLEX)
128
129$(FLEX): .bootstrap $(OBJECTS) $(FLEXLIB)
130	@ECHO_LD@$(CC) $(CFLAGS) -o $(FLEX) $(LDFLAGS) $(OBJECTS) $(FLEXLIB) $(LIBS)
131
132.bootstrap: initscan.c
133	@rm -f scan.c
134	cp $(srcdir)/initscan.c scan.c
135	touch .bootstrap
136
137parse.c: parse.y
138	$(YACC) -d $(srcdir)/parse.y
139	@sed '/extern char.*malloc/d' <y.tab.c >parse.tmp
140	@mv parse.tmp parse.c
141	@mv y.tab.h parse.h
142	@rm -f y.tab.c
143
144parse.h: parse.c
145
146scan.c: scan.l
147	$(SHELL) $(srcdir)/mkscan.sh $(FLEX_EXEC) $(FLEX_FLAGS) $(COMPRESSION) $(srcdir)/scan.l >scan.c
148
149scan$o: scan.c parse.h flexdef.h config.h
150yylex$o: yylex.c parse.h flexdef.h config.h
151
152skel.c: flex.skl mkskel.sh
153	$(SHELL) $(srcdir)/mkskel.sh $(srcdir)/flex.skl >skel.c
154
155main$o: main.c flexdef.h config.h version.h
156ccl$o: ccl.c flexdef.h config.h
157dfa$o: dfa.c flexdef.h config.h
158ecs$o: ecs.c flexdef.h config.h
159gen$o: gen.c flexdef.h config.h
160misc$o: misc.c flexdef.h config.h
161nfa$o: nfa.c flexdef.h config.h
162parse$o: parse.c flexdef.h config.h
163skel$o: skel.c flexdef.h config.h
164sym$o: sym.c flexdef.h config.h
165tblcmp$o: tblcmp.c flexdef.h config.h
166
167alloca$o: alloca.c
168	@SHOW_CC@$(CC) $(CPPFLAGS) $(CFLAGS) -c -Dxmalloc=yy_flex_xmalloc alloca.c
169
170alloca.c: $(srcdir)/MISC/alloca.c
171	@rm -f alloca.c
172	cp $(srcdir)/MISC/alloca.c .
173
174test: check
175check: $(FLEX)
176	$(SHELL) $(srcdir)/mkscan.sh $(FLEX_EXEC) $(FLEX_FLAGS) $(COMPRESSION) $(srcdir)/scan.l \
177	| diff scan.c -
178	@echo "Check successful, using COMPRESSION=\"$(COMPRESSION)\""
179
180bigcheck:
181	rm -f scan.c ; $(MAKE) COMPRESSION="-C" check
182	rm -f scan.c ; $(MAKE) COMPRESSION="-Ce" check
183	rm -f scan.c ; $(MAKE) COMPRESSION="-Cm" check
184	rm -f scan.c ; $(MAKE) COMPRESSION="-f" check
185	rm -f scan.c ; $(MAKE) COMPRESSION="-Cfea" check
186	rm -f scan.c ; $(MAKE) COMPRESSION="-CFer" check
187	rm -f scan.c ; $(MAKE) COMPRESSION="-l" PERF_REPORT="" check
188	rm -f scan.c ; $(MAKE)
189	@echo "All checks successful"
190
191$(FLEXLIB): $(LIBOBJS)
192	$(AR) $(ARFLAGS) $(FLEXLIB) $(LIBOBJS)
193	-$(RANLIB) $(FLEXLIB)
194
195$(FLEX).man: flex.1
196	cd $(srcdir) && nroff -man flex.1 >$(FLEX).man
197
198install: $(FLEX) $(FLEXLIB) installdirs install.$(INSTALLMAN)
199	$(INSTALL_PROGRAM) $(FLEX) $(BINDIR)/$(actual_PROGRAM)
200	@rm -f $(BINDIR)/$(actual_PROGRAM)++
201	cd $(BINDIR) && $(LN_S) $(actual_PROGRAM) $(actual_PROGRAM)++
202	$(INSTALL_DATA) $(FLEXLIB) $(LIBDIR)/$(actual_LIBNAME)
203	-cd $(LIBDIR) && $(RANLIB) $(actual_LIBNAME)
204	$(SHELL) $(srcdir)/rename.sh \
205		$(srcdir)/FlexLexer.h \
206		$(INCLUDEDIR)/$(actual_HEADER) \
207		$(actual_PROGRAM) \
208		$(actual_HEADER) \
209		$(actual_LIBROOT) \
210		$(INSTALL_DATA)
211
212install.man: flex.1
213	$(SHELL) $(srcdir)/rename.sh \
214		$(srcdir)/flex.1 \
215		$(mansubdir)/$(actual_PROGRAM).$(manext) \
216		$(actual_PROGRAM) \
217		$(actual_HEADER) \
218		$(actual_LIBROOT) \
219		$(INSTALL_DATA)
220	$(SHELL) -c "cd $(mansubdir) && $(LN_S) -f $(actual_PROGRAM).$(manext).gz $(actual_PROGRAM)++.$(manext).gz"
221
222install.cat: $(FLEX).man
223	$(SHELL) $(srcdir)/rename.sh \
224		$(srcdir)/flex.man \
225		$(mansubdir)/$(actual_PROGRAM).$(manext) \
226		$(actual_PROGRAM) \
227		$(actual_HEADER) \
228		$(actual_LIBROOT) \
229		$(INSTALL_DATA)
230
231$(BINDIR) :	; mkdir -p $@
232$(LIBDIR) :	; mkdir -p $@
233$(INCLUDEDIR) :	; mkdir -p $@
234$(mansubdir) :	; mkdir -p $@
235
236installdirs: $(BINDIR) $(LIBDIR) $(INCLUDEDIR) $(mansubdir)
237
238uninstall:
239	rm -f $(BINDIR)/$(actual_PROGRAM)
240	rm -f $(BINDIR)/$(actual_PROGRAM)++
241	rm -f $(LIBDIR)/$(actual_LIBNAME)
242	rm -f $(INCLUDEDIR)/$(actual_HEADER)
243	rm -f $(mansubdir)/$(actual_PROGRAM).$(manext)
244
245tags: $(SOURCES)
246	$(CTAGS) $(SOURCES)
247
248@MAKE_UPPER_TAGS@TAGS: $(SOURCES)
249@MAKE_UPPER_TAGS@	$(ETAGS) $(SOURCES)
250
251lint: $(LINTSRCS)
252	$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(LINTSRCS)
253
254mostlyclean ::
255	rm -f a.out *.bak core errs scan.tmp
256
257clean :: mostlyclean
258	rm -f flex parse.c parse.h *$o alloca.c lex.yy.c lex.yy.cc \
259		$(FLEXLIB) config.log config.cache
260
261distclean :: clean
262	rm -f .bootstrap $(FLEX) scan.c tags TAGS Makefile man2html.tmp \
263		config.status config.h stamp-h config.log config.cache
264
265maintainer-clean: distclean
266	@echo "This command is intended for maintainers to use;"
267	@echo "it deletes files that may require special tools to rebuild."
268	rm -f $(FLEX).man skel.c flex*.tar.gz flex*.tar.Z
269
270dist: $(FLEX) $(DISTFILES) parse.c parse.h $(srcdir)/$(FLEX).man
271	$(MAKE) DIST_NAME=flex-`sed <version.h 's/[^"]*"//' | sed 's/"//'` dist2
272
273dist2:
274	@rm -rf $(DIST_NAME)
275	@rm -f $(DIST_NAME).tar $(DIST_NAME).tar.Z $(DIST_NAME).tar.gz
276	@mkdir $(DIST_NAME)
277	tar cf - $(DISTFILES) | (cd $(DIST_NAME) && tar xfB -)
278	@mv $(DIST_NAME)/scan.c $(DIST_NAME)/initscan.c
279	@chmod 444 $(DIST_NAME)/initscan.c
280	@chmod +w $(DIST_NAME)/Makefile.in
281	@cp parse.c parse.h $(DIST_NAME)/MISC
282	@col -b <$(srcdir)/$(FLEX).man >$(DIST_NAME)/MISC/flex.man
283	tar chf $(DIST_NAME).tar $(DIST_NAME)
284	compress <$(DIST_NAME).tar >$(DIST_NAME).tar.Z
285	gzip <$(DIST_NAME).tar >$(DIST_NAME).tar.gz
286	@rm $(DIST_NAME).tar
287
288# For an explanation of the following Makefile rules, see node
289# `Automatic Remaking' in GNU Autoconf documentation.
290Makefile: $(srcdir)/Makefile.in config.status
291	CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
292config.status: configure
293	./config.status --recheck
294config.h: stamp-h
295stamp-h: conf.in config.status
296	CONFIG_FILES= CONFIG_HEADERS=config.h:conf.in ./config.status
297	echo timestamp >stamp-h
298# conf.in: stamp-h.in
299# stamp-h.in: configure.in acconfig.h
300# 	cd $(srcdir) && autoheader
301# 	config.h.in conf.in
302# 	cho timestamp > $(srcdir)/stamp-h.in
303
304# Tell versions [3.59,3.63) of GNU make not to export all variables.
305# Otherwise a system limit (for SysV at least) may be exceeded.
306.NOEXPORT:
307