Skip to content
  • Charlie Jacobsen's avatar
    Major overhaul of build process. · 8198c2fb
    Charlie Jacobsen authored and Vikram Narayanan's avatar Vikram Narayanan committed
    Full kernel build no longer required. Yay! This should
    cut down on dev time a lot.
    
    I moved all of the LCD source into $(kernel-src)/lcd-domains/,
    so it's all in one spot. There is now a top-level makefile in
    there that triggers building liblcd, the microkernel, and the
    examples. This is built as an *external* build now, even
    though the directory is in the kernel source. The build now takes
    under a minute to do everything LCD related.
    
    This should also make verification easier in the future (e.g.
    building with clang) if we aren't ensnared in the kernel
    source.
    
    Of course, to use the microkernel and examples, you have to
    build the patched kernel and install it. But now when you
    make a few lines of changes in e.g. an example, you don't have
    to trigger a top-level kernel build to rebuild it. Running
    the full kernel build takes on average about 3 - 4 minutes
    (some files are generated everytime, linking is done, and so
    on), and can take upwards of 30 minutes for a full build if you
    re-config'd.
    
    Which brings me to my other change: no more config for LCDs
    in menuconfig. If we create menu entries for every example
    and so on, we end up changing the config too often, and this
    triggers full kernel rebuilds == waste of time. We can use
    macros by setting them via compiler flags (e.g., -DSOME_FLAG).
    Furthermore, it wasn't making sense to me to do conditional
    compilation for LCD support (we always want to compile for that).
    Yes, changes aren't clearly delineated with macros, but you can
    see changes made by just doing 'git diff v3.10.14 some-file-or-dir'.
    
    The wiki has been fully updated with instructions for building,
    and other relevant parts (updated paths to files).
    
    I also took the opportunity to clean up some old stuff lying around
    that is dead (like lcdguest). I incorporated all of the documentation
    in Documentation/lcd-domains into the wiki so it's all in one
    spot now (including some helpful debug tips).
    8198c2fb