diff options
Diffstat (limited to 'qcom/qrtr/Makefile')
-rw-r--r-- | qcom/qrtr/Makefile | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/qcom/qrtr/Makefile b/qcom/qrtr/Makefile new file mode 100644 index 0000000..f814aa2 --- /dev/null +++ b/qcom/qrtr/Makefile @@ -0,0 +1,150 @@ +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 +servicedir := $(prefix)/lib/systemd/system + +ifneq ($(CROSS_COMPILE),) +CC := $(CROSS_COMPILE)gcc +endif +SFLAGS := -I$(shell $(CC) -print-file-name=include) -Wno-non-pointer-null + +$(proj)-cfg-srcs := \ + lib/logging.c \ + src/addr.c \ + src/cfg.c \ + +$(proj)-cfg-cflags := -Ilib + +$(proj)-ns-srcs := \ + lib/logging.c \ + src/addr.c \ + src/ns.c \ + src/map.c \ + src/hash.c \ + src/waiter.c \ + src/util.c \ + +$(proj)-ns-cflags := -Ilib + +$(proj)-lookup-srcs := \ + lib/logging.c \ + src/lookup.c \ + src/util.c \ + +$(proj)-lookup-cflags := -Ilib + +lib$(proj).so-srcs := \ + lib/logging.c \ + lib/qrtr.c \ + lib/qmi.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) + +$(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 + +define add-systemd-service-target +$1: $1.in + sed 's+QRTR_NS_PATH+$(bindir)+g' $$< > $$@ + +$(DESTDIR)$(servicedir)/$1: $1 + @echo "INSTALL $$<" + @install -D -m 755 $$< $$@ + +all-install += $(DESTDIR)$(servicedir)/$1 +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)) +$(eval $(call add-systemd-service-target,qrtr-ns.service)) + +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 |