1 include ../makefile.inc
3 # build destination directories
4 OBJDIR = ../output/$(MACHINE)
7 TARGET_SO = $(OBJDIR)/$(COMPONENT).so
8 TARGET_A = $(OBJDIR)/$(COMPONENT).a
14 INCDIR_PRIV = $(realpath ../include_priv)
15 INCDIRS = $(INCDIR_PUB) $(INCDIR_PRIV) $(if $(STAGINGDIR), $(STAGINGDIR)/include $(STAGINGDIR)/usr/include)
16 STAGING_LIBDIR = $(if $(STAGINGDIR), -L$(STAGINGDIR)/lib -L$(STAGINGDIR)/usr/lib)
20 SOURCES = $(wildcard $(SRCDIR)/*.c)
21 OBJECTS = $(addprefix $(OBJDIR)/,$(notdir $(SOURCES:.c=.o)))
23 # compilation and linking flags
24 CFLAGS += -Werror -Wall -Wextra \
26 -Wwrite-strings -Wredundant-decls \
27 -Wpedantic -Wmissing-declarations -Wno-attributes \
28 -Wno-format-nonliteral \
29 -fPIC -g3 $(addprefix -I ,$(INCDIRS))
34 CFLAGS += -Wstrict-prototypes -Wold-style-definition -Wnested-externs -std=c11
37 LDFLAGS += $(STAGING_LIBDIR) -shared -fPIC -lamxc -lamxd -lamxo -lsahtrace
40 all: $(TARGET_SO) $(TARGET_A)
42 $(TARGET_SO): $(OBJECTS)
43 $(CC) -Wl,-soname,$(COMPONENT).so -o $(@) $(OBJECTS) $(LDFLAGS)
45 $(TARGET_A): $(OBJECTS)
48 -include $(OBJECTS:.o=.d)
50 $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)/
51 $(CC) $(CFLAGS) -c -o $@ $<
52 @$(CC) $(CFLAGS) -MM -MP -MT '$(@) $(@:.o=.d)' -MF $(@:.o=.d) $(<)
58 rm -rf ../output/ ../$(COMPONENT)-*.* ../$(COMPONENT)_*.*