adapt "out of tree build" for arm64

This commit is contained in:
Takayuki Okamoto
2017-09-11 15:29:53 +09:00
parent 0278a876db
commit 325082a571
7 changed files with 65 additions and 62 deletions

View File

@ -1,5 +1,6 @@
# Makefile.arch COPYRIGHT FUJITSU LIMITED 2015-2017 # Makefile.arch COPYRIGHT FUJITSU LIMITED 2015-2017
VDSO_SRCDIR = $(SRC)/../arch/$(IHKARCH)/kernel/vdso VDSO_SRCDIR = $(SRC)/../arch/$(IHKARCH)/kernel/vdso
VDSO_BUILDDIR = @abs_builddir@/vdso
VDSO_SO_O = $(O)/vdso.so.o VDSO_SO_O = $(O)/vdso.so.o
IHK_OBJS += assert.o cache.o cpu.o cputable.o context.o entry.o entry-fpsimd.o IHK_OBJS += assert.o cache.o cpu.o cputable.o context.o entry.o entry-fpsimd.o
@ -16,12 +17,12 @@ IHK_OBJS += cpufeature.o
# IHK_OBJS added coredump.o # IHK_OBJS added coredump.o
IHK_OBJS += coredump.o IHK_OBJS += coredump.o
$(VDSO_SO_O): $(VDSO_SRCDIR)/vdso.so $(VDSO_SO_O): $(VDSO_BUILDDIR)/vdso.so
$(VDSO_SRCDIR)/vdso.so: FORCE $(VDSO_BUILDDIR)/vdso.so: FORCE
$(call echo_cmd,BUILD VDSO,$(TARGET)) $(call echo_cmd,BUILD VDSO,$(TARGET))
@mkdir -p $(O)/vdso @mkdir -p $(O)/vdso
@TARGETDIR="$(TARGETDIR)" $(submake) -C $(VDSO_SRCDIR) $(SUBOPTS) prepare @TARGETDIR="$(TARGETDIR)" $(submake) -C $(VDSO_BUILDDIR) $(SUBOPTS) prepare
@TARGETDIR="$(TARGETDIR)" $(submake) -C $(VDSO_SRCDIR) $(SUBOPTS) @TARGETDIR="$(TARGETDIR)" $(submake) -C $(VDSO_BUILDDIR) $(SUBOPTS)
FORCE: FORCE:

View File

@ -19,13 +19,14 @@
*/ */
#include <arch-memory.h> #include <arch-memory.h>
#include <vdso-so-path.h>
.section ".vdso.txet", "aw" .section ".vdso.txet", "aw"
.globl vdso_start, vdso_end .globl vdso_start, vdso_end
.balign PAGE_SIZE .balign PAGE_SIZE
vdso_start: vdso_start:
.incbin "../../mckernel/arch/arm64/kernel/vdso/vdso.so" .incbin VDSO_SO_PATH
.balign PAGE_SIZE .balign PAGE_SIZE
vdso_end: vdso_end:

View File

@ -8,14 +8,18 @@ HOST_KERNEL_CONFIG_ARM64_4K_PAGES=$(shell grep -E "^CONFIG_ARM64_4K_PAGES=y" $(H
HOST_KERNEL_CONFIG_ARM64_16K_PAGES=$(shell grep -E "^CONFIG_ARM64_16K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_16K_PAGES=||g') HOST_KERNEL_CONFIG_ARM64_16K_PAGES=$(shell grep -E "^CONFIG_ARM64_16K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_16K_PAGES=||g')
HOST_KERNEL_CONFIG_ARM64_64K_PAGES=$(shell grep -E "^CONFIG_ARM64_64K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_64K_PAGES=||g') HOST_KERNEL_CONFIG_ARM64_64K_PAGES=$(shell grep -E "^CONFIG_ARM64_64K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_64K_PAGES=||g')
VDSOBASE = $(CURDIR) VDSOSRC = @abs_srcdir@
INCDIR = $(VDSOBASE)/../include VDSOBUILD = @abs_builddir@
INCDIR = $(VDSOSRC)/../include
ECHO_SUFFIX = [VDSO] ECHO_SUFFIX = [VDSO]
VDSO_OBJS := gettimeofday.o note.o sigreturn.o VDSOOBJS := gettimeofday.o
DESTOBJS = $(addprefix $(VDSOBASE)/, $(VDSO_OBJS)) DESTOBJS = $(addprefix $(VDSOBUILD)/, $(VDSOOBJS))
$(if $(VDSOBASE),,$(error IHK output directory is not specified)) VDSOASMOBJS := note.o sigreturn.o
DESTASMOBJS = $(addprefix $(VDSOBUILD)/, $(VDSOASMOBJS))
$(if $(VDSOSRC),,$(error IHK output directory is not specified))
$(if $(TARGET),,$(error Target is not specified)) $(if $(TARGET),,$(error Target is not specified))
#CFLAGS := -nostdinc -mlittle-endian -Wall -mabi=lp64 -Wa,-gdwarf-2 #CFLAGS := -nostdinc -mlittle-endian -Wall -mabi=lp64 -Wa,-gdwarf-2
@ -42,7 +46,7 @@ LDFLAGS += --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO
LDFLAGS += -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(vdso.so)" LDFLAGS += -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(vdso.so)"
LDFLAGS += -D"KBUILD_MODNAME=KBUILD_STR(vdso.so)" -D__KERNEL__ LDFLAGS += -D"KBUILD_MODNAME=KBUILD_STR(vdso.so)" -D__KERNEL__
DEPSRCS = $(wildcard $(VDSOBASE)/*.c $(VDSOBASE)/*.S) DEPSRCS = $(wildcard $(VDSOSRC)/*.c $(VDSOSRC)/*.S)
CFLAGS_lds := -E -P -C -U$(ARCH) CFLAGS_lds := -E -P -C -U$(ARCH)
CFLAGS_lds += -nostdinc CFLAGS_lds += -nostdinc
@ -62,43 +66,47 @@ CFLAGS_lds += -DPAGE_SIZE=0x10000
endif endif
#load mckernel config (append CPPFLAGS) #load mckernel config (append CPPFLAGS)
include $(IHKBASE)/$(TARGETDIR)/Makefile.predefines include @abs_top_builddir@/../ihk/cokernel/$(TARGETDIR)/Makefile.predefines
default: all default: all
.PHONY: all clean depend prepare .PHONY: all clean depend prepare
all: depend $(VDSOBASE)/vdso.so $(INCDIR)/vdso-offsets.h all: depend $(VDSOBUILD)/vdso.so $(VDSOBUILD)/../include/vdso-offsets.h $(VDSOBUILD)/../include/vdso-so-path.h
# Strip rule for the .so file # Strip rule for the .so file
$(VDSOBASE)/vdso.so: OBJCOPYFLAGS := -S $(VDSOBUILD)/vdso.so: OBJCOPYFLAGS := -S
$(VDSOBASE)/vdso.so: $(VDSOBASE)/vdso.so.dbg $(VDSOBUILD)/vdso.so: $(VDSOBUILD)/vdso.so.dbg
$(objcopy_cmd) $(objcopy_cmd)
# Generate VDSO offsets using helper script # Generate VDSO offsets using helper script
$(INCDIR)/vdso-offsets.h: $(VDSOBASE)/vdso.so.dbg $(VDSOBUILD)/../include/vdso-offsets.h: $(VDSOBUILD)/vdso.so.dbg
$(call echo_cmd,VDSOSYM,$<) $(call echo_cmd,VDSOSYM,$<)
@nm $< | sh gen_vdso_offsets.sh | LC_ALL=C sort > $@ @mkdir -p $(VDSOBUILD)/../include
@nm $< | sh $(VDSOSRC)/gen_vdso_offsets.sh | LC_ALL=C sort > $@
$(VDSOBUILD)/../include/vdso-so-path.h:
@echo "#define VDSO_SO_PATH \"@abs_builddir@/vdso.so\"" > $@
# Link rule for the .so file, .lds has to be first # Link rule for the .so file, .lds has to be first
$(VDSOBASE)/vdso.so.dbg: $(VDSOBASE)/vdso.lds $(DESTOBJS) $(VDSOBUILD)/vdso.so.dbg: $(VDSOBUILD)/vdso.lds $(DESTOBJS) $(DESTASMOBJS)
$(ld_cmd) $(ld_cmd)
$(VDSOBASE)/vdso.lds: vdso.lds.S $(VDSOBUILD)/vdso.lds: $(VDSOSRC)/vdso.lds.S
$(lds_cmd) $(lds_cmd)
clean: clean:
$(rm_cmd) $(DESTOBJS) $(VDSOBASE)/Makefile.dep $(rm_cmd) $(DESTOBJS) $(DESTASMOBJS) $(VDSOBUILD)/Makefile.dep $(VDSOBUILD)/vdso.* -r $(VDSOBUILD)/../include
depend: $(VDSOBASE)/Makefile.dep depend: $(VDSOBUILD)/Makefile.dep
$(VDSOBASE)/Makefile.dep: $(VDSOBUILD)/Makefile.dep:
$(call dep_cmd,$(DEPSRCS)) $(call dep_cmd,$(DEPSRCS))
prepare: prepare:
@$(RM) $(VDSOBASE)/Makefile.dep @$(RM) $(VDSOBUILD)/Makefile.dep
-include $(VDSOBASE)/Makefile.dep -include $(VDSOBUILD)/Makefile.dep
# Actual build commands # Actual build commands
ifeq ($(V),1) ifeq ($(V),1)
@ -109,15 +117,15 @@ echo_cmd = @echo ' ($(TARGET))' $1 $(ECHO_SUFFIX) $2;
submake = make --no-print-directory submake = make --no-print-directory
endif endif
cc_cmd = $(call echo_cmd,CC,$<)$(CC) $(CFLAGS) -c -o $@ $< cc_cmd = $(call echo_cmd,CC,$<)$(CC) $(CFLAGS) -c -o $@
ld_cmd = $(call echo_cmd,LD,$@)$(CC) $(LDFLAGS) $^ -o $@ ld_cmd = $(call echo_cmd,LD,$@)$(CC) $(LDFLAGS) $^ -o $@
dep_cmd = $(call echo_cmd,DEPEND,)$(CC) $(CFLAGS) -MM $1 > $@ dep_cmd = $(call echo_cmd,DEPEND,)$(CC) $(CFLAGS) -MM $1 > $@
rm_cmd = $(call echo_cmd,CLEAN,)$(RM) rm_cmd = $(call echo_cmd,CLEAN,)$(RM)
objcopy_cmd = $(call echo_cmd,OBJCOPY,$<)$(OBJCOPY) $(OBJCOPYFLAGS) $< $@ objcopy_cmd = $(call echo_cmd,OBJCOPY,$<)$(OBJCOPY) $(OBJCOPYFLAGS) $< $@
lds_cmd = $(call echo_cmd,LDS,$<)$(CC) $(CFLAGS_lds) -c -o $@ $< lds_cmd = $(call echo_cmd,LDS,$<)$(CC) $(CFLAGS_lds) -c -o $@ $<
.c.o: $(DESTOBJS):
$(cc_cmd) $(cc_cmd) $(addprefix $(VDSOSRC)/, $(notdir $(@:.o=.c)))
.S.o: $(DESTASMOBJS):
$(cc_cmd) -D__ASSEMBLY__ $(cc_cmd) $(addprefix $(VDSOSRC)/, $(notdir $(@:.o=.S))) -D__ASSEMBLY__

25
configure vendored
View File

@ -5016,25 +5016,15 @@ _ACEOF
ac_config_headers="$ac_config_headers config.h" ac_config_headers="$ac_config_headers config.h"
# POSTK_DEBUG_ARCH_DEP_37 # POSTK_DEBUG_ARCH_DEP_37
#AC_CONFIG_FILES([ # AC_CONFIG_FILES arch dependfiles separate
# Makefile ac_config_files="$ac_config_files Makefile executer/user/Makefile executer/user/arch/$ARCH/Makefile executer/kernel/mcctrl/Makefile executer/kernel/mcctrl/arch/$ARCH/Makefile executer/kernel/mcoverlayfs/Makefile executer/kernel/mcoverlayfs/linux-3.10.0-327.36.1.el7/Makefile executer/kernel/mcoverlayfs/linux-4.0.9/Makefile executer/kernel/mcoverlayfs/linux-4.6.7/Makefile executer/include/qlmpilib.h kernel/Makefile kernel/Makefile.build kernel/include/swapfmt.h arch/x86/tools/mcreboot-attached-mic.sh arch/x86/tools/mcshutdown-attached-mic.sh arch/x86/tools/mcreboot-builtin-x86.sh arch/x86/tools/mcreboot-smp-x86.sh arch/x86/tools/mcstop+release-smp-x86.sh arch/x86/tools/eclair-dump-backtrace.exp arch/x86/tools/mcshutdown-builtin-x86.sh arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in arch/x86/tools/irqbalance_mck.service arch/x86/tools/irqbalance_mck.in"
# executer/user/Makefile
# executer/kernel/mcctrl/Makefile
# executer/kernel/mcctrl/arch/x86_64/Makefile
# executer/kernel/mcoverlayfs/Makefile
# kernel/Makefile
# kernel/Makefile.build
# arch/x86/tools/mcreboot-attached-mic.sh
# arch/x86/tools/mcshutdown-attached-mic.sh
# arch/x86/tools/mcreboot-builtin-x86.sh
# arch/x86/tools/mcreboot-smp-x86.sh
# arch/x86/tools/mcstop+release-smp-x86.sh
# arch/x86/tools/mcshutdown-builtin-x86.sh
# arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in
#])
ac_config_files="$ac_config_files Makefile executer/user/Makefile executer/user/arch/$ARCH/Makefile executer/kernel/mcctrl/Makefile executer/kernel/mcctrl/arch/$ARCH/Makefile executer/kernel/mcoverlayfs/Makefile executer/kernel/mcoverlayfs/linux-3.10.0-327.36.1.el7/Makefile executer/kernel/mcoverlayfs/linux-4.0.9/Makefile executer/kernel/mcoverlayfs/linux-4.6.7/Makefile executer/include/qlmpilib.h kernel/Makefile kernel/Makefile.build kernel/include/swapfmt.h arch/x86/tools/mcreboot-attached-mic.sh arch/x86/tools/mcshutdown-attached-mic.sh arch/x86/tools/mcreboot-builtin-x86.sh arch/x86/tools/mcreboot-smp-x86.sh arch/x86/tools/mcstop+release-smp-x86.sh arch/x86/tools/eclair-dump-backtrace.exp arch/x86/tools/mcshutdown-builtin-x86.sh arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in arch/x86/tools/irqbalance_mck.service arch/x86/tools/irqbalance_mck.in kernel/config/config.smp-arm64 arch/arm64/kernel/vdso/Makefile"
if test "$TARGET" = "smp-arm64"; then
ac_config_files="$ac_config_files kernel/config/config.smp-arm64 arch/arm64/kernel/vdso/Makefile arch/arm64/kernel/Makefile.arch"
fi
if test "x$enable_dcfa" = xyes; then : if test "x$enable_dcfa" = xyes; then :
ac_config_files="$ac_config_files kernel/Makefile.dcfa" ac_config_files="$ac_config_files kernel/Makefile.dcfa"
@ -5756,6 +5746,7 @@ do
"arch/x86/tools/irqbalance_mck.in") CONFIG_FILES="$CONFIG_FILES arch/x86/tools/irqbalance_mck.in" ;; "arch/x86/tools/irqbalance_mck.in") CONFIG_FILES="$CONFIG_FILES arch/x86/tools/irqbalance_mck.in" ;;
"kernel/config/config.smp-arm64") CONFIG_FILES="$CONFIG_FILES kernel/config/config.smp-arm64" ;; "kernel/config/config.smp-arm64") CONFIG_FILES="$CONFIG_FILES kernel/config/config.smp-arm64" ;;
"arch/arm64/kernel/vdso/Makefile") CONFIG_FILES="$CONFIG_FILES arch/arm64/kernel/vdso/Makefile" ;; "arch/arm64/kernel/vdso/Makefile") CONFIG_FILES="$CONFIG_FILES arch/arm64/kernel/vdso/Makefile" ;;
"arch/arm64/kernel/Makefile.arch") CONFIG_FILES="$CONFIG_FILES arch/arm64/kernel/Makefile.arch" ;;
"kernel/Makefile.dcfa") CONFIG_FILES="$CONFIG_FILES kernel/Makefile.dcfa" ;; "kernel/Makefile.dcfa") CONFIG_FILES="$CONFIG_FILES kernel/Makefile.dcfa" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;

View File

@ -513,22 +513,7 @@ AC_SUBST(uncomment_if_ENABLE_MEMDUMP)
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
# POSTK_DEBUG_ARCH_DEP_37 # POSTK_DEBUG_ARCH_DEP_37
#AC_CONFIG_FILES([ # AC_CONFIG_FILES arch dependfiles separate
# Makefile
# executer/user/Makefile
# executer/kernel/mcctrl/Makefile
# executer/kernel/mcctrl/arch/x86_64/Makefile
# executer/kernel/mcoverlayfs/Makefile
# kernel/Makefile
# kernel/Makefile.build
# arch/x86/tools/mcreboot-attached-mic.sh
# arch/x86/tools/mcshutdown-attached-mic.sh
# arch/x86/tools/mcreboot-builtin-x86.sh
# arch/x86/tools/mcreboot-smp-x86.sh
# arch/x86/tools/mcstop+release-smp-x86.sh
# arch/x86/tools/mcshutdown-builtin-x86.sh
# arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in
#])
AC_CONFIG_FILES([ AC_CONFIG_FILES([
Makefile Makefile
executer/user/Makefile executer/user/Makefile
@ -553,9 +538,15 @@ AC_CONFIG_FILES([
arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in arch/x86/tools/mcreboot.1:arch/x86/tools/mcreboot.1in
arch/x86/tools/irqbalance_mck.service arch/x86/tools/irqbalance_mck.service
arch/x86/tools/irqbalance_mck.in arch/x86/tools/irqbalance_mck.in
])
if test "$TARGET" = "smp-arm64"; then
AC_CONFIG_FILES([
kernel/config/config.smp-arm64 kernel/config/config.smp-arm64
arch/arm64/kernel/vdso/Makefile arch/arm64/kernel/vdso/Makefile
arch/arm64/kernel/Makefile.arch
]) ])
fi
AS_IF([test "x$enable_dcfa" = xyes], [ AS_IF([test "x$enable_dcfa" = xyes], [
AC_CONFIG_FILES([kernel/Makefile.dcfa])]) AC_CONFIG_FILES([kernel/Makefile.dcfa])])

View File

@ -23,7 +23,11 @@ ifeq ($(ARCH), arm64)
default: all default: all
endif endif
ifeq ($(ARCH), arm64)
include @abs_builddir@/config/config.$(TARGET)
else
include $(SRC)/config/config.$(TARGET) include $(SRC)/config/config.$(TARGET)
endif
include @abs_builddir@/../../ihk/cokernel/Makefile.common include @abs_builddir@/../../ihk/cokernel/Makefile.common
# CFLAGS += -I$(SRC)/../arch/$(IHKARCH)/kernel/include -I$(SRC)/../lib/include # CFLAGS += -I$(SRC)/../arch/$(IHKARCH)/kernel/include -I$(SRC)/../lib/include

View File

@ -2,6 +2,10 @@ BUILD_TARGET ?= @TARGET@
KERNDIR=@KERNDIR@ KERNDIR=@KERNDIR@
VPATH=@abs_srcdir@ VPATH=@abs_srcdir@
ifeq ($(ARCH), arm64)
vdsodir=@abs_builddir@/../arch/$(ARCH)/kernel/vdso
endif
IHKBASE ?= $(VPATH)/../../ihk/cokernel IHKBASE ?= $(VPATH)/../../ihk/cokernel
O ?= $(CURDIR)/build O ?= $(CURDIR)/build
V ?= $(VERBOSE) V ?= $(VERBOSE)
@ -37,6 +41,9 @@ $(O):
clean: clean:
rm -rf $(O) rm -rf $(O)
ifeq ($(ARCH), arm64)
@rm -f $(vdsodir)/*.o $(vdsodir)/vdso.* $(vdsodir)/Makefile.dep -r $(vdsodir)/../include
endif
install: install:
mkdir -p -m 755 $(KERNDIR) mkdir -p -m 755 $(KERNDIR)