112 lines
2.4 KiB
Makefile
112 lines
2.4 KiB
Makefile
KBUILD_DEFCONFIG := generic_defconfig
|
|
|
|
CPPFLAGS += -D__X86__
|
|
|
|
board-$(CONFIG_MACH_X86_GENERIC) := x86_generic
|
|
|
|
TEXT_BASE = $(CONFIG_TEXT_BASE)
|
|
|
|
ifeq ($(CONFIG_X86_EFI),y)
|
|
machine-y := efi
|
|
CFLAGS += -fpic -fshort-wchar -mno-sse -mno-mmx
|
|
ifeq ($(CONFIG_X86_32),y)
|
|
TARGET = efi-app-ia32
|
|
else
|
|
TARGET = efi-app-x86_64
|
|
endif
|
|
else
|
|
CPPFLAGS += -fno-strict-aliasing
|
|
CPPFLAGS += -march=i386 -DTEXT_BASE=$(TEXT_BASE) \
|
|
-fno-unwind-tables -fno-asynchronous-unwind-tables
|
|
|
|
machine-y := i386
|
|
endif
|
|
|
|
ifeq ($(CONFIG_X86_32),y)
|
|
UTS_MACHINE := i386
|
|
biarch := $(call cc-option,-m32)
|
|
AFLAGS += $(biarch)
|
|
CFLAGS += $(biarch)
|
|
CPPFLAGS += $(biarch)
|
|
else
|
|
UTS_MACHINE := x86_64
|
|
AFLAGS += -m64
|
|
CFLAGS += -m64 -mno-red-zone
|
|
CPPFLAGS += -m64
|
|
endif
|
|
|
|
|
|
ifndef CONFIG_MODULES
|
|
# Add cleanup flags
|
|
ifneq ($(CONFIG_X86_EFI),y)
|
|
CPPFLAGS += -fdata-sections -ffunction-sections
|
|
LDFLAGS_barebox += -static --gc-sections
|
|
endif
|
|
endif
|
|
|
|
machdirs := $(patsubst %,arch/x86/mach-%/,$(machine-y))
|
|
|
|
ifeq ($(KBUILD_SRC),)
|
|
CPPFLAGS += $(patsubst %,-I%include,$(machdirs))
|
|
else
|
|
CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs))
|
|
endif
|
|
|
|
ifneq ($(board-y),)
|
|
BOARD := arch/x86/boards/$(board-y)/
|
|
else
|
|
BOARD :=
|
|
endif
|
|
|
|
ifneq ($(machine-y),)
|
|
MACH := arch/x86/mach-$(machine-y)/
|
|
else
|
|
MACH :=
|
|
endif
|
|
|
|
common-y += $(BOARD) $(MACH)
|
|
common-y += arch/x86/lib/
|
|
common-$(CONFIG_X86_BIOS_BRINGUP) += arch/x86/bios/
|
|
|
|
# arch/x86/cpu/
|
|
|
|
ifeq ($(CONFIG_X86_EFI),y)
|
|
lds-$(CONFIG_X86_32) := arch/x86/mach-efi/elf_ia32_efi.lds
|
|
lds-$(CONFIG_X86_64) := arch/x86/mach-efi/elf_x86_64_efi.lds
|
|
|
|
cmd_barebox__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_barebox) -o $@ \
|
|
-T $(lds-y) \
|
|
-shared -Bsymbolic -nostdlib -znocombreloc \
|
|
--start-group $(barebox-common) \
|
|
--end-group \
|
|
$(filter-out $(barebox-lds) $(barebox-common) FORCE ,$^)
|
|
|
|
quiet_cmd_efi_image = EFI-IMG $@
|
|
cmd_efi_image = $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic \
|
|
-j .dynsym -j .rel -j .rela -j .reloc -j __barebox_initcalls \
|
|
-j __barebox_cmd -j .barebox_magicvar -j .bbenv.* \
|
|
--target=$(TARGET) $< $@
|
|
|
|
KBUILD_BINARY := barebox
|
|
|
|
LDFLAGS := --no-undefined
|
|
|
|
barebox.efi: $(KBUILD_BINARY) FORCE
|
|
$(call if_changed,efi_image)
|
|
|
|
KBUILD_IMAGE := barebox.efi
|
|
|
|
else
|
|
common-y += arch/x86/boot/
|
|
|
|
lds-$(CONFIG_GENERIC_LINKER_SCRIPT) := arch/x86/lib/barebox.lds
|
|
lds-$(CONFIG_BOARD_LINKER_SCRIPT) := $(BOARD)/barebox.lds
|
|
|
|
endif
|
|
|
|
LDFLAGS += -m elf_$(UTS_MACHINE)
|
|
|
|
CLEAN_FILES += $(lds-y)
|
|
CLEAN_FILES += arch/x86/lib/barebox.lds barebox.map barebox.S
|
|
|