blob: c8dee7616279a3a2a91c2fc104a1da46b14a53fa (
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
60
61
|
PROJ := elfucli
LIBRARIES := libelf
BUILDDIR := build
INCLUDEDIR := include
SRCDIR := src
EXE := $(BUILDDIR)/$(PROJ)
HEADERS := $(shell find $(INCLUDEDIR)/ -iname "*.h")
HEADERS += $(shell find $(SRCDIR)/ -iname "*.h")
SOURCES := $(shell find $(SRCDIR)/ -iname "*.c")
OBJS := $(patsubst %.c, $(BUILDDIR)/%.o, $(SOURCES))
INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR) $(SRCDIR)) $(shell pkg-config --cflags-only-I $(LIBRARIES))
CFLAGS := -g -Wall -pedantic -Wno-variadic-macros $(shell pkg-config --cflags-only-other $(LIBRARIES))
LDFLAGS := $(shell pkg-config --libs $(LIBRARIES))
.PHONY: default
default: $(EXE)
.PHONY: check
check: $(EXE)
$(error the re-layouting has broken make check for now, sorry.)
$(EXE) $(EXE) -o testexe
@cmp $(EXE) testexe
@rm testexe
@echo "Check successful."
.PHONY: debug
debug: $(EXE)
gdb $(EXE) $(shell ps -e | sed "s/^ *\([0-9]\+\) .*$(PROJ).*$$/\1/g;te;d;:e")
$(EXE): $(OBJS)
@if [ ! -d $(BUILDDIR) ] ; then echo "Error: Build dir '$(BUILDDIR)' does not exist." ; false ; fi
gcc -o $@ $^ $(LDFLAGS)
$(BUILDDIR)/$(SRCDIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
@if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
gcc $(INCLUDES) $(CFLAGS) -c -o $@ $<
.PHONY: clean
clean:
rm -f $(STATICLIB)
rm -f $(OBJS)
rm -f $(TESTEXES)
rm -rf $(BUILDDIR)/
.PHONY: distclean
distclean: clean
find . -xdev -name "*~" -exec rm {} \;
find . -xdev -name "core" -exec rm {} \;
|