-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
38 lines (29 loc) · 1.13 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
.SUFFIXES:
.SECONDARY:
.PHONY: all clean debug
BINARY := arXiv-fetcher
PACKAGES := glib-2.0 gtk+-3.0 gee-1.0 libsoup-2.4 libxml-2.0
VALAFILES := $(wildcard *.vala)
VAPIFILES := $(patsubst %.vala,%.vapi,$(VALAFILES))
VAPISTAMPS := $(addsuffix .stamp,$(VAPIFILES))
DEPFILES := $(patsubst %.vala,%.dep,$(VALAFILES))
DEPSTAMPS := $(addsuffix .stamp,$(DEPFILES))
OFILES := $(patsubst %.vala,%.o,$(VALAFILES))
CFILES := $(patsubst %.vala,%.c,$(VALAFILES))
PKGFLAGS := $(addprefix --pkg ,$(PACKAGES))
LIBS := `pkg-config $(PACKAGES) --libs` -lm
INCLUDES := `pkg-config $(PACKAGES) --cflags`
all: $(BINARY)
debug:
valac -g -X -w -X -lm $(PKGFLAGS) $(VALAFILES) -o $(BINARY)
arXiv-fetcher: $(OFILES)
gcc $(OFILES) -o $@ $(LIBS)
%.vapi.stamp: %.vala
valac --fast-vapi=$*.vapi $< && touch $@
%.dep.stamp: %.vala | $(VAPISTAMPS)
valac -C $(PKGFLAGS) --deps=$*.dep $(addprefix --use-fast-vapi=,$(patsubst $*.vapi,,$(VAPIFILES))) $< && touch $@
%.o: %.dep.stamp
gcc $(CFLAGS) -w $(INCLUDES) -o $@ -c $*.c
include $(wildcard *.dep)
clean:
$(RM) $(BINARY) $(VAPIFILES) $(VAPISTAMPS) $(OFILES) $(DEPFILES) $(DEPSTAMPS) $(CFILES)