20 Feb, 2014

19 commits

  • Some build scripts including scripts/Makefile.build
    will be imported from Linux Kernel in the next commit.
    We need to adjust them for U-Boot in the following commits.

    To make it easier for reviewers to track the modification,
    this commit renames scripts/Makefile.build to
    scripts/Makefile.build.tmp beforehand.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • We are going to switch over to Kbuild in upcoming commits.

    Each makefile must have non-empty obj- or obj-y
    to generate built-in.o on Kbuild.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit changes the working directory
    where the build process occurs.

    Before this commit, build process occurred under the source
    tree for both in-tree and out-of-tree build.

    That's why we needed to add $(obj) prefix to all generated
    files in makefiles like follows:
    $(obj)u-boot.bin: $(obj)u-boot

    Here, $(obj) is empty for in-tree build, whereas it points
    to the output directory for out-of-tree build.

    And our old build system changes the current working directory
    with "make -C " syntax when descending into the
    sub-directories.

    On the other hand, Kbuild uses a different idea
    to handle out-of-tree build and directory descending.

    The build process of Kbuild always occurs under the output tree.
    When "O=dir/to/store/output/files" is given, the build system
    changes the current working directory to that directory and
    restarts the make.

    Kbuild uses "make -f $(srctree)/scripts/Makefile.build obj="
    syntax for descending into sub-directories.
    (We can write it like "make $(obj)=" with a shorthand.)
    This means the current working directory is always the top
    of the output directory.

    Signed-off-by: Masahiro Yamada
    Tested-by: Gerhard Sittig

    Masahiro Yamada
     
  • This commit moves some flags which are used
    under examples/ directory only.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Some flags are used for SPL (and TPL) build only.
    This commit moves them from config.mk to spl/Makefile.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit merges commonly-used header include paths
    to UBOOTINCLUDE and NOSTDINC_FLAGS variables, which are placed
    at the top Makefile.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, most of compiler flags were defined in config.mk.
    But it is redundant because config.mk is included from all recursive make.

    This commit moves many complier flags to the top Makefile
    and export them.
    And we use new vaiarables to store them:
    KBUILD_CPPFLAGS, KBUILD_CFLAGS, KBUILD_AFLAGS.
    This will allow us to switch more smoothly to Kbuild.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit adjusts some files to use Kbuild.include.

    - Use cc-option defined in Kbuild.include
    (Delete cc-option in config.mk)
    - Use cc-version defined in
    (Delete cc-version in config.mk)
    - Move binutils-version and dtc-version to Kbuild.include
    by analogy to cc-version

    This commit also adds srctree (same as SRCTREE)
    to use Kbuild scripts.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • BFD_ROOT_DIR is used only in tools/gdb/Makefile

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit moves some variable definitions from config.mk
    to the top Makefile:

    - HOSTCC, HOSTCFLAGS, HOSTLDFLAGS
    - AS, LD, CC, CPP, etc.
    - SHELL (renamed to CONFIG_SHELL)

    I'd like to slim down config.mk file
    because it is included from all recursive make.
    It is redundant to re-define the variables
    every time descending into sub directories.
    We should rather define them at the top Makefile
    and export them.

    U-Boot makefiles has been used "SHELL" variable to store shell
    chosen for the user, whereas Linux Kernel uses "CONFIG_SHELL".

    We should never use "SHELL" variable because it is
    a special variable for GNU Make.
    Changing SHELL may cause unpredictable side effects
    whose root cause is usually difficult to find.
    We should use a generic variable name "CONFIG_SHELL".

    We should not use the syntax as follows either:

    rm -f $(obj)tools/env/{fw_printenv,fw_setenv}

    This depends on "bash" although GNU Make generally
    invokes "sh" to run the each rule.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit moves suffix rules from config.mk
    to scripts/Makefile.build, which will allow us
    to switch smoothly to real Kbuild.

    Note1:
    post/lib_powerpc/fpu/Makefile has
    its own rule to compile C sources.
    We need to tweak it to keep the same behavior.

    Note2:
    There are two file2 with the same name:
    arch/arm/lib/crt0.S and eamples/api/crt0.S.
    To keep the same build behavior,
    examples/api/Makefile also has to be treaked.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Some Samsung boards have their own tools under board/samsung//tools/.
    This commit refactor more makefiles with "hostprogs-y".

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, makefiles under tools/ directory
    were implemented with their own way.

    This commit refactors them by using "hostprogs-y" variable.

    Several C sources have been added to wrap other C sources
    to simplify Makefile.
    For example, tools/crc32.c includes lib/crc32.c

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit adds scripts/Makefile.host.tmp which will
    be used in the next commit to convert makefiles
    under tools/ directory to Kbuild style.

    Notice this script, scripts/Makefile.host.tmp
    is temporary.

    When switching over to real Kbuild,
    it will be replaced with scripts/Makefile.host of Linux Kernel.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Ignore generated files by Kbuild such as .*.cmd, *.order, etc.

    Besides above,
    - Ignore *.s files
    We do not need to ignore with file name, asm-offsets.s
    - Do not ignore *.rej (for quilt)
    - Ignore backup files, \#*#

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

19 Feb, 2014

21 commits