Commit 5fe6f90b authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

make: Add own Makefile.pie for binary blobs we generate

Since the blob files are generated a different way
in compare with plain compiling we use for regular
*.c files -- add own Makefile.pie for this target.

This increases readability of general Makefile
and Makefile.pie itself.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 4a2a2901
...@@ -23,11 +23,8 @@ PROGRAM := crtools ...@@ -23,11 +23,8 @@ PROGRAM := crtools
export CC ECHO MAKE CFLAGS LIBS ARCH DEFINES export CC ECHO MAKE CFLAGS LIBS ARCH DEFINES
OBJS_GEN_DEP += parasite-syscall.o OBJS += parasite-syscall.o
OBJS_GEN_DEP += cr-restore.o OBJS += cr-restore.o
DEPS_GEN := $(patsubst %.o,%.d,$(OBJS_GEN_DEP))
OBJS += $(OBJS_GEN_DEP)
OBJS += crtools.o OBJS += crtools.o
OBJS += proc_parse.o OBJS += proc_parse.o
OBJS += cr-dump.o OBJS += cr-dump.o
...@@ -49,68 +46,12 @@ OBJS += namespaces.o ...@@ -49,68 +46,12 @@ OBJS += namespaces.o
OBJS += uts_ns.o OBJS += uts_ns.o
OBJS += ipc_ns.o OBJS += ipc_ns.o
OBJS-BLOB += parasite.o DEPS := $(patsubst %.o,%.d,$(OBJS))
SRCS-BLOB += $(patsubst %.o,%.c,$(OBJS-BLOB))
PIE-LDS := pie.lds.S
HEAD-BLOB-GEN := $(patsubst %.o,%-blob.h,$(OBJS-BLOB))
HEAD-BIN := $(patsubst %.o,%.bin,$(OBJS-BLOB))
ROBJS-BLOB := restorer.o
#
# Everything embedded into restorer as a separate
# object file should go here.
ROBJS := $(ROBJS-BLOB)
ROBJS += restorer-log.o
RSRCS-BLOB += $(patsubst %.o,%.c,$(ROBJS))
RSRCS-BLOB += $(patsubst %.o,%.c,$(ROBJS-BLOB)) include Makefile.pie
RHEAD-BLOB-GEN := $(patsubst %.o,%-blob.h,$(ROBJS-BLOB))
RHEAD-BIN := $(patsubst %.o,%.bin,$(ROBJS-BLOB))
DEPS := $(patsubst %.o,%.d,$(OBJS)) \
$(patsubst %.o,%.d,$(OBJS-BLOB)) \
$(patsubst %.o,%.d,$(ROBJS-BLOB))
GEN-OFFSETS := gen-offsets.sh
all: $(PROGRAM) all: $(PROGRAM)
$(OBJS-BLOB): $(SRCS-BLOB)
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) -fpie $< -o $@
parasite-util-net.o: util-net.c
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) -fpie $< -o $@
$(HEAD-BIN): $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o
$(E) " GEN " $@
$(Q) $(LD) --oformat=binary -T $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o -o $@
$(Q) $(LD) --oformat=elf64-x86-64 -T $(PIE-LDS) $(OBJS-BLOB) parasite-util-net.o -o $@.o
$(HEAD-BLOB-GEN): $(HEAD-BIN) $(GEN-OFFSETS)
$(E) " GEN " $@
$(Q) $(SH) $(GEN-OFFSETS) parasite > $@ || rm -f $@
$(Q) sync
$(ROBJS): $(RSRCS-BLOB)
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) -fpie $(patsubst %.o,%.c,$@) -o $@
$(RHEAD-BIN): $(ROBJS) $(PIE-LDS)
$(E) " GEN " $@
$(Q) $(LD) --oformat=binary -T $(PIE-LDS) $(ROBJS) -o $@
$(Q) $(LD) --oformat=elf64-x86-64 -T $(PIE-LDS) $(ROBJS) -o $@.o
$(RHEAD-BLOB-GEN): $(RHEAD-BIN) $(GEN-OFFSETS)
$(E) " GEN " $@
$(Q) $(SH) $(GEN-OFFSETS) restorer > $@ || rm -f $@
$(Q) sync
%.o: %.c %.o: %.c
$(E) " CC " $@ $(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $< -o $@ $(Q) $(CC) -c $(CFLAGS) $< -o $@
...@@ -123,12 +64,11 @@ $(RHEAD-BLOB-GEN): $(RHEAD-BIN) $(GEN-OFFSETS) ...@@ -123,12 +64,11 @@ $(RHEAD-BLOB-GEN): $(RHEAD-BIN) $(GEN-OFFSETS)
$(E) " CC " $@ $(E) " CC " $@
$(Q) $(CC) -S $(CFLAGS) -fverbose-asm $< -o $@ $(Q) $(CC) -S $(CFLAGS) -fverbose-asm $< -o $@
$(PROGRAM): $(OBJS) $(PROGRAM): $(OBJS) | $(PIE-GEN)
$(E) " LINK " $@ $(E) " LINK " $@
$(Q) $(CC) $(CFLAGS) $(OBJS) $(LIBS) -o $@ $(Q) $(CC) $(CFLAGS) $(OBJS) $(LIBS) -o $@
$(DEPS_GEN): $(HEAD-BLOB-GEN) $(RHEAD-BLOB-GEN) %.d: %.c | $(PIE-GEN)
%.d: %.c
$(Q) $(CC) -M -MT $(patsubst %.d,%.o,$@) $(CFLAGS) $< -o $@ $(Q) $(CC) -M -MT $(patsubst %.d,%.o,$@) $(CFLAGS) $< -o $@
test-legacy: $(PROGRAM) test-legacy: $(PROGRAM)
...@@ -150,7 +90,7 @@ rebuild: ...@@ -150,7 +90,7 @@ rebuild:
$(Q) $(MAKE) $(Q) $(MAKE)
.PHONY: rebuild .PHONY: rebuild
clean: clean: cleanpie
$(E) " CLEAN" $(E) " CLEAN"
$(Q) $(RM) -f ./*.o $(Q) $(RM) -f ./*.o
$(Q) $(RM) -f ./*.d $(Q) $(RM) -f ./*.d
...@@ -159,8 +99,6 @@ clean: ...@@ -159,8 +99,6 @@ clean:
$(Q) $(RM) -f ./*.out $(Q) $(RM) -f ./*.out
$(Q) $(RM) -f ./*.bin $(Q) $(RM) -f ./*.bin
$(Q) $(RM) -f ./$(PROGRAM) $(Q) $(RM) -f ./$(PROGRAM)
$(Q) $(RM) -f ./$(HEAD-BLOB-GEN)
$(Q) $(RM) -f ./$(RHEAD-BLOB-GEN)
$(Q) $(RM) -rf ./test/dump/ $(Q) $(RM) -rf ./test/dump/
$(Q) $(MAKE) -C test/legacy clean $(Q) $(MAKE) -C test/legacy clean
$(Q) $(MAKE) -C test/zdtm cleandep $(Q) $(MAKE) -C test/zdtm cleandep
...@@ -206,6 +144,8 @@ help: ...@@ -206,6 +144,8 @@ help:
deps-targets := %.o %.s %.i $(PROGRAM) zdtm test-legacy deps-targets := %.o %.s %.i $(PROGRAM) zdtm test-legacy
.DEFAULT_GOAL := $(PROGRAM)
ifneq ($(filter $(deps-targets), $(MAKECMDGOALS)),) ifneq ($(filter $(deps-targets), $(MAKECMDGOALS)),)
INCDEPS := 1 INCDEPS := 1
endif endif
......
GEN-OFFSETS := gen-offsets.sh
POBJS += parasite.o
PSRCS += $(patsubst %.o,%.c,$(POBJS))
PBLOB-NAME := parasite
PBLOB-HDR := parasite-blob.h
PBLOB-BIN := parasite.bin
PBLOB-LDS := pie.lds.S
ROBJS += restorer.o
ROBJS += restorer-log.o
RSRCS += $(patsubst %.o,%.c,$(ROBJS))
RBLOB-NAME := restorer
RBLOB-HDR := restorer-blob.h
RBLOB-BIN := restorer.bin
RBLOB-LDS := pie.lds.S
DEPS += $(patsubst %.o,%.d,$(POBJS))
DEPS += $(patsubst %.o,%.d,$(ROBJS))
PIEFLAGS := -fpie
$(POBJS): $(PSRCS) $(PASM-OBJS)
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $(PIEFLAGS) $(patsubst %.o,%.c,$@) -o $@
parasite-util-net.o: util-net.c
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $(PIEFLAGS) $< -o $@
POBJS += parasite-util-net.o
$(PBLOB-BIN): $(PBLOB-LDS) $(POBJS)
$(E) " GEN " $@
$(Q) $(LD) --oformat=binary -T $(PBLOB-LDS) -o $(PBLOB-BIN) $(POBJS)
$(Q) $(LD) --oformat=elf64-x86-64 -T $(PBLOB-LDS) -o $(PBLOB-BIN).o $(POBJS)
$(PBLOB-HDR): $(PBLOB-BIN) $(GEN-OFFSETS)
$(E) " GEN " $@
$(Q) $(SH) $(GEN-OFFSETS) $(PBLOB-NAME) > $@ || rm -f $@
$(ROBJS): $(RSRCS)
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $(PIEFLAGS) $(patsubst %.o,%.c,$@) -o $@
$(RBLOB-BIN): $(RBLOB-LDS) $(ROBJS)
$(E) " GEN " $@
$(Q) $(LD) --oformat=binary -T $(RBLOB-LDS) -o $(RBLOB-BIN) $(ROBJS)
$(Q) $(LD) --oformat=elf64-x86-64 -T $(RBLOB-LDS) -o $(RBLOB-BIN).o $(ROBJS)
$(RBLOB-HDR): $(RBLOB-BIN) $(GEN-OFFSETS)
$(E) " GEN " $@
$(Q) $(SH) $(GEN-OFFSETS) $(RBLOB-NAME) > $@ || rm -f $@
PIE-GEN := $(PBLOB-HDR) $(RBLOB-HDR)
cleanpie:
$(E) " CLEAN PIE"
$(Q) $(RM) -f ./$(PBLOB-HDR)
$(Q) $(RM) -f ./$(RBLOB-HDR)
$(Q) $(RM) -f ./*.bin
$(Q) $(RM) -f ./*.bin.o
.PHONY: cleanpie
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment