166 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# MAKEFILE FOR (STAND_ALONE) CEM PREPROCESSOR
 | 
						|
 | 
						|
EMHOME=../..
 | 
						|
MODULES=$(EMHOME)/modules
 | 
						|
MODULESLIB=$(MODULES)/lib
 | 
						|
BIN=$(EMHOME)/lib
 | 
						|
MANDIR=$(EMHOME)/man
 | 
						|
 | 
						|
# Some paths
 | 
						|
 | 
						|
# Libraries
 | 
						|
SYSLIB = $(MODULESLIB)/libsystem.a
 | 
						|
STRLIB = $(MODULESLIB)/libstring.a
 | 
						|
PRTLIB = $(MODULESLIB)/libprint.a
 | 
						|
ALLOCLIB = $(MODULESLIB)/liballoc.a
 | 
						|
ASSERTLIB = $(MODULESLIB)/libassert.a
 | 
						|
MALLOC = $(MODULESLIB)/malloc.o
 | 
						|
LIBS = $(PRTLIB) $(STRLIB) $(ALLOCLIB) $(MALLOC) $(ASSERTLIB) $(SYSLIB)
 | 
						|
LIB_INCLUDES = -I$(MODULES)/h -I$(MODULES)/pkg
 | 
						|
 | 
						|
# Where to install the preprocessor
 | 
						|
CEMPP = $(BIN)/cpp
 | 
						|
 | 
						|
# What C compiler to use and how
 | 
						|
CC = cc
 | 
						|
COPTIONS =
 | 
						|
LFLAGS = -n
 | 
						|
 | 
						|
# What parser generator to use and how
 | 
						|
GEN = $(EMHOME)/bin/LLgen
 | 
						|
GENOPTIONS =
 | 
						|
 | 
						|
# Special #defines during compilation
 | 
						|
CDEFS =	$(LIB_INCLUDES)
 | 
						|
CFLAGS = $(CDEFS) $(COPTIONS) -O#	# we cannot pass the COPTIONS to lint!
 | 
						|
 | 
						|
# Grammar files and their objects
 | 
						|
LSRC =	tokenfile.g expression.g
 | 
						|
LCSRC = tokenfile.c expression.c Lpars.c
 | 
						|
LOBJ =	tokenfile.o expression.o Lpars.o
 | 
						|
 | 
						|
# Objects of hand-written C files
 | 
						|
CSRC =	LLlex.c LLmessage.c ch7bin.c ch7mon.c domacro.c \
 | 
						|
	error.c idf.c init.c input.c main.c options.c \
 | 
						|
	preprocess.c replace.c scan.c skip.c tokenname.c next.c expr.c
 | 
						|
COBJ =	LLlex.o LLmessage.o ch7bin.o ch7mon.o domacro.o \
 | 
						|
	error.o idf.o init.o input.o main.o options.o \
 | 
						|
	preprocess.o replace.o scan.o skip.o tokenname.o next.o expr.o
 | 
						|
 | 
						|
PRFILES = Makefile Parameters \
 | 
						|
	make.hfiles make.tokcase make.tokfile LLlex.h bits.h file_info.h \
 | 
						|
	idf.h input.h interface.h macro.h \
 | 
						|
	class.h chtab.c char.tab expression.g $(CSRC)
 | 
						|
 | 
						|
# Objects of other generated C files
 | 
						|
GOBJ =	char.o symbol2str.o
 | 
						|
 | 
						|
# generated source files
 | 
						|
GSRC =	char.c symbol2str.c
 | 
						|
 | 
						|
# .h files generated by `make hfiles'; PLEASE KEEP THIS UP-TO-DATE!
 | 
						|
GHSRC =	errout.h idfsize.h ifdepth.h lapbuf.h \
 | 
						|
	maxincl.h nparams.h numsize.h obufsize.h \
 | 
						|
	parbufsize.h pathlength.h strsize.h textsize.h \
 | 
						|
	botch_free.h debug.h inputtype.h dobits.h
 | 
						|
 | 
						|
# Other generated files, for 'make clean' only
 | 
						|
GENERATED = tokenfile.g Lpars.h LLfiles LL.output lint.out \
 | 
						|
	Xref hfiles cfiles charoffset.h
 | 
						|
 | 
						|
all:	cc
 | 
						|
 | 
						|
cc:	hfiles LLfiles
 | 
						|
	make "EMHOME="$(EMHOME) cpp
 | 
						|
 | 
						|
hfiles: Parameters char.c charoffset.h
 | 
						|
	./make.hfiles Parameters
 | 
						|
	@touch hfiles
 | 
						|
 | 
						|
charoffset.h char.c:	chtab char.tab
 | 
						|
	chtab -fchar.tab > char.c
 | 
						|
 | 
						|
LLfiles: $(LSRC)
 | 
						|
	$(GEN) $(GENOPTIONS) $(LSRC)
 | 
						|
	@touch LLfiles
 | 
						|
 | 
						|
tokenfile.g:	tokenname.c make.tokfile
 | 
						|
	<tokenname.c ./make.tokfile >tokenfile.g
 | 
						|
 | 
						|
symbol2str.c:	tokenname.c make.tokcase
 | 
						|
	<tokenname.c ./make.tokcase >symbol2str.c
 | 
						|
 | 
						|
chtab:	chtab.o
 | 
						|
	$(CC) -o chtab chtab.o
 | 
						|
 | 
						|
# Objects needed for 'cpp'
 | 
						|
OBJ =	$(COBJ) $(LOBJ) $(GOBJ)
 | 
						|
SRC =	$(CSRC) $(LCSRC) $(GSRC)
 | 
						|
 | 
						|
cpp:	$(OBJ) Makefile
 | 
						|
	$(CC) $(COPTIONS) $(LFLAGS) $(OBJ) $(LIBS) -o cpp 
 | 
						|
	size cpp
 | 
						|
 | 
						|
cfiles: hfiles LLfiles $(GSRC)
 | 
						|
	@touch cfiles
 | 
						|
 | 
						|
install: all
 | 
						|
	rm -f $(CEMPP)
 | 
						|
	cp cpp $(CEMPP)
 | 
						|
	rm -f $(MANDIR)/cpp.6
 | 
						|
	cp cpp.6 $(MANDIR)/cpp.6
 | 
						|
 | 
						|
cmp:	all
 | 
						|
	-cmp cpp $(CEMPP)
 | 
						|
	-cmp cpp.6 $(MANDIR)/cpp.6
 | 
						|
 | 
						|
pr: 
 | 
						|
	@pr $(PRFILES)
 | 
						|
 | 
						|
opr:
 | 
						|
	make pr | opr
 | 
						|
 | 
						|
tags:	cfiles
 | 
						|
	ctags $(SRC)
 | 
						|
 | 
						|
depend:	cfiles
 | 
						|
	sed '/^#AUTOAUTO/,$$d' Makefile >Makefile.new
 | 
						|
	echo '#AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO' >>Makefile.new
 | 
						|
	$(EMHOME)/bin/mkdep $(SRC) | \
 | 
						|
		sed 's/\.c:/.o:/' >>Makefile.new
 | 
						|
	mv Makefile Makefile.old
 | 
						|
	mv Makefile.new Makefile
 | 
						|
	
 | 
						|
xref:
 | 
						|
	ctags -x `grep "\.[ch]" Files`|sed "s/).*/)/">Xref
 | 
						|
	
 | 
						|
lint:	cfiles
 | 
						|
	lint -bx $(CDEFS) $(SRC) >lint.out
 | 
						|
 | 
						|
clean:
 | 
						|
	rm -f $(LCSRC) $(OBJ) $(GENERATED) $(GSRC) $(GHSRC) chtab.o chtab cpp Out
 | 
						|
 | 
						|
#AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO
 | 
						|
LLlex.o: LLlex.h Lpars.h bits.h charoffset.h class.h dobits.h file_info.h idf.h idfsize.h input.h inputtype.h numsize.h strsize.h
 | 
						|
LLmessage.o: LLlex.h Lpars.h file_info.h
 | 
						|
ch7bin.o: Lpars.h
 | 
						|
ch7mon.o: Lpars.h
 | 
						|
domacro.o: LLlex.h Lpars.h bits.h botch_free.h charoffset.h class.h debug.h dobits.h file_info.h idf.h idfsize.h ifdepth.h input.h inputtype.h interface.h macro.h nparams.h parbufsize.h textsize.h
 | 
						|
error.o: LLlex.h errout.h file_info.h
 | 
						|
idf.o: idf.h
 | 
						|
init.o: charoffset.h class.h idf.h interface.h macro.h
 | 
						|
input.o: file_info.h input.h inputtype.h
 | 
						|
main.o: file_info.h idfsize.h
 | 
						|
options.o: charoffset.h class.h idf.h idfsize.h macro.h maxincl.h
 | 
						|
preprocess.o: LLlex.h bits.h charoffset.h class.h dobits.h file_info.h idf.h idfsize.h input.h inputtype.h line_prefix.h maxincl.h obufsize.h
 | 
						|
replace.o: LLlex.h charoffset.h class.h debug.h file_info.h idf.h input.h inputtype.h interface.h macro.h pathlength.h textsize.h
 | 
						|
scan.o: charoffset.h class.h idf.h input.h inputtype.h interface.h lapbuf.h macro.h nparams.h
 | 
						|
skip.o: LLlex.h charoffset.h class.h file_info.h input.h inputtype.h
 | 
						|
tokenname.o: LLlex.h Lpars.h file_info.h idf.h
 | 
						|
next.o: debug.h
 | 
						|
expr.o: Lpars.h
 | 
						|
tokenfile.o: Lpars.h
 | 
						|
expression.o: LLlex.h Lpars.h file_info.h
 | 
						|
Lpars.o: Lpars.h
 | 
						|
char.o: charoffset.h class.h
 | 
						|
symbol2str.o: Lpars.h
 |