summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/Graphics/BIOS/Makefile.kmk
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/Graphics/BIOS/Makefile.kmk')
-rw-r--r--src/VBox/Devices/Graphics/BIOS/Makefile.kmk201
1 files changed, 201 insertions, 0 deletions
diff --git a/src/VBox/Devices/Graphics/BIOS/Makefile.kmk b/src/VBox/Devices/Graphics/BIOS/Makefile.kmk
new file mode 100644
index 00000000..3c7e504c
--- /dev/null
+++ b/src/VBox/Devices/Graphics/BIOS/Makefile.kmk
@@ -0,0 +1,201 @@
+# $Id: Makefile.kmk $
+## @file
+# Sub-Makefile for the New VGA BIOS ROM.
+#
+
+#
+# Copyright (C) 2012-2023 Oracle and/or its affiliates.
+#
+# This file is part of VirtualBox base platform packages, as
+# available from https://www.virtualbox.org.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, in version 3 of the
+# License.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses>.
+#
+# SPDX-License-Identifier: GPL-3.0-only
+#
+
+SUB_DEPTH = ../../../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+
+ifdef VBOX_WITH_OPEN_WATCOM
+
+ #
+ # VBoxVgaBios - The VGA BIOS.
+ #
+ MISCBINS += VBoxVgaBios386
+ VBoxVgaBios386_TEMPLATE = VBoxBios
+ VBoxVgaBios386_ASFLAGS = -0
+ VBoxVgaBios386_CFLAGS = -3
+ VBoxVgaBios386_DEFS = VBE VBOX_BIOS_CPU=80386
+ VBoxVgaBios386_INCS = $(VBOX_GRAPHICS_INCS)
+ VBoxVgaBios386_SOURCES = \
+ vgarom.asm \
+ vberom.asm \
+ vgabios.c \
+ vbe.c
+ VBoxVgaBios386_LDFLAGS = \
+ output raw offset=0xC0000 \
+ order \
+ clname CODE \
+ segment VGAROM segaddr=0xC000 \
+ segment _TEXT segaddr=0xC000 offset=0x9F0 \
+ segment VBE32 segaddr=0xC000 offset=0x4640 \
+ clname DATA \
+ segment _DATA segaddr=0xC000 offset=0x4780
+
+ MISCBINS += VBoxVgaBios286
+ VBoxVgaBios286_EXTENDS = VBoxVgaBios386
+ VBoxVgaBios286_CFLAGS = -2
+ VBoxVgaBios286_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxVgaBios386_DEFS)) VBOX_BIOS_CPU=80286
+
+ MISCBINS += VBoxVgaBios8086
+ VBoxVgaBios8086_EXTENDS = VBoxVgaBios386
+ VBoxVgaBios8086_CFLAGS = -0
+ VBoxVgaBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxVgaBios386_DEFS)) VBOX_BIOS_CPU=8086
+
+ #
+ # Updates the alternative source file.
+ #
+ define def_VBoxVgaBiosUpdateAltSource
+ $$(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative$(1).asm +| $$(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative$(1).md5sum: \
+ $$$$(VBoxVgaBios$(1)_1_TARGET) \
+ $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \
+ $$(VBOX_VBOXCMP)
+ if1of ($$(KBUILD_TYPE), release)
+ $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \
+ --bios-image $$< \
+ --bios-map $$(basename $$<).map \
+ --bios-sym $$(basename $$<).sym \
+ --bios-type vga \
+ --output $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).asm
+ $$(QUIET)$$(TOOL_YASM_AS) -f bin \
+ -o $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).bin \
+ -l $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).lst \
+ $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).asm
+ $$(VBOX_VBOXCMP) $$< $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).bin
+ $$(CP) --changed -- $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).asm $$(PATH_ROOT)/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative$(1).asm
+ $$(REDIRECT) -C $$(dir $$(VBoxVgaBios$(1)_1_TARGET)) -- \
+ $$(MD5SUM_EXT) -bo $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).md5sum $$(notdir $$(VBoxVgaBios$(1)_1_TARGET))
+ $$(CP) --changed -- $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).md5sum $$(PATH_ROOT)/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative$(1).md5sum
+ $$(RM) -f -- $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).asm \
+ $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).bin \
+ $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).lst \
+ $$(VBoxVgaBios$(1)_0_OUTDIR)/VBoxVgaBiosAlternative$(1).md5sum
+ else
+ $$(QUIET)$$(ECHO) "Fatal error: Can only update VBoxVgaBiosAlternative$(1).asm/md5sum with a release build."
+ $$(QUIET)exit 1
+ endif
+ endef
+
+ $(evalcall2 def_VBoxVgaBiosUpdateAltSource,386)
+ $(evalcall2 def_VBoxVgaBiosUpdateAltSource,286)
+ $(evalcall2 def_VBoxVgaBiosUpdateAltSource,8086)
+
+ update-vgabios-source: \
+ $(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative386.asm \
+ $(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative286.asm \
+ $(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative8086.asm
+
+endif # VBOX_WITH_OPEN_WATCOM
+
+
+#
+# The library containing the VGA BIOS image.
+#
+LIBRARIES += VgaBiosBin
+VgaBiosBin_TEMPLATE = VBoxR3Dll
+VgaBiosBin_DEFS = IN_VBOXDD2
+VgaBiosBin_SOURCES =
+VgaBiosBin_DEPS = $(VgaBiosBin_0_OUTDIR)/vbetables.h
+VgaBiosBin_CLEAN = $(VgaBiosBin_0_OUTDIR)/vbetables.h
+
+define def_VBoxVgaBiosBin
+ VgaBiosBin_SOURCES += $$(VgaBiosBin_0_OUTDIR)/VgaBiosBin$(1).c
+ VgaBiosBin_CLEAN += $$(VgaBiosBin_0_OUTDIR)/VgaBiosBin$(1).c
+ ifdef VBOX_WITH_OPEN_WATCOM
+ $$$$(VgaBiosBin_0_OUTDIR)/VgaBiosBin$(1).c: $$$$(VBoxVgaBios$(1)_1_TARGET) $$(VBOX_BIN2C) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,bin2c,VgaBiosBin,$$<,$$@)
+ $$(QUIET)$$(VBOX_BIN2C) -min 32 -max 36 -mask 0x0fff -ascii -export VgaBiosBinary$(1) $$< $$@
+ else
+ VgaBiosBin_CLEAN += $$(VgaBiosBin_0_OUTDIR)/VBoxVgaBios$(1).rom
+
+ $$$$(VgaBiosBin_0_OUTDIR)/VgaBiosBin$(1).c + $$$$(VgaBiosBin_0_OUTDIR)/VBoxVgaBios$(1).rom: \
+ $$(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative$(1).asm \
+ $$(PATH_SUB_CURRENT)/VBoxVgaBiosAlternative$(1).md5sum \
+ $$(VBOX_BIN2C) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,bin2c,VgaBiosBin,$$<,$$@)
+ $$(QUIET)$$(TOOL_YASM_AS) -f bin -o $$(VgaBiosBin_0_OUTDIR)/VBoxVgaBios$(1).rom $$<
+ $$(QUIET)$$(REDIRECT) -C $$(VgaBiosBin_0_OUTDIR) -- \
+ $$(MD5SUM_EXT) -c $$(basename $$<).md5sum
+ $$(QUIET)$$(VBOX_BIN2C) -min 32 -max 36 -mask 0x0fff -ascii -export VgaBiosBinary$(1) $$(VgaBiosBin_0_OUTDIR)/VBoxVgaBios$(1).rom $$@
+ $$(QUIET)$$(RM) -f -- $$$$(VgaBiosBin_0_OUTDIR)/VBoxVgaBios$(1).rom
+ endif
+endef
+$(evalcall2 def_VBoxVgaBiosBin,386)
+$(evalcall2 def_VBoxVgaBiosBin,286)
+$(evalcall2 def_VBoxVgaBiosBin,8086)
+
+
+# Rule for making the vbetables.h that DevVGA uses.
+$$(VgaBiosBin_0_OUTDIR)/vbetables.h: $(MAKEFILE_CURRENT) $$(vbetables-gen_1_TARGET) | $$(dir $$@)
+ $(QUIET)$(REDIRECT) -wo $@ -- $(vbetables-gen_1_TARGET)
+
+
+#
+# The VBE tables.
+#
+BLDPROGS += vbetables-gen
+vbetables-gen_TEMPLATE = VBoxBldProg
+vbetables-gen_SOURCES = vbetables-gen.c
+vbetables-gen_CLEAN = $(vbetables-gen)
+
+
+#
+# The VGA BIOS Logo.
+#
+LIBRARIES += VgaDefBiosLogo
+VgaDefBiosLogo_TEMPLATE = VBoxR3Dll
+VgaDefBiosLogo_INCS = $(VBOX_PATH_DEVICES_SRC)
+VgaDefBiosLogo_SOURCES = $(VgaDefBiosLogo_0_OUTDIR)/VgaDefBiosLogo.c
+VgaDefBiosLogo_CLEAN = $(VgaDefBiosLogo_0_OUTDIR)/VgaDefBiosLogo.c
+ifndef VBOX_OSE
+ VgaDefBiosLogo_SOURCES += $(VgaDefBiosLogo_0_OUTDIR)/VgaDefBiosLogoNY.c
+ VgaDefBiosLogo_CLEAN += $(VgaDefBiosLogo_0_OUTDIR)/VgaDefBiosLogoNY.c
+endif
+
+# Rule for making the bios logo.
+$$(VgaDefBiosLogo_0_OUTDIR)/VgaDefBiosLogo.c: $(VBOX_BRAND_BIOS_LOGO) $(VBOX_BIN2C) | $$(dir $$@)
+ $(call MSG_TOOL,bin2c,VgaDefBiosLogo,$<,$@)
+ $(QUIET)$(VBOX_BIN2C) VgaDefBiosLogo $< $@
+
+# Rule for making the bios logo.
+$$(VgaDefBiosLogo_0_OUTDIR)/VgaDefBiosLogoNY.c: $(PATH_ROOT)/src/VBox/Devices/Graphics/BIOS/puel_logo_ny.bmp $(VBOX_BIN2C) | $$(dir $$@)
+ $(call MSG_TOOL,bin2c,VgaDefBiosLogoNY,$<,$@)
+ $(QUIET)$(VBOX_BIN2C) VgaDefBiosLogoNY $< $@
+
+
+ifdef VBOX_WITH_OPEN_WATCOM
+ #
+ # Install the symbol file for the BIOS.
+ #
+ INSTALLS += VBoxVgaBiosSym
+ VBoxVgaBiosSym_TEMPLATE = VBoxDbgSyms
+ VBoxVgaBiosSym_SOURCES = \
+ $(basename $(VBoxVgaBios386_1_TARGET)).sym \
+ $(basename $(VBoxVgaBios286_1_TARGET)).sym \
+ $(basename $(VBoxVgaBios8086_1_TARGET)).sym
+endif
+
+include $(FILE_KBUILD_SUB_FOOTER)