1# 2# GNU Make and BSD Make compatible Makefile 3# This is the preferred way to build TLCI 4# 5 6CC?= cc 7 8# Enable this flag to print heap info after each gc pass 9# DEBUG= -D_TLCI_DEBUG_HEAP 10 11# Number of heap cells. You should not change this if you don't know 12# what you are doing. 13HEAP_CELLS?= 512 14 15CFLAGS+= -std=iso9899:1999 -pedantic -pedantic-errors \ 16 -Wall -Wextra -Werror \ 17 -Iinclude/ -D_XOPEN_SOURCE=600 $(DEBUG) \ 18 -DHEAP_CELL_COUNT=$(HEAP_CELLS) 19 20LIBS= -ly 21FLEX= flex 22YACC= yacc 23 24PREFIX?= /usr/local/ 25INSTALL?= install 26 27OBJS= \ 28 src/heap.o \ 29 src/tlci.o \ 30 src/string.o \ 31 src/evaluator.o 32 33.PHONY: all 34all: tlci 35 36.c.o: 37 $(CC) $(CFLAGS) -c $< -o $@ 38 39tlci: lex.yy.o y.tab.o $(OBJS) 40 $(CC) $(CFLAGS) lex.yy.o y.tab.o $(OBJS) -o tlci $(LIBS) 41 42lex.yy.o: src/lexer.l y.tab.h 43 $(FLEX) src/lexer.l 44 $(CC) $(CFLAGS) -c -Iinclude/ lex.yy.c 45 46y.tab.o y.tab.h: src/parser.y 47 $(YACC) -d src/parser.y 48 $(CC) $(CFLAGS) -c -Iinclude/ y.tab.c 49 50.PHONY: install 51install: all 52 $(INSTALL) -d $(DESTDIR)/$(PREFIX)/bin 53 $(INSTALL) -C ./tlci $(DESTDIR)/$(PREFIX)/bin 54 $(INSTALL) -d $(DESTDIR)/$(PREFIX)/man/man8 55 $(INSTALL) -C docs/tlci.8.gz $(DESTDIR)/$(PREFIX)/man/man8 56 57.PHONY: clean 58clean: 59 rm $(OBJS) lex.yy.o y.tab.o lex.yy.c y.tab.c y.tab.h tlci 60