libamxrt  0.4.2
Ambiorix Run Time Library
makefile
Go to the documentation of this file.
1 -include $(STAGINGDIR)/components.config
2 include ../makefile.inc
3 
4 # build destination directories
5 OBJDIR = ../output/$(MACHINE)
6 
7 # TARGETS
8 TARGET_SO = $(OBJDIR)/$(COMPONENT).so.$(VERSION)
9 TARGET_A = $(OBJDIR)/$(COMPONENT).a
10 
11 # directories
12 # source directories
13 SRCDIR = .
14 INCDIR_PUB = ../include
15 INCDIR_PRIV = ../include_priv
16 INCDIRS = $(INCDIR_PUB) $(INCDIR_PRIV) $(if $(STAGINGDIR), $(STAGINGDIR)/include) $(if $(STAGINGDIR), $(STAGINGDIR)/usr/include)
17 STAGING_LIBDIR = $(if $(STAGINGDIR), -L$(STAGINGDIR)/lib) $(if $(STAGINGDIR), -L$(STAGINGDIR)/usr/lib)
18 
19 # files
20 HEADERS = $(wildcard $(INCDIR_PUB)/amxrt/*.h)
21 SOURCES = $(wildcard $(SRCDIR)/*.c)
22 OBJECTS = $(addprefix $(OBJDIR)/,$(notdir $(SOURCES:.c=.o)))
23 OBJECTS += $(addprefix $(OBJDIR)/,$(notdir $(VARIANTS:.c=.o)))
24 
25 # compilation and linking flags
26 CFLAGS += -Wall -Wextra \
27  -Wformat=2 -Wshadow \
28  -Wno-format-nonliteral \
29  -Wwrite-strings -Wredundant-decls \
30  -Wpedantic -Wmissing-declarations \
31  -fPIC -g3 $(addprefix -I ,$(INCDIRS))
32 
33 ifdef CONFIG_SAH_AMXRT_RWDATAPATH
34  CFLAGS += -DRWDATAPATH=\"$(CONFIG_SAH_AMXRT_RWDATAPATH)\"
35 else
36  CFLAGS += -DRWDATAPATH=\"/etc/config\"
37 endif
38 
39 ifeq ($(CC_NAME),g++)
40  CFLAGS += -std=c++2a
41 else
42  CFLAGS += -Wstrict-prototypes \
43  -Wold-style-definition \
44  -Wnested-externs \
45  -Wdeclaration-after-statement \
46  -std=c11
47 endif
48 
49 LDFLAGS += $(STAGING_LIBDIR) -shared -fPIC \
50  $(shell pkg-config --libs libevent) \
51  -lamxc -lamxp -lamxd -lamxo -lamxb -lamxj -lcap-ng
52 
53 # targets
54 all: $(TARGET_SO) $(TARGET_A)
55 
56 $(TARGET_SO): $(OBJECTS)
57  $(CC) -Wl,-soname,$(COMPONENT).so.$(VMAJOR) -o $@ $(OBJECTS) $(LDFLAGS)
58 
59 $(TARGET_A): $(OBJECTS)
60  $(AR) rcs $(@) $(OBJECTS)
61 
62 -include $(OBJECTS:.o=.d)
63 
64 $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)/
65  $(CC) $(CFLAGS) -c -o $@ $<
66  @$(CC) $(CFLAGS) -MM -MP -MT '$(@) $(@:.o=.d)' -MF $(@:.o=.d) $(<)
67 
68 $(OBJDIR)/:
69  $(MKDIR) -p $@
70 
71 clean:
72  rm -rf ../output/ ../$(COMPONENT)-*.* ../$(COMPONENT)_*.*
73  find . -name "run_test" -delete
74 
75 
76 .PHONY: all clean