[CRIU] [PATCH 10/10] build: criu -- Generate version and config from toplevel

Cyrill Gorcunov gorcunov at openvz.org
Tue Mar 22 12:09:39 PDT 2016


The version and configs will be needed in compel.
Moreover we should move to general toplevel build
scheme with small steps since it's more convenient
(as it was pre-2.0).

Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
 Makefile              | 130 +++++++++++++++++++++++++++++++++++++++++++++++++-
 criu/Makefile         |  43 +----------------
 criu/Makefile.config  |  60 -----------------------
 criu/Makefile.version |  32 -------------
 4 files changed, 130 insertions(+), 135 deletions(-)
 delete mode 100644 criu/Makefile.config
 delete mode 100644 criu/Makefile.version

diff --git a/Makefile b/Makefile
index 24033e7c2c33..5f16c28da855 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@ export __nmk_dir
 
 include $(__nmk_dir)/include.mk
 include $(__nmk_dir)/macro.mk
+include $(__nmk_dir)/utils.mk
 
 #
 # Import tools versions early
@@ -104,6 +105,129 @@ endif
 CFLAGS			+= $(WARNINGS) $(DEFINES)
 
 #
+# Architecture specific options.
+#
+ifeq ($(ARCH),x86)
+        SRCARCH		:= x86
+        LDARCH		:= i386:x86-64
+        VDSO		:= y
+endif
+
+ifeq ($(ARCH),arm)
+        SRCARCH		:= arm
+endif
+
+ifeq ($(ARCH),arm64)
+        ARCH		:= aarch64
+        SRCARCH		:= aarch64
+        VDSO		:= y
+endif
+
+ifeq ($(ARCH),ppc64)
+        SRCARCH		:= ppc64
+        LDARCH		:= powerpc:common64
+        VDSO		:= y
+endif
+
+LDARCH			?= $(SRCARCH)
+SRCARCH			?= $(ARCH)
+
+export SRCARCH LDARCH VDSO
+
+#
+# CRIU version header.
+CRIU_VERSION_HEADER	:= criu/include/version.h
+GITID_FILE		:= .gitid
+GITID			:= $(shell if [ -d ".git" ]; then git describe; fi)
+
+ifeq ($(GITID),)
+        GITID := 0
+else
+        GITID_FILE_VALUE := $(shell if [ -f '$(GITID_FILE)' ];			\
+				then if [ `cat '$(GITID_FILE)'` = $(GITID) ];	\
+				then echo y; fi; fi)
+        ifneq ($(GITID_FILE_VALUE),y)
+                .PHONY: $(GITID_FILE)
+        endif
+endif
+
+$(GITID_FILE):
+	$(call msg-gen, $@)
+	$(Q) echo "$(GITID)" > $(GITID_FILE)
+
+$(CRIU_VERSION_HEADER): Makefile.versions $(GITID_FILE)
+	$(call msg-gen, $@)
+	$(Q) echo "/* Autogenerated, do not edit */"			 > $(CRIU_VERSION_HEADER)
+	$(Q) echo "#ifndef __CR_VERSION_H__"				>> $(CRIU_VERSION_HEADER)
+	$(Q) echo "#define __CR_VERSION_H__"				>> $(CRIU_VERSION_HEADER)
+	$(Q) echo "#define CRIU_VERSION \"$(CRIU_VERSION)\""		>> $(CRIU_VERSION_HEADER)
+	$(Q) echo "#define CRIU_VERSION_MAJOR " $(CRIU_VERSION_MAJOR)	>> $(CRIU_VERSION_HEADER)
+	$(Q) echo "#define CRIU_VERSION_MINOR " $(CRIU_VERSION_MINOR)	>> $(CRIU_VERSION_HEADER)
+	$(Q) echo "#define CRIU_GITID \"$(GITID)\""			>> $(CRIU_VERSION_HEADER)
+	$(Q) echo "#endif /* __CR_VERSION_H__ */"			>> $(CRIU_VERSION_HEADER)
+
+#
+# CRIU config header.
+#
+include scripts/feature-tests.mak
+
+CRIU_CONFIG_HEADER	:= criu/include/config.h
+
+ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),y)
+        LIBS	+= -lbsd
+        DEFINES	+= -DCONFIG_HAS_LIBBSD
+endif
+
+ifeq ($(call pkg-config-check,libselinux),y)
+        LIBS	+= -lselinux
+        DEFINES	+= -DCONFIG_HAS_SELINUX
+endif
+
+ifeq ($(call try-cc,$(FEATURE_TEST_UFFD)),y)
+	export UFFD := 1
+endif
+
+FEATURES_LIST		:=	TCP_REPAIR PRLIMIT	\
+				STRLCPY			\
+				STRLCAT			\
+				PTRACE_PEEKSIGINFO	\
+				SETPROCTITLE_INIT	\
+				MEMFD
+
+define gen-feature-test
+ifeq ($$(call try-cc,$$(FEATURE_TEST_$(1)),$$(LIBS),$$(DEFINES)),y)
+	$(Q) @echo '#define CONFIG_HAS_$(1)' >> $$@
+	$(Q) @echo '' >> $$@
+endif
+endef
+
+define config-header-rule
+$(CRIU_CONFIG_HEADER): scripts/feature-tests.mak
+	$$(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 ($$(UFFD),1)
+	$(Q) @echo '#define CONFIG_HAS_UFFD'				>> $$@
+	$(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))
+
+#
 # Protobuf images first, they are not depending
 # on anything else.
 $(eval $(call gen-built-in,images))
@@ -120,9 +244,9 @@ $(eval $(call gen-built-in,compel))
 #
 # But note that we're already included
 # the nmk so we can reuse it there.
-criu/%: images/built-in.o compel/compel
+criu/%: $(CRIU_VERSION_HEADER) $(CRIU_CONFIG_HEADER) compel/compel images/built-in.o
 	$(Q) $(MAKE) -C criu $@
-criu: images/built-in.o compel/compel
+criu: $(CRIU_VERSION_HEADER) $(CRIU_CONFIG_HEADER) compel/compel images/built-in.o
 	$(Q) $(MAKE) -C criu all
 .PHONY: criu
 
@@ -145,6 +269,8 @@ clean-built:
 	$(Q) $(MAKE) -C criu clean
 	$(Q) $(MAKE) -C lib clean
 	$(Q) $(MAKE) -C Documentation clean
+	$(Q) $(RM) $(CRIU_VERSION_HEADER)
+	$(Q) $(RM) $(CRIU_CONFIG_HEADER)
 .PHONY: clean-built
 
 clean: clean-built
diff --git a/criu/Makefile b/criu/Makefile
index 4a9464d4dcaf..c4217c0d8b40 100644
--- a/criu/Makefile
+++ b/criu/Makefile
@@ -12,37 +12,9 @@ LDFLAGS			+= -Wl,--wrap=nla_parse,--wrap=nlmsg_parse
 
 export HOSTCC HOSTLD HOSTCFLAGS
 
-ifeq ($(ARCH),x86)
-        SRCARCH		:= x86
-        LDARCH		:= i386:x86-64
-        VDSO		:= y
-endif
-
-ifeq ($(ARCH),arm)
-        SRCARCH		:= arm
-endif
-
-ifeq ($(ARCH),arm64)
-        ARCH		:= aarch64
-        SRCARCH		:= aarch64
-        VDSO		:= y
-endif
-
-ifeq ($(ARCH),ppc64)
-        SRCARCH		:= ppc64
-        LDARCH		:= powerpc:common64
-        VDSO		:= y
-endif
-
-LDARCH ?= $(SRCARCH)
-
-export SRCARCH LDARCH VDSO
-
-SRCARCH			?= $(ARCH)
-LDARCH			?= $(SRCARCH)
 ARCH_DIR		:= arch/$(SRCARCH)
 
-export SRCARCH LDARCH ARCH_DIR VDSO
+export ARCH_DIR
 
 $(if $(wildcard $(ARCH_DIR)),,$(error "The architecture $(ARCH) isn't supported"))
 
@@ -119,18 +91,9 @@ endif
 include $(__nmk_dir)/msg.mk
 
 #
-# Version header file.
-include Makefile.version
-
-#
-# Configure variables.
-include Makefile.config
-config: $(VERSION_HEADER)
-
-#
 # System calls library.
 SYSCALL-LIB		:= $(ARCH_DIR)/syscalls.built-in.o
-syscalls_lib: config
+syscalls_lib:
 	$(Q) $(MAKE) $(call build-as,Makefile.syscalls,$(ARCH_DIR)) all
 .PHONY: syscalls_lib
 
@@ -176,8 +139,6 @@ clean:
 	$(Q) $(RM) ./*.{gcda,gcno,gcov}
 	$(Q) $(RM) ./pie/*.{gcda,gcno,gcov}
 	$(Q) $(RM) -r ./gcov
-	$(Q) $(RM) $(VERSION_HEADER)
-	$(Q) $(RM) $(CONFIG_HEADER)
 	$(Q) $(RM) criu
 .PHONY: clean
 
diff --git a/criu/Makefile.config b/criu/Makefile.config
deleted file mode 100644
index 2b8c25f0d4e7..000000000000
--- a/criu/Makefile.config
+++ /dev/null
@@ -1,60 +0,0 @@
-include $(__nmk_dir)/utils.mk
-include $(__nmk_dir)msg.mk
-include ../scripts/feature-tests.mak
-
-CONFIG_HEADER := include/config.h
-
-ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),y)
-        LIBS	+= -lbsd
-        DEFINES	+= -DCONFIG_HAS_LIBBSD
-endif
-
-ifeq ($(call pkg-config-check,libselinux),y)
-        LIBS	+= -lselinux
-        DEFINES	+= -DCONFIG_HAS_SELINUX
-endif
-
-ifeq ($(call try-cc,$(FEATURE_TEST_UFFD)),y)
-	export UFFD := 1
-endif
-
-FEATURES_LIST	:= TCP_REPAIR PRLIMIT STRLCPY STRLCAT PTRACE_PEEKSIGINFO \
-	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
-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 ($$(UFFD),1)
-	$(Q) @echo '#define CONFIG_HAS_UFFD'				>> $$@
-	$(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_HEADER): ../scripts/feature-tests.mak
-config: $(CONFIG_HEADER)
-.PHONY: config
diff --git a/criu/Makefile.version b/criu/Makefile.version
deleted file mode 100644
index 9b5a614b5831..000000000000
--- a/criu/Makefile.version
+++ /dev/null
@@ -1,32 +0,0 @@
-include $(__nmk_dir)msg.mk
-
-VERSION_HEADER		:= include/version.h
-GITID_FILE		:= ../.gitid
-GITID			:= $(shell if [ -d "../.git" ]; then cd .. && git describe; fi)
-
-ifeq ($(GITID),)
-        GITID := 0
-else
-        GITID_FILE_VALUE := $(shell if [ -f '$(GITID_FILE)' ]; then if [ `cat '$(GITID_FILE)'` = $(GITID) ]; then echo y; fi; fi)
-        ifneq ($(GITID_FILE_VALUE),y)
-                .PHONY: $(GITID_FILE)
-        endif
-endif
-
-$(GITID_FILE):
-	$(call msg-gen, $@)
-	$(Q) echo "$(GITID)" > $(GITID_FILE)
-
-$(VERSION_HEADER): ../Makefile.versions $(GITID_FILE)
-	$(call msg-gen, $@)
-	$(Q) echo "/* Autogenerated, do not edit */"			 > $(VERSION_HEADER)
-	$(Q) echo "#ifndef __CR_VERSION_H__"				>> $(VERSION_HEADER)
-	$(Q) echo "#define __CR_VERSION_H__"				>> $(VERSION_HEADER)
-	$(Q) echo "#define CRIU_VERSION \"$(CRIU_VERSION)\""		>> $(VERSION_HEADER)
-	$(Q) echo "#define CRIU_VERSION_MAJOR " $(CRIU_VERSION_MAJOR)	>> $(VERSION_HEADER)
-	$(Q) echo "#define CRIU_VERSION_MINOR " $(CRIU_VERSION_MINOR)	>> $(VERSION_HEADER)
-	$(Q) echo "#define CRIU_GITID \"$(GITID)\""			>> $(VERSION_HEADER)
-	$(Q) echo "#endif /* __CR_VERSION_H__ */"			>> $(VERSION_HEADER)
-
-Makefile.version:
-	@true
-- 
2.5.0



More information about the CRIU mailing list