Use explicit libelf/* path in includes
[centaur.git] / Makefile
1 PROJ := elfedit
2
3 BUILDDIR   := build
4 INCLUDEDIR := include
5 SRCDIR     := src
6
7 EXE     := $(BUILDDIR)/$(PROJ)
8 HEADERS := $(shell find $(INCLUDEDIR)/ -iname "*.h")
9 HEADERS += $(shell find $(SRCDIR)/ -iname "*.h")
10
11 SOURCES := $(shell find $(SRCDIR)/ -iname "*.c")
12 OBJS    := $(patsubst %.c, $(BUILDDIR)/%.o, $(SOURCES))
13
14 INCLUDES := $(patsubst %, -I%, $(INCLUDEDIR) $(SRCDIR))
15 CFLAGS   := -g -Wall
16 LDFLAGS  := -lelf
17
18
19
20 .PHONY: default
21 default: $(EXE)
22
23
24 .PHONY: check
25 check: $(EXE)
26         $(EXE) $(EXE) -o testexe
27         @cmp $(EXE) testexe
28         @rm testexe
29         @echo "Check successful."
30
31
32 .PHONY: debug
33 debug: $(EXE)
34         gdb $(EXE) $(shell ps -e | sed "s/^ *\([0-9]\+\) .*$(PROJ).*$$/\1/g;te;d;:e")
35
36
37 $(EXE): $(OBJS)
38         @if [ ! -d $(BUILDDIR) ] ; then echo "Error: Build dir '$(BUILDDIR)' does not exist." ; false ; fi
39         gcc -o $@ $^ $(LDFLAGS)
40
41
42 $(BUILDDIR)/$(SRCDIR)/%.o: $(SRCDIR)/%.c $(HEADERS)
43         @if [ ! -d $(dir $@) ] ; then mkdir -p $(dir $@) ; fi
44         gcc $(INCLUDES) $(CFLAGS) -c -o $@ $<
45
46
47 .PHONY: clean
48 clean:
49         rm -f $(STATICLIB)
50         rm -f $(OBJS)
51         rm -f $(TESTEXES)
52         rm -rf $(BUILDDIR)/
53
54
55 .PHONY: distclean
56 distclean: clean
57         find . -xdev -name "*~" -exec rm {} \;
58         find . -xdev -name "core" -exec rm {} \;