250 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
	
		
			5.5 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 =
 | 
						|
LDFLAGS = -i
 | 
						|
 | 
						|
# 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 Version.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 Version.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 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 \
 | 
						|
	nparams.h numsize.h obufsize.h \
 | 
						|
	parbufsize.h pathlength.h strsize.h textsize.h \
 | 
						|
	botch_free.h debug.h inputtype.h dobits.h line_prefix.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:	char.tab
 | 
						|
	$(EMHOME)/bin/tabgen -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
 | 
						|
 | 
						|
# Objects needed for 'cpp'
 | 
						|
OBJ =	$(COBJ) $(LOBJ) $(GOBJ)
 | 
						|
SRC =	$(CSRC) $(LCSRC) $(GSRC)
 | 
						|
 | 
						|
cpp:	$(OBJ) Makefile
 | 
						|
	$(CC) $(COPTIONS) $(LDFLAGS) $(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) cpp Out
 | 
						|
 | 
						|
#AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO
 | 
						|
LLlex.o: LLlex.h
 | 
						|
LLlex.o: Lpars.h
 | 
						|
LLlex.o: bits.h
 | 
						|
LLlex.o: charoffset.h
 | 
						|
LLlex.o: class.h
 | 
						|
LLlex.o: dobits.h
 | 
						|
LLlex.o: file_info.h
 | 
						|
LLlex.o: idf.h
 | 
						|
LLlex.o: idfsize.h
 | 
						|
LLlex.o: input.h
 | 
						|
LLlex.o: inputtype.h
 | 
						|
LLlex.o: numsize.h
 | 
						|
LLlex.o: strsize.h
 | 
						|
LLmessage.o: LLlex.h
 | 
						|
LLmessage.o: Lpars.h
 | 
						|
LLmessage.o: file_info.h
 | 
						|
ch7bin.o: Lpars.h
 | 
						|
ch7mon.o: Lpars.h
 | 
						|
domacro.o: LLlex.h
 | 
						|
domacro.o: Lpars.h
 | 
						|
domacro.o: bits.h
 | 
						|
domacro.o: botch_free.h
 | 
						|
domacro.o: charoffset.h
 | 
						|
domacro.o: class.h
 | 
						|
domacro.o: debug.h
 | 
						|
domacro.o: dobits.h
 | 
						|
domacro.o: file_info.h
 | 
						|
domacro.o: idf.h
 | 
						|
domacro.o: idfsize.h
 | 
						|
domacro.o: ifdepth.h
 | 
						|
domacro.o: input.h
 | 
						|
domacro.o: inputtype.h
 | 
						|
domacro.o: interface.h
 | 
						|
domacro.o: macro.h
 | 
						|
domacro.o: nparams.h
 | 
						|
domacro.o: parbufsize.h
 | 
						|
domacro.o: textsize.h
 | 
						|
error.o: LLlex.h
 | 
						|
error.o: errout.h
 | 
						|
error.o: file_info.h
 | 
						|
idf.o: idf.h
 | 
						|
init.o: charoffset.h
 | 
						|
init.o: class.h
 | 
						|
init.o: idf.h
 | 
						|
init.o: interface.h
 | 
						|
init.o: macro.h
 | 
						|
input.o: file_info.h
 | 
						|
input.o: input.h
 | 
						|
input.o: inputtype.h
 | 
						|
main.o: file_info.h
 | 
						|
main.o: idfsize.h
 | 
						|
options.o: charoffset.h
 | 
						|
options.o: class.h
 | 
						|
options.o: idf.h
 | 
						|
options.o: idfsize.h
 | 
						|
options.o: macro.h
 | 
						|
preprocess.o: LLlex.h
 | 
						|
preprocess.o: bits.h
 | 
						|
preprocess.o: charoffset.h
 | 
						|
preprocess.o: class.h
 | 
						|
preprocess.o: dobits.h
 | 
						|
preprocess.o: file_info.h
 | 
						|
preprocess.o: idf.h
 | 
						|
preprocess.o: idfsize.h
 | 
						|
preprocess.o: input.h
 | 
						|
preprocess.o: inputtype.h
 | 
						|
preprocess.o: line_prefix.h
 | 
						|
preprocess.o: obufsize.h
 | 
						|
replace.o: LLlex.h
 | 
						|
replace.o: charoffset.h
 | 
						|
replace.o: class.h
 | 
						|
replace.o: debug.h
 | 
						|
replace.o: file_info.h
 | 
						|
replace.o: idf.h
 | 
						|
replace.o: input.h
 | 
						|
replace.o: inputtype.h
 | 
						|
replace.o: interface.h
 | 
						|
replace.o: macro.h
 | 
						|
replace.o: pathlength.h
 | 
						|
replace.o: textsize.h
 | 
						|
scan.o: charoffset.h
 | 
						|
scan.o: class.h
 | 
						|
scan.o: file_info.h
 | 
						|
scan.o: idf.h
 | 
						|
scan.o: input.h
 | 
						|
scan.o: inputtype.h
 | 
						|
scan.o: interface.h
 | 
						|
scan.o: lapbuf.h
 | 
						|
scan.o: macro.h
 | 
						|
scan.o: nparams.h
 | 
						|
skip.o: LLlex.h
 | 
						|
skip.o: charoffset.h
 | 
						|
skip.o: class.h
 | 
						|
skip.o: file_info.h
 | 
						|
skip.o: input.h
 | 
						|
skip.o: inputtype.h
 | 
						|
tokenname.o: LLlex.h
 | 
						|
tokenname.o: Lpars.h
 | 
						|
tokenname.o: file_info.h
 | 
						|
tokenname.o: idf.h
 | 
						|
next.o: debug.h
 | 
						|
expr.o: Lpars.h
 | 
						|
tokenfile.o: Lpars.h
 | 
						|
expression.o: LLlex.h
 | 
						|
expression.o: Lpars.h
 | 
						|
expression.o: file_info.h
 | 
						|
Lpars.o: Lpars.h
 | 
						|
char.o: charoffset.h
 | 
						|
char.o: class.h
 | 
						|
symbol2str.o: Lpars.h
 |