1 include ../makefile.inc
3 # build destination directories
4 OBJDIR = ../output/$(MACHINE)
7 TARGET_SO = $(OBJDIR)/$(COMPONENT).so.$(VERSION)
8 TARGET_A = $(OBJDIR)/$(COMPONENT).a
13 INCDIR_PUB = ../include
14 INCDIR_PRIV = ../include_priv
15 INCDIRS = $(INCDIR_PUB) $(INCDIR_PRIV) $(if $(STAGINGDIR), $(STAGINGDIR)/include)
16 STAGING_LIBDIR = $(if $(STAGINGDIR), -L$(STAGINGDIR)/lib)
19 HEADERS = $(wildcard $(INCDIR_PUB)/amxc/*.h)
20 SOURCES = $(wildcard $(SRCDIR)/*.c)
21 VARIANTS = $(wildcard $(SRCDIR)/variants/*.c)
22 OBJECTS = $(addprefix $(OBJDIR)/,$(notdir $(SOURCES:.c=.o)))
23 OBJECTS += $(addprefix $(OBJDIR)/,$(notdir $(VARIANTS:.c=.o)))
25 # compilation and linking flags
26 CFLAGS += -Werror -Wall -Wextra \
28 -Wwrite-strings -Wredundant-decls \
29 -Wpedantic -Wmissing-declarations \
30 -Wno-format-nonliteral \
31 -fPIC -g3 $(addprefix -I ,$(INCDIRS))
36 CFLAGS += -Wstrict-prototypes \
37 -Wold-style-definition \
39 -Wdeclaration-after-statement \
43 LDFLAGS += $(STAGING_LIBDIR) -shared -fPIC
46 all: $(TARGET_SO) $(TARGET_A)
48 $(TARGET_SO): $(OBJECTS)
49 $(CC) -Wl,-soname,$(COMPONENT).so.$(VMAJOR) -o $(@) $(OBJECTS) $(LDFLAGS)
51 $(TARGET_A): $(OBJECTS)
52 $(AR) rcs $(@) $(OBJECTS)
54 -include $(OBJECTS:.o=.d)
56 $(OBJDIR)/%.o: $(SRCDIR)/variants/%.c | $(OBJDIR)/
57 $(CC) $(CFLAGS) -c -o $@ $<
58 @$(CC) $(CFLAGS) -MM -MP -MT '$(@) $(@:.o=.d)' -MF $(@:.o=.d) $(<)
60 $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)/
61 $(CC) $(CFLAGS) -c -o $@ $<
62 @$(CC) $(CFLAGS) -MM -MP -MT '$(@) $(@:.o=.d)' -MF $(@:.o=.d) $(<)
68 rm -rf ../output/ ../$(COMPONENT)-*.* ../$(COMPONENT)_*.*