-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
84 lines (60 loc) · 1.94 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
TARGET = control_node_serial_interface
CC ?= gcc
# VERB = 1
# VERB = 1
quiet-cmd = $(if $(VERB),$1,$(if $(2),@echo $2 && $1, @$1))
WARNINGS += -Werror
WARNINGS += -Wall -Wextra
WARNINGS += -Wpointer-arith -Wbad-function-cast
WARNINGS += -Wcast-align -Waggregate-return -Wmissing-prototypes
WARNINGS += -Wmissing-declarations
# COV = -fprofile-arcs -ftest-coverage
# PROF = -pg
DEP_RULES = -MMD -MD -MF $(OBJDIR)/$*.d
ifeq (1, $(DEBUG))
CFLAGS += -DDEBUG=1
endif
ifeq ($(findstring arm,$(shell uname -m)), arm )
CFLAGS += -std=c99 -g -O3 -fstrict-aliasing
else
CFLAGS += -std=c99 -g -O1 -fstrict-aliasing
endif
CFLAGS += $(WARNINGS) $(COV) $(PROF) $(DEP_RULES) $(LIBS) -pthread
# Define Feature Macros
CFLAGS += -D_POSIX_C_SOURCE=200809L
CFLAGS += -D_DEFAULT_SOURCE
CFLAGS += -D_BSD_SOURCE # Keep _BSD_SOURCE for wheezy CI server libc6-2.13
OMLFLAGS = -Wl,-rpath,/usr/local/lib -loml2 -locomm
LDFLAGS += $(CFLAGS) -lpthread $(OMLFLAGS)
SRCS = $(wildcard $(SRCDIR)/*.c)
OBJS = $(SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
DEPS = $(SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.d)
SRCDIR = src
OBJDIR = obj
.PHONY: all clean realclean run test tests
.DEFAULT: all
all: $(OBJDIR) $(TARGET)
run: all
./$(TARGET)
tests: test
test: all
make -C tests --no-print-directory run
coverage: all
make -C tests --no-print-directory coverage
.PHONY: $(SRCDIR)/control_node_measures_oml.h
$(SRCDIR)/control_node_measures_oml.h:
make -C $(SRCDIR) control_node_measures_oml.h
$(TARGET): $(SRCDIR)/control_node_measures_oml.h $(OBJS)
$(call quiet-cmd, $(CC) -o $@ $^ $(LDFLAGS), " LD $@")
$(OBJDIR)/%.o : $(SRCDIR)/%.c Makefile
$(call quiet-cmd, $(CC) -c $(CFLAGS) $< -o $@, " CC $@")
$(OBJDIR):
$(call quiet-cmd, mkdir -p $(@),)
clean:
rm -rf $(OBJDIR)/*
make -C tests --no-print-directory clean
realclean: clean
rm -rf $(TARGET)
rm -rf $(OBJDIR)
make -C tests --no-print-directory realclean
-include $(DEPS)