/ 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