libamxc  1.10.3
C Generic Data Containers
makefile
Go to the documentation of this file.
1 include ../makefile.inc
2 
3 # build destination directories
4 OBJDIR = ../output/$(MACHINE)
5 
6 # TARGETS
7 TARGET_SO = $(OBJDIR)/$(COMPONENT).so.$(VERSION)
8 TARGET_A = $(OBJDIR)/$(COMPONENT).a
9 
10 # directories
11 # source directories
12 SRCDIR = .
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)
17 
18 # files
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)))
24 
25 # compilation and linking flags
26 CFLAGS += -Werror -Wall -Wextra \
27  -Wformat=2 -Wshadow \
28  -Wwrite-strings -Wredundant-decls \
29  -Wpedantic -Wmissing-declarations \
30  -Wno-format-nonliteral \
31  -fPIC -g3 $(addprefix -I ,$(INCDIRS))
32 
33 ifeq ($(CC_NAME),g++)
34  CFLAGS += -std=c++2a
35 else
36  CFLAGS += -Wstrict-prototypes \
37  -Wold-style-definition \
38  -Wnested-externs \
39  -Wdeclaration-after-statement \
40  -std=c11
41 endif
42 
43 LDFLAGS += $(STAGING_LIBDIR) -shared -fPIC
44 
45 # targets
46 all: $(TARGET_SO) $(TARGET_A)
47 
48 $(TARGET_SO): $(OBJECTS)
49  $(CC) -Wl,-soname,$(COMPONENT).so.$(VMAJOR) -o $(@) $(OBJECTS) $(LDFLAGS)
50 
51 $(TARGET_A): $(OBJECTS)
52  $(AR) rcs $(@) $(OBJECTS)
53 
54 -include $(OBJECTS:.o=.d)
55 
56 $(OBJDIR)/%.o: $(SRCDIR)/variants/%.c | $(OBJDIR)/
57  $(CC) $(CFLAGS) -c -o $@ $<
58  @$(CC) $(CFLAGS) -MM -MP -MT '$(@) $(@:.o=.d)' -MF $(@:.o=.d) $(<)
59 
60 $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)/
61  $(CC) $(CFLAGS) -c -o $@ $<
62  @$(CC) $(CFLAGS) -MM -MP -MT '$(@) $(@:.o=.d)' -MF $(@:.o=.d) $(<)
63 
64 $(OBJDIR)/:
65  $(MKDIR) -p $@
66 
67 clean:
68  rm -rf ../output/ ../$(COMPONENT)-*.* ../$(COMPONENT)_*.*
69 
70 .PHONY: all clean