Hi Bob, Liming, So, I've been playing around with merging the .dsc/.fdf files in OvmfPkg. Merging IA32 and X64 is simple enough, since you can test on
!if $(ARCH) == "X64" However, from what I can tell, when trying to merge in the OvmfPkgIa32X64 platform - what you actually end up with in $(ARCH) when specifying multiple -a is a python list rather than a single string. To explain the problem in code, tryin to build the platform described by --- [Defines] PLATFORM_NAME = Ovmf PLATFORM_GUID = 5a9e7754-d81b-49ea-85ad-69eaa7b1539b PLATFORM_VERSION = 0.1 DSC_SPECIFICATION = 0x00010005 SUPPORTED_ARCHITECTURES = IA32|X64 BUILD_TARGETS = DEBUG|NOOPT|RELEASE !if "$(ARCH)" == "IA32 X64" or "$(ARCH)" == "X64 IA32" OUTPUT_DIRECTORY = Build/OvmfDummy !else OUTPUT_DIRECTORY = Build/Ovmf$(ARCH)Real !endif --- using the command line 'build -t GCC5 -a IA32 -a X64 -b DEBUG -p Test.dsc' inevitably results in an output like --- Build environment: Linux-4.9.0-3-amd64-x86_64-with-debian-9.7 Build start time: 18:21:33, Feb.04 2019 WORKSPACE = /work/git/edk2 EDK_TOOLS_PATH = /work/git/edk2/BaseTools CONF_PATH = /work/git/edk2/Conf PYTHON_COMMAND = /usr/bin/python3.5 build.py... /work/git/edk2/Test.dsc(11): error 3001: No space is allowed in OUTPUT_DIRECTORY Build/OvmfIA32 X64Real - Failed - --- Now, the Ia32X64 target is very much of a special case, which I don't necessarily see as usefully supported by the current .dsc specification. But I believe we need to do one of - banning (simultaneous) multi-architecture platforms - treating them the same as multi-target (-b) builds (build them separately) - have a defined way of handling them So, am I missing something, or does this require a change in BaseTools? Best Regards, Leif _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel