Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Thomas Lamprecht 8b6366f875 BaseTools/GCC: set -Wno-unused-const-variable on RELEASE builds
TianoCore BZ#700 [1]

Set the '-Wno-unused-const-variables' in RELEASE builds with the
GGC49 and GCC5 toolchain.

This fixes the RELEASE build of OVMF with GCC in version 6 or newer.
GCC 6 added the '-Wunused-const-variable' warning, which gets
activated by '-Wunused-variable' and has the following behavior:
"Warn whenever a constant static variable is unused aside from its
declaration" [2]

Commit 2ad6ba80a1 introduced a case
where exactly this happens on a RELEASE build. All uses of the static
const variable are located in debug code only, which gets thrown out
by the compiler on RELEASE builds and thus triggers the
unused-const-variable warning.

There is currently no GCC 6 toolchain target defined and doing so
would add a lot of boilerplate code. Instead, use the fact that GCC
ignores unknown '-Wno-*' options:

"[...] if the -Wno- form is used [...] no diagnostic is produced for
-Wno-unknown-warning unless other diagnostics are being produced"

This behavior is available in GCC 4.9 [3] (and also earlier, for that
matter), so add the flag to the GCC49 and GCC5 toolchain, even if
both GCC versions do not supports it.
GCC49 doesn't enables LTO whereas GCC5 does. As GCC 6.0 through 6.2
had bugs relating to LTO there can be desire to use the GCC49 target
even if compiling with GCC 6, see 432f1d83f7.

Orient the changes on 20d00edf21 which moved the
'-Wno-unused-but-set-variable' flag to RELEASE builds only, as there
it ensure that it does not gets raised if the only usage of a
variable is in (then collapsed) debug code.

[1] https://bugzilla.tianocore.org/show_bug.cgi?id=700
[2] https://gcc.gnu.org/onlinedocs/gcc-6.4.0/gcc/Warning-Options.html#index-Wunused-const-variable
[3] https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Warning-Options.html

Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Liming Gao <liming.gao@intel.com>
[lersek@redhat.com: fix typo in subject]
2017-09-08 20:58:54 +02:00
AppPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
ArmPkg ArmPkg: add ArmCrashDumpDxe driver 2017-09-06 17:48:03 +01:00
ArmPlatformPkg ArmPlatformPkg/ArmJunoDxe: remove bogus DmaLib dependency 2017-08-30 10:33:59 +01:00
ArmVirtPkg ArmVirtPkg: Enable UDF file system support 2017-09-08 20:43:01 +02:00
BaseTools BaseTools/GCC: set -Wno-unused-const-variable on RELEASE builds 2017-09-08 20:58:54 +02:00
BeagleBoardPkg BeagleBoardPkg: switch to generic non-coherent DmaLib 2017-08-30 14:13:58 +01:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
CorebootPayloadPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
CryptoPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
DuetPkg DuetPkg: Fix Xcode 9 Beta treating 32-bit left shift as undefined 2017-08-11 08:44:54 +08:00
EdkCompatibilityPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellBinPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EmbeddedPkg SD : Updated CMD 6 implememtation. 2017-09-07 17:06:44 +01:00
EmulatorPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
FatBinPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
FatPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFrameworkModulePkg IntelFramdworkModulePkg/LegacyBios: Add IoMmu Support. 2017-09-06 12:11:16 +08:00
IntelFrameworkPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFsp2Pkg IntelFsp2Pkg: Fix build error with WHOLEARCHIVE option 2017-08-25 14:32:50 +08:00
IntelFsp2WrapperPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFspPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFspWrapperPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelSiliconPkg IntelSiliconPkg/IntelVtd: Consume VTd policy PCD 2017-09-07 21:35:06 +08:00
MdeModulePkg MdeModulePkg: Initial UDF/ECMA-167 file system support 2017-09-08 20:42:49 +02:00
MdePkg MdePkg: Add UDF volume structure definitions 2017-09-08 20:42:22 +02:00
NetworkPkg NetworkPkg: Fix GCC build error. 2017-09-06 18:08:07 +08:00
Nt32Pkg Nt32Pkg: Enable UDF file system support 2017-09-08 20:43:05 +02:00
Omap35xxPkg Omap35xxPkg: switch to EmbeddedPkg's NonCoherentDmaLib 2017-08-30 14:13:47 +01:00
OptionRomPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
OvmfPkg OvmfPkg: Enable UDF file system support 2017-09-08 20:42:51 +02:00
PcAtChipsetPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
PerformancePkg PerformancePkg DP: Init CustomCumulativeData.MinDur 2017-08-14 16:55:44 +08:00
QuarkPlatformPkg QuarkPlatformPkg/Readme.md: Bring Readme.md up to date 2017-08-10 09:44:24 -07:00
QuarkSocPkg QuarkSocPkg/QNCSmmDispatcher: Fix use after free issue #2 2017-08-16 19:42:17 -07:00
SecurityPkg Pkcs7VerifyDxe: Don't allow Pkcs7Verify to install protocols twice 2017-09-05 15:55:42 +08:00
ShellBinPkg ShellBinPkg: AARCH64/ARM Shell binary update. 2017-08-31 15:41:59 +01:00
ShellPkg ShellPkg: Update CWD and current mapping when commands return 2017-08-30 11:42:52 +08:00
SignedCapsulePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
SourceLevelDebugPkg SourceLevelDebugPkg/DebugCommLibUsb3: Remove IntelFrameworkPkg.dec 2017-09-04 10:37:56 +08:00
StdLib edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
StdLibPrivateInternalFiles edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
UefiCpuPkg UefiCpuPkg/Lmce.c Remove useless file. 2017-09-05 14:46:27 +08:00
UnixPkg UnixPkg: Remove UnixPkg files (It is replaced by EmulatorPkg) 2013-07-29 21:09:55 +00:00
Vlv2DeviceRefCodePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Remove reference deprecated macro. 2017-08-07 15:28:13 +08:00
.gitignore edk2: Add .DS_Store to .gitignore for macOS 2017-05-19 15:14:34 -07:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Contributions.txt edk2: Fix typo in Contributions.txt 2017-08-16 17:50:44 +08:00
Edk2Setup.bat Edk2Setup.bat: Fix build errors from VS tools PREFIX ENV missing 2016-11-05 09:10:58 +08:00
License.txt edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Maintainers.txt Maintainers.txt: Update the Maintainers for IntelFrameworkXXXPkg 2017-08-23 14:15:20 +08:00
Readme.md edk2: Add Readme.md to root of edk2 repository 2017-08-03 11:02:25 -07:00
edksetup.bat BaseTools: suppress usage instructions with rebuild options 2017-07-04 10:16:13 +08:00
edksetup.sh BaseTools/edksetup.sh: fix invalid test for current working directory 2017-08-10 12:54:58 +08:00

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources