]> code.delx.au - refind/blobdiff - BUILDING.txt
added refind.inf file; renamed filesystems/Make.common to
[refind] / BUILDING.txt
index 7d5fbd2dab54a5b4806b0e1ba4ab50eff8843197..81404819ae721f8aba3a41b130887bbc2f63eead 100644 (file)
@@ -164,8 +164,15 @@ Compiling the EFI Filesystem Drivers
 The EFI filesystem drivers in the filesystems subdirectory require the
 TianoCore UDK2010.SR1 toolkit. The drivers might compile with another
 version of the TianoCore toolkit, but I've not tested them with anything
-else. (My attempts to use GNU-EFI have failed; at best, I've gotten drivers
-that load but hang the computer.)
+else. My attempts to use GNU-EFI have failed; at best, I've gotten drivers
+that load but then hang the computer.
+
+An important caveat: I suspect the TianoCore toolkit is responsible for an
+inability to use the resulting drivers on a 32-bit Mac Mini. My suspicion
+is that it produces binaries that work on UEFI 2.x systems but not on the
+EFI 1.x that the Mac uses. If this suspicion is correct, you may be unable
+to use the rEFInd binaries on at least some Macs, as well as on other older
+EFI 1.x-based computers.
 
 Unfortunately, the TianoCore toolkit is bulky and weird by Linux
 programming standards. I don't know of any Linux distribution packages for
@@ -209,13 +216,22 @@ unclear about others. Here's how I installed the toolkit:
    - TARGET = RELEASE (DEBUG might work, but I've not tested it).
    - TARGET_ARCH = X64 (on x86-64; leave this as IA32 on x86)
    - TOOL_CHAIN_TAG = GCC45 (or other value depending on your GCC version;
-     type "gcc -v" to learn your GCC version number)
+     type "gcc -v" to learn your GCC version number). Note that GCC 4.7
+     doesn't have its own entry, so use GCC46 for GCC 4.7.
    The Makefile for the drivers reads some of these variables from this
    file and uses them when accessing directories, so be sure to type these
-   entries in the case specified. Note that the documentation refers to
-   editing Conf/tools_def.txt in addition to Conf/target.txt, but doesn't
-   specify what to change in Conf/tools_def.txt. I haven't found it
-   necessary to make any changes in Conf/tools_def.txt.
+   entries in the case specified.
+
+10) The documentation refers to editing Conf/tools_def.txt in addition to
+    Conf/target.txt, but doesn't specify what to change in
+    Conf/tools_def.txt. I haven't found it necessary to make any changes in
+    Conf/tools_def.txt EXCEPT when using GCC 4.7 on a Fedora 17 system.
+    (I haven't used GCC 4.7 on other platforms, so this may well be
+    necessary on other systems, too.) With that setup, I found it
+    necessary to change the following line:
+    *_GCC46_X64_ASM_FLAGS            = DEF(GCC46_ASM_FLAGS) -m64 -melf_x86_64
+    to:
+    *_GCC46_X64_ASM_FLAGS            = DEF(GCC46_ASM_FLAGS) -m64
 
 11) Type "make -C /usr/local/UDK2010/MyWorkSpace/BaseTools/Source/C".
     (This step is not documented on the EDK Web page.)
@@ -226,7 +242,7 @@ unclear about others. Here's how I installed the toolkit:
 Once the toolkit is installed, you can build the filesystem drivers. If you
 installed in a location other than the one I've specified, you must edit
 the EDK2BASE variable in the filesystems/Make.common file in the rEFInd
-source package.. You can then type "make" in the "filesystems" directory,
+source package. You can then type "make" in the "filesystems" directory,
 or "make fs" in the main source directory, to build all the drivers. If you
 want to build just one driver, you can change into the "filesystems"
 directory and type "make {fsname}", where {fsname} is a filesystem name --
@@ -244,6 +260,6 @@ at boot time.
 
 The drivers all rely on filesystem wrapper code created by rEFIt's author,
 Christoph Phisterer. Most of the drivers seem to have passed through
-Oracle's VirtualBox project ((https://www.virtualbox.org) and the Clover
+Oracle's VirtualBox project (https://www.virtualbox.org) and the Clover
 boot loader project (https://sourceforge.net/projects/cloverefiboot/),
 which I used as the source for this build.