a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync# Sub-makefile for iPXE.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync# Copyright (C) 2012 Oracle Corporation
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# available from http://www.virtualbox.org. This file is free software;
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# you can redistribute it and/or modify it under the terms of the GNU
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# General Public License (GPL) as published by the Free Software
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
01bceecc7f7484a8820c77b884bb91cdefc97390vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncSUB_DEPTH = ../../../../..
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncinclude $(KBUILD_PATH)/subheader.kmk
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncVBOX_PATH_IPXE_SRC := $(PATH_SUB_CURRENT)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync# iPxeBiosBin - Library containing the iPXE ROM as a data blob.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync# Will be linked into VBoxDD2.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncLIBRARIES += iPxeBiosBin
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsynciPxeBiosBin_TEMPLATE = VBOXR3
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsynciPxeBiosBin_DEFS = IN_VBOXDD2
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsynciPxeBiosBin_SOURCES = $(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsynciPxeBiosBin_CLEAN = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncif1of ($(KBUILD_TARGET), darwin os2 solaris win)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c: $(PATH_SUB_CURRENT)/iPxeBiosBin.rom $(VBOX_BIN2C) | $$(dir $$@)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(call MSG_TOOL,bin2c,iPxeBiosBin,$<,$@)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(QUIET)$(VBOX_BIN2C) -min 32 -max 56 -mask 0x1ff -export NetBiosBinary $< $@
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync iPxeBiosBin_CLEAN += \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.rom \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.bin \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.zinfo
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.c: $$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.rom $(VBOX_BIN2C)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(call MSG_TOOL,bin2c,iPxeBiosBin,$<,$@)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(QUIET)$(VBOX_BIN2C) -min 32 -max 56 -mask 0x1ff -export NetBiosBinary $< $@
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $$(iPxeBiosBin_0_OUTDIR)/iPxeBiosBin.rom: \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $$(iPxeBaseBin_1_TARGET) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $$(ipxezbin_1_TARGET) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_PATH_IPXE_SRC)/src/util/padimg.pl \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_PATH_IPXE_SRC)/src/util/fixrom.pl \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync | $$(dir $$@)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(call MSG_TOOL,zbin,iPxeBiosBin,$<,$@)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(TOOL_$(VBOX_GCC32_TOOL)_OBJCOPY) -O binary -R .zinfo $< $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.bin
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(TOOL_$(VBOX_GCC32_TOOL)_OBJCOPY) -O binary -j .zinfo $< $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.zinfo
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(ipxezbin_1_TARGET) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.bin \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.zinfo \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync perl $(VBOX_PATH_IPXE_SRC)/src/util/padimg.pl --blksize=512 --byte=0xff $@
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync perl $(VBOX_PATH_IPXE_SRC)/src/util/fixrom.pl $@
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.bin \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(iPxeBiosBin_0_OUTDIR)/iPxeBaseBin.rom.zinfo
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync # iPxeLinker - Linker tool used to link the ROM binary.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker = iPXE LD tool.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker_LINK_PROGRAM_OUTPUT =
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker_LINK_PROGRAM_OUTPUT_MAYBE = $(outbase).map
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker_LINK_PROGRAM_OUTPUT_DEBUG = $(outbase).debug
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker_LINK_PROGRAM_DEBUG_INSTALL_FN = $(2).debug=>$(basename $(3)).debug
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker_LINK_PROGRAM_DEPEND = $(foreach lib,$(libs),$(if $(findstring $(lib),$(subst /,x,$(lib))),, $(lib)))\
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(filter %.def, $(othersrc))
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TOOL_iPxeLinker_LINK_PROGRAM_DEPORD =
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync define TOOL_iPxeLinker_LINK_PROGRAM_CMDS
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(QUIET)ld $(flags) -o $(out) $(objs)\
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(foreach p,$(libpath), -L$(p))\
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(foreach lib,$(libs), $(if $(findstring $(lib),$(subst /,x,$(lib))), -l$(patsubst lib%,%,$(lib)), $(lib)))
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync # iPXE - Template used to build the ROM binary.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe = iPXE code
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_TOOL = $(VBOX_GCC32_TOOL)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_LDTOOL = iPxeLinker
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_LDFLAGS = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync --no-check-sections \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync --gc-sections \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -T $(VBOX_PATH_IPXE_SRC)/src/arch/i386/scripts/i386.lds \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -u _rom_start --defsym check__rom_start=_rom_start \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -u obj_config --defsym check_obj_config=obj_config \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync --defsym pci_vendor_id=0x8086 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync --defsym pci_device_id=0x100E \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -e _rom_start
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncifeq ($(KBUILD_TARGET), freebsd)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_LDFLAGS += -m elf_i386_fbsd
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_LDFLAGS += -m elf_i386
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_LNK_DEPS = $(VBOX_PATH_IPXE_SRC)/src/arch/i386/scripts/i386.lds
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_CFLAGS = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -ffreestanding \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -ffunction-sections \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -march=i386 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -fomit-frame-pointer \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -fstrength-reduce \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -falign-jumps=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -falign-loops=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -falign-functions=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -mpreferred-stack-boundary=2 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -mregparm=3 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -freg-struct-return \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -fshort-wchar \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -Wformat-nonliteral \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_GCC_fno-stack-protector) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_GCC_fno-dwarf2-cfi-asm) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_GCC_Wno-address)
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_ASFLAGS = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -ffreestanding \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -ffunction-sections \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -march=i386 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -fomit-frame-pointer \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -fstrength-reduce \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -falign-jumps=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -falign-loops=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -falign-functions=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -mpreferred-stack-boundary=2 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -mregparm=3 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -freg-struct-return \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -fshort-wchar \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync -Wformat-nonliteral \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_GCC_fno-stack-protector) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_GCC_fno-dwarf2-cfi-asm) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(VBOX_GCC_Wno-address) \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync TEMPLATE_iPxe_DEFS = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync ARCH=i386 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync PLATFORM=pcbios \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync VERSION_MAJOR=1 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync VERSION_MINOR=0 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync VERSION_PATCH=0 \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync VERSION=\"1.0.0+\" \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync _build_id=0xaffeaffe
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync # iPxeBaseBin - The iPXE ROM base binary.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync PROGRAMS += iPxeBaseBin
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync iPxeBaseBin_TEMPLATE = iPxe
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync iPxeBaseBin_INCS = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync iPxeBaseBin_SOURCES = \
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync define def_iPxeBaseBinDefs
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(file)_DEFS += OBJECT=$(subst -,_,$(basename $(notdir $(file))))
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync $(foreach file,$(iPxeBaseBin_SOURCES),$(eval $(call def_iPxeBaseBinDefs)))
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync # ipxezbin - Compressor?
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync BLDPROGS += ipxezbin
818fc571b99bf867efcfd44b8e79c58ea9e1df56vboxsync ipxezbin_TEMPLATE = VBoxBldProg
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync ipxezbin_CFLAGS = -Wno-format
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync ipxezbin_SOURCES = src/util/zbin.c
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncinclude $(FILE_KBUILD_SUB_FOOTER)