Support for building directories outside the repo
authorBarret Rhoden <brho@cs.berkeley.edu>
Sun, 26 Jan 2014 22:20:59 +0000 (14:20 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sun, 26 Jan 2014 22:53:01 +0000 (14:53 -0800)
If you have a directory, say a custom device, that you want compiled and
linked into the kernel, you can either set up an environment variable or
simply pass a variable to make:

$ export AKAROS_EXTERNAL_DIRS="../some-path/outside-repo/"
$ make

Run make from the usual place, in the Akaros repo.  Kbuild will build
that directory and link it into the final kernel binary.

You can have more than one directory.  They must be space separated.
You can do something like:

$ AKAROS_EXTERNAL_DIRS=$AKAROS_EXTERNAL_DIRS" ~/another-dir"

All directories must have a Kbuild file, and must produce at least one
.o file.  Whatever CONFIG variables are in the main kernel work here,
though I didn't build in Kconfig support.

Whatever functions you have in external directories won't get called
automatically.  Use linker function macros to get your initialization
routines run, and hopefully that's enough.  It should be for most plan9
style devices.

Makefile

index 5f5322e..d182d39 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -389,7 +389,7 @@ $(srctree)/Makelocal: ;
 # We have all-arch-dirs and all-dirs, so that we can still clean even without
 # an arch symlink.
 
-core-y += kern/src/ kern/drivers/
+core-y += kern/src/ kern/drivers/ $(AKAROS_EXTERNAL_DIRS)
 arch-y += kern/arch/$(ARCH)/
 
 akaros-dirs     := $(patsubst %/,%,$(filter %/, $(core-y) $(arch-y)))