mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-22 01:51:51 +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/*.h
|
||||
include/version.h
|
||||
arch/x86/sys-exec-tbl.c
|
||||
arch/x86/syscalls.S
|
||||
|
26
Makefile
26
Makefile
@ -81,13 +81,18 @@ else
|
||||
endif
|
||||
|
||||
CFLAGS += $(WARNINGS) $(DEFINES)
|
||||
SYSCALL-LIB = $(SRC_DIR)/arch/$(ARCH)/syscalls.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 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.rules
|
||||
#
|
||||
# shorthand
|
||||
build := -s -r -R --no-print-directory -f scripts/Makefile.build makefile=Makefile obj
|
||||
|
||||
PROGRAM := crtools
|
||||
|
||||
@ -135,12 +140,11 @@ OBJS += tty.o
|
||||
OBJS += cr-exec.o
|
||||
OBJS += cpu.o
|
||||
OBJS += file-lock.o
|
||||
OBJS += $(ARCH_DIR)/crtools.o
|
||||
|
||||
DEPS := $(patsubst %.o,%.d,$(OBJS))
|
||||
|
||||
.PHONY: all zdtm test rebuild clean distclean tags cscope \
|
||||
docs help pie protobuf $(ARCH)
|
||||
docs help pie protobuf arch/$(ARCH)
|
||||
|
||||
ifeq ($(GCOV),1)
|
||||
%.o $(PROGRAM): override CFLAGS += --coverage
|
||||
@ -149,15 +153,17 @@ endif
|
||||
all: pie $(VERSION_HEADER)
|
||||
$(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/
|
||||
|
||||
protobuf:
|
||||
$(Q) $(MAKE) -C protobuf/
|
||||
|
||||
$(ARCH):
|
||||
$(Q) $(MAKE) -C arch/$(ARCH)/
|
||||
|
||||
%.o: %.c
|
||||
$(E) " CC " $@
|
||||
$(Q) $(CC) -c $(CFLAGS) $< -o $@
|
||||
@ -174,7 +180,7 @@ $(ARCH):
|
||||
$(E) " DEP " $@
|
||||
$(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 " $@
|
||||
$(Q) $(CC) $(CFLAGS) $^ $(LIBS) -o $@
|
||||
|
||||
@ -195,6 +201,7 @@ rebuild:
|
||||
clean:
|
||||
$(E) " CLEAN"
|
||||
$(Q) $(RM) $(VERSION_HEADER)
|
||||
$(Q) $(MAKE) $(build)=arch/$(ARCH) clean
|
||||
$(Q) $(RM) ./*.o
|
||||
$(Q) $(RM) ./*.d
|
||||
$(Q) $(RM) ./*.i
|
||||
@ -208,7 +215,6 @@ clean:
|
||||
$(Q) $(RM) -r ./test/lib/
|
||||
$(Q) $(RM) -r ./test/lib64/
|
||||
$(Q) $(MAKE) -C protobuf/ clean
|
||||
$(Q) $(MAKE) -C arch/$(ARCH)/ clean
|
||||
$(Q) $(MAKE) -C pie/ clean
|
||||
$(Q) $(MAKE) -C test/zdtm cleandep
|
||||
$(Q) $(MAKE) -C test/zdtm clean
|
||||
|
@ -1,57 +1,57 @@
|
||||
SYS-DEF := $(ARCH_DIR)/syscall.def
|
||||
SYS-ASM-COMMON := syscall-common.S
|
||||
SYS-TYPES := $(SRC_DIR)/include/syscall-types.h
|
||||
|
||||
SYS-CODES := $(SRC_DIR)/include/syscall-codes.h
|
||||
SYS-PROTO := $(SRC_DIR)/include/syscall.h
|
||||
targets += syscalls
|
||||
targets += crtools
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
.DEFAULT_GOAL := arm
|
||||
|
||||
$(SYS-ASM): $(SYS-GEN) $(SYS-DEF) $(SYS-ASM-COMMON) $(SYS-TYPES)
|
||||
$(obj)/$(SYS-ASM): $(obj)/$(SYS-GEN) $(obj)/$(SYS-DEF) $(obj)/$(SYS-ASM-COMMON) $(SYS-TYPES)
|
||||
$(E) " GEN " $@
|
||||
$(Q) perl \
|
||||
$(SYS-GEN) \
|
||||
$(SYS-DEF) \
|
||||
$(obj)/$(SYS-GEN) \
|
||||
$(obj)/$(SYS-DEF) \
|
||||
$(SYS-CODES) \
|
||||
$(SYS-PROTO) \
|
||||
$(SYS-ASM) \
|
||||
$(obj)/$(SYS-ASM) \
|
||||
$(SYS-ASM-COMMON) \
|
||||
$(SYS-TYPES) \
|
||||
$(ARCH_BITS)
|
||||
|
||||
$(obj)/syscalls.o: $(obj)/$(SYS-ASM)
|
||||
|
||||
$(SYS-EXEC-TBL): $(SYS-GEN-TBL) $(SYS-DEF)
|
||||
$(E) " GEN " $@
|
||||
$(Q) perl \
|
||||
$(SYS-GEN-TBL) \
|
||||
$(SYS-DEF) \
|
||||
$(SYS-EXEC-TBL) \
|
||||
$(obj)/$(SYS-GEN-TBL) \
|
||||
$(obj)/$(SYS-DEF) \
|
||||
$(obj)/$(SYS-EXEC-TBL) \
|
||||
$(ARCH_BITS)
|
||||
|
||||
%.o: %.S
|
||||
$(E) " CC " $@
|
||||
$(Q) $(CC) $(CFLAGS) $^ -o $@
|
||||
_all += $(obj)/$(SYS-EXEC-TBL)
|
||||
|
||||
arm: $(SYS-OBJ) $(SYS-EXEC-TBL)
|
||||
cleanup-y += $(obj)/$(SYS-EXEC-TBL) $(obj)/$(SYS-ASM)
|
||||
cleanup-y += $(SYS-CODES)
|
||||
cleanup-y += $(SYS-PROTO)
|
||||
|
||||
clean:
|
||||
$(E) " CLEAN SYSCALLS"
|
||||
$(Q) $(RM) -f $(SYS-ASM)
|
||||
$(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
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
incdeps := y
|
||||
endif
|
||||
|
@ -1,52 +1,52 @@
|
||||
SYS-DEF := $(ARCH_DIR)/syscall-x86-64.def
|
||||
SYS-ASM-COMMON := syscall-common-x86-64.S
|
||||
SYS-TYPES := $(SRC_DIR)/include/syscall-types.h
|
||||
|
||||
SYS-CODES := $(SRC_DIR)/include/syscall-codes.h
|
||||
SYS-PROTO := $(SRC_DIR)/include/syscall.h
|
||||
targets += syscalls
|
||||
targets += crtools
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
$(SYS-ASM): $(SYS-GEN) $(SYS-DEF) $(SYS-ASM-COMMON) $(SYS-TYPES)
|
||||
$(obj)/$(SYS-ASM): $(obj)/$(SYS-GEN) $(obj)/$(SYS-DEF) $(obj)/$(SYS-ASM-COMMON) $(SYS-TYPES)
|
||||
$(E) " GEN " $@
|
||||
$(Q) $(SH) \
|
||||
$(SYS-GEN) --asm \
|
||||
$(SYS-DEF) \
|
||||
$(SYS-CODES) \
|
||||
$(SYS-PROTO) \
|
||||
$(SYS-ASM) \
|
||||
$(SYS-ASM-COMMON) \
|
||||
$(Q) $(SH) \
|
||||
$(obj)/$(SYS-GEN) --asm \
|
||||
$(obj)/$(SYS-DEF) \
|
||||
$(SYS-CODES) \
|
||||
$(SYS-PROTO) \
|
||||
$(obj)/$(SYS-ASM) \
|
||||
$(SYS-ASM-COMMON) \
|
||||
$(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 " $@
|
||||
$(Q) $(SH) \
|
||||
$(SYS-GEN) --exec \
|
||||
$(SYS-DEF) \
|
||||
$(SYS-EXEC-TBL)
|
||||
$(Q) $(SH) \
|
||||
$(obj)/$(SYS-GEN) --exec \
|
||||
$(obj)/$(SYS-DEF) \
|
||||
$(obj)/$(SYS-EXEC-TBL)
|
||||
|
||||
%.o: %.S
|
||||
$(E) " CC " $@
|
||||
$(Q) $(CC) $(CFLAGS) $^ -o $@
|
||||
_all += $(obj)/$(SYS-EXEC-TBL)
|
||||
|
||||
x86: $(SYS-OBJ) $(SYS-EXEC-TBL)
|
||||
cleanup-y += $(obj)/$(SYS-EXEC-TBL) $(obj)/$(SYS-ASM)
|
||||
cleanup-y += $(SYS-CODES)
|
||||
cleanup-y += $(SYS-PROTO)
|
||||
|
||||
clean:
|
||||
$(E) " CLEAN SYSCALLS"
|
||||
$(Q) $(RM) -f $(SYS-ASM)
|
||||
$(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
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
incdeps := y
|
||||
endif
|
||||
|
@ -3,13 +3,14 @@
|
||||
gen_asm() {
|
||||
in=$1
|
||||
codesout=$2
|
||||
codesinc=`echo $2 | sed -e 's/.*include\///g'`
|
||||
protosout=$3
|
||||
asmout=$4
|
||||
asmcommon=$5
|
||||
asmcommon=`echo $5 | sed -e 's/.*include\///g'`
|
||||
prototypes=`echo $6 | sed -e 's/.*include\///g'`
|
||||
|
||||
codesdef=`echo $codesout | sed -e 's/.*\/include\///g' | tr "[[:space:]].-" _`
|
||||
protosdef=`echo $protosout | 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:]].-" _`
|
||||
|
||||
echo "/* Autogenerated, don't edit */" > $codesout
|
||||
echo "#ifndef $codesdef" >> $codesout
|
||||
@ -19,10 +20,10 @@ gen_asm() {
|
||||
echo "#ifndef $protosdef" >> $protosout
|
||||
echo "#define $protosdef" >> $protosout
|
||||
echo "#include \"$prototypes\"" >> $protosout
|
||||
echo "#include \"$codesout\"" >> $protosout
|
||||
echo "#include \"$codesinc\"" >> $protosout
|
||||
|
||||
echo "/* Autogenerated, don't edit */" > $asmout
|
||||
echo "#include \"$codesout\"" >> $asmout
|
||||
echo "#include \"$codesinc\"" >> $asmout
|
||||
echo "#include \"$asmcommon\"" >> $asmout
|
||||
|
||||
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
|
||||
DEPS := $(RESTORER-ARCH-OBJS:.o=.d) $(LIB-OBJS:.o=.d)
|
||||
LIB-OBJS += $(SYSCALL-LIB)
|
||||
|
||||
$(PARASITE): $(LIB-OBJS) $(PASM-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
|
||||
$(E) " GEN " $@
|
||||
$(Q) $(LD) -T $(PIELDS) -o $@ $(^:$(PIELDS)=)
|
||||
$(Q) $(LD) -T $(PIELDS) -o $@ $(^:$(PIELDS)=) ../$(SYSCALL-LIB)
|
||||
|
||||
%.bin: %.bin.o
|
||||
$(E) " GEN " $@
|
||||
|
Loading…
x
Reference in New Issue
Block a user