Files
qrtr/Makefile
Nicolas Dechesne d4697675ce Makefile: add standard GNU makefiles directory variables
This component is compiled in Debian and OE where we have multilib support
enabled by default, so let's use proper variables for Makefile so that distro
can better configure the destination folders.

Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
2016-11-25 17:00:31 +01:00

125 lines
2.6 KiB
Makefile

proj := qrtr
proj-major := 1
proj-minor := 0
proj-version := $(proj-major).$(proj-minor)
CFLAGS := -Wall -g
LDFLAGS :=
prefix := /usr/local
bindir := $(prefix)/bin
libdir := $(prefix)/lib
includedir := $(prefix)/include
ifneq ($(CROSS_COMPILE),)
CC := $(CROSS_COMPILE)gcc
endif
SFLAGS := -I$(shell $(CC) -print-file-name=include) -Wno-non-pointer-null
$(proj)-cfg-srcs := \
src/cfg.c
$(proj)-ns-srcs := \
src/ns.c \
src/map.c \
src/hash.c \
src/waiter.c \
src/util.c \
$(proj)-lookup-srcs := \
src/lookup.c \
src/util.c \
lib$(proj).so-srcs := \
lib/libqrtr.c \
lib$(proj).so-cflags := -fPIC -Isrc
targets := $(proj)-ns $(proj)-cfg $(proj)-lookup lib$(proj).so
out := out
src_to_obj = $(patsubst %.c,$(out)/obj/%.o,$(1))
src_to_dep = $(patsubst %.c,$(out)/dep/%.d,$(1))
all-srcs :=
all-objs :=
all-deps :=
all-clean := $(out)
all-install :=
all: $(targets)
$(out)/obj/%.o: %.c
ifneq ($C,)
@echo "CHECK $<"
@sparse $< $(patsubst -iquote=%,-I%,$(CFLAGS)) $(SFLAGS)
endif
@echo "CC $<"
@$(CC) -MM -MF $(call src_to_dep,$<) -MP -MT "$@ $(call src_to_dep,$<)" $(CFLAGS) $(_CFLAGS) $<
@$(CC) -o $@ -c $< $(CFLAGS) $(_CFLAGS)
define add-inc-target
$(DESTDIR)$(includedir)/$2: $1/$2
@echo "INSTALL $$<"
@install -D -m 755 $$< $$@
all-install += $(DESTDIR)$(includedir)/$2
endef
define add-target-deps
all-srcs += $($1-srcs)
all-objs += $(call src_to_obj,$($1-srcs))
all-deps += $(call src_to_dep,$($1-srcs))
all-clean += $1
$(call src_to_obj,$($1-srcs)): _CFLAGS := $($1-cflags)
endef
define add-bin-target
$(call add-target-deps,$1)
$1: $(call src_to_obj,$($1-srcs))
@echo "LD $$@"
$$(CC) -o $$@ $$(filter %.o,$$^) $(LDFLAGS) -static
$(DESTDIR)$(bindir)/$1: $1
@echo "INSTALL $$<"
@install -D -m 755 $$< $$@
all-install += $(DESTDIR)$(bindir)/$1
endef
define add-lib-target
$(call add-target-deps,$1)
$1: $(call src_to_obj,$($1-srcs))
@echo "LD $$@"
$$(CC) -o $$@ $$(filter %.o,$$^) $(LDFLAGS) -shared -Wl,-soname,$1.$(proj-major)
$(DESTDIR)$(libdir)/$1.$(proj-version): $1
@echo "INSTALL $$<"
@install -D -m 755 $$< $$@
@ln -sf $1.$(proj-version) $(DESTDIR)$(libdir)/$1.$(proj-major)
@ln -sf $1.$(proj-major) $(DESTDIR)$(libdir)/$1
all-install += $(DESTDIR)$(libdir)/$1.$(proj-version)
endef
$(foreach v,$(filter-out %.so,$(targets)),$(eval $(call add-bin-target,$v)))
$(foreach v,$(filter %.so,$(targets)),$(eval $(call add-lib-target,$v)))
$(eval $(call add-inc-target,lib,libqrtr.h))
install: $(all-install)
clean:
@echo CLEAN
@$(RM) -r $(all-clean)
$(call src_to_obj,$(all-srcs)): Makefile
ifneq ("$(MAKECMDGOALS)","clean")
cmd-goal-1 := $(shell mkdir -p $(sort $(dir $(all-objs) $(all-deps))))
-include $(all-deps)
endif