/ Makefile
Makefile
 1  # makefile for Kent Recursive Calculator
 2  # (BCPL version translated into C)
 3  
 4  #alternatives
 5  #PREFIX=/usr/local
 6  PREFIX=/usr
 7  
 8  BINDIR=$(PREFIX)/bin
 9  LIBDIR="$(PREFIX)/lib/krc"
10  MANDIR=$(PREFIX)/share/man/man1
11  
12  # To use alternate compilers, just go
13  #	CC=clang make clean all
14  
15  # To set the default number of cells, use
16  #	HEAPSIZE=1000000 make clean all
17  # KRC will take 2*2*sizeof(pointer) times this amount of RAM:
18  # 16MB on a 32-bit machine, 32MB on a 64-bit machine.
19  # If you have a desktop system, aim for half the physical RAM.
20  
21  HEAPSIZE?=128000		# Default heap size if unspecified
22  
23  # -fno-omit-frame-pointer is necessary when optimizing with gcc or clang
24  # otherwise it makes an extra register available to functions which is
25  # NOT saved by setjmp/longjmp, so the garbage collector fails to update
26  # its contents, causing heap corruption.
27  
28  # delete "-DLINENOISE" to remove line editing and command history,
29  # reduces code size from 75K to 63K
30  
31  CFLAGS+=-g -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast \
32  	-O2 -fno-omit-frame-pointer \
33   	-DLINENOISE \
34  	-DLIBDIR='$(LIBDIR)' -DHEAPSIZE=$(HEAPSIZE)
35  
36  SRCS= main.c reducer.c compiler.c lex.c listpack.c bcpl.c emas.c \
37        listhdr.h comphdr.h redhdr.h bcpl.h emas.h \
38        linenoise.h linenoise.c
39  OBJS= main.o reducer.o compiler.o lex.o listpack.o bcpl.o emas.o \
40        linenoise.o
41  
42  krc: $(OBJS)
43  	@$(CC) $(CFLAGS) -o $@ $(OBJS)
44  
45  listpack.o: listhdr.h bcpl.h
46  lex.o:      comphdr.h listhdr.h bcpl.h emas.h
47  compiler.o: comphdr.h listhdr.h bcpl.h
48  reducer.o:  redhdr.h comphdr.h listhdr.h bcpl.h
49  main.o:     redhdr.h comphdr.h listhdr.h bcpl.h emas.h revision
50  
51  linenoise.o: Makefile
52  main.o: Makefile
53  listpack.o: listhdr.h bcpl.h
54  
55  .c.o:
56  	@$(CC) $(CFLAGS) -c $<
57  
58  .c.s:
59  	@$(CC) $(CFLAGS) -S $<
60  
61  install: krc krclib/prelude krclib/lib1981 doc/krc.1
62  	install -d -m 755 $(BINDIR) $(LIBDIR) $(LIBDIR)/help $(MANDIR)
63  	install -s -m 755 krc $(BINDIR)
64  	install -c -m 644 krclib/prelude $(LIBDIR)
65  	install -c -m 644 krclib/lib1981 $(LIBDIR)
66  #	install -c -m 644 krclib/help/* $(LIBDIR)/help
67  	cp -P krclib/help/* $(LIBDIR)/help  #krclib/help contains symbolic links
68  	install -c -m 644 doc/krc.1 $(MANDIR)
69  
70  uninstall: 
71  	rm -rf $(BINDIR)/krc $(LIBDIR) $(MANDIR)/krc.1
72  
73  clean:
74  	@rm -f *.o *.s core
75  	make -C doc $@
76  
77  dist:
78  	version=1.0; \
79  	rm -rf krc-$$version; mkdir krc-$$version; \
80  	tar cpf - $$(git ls-files) | (cd krc-$$version && tar xfp -); \
81  	tar czf krc-$$version.tar.gz krc-$$version; \
82  	rm -f krc-$$version.zip; \
83  	zip -rq krc-$$version.zip krc-$$version; \
84  	md5sum krc-$$version.tar.gz krc-$$version.zip; \
85  	sha256sum krc-$$version.tar.gz krc-$$version.zip; \
86  	rm -rf krc-$$version