This includes the following fixes: * fix build of arch/arm64/kernel/vdso Change-Id: I73b05034d29f7f8731ac17f9736edbba4fb2c639
138 lines
5.1 KiB
Makefile
138 lines
5.1 KiB
Makefile
# Makefile.in COPYRIGHT FUJITSU LIMITED 2016-2018
|
|
# @ref.impl arch/arm64/kernel/vdso/Makefile
|
|
# Building a vDSO image for AArch64.
|
|
|
|
RMDIR=rmdir
|
|
|
|
HOST_DIR=@KDIR@
|
|
HOST_CONFIG=$(HOST_DIR)/.config
|
|
HOST_KERNEL_CONFIG_ARM64_4K_PAGES=$(shell grep -E "^CONFIG_ARM64_4K_PAGES=y" $(HOST_CONFIG) | sed 's|CONFIG_ARM64_4K_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')
|
|
|
|
VDSOSRC = @abs_srcdir@
|
|
VDSOBUILD = @abs_builddir@
|
|
ECHO_SUFFIX = [VDSO]
|
|
|
|
VDSOOBJS := gettimeofday.o
|
|
DESTOBJS = $(addprefix $(VDSOBUILD)/, $(VDSOOBJS))
|
|
|
|
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))
|
|
|
|
#CFLAGS := -nostdinc -mlittle-endian -Wall -mabi=lp64 -Wa,-gdwarf-2
|
|
CFLAGS += -nostdinc -mlittle-endian -Wall -Wa,-gdwarf-2
|
|
CFLAGS += -I$(SRC)/include -I$(SRC)/../lib/include -I$(VDSOSRC)/../include
|
|
CFLAGS += -I$(IHKBASE)/$(TARGETDIR)/include -Wno-unused-function -I$(IHKBASE)/../ikc/include -I$(IHKBASE)/../linux/include
|
|
CFLAGS += -DIHK_OS_MANYCORE -D__KERNEL__
|
|
CFLAGS += $(foreach i, $(shell seq 6 120), $(addprefix -DPOSTK_DEBUG_ARCH_DEP_, $(i)))
|
|
CFLAGS += $(foreach i, $(shell seq 6 110), $(addprefix -DPOSTK_DEBUG_TEMP_FIX_, $(i)))
|
|
|
|
LDFLAGS := -nostdinc -mlittle-endian -Wall -Wundef -Wstrict-prototypes
|
|
LDFLAGS += -Wno-trigraphs -fno-strict-aliasing -fno-common
|
|
LDFLAGS += -Werror-implicit-function-declaration -Wno-format-security
|
|
#LDFLAGS += -std=gnu89 -mgeneral-regs-only -mabi=lp64 -O2
|
|
LDFLAGS += -std=gnu89 -mgeneral-regs-only -O2
|
|
LDFLAGS += -Wframe-larger-than=2048 -fno-stack-protector
|
|
LDFLAGS += -fno-delete-null-pointer-checks -Wno-unused-but-set-variable
|
|
LDFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
|
|
LDFLAGS += -fno-var-tracking-assignments -g -Wdeclaration-after-statement
|
|
LDFLAGS += -Wno-pointer-sign -fno-strict-overflow -fconserve-stack
|
|
LDFLAGS += -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time
|
|
LDFLAGS += -shared -fno-common -fno-builtin -nostdlib
|
|
LDFLAGS += -Wl,-soname=linux-vdso.so.1 -Wl,--hash-style=sysv -Wl,-n -Wl,-T
|
|
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_MODNAME=KBUILD_STR(vdso.so)" -D__KERNEL__
|
|
|
|
DEPSRCS = $(wildcard $(VDSOSRC)/*.c $(VDSOSRC)/*.S)
|
|
|
|
CFLAGS_lds := -E -P -C -U$(ARCH)
|
|
CFLAGS_lds += -nostdinc
|
|
CFLAGS_lds += -mlittle-endian
|
|
CFLAGS_lds += -D__KERNEL__
|
|
CFLAGS_lds += -D__ASSEMBLY__
|
|
CFLAGS_lds += -DLINKER_SCRIPT
|
|
CFLAGS_lds += -DVDSO_LBASE=0
|
|
ifeq ($(HOST_KERNEL_CONFIG_ARM64_4K_PAGES), y)
|
|
CFLAGS_lds += -DPAGE_SIZE=0x1000
|
|
endif
|
|
ifeq ($(HOST_KERNEL_CONFIG_ARM64_16K_PAGES), y)
|
|
CFLAGS_lds += -DPAGE_SIZE=0x4000
|
|
endif
|
|
ifeq ($(HOST_KERNEL_CONFIG_ARM64_64K_PAGES), y)
|
|
CFLAGS_lds += -DPAGE_SIZE=0x10000
|
|
endif
|
|
|
|
#load mckernel config (append CPPFLAGS)
|
|
#include @abs_top_builddir@/../ihk/cokernel/Makefile.common
|
|
include @abs_top_builddir@/../ihk/cokernel/$(TARGETDIR)/Makefile.predefines
|
|
|
|
default: all
|
|
|
|
.PHONY: all clean depend prepare
|
|
|
|
all: depend $(VDSOBUILD)/vdso.so $(VDSOBUILD)/../include/vdso-offsets.h $(VDSOBUILD)/../include/vdso-so-path.h
|
|
|
|
# Strip rule for the .so file
|
|
$(VDSOBUILD)/vdso.so: OBJCOPYFLAGS := -S
|
|
$(VDSOBUILD)/vdso.so: $(VDSOBUILD)/vdso.so.dbg
|
|
$(objcopy_cmd)
|
|
|
|
# Generate VDSO offsets using helper script
|
|
$(VDSOBUILD)/../include/vdso-offsets.h: $(VDSOBUILD)/vdso.so.dbg
|
|
$(call echo_cmd,VDSOSYM,$<)
|
|
@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
|
|
$(VDSOBUILD)/vdso.so.dbg: $(VDSOBUILD)/vdso.lds $(DESTOBJS) $(DESTASMOBJS)
|
|
$(ld_cmd)
|
|
|
|
$(VDSOBUILD)/vdso.lds: $(VDSOSRC)/vdso.lds.S
|
|
$(lds_cmd)
|
|
|
|
clean:
|
|
$(rm_cmd) -f $(DESTOBJS) $(DESTASMOBJS) $(VDSOBUILD)/Makefile.dep $(VDSOBUILD)/vdso.lds
|
|
$(rm_cmd) -f $(VDSOBUILD)/vdso.so* $(VDSOBUILD)/../include/vdso-offsets.h $(VDSOBUILD)/../include/vdso-so-path.h
|
|
$(rmdir_cmd) --ignore-fail-on-non-empty $(VDSOBUILD)/../include
|
|
|
|
depend: $(VDSOBUILD)/Makefile.dep
|
|
|
|
$(VDSOBUILD)/Makefile.dep:
|
|
$(call dep_cmd,$(DEPSRCS))
|
|
|
|
prepare:
|
|
@$(RM) $(VDSOBUILD)/Makefile.dep
|
|
|
|
-include $(VDSOBUILD)/Makefile.dep
|
|
|
|
# Actual build commands
|
|
ifeq ($(V),1)
|
|
echo_cmd =
|
|
submake = make
|
|
else
|
|
echo_cmd = @echo ' ($(TARGET))' $1 $(ECHO_SUFFIX) $2;
|
|
submake = make --no-print-directory
|
|
endif
|
|
|
|
cc_cmd = $(call echo_cmd,CC,$<)$(CC) $(CFLAGS) -c -o $@
|
|
ld_cmd = $(call echo_cmd,LD,$@)$(CC) $(LDFLAGS) $^ -o $@
|
|
dep_cmd = $(call echo_cmd,DEPEND,)$(CC) $(CFLAGS) -MM $1 > $@
|
|
rm_cmd = $(call echo_cmd,CLEAN,)$(RM)
|
|
rmdir_cmd = $(call echo_cmd,CLEAN,)$(RMDIR)
|
|
objcopy_cmd = $(call echo_cmd,OBJCOPY,$<)$(OBJCOPY) $(OBJCOPYFLAGS) $< $@
|
|
lds_cmd = $(call echo_cmd,LDS,$<)$(CC) $(CFLAGS_lds) -c -o $@ $<
|
|
|
|
$(DESTOBJS):
|
|
$(cc_cmd) $(addprefix $(VDSOSRC)/, $(notdir $(@:.o=.c)))
|
|
$(DESTASMOBJS):
|
|
$(cc_cmd) $(addprefix $(VDSOSRC)/, $(notdir $(@:.o=.S))) -D__ASSEMBLY__
|
|
|