-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
65 lines (49 loc) · 1.29 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#
# Makefile
#
# Author : Finn Rayment <[email protected]>
# Date created : 21/07/2022
#
# edit this to change the file location for `make install' and `make uninstall'
PREFIX=/usr/local
DEBUG?=0
VERSION:=1.2.0
BINARY:=calc
CC:=gcc
LEX:=lex
YACC:=yacc
CCFLAGS:=--std=c99
CXXFLAGS:=-Wall -Wextra -Wpedantic -Werror --pedantic-errors \
-DVERSION=\"${VERSION}\" -D_POSIX_C_SOURCE=2 \
-Wno-unused-function
LEXFLAGS:=
YACCFLAGS:=-d
LDFLAGS:=-lm -lreadline
ifeq ($(DEBUG),1)
CXXFLAGS+=-ggdb -DDEBUG=1 -DYYDEBUG
YACCFLAGS+=-v -Wcounterexamples
else
CXXFLAGS+=-O3
endif
CSOURCES:=main.c lex.yy.c y.tab.c
DISTFILES:=README INSTALL CHANGES COPYING Makefile main.c lex.l parse.y incl.h
all: clean lex yacc
$(CC) $(CCFLAGS) $(CXXFLAGS) $(CSOURCES) $(LDFLAGS) -o $(BINARY)
lex:
$(LEX) -t $(LEXFLAGS) lex.l > lex.yy.c
yacc:
$(YACC) $(YACCFLAGS) parse.y -o y.tab.c
dist:
rm -rf $(BINARY)-$(VERSION)
mkdir -p $(BINARY)-$(VERSION)
cp -R $(DISTFILES) $(DISTDIRS) $(BINARY)-$(VERSION)
tar -cJf $(BINARY)-$(VERSION).tar.xz $(BINARY)-$(VERSION)
rm -rf $(BINARY)-$(VERSION)
install:
install -d $(PREFIX)/bin
install -m 755 $(BINARY) $(PREFIX)/bin/$(BINARY)
uninstall:
rm $(PREFIX)/bin/$(BINARY)
clean:
rm -f $(BINARY) lex.yy.c y.tab.c y.tab.h y.output
.PHONY: all lex yacc dist install uninstall clean