mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
Certain environments require Control Flow Guard (CFG) to be enabled at build time as part of their security hardening requirements. This change adds the necessary compiler and linker flags to enable CFG support. Signed-off-by: Kun Qin <kun.qin@microsoft.com>
91 lines
2.8 KiB
Text
91 lines
2.8 KiB
Text
## @file
|
|
# Makefile
|
|
#
|
|
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
|
|
!IFNDEF EDK_TOOLS_PATH
|
|
!ERROR "Please set your EDK_TOOLS_PATH!"
|
|
!ENDIF
|
|
|
|
!IFNDEF BASE_TOOLS_PATH
|
|
!ERROR "BASE_TOOLS_PATH is not set! Please run build_tools.bat at first!"
|
|
!ENDIF
|
|
|
|
!IFNDEF HOST_ARCH
|
|
HOST_ARCH = IA32
|
|
!ENDIF
|
|
|
|
!IFNDEF MAKEROOT
|
|
MAKEROOT = $(SOURCE_PATH)
|
|
!ENDIF
|
|
|
|
!IFNDEF EDK2_PATH
|
|
EDK2_PATH = $(MAKEROOT)\..\..\..
|
|
!ENDIF
|
|
|
|
MAKE = nmake -nologo
|
|
|
|
# DOS del command doesn't support ":\\" in the file path, such as j:\\BaseTools. Convert ":\\" to ":\"
|
|
BASE_TOOLS_PATH = $(BASE_TOOLS_PATH::\\=:\)
|
|
EDK_TOOLS_PATH = $(EDK_TOOLS_PATH::\\=:\)
|
|
|
|
SOURCE_PATH = $(BASE_TOOLS_PATH)\Source\C
|
|
BIN_PATH = $(BASE_TOOLS_PATH)\Bin
|
|
LIB_PATH = $(BASE_TOOLS_PATH)\Lib
|
|
|
|
SYS_BIN_PATH=$(EDK_TOOLS_PATH)\Bin
|
|
SYS_LIB_PATH=$(EDK_TOOLS_PATH)\Lib
|
|
|
|
!IF "$(HOST_ARCH)"=="IA32"
|
|
ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\Ia32
|
|
BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win32
|
|
LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win32
|
|
SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win32
|
|
SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win32
|
|
# Note: Disable flexible array member warnings
|
|
CFLAGS = $(CFLAGS) /wd4200
|
|
# Note: Suppress function implementation and prototype inconsistency warnings
|
|
CFLAGS = $(CFLAGS) /wd4028
|
|
|
|
!ELSEIF "$(HOST_ARCH)"=="X64"
|
|
ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\X64
|
|
BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win64
|
|
LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win64
|
|
SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win64
|
|
SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win64
|
|
CFLAGS = $(CFLAGS) /wd4267 /wd4244 /wd4334
|
|
# Note: Disable flexible array member warnings
|
|
CFLAGS = $(CFLAGS) /wd4200
|
|
# Note: Suppress function implementation and prototype inconsistency warnings
|
|
CFLAGS = $(CFLAGS) /wd4028
|
|
|
|
!ELSEIF "$(HOST_ARCH)"=="AARCH64"
|
|
ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\AArch64
|
|
BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win64
|
|
LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win64
|
|
SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win64
|
|
SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win64
|
|
# Note: These are bit-width conversion related warning suppressions.
|
|
CFLAGS = $(CFLAGS) /wd4267 /wd4244 /wd4334
|
|
# Note: Disable flexible array member warnings
|
|
CFLAGS = $(CFLAGS) /wd4200
|
|
# Note: Suppress function implementation and prototype inconsistency warnings
|
|
CFLAGS = $(CFLAGS) /wd4028
|
|
!ELSE
|
|
!ERROR "Bad HOST_ARCH"
|
|
!ENDIF
|
|
|
|
CC = cl.exe
|
|
CXX = cl.exe
|
|
AS = ml.exe
|
|
AR = lib.exe
|
|
LD = link.exe
|
|
LINKER = $(LD)
|
|
|
|
INC = $(INC) -I . -I $(SOURCE_PATH)\Include -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)\Common
|
|
INC = $(INC) -I $(EDK2_PATH)\MdePkg\Include
|
|
|
|
CFLAGS = $(CFLAGS) /nologo /Z7 /c /O2 /MT /W4 /WX /guard:cf /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
|
|
CPPFLAGS = $(CPPFLAGS) /EHsc /nologo /Z7 /c /O2 /MT /guard:cf /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
|