VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/Makefile.kmk@ 60578

Last change on this file since 60578 was 60578, checked in by vboxsync, 9 years ago

bs3kit: made it easier to move 16-bit templated C code to other segments.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.8 KB
Line 
1# $Id: Makefile.kmk 60578 2016-04-19 15:26:34Z vboxsync $
2## @file
3# VirtualBox Validation Kit - Bootsector Tests for Test Drivers or standalone testing.
4#
5
6#
7# Copyright (C) 2006-2015 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17# The contents of this file may alternatively be used under the terms
18# of the Common Development and Distribution License Version 1.0
19# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20# VirtualBox OSE distribution, in which case the provisions of the
21# CDDL are applicable instead of those of the GPL.
22#
23# You may elect to license modified versions of this file under the
24# terms and conditions of either the GPL or the CDDL or both.
25#
26
27SUB_DEPTH = ../../../..
28include $(KBUILD_PATH)/subheader.kmk
29
30
31#
32# Make sure our Config.kmk gets included when kmk is running from a parent directory.
33#
34ifndef VBOX_BOOTSECTORS_CONFIG_KMK_INCLUDED
35 include $(PATH_SUB_CURRENT)/Config.kmk
36endif
37
38
39#
40# Include sub-makefile.
41#
42# The VBOX_WITH_BS3KIT feature requires NASM 2.12 and either MSVC or gcc
43# with ms_abi function attribute (gcc v4.4+, MSVC default).
44#
45if defined(VBOX_WITH_OPEN_WATCOM)
46 if1of ($(KBUILD_TARGET), win)
47 VBOX_WITH_BS3KIT = 1
48 else if $(VBOX_GCC_VERSION_CC) >= 40400 # ms_abi was added in 4.4
49 if1of ($(KBUILD_TARGET), linux)
50 VBOX_WITH_BS3KIT = 1
51 endif
52 endif
53 ifdef VBOX_WITH_BS3KIT
54 include $(PATH_SUB_CURRENT)/bs3kit/Makefile.kmk
55 endif
56endif
57
58
59#
60# Boot Sector "Linker" tool.
61#
62TOOL_VBoxBootSectorLd = Joins one or more BS2 object files into a floppy img.
63TOOL_VBoxBootSectorLd_LINK_MISCBIN_OUTPUT =
64TOOL_VBoxBootSectorLd_LINK_MISCBIN_DEPEND =
65TOOL_VBoxBootSectorLd_LINK_MISCBIN_DEPORD = $(VBoxBs2Linker_1_TARGET)
66define TOOL_VBoxBootSectorLd_LINK_MISCBIN_CMDS
67 $(VBoxBs2Linker_1_TARGET) -o $(out) $(objs) $(othersrc)
68endef
69
70BLDPROGS += VBoxBs2Linker
71VBoxBs2Linker_TEMPLATE = VBoxBldProg
72VBoxBs2Linker_SOURCES = VBoxBs2Linker.cpp
73
74
75#
76# Makes a boot sector test image.
77#
78TEMPLATE_VBoxBsTestImg = kBuild tool config for building boot sector stuff.
79TEMPLATE_VBoxBsTestImg_INST = $(INST_VALIDATIONKIT)bootsectors/
80TEMPLATE_VBoxBsTestImg_BINSUFF = .img
81TEMPLATE_VBoxBsTestImg_MODE = 0644
82TEMPLATE_VBoxBsTestImg_ASTOOL = YASM
83TEMPLATE_VBoxBsTestImg_ASFLAGS:= -f bin -P $(PATH_SUB_CURRENT)/bootsector2-first.mac $(VBOX_YASM_Wno-segreg-in-64bit) --mapfile
84TEMPLATE_VBoxBsTestImg_ASDEFS = ASM_FORMAT_BIN
85TEMPLATE_VBoxBsTestImg_INCS = \
86 . \
87 ../../VMM/testcase/Instructions
88TEMPLATE_VBoxBsTestImg_LDTOOL = VBoxBootSectorLd
89
90
91#
92# The boot sector tests.
93#
94MISCBINS += bootsector-shutdown
95bootsector-shutdown_TEMPLATE = VBoxBsTestImg
96bootsector-shutdown_SOURCES = bootsector-shutdown.asm
97
98MISCBINS += bootsector-pae
99bootsector-pae_TEMPLATE = VBoxBsTestImg
100bootsector-pae_SOURCES = bootsector-pae.asm
101
102MISCBINS += bootsector-empty
103bootsector-empty_TEMPLATE = VBoxBsTestImg
104bootsector-empty_SOURCES = bootsector-empty.asm
105
106MISCBINS += bootsector2-test1
107bootsector2-test1_TEMPLATE = VBoxBsTestImg
108bootsector2-test1_SOURCES = bootsector2-test1.asm
109
110MISCBINS += bootsector2-cpu-hidden-regs-1
111bootsector2-cpu-hidden-regs-1_TEMPLATE = VBoxBsTestImg
112bootsector2-cpu-hidden-regs-1_SOURCES = bootsector2-cpu-hidden-regs-1.asm
113
114MISCBINS += bootsector2-cpu-instr-1
115bootsector2-cpu-instr-1_TEMPLATE = VBoxBsTestImg
116bootsector2-cpu-instr-1_SOURCES = bootsector2-cpu-instr-1.asm
117
118MISCBINS += bootsector2-cpu-pf-1
119bootsector2-cpu-pf-1_TEMPLATE = VBoxBsTestImg
120bootsector2-cpu-pf-1_SOURCES = bootsector2-cpu-pf-1.asm
121
122MISCBINS += bootsector2-cpu-xcpt-1
123bootsector2-cpu-xcpt-1_TEMPLATE = VBoxBsTestImg
124bootsector2-cpu-xcpt-1_SOURCES = bootsector2-cpu-xcpt-1.asm
125
126MISCBINS += bootsector2-cpu-xcpt-2
127bootsector2-cpu-xcpt-2_TEMPLATE = VBoxBsTestImg
128bootsector2-cpu-xcpt-2_SOURCES = bootsector2-cpu-xcpt-2.asm
129
130MISCBINS += bootsector2-cpu-a20-1
131bootsector2-cpu-a20-1_TEMPLATE = VBoxBsTestImg
132bootsector2-cpu-a20-1_SOURCES = bootsector2-cpu-a20-1.asm
133
134MISCBINS += bootsector2-cpu-basic-1
135bootsector2-cpu-basic-1_TEMPLATE = VBoxBsTestImg
136bootsector2-cpu-basic-1_SOURCES = bootsector2-cpu-basic-1.asm
137
138MISCBINS += bootsector2-cpu-ac-loop
139bootsector2-cpu-ac-loop_TEMPLATE = VBoxBsTestImg
140bootsector2-cpu-ac-loop_SOURCES = bootsector2-cpu-ac-loop.asm
141
142MISCBINS += bootsector2-cpu-db-loop
143bootsector2-cpu-db-loop_TEMPLATE = VBoxBsTestImg
144bootsector2-cpu-db-loop_SOURCES = bootsector2-cpu-db-loop.asm
145
146MISCBINS += bootsector2-boot-registers-1
147bootsector2-boot-registers-1_TEMPLATE = VBoxBsTestImg
148bootsector2-boot-registers-1_SOURCES = bootsector2-boot-registers-1.asm
149
150MISCBINS += bootsector2-triple-fault-1
151bootsector2-triple-fault-1_TEMPLATE = VBoxBsTestImg
152bootsector2-triple-fault-1_SOURCES = bootsector2-triple-fault-1.asm
153
154
155ifeq ($(USERNAME),birdxx)
156 if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH),win.amd64)
157#
158# Generated instruction tests (work in progress).
159#
160
161VBOX_PATH_VBINSTST = $(PATH_ROOT)/src/VBox/VMM/testcase/Instructions
162VBOX_VBINSTST_GEN = $(VBOX_PATH_VBINSTST)/InstructionTestGen.py
163VBOX_BOOTSECTOR2_VBINSTST_AMD64_GEN = $(VBOX_BLD_PYTHON) $(VBOX_VBINSTST_GEN) \
164 --split 3 --target bs2-r0-64 --output-base $(bootsectors_0_OUTDIR)/VBInsTst-64 --test-size tiny
165VBOX_BOOTSECTOR2_VBINSTST_AMD64_FILES = $(shell $(VBOX_BOOTSECTOR2_VBINSTST_AMD64_GEN) --makefile-mode)
166
167#$$(bootsectors_0_OUTDIR)/VBInsTst.ts + $$(VBOX_BOOTSECTOR2_VBINSTST_AMD64_FILES): $(VBOX_VBINSTST_GEN) | $$(dir $$@)
168# $(VBOX_BOOTSECTOR2_VBINSTST_AMD64_GEN)
169# $(APPEND) -t $@
170#
171#bootsectors_SOURCES += $(bootsectors_0_OUTDIR)/bootsector2-vbinstst-1.img
172#bootsectors_CLEAN += $(VBOX_BOOTSECTOR2_VBINSTST_AMD64_FILES)
173#
174#$$(bootsectors_0_OUTDIR)/bootsector2-vbinstst-1.img: \
175# $(PATH_SUB_CURRENT)/bootsector2-vbinstst-64-1.asm \
176# $$(bootsectors_0_OUTDIR)/VBInsTst-64.asm
177# $(TOOL_$(VBOX_ASTOOL)_AS) -f bin -D ASM_FORMAT_BIN -I $(dir $@) -I $(PATH_ROOT)/include -I $(VBOX_PATH_VBINSTST) -o $@ -L nasm -l [email protected] $<
178
179MISCBINS += bootsector2-vbinstst-kernel
180bootsector2-vbinstst-kernel_TEMPLATE = VBoxBsTestImg
181bootsector2-vbinstst-kernel_SOURCES = \
182 bootsector2-vbinstst-kernel.asm
183
184
185MISCBINS += bootsector2-vbinstst-64-1
186bootsector2-vbinstst-64-1_TEMPLATE = VBoxBsTestImg
187bootsector2-vbinstst-64-1_DEFS = \
188 BS2_BIG_IMAGE_LM64 \
189 BS2_BIG_IMAGE_GEN_SOURCE_FILE=bs2-vbinstst-64-1.asm \
190 BS2_BIG_IMAGE_GEN_TEST_NAME=\"bs2-vbinstst-64-1\"
191bootsector2-vbinstst-64-1_INCS = $(bootsector2-vbinstst-64-1_0_OUTDIR)/
192bootsector2-vbinstst-64-1_SOURCES = \
193 bootsector2-vbinstst-kernel.asm \
194 bootsector2-vbinstst-big-template.asm
195bootsector2-vbinstst-64-1_INTERMEDIATES = \
196 $(bootsector2-vbinstst-64-1_0_OUTDIR)/bs2-vbinstst-64-1.asm
197bootsector2-vbinstst-64-1_CLEAN = \
198 $(bootsector2-vbinstst-64-1_0_OUTDIR)/bs2-vbinstst-64-1.asm
199
200$$(bootsector2-vbinstst-64-1_0_OUTDIR)/bs2-vbinstst-64-1.asm: $(VBOX_VBINSTST_GEN) | $$(dir $$@)
201 $(VBOX_BLD_PYTHON) $(VBOX_VBINSTST_GEN) --target bs2-r0-64-big --output-base $(basename $@) --test-size medium
202
203MISCBINS += bootsector2-vbinstst-32-1
204bootsector2-vbinstst-32-1_TEMPLATE = VBoxBsTestImg
205bootsector2-vbinstst-32-1_DEFS = \
206 BS2_BIG_IMAGE_PP32 \
207 BS2_BIG_IMAGE_GEN_SOURCE_FILE=bs2-vbinstst-32-1.asm \
208 BS2_BIG_IMAGE_GEN_TEST_NAME=\"bs2-vbinstst-32-1\"
209bootsector2-vbinstst-32-1_INCS = $(bootsector2-vbinstst-32-1_0_OUTDIR)/
210bootsector2-vbinstst-32-1_SOURCES = \
211 bootsector2-vbinstst-kernel.asm \
212 bootsector2-vbinstst-big-template.asm
213bootsector2-vbinstst-32-1_INTERMEDIATES = \
214 $(bootsector2-vbinstst-32-1_0_OUTDIR)/bs2-vbinstst-32-1.asm
215bootsector2-vbinstst-32-1_CLEAN = \
216 $(bootsector2-vbinstst-32-1_0_OUTDIR)/bs2-vbinstst-32-1.asm
217
218$$(bootsector2-vbinstst-32-1_0_OUTDIR)/bs2-vbinstst-32-1.asm: $(VBOX_VBINSTST_GEN) | $$(dir $$@)
219 $(VBOX_BLD_PYTHON) $(VBOX_VBINSTST_GEN) --target bs2-r0-32-big --output-base $(basename $@) --test-size medium
220
221 endif
222endif # bird-only
223
224
225ifdef VBOX_WITH_BS3KIT
226#
227# Bs3kit
228#
229
230# CPU basics #2 (first being bootsector2-cpu-basic-1).
231MISCBINS += bs3-cpu-basic-2
232bs3-cpu-basic-2_TEMPLATE = VBoxBS3KitImg
233bs3-cpu-basic-2_INCS = .
234bs3-cpu-basic-2_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
235bs3-cpu-basic-2_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
236 ifeq ($(KBUILD_HOST),win)
237bs3-cpu-basic-2_DEFS += HAVE_OMF_CONVERTER
238 endif
239bs3-cpu-basic-2_SOURCES = \
240 bs3kit/bs3-first-rm.asm \
241 bs3-cpu-basic-2-c.c \
242 bs3-cpu-basic-2.asm \
243 bs3kit/bs3-cmn-instantiate-x0.c16 \
244 bs3kit/bs3-cmn-instantiate.c32 \
245 bs3kit/bs3-cmn-instantiate.c64
246bs3-cpu-basic-2-template.o:: \
247 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate-x0.o16 \
248 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o32 \
249 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o64
250endif
251
252
253include $(FILE_KBUILD_SUB_FOOTER)
254
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette