VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/Makefiles/header.makefile

Last change on this file was 108794, checked in by vboxsync, 7 weeks ago

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643

  • Property svn:eol-style set to native
File size: 4.0 KB
Line 
1## @file
2#
3# The makefile can be invoked with
4# HOST_ARCH = x86_64 or x64 for EM64T build
5# HOST_ARCH = ia32 or IA32 for IA32 build
6# HOST_ARCH = Arm or ARM for ARM build
7#
8# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
9# SPDX-License-Identifier: BSD-2-Clause-Patent
10
11EDK2_PATH ?= $(MAKEROOT)/../../..
12
13ifndef HOST_ARCH
14 #
15 # If HOST_ARCH is not defined, then we use 'uname -m' to attempt
16 # try to figure out the appropriate HOST_ARCH.
17 #
18 uname_m = $(shell uname -m)
19 $(info Attempting to detect HOST_ARCH from 'uname -m': $(uname_m))
20 ifneq (,$(strip $(filter $(uname_m), x86_64 amd64)))
21 HOST_ARCH=X64
22 endif
23 ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32)
24 HOST_ARCH=IA32
25 endif
26 ifneq (,$(findstring aarch64,$(uname_m)))
27 HOST_ARCH=AARCH64
28 else ifneq (,$(findstring arm64,$(uname_m)))
29 HOST_ARCH=AARCH64
30 else ifneq (,$(findstring arm,$(uname_m)))
31 HOST_ARCH=ARM
32 endif
33 ifneq (,$(findstring riscv64,$(uname_m)))
34 HOST_ARCH=RISCV64
35 endif
36 ifneq (,$(findstring loongarch64,$(uname_m)))
37 HOST_ARCH=LOONGARCH64
38 endif
39 ifndef HOST_ARCH
40 $(info Could not detected HOST_ARCH from uname results)
41 $(error HOST_ARCH is not defined!)
42 endif
43 $(info Detected HOST_ARCH of $(HOST_ARCH) using uname.)
44endif
45
46CYGWIN:=$(findstring CYGWIN, $(shell uname -s))
47LINUX:=$(findstring Linux, $(shell uname -s))
48DARWIN:=$(findstring Darwin, $(shell uname -s))
49CLANG:=$(shell $(CC) --version | grep clang)
50ifneq ($(CLANG),)
51CC ?= $(CLANG_BIN)clang
52CXX ?= $(CLANG_BIN)clang++
53AS ?= $(CLANG_BIN)clang
54AR ?= $(CLANG_BIN)llvm-ar
55LD ?= $(CLANG_BIN)llvm-ld
56else ifeq ($(origin CC),default)
57CC = $(GCC_PREFIX)gcc
58CXX = $(GCC_PREFIX)g++
59AS = $(GCC_PREFIX)gcc
60AR = $(GCC_PREFIX)ar
61LD = $(GCC_PREFIX)ld
62endif
63LINKER ?= $(CC)
64ifeq ($(HOST_ARCH), IA32)
65ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/Ia32/
66
67else ifeq ($(HOST_ARCH), X64)
68ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/X64/
69
70else ifeq ($(HOST_ARCH), ARM)
71ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/Arm/
72
73else ifeq ($(HOST_ARCH), AARCH64)
74ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/AArch64/
75
76else ifeq ($(HOST_ARCH), RISCV64)
77ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/RiscV64/
78
79else ifeq ($(HOST_ARCH), LOONGARCH64)
80ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/LoongArch64/
81
82else
83$(error Bad HOST_ARCH)
84endif
85
86INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE)
87INCLUDE += -I $(EDK2_PATH)/MdePkg/Include
88CPPFLAGS = $(INCLUDE)
89
90# keep EXTRA_OPTFLAGS last
91BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)
92
93ifeq ($(DARWIN),Darwin)
94# assume clang or clang compatible flags on OS X
95CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
96-Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
97else
98ifneq ($(CLANG),)
99CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
100-fno-delete-null-pointer-checks -Wall -Werror \
101-Wno-deprecated-declarations -Wno-self-assign \
102-Wno-unused-result -nostdlib -g
103else
104CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
105-fno-delete-null-pointer-checks -Wall -Werror \
106-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
107-Wno-unused-result -nostdlib -g
108endif
109endif
110ifneq ($(CLANG),)
111LDFLAGS =
112CXXFLAGS = -Wno-deprecated-register -Wno-unused-result -std=c++14
113else
114LDFLAGS =
115CXXFLAGS = -Wno-unused-result
116endif
117ifeq ($(HOST_ARCH), IA32)
118#
119# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns i386, but gcc defaults
120# to x86_64. So make sure tools match uname -m. You can manual have a 64-bit kernal on Snow Leopard
121# so only do this is uname -m returns i386.
122#
123ifeq ($(DARWIN),Darwin)
124 CFLAGS += -arch i386
125 CPPFLAGS += -arch i386
126 LDFLAGS += -arch i386
127endif
128endif
129
130# keep BUILD_OPTFLAGS last
131CFLAGS += $(BUILD_OPTFLAGS)
132CXXFLAGS += $(BUILD_OPTFLAGS)
133
134# keep EXTRA_LDFLAGS last
135LDFLAGS += $(EXTRA_LDFLAGS)
136
137.PHONY: all
138.PHONY: install
139.PHONY: clean
140
141all:
142
143$(MAKEROOT)/libs:
144 mkdir $(MAKEROOT)/libs
145
146$(MAKEROOT)/bin:
147 mkdir $(MAKEROOT)/bin
Note: See TracBrowser for help on using the repository browser.

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