My attempts building anything of the TianoCore EDK2 codebase on FreeBSD/amd64 have been extremely frustrating so far. I guess trying to build on an unsupported operating system and on an unsupported architecture may have been too much of a hurdle for the beginning. So I figured I’d try building the EDK Unix Simulator (Trunk Revision 4679) on Fredora Core 8. Here’s what I’ve done.
I pretty much followed this tutorial. It’s for Gentoo, so a little tweaking was needed.
First, I downloaded and installed the JDK 6 from SUN via the RPMs they provide. The JDK ends up in /usr/java/jdk1.6.0_04, so the JAVA_HOME environment variable needs to be set to that.
Second, I didn’t bother installing the needed (Java) tools through the Fedora Package Manager but instead downloaded the files manually and placed them under /opt. This is similar to what I did for my FreeBSD attempts. I needed two symlinks like the tutorial says:
$ cd /opt/apache-ant-1.7.0/lib $ sudo ln -s /opt/ant-contrib/ant-contrib-1.0b3.jar ant-contrib.jar $ sudo ln -sf /opt/saxonb8.1.1/saxon8.jar /opt/xmlbeans-2.1.0/lib/saxon8.jar
Third, I needed to install the e2fsprogs-devel package. The e2fsprogs package (without the “-devel” suffix) isn’t enough. Also, I had to install the X development packages. I don’t know what exact package was needed, but the Fedora Core 8 package manager has this option that lets you install some pre-selected packages related to X development.
Forth, I had to apply the following patch (the tutorial mentions this):
Index: EdkModulePkg/Bus/Pci/PciBus/Dxe/PciHotPlugSupport.c =================================================================== --- EdkModulePkg/Bus/Pci/PciBus/Dxe/PciHotPlugSupport.c (Revision 4679) +++ EdkModulePkg/Bus/Pci/PciBus/Dxe/PciHotPlugSupport.c (Arbeitskopie) @@ -21,7 +21,7 @@ --*/ -#include "Pcibus.h" +#include "pcibus.h" #include "PciHotPlugSupport.h" EFI_PCI_HOT_PLUG_INIT_PROTOCOL *gPciHotPlugInit;
Finally, contrary to what the tutorial says, I used the following script to set up the environment. Note that I didn’t include the TOOL_CHAIN line and that I didn’t build the PE/COFF capable GCC.
export JAVA_HOME=/usr/java/jdk1.6.0_04 export XMLBEANS_HOME=/opt/xmlbeans-2.1.0 export ANT_HOME=/opt/apache-ant-1.7.0 export WORKSPACE=/home/phs/edk2/edk2 export PATH="$PATH:$XMLBEANS_HOME/bin:$ANT_HOME/bin"
The build went smoothly after that and I was able to use the EDK Unix environment. Note that the thing should not be called “Unix” Package, since it heavily assumes that it runs on Linux in some areas.