afb82a661bcc34367fe6933318281ec673a4741f
[YACASL2.git] / src / Makefile
1 CC ?= gcc
2 CFLAGS ?= -g -Wall -Wextra -I $(INCLUDE)
3 RMF ?= rm -f
4 WHICH ?= which
5 CTAGS ?= ctags
6 ETAGS ?= etags
7 SED ?= sed
8
9 INCLUDE := ../include
10
11 COMMONSRC := word.c cmem.c cerr.c
12 CASL2SRC := struct.c hash.c
13 ASSRC := assemble.c token.c label.c
14 EXECSRC := exec.c dump.c
15
16 .PHONY: all clean
17
18 all: ../casl2 ../comet2 ../dumpword ctags etags
19
20 ../casl2: casl2.o $(subst .c,.o,$(COMMONSRC) $(CASL2SRC) $(ASSRC) $(EXECSRC))
21         $(CC) $(CFLAGS) -o $@ $^
22         @$(RMF) *.d
23
24 ../comet2: comet2.o $(subst .c,.o,$(COMMONSRC) $(CASL2SRC) $(EXECSRC))
25         $(CC) $(CFLAGS) -o $@ $^
26         @$(RMF) *.d
27
28 ../dumpword: dumpword.o $(subst .c,.o,$(COMMONSRC))
29         $(CC) $(CFLAGS) -o $@ $^
30         @$(RMF) *.d
31
32 %.o: %.c
33         $(CC) -c $(CFLAGS) $<
34
35 %.d: %.c
36         @$(CC) -MM -I $(INCLUDE) $< | $(SED) 's/\($*\.o\):/\1 $@:/g' >$@
37
38 -include $(subst .c,.d,casl2.c comet2.c dumpword.c $(COMMONSRC) $(CASL2SRC) $(ASSRC) $(EXECSRC))
39
40 ctags: $(INCLUDE)/*.h *.c
41         @$(WHICH) $(CTAGS) >/dev/null && $(CTAGS) $^
42
43 etags: $(INCLUDE)/*.h *.c
44         @$(WHICH) $(ETAGS) >/dev/null && $(ETAGS) $^
45
46 clean: clean_cmd clean_build clean_tags
47
48 clean_cmd:
49         @$(RMF) ../casl2 ../comet2 ../dumpword
50
51 clean_build:
52         @$(RMF) *.o *.d
53
54 clean_tags:
55         @$(RMF) TAGS tags