mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 09:58:09 +00:00
make: arch -- Switch to a new build scheme
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
16c75274a1
commit
10ed5a0af4
2
.gitignore
vendored
2
.gitignore
vendored
@ -18,3 +18,5 @@ include/syscall-codes.h
|
|||||||
protobuf/*.c
|
protobuf/*.c
|
||||||
protobuf/*.h
|
protobuf/*.h
|
||||||
include/version.h
|
include/version.h
|
||||||
|
arch/x86/sys-exec-tbl.c
|
||||||
|
arch/x86/syscalls.S
|
||||||
|
26
Makefile
26
Makefile
@ -81,13 +81,18 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS += $(WARNINGS) $(DEFINES)
|
CFLAGS += $(WARNINGS) $(DEFINES)
|
||||||
SYSCALL-LIB = $(SRC_DIR)/arch/$(ARCH)/syscalls.o
|
|
||||||
PROTOBUF-LIB = $(SRC_DIR)/protobuf/protobuf-lib.o
|
PROTOBUF-LIB = $(SRC_DIR)/protobuf/protobuf-lib.o
|
||||||
|
SYSCALL-LIB := arch/$(ARCH)/syscalls.built-in.o
|
||||||
|
ARCH-LIB := arch/$(ARCH)/crtools.built-in.o
|
||||||
|
|
||||||
export E Q CC ECHO MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS
|
export E Q CC ECHO MAKE CFLAGS LIBS ARCH DEFINES MAKEFLAGS
|
||||||
export SRC_DIR SYSCALL-LIB SH ARCH_DIR OBJCOPY LDARCH
|
export SRC_DIR SYSCALL-LIB SH RM ARCH_DIR OBJCOPY LDARCH LD
|
||||||
|
|
||||||
include scripts/Makefile.version
|
include scripts/Makefile.version
|
||||||
|
include scripts/Makefile.rules
|
||||||
|
#
|
||||||
|
# shorthand
|
||||||
|
build := -s -r -R --no-print-directory -f scripts/Makefile.build makefile=Makefile obj
|
||||||
|
|
||||||
PROGRAM := crtools
|
PROGRAM := crtools
|
||||||
|
|
||||||
@ -135,12 +140,11 @@ OBJS += tty.o
|
|||||||
OBJS += cr-exec.o
|
OBJS += cr-exec.o
|
||||||
OBJS += cpu.o
|
OBJS += cpu.o
|
||||||
OBJS += file-lock.o
|
OBJS += file-lock.o
|
||||||
OBJS += $(ARCH_DIR)/crtools.o
|
|
||||||
|
|
||||||
DEPS := $(patsubst %.o,%.d,$(OBJS))
|
DEPS := $(patsubst %.o,%.d,$(OBJS))
|
||||||
|
|
||||||
.PHONY: all zdtm test rebuild clean distclean tags cscope \
|
.PHONY: all zdtm test rebuild clean distclean tags cscope \
|
||||||
docs help pie protobuf $(ARCH)
|
docs help pie protobuf arch/$(ARCH)
|
||||||
|
|
||||||
ifeq ($(GCOV),1)
|
ifeq ($(GCOV),1)
|
||||||
%.o $(PROGRAM): override CFLAGS += --coverage
|
%.o $(PROGRAM): override CFLAGS += --coverage
|
||||||
@ -149,15 +153,17 @@ endif
|
|||||||
all: pie $(VERSION_HEADER)
|
all: pie $(VERSION_HEADER)
|
||||||
$(Q) $(MAKE) $(PROGRAM)
|
$(Q) $(MAKE) $(PROGRAM)
|
||||||
|
|
||||||
pie: protobuf $(ARCH)
|
arch/$(ARCH)/%:: protobuf
|
||||||
|
$(Q) $(MAKE) $(build)=arch/$(ARCH) $@
|
||||||
|
arch/$(ARCH): protobuf
|
||||||
|
$(Q) $(MAKE) $(build)=arch/$(ARCH) all
|
||||||
|
|
||||||
|
pie: arch/$(ARCH) protobuf
|
||||||
$(Q) $(MAKE) -C pie/
|
$(Q) $(MAKE) -C pie/
|
||||||
|
|
||||||
protobuf:
|
protobuf:
|
||||||
$(Q) $(MAKE) -C protobuf/
|
$(Q) $(MAKE) -C protobuf/
|
||||||
|
|
||||||
$(ARCH):
|
|
||||||
$(Q) $(MAKE) -C arch/$(ARCH)/
|
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(E) " CC " $@
|
$(E) " CC " $@
|
||||||
$(Q) $(CC) -c $(CFLAGS) $< -o $@
|
$(Q) $(CC) -c $(CFLAGS) $< -o $@
|
||||||
@ -174,7 +180,7 @@ $(ARCH):
|
|||||||
$(E) " DEP " $@
|
$(E) " DEP " $@
|
||||||
$(Q) $(CC) -M -MT $@ -MT $(patsubst %.d,%.o,$@) $(CFLAGS) $< -o $@
|
$(Q) $(CC) -M -MT $@ -MT $(patsubst %.d,%.o,$@) $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
$(PROGRAM): $(OBJS) $(SYSCALL-LIB) $(PROTOBUF-LIB)
|
$(PROGRAM): $(OBJS) $(SYSCALL-LIB) $(ARCH-LIB) $(PROTOBUF-LIB)
|
||||||
$(E) " LINK " $@
|
$(E) " LINK " $@
|
||||||
$(Q) $(CC) $(CFLAGS) $^ $(LIBS) -o $@
|
$(Q) $(CC) $(CFLAGS) $^ $(LIBS) -o $@
|
||||||
|
|
||||||
@ -195,6 +201,7 @@ rebuild:
|
|||||||
clean:
|
clean:
|
||||||
$(E) " CLEAN"
|
$(E) " CLEAN"
|
||||||
$(Q) $(RM) $(VERSION_HEADER)
|
$(Q) $(RM) $(VERSION_HEADER)
|
||||||
|
$(Q) $(MAKE) $(build)=arch/$(ARCH) clean
|
||||||
$(Q) $(RM) ./*.o
|
$(Q) $(RM) ./*.o
|
||||||
$(Q) $(RM) ./*.d
|
$(Q) $(RM) ./*.d
|
||||||
$(Q) $(RM) ./*.i
|
$(Q) $(RM) ./*.i
|
||||||
@ -208,7 +215,6 @@ clean:
|
|||||||
$(Q) $(RM) -r ./test/lib/
|
$(Q) $(RM) -r ./test/lib/
|
||||||
$(Q) $(RM) -r ./test/lib64/
|
$(Q) $(RM) -r ./test/lib64/
|
||||||
$(Q) $(MAKE) -C protobuf/ clean
|
$(Q) $(MAKE) -C protobuf/ clean
|
||||||
$(Q) $(MAKE) -C arch/$(ARCH)/ clean
|
|
||||||
$(Q) $(MAKE) -C pie/ clean
|
$(Q) $(MAKE) -C pie/ clean
|
||||||
$(Q) $(MAKE) -C test/zdtm cleandep
|
$(Q) $(MAKE) -C test/zdtm cleandep
|
||||||
$(Q) $(MAKE) -C test/zdtm clean
|
$(Q) $(MAKE) -C test/zdtm clean
|
||||||
|
@ -1,57 +1,57 @@
|
|||||||
SYS-DEF := $(ARCH_DIR)/syscall.def
|
targets += syscalls
|
||||||
SYS-ASM-COMMON := syscall-common.S
|
targets += crtools
|
||||||
SYS-TYPES := $(SRC_DIR)/include/syscall-types.h
|
|
||||||
|
|
||||||
SYS-CODES := $(SRC_DIR)/include/syscall-codes.h
|
|
||||||
SYS-PROTO := $(SRC_DIR)/include/syscall.h
|
|
||||||
|
|
||||||
SYS-ASM := syscalls.S
|
SYS-ASM := syscalls.S
|
||||||
SYS-GEN := $(ARCH_DIR)/gen-syscalls.pl
|
|
||||||
SYS-GEN-TBL := $(ARCH_DIR)/gen-sys-exec-tbl.pl
|
|
||||||
|
|
||||||
SYS-OBJ := syscalls.o
|
syscalls-asm-y += $(SYS-ASM:.S=).o
|
||||||
|
crtools-obj-y += crtools.o
|
||||||
|
|
||||||
|
SYS-DEF := syscall.def
|
||||||
|
SYS-ASM-COMMON := syscall-common.S
|
||||||
|
SYS-TYPES := include/syscall-types.h
|
||||||
|
|
||||||
|
SYS-CODES := include/syscall-codes.h
|
||||||
|
SYS-PROTO := include/syscall.h
|
||||||
|
|
||||||
|
SYS-GEN := gen-syscalls.pl
|
||||||
|
SYS-GEN-TBL := gen-sys-exec-tbl.pl
|
||||||
|
|
||||||
SYS-EXEC-TBL := sys-exec-tbl.c
|
SYS-EXEC-TBL := sys-exec-tbl.c
|
||||||
|
|
||||||
CFLAGS += -c -fpie -Wstrict-prototypes -Wa,--noexecstack -D__ASSEMBLY__ -nostdlib -fomit-frame-pointer -I$(shell pwd)
|
CFLAGS += -fpie -Wstrict-prototypes -Wa,--noexecstack
|
||||||
|
CFLAGS += -nostdlib -fomit-frame-pointer -I$(obj)
|
||||||
|
ASMFLAGS += -D__ASSEMBLY__
|
||||||
|
|
||||||
ARCH_BITS := 32
|
ARCH_BITS := 32
|
||||||
|
|
||||||
.DEFAULT_GOAL := arm
|
$(obj)/$(SYS-ASM): $(obj)/$(SYS-GEN) $(obj)/$(SYS-DEF) $(obj)/$(SYS-ASM-COMMON) $(SYS-TYPES)
|
||||||
|
|
||||||
$(SYS-ASM): $(SYS-GEN) $(SYS-DEF) $(SYS-ASM-COMMON) $(SYS-TYPES)
|
|
||||||
$(E) " GEN " $@
|
$(E) " GEN " $@
|
||||||
$(Q) perl \
|
$(Q) perl \
|
||||||
$(SYS-GEN) \
|
$(obj)/$(SYS-GEN) \
|
||||||
$(SYS-DEF) \
|
$(obj)/$(SYS-DEF) \
|
||||||
$(SYS-CODES) \
|
$(SYS-CODES) \
|
||||||
$(SYS-PROTO) \
|
$(SYS-PROTO) \
|
||||||
$(SYS-ASM) \
|
$(obj)/$(SYS-ASM) \
|
||||||
$(SYS-ASM-COMMON) \
|
$(SYS-ASM-COMMON) \
|
||||||
$(SYS-TYPES) \
|
$(SYS-TYPES) \
|
||||||
$(ARCH_BITS)
|
$(ARCH_BITS)
|
||||||
|
|
||||||
|
$(obj)/syscalls.o: $(obj)/$(SYS-ASM)
|
||||||
|
|
||||||
$(SYS-EXEC-TBL): $(SYS-GEN-TBL) $(SYS-DEF)
|
$(SYS-EXEC-TBL): $(SYS-GEN-TBL) $(SYS-DEF)
|
||||||
$(E) " GEN " $@
|
$(E) " GEN " $@
|
||||||
$(Q) perl \
|
$(Q) perl \
|
||||||
$(SYS-GEN-TBL) \
|
$(obj)/$(SYS-GEN-TBL) \
|
||||||
$(SYS-DEF) \
|
$(obj)/$(SYS-DEF) \
|
||||||
$(SYS-EXEC-TBL) \
|
$(obj)/$(SYS-EXEC-TBL) \
|
||||||
$(ARCH_BITS)
|
$(ARCH_BITS)
|
||||||
|
|
||||||
%.o: %.S
|
_all += $(obj)/$(SYS-EXEC-TBL)
|
||||||
$(E) " CC " $@
|
|
||||||
$(Q) $(CC) $(CFLAGS) $^ -o $@
|
|
||||||
|
|
||||||
arm: $(SYS-OBJ) $(SYS-EXEC-TBL)
|
cleanup-y += $(obj)/$(SYS-EXEC-TBL) $(obj)/$(SYS-ASM)
|
||||||
|
cleanup-y += $(SYS-CODES)
|
||||||
|
cleanup-y += $(SYS-PROTO)
|
||||||
|
|
||||||
clean:
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
$(E) " CLEAN SYSCALLS"
|
incdeps := y
|
||||||
$(Q) $(RM) -f $(SYS-ASM)
|
endif
|
||||||
$(Q) $(RM) -f $(SYS-CODES)
|
|
||||||
$(Q) $(RM) -f $(SYS-PROTO)
|
|
||||||
$(Q) $(RM) -f $(SYS-OBJ)
|
|
||||||
$(Q) $(RM) -f $(SYS-EXEC-TBL)
|
|
||||||
$(Q) $(RM) -f *.o *.d
|
|
||||||
|
|
||||||
.PHONY: clean arm
|
|
||||||
|
@ -1,52 +1,52 @@
|
|||||||
SYS-DEF := $(ARCH_DIR)/syscall-x86-64.def
|
targets += syscalls
|
||||||
SYS-ASM-COMMON := syscall-common-x86-64.S
|
targets += crtools
|
||||||
SYS-TYPES := $(SRC_DIR)/include/syscall-types.h
|
|
||||||
|
|
||||||
SYS-CODES := $(SRC_DIR)/include/syscall-codes.h
|
|
||||||
SYS-PROTO := $(SRC_DIR)/include/syscall.h
|
|
||||||
|
|
||||||
SYS-ASM := syscalls.S
|
SYS-ASM := syscalls.S
|
||||||
SYS-GEN := syscalls-x86-64.sh
|
|
||||||
|
|
||||||
SYS-OBJ := syscalls.o
|
syscalls-asm-y += $(SYS-ASM:.S=).o
|
||||||
|
crtools-obj-y += crtools.o
|
||||||
|
|
||||||
|
SYS-DEF := syscall-x86-64.def
|
||||||
|
SYS-ASM-COMMON := syscall-common-x86-64.S
|
||||||
|
|
||||||
|
SYS-TYPES := include/syscall-types.h
|
||||||
|
SYS-CODES := include/syscall-codes.h
|
||||||
|
SYS-PROTO := include/syscall.h
|
||||||
|
|
||||||
|
SYS-GEN := syscalls-x86-64.sh
|
||||||
|
|
||||||
SYS-EXEC-TBL := sys-exec-tbl.c
|
SYS-EXEC-TBL := sys-exec-tbl.c
|
||||||
|
|
||||||
CFLAGS += -c -fpie -Wstrict-prototypes -Wa,--noexecstack -D__ASSEMBLY__ -nostdlib -fomit-frame-pointer -I$(shell pwd)
|
CFLAGS += -fpie -Wstrict-prototypes -Wa,--noexecstack
|
||||||
|
CFLAGS += -nostdlib -fomit-frame-pointer -I$(obj)
|
||||||
|
ASMFLAGS += -D__ASSEMBLY__
|
||||||
|
|
||||||
.DEFAULT_GOAL := x86
|
$(obj)/$(SYS-ASM): $(obj)/$(SYS-GEN) $(obj)/$(SYS-DEF) $(obj)/$(SYS-ASM-COMMON) $(SYS-TYPES)
|
||||||
|
|
||||||
$(SYS-ASM): $(SYS-GEN) $(SYS-DEF) $(SYS-ASM-COMMON) $(SYS-TYPES)
|
|
||||||
$(E) " GEN " $@
|
$(E) " GEN " $@
|
||||||
$(Q) $(SH) \
|
$(Q) $(SH) \
|
||||||
$(SYS-GEN) --asm \
|
$(obj)/$(SYS-GEN) --asm \
|
||||||
$(SYS-DEF) \
|
$(obj)/$(SYS-DEF) \
|
||||||
$(SYS-CODES) \
|
$(SYS-CODES) \
|
||||||
$(SYS-PROTO) \
|
$(SYS-PROTO) \
|
||||||
$(SYS-ASM) \
|
$(obj)/$(SYS-ASM) \
|
||||||
$(SYS-ASM-COMMON) \
|
$(SYS-ASM-COMMON) \
|
||||||
$(SYS-TYPES)
|
$(SYS-TYPES)
|
||||||
|
|
||||||
$(SYS-EXEC-TBL): $(SYS-GEN) $(SYS-DEF)
|
$(obj)/syscalls.o: $(obj)/$(SYS-ASM)
|
||||||
|
|
||||||
|
$(obj)/$(SYS-EXEC-TBL): $(obj)/$(SYS-GEN) $(obj)/$(SYS-DEF)
|
||||||
$(E) " GEN " $@
|
$(E) " GEN " $@
|
||||||
$(Q) $(SH) \
|
$(Q) $(SH) \
|
||||||
$(SYS-GEN) --exec \
|
$(obj)/$(SYS-GEN) --exec \
|
||||||
$(SYS-DEF) \
|
$(obj)/$(SYS-DEF) \
|
||||||
$(SYS-EXEC-TBL)
|
$(obj)/$(SYS-EXEC-TBL)
|
||||||
|
|
||||||
%.o: %.S
|
_all += $(obj)/$(SYS-EXEC-TBL)
|
||||||
$(E) " CC " $@
|
|
||||||
$(Q) $(CC) $(CFLAGS) $^ -o $@
|
|
||||||
|
|
||||||
x86: $(SYS-OBJ) $(SYS-EXEC-TBL)
|
cleanup-y += $(obj)/$(SYS-EXEC-TBL) $(obj)/$(SYS-ASM)
|
||||||
|
cleanup-y += $(SYS-CODES)
|
||||||
|
cleanup-y += $(SYS-PROTO)
|
||||||
|
|
||||||
clean:
|
ifneq ($(MAKECMDGOALS),clean)
|
||||||
$(E) " CLEAN SYSCALLS"
|
incdeps := y
|
||||||
$(Q) $(RM) -f $(SYS-ASM)
|
endif
|
||||||
$(Q) $(RM) -f $(SYS-CODES)
|
|
||||||
$(Q) $(RM) -f $(SYS-PROTO)
|
|
||||||
$(Q) $(RM) -f $(SYS-OBJ)
|
|
||||||
$(Q) $(RM) -f $(SYS-EXEC-TBL)
|
|
||||||
$(Q) $(RM) -f *.o *.d
|
|
||||||
|
|
||||||
.PHONY: clean x86
|
|
||||||
|
@ -3,13 +3,14 @@
|
|||||||
gen_asm() {
|
gen_asm() {
|
||||||
in=$1
|
in=$1
|
||||||
codesout=$2
|
codesout=$2
|
||||||
|
codesinc=`echo $2 | sed -e 's/.*include\///g'`
|
||||||
protosout=$3
|
protosout=$3
|
||||||
asmout=$4
|
asmout=$4
|
||||||
asmcommon=$5
|
asmcommon=`echo $5 | sed -e 's/.*include\///g'`
|
||||||
prototypes=`echo $6 | sed -e 's/.*include\///g'`
|
prototypes=`echo $6 | sed -e 's/.*include\///g'`
|
||||||
|
|
||||||
codesdef=`echo $codesout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _`
|
codesdef=`echo $codesout | sed -e 's/.*include\///g' | tr "[[:space:]].-" _`
|
||||||
protosdef=`echo $protosout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _`
|
protosdef=`echo $protosout | sed -e 's/.*include\///g' | tr "[[:space:]].-" _`
|
||||||
|
|
||||||
echo "/* Autogenerated, don't edit */" > $codesout
|
echo "/* Autogenerated, don't edit */" > $codesout
|
||||||
echo "#ifndef $codesdef" >> $codesout
|
echo "#ifndef $codesdef" >> $codesout
|
||||||
@ -19,10 +20,10 @@ gen_asm() {
|
|||||||
echo "#ifndef $protosdef" >> $protosout
|
echo "#ifndef $protosdef" >> $protosout
|
||||||
echo "#define $protosdef" >> $protosout
|
echo "#define $protosdef" >> $protosout
|
||||||
echo "#include \"$prototypes\"" >> $protosout
|
echo "#include \"$prototypes\"" >> $protosout
|
||||||
echo "#include \"$codesout\"" >> $protosout
|
echo "#include \"$codesinc\"" >> $protosout
|
||||||
|
|
||||||
echo "/* Autogenerated, don't edit */" > $asmout
|
echo "/* Autogenerated, don't edit */" > $asmout
|
||||||
echo "#include \"$codesout\"" >> $asmout
|
echo "#include \"$codesinc\"" >> $asmout
|
||||||
echo "#include \"$asmcommon\"" >> $asmout
|
echo "#include \"$asmcommon\"" >> $asmout
|
||||||
|
|
||||||
cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "#define", $1, $2}' >> $codesout
|
cat $in | egrep -v '^#' | sed -e 's/\t\{1,\}/|/g' | awk -F '|' '{print "#define", $1, $2}' >> $codesout
|
||||||
|
@ -16,7 +16,6 @@ ASMFLAGS := -D__ASSEMBLY__
|
|||||||
|
|
||||||
LIB-OBJS := log-simple.o blob-util-net.o
|
LIB-OBJS := log-simple.o blob-util-net.o
|
||||||
DEPS := $(RESTORER-ARCH-OBJS:.o=.d) $(LIB-OBJS:.o=.d)
|
DEPS := $(RESTORER-ARCH-OBJS:.o=.d) $(LIB-OBJS:.o=.d)
|
||||||
LIB-OBJS += $(SYSCALL-LIB)
|
|
||||||
|
|
||||||
$(PARASITE): $(LIB-OBJS) $(PASM-OBJS) $(PIELDS)
|
$(PARASITE): $(LIB-OBJS) $(PASM-OBJS) $(PIELDS)
|
||||||
$(RESTORER): $(LIB-OBJS) $(RESTORER-ARCH-OBJS) $(PIELDS)
|
$(RESTORER): $(LIB-OBJS) $(RESTORER-ARCH-OBJS) $(PIELDS)
|
||||||
@ -45,7 +44,7 @@ blob-util-net.o: $(SRC_DIR)/util-net.c
|
|||||||
|
|
||||||
%.bin.o: %.o
|
%.bin.o: %.o
|
||||||
$(E) " GEN " $@
|
$(E) " GEN " $@
|
||||||
$(Q) $(LD) -T $(PIELDS) -o $@ $(^:$(PIELDS)=)
|
$(Q) $(LD) -T $(PIELDS) -o $@ $(^:$(PIELDS)=) ../$(SYSCALL-LIB)
|
||||||
|
|
||||||
%.bin: %.bin.o
|
%.bin: %.bin.o
|
||||||
$(E) " GEN " $@
|
$(E) " GEN " $@
|
||||||
|
Loading…
x
Reference in New Issue
Block a user