On Thu, Oct 17, 2013 at 05:34:46PM +0900, Masahiro Yamada wrote: > Kbuild in U-Boot has been talked for a while > and RFC patches were posted by Simon Glass. > > (Refer to "RFC: Add Kbuild system to U-Boot" > posted by Simon, May 12, 2013) > > Simon's effort is a good start point but > varous critical features were missing from his patch series. > > I have also been eager to introduce Kbuild to U-Boot. > So I have been working on this task for a while > with a little different migration path from Simon's way. > At last I succeeded to build a few boards > with support of SPL build, Out-of-tree build, > correct output file names, which were missing from > Simon's patches. > > While I were working on my local branch, > the build system and makefiles in U-Boot master repository > always kept changing, of course. > > Now my fruit got too old to fit with the current u-boot/master anymore. > But if someone is interested in my work, > I can push my local branch to somewhere in my GitHub space. > (RFC quality, but might be helpful for just discussions) > > I recognize those patches are so rough that > they could support only a few ARM boards. > Perfectly covering all architectures and all boards > without breaking any U-Boot features is a too big task > for a sigle indivisual. > > Even if I could do that, the patch series would > be extremely big size and the adjustment for U-Boot > would be complecated. > So the review would probably take very long time. > Along with the review process, as time goes by, > the posted patches would become not appled to the master branch. > > So we would need to repeat post, review, fix, rebase on the master > and post again, review, ... > again and again for a very big patch series. > > I began to be wondering whether it is really possible > to switch to Kbuild in this way. > > So I decided to begin with what I can do, one by one. > By stepping little by litte, we can get close to Kbuild > and finally we will arrive at our goal. > I think this strategy is more realistic rather than > adding a big change at one time. > > Before importing a real Kbuild, I'd like to adjust our makefiles > in the form suitable for Kbuild. > > First of all, this series converts makefiles in sub directories > to Kbuild style. > > What this series do is quite simple: > - Moving common lines in sub makefiles to a new file 'scripts/Makefile.build' > - Renaming COBJS-y and SOBJS-y to obj-y in each sub makefile. > - A little bit more tweaks > > That's all. > > 01/19 creates scripts/Makefile.build and tweaks Makefile and spl/Makefile > to use scripts/Makefile.build. > > U-Boot conventional makefiles are like this: > > include $(TOPDIR)/config.mk > > LIB = $(obj)libfoo.o > > COBJS := ... > COBJS += ... > SOBJS := ... > > SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) > OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) > > all: $(obj).depend $(LIB) > > $(LIB): $(OBJS) > $(call cmd_link_o_target, $(OBJS)) > > ######################################################################### > > include $(SRCTREE)/rules.mk > > sinclude $(obj).depend > > ######################################################################### > > > Top and bottom parts are common in almost all makefiles. > Writing those lines in all makefiles is a big waste. > So common lines have been pushed into scripts/Makefile.build. > In addition, scripts/Makefile.build includes a glue code for supporting > 'obj-y'. > Be aware U-Boot conventional (non-Kbuild) makefile sytle is still supported. > So we can change sub makefiles little by little in the following patches. > > 02/19-19/19 change sub makefiles into a Kbuild suitable form using obj-y. > In order to avoid creating a big patch file, they are divided > by CPU architectures and categories. > > 02/19-07/19: refactor under arch/arm/ > 08/19-16/19: refactor libraries which are commonly used for all > architectures > 17/19 : refactor under arch/sandbox > 18/19 : refactor under arch/powerpc/ > 19/19 : refactor under board/ti/ > > > Conversion rule is pretty easy: > > (1) Delete common parts at top and bottom. > (2) Rename > COBJS -> obj-y > SOBJS -> obj-y > COBJS-$(CONFIG_FOO) -> obj-$(CONFIG_FOO) > SOBJS-$(CONFIG_FOO) -> obj-$(CONFIG_FOO) > START -> extra-y > > We can convert almost automatically althogh in some cases > we may need to tweak a little. > > I refactored more than 150 makefiles in this series. > But we still have more than 600 makefiles. > (Most of them reside under board/ directory) > We can convert them lator little by little. > Your contribution is welcome! :-) > > Note1: > This series breaks _NO_ features in U-Boot > beucase it just moves common parts into scripts/Makefile.build > > In order to prove this series does no harm, > I compiled all boards excepts nds32 and nios2 architectures > and checked md5sum matching for ./u-boot (and spl/u-boot-spl if it exists). > > I tried md5sum for version 1 and I did the same thing again for version 2. > I confirmed md5sum perfectly matched. > > For the detailed steps how to compare md5sum, > please refer to the discussion in version 1: > [U-Boot] [PATCH 00/19] First step towards Kbuild: Use Kbuild style makefiles > > Note2: > obj-y := foo/ (descending into foo sub directory) > syntax is not supprted in this series. > It is implemented in upcoming patch series. > The reason why I postpone this feature is > I don't want to add a big change at one time. > Adjusting for Kbuild little by litte is my strategy here > for easy review. > > Note3: > Of course, scripts/Makefile.build added by 01/19 patch is temporary. > It shall be replaced with the one of Linux Kernel in future. > > Note4: > 01/19 is a prerequisite for 02/19 to 19/19. > But 02/19 thru 19/19 are order-independent. > If some of 02/19-19/19 becomes not applied to u-boot/master, > they can be omitted. > > Note5: > I confirmed this series can be applied on v2013.10 > > Cc: Simon Glass <s...@chromium.org> > Cc: Tom Rini <tr...@ti.com> > Cc: Gerhard Sittig <g...@denx.de> > > Masahiro Yamada (19): > Makefile: prepare for using Kbuild-style Makefile > armv7: convert makefiles to Kbuild style > arm926ejs: convert makefiles to Kbuild style > arm920t: convert makefiles to Kbuild style > arm720t: convert makefiles to Kbuild style > ARM: convert makefiles to Kbuild style > ARM: imx-common: convert makefiles to Kbuild style > drivers: net: convert makefiles to Kbuild style > drivers: mtd: convert makefiles to Kbuild style > drivers: usb: convert makefiles to Kbuild style > drivers: convert makefiles to Kbuild style > fs: convert makefiles to Kbuild style > common: convert makefiles to Kbuild style > net: convert a makefile to Kbuild style > lib: convert makefiles to Kbuild style > disk: convert a makefile to Kbuild style > sandbox: convert makefiles to Kbuild style > powerpc: convert makefiles to Kbuild style > board: ti: convert makefiles to Kbuild style > > Makefile | 44 +++- > arch/arm/cpu/arm1136/Makefile | 26 +- > arch/arm/cpu/arm1136/mx31/Makefile | 27 +- > arch/arm/cpu/arm1136/mx35/Makefile | 28 +-- > arch/arm/cpu/arm1176/Makefile | 26 +- > arch/arm/cpu/arm1176/bcm2835/Makefile | 25 +- > arch/arm/cpu/arm1176/tnetv107x/Makefile | 27 +- > arch/arm/cpu/arm720t/Makefile | 26 +- > arch/arm/cpu/arm720t/tegra-common/Makefile | 25 +- > arch/arm/cpu/arm720t/tegra114/Makefile | 25 +- > arch/arm/cpu/arm720t/tegra20/Makefile | 23 +- > arch/arm/cpu/arm720t/tegra30/Makefile | 23 +- > arch/arm/cpu/arm920t/Makefile | 28 +-- > arch/arm/cpu/arm920t/a320/Makefile | 25 +- > arch/arm/cpu/arm920t/at91/Makefile | 33 +-- > arch/arm/cpu/arm920t/ep93xx/Makefile | 24 +- > arch/arm/cpu/arm920t/imx/Makefile | 27 +- > arch/arm/cpu/arm920t/ks8695/Makefile | 26 +- > arch/arm/cpu/arm920t/s3c24x0/Makefile | 29 +-- > arch/arm/cpu/arm926ejs/Makefile | 28 +-- > arch/arm/cpu/arm926ejs/armada100/Makefile | 23 +- > arch/arm/cpu/arm926ejs/at91/Makefile | 59 ++--- > arch/arm/cpu/arm926ejs/davinci/Makefile | 48 +--- > arch/arm/cpu/arm926ejs/kirkwood/Makefile | 31 +-- > arch/arm/cpu/arm926ejs/lpc32xx/Makefile | 23 +- > arch/arm/cpu/arm926ejs/mb86r0x/Makefile | 25 +- > arch/arm/cpu/arm926ejs/mx25/Makefile | 23 +- > arch/arm/cpu/arm926ejs/mx27/Makefile | 23 +- > arch/arm/cpu/arm926ejs/mxs/Makefile | 26 +- > arch/arm/cpu/arm926ejs/nomadik/Makefile | 25 +- > arch/arm/cpu/arm926ejs/omap/Makefile | 26 +- > arch/arm/cpu/arm926ejs/orion5x/Makefile | 29 +-- > arch/arm/cpu/arm926ejs/pantheon/Makefile | 23 +- > arch/arm/cpu/arm926ejs/spear/Makefile | 36 +-- > arch/arm/cpu/arm926ejs/versatile/Makefile | 26 +- > arch/arm/cpu/arm946es/Makefile | 26 +- > arch/arm/cpu/arm_intcm/Makefile | 26 +- > arch/arm/cpu/armv7/Makefile | 36 +-- > arch/arm/cpu/armv7/am33xx/Makefile | 51 +--- > arch/arm/cpu/armv7/at91/Makefile | 31 +-- > arch/arm/cpu/armv7/exynos/Makefile | 34 +-- > arch/arm/cpu/armv7/highbank/Makefile | 24 +- > arch/arm/cpu/armv7/mx5/Makefile | 25 +- > arch/arm/cpu/armv7/mx6/Makefile | 25 +- > arch/arm/cpu/armv7/omap-common/Makefile | 43 +--- > arch/arm/cpu/armv7/omap3/Makefile | 41 +-- > arch/arm/cpu/armv7/omap4/Makefile | 31 +-- > arch/arm/cpu/armv7/omap5/Makefile | 33 +-- > arch/arm/cpu/armv7/rmobile/Makefile | 50 +--- > arch/arm/cpu/armv7/s5p-common/Makefile | 29 +-- > arch/arm/cpu/armv7/s5pc1xx/Makefile | 27 +- > arch/arm/cpu/armv7/socfpga/Makefile | 29 +-- > arch/arm/cpu/armv7/tegra-common/Makefile | 24 +- > arch/arm/cpu/armv7/tegra114/Makefile | 22 +- > arch/arm/cpu/armv7/tegra20/Makefile | 26 +- > arch/arm/cpu/armv7/tegra30/Makefile | 22 +- > arch/arm/cpu/armv7/u8500/Makefile | 25 +- > arch/arm/cpu/armv7/vf610/Makefile | 25 +- > arch/arm/cpu/armv7/zynq/Makefile | 31 +-- > arch/arm/cpu/ixp/Makefile | 30 +-- > arch/arm/cpu/pxa/Makefile | 36 +-- > arch/arm/cpu/sa1100/Makefile | 28 +-- > arch/arm/cpu/tegra-common/Makefile | 25 +- > arch/arm/cpu/tegra114-common/Makefile | 23 +- > arch/arm/cpu/tegra20-common/Makefile | 29 +-- > arch/arm/cpu/tegra30-common/Makefile | 26 +- > arch/arm/imx-common/Makefile | 35 +-- > arch/arm/lib/Makefile | 86 ++----- > arch/powerpc/cpu/74xx_7xx/Makefile | 28 +-- > arch/powerpc/cpu/mpc512x/Makefile | 51 ++-- > arch/powerpc/cpu/mpc5xx/Makefile | 27 +- > arch/powerpc/cpu/mpc5xxx/Makefile | 54 ++-- > arch/powerpc/cpu/mpc824x/Makefile | 28 +-- > arch/powerpc/cpu/mpc8260/Makefile | 32 +-- > arch/powerpc/cpu/mpc83xx/Makefile | 58 ++--- > arch/powerpc/cpu/mpc85xx/Makefile | 233 ++++++++--------- > arch/powerpc/cpu/mpc86xx/Makefile | 50 ++-- > arch/powerpc/cpu/mpc8xx/Makefile | 58 ++--- > arch/powerpc/cpu/mpc8xxx/Makefile | 30 +-- > arch/powerpc/cpu/mpc8xxx/ddr/Makefile | 30 +-- > arch/powerpc/cpu/ppc4xx/Makefile | 90 +++---- > arch/powerpc/lib/Makefile | 78 ++---- > arch/sandbox/cpu/Makefile | 23 +- > arch/sandbox/lib/Makefile | 25 +- > board/sandbox/sandbox/Makefile | 21 +- > board/ti/am335x/Makefile | 29 +-- > board/ti/am3517crane/Makefile | 19 +- > board/ti/am43xx/Makefile | 29 +-- > board/ti/beagle/Makefile | 24 +- > board/ti/dra7xx/Makefile | 27 +- > board/ti/evm/Makefile | 19 +- > board/ti/omap5912osk/Makefile | 24 +- > board/ti/omap5_uevm/Makefile | 27 +- > board/ti/omap730p2/Makefile | 24 +- > board/ti/panda/Makefile | 21 +- > board/ti/sdp3430/Makefile | 21 +- > board/ti/sdp4430/Makefile | 23 +- > board/ti/ti814x/Makefile | 29 +-- > board/ti/ti816x/Makefile | 27 +- > board/ti/tnetv107xevm/Makefile | 25 +- > common/Makefile | 389 > ++++++++++++++--------------- > common/spl/Makefile | 36 +-- > disk/Makefile | 34 +-- > drivers/bios_emulator/Makefile | 23 +- > drivers/block/Makefile | 52 ++-- > drivers/bootcount/Makefile | 30 +-- > drivers/crypto/Makefile | 25 +- > drivers/dfu/Makefile | 27 +- > drivers/dma/Makefile | 30 +-- > drivers/fpga/Makefile | 44 +--- > drivers/gpio/Makefile | 73 ++---- > drivers/hwmon/Makefile | 40 +-- > drivers/i2c/Makefile | 68 ++--- > drivers/input/Makefile | 36 +-- > drivers/misc/Makefile | 52 ++-- > drivers/mmc/Makefile | 71 ++---- > drivers/mtd/Makefile | 44 +--- > drivers/mtd/nand/Makefile | 102 +++----- > drivers/mtd/onenand/Makefile | 27 +- > drivers/mtd/spi/Makefile | 36 +-- > drivers/mtd/ubi/Makefile | 28 +-- > drivers/net/Makefile | 136 +++++----- > drivers/net/fm/Makefile | 59 ++--- > drivers/net/npe/Makefile | 24 +- > drivers/net/phy/Makefile | 60 ++--- > drivers/pci/Makefile | 44 +--- > drivers/pcmcia/Makefile | 34 +-- > drivers/power/Makefile | 47 +--- > drivers/power/battery/Makefile | 27 +- > drivers/power/fuel_gauge/Makefile | 25 +- > drivers/power/mfd/Makefile | 29 +-- > drivers/power/pmic/Makefile | 35 +-- > drivers/qe/Makefile | 25 +- > drivers/rtc/Makefile | 108 ++++---- > drivers/serial/Makefile | 82 +++--- > drivers/sound/Makefile | 30 +-- > drivers/spi/Makefile | 84 +++---- > drivers/tpm/Makefile | 29 +-- > drivers/twserial/Makefile | 24 +- > drivers/usb/eth/Makefile | 28 +-- > drivers/usb/gadget/Makefile | 58 ++--- > drivers/usb/host/Makefile | 74 ++---- > drivers/usb/musb-new/Makefile | 35 +-- > drivers/usb/musb/Makefile | 36 +-- > drivers/usb/phy/Makefile | 24 +- > drivers/usb/ulpi/Makefile | 28 +-- > drivers/video/Makefile | 86 +++---- > drivers/watchdog/Makefile | 38 +-- > fs/Makefile | 24 +- > fs/cbfs/Makefile | 24 +- > fs/cramfs/Makefile | 29 +-- > fs/ext4/Makefile | 27 +- > fs/fat/Makefile | 31 +-- > fs/fdos/Makefile | 27 +- > fs/jffs2/Makefile | 38 +-- > fs/reiserfs/Makefile | 26 +- > fs/sandbox/Makefile | 23 +- > fs/ubifs/Makefile | 29 +-- > fs/yaffs2/Makefile | 33 +-- > fs/zfs/Makefile | 25 +- > lib/Makefile | 114 ++++----- > lib/libfdt/Makefile | 27 +- > lib/lzma/Makefile | 24 +- > lib/lzo/Makefile | 24 +- > lib/rsa/Makefile | 22 +- > lib/tizen/Makefile | 24 +- > lib/zlib/Makefile | 22 +- > net/Makefile | 46 +--- > scripts/Makefile.build | 48 ++++ > spl/Makefile | 26 +- > 170 files changed, 1518 insertions(+), 5100 deletions(-) > create mode 100644 scripts/Makefile.build
For the series, applied to u-boot/master, thanks! -- Tom
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot