113547Sjulian# /****************************************************************
213547Sjulian# Copyright (C) Lucent Technologies 1997
335025Sjb# All Rights Reserved
413547Sjulian#
513547Sjulian# Permission to use, copy, modify, and distribute this software and
613547Sjulian# its documentation for any purpose and without fee is hereby
713547Sjulian# granted, provided that the above copyright notice appear in all
813547Sjulian# copies and that both that the copyright notice and this
913547Sjulian# permission notice and warranty disclaimer appear in supporting
1013547Sjulian# documentation, and that the name Lucent Technologies or any of
1113547Sjulian# its entities not be used in advertising or publicity pertaining
1213547Sjulian# to distribution of the software without specific, written prior
1313547Sjulian# permission.
1413547Sjulian#
1513547Sjulian# LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1613547Sjulian# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
1713547Sjulian# IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
1813547Sjulian# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1913547Sjulian# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
2013547Sjulian# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
2113547Sjulian# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
2213547Sjulian# THIS SOFTWARE.
2313547Sjulian# ****************************************************************/
2413547Sjulian
2513547SjulianCFLAGS = -fsanitize=address -O1 -g -fno-omit-frame-pointer -fno-optimize-sibling-calls
2613547SjulianCFLAGS = -g
2713547SjulianCFLAGS =
2813547SjulianCFLAGS = -O2
2913547Sjulian
3013547Sjulian# compiler options
3113547Sjulian#CC = cc -Wall -g -Wwrite-strings
3213547Sjulian#CC = cc -O4 -Wall -pedantic -fno-strict-aliasing
3350473Speter#CC = cc -fprofile-arcs -ftest-coverage # then gcov f1.c; cat f1.c.gcov
3413547SjulianHOSTCC = cc -g -Wall -pedantic -Wcast-qual
3513547SjulianCC = $(HOSTCC)  # change this is cross-compiling.
3613547Sjulian
3713547Sjulian# By fiat, to make our lives easier, yacc is now defined to be bison.
3813547Sjulian# If you want something else, you're on your own.
3913547SjulianYACC = bison -d
4013547Sjulian
4113547SjulianOFILES = b.o main.o parse.o proctab.o tran.o lib.o run.o lex.o
4213547Sjulian
4313547SjulianSOURCE = awk.h awkgram.tab.c awkgram.tab.h proto.h awkgram.y lex.c b.c main.c \
4417706Sjulian	maketab.c parse.c lib.c run.c tran.c proctab.c
4517706Sjulian
4644965SjbLISTING = awk.h proto.h awkgram.y lex.c b.c main.c maketab.c parse.c \
4713547Sjulian	lib.c run.c tran.c
4813547Sjulian
4917706SjulianSHIP = README LICENSE FIXES $(SOURCE) awkgram.tab.[ch].bak makefile  \
5013547Sjulian	 awk.1
5117706Sjulian
5217706Sjuliana.out:	awkgram.tab.o $(OFILES)
5317706Sjulian	$(CC) $(CFLAGS) awkgram.tab.o $(OFILES) $(ALLOC)  -lm
5417706Sjulian
5513547Sjulian$(OFILES):	awk.h awkgram.tab.h proto.h
5613547Sjulian
5722315Sjulianawkgram.tab.c awkgram.tab.h:	awk.h proto.h awkgram.y
5822315Sjulian	$(YACC) $(YFLAGS) awkgram.y
5922315Sjulian
6022315Sjulianproctab.c:	maketab
6122315Sjulian	./maketab awkgram.tab.h >proctab.c
6222315Sjulian
6322315Sjulianmaketab:	awkgram.tab.h maketab.c
6422315Sjulian	$(HOSTCC) $(CFLAGS) maketab.c -o maketab
6522315Sjulian
6622315Sjulianbundle:
6722315Sjulian	@cp awkgram.tab.h awkgram.tab.h.bak
6822315Sjulian	@cp awkgram.tab.c awkgram.tab.c.bak
6922315Sjulian	@bundle $(SHIP)
7038919Salex
7138919Salextar:
7238919Salex	@cp awkgram.tab.h awkgram.tab.h.bak
7338919Salex	@cp awkgram.tab.c awkgram.tab.c.bak
7438919Salex	@bundle $(SHIP) >awk.shar
7538919Salex	@tar cf awk.tar $(SHIP)
7653812Salfred	gzip awk.tar
7753812Salfred	ls -l awk.tar.gz
7853812Salfred	@zip awk.zip $(SHIP)
7953812Salfred	ls -l awk.zip
8053812Salfred
8153812Salfredgitadd:
8253812Salfred	git add README LICENSE FIXES \
8353812Salfred           awk.h proto.h awkgram.y lex.c b.c main.c maketab.c parse.c \
8453812Salfred	   lib.c run.c tran.c \
8517706Sjulian	   makefile awk.1 testdir
8617706Sjulian
8717706Sjuliangitpush:
8813547Sjulian	# only do this once:
8917706Sjulian	# git remote add origin https://github.com/onetrueawk/awk.git
9017706Sjulian	git push -u origin master
9117706Sjulian
9217706Sjuliannames:
9317706Sjulian	@echo $(LISTING)
9417706Sjulian
9517706Sjuliantest check:
9638919Salex	./REGRESS
9738919Salex
9813547Sjulianclean: testclean
9913547Sjulian	rm -f a.out *.o *.obj maketab maketab.exe *.bb *.bbg *.da *.gcov *.gcno *.gcda # proctab.c
10017706Sjulian
10117706Sjuliancleaner: testclean
10217706Sjulian	rm -f a.out *.o *.obj maketab maketab.exe *.bb *.bbg *.da *.gcov *.gcno *.gcda proctab.c awkgram.tab.*
10317706Sjulian
10417706Sjulian# This is a bit of a band-aid until we can invest some more time
10513547Sjulian# in the test suite.
10617706Sjuliantestclean:
10717706Sjulian	cd testdir; rm -fr arnold-fixes beebe devnull echo foo* \
10817706Sjulian		glop glop1 glop2 lilly.diff tempbig tempsmall time
10917706Sjulian
11017706Sjulian# For the habits of GNU maintainers:
11117706Sjuliandistclean: cleaner
11217706Sjulian