[CRIU] [PATCHv2 2/2] build/feature-test: simplify adding a new feature
Dmitry Safonov
dsafonov at virtuozzo.com
Fri Feb 19 06:34:47 PST 2016
To add a new feature test - add it to FEATURES_LIST.
Cc: Cyrill Gorcunov <gorcunov at openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov at virtuozzo.com>
---
v2: drop newline in gen-feature-test macro (as it's already in map function,
we may evaluate rule without been concatenated with previous rule)
criu/Makefile.config | 75 ++++++++++++++++++++---------------------------
scripts/feature-tests.mak | 16 +++++-----
2 files changed, 40 insertions(+), 51 deletions(-)
diff --git a/criu/Makefile.config b/criu/Makefile.config
index 36686d7..fb2a4a8 100644
--- a/criu/Makefile.config
+++ b/criu/Makefile.config
@@ -4,7 +4,7 @@ include ../scripts/feature-tests.mak
CONFIG_HEADER := include/config.h
-ifeq ($(call try-cc,$(LIBBSD_DEV_TEST),-lbsd),y)
+ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),y)
LIBS += -lbsd
DEFINES += -DCONFIG_HAS_LIBBSD
endif
@@ -14,49 +14,38 @@ ifeq ($(call pkg-config-check,libselinux),y)
DEFINES += -DCONFIG_HAS_SELINUX
endif
-$(CONFIG_HEADER): include/config-base.h
- $(call msg-gen, $@)
- $(Q) @echo '#ifndef __CR_CONFIG_H__' > $@
- $(Q) @echo '#define __CR_CONFIG_H__' >> $@
- $(Q) @echo '' >> $@
- $(Q) @echo '#include "config-base.h"' >> $@
- $(Q) @echo '' >> $@
-ifeq ($(call try-cc,$(TCP_REPAIR_TEST),,$(DEFINES)),y)
- $(Q) @echo '#define CONFIG_HAS_TCP_REPAIR' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(call try-cc,$(PRLIMIT_TEST),,$(DEFINES)),y)
- $(Q) @echo '#define CONFIG_HAS_PRLIMIT' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(call try-cc,$(STRLCPY_TEST),$(LIBS),$(DEFINES)),y)
- $(Q) @echo '#define CONFIG_HAS_STRLCPY' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(call try-cc,$(STRLCAT_TEST),$(LIBS),$(DEFINES)),y)
- $(Q) @echo '#define CONFIG_HAS_STRLCAT' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(call try-cc,$(PTRACE_PEEKSIGINFO_TEST),,$(DEFINES)),y)
- $(Q) @echo '#define CONFIG_HAS_PEEKSIGINFO_ARGS' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(VDSO),y)
- $(Q) @echo '#define CONFIG_VDSO' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(call try-cc,$(SETPROCTITLE_INIT_TEST),-lbsd,$(DEFINES)),y)
- $(Q) @echo '#define CONFIG_HAS_SETPROCTITLE_INIT' >> $@
- $(Q) @echo '' >> $@
-endif
-ifeq ($(call try-cc,$(MEMFD_TEST),),y)
- $(Q) @echo '#define CONFIG_HAS_MEMFD' >> $@
-endif
-ifeq ($(piegen-y),y)
- $(Q) @echo '#define CONFIG_PIEGEN' >> $@
- $(Q) @echo '' >> $@
+FEATURES_LIST := TCP_REPAIR PRLIMIT STRLCPY STRLCAT PEEKSIGINFO_ARGS \
+ SETPROCTITLE_INIT MEMFD
+
+# $1 - config name
+define gen-feature-test
+ifeq ($$(call try-cc,$$(FEATURE_TEST_$(1)),$$(LIBS),$$(DEFINES)),y)
+ $(Q) @echo '#define CONFIG_HAS_$(1)' >> $$@
+ $(Q) @echo '' >> $$@
endif
- $(Q) @echo '#endif /* __CR_CONFIG_H__ */' >> $@
+endef
+
+define config-header-rule
+$(CONFIG_HEADER): include/config-base.h
+ $$(call msg-gen, $$@)
+ $(Q) @echo '#ifndef __CR_CONFIG_H__' > $$@
+ $(Q) @echo '#define __CR_CONFIG_H__' >> $$@
+ $(Q) @echo '' >> $$@
+ $(Q) @echo '#include "config-base.h"' >> $$@
+ $(Q) @echo '' >> $$@
+$(call map,gen-feature-test,$(FEATURES_LIST))
+ifeq ($$(VDSO),y)
+ $(Q) @echo '#define CONFIG_VDSO' >> $$@
+ $(Q) @echo '' >> $$@
+endif
+ifeq ($$(piegen-y),y)
+ $(Q) @echo '#define CONFIG_PIEGEN' >> $$@
+ $(Q) @echo '' >> $$@
+endif
+ $(Q) @echo '#endif /* __CR_CONFIG_H__ */' >> $$@
+endef
+
+$(eval $(config-header-rule))
config: $(CONFIG_HEADER)
PHONY += config
diff --git a/scripts/feature-tests.mak b/scripts/feature-tests.mak
index 5ccfc78..525c73e 100644
--- a/scripts/feature-tests.mak
+++ b/scripts/feature-tests.mak
@@ -1,4 +1,4 @@
-define TCP_REPAIR_TEST
+define FEATURE_TEST_TCP_REPAIR
#include <netinet/tcp.h>
@@ -12,7 +12,7 @@ int main(void)
}
endef
-define PRLIMIT_TEST
+define FEATURE_TEST_PRLIMIT
#include <stdlib.h>
#include <sys/types.h>
@@ -30,7 +30,7 @@ int main(void)
}
endef
-define LIBBSD_DEV_TEST
+define FEATURE_TEST_LIBBSD_DEV
#include <bsd/string.h>
int main(void)
@@ -39,7 +39,7 @@ int main(void)
}
endef
-define STRLCPY_TEST
+define FEATURE_TEST_STRLCPY
#include <string.h>
@@ -53,7 +53,7 @@ int main(void)
}
endef
-define STRLCAT_TEST
+define FEATURE_TEST_STRLCAT
#include <string.h>
@@ -67,7 +67,7 @@ int main(void)
}
endef
-define PTRACE_PEEKSIGINFO_TEST
+define FEATURE_TEST_PTRACE_PEEKSIGINFO
#include <sys/ptrace.h>
@@ -80,7 +80,7 @@ int main(void)
endef
-define SETPROCTITLE_INIT_TEST
+define FEATURE_TEST_SETPROCTITLE_INIT
#include <bsd/unistd.h>
@@ -93,7 +93,7 @@ int main(int argc, char *argv[], char *envp[])
endef
-define MEMFD_TEST
+define FEATURE_TEST_MEMFD
#include <unistd.h>
#include <sys/syscall.h>
--
2.7.1
More information about the CRIU
mailing list