build system switch to cmake
Remove old build system at the same time Change-Id: Ifdffe1fcd4cfece05f036d8de6e7cb74aca65f62
This commit is contained in:
171
kernel/CMakeLists.txt
Normal file
171
kernel/CMakeLists.txt
Normal file
@@ -0,0 +1,171 @@
|
||||
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS)
|
||||
set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -D__ASSEMBLY__")
|
||||
|
||||
configure_file(include/swapfmt.h.in include/swapfmt.h)
|
||||
|
||||
execute_process(COMMAND ${CMAKE_C_COMPILER} -print-file-name=include
|
||||
OUTPUT_VARIABLE SYSTEM_INCLUDE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
add_definitions(-D__KERNEL__ -DIHK_OS_MANYCORE)
|
||||
add_compile_options(-ffreestanding -O2 -nostdinc -isystem ${SYSTEM_INCLUDE} -fno-omit-frame-pointer)
|
||||
include_directories(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include"
|
||||
"include"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}"
|
||||
"${PROJECT_BINARY_DIR}"
|
||||
"${IHK_FULL_SOURCE_DIR}/cokernel/smp/${ARCH}/include"
|
||||
"${IHK_FULL_SOURCE_DIR}/ikc/include"
|
||||
"${IHK_FULL_SOURCE_DIR}/linux/include"
|
||||
"${PROJECT_SOURCE_DIR}/lib/include"
|
||||
"${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/include"
|
||||
)
|
||||
if (${ARCH} STREQUAL "x86_64")
|
||||
add_compile_options(-mcmodel=large -mno-red-zone -mno-sse)
|
||||
endif()
|
||||
|
||||
set(MCKERNEL_SRCS
|
||||
init.c mem.c debug.c mikc.c listeners.c ap.c syscall.c cls.c host.c process.c
|
||||
copy.c waitq.c futex.c timer.c plist.c fileobj.c shmobj.c zeroobj.c
|
||||
procfs.c devobj.c sysfs.c xpmem.c profile.c freeze.c rbtree.c pager.c
|
||||
gencore.c hugefileobj.c
|
||||
|
||||
${IHK_FULL_SOURCE_DIR}/ikc/manycore.c
|
||||
${IHK_FULL_SOURCE_DIR}/ikc/master.c
|
||||
${IHK_FULL_SOURCE_DIR}/ikc/queue.c
|
||||
|
||||
${PROJECT_SOURCE_DIR}/lib/abort.c
|
||||
${PROJECT_SOURCE_DIR}/lib/bitmap.c
|
||||
${PROJECT_SOURCE_DIR}/lib/bitops.c
|
||||
${PROJECT_SOURCE_DIR}/lib/page_alloc.c
|
||||
${PROJECT_SOURCE_DIR}/lib/string.c
|
||||
${PROJECT_SOURCE_DIR}/lib/vsprintf.c
|
||||
|
||||
${IHK_FULL_SOURCE_DIR}/cokernel/smp/${ARCH}/dma.c
|
||||
${IHK_FULL_SOURCE_DIR}/cokernel/smp/${ARCH}/ikc.c
|
||||
${IHK_FULL_SOURCE_DIR}/cokernel/smp/${ARCH}/setup.c
|
||||
)
|
||||
|
||||
if (BUILD_TARGET STREQUAL "smp-x86")
|
||||
list(APPEND MCKERNEL_SRCS
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/context.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/coredump.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/cpu.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/interrupt.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/local.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/memory.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/mikc.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/perfctr.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/syscall.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/trampoline.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/vsyscall.c
|
||||
|
||||
)
|
||||
set(LINKER_SCRIPT "smp-x86.lds")
|
||||
elseif (BUILD_TARGET STREQUAL "smp-arm64")
|
||||
|
||||
configure_file(${KERNEL_DIR}/include/generated/vdso-offsets.h include/vdso-offsets.h)
|
||||
|
||||
list(APPEND MCKERNEL_SRCS
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/assert.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/cache.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/context.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/coredump.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/cpu.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/cpufeature.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/cputable.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/debug-monitors.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/entry-fpsimd.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/entry.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/fault.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/fpsimd.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/head.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/hw_breakpoint.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/hyp-stub.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/imp-sysreg.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/irq-gic-v2.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/irq-gic-v3.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/local.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/memcpy.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/memory.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/memset.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/mikc.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/perfctr.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/perfctr_armv8pmu.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/proc-macros.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/proc.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/psci.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/ptrace.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/smp.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/syscall.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/timer.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/trampoline.S
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/traps.c
|
||||
${PROJECT_SOURCE_DIR}/arch/${ARCH}/kernel/vdso.c
|
||||
|
||||
)
|
||||
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_NR_CPUS\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_NR_CPUS OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM_ARCH_TIMER_EVTSTREAM\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_ARM_ARCH_TIMER_EVTSTREAM OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_HZ\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_HZ OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_VHE\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_ARM64_VHE OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM_GIC_V3\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_ARM_GIC_V3 OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_64K_PAGES\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_ARM64_64K_PAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_VA_BITS\" { print $2; exit; }" "${KERNEL_DIR}/.config"
|
||||
OUTPUT_VARIABLE CONFIG_ARM64_VA_BITS OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
message("Host kernel CONFIG_NR_CPUS=${CONFIG_NR_CPUS}")
|
||||
message("Host kernel CONFIG_HZ=${CONFIG_HZ}")
|
||||
message("Host kernel CONFIG_ARM64_64K_PAGES=${CONFIG_ARM64_64K_PAGES}")
|
||||
message("Host kernel CONFIG_ARM64_VA_BITS=${CONFIG_ARM64_VA_BITS}")
|
||||
|
||||
if(CONFIG_ARM64_64K_PAGES STREQUAL "y")
|
||||
if(CONFIG_ARM64_VA_BITS STREQUAL 42)
|
||||
add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=2 -DCONFIG_ARM64_VA_BITS=42 -DCONFIG_ARM64_64K_PAGES)
|
||||
set(LINKER_SCRIPT "smp-arm64_type3.lds")
|
||||
elseif(CONFIG_ARM64_VA_BITS STREQUAL 48)
|
||||
add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=3 -DCONFIG_ARM64_VA_BITS=48 -DCONFIG_ARM64_64K_PAGES)
|
||||
set(LINKER_SCRIPT "smp-arm64_type4.lds")
|
||||
endif()
|
||||
else(CONFIG_ARM64_64K_PAGES STREQUAL "y")
|
||||
if(CONFIG_ARM64_VA_BITS STREQUAL 39)
|
||||
add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=3 -DCONFIG_ARM64_VA_BITS=39)
|
||||
set(linker_script "smp-arm64_type1.lds")
|
||||
elseif(CONFIG_ARM64_VA_BITS STREQUAL 48)
|
||||
add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=4 -DCONFIG_ARM64_VA_BITS=48)
|
||||
set(linker_script "smp-arm64_type2.lds")
|
||||
endif()
|
||||
endif(CONFIG_ARM64_64K_PAGES STREQUAL "y")
|
||||
if(CONFIG_ARM_GIC_V3 STREQUAL "y")
|
||||
add_definitions(-DCONFIG_ARM_GIC_V3=y)
|
||||
#add_definitions(-DCONFIG_HAS_NMI=y)
|
||||
else(CONFIG_ARM_GIC_V3 STREQUAL "y")
|
||||
message(FATAL_ERROR "Host kernel must have GIC v3 enabled")
|
||||
endif(CONFIG_ARM_GIC_V3 STREQUAL "y")
|
||||
if(CONFIG_ARM64_VHE STREQUAL "y")
|
||||
add_definitions(-DCONFIG_ARM64_VHE)
|
||||
endif(CONFIG_ARM64_VHE STREQUAL "y")
|
||||
if(CONFIG_ARM_ARCH_TIMER_EVTSTREAM STREQUAL "y")
|
||||
add_definitions(-DCONFIG_ARM_ARCH_TIMER_EVTSTREAM)
|
||||
endif(CONFIG_ARM_ARCH_TIMER_EVTSTREAM STREQUAL "y")
|
||||
add_definitions(-DNR_CPUS=${CONFIG_NR_CPUS} -DCONFIG_HZ=${CONFIG_HZ})
|
||||
# Seems to have been hardcoded to 512 in old makefiles
|
||||
add_definitions(-DCONFIG_SMP_MAX_CORES=512)
|
||||
# Always turned on as well
|
||||
add_definitions(-DCONFIG_ARM64_SVE)
|
||||
endif()
|
||||
|
||||
|
||||
add_executable(mckernel.img ${MCKERNEL_SRCS})
|
||||
|
||||
set_target_properties(mckernel.img PROPERTIES INSTALL_RPATH "")
|
||||
set_target_properties(mckernel.img PROPERTIES LINK_FLAGS
|
||||
"-e arch_start -T ${CMAKE_CURRENT_SOURCE_DIR}/config/${LINKER_SCRIPT} --build-id")
|
||||
|
||||
install(TARGETS "mckernel.img"
|
||||
DESTINATION "${MCKERNELDIR}")
|
||||
@@ -1,75 +0,0 @@
|
||||
# Makefile.build.in COPYRIGHT FUJITSU LIMITED 2015-2018
|
||||
ARCH = @ARCH@
|
||||
VPATH=@abs_srcdir@
|
||||
SRC=$(VPATH)
|
||||
IHKDIR=$(IHKBASE)/$(TARGETDIR)
|
||||
OBJS = init.o mem.o debug.o mikc.o listeners.o ap.o syscall.o cls.o host.o
|
||||
OBJS += process.o copy.o waitq.o futex.o timer.o plist.o fileobj.o shmobj.o
|
||||
OBJS += zeroobj.o procfs.o devobj.o sysfs.o xpmem.o profile.o freeze.o
|
||||
OBJS += rbtree.o hugefileobj.o
|
||||
OBJS += pager.o gencore.o
|
||||
DEPSRCS=$(wildcard $(SRC)/*.c)
|
||||
|
||||
CFLAGS += -I$(SRC)/include -I@abs_builddir@/../ -I@abs_builddir@/include -D__KERNEL__ -g -fno-omit-frame-pointer -fno-inline -fno-inline-small-functions
|
||||
ifneq ($(ARCH), arm64)
|
||||
CFLAGS += -mcmodel=large -mno-red-zone -mno-sse
|
||||
endif
|
||||
LDFLAGS += -e arch_start
|
||||
IHKOBJ = ihk/ihk.o
|
||||
|
||||
# POSTK_DEBUG_ARCH_DEP_24
|
||||
ifeq ($(ARCH), arm64)
|
||||
default: all
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH), arm64)
|
||||
include @abs_builddir@/config/config.$(TARGET)
|
||||
else
|
||||
include $(SRC)/config/config.$(TARGET)
|
||||
endif
|
||||
include @abs_builddir@/../../ihk/cokernel/Makefile.common
|
||||
|
||||
# CFLAGS += -I$(SRC)/../arch/$(IHKARCH)/kernel/include -I$(SRC)/../lib/include
|
||||
|
||||
OBJDUMP ?= objdump
|
||||
OBJCOPY ?= objcopy
|
||||
|
||||
# POSTK_DEBUG_ARCH_DEP_26
|
||||
ifeq ($(ARCH), arm64)
|
||||
SUBCMD_OPTS = TARGET=$(TARGET) O=$(CURDIR)/ihk CC=$(CC) LD=$(LD) OBJCOPY=$(OBJCOPY) SRC=$(SRC) ARCH=$(ARCH)
|
||||
else
|
||||
SUBCMD_OPTS = TARGET=$(TARGET) O=$(CURDIR)/ihk CC=$(CC) LD=$(LD) SRC=$(SRC)
|
||||
endif
|
||||
|
||||
ld_kern_cmd_base = $(LD) $(LDFLAGS) -o $@.elf $^
|
||||
mkimage_cmd_base = [ -f $(SRC)/script/mkimage.$(TARGET) ] && CC=$(CC) LD=$(LD) LDFLAGS="$(LDFLAGS_MKIMAGE)" OBJDUMP=$(OBJDUMP) OBJCOPY=$(OBJCOPY) sh $(SRC)/script/mkimage.$(TARGET) '$@.elf' '$@' '$(SRC)' || cp $@.elf $@
|
||||
|
||||
ld_kern_cmd = $(call echo_cmd,LDKERN,$@)$(ld_kern_cmd_base)
|
||||
mkimage_cmd = $(call echo_cmd,MKIMAGE,$@)$(mkimage_cmd_base)
|
||||
|
||||
all: depend kernel.img
|
||||
|
||||
kernel.img: $(OBJS) $(IHKOBJ)
|
||||
$(ld_kern_cmd)
|
||||
$(mkimage_cmd)
|
||||
|
||||
clean:
|
||||
$(rm_cmd) $(OBJS) kernel.img kernel.img.elf Makefile.dep
|
||||
@$(submake) -C $(IHKBASE) $(SUBCMD_OPTS) clean
|
||||
|
||||
depend: Makefile.dep
|
||||
|
||||
Makefile.dep:
|
||||
$(call dep_cmd,$(DEPSRCS))
|
||||
|
||||
$(IHKOBJ): FORCE
|
||||
@mkdir -p $(dir $(IHKOBJ))
|
||||
+$(call echo_cmd,BUILD IHK,$(TARGET))$(submake) -C $(IHKBASE) $(SUBCMD_OPTS) prepare
|
||||
+$(call echo_cmd,BUILD IHK,$(TARGET))$(submake) -C $(IHKBASE) $(SUBCMD_OPTS)
|
||||
|
||||
%.o: $(SRC)/%.c
|
||||
$(cc_cmd)
|
||||
|
||||
FORCE:
|
||||
|
||||
-include Makefile.dep
|
||||
@@ -1,97 +0,0 @@
|
||||
# Makefile.dcfa.in COPYRIGHT FUJITSU LIMITED 2013-2018
|
||||
BUILD_TARGET ?= @TARGET@
|
||||
INSTALL_KL_DIR ?= @KERNDIR@
|
||||
SRC = $(CURDIR)
|
||||
|
||||
DCFA_MODE ?= umod
|
||||
IHKBASE ?= $(SRC)/../../ihk/cokernel
|
||||
O ?= $(CURDIR)/build
|
||||
V ?= $(VERBOSE)
|
||||
|
||||
N ?= kernel_obj.o
|
||||
EXTRA_OBJS ?=
|
||||
|
||||
## compile items
|
||||
|
||||
KERNEL = kernel.img
|
||||
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET)))
|
||||
|
||||
KERNEL_OBJ = $(addsuffix /$(N),$(addprefix $(O)/,$(BUILD_TARGET)))
|
||||
KERNEL_MAKEFILE = $(addsuffix /Makefile,$(addprefix $(O)/,$(BUILD_TARGET)))
|
||||
|
||||
## install items
|
||||
|
||||
ifeq ("$(DCFA_MODE)", "kmod")
|
||||
KERNEL_OBJ_PUB = $(INSTALL_KL_DIR)/$(N)
|
||||
KERNEL_MAKEFILE_PUB = $(INSTALL_KL_DIR)/Makefile
|
||||
else
|
||||
KERNELS_PUB = $(INSTALL_KL_DIR)/$(KERNEL)
|
||||
KERNEL_MAKEFILE_PUB = $(INSTALL_KL_DIR)/Makefile
|
||||
endif
|
||||
|
||||
SUBCMD_OPTS = V='$(V)'
|
||||
|
||||
$(if $(O),,$(error Specify the compilation target directory))
|
||||
#$(if $(shell ls $(IHKBASE)/Makefile),,\
|
||||
# $(error IHK is not found in $(IHKBASE)))
|
||||
|
||||
|
||||
.PHONY: all kmod umod clean depend
|
||||
.SECONDARY: $(KERNEL_MAKEFILE) $(KERNEL_MAKEFILE_PUB)
|
||||
|
||||
all: $(DCFA_MODE)
|
||||
|
||||
install: $(DCFA_MODE)_install
|
||||
|
||||
clean:
|
||||
rm -rf $(O)
|
||||
|
||||
kmod: $(KERNEL_OBJ)
|
||||
|
||||
umod: $(KERNELS)
|
||||
|
||||
umod_install:
|
||||
@echo install $(KERNELS_PUB)
|
||||
@rm -f $(KERNELS_PUB)
|
||||
@mkdir -p $(dir $(KERNELS_PUB))
|
||||
@cp $(KERNELS) $(KERNELS_PUB)
|
||||
|
||||
kmod_install: $(KERNEL_MAKEFILE_PUB)
|
||||
@echo install $(KERNEL_OBJ_PUB)
|
||||
@rm -f $(KERNEL_OBJ_PUB)
|
||||
@cp $(KERNEL_OBJ) $(KERNEL_OBJ_PUB)
|
||||
|
||||
%/kernel.img: %/Makefile
|
||||
@echo 'Building for' $(dir $@)
|
||||
@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
||||
|
||||
%/$(N): %/Makefile
|
||||
@echo 'Building for' $(dir $@)
|
||||
@make kobj --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
||||
|
||||
$(KERNEL_MAKEFILE): Makefile.build.dcfa
|
||||
rm -f $@
|
||||
@mkdir -p $(dir $@)
|
||||
@echo 'SRC = $(SRC)' > $@
|
||||
@echo 'IHKBASE = $(IHKBASE)' >> $@
|
||||
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
|
||||
@echo 'TARGETDIR = $$(shell echo $$(TARGET) | sed "s/-/\//")' >> $@
|
||||
@echo 'DCFA_MODE = $(DCFA_MODE)' >> $@
|
||||
@echo 'KERNEL_OBJ = $(KERNEL_OBJ)' >> $@
|
||||
@echo 'EXTRA_OBJS = $(EXTRA_OBJS)' >> $@
|
||||
@echo 'EXTRA_CFLAGS = $(EXTRA_CFLAGS)' >> $@
|
||||
@cat $^ >> $@
|
||||
# @rm -f $(dir $@)/Makefile.dep
|
||||
|
||||
$(KERNEL_MAKEFILE_PUB): Makefile.build.dcfa.public
|
||||
@echo install $@
|
||||
@rm -f $@
|
||||
@mkdir -p $(dir $@)
|
||||
@echo 'SRC = $(SRC)' > $@
|
||||
@echo 'IHKBASE = $(IHKBASE)' >> $@
|
||||
@echo 'TARGET = $(BUILD_TARGET)' >> $@
|
||||
@echo 'TARGETDIR = $$(shell echo $$(TARGET) | sed "s/-/\//")' >> $@
|
||||
@echo 'KERNEL_OBJ = $(KERNEL_OBJ_PUB)' >> $@
|
||||
@cat $^ >> $@
|
||||
|
||||
FORCE:
|
||||
@@ -1,56 +0,0 @@
|
||||
# Makefile.in COPYRIGHT FUJITSU LIMITED 2013-2018
|
||||
BUILD_TARGET ?= @TARGET@
|
||||
KERNDIR=@KERNDIR@
|
||||
VPATH=@abs_srcdir@
|
||||
ARCH ?= @ARCH@
|
||||
|
||||
ifeq ($(ARCH), arm64)
|
||||
vdsodir=@abs_builddir@/../arch/$(ARCH)/kernel/vdso
|
||||
endif
|
||||
|
||||
IHKBASE ?= $(VPATH)/../../ihk/cokernel
|
||||
O ?= $(CURDIR)/build
|
||||
V ?= $(VERBOSE)
|
||||
|
||||
KERNEL = kernel.img
|
||||
KERNELS = $(addsuffix /$(KERNEL),$(addprefix $(O)/,$(BUILD_TARGET)))
|
||||
|
||||
SUBCMD_OPTS = V='$(V)' BUILD_IHK_COKERNEL=@abs_builddir@/../../ihk/cokernel
|
||||
|
||||
$(if $(O),,$(error Specify the compilation target directory))
|
||||
#$(if $(shell ls $(IHKBASE)/Makefile),,\
|
||||
# $(error IHK is not found in $(IHKBASE)))
|
||||
|
||||
.PHONY: all clean depend install
|
||||
|
||||
all: $(O) $(KERNELS)
|
||||
|
||||
$(O):
|
||||
mkdir -p $(O)
|
||||
|
||||
%/kernel.img: %/Makefile $(KERNELS)
|
||||
@echo 'Building for' $(dir $@)
|
||||
+@make --no-print-directory -C $(dir $@) $(SUBCMD_OPTS)
|
||||
|
||||
%/Makefile: Makefile.build FORCE
|
||||
@mkdir -p $(dir $@)
|
||||
@echo 'SRC = $(SRC)' > $@
|
||||
@echo 'IHKBASE = $(IHKBASE)' >> $@
|
||||
@echo 'TARGET = $(notdir $(patsubst %/,%,$(dir $@)))' >> $@
|
||||
@echo 'TARGETDIR = smp/$(ARCH)' >> $@
|
||||
@cat Makefile.build >> $@
|
||||
@rm -f $(dir $@)/Makefile.dep
|
||||
|
||||
clean:
|
||||
rm -rf $(O)
|
||||
ifeq ($(ARCH), arm64)
|
||||
@rm -f $(vdsodir)/*.o $(vdsodir)/vdso.lds $(vdsodir)/vdso.so* $(vdsodir)/Makefile.dep
|
||||
@rm -f $(vdsodir)/../include/vdso-offsets.h $(vdsodir)/../include/vdso-so-path.h
|
||||
@if [ -d $(vdsodir)/../include ]; then rmdir --ignore-fail-on-non-empty $(vdsodir)/../include; fi
|
||||
endif
|
||||
|
||||
install:
|
||||
mkdir -p -m 755 $(KERNDIR)
|
||||
install -m 755 $(O)/$(BUILD_TARGET)/kernel.img $(KERNDIR)/mckernel.img
|
||||
|
||||
FORCE:
|
||||
@@ -26,17 +26,9 @@ SECTIONS
|
||||
*(.rodata .rodata.*)
|
||||
} :data
|
||||
|
||||
.vdso : ALIGN(0x1000) {
|
||||
vdso_page = .;
|
||||
|
||||
. = vdso_page + 0x0000;
|
||||
*(.vdso.data)
|
||||
|
||||
. = vdso_page + 0x1000;
|
||||
*(.vdso.text)
|
||||
|
||||
. = ALIGN(0x1000);
|
||||
} : data = 0xf4
|
||||
/* force build-id position somewhere not at start... */
|
||||
.note.gnu.build-id : {
|
||||
}
|
||||
|
||||
.bss : {
|
||||
*(.bss .bss.*)
|
||||
|
||||
@@ -26,17 +26,9 @@ SECTIONS
|
||||
*(.rodata .rodata.*)
|
||||
} :data
|
||||
|
||||
.vdso : ALIGN(0x1000) {
|
||||
vdso_page = .;
|
||||
|
||||
. = vdso_page + 0x0000;
|
||||
*(.vdso.data)
|
||||
|
||||
. = vdso_page + 0x1000;
|
||||
*(.vdso.text)
|
||||
|
||||
. = ALIGN(0x1000);
|
||||
} : data = 0xf4
|
||||
/* force build-id position somewhere not at start... */
|
||||
.note.gnu.build-id : {
|
||||
}
|
||||
|
||||
.bss : {
|
||||
*(.bss .bss.*)
|
||||
|
||||
@@ -26,17 +26,9 @@ SECTIONS
|
||||
*(.rodata .rodata.*)
|
||||
} :data
|
||||
|
||||
.vdso : ALIGN(0x10000) {
|
||||
vdso_page = .;
|
||||
|
||||
. = vdso_page + 0x00000;
|
||||
*(.vdso.data)
|
||||
|
||||
. = vdso_page + 0x10000;
|
||||
*(.vdso.text)
|
||||
|
||||
. = ALIGN(0x10000);
|
||||
} : data = 0xf4
|
||||
/* force build-id position somewhere not at start... */
|
||||
.note.gnu.build-id : {
|
||||
}
|
||||
|
||||
.bss : {
|
||||
*(.bss .bss.*)
|
||||
|
||||
@@ -26,17 +26,9 @@ SECTIONS
|
||||
*(.rodata .rodata.*)
|
||||
} :data
|
||||
|
||||
.vdso : ALIGN(0x10000) {
|
||||
vdso_page = .;
|
||||
|
||||
. = vdso_page + 0x00000;
|
||||
*(.vdso.data)
|
||||
|
||||
. = vdso_page + 0x10000;
|
||||
*(.vdso.text)
|
||||
|
||||
. = ALIGN(0x10000);
|
||||
} : data = 0xf4
|
||||
/* force build-id position somewhere not at start... */
|
||||
.note.gnu.build-id : {
|
||||
}
|
||||
|
||||
.bss : {
|
||||
*(.bss .bss.*)
|
||||
|
||||
@@ -25,6 +25,10 @@ SECTIONS
|
||||
*(.rodata .rodata.*)
|
||||
} :data
|
||||
|
||||
/* force build-id position somewhere not at start... */
|
||||
.note.gnu.build-id : {
|
||||
}
|
||||
|
||||
.vsyscall : ALIGN(0x1000) {
|
||||
vsyscall_page = .;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user