Enforce AKAROS_ROOT and AKAROS_XCC_ROOT
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 13 Jan 2017 23:20:18 +0000 (18:20 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 18 Jan 2017 15:00:03 +0000 (10:00 -0500)
For a while we were trying to figure out what the developer picked for
these.  Now we enforce that they are set, at least for the apps and
libraries that live under tools.

We also weren't telling anyone to install those apps/libs before make
tests.  Now that vmrunkernel uses elf headers, we need gelf.h (elfutils)
installed.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
GETTING_STARTED.md
tools/Makefrag

index 760cbbe..41ad619 100644 (file)
@@ -49,6 +49,11 @@ usually idling in there (alone), and if I'm at my computer, I'll respond.
 ----------------------------
 I'll describe how to get x86 working.  RISCV is similar.
 
+To start off, make sure AKAROS_ROOT and AKAROS_XCC_ROOT are set in your
+environment.  AKAROS_ROOT is the Akaros repo directory.  AKAROS_XCC_ROOT is a
+directory of your choosing where the toolchain will be installed (more on that
+in Section 3.1 below).
+
 The first step is to configure the kernel.  Targets like `config`,
 `menuconfig`, and some of the other KBuild targets work.  Defconfig gives you a
 default configuration.  For example, to config for 64-bit x86:
@@ -92,6 +97,12 @@ template to work from.
 You need to set your `INSTDIRS` to some place where you want the cross compiler
 installed.  I have a directory named `akaros-gcc-glibc` for this.
 
+Additionally, you must set the environment variable `$AKAROS_XCC_ROOT` to point
+to the installation directory for your architecture.  For instance, my
+AKAROS_XCC_ROOT is:
+
+`/home/brho/classes/akaros/akaros-gcc-glibc/install-x86_64-ucb-akaros-gcc/`
+
 You also need to add `bin` directories to your `PATH` where the cross compiler
 will be installed.  This will vary based on your value for `INSTDIRS`.  For
 instance, my path contains:
@@ -136,7 +147,11 @@ architecture until a new `ARCH` is selected (i.e. via `make ARCH=xxx defconfig`
 etc.)
 
 ### 3.3 Userspace
-To build userspace and test programs:
+First, you'll need to build a few common applications and libraries:
+
+`$ make apps-install`
+
+Then you can build the tests and small utility programs:
 
 `$ make tests`
 
index a977576..5b430ea 100644 (file)
@@ -1,27 +1,32 @@
 # Helper for writing application Makefiles
 #
-# Those apps should include this directly and be located three directories down
-# from the AKAROS_ROOT.
+# Those apps should include this directly.
 #
 # Other than providing defaults for things like AKAROS_ROOT, the main thing
 # this does is set the cross compiler.  You can override some things with a
 # Makelocal.
 #
-# Exports CROSS_COMPILE, ARCH, KBUILD_VERBOSE, Q, MAKEFLAGS, BUILDDIR,
-# AKAROS_ROOT, AKAROS_XCC_ROOT, AKAROS_PREFIX, AKAROS_SYSROOT, MAKE_JOBS,
-# FIRST_KFS_PATH, KFS_ROOT
+# The calling environment must have AKAROS_ROOT and AKAROS_XCC_ROOT set.
+#
+# Exports CROSS_COMPILE, ARCH, KBUILD_VERBOSE, Q, MAKEFLAGS, AKAROS_ROOT,
+# AKAROS_XCC_ROOT, AKAROS_PREFIX, AKAROS_SYSROOT, MAKE_JOBS, FIRST_KFS_PATH,
+# KFS_ROOT
 
 # Do not print "Entering directory ...";
 MAKEFLAGS += --no-print-directory
 
 # Overrides
 -include Makelocal
-BUILDDIR ?= $(shell pwd)
-AKAROS_ROOT ?= $(BUILDDIR)/../../..
-MAKE_JOBS ?= 4
+
+ifndef AKAROS_ROOT
+    $(error AKAROS_ROOT is empty!  You must set it!)
+endif
+ifndef AKAROS_XCC_ROOT
+    $(error AKAROS_XCC_ROOT is empty!  You must set it!)
+endif
+
 FIRST_KFS_PATH ?= $(AKAROS_ROOT)/kern/kfs
 KFS_ROOT = $(FIRST_KFS_PATH)
-AKAROS_XCC_ROOT ?= $(shell grep X86_64_INSTDIR $(AKAROS_ROOT)/tools/compilers/gcc-glibc/Makelocal | cut -f 3 -d' ')
 
 # To put more focus on warnings, be less verbose as default
 # Use 'make V=1' to see the full commands