20 Feb, 2014

40 commits

  • Signed-off-by: Tom Rini

    Tom Rini
     
  • In Kbuild, every makefile must have non-empty obj- or obj-y.
    Otherwise, built-in.o will not be created and the link stage
    will fail.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • There is a strange comment in fit_image_load().
    This function can be used for loading Kernel Image, FDT
    as well as ramdisk.

    Signed-off-by: Masahiro Yamada
    Cc: Simon Glass
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • If the whole code is surrounded by #ifdef(CONFIG_ ) .. #endif,
    it should be moved to Makefile.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • - When CONFIG_DISPLAY_CPUINFO is not enabled,
    print_cpuinfo() should be defined as an empty function
    in a header, include/common.h

    - Remove #ifdef CONFIG_DISPLAY_CPUINFO .. #endif
    from caller, common/board_f.c and arch/arm/lib/board.c

    - Remove redundant prototypes in arch/arm/lib/board.c,
    arch/arm/include/asm/arch-am33x/sys_proto.h and
    board/nokia/rx51/rx51.h, keeping the one in include/common.h

    - Add #ifdef CONFIG_DISPLAY_CPUINFO to the func definition
    where it is missing

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • CONFIG_SYS_GBL_DATA_SIZE is not used any more.
    The size of struct "global_data" is automatically calculated
    by asm-offsets. (See lib/asm-offsets.c)

    GENERATED_GBL_DATA_SIZE should be used instead of
    CONFIG_SYS_GBL_DATA_SIZE.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • It is convenient to have all device trees on the same SoC compiled.
    It allows for later easy repackaging without the need to re-run
    the make file.

    - Build device trees with the same SoC under arch/$(ARCH)/dts

    - Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or
    DEVICE_TREE=... to dts/dt.dtb

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Unlike Linux Kernel, U-Boot historically had *.dts files under
    board/$(VENDOR)/dts/ and *.dtsi files under arch/$(ARCH)/dts/.

    I think arch/$(ARCH)/dts dicretory is a better location
    to store both *.dts and *.dtsi files.

    For example, before this commit, board/xilinx/dts directory
    had both Microblaze dts (microblaze-generic.dts) and
    ARM dts (zynq-*.dts), which are totally unrelated.

    This commit moves *.dts to arch/$(ARCH)/dts/ directories,
    allowing us to describe nicely mutiple DTBs generation in the next commit.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Useful rules in scripts/Makefile.lib allows us to easily
    generate a device tree blob and wrap it in assembly code.

    We do not need to parse a linker script to get output format and arch.

    This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • - Delete fs.xml from DOCBOOKS to fix an error.
    Commit e3ff797c added fs.xml to DOCBOOKS
    but missed to add doc/DocBook/fs.tmpl.
    - Fix the location of include guard in include/linker_lists.h.

    Signed-off-by: Masahiro Yamada
    Reported-by: Abraham Varricatt
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • tools/kernel-doc/docproc.c and tools/kernel-doc/kernel-doc are
    files imported from Linux Kernel.

    They originally resided under scripts/ directory in Linux Kernel.

    This commit moves them to the original location.

    Signed-off-by: Masahiro Yamada
    Acked-by: Simon Glass

    Masahiro Yamada
     
  • Commit bb02c536 stopped creaing a symbolic link include/asm.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • fw_printenv is a program which mostly runs on the target Linux.

    Before switching to Kbuild, we needed to set HOSTCC at the
    command line like this:
    make HOSTCC= env

    Going forward we can cross compile it by specifying CROSS_COMPILE:
    make CROSS_COMPILE= env
    This looks more natural.

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

    Masahiro Yamada
     
  • Without this workaround, you will see a lot of ".*.su" files
    at the top directory after building with a compiler
    which supports "-fstack-usage" option.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • We had switched to Kbuild, so we do not need to
    delete sandburst board files at every build.

    U-Boot conventional build system did not check the
    update of command line option, -DBUILDUSER.

    Kbuild can handle it nicely and re-builds object files
    when command line options are changed.
    (The file ".*.cmd" stores the information how the file
    was generated at the previous build.)

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • For out-of-tree build
    - Check if the source tree is clean
    - Create a Makefile in the output directory

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit fixes two problems:

    [1] We could not do board configuration and "make all"
    in one command line.

    For example, the following did not work as we expect:
    $ make sandbox_config all
    Configuring for sandbox board...
    make: Nothing to be done for `all'.

    [2] mixed-target build did not work with -j option

    For example, the following did not work:
    $ make -j8 sandbox_config u-boot
    Makefile:481: *** "System not configured - see README". Stop.
    make: *** [u-boot] Error 2
    make: *** Waiting for unfinished jobs....
    Configuring for sandbox board...

    Going forward, we can do
    $ make -j8 sandbox_config all

    This is the same as
    $ make sandbox_config
    $ make -j8

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit refactors cleaning targets such as
    clean, clobber, mrpropper, distclean
    with scripts/Makefile.clean.

    By using scripts/Makefile.clean, we can recursively descend
    into subdirectories and delete generated files there.

    We do not need add a big list of generated files
    to the "clean" target.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • - Move "easylogo", "gdb" tagets to tools/Makefile
    - Delete "gdbtools" target (same as "gdb")

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • $(MTD_VERSION) is used in tools/env/Makefile

    If you specify a variable at a command line like:
    $ make MTD_VERSION=old env
    or specify it thru an envrionment variable like:
    $ export MTD_VERSION=old
    $ make env
    it is inherited to the sub-make too.
    We do not need to pass it from the top Makefile explicitely.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit refactors rules of directory descending
    and defines u-boot-dirs and u-boot-all-dirs.
    (We will need u-boot-all-dirs when using
    scripts/Makefile.clean)

    Additionally, rename LIBS-y to libs-y.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit changes the top Makefile to handle various targets
    nicely.
    Make targets are divided into four categories:

    - mixed-targets
    We can call a configuration target and build targets
    at one command line like follows:
    $ make _config u-boot

    They are handled one by one.

    - config targets
    _config

    - no-dot-config-targets
    Targets we can run without board configuration such as
    clean, mrproper, distclean, TAGS, %docs, etc.

    - build targets
    The other target which need board configuration.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, "make tidy" did
    "make clean" + delete "*.depend*" files.

    But, we do not have "*.depend*" files any more,
    which means "make tidy" is the same as "make clean".

    This commit removes the redandant target "tidy".

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, {spl,tpl}-autoconf.mk was always generated
    at the top Makefile even if SPL(TPL) build was not selected.

    This commit moves the build rule of {spl,tpl}-autoconf.mk
    from the top Makefile to spl/Makefile.
    It prevents unnecessary {spl,tpl}-autoconf.mk from being
    generated.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit changes the location of include directives
    of board configuration files.

    The purpose of this change is:
    - Slim down $(TOPDIR)/config.mk
    - Prevent $(TOPDIR)/Makefile from including the same
    configuration file twice
    - Do not include include/config.mk multiple times
    because ARCH, CPU, BOARD, VENDOR, SOC are exported

    Before this commit:

    - include/autoconf.mk was included from $(TOPDIR)/Makefile
    and $(TOPDIR)/config.mk
    (This means $(TOPDIR)/Makefile included include/autoconf.mk twice)

    - include/{spl,tpl}-autoconf.mk was included from $(TOPDIR)/config.mk

    - include/config.mk was included from $(TOPDIR)/Makefile
    and $(TOPDIR)/config.mk
    (This means $(TOPDIR)/Makefile included include/config.mk twice)

    After this commit:

    - include/autoconf.mk is included from $(TOPDIR)/Makefile
    and $(TOPDIR)/scripts/Makefile.build

    - include/{spl,tpl}-autoconf.mk is included from $(TOPDIR)/spl/Makefile
    and $(TOPDIR)/scripts/Makefile.build

    - include/config.mk is included from $(TOPDIR)/config.mk and
    $(TOPDIR)/spl/Makefile

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • We can get Kbuild-ish log style like this:
    GEN include/autoconf.mk
    GEN include/autoconf.mk.dep

    We do not need XECHO any more.

    And also change checkstack target like Linux Kernel.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • We had switched to Kbuild.
    We do not need old build scripts any more.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Now we are ready to switch over to real Kbuild.

    This commit disables temporary scripts:
    scripts/{Makefile.build.tmp, Makefile.host.tmp}
    and enables real Kbuild scripts:
    scripts/{Makefile.build,Makefile.host,Makefile.lib}.

    This switch is triggered by the line in scripts/Kbuild.include
    -build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
    +build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

    We need to adjust some build scripts for U-Boot.
    But smaller amount of modification is preferable.

    Additionally, we need to fix compiler flags which are
    locally added or removed.

    In Kbuild, it is not allowed to change CFLAGS locally.
    Instead, ccflags-y, asflags-y, cppflags-y,
    CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
    are prepared for that purpose.

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

    Masahiro Yamada
     
  • This commit imports build scripts from Linux Kernel v3.13
    as they are.

    I know they include some trailing spaces
    but I am intentionally keeping them untouched.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • 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