summaryrefslogtreecommitdiffstats
path: root/modules/modules.mk
diff options
context:
space:
mode:
Diffstat (limited to 'modules/modules.mk')
-rw-r--r--modules/modules.mk106
1 files changed, 106 insertions, 0 deletions
diff --git a/modules/modules.mk b/modules/modules.mk
new file mode 100644
index 0000000..71c79b1
--- /dev/null
+++ b/modules/modules.mk
@@ -0,0 +1,106 @@
+# List of built-in modules
+modules_TARGETS := hints \
+ stats
+
+# DNS cookies
+ifeq ($(ENABLE_COOKIES),yes)
+modules_TARGETS += cookies
+endif
+
+ifeq ($(ENABLE_DNSTAP),yes)
+modules_TARGETS += dnstap
+endif
+
+# List of Lua modules
+ifeq ($(HAS_lua),yes)
+modules_TARGETS += bogus_log \
+ nsid \
+ etcd \
+ ta_sentinel \
+ experimental_dot_auth \
+ graphite \
+ policy \
+ view \
+ predict \
+ dns64 \
+ rebinding \
+ renumber \
+ http \
+ daf \
+ workarounds \
+ ta_signal_query \
+ priming \
+ serve_stale \
+ detect_time_skew \
+ detect_time_jump \
+ prefill \
+ edns_keepalive
+endif
+
+# Make C module
+define make_c_module
+$(1)-install: $(DESTDIR)$(MODULEDIR)
+$(eval $(call make_module,$(1),modules/$(1)))
+endef
+
+# Make Lua module
+define make_lua_module
+$(eval $(call lua_target,$(1),modules/$(1)))
+endef
+
+# Lua target definition
+define lua_target
+$(1) := $(1) $$(addprefix $(2)/,$$($(1)_SOURCES))
+$(1) : $$($(1)_DEPEND)
+$(1)-clean:
+ifeq ($$(strip $$($(1)_INSTALL)),)
+$(1)-dist:
+ $(INSTALL) -d $(DESTDIR)$(MODULEDIR)
+else
+$(1)-dist: $$($(1)_INSTALL)
+ $(INSTALL) -d $(DESTDIR)$(MODULEDIR)/$(1)
+ $(INSTALL) -m 0644 $$^ $(DESTDIR)$(MODULEDIR)/$(1)
+endif
+$(1)-install: $$(addprefix $(2)/,$$($(1)_SOURCES)) $(DESTDIR)$(MODULEDIR) $(1)-dist
+ $(INSTALL) -m 0644 $$(addprefix $(2)/,$$($(1)_SOURCES)) $(DESTDIR)$(MODULEDIR)
+.PHONY: $(1) $(1)-install $(1)-clean $(1)-dist
+endef
+
+# Make Go module
+define make_go_module
+$(eval $(call go_target,$(1),modules/$(1)))
+endef
+
+# Filter CGO flags
+CGO_CFLAGS := $(filter-out -flto,$(BUILD_CFLAGS))
+
+# Go target definition
+define go_target
+$(1) := $(2)/$(1)$(LIBEXT)
+$(2)/$(1)$(LIBEXT): $$($(1)_SOURCES) $$($(1)_DEPEND)
+ @echo " GO $(2)"; CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$$($(1)_LIBS) $(CFLAGS)" $(GO) build -buildmode=c-shared -o $$@ $$($(1)_SOURCES)
+$(1)-clean:
+ $(RM) -r $(2)/$(1).h $(2)/$(1)$(LIBEXT)
+ifeq ($$(strip $$($(1)_INSTALL)),)
+$(1)-dist:
+ $(INSTALL) -d $(DESTDIR)$(MODULEDIR)
+else
+$(1)-dist: $$($(1)_INSTALL)
+ $(INSTALL) -d $(DESTDIR)$(MODULEDIR)/$(1)
+ $(INSTALL) -m 0644 $$^ $(DESTDIR)$(MODULEDIR)/$(1)
+endif
+$(1)-install: $(2)/$(1)$(LIBEXT) $(1)-dist $(DESTDIR)$(MODULEDIR)
+ $(INSTALL) $(2)/$(1)$(LIBEXT) $(DESTDIR)$(MODULEDIR)
+.PHONY: $(1)-clean $(1)-install $(1)-dist
+endef
+
+# Include modules
+$(foreach module,$(modules_TARGETS),$(eval include modules/$(module)/$(module).mk))
+$(eval modules = $(foreach module,$(modules_TARGETS),$$($(module))))
+
+# Targets
+modules: $(modules)
+modules-clean: $(addsuffix -clean,$(modules_TARGETS))
+modules-install: $(addsuffix -install,$(modules_TARGETS))
+
+.PHONY: modules modules-clean modules-install