armv8: Fix dependencies for building images
authorDaniel Schwyn <daniel.schwyn@inf.ethz.ch>
Mon, 3 Jun 2019 12:34:26 +0000 (14:34 +0200)
committerDaniel Schwyn <daniel.schwyn@inf.ethz.ch>
Fri, 27 Sep 2019 07:55:33 +0000 (09:55 +0200)
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>

doc/022-armv8/report.tex
hake/RuleDefs.hs
platforms/Hakefile

index 1d62276..004a485 100644 (file)
@@ -797,14 +797,14 @@ module /armv8/sbin/sdma auto
 When booting a \qemu image for 64-bit ARM, a number of options are
 available (see \texttt{make help-boot}).  Building a boot image for
 \qemu with ARMv8 will typically result in a file in the build directory
-called \texttt{platforms/qemu.img}.  This is a disk image which can be
+called \texttt{armv8_<core_type>_qemu_image}.  This is a disk image which can be
 read by Hagfish through EFI calls.
 
 Booting this with a boot target from \texttt{make} will run the
 following:
 \begin{lstlisting}
   srcdir/tools/qemu-wrapper.sh \\
-     --image platforms/qemu.img \\
+     --image armv8_<core_type>_qemu_image \\
      --arch armv8 \\
      --bios ../git/barrelfish/tools/hagfish/QEMU_EFI.fd
 \end{lstlisting}
@@ -821,16 +821,16 @@ This wrapper script is complex, but reasonably well documented (use
   -smp 1 \\
   -bios ../git/barrelfish/tools/hagfish/QEMU_EFI.fd \\
   -device virtio-blk-device,drive=image \\
-  -drive if=none,id=image,file=platforms/qemu.img,format=raw \\
+  -drive if=none,id=image,file=armv8_<core_type>_qemu_image,format=raw \\
   -nographic
 \end{lstlisting}
 
 
 Note that for this script to work, you need to have \texttt{mtools}
 (the MS-DOS file system manipulation tools) installed, since they are
-used to prepare the \texttt{platforms/qemu.img} file.
+used to prepare the \texttt{armv8_<core_type>_qemu_image} file.
 
-More specifically, the \texttt{platforms/qemu.img} file is generated
+More specifically, the \texttt{armv8_<core_type>_qemu_image} file is generated
 by \texttt{tools/harness/efiimage.py}.  This creates an EFI file
 system image out of the plain Barrelfish binaries built in
 \texttt{\textit{builddir}/armv8/sbin}, plus the Hagfish EFI image we
index 55758b0..e074534 100644 (file)
@@ -1632,24 +1632,27 @@ armv8Image ::[Char] -> [Char] -> [Char] -> [Char] -> [[Char]] -> [[Char]] -> HRu
 armv8Image target menu bootTarget cpuTarget modules_generic modules =
     let bootDriver = "/sbin/boot_" ++ bootTarget
         cpuDriver  = "/sbin/cpu_"  ++ cpuTarget
-        blob       = "/" ++ target ++ "blob"
-        blob_o     = "/" ++ target ++ "blob.o"
+        blob       = "/" ++ target ++ "_blob"
+        blob_o     = "/" ++ target ++ "_blob.o"
         image_o    = "/" ++ target ++ "_image.o"
         image      = "/" ++ target ++ "_image.efi"
     in Rules [
         Rule ([ In BuildTree "tools" "/bin/armv8_bootimage",
             In BuildTree "root" ("/platforms/arm/menu.lst." ++ menu),
             Out "root" blob,
-            NoDep BuildTree "root" "/" ] ++
+            NoDep BuildTree "root" "/",
+            Dep BuildTree "armv8" bootDriver,
+            Dep BuildTree "armv8" cpuDriver
+            ] ++
             [ (Dep BuildTree "armv8" m) | m <- modules ] ++
             [ (Dep BuildTree "" m) | m <- modules_generic ] ),
         Rule ([ Str Config.aarch64_objcopy,
             Str "-I binary",
             Str "-O elf64-littleaarch64",
             Str "-B aarch64",
-            Str ("--redefine-sym _binary_" ++ target ++ "blob_start=barrelfish_blob_start"),
-            Str ("--redefine-sym _binary_" ++ target ++ "blob_end=barrelfish_blob_end"),
-            Str ("--redefine-sym _binary_" ++ target ++ "blob_size=barrelfish_blob_size"),
+            Str ("--redefine-sym _binary_" ++ target ++ "_blob_start=barrelfish_blob_start"),
+            Str ("--redefine-sym _binary_" ++ target ++ "_blob_end=barrelfish_blob_end"),
+            Str ("--redefine-sym _binary_" ++ target ++ "_blob_size=barrelfish_blob_size"),
             In BuildTree "root" blob,
             Out "root" blob_o ]),
         Rule ([ Str "aarch64-linux-gnu-ld",
@@ -1683,10 +1686,11 @@ armv8EFIImage target menu bootTarget cpuTarget modules_generic modules =
         In SrcTree "tools" "/tools/harness/efiimage.py",
         In BuildTree "root" ("/platforms/arm/menu.lst." ++ menu),
         Str Config.install_dir,
-        Out "root" target_image
+        Out "root" target_image,
+        Dep SrcTree "tools" "/tools/hagfish/Hagfish.efi",
+        Dep BuildTree "armv8" bootDriver,
+        Dep BuildTree "armv8" cpuDriver
         ]
-        ++ [(Dep BuildTree "armv8" bootDriver)]
-        ++ [(Dep BuildTree "armv8" cpuDriver)]
         ++ [(Dep BuildTree "armv8" f) | f <- modules ]
         ++ [(Dep BuildTree "" f) | f <- modules_generic ]
         ]
index dba5d6d..e756509 100644 (file)
@@ -474,6 +474,16 @@ let bin_rcce_lu = [ "/sbin/" ++ f | f <- [
        [ ("",       f) | f <- modules_generic])
     "ARM Virtual Machine Board with ARM Cortex A57 processors in QEMU",
 
+    platform "QEMU_U-Boot" [ "armv8" ]
+    ([ ("armv8", "/sbin/cpu_a57_qemu"), ("armv8", "/sbin/boot_armv8_generic")  ]
+     ++
+     [ ("armv8", f) | f <- armv8_modules ]
+     ++
+     [ ("",       f) | f <- modules_generic]
+     ++
+     [ ("root", "/armv8_a57_qemu_image.efi") ])
+  "ARM Virtual Machine Board with ARM Cortex A57 processors in QEMU",
+
     platform "APM88xxxx" [ "armv8" ]
     ([ ("armv8", "/sbin/cpu_apm88xxxx"), ("armv8", "/sbin/boot_armv8_generic")]
        ++
@@ -492,16 +502,6 @@ let bin_rcce_lu = [ "/sbin/" ++ f | f <- [
     )
     "Cavium ThunderX-1 (CN88xx) boards",
 
-    platform "QEMU_UBoot" [ "armv8" ]
-      ([ ("armv8", "/sbin/cpu_a57_qemu"), ("armv8", "/sbin/boot_armv8_generic")  ]
-       ++
-       [ ("armv8", f) | f <- armv8_modules ]
-       ++
-       [ ("",       f) | f <- modules_generic]
-       ++
-       [ ("root", "/armv8_a57_qemu_image.efi") ])
-    "ARM Virtual Machine Board with ARM Cortex A57 processors in QEMU",
-
     platform "RaspberryPi3" [ "armv8" ]
       ([ ("armv8", "/sbin/cpu_a53_rpi3"), ("armv8", "/sbin/boot_armv8_generic")  ]
        ++
@@ -601,6 +601,8 @@ let bin_rcce_lu = [ "/sbin/" ++ f | f <- [
 
     armv8EFIImage "armv8_a57_fvp_base" "armv8_a57_fvp_base" "armv8_generic" "a57_fvp" modules_generic armv8_modules,
 
+    armv8EFIImage "armv8_a57_qemu" "armv8_a57_qemu" "armv8_generic" "a57_qemu" modules_generic armv8_modules,
+
     --
     -- Booting: various targets for booting Barrelfish under different circumstances
     --
@@ -711,35 +713,25 @@ let bin_rcce_lu = [ "/sbin/" ++ f | f <- [
       Str "--arch", Str "zynq7" ]
     "Boot QEMU in 32-bit ARM mode emulating a Zynq 7000",
 
-    Rule $ [
-      In SrcTree "tools" "/tools/harness/efiimage.py",
-      In BuildTree "root" "/platforms/arm/menu.lst.armv8_a57_qemu",
-      Str Config.install_dir,
-      Out "root" "qemu.img"
-    ] ++ [(Dep BuildTree "armv8" f) | f <- armv8_modules ]
-    ++ [(Dep BuildTree "armv8" "/sbin/cpu_a57_qemu")]
-    ++ [(Dep BuildTree "armv8" "/sbin/boot_armv8_generic")]
-    ++ [(Dep BuildTree "" f) | f <- modules_generic ],
-
-    boot "qemu_a57v" [ "armv8" ] ([
+    boot "qemu_a57" [ "armv8" ] ([
       In SrcTree "tools" "/tools/qemu-wrapper.sh",
-      Str "--image", In BuildTree "root" "qemu.img",
+      Str "--image", In BuildTree "root" "/armv8_a57_qemu_image",
       Str "--arch", Str "armv8",
       Str "--bios", In SrcTree "tools" "/tools/hagfish/QEMU_EFI.fd"
        ]
       )
     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine using UEFI",
 
-    boot "qemu_a57v_debug" [ "armv8" ] ([
+    boot "qemu_a57_debug" [ "armv8" ] ([
       In SrcTree "tools" "/tools/qemu-wrapper.sh",
-      Str "--image", In BuildTree "root" "qemu.img",
+      Str "--image", In BuildTree "root" "/armv8_a57_qemu_image",
       Str "--arch", Str "armv8",
       Str "--bios", In SrcTree "tools" "/tools/hagfish/QEMU_EFI.fd",
       Str "--debug", In SrcTree "tools" "/tools/debug.armv8.gdb" ]
       )
     "Boot QEMU in 64-bit ARM mode emulating a ARM Virtual Machine using UEFI with debugging enabled",
 
-    boot "qemu_a57v_uboot" [ "armv8" ] ([
+    boot "qemu_a57_uboot" [ "armv8" ] ([
       In SrcTree "tools" "/tools/qemu-wrapper.sh",
       Str "--image", In BuildTree "root" "/armv8_a57_qemu_image.efi",
       Str "--arch", Str "armv8",