aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: e5a0ae1a2e67780d3257ba23e2b2fb21fda397af (plain)
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
.PHONY: all clean

CC  := g++

OBJDIR = obj

CFLAGS  = -std=gnu++11 -pedantic -Wall -Wextra -Wno-reorder \
		  -ggdb -fPIC # \
		  # $(shell guile-config compile)
LDFLAGS = -fPIC # $(shell guile-config link)

H_FILES = $(wildcard *.h)
C_FILES = $(wildcard *.cpp)

SCM_C_FILES = $(wildcard *.scm.c)
X_FILES = $(SCM_C_FILES:.scm.cpp=.x)

.SECONDARY: $(X_FILES)

O_FILES = $(addprefix obj/,$(C_FILES:.cpp=.o))

all: parse libguile-calendar.so

parse: $(O_FILES)
	$(CC) -o $@ $^ $(LDFLAGS)

$(O_FILES): | $(OBJDIR)

%.x : %.scm.c
	guile-snarf -o $@ $< $(CFLAGS)

$(OBJDIR)/%.scm.o : %.scm.c %.x
	$(CC) -c $(CFLAGS) -o $@ $<

$(OBJDIR)/%.o : %.cpp # $(H_FILES) $(X_FILES)
	$(CC) -c $(CFLAGS) -o $@ $<

$(OBJDIR):
	mkdir -p $(OBJDIR)

libguile-calendar.so: $(O_FILES)
	$(CC) -shared -o $@ $^ $(LDFLAGS)

.SECONDARY += %.dot
%.dot: testcal/%.ics parse
	./parse $< -g $@

%.pdf: %.dot
	dot -Tpdf -o $@ $<

tags: $(C_FILES) $(H_FILES)
	ctags -R

clean:
	-rm parse
	-rm $(OBJDIR)/*.o
	-rmdir $(OBJDIR)
	-rm *.so
	-rm *.x