mirror of https://github.com/acidanthera/audk.git
BaseTools/Gcc ARM AARCH64: add support for building device tree binaries
While modern AARCH64 server systems use ACPI for describing the platform topology to the OS, ARM systems and AARCH64 outside of the server space mostly use device tree binaries, which are compiled from device tree source files using the device tree compiler. Currently, such source files and binaries may be kept in the EDK2 platform trees, but are not integrated with the build, which means they need to be kept in sync and recompiled manually, which is cumbersome. So let's wire up BaseTools support for them: add tool definitions for the DTC compiler and preprocessor flags that allow these source files to use FixedPcd expressions and other macros defined by AutoGen.h This way, a device tree binary can be built from source and emitted into a FFS file automatically using something like: DeviceTree.inf: [Defines] INF_VERSION = 0x00010019 BASE_NAME = SomePlatformDeviceTree FILE_GUID = 25462CDA-221F-47DF-AC1D-259CFAA4E326 # gDtPlatformDefaultDtbFileGuid MODULE_TYPE = USER_DEFINED VERSION_STRING = 1.0 [Sources] SomePlatform.dts [Packages] MdePkg/MdePkg.dec SomePlatform.fdf: INF RuleOverride = DTB xxx/yyy/DeviceTree.inf [Rule.Common.USER_DEFINED.DTB] FILE FREEFORM = $(NAMED_GUID) { RAW BIN |.dtb } where it can be picked at runtime by the DTB loader that may refer to it using gDtPlatformDefaultDtbFileGuid. Note that this is very similar to how ACPI tables may be emitted into a FFS file with a known GUID and picked up by AcpiTableDxe at runtime. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
f3f0bd168f
commit
f29ca8e8b9
|
@ -238,6 +238,20 @@
|
|||
# For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues
|
||||
"$(ASM)" $(ASM_FLAGS) -o ${dst} ${d_path}(+)${s_base}.iii
|
||||
|
||||
[Device-Tree-Source-File]
|
||||
<InputFile>
|
||||
?.dts
|
||||
|
||||
<ExtraDependency>
|
||||
$(MAKE_FILE)
|
||||
|
||||
<OutputFile>
|
||||
$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dtb
|
||||
|
||||
<Command.GCC>
|
||||
"$(PP)" $(DTCPP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
|
||||
"$(DTC)" -I dts -O dtb -o ${dst} ${d_path}(+)${s_base}.i
|
||||
|
||||
[Visual-Form-Representation-File]
|
||||
<InputFile>
|
||||
?.vfr
|
||||
|
|
|
@ -227,6 +227,8 @@ DEFINE IPHONE_TOOLS = /Developer/Platforms/iPhoneOS.platform/Develope
|
|||
|
||||
DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G++ Lite/bin
|
||||
|
||||
DEFINE DTC_BIN = ENV(DTC_PREFIX)dtc
|
||||
|
||||
####################################################################################
|
||||
#
|
||||
# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>
|
||||
|
@ -4367,6 +4369,7 @@ DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DI
|
|||
DEFINE GCC_ASLPP_FLAGS = -x c -E -include AutoGen.h
|
||||
DEFINE GCC_ASLCC_FLAGS = -x c
|
||||
DEFINE GCC_WINDRES_FLAGS = -J rc -O coff
|
||||
DEFINE GCC_DTCPP_FLAGS = -E -x assembler-with-cpp -imacros $(DEST_DIR_DEBUG)/AutoGen.h -nostdinc
|
||||
DEFINE GCC_IA32_RC_FLAGS = -I binary -O elf32-i386 -B i386 --rename-section .data=.hii
|
||||
DEFINE GCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386 --rename-section .data=.hii
|
||||
DEFINE GCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 --rename-section .data=.hii
|
||||
|
@ -4750,6 +4753,7 @@ RELEASE_GCC45_X64_CC_FLAGS = DEF(GCC45_X64_CC_FLAGS) -Os
|
|||
*_GCC46_*_MAKE_PATH = DEF(GCC46_IA32_PREFIX)make
|
||||
*_GCC46_*_*_DLL = ENV(GCC46_DLL)
|
||||
*_GCC46_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
*_GCC46_*_DTC_PATH = DEF(DTC_BIN)
|
||||
|
||||
*_GCC46_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_GCC46_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
|
||||
|
@ -4838,6 +4842,7 @@ RELEASE_GCC46_X64_CC_FLAGS = DEF(GCC46_X64_CC_FLAGS) -Os -Wno-unused-but-s
|
|||
*_GCC46_ARM_ASM_FLAGS = DEF(GCC46_ARM_ASM_FLAGS)
|
||||
*_GCC46_ARM_DLINK_FLAGS = DEF(GCC46_ARM_DLINK_FLAGS)
|
||||
*_GCC46_ARM_DLINK2_FLAGS = DEF(GCC46_ARM_DLINK2_FLAGS)
|
||||
*_GCC46_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC46_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
*_GCC46_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC46_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
|
||||
|
@ -4859,6 +4864,7 @@ RELEASE_GCC46_ARM_CC_FLAGS = DEF(GCC46_ARM_CC_FLAGS) -Wno-unused-but-set-v
|
|||
*_GCC47_*_MAKE_PATH = DEF(GCC47_IA32_PREFIX)make
|
||||
*_GCC47_*_*_DLL = ENV(GCC47_DLL)
|
||||
*_GCC47_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
*_GCC47_*_DTC_PATH = DEF(DTC_BIN)
|
||||
|
||||
*_GCC47_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_GCC47_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
|
||||
|
@ -4946,6 +4952,7 @@ RELEASE_GCC47_X64_CC_FLAGS = DEF(GCC47_X64_CC_FLAGS) -Os -Wno-unused-but-s
|
|||
*_GCC47_ARM_ASM_FLAGS = DEF(GCC47_ARM_ASM_FLAGS)
|
||||
*_GCC47_ARM_DLINK_FLAGS = DEF(GCC47_ARM_DLINK_FLAGS)
|
||||
*_GCC47_ARM_DLINK2_FLAGS = DEF(GCC47_ARM_DLINK2_FLAGS)
|
||||
*_GCC47_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC47_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
*_GCC47_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC47_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
|
||||
|
@ -4975,6 +4982,7 @@ RELEASE_GCC47_ARM_CC_FLAGS = DEF(GCC47_ARM_CC_FLAGS) -Wno-unused-but-set-v
|
|||
*_GCC47_AARCH64_ASM_FLAGS = DEF(GCC47_AARCH64_ASM_FLAGS)
|
||||
*_GCC47_AARCH64_DLINK_FLAGS = DEF(GCC47_AARCH64_DLINK_FLAGS)
|
||||
*_GCC47_AARCH64_DLINK2_FLAGS = DEF(GCC47_AARCH64_DLINK2_FLAGS)
|
||||
*_GCC47_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC47_AARCH64_PLATFORM_FLAGS =
|
||||
*_GCC47_AARCH64_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC47_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
|
||||
|
@ -4996,6 +5004,7 @@ RELEASE_GCC47_AARCH64_CC_FLAGS = DEF(GCC47_AARCH64_CC_FLAGS) -Wno-unused-but-s
|
|||
*_GCC48_*_MAKE_PATH = DEF(GCC48_IA32_PREFIX)make
|
||||
*_GCC48_*_*_DLL = ENV(GCC48_DLL)
|
||||
*_GCC48_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
*_GCC48_*_DTC_PATH = DEF(DTC_BIN)
|
||||
|
||||
*_GCC48_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_GCC48_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
|
||||
|
@ -5083,6 +5092,7 @@ RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os -Wno-unused-but-s
|
|||
*_GCC48_ARM_ASM_FLAGS = DEF(GCC48_ARM_ASM_FLAGS)
|
||||
*_GCC48_ARM_DLINK_FLAGS = DEF(GCC48_ARM_DLINK_FLAGS)
|
||||
*_GCC48_ARM_DLINK2_FLAGS = DEF(GCC48_ARM_DLINK2_FLAGS)
|
||||
*_GCC48_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC48_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
*_GCC48_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC48_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
|
||||
|
@ -5112,6 +5122,7 @@ RELEASE_GCC48_ARM_CC_FLAGS = DEF(GCC48_ARM_CC_FLAGS) -Wno-unused-but-set-v
|
|||
*_GCC48_AARCH64_ASM_FLAGS = DEF(GCC48_AARCH64_ASM_FLAGS)
|
||||
*_GCC48_AARCH64_DLINK_FLAGS = DEF(GCC48_AARCH64_DLINK_FLAGS)
|
||||
*_GCC48_AARCH64_DLINK2_FLAGS = DEF(GCC48_AARCH64_DLINK2_FLAGS)
|
||||
*_GCC48_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC48_AARCH64_PLATFORM_FLAGS =
|
||||
*_GCC48_AARCH64_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC48_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
|
||||
|
@ -5133,6 +5144,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
|
|||
*_GCC49_*_MAKE_PATH = DEF(GCC49_IA32_PREFIX)make
|
||||
*_GCC49_*_*_DLL = ENV(GCC49_DLL)
|
||||
*_GCC49_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
*_GCC49_*_DTC_PATH = DEF(DTC_BIN)
|
||||
|
||||
*_GCC49_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_GCC49_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
|
||||
|
@ -5220,6 +5232,7 @@ RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-s
|
|||
*_GCC49_ARM_ASM_FLAGS = DEF(GCC49_ARM_ASM_FLAGS)
|
||||
*_GCC49_ARM_DLINK_FLAGS = DEF(GCC49_ARM_DLINK_FLAGS)
|
||||
*_GCC49_ARM_DLINK2_FLAGS = DEF(GCC49_ARM_DLINK2_FLAGS)
|
||||
*_GCC49_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC49_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
*_GCC49_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC49_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
|
||||
|
@ -5248,6 +5261,7 @@ RELEASE_GCC49_ARM_CC_FLAGS = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-v
|
|||
*_GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
|
||||
*_GCC49_AARCH64_ASM_FLAGS = DEF(GCC49_AARCH64_ASM_FLAGS)
|
||||
*_GCC49_AARCH64_DLINK2_FLAGS = DEF(GCC49_AARCH64_DLINK2_FLAGS)
|
||||
*_GCC49_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC49_AARCH64_PLATFORM_FLAGS =
|
||||
*_GCC49_AARCH64_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC49_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
|
||||
|
@ -5276,6 +5290,7 @@ RELEASE_GCC49_AARCH64_DLINK_FLAGS = DEF(GCC49_AARCH64_DLINK_FLAGS)
|
|||
*_GCC5_*_MAKE_PATH = DEF(GCC5_IA32_PREFIX)make
|
||||
*_GCC5_*_*_DLL = ENV(GCC5_DLL)
|
||||
*_GCC5_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
*_GCC5_*_DTC_PATH = DEF(DTC_BIN)
|
||||
|
||||
*_GCC5_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_GCC5_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
|
||||
|
@ -5368,6 +5383,7 @@ RELEASE_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
|
|||
*_GCC5_ARM_ASLDLINK_FLAGS = DEF(GCC5_ARM_ASLDLINK_FLAGS)
|
||||
*_GCC5_ARM_ASM_FLAGS = DEF(GCC5_ARM_ASM_FLAGS)
|
||||
*_GCC5_ARM_DLINK2_FLAGS = DEF(GCC5_ARM_DLINK2_FLAGS)
|
||||
*_GCC5_ARM_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC5_ARM_PLATFORM_FLAGS = -march=armv7-a
|
||||
*_GCC5_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC5_ARM_RC_FLAGS = DEF(GCC_ARM_RC_FLAGS)
|
||||
|
@ -5401,6 +5417,7 @@ RELEASE_GCC5_ARM_DLINK_FLAGS = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKS
|
|||
*_GCC5_AARCH64_ASLDLINK_FLAGS = DEF(GCC5_AARCH64_ASLDLINK_FLAGS)
|
||||
*_GCC5_AARCH64_ASM_FLAGS = DEF(GCC5_AARCH64_ASM_FLAGS)
|
||||
*_GCC5_AARCH64_DLINK2_FLAGS = DEF(GCC5_AARCH64_DLINK2_FLAGS)
|
||||
*_GCC5_AARCH64_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
*_GCC5_AARCH64_PLATFORM_FLAGS =
|
||||
*_GCC5_AARCH64_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
|
||||
*_GCC5_AARCH64_RC_FLAGS = DEF(GCC_AARCH64_RC_FLAGS)
|
||||
|
@ -5430,12 +5447,14 @@ RELEASE_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(W
|
|||
*_CLANG35_*_MAKE_PATH = make
|
||||
*_CLANG35_*_*_DLL = ENV(CLANG35_DLL)
|
||||
*_CLANG35_*_ASL_PATH = DEF(UNIX_IASL_BIN)
|
||||
*_CLANG35_*_DTC_PATH = DEF(DTC_BIN)
|
||||
|
||||
*_CLANG35_*_PP_FLAGS = DEF(GCC_PP_FLAGS)
|
||||
*_CLANG35_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS)
|
||||
*_CLANG35_*_APP_FLAGS =
|
||||
*_CLANG35_*_ASL_FLAGS = DEF(IASL_FLAGS)
|
||||
*_CLANG35_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)
|
||||
*_CLANG35_*_DTCPP_FLAGS = DEF(GCC_DTCPP_FLAGS)
|
||||
|
||||
*_CLANG35_*_CC_PATH = ENV(CLANG35_BIN)clang
|
||||
*_CLANG35_*_ASM_PATH = ENV(CLANG35_BIN)clang
|
||||
|
|
Loading…
Reference in New Issue