Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
@ 2012-03-07 19:34 Thomas Petazzoni
  2012-03-07 19:34 ` [Buildroot] [PATCH 01/13] Remove the DATE variable Thomas Petazzoni
                   ` (14 more replies)
  0 siblings, 15 replies; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Hello,

Here is a set of proposal that cleanup/re-organize a few parts of our
main Makefiles. This is just the beginning of a cleanup of Makefile,
package/Makefile.in and some other core parts of the
infrastructure. Before going further, I'd like to see if the direction
I'm taking is something that is considered to be useful and
interesting.

This set of patches is at the Request For Comment state, they are not
yet intended to be committed, I need to do some further testing. The
purpose is really to get some early feedback about them.

Thanks,

Thomas

The following changes since commit b50f7a832de2801aeee33146ff5a81945f4078c2:

  barebox: fix 2012.03 typo (2012-03-07 16:26:50 +0100)

are available in the git repository at:
  git://git.free-electrons.com/users/thomas-petazzoni/buildroot.git for-2012.05/misc-cleanups

Thomas Petazzoni (13):
      Remove the DATE variable
      Remove cc-option: not used anywhere
      Remove filename extension crap for OS compatibility
      kconfig: do not use HOST_LOADLIBES anymore
      Rename Makefile.autotools.in to pkg-autotargets.mk
      Rename Makefile.cmake.in to pkg-cmaketargets.mk
      Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk
      pkg-*.mk: add some comments, update some existing comments
      Remove unused .fakeroot.* mechanism
      Move the manual build infrastructure to docs/manual/manual.mk
      cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
      package: remove unused STRIP_DISCARD_ALL variable
      package: move autotools specific stuff to pkg-autotargets.mk

 Makefile                                           |  108 +---
 boot/uboot/uboot.mk                                |    1 -
 docs/manual/manual.mk                              |   48 ++
 fs/common.mk                                       |    2 -
 fs/iso9660/iso9660.mk                              |    2 -
 package/Makefile.in                                |   83 +--
 package/Makefile.package.in                        |  746 --------------------
 .../{Makefile.autotools.in => pkg-autotargets.mk}  |   74 ++-
 package/{Makefile.cmake.in => pkg-cmaketargets.mk} |   22 +
 package/pkg-download.mk                            |  221 ++++++
 package/pkg-gentargets.mk                          |  456 ++++++++++++
 package/pkg-utils.mk                               |   85 +++
 support/kconfig/Makefile.br                        |    4 +-
 support/kconfig/patches/10-br-build-system.patch   |   12 +-
 14 files changed, 917 insertions(+), 947 deletions(-)
 create mode 100644 docs/manual/manual.mk
 delete mode 100644 package/Makefile.package.in
 rename package/{Makefile.autotools.in => pkg-autotargets.mk} (85%)
 rename package/{Makefile.cmake.in => pkg-cmaketargets.mk} (86%)
 create mode 100644 package/pkg-download.mk
 create mode 100644 package/pkg-gentargets.mk
 create mode 100644 package/pkg-utils.mk

Thanks,
-- 
Thomas Petazzoni

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 01/13] Remove the DATE variable
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:20   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 02/13] Remove cc-option: not used anywhere Thomas Petazzoni
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

This variable was only used by uboot.mk to add a #define DATE into the
U-Boot .h configuration file. But such a definition does not seem to
be used by the mainline U-Boot, so there's no reason to keep it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile            |    1 -
 boot/uboot/uboot.mk |    1 -
 2 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index d508888..bfa82d2 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,6 @@ endif
 TOPDIR:=$(shell pwd)
 CONFIG_CONFIG_IN=Config.in
 CONFIG=support/kconfig
-DATE:=$(shell date +%Y%m%d)
 
 # Compute the full local version string so packages can use it as-is
 # Need to export it, so it can be got from environment in children (eg. mconf)
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index db9de8d..83696be 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -69,7 +69,6 @@ define UBOOT_CONFIGURE_CMDS
 	@echo "/* Add a wrapper around the values Buildroot sets. */" >> $(@D)/include/config.h
 	@echo "#ifndef __BR2_ADDED_CONFIG_H" >> $(@D)/include/config.h
 	@echo "#define __BR2_ADDED_CONFIG_H" >> $(@D)/include/config.h
-	$(call insert_define,DATE,$(DATE))
 	$(call insert_define,CONFIG_LOAD_SCRIPTS,1)
 	$(call insert_define,CONFIG_IPADDR,$(BR2_TARGET_UBOOT_IPADDR))
 	$(call insert_define,CONFIG_GATEWAYIP,$(BR2_TARGET_UBOOT_GATEWAY))
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 02/13] Remove cc-option: not used anywhere
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
  2012-03-07 19:34 ` [Buildroot] [PATCH 01/13] Remove the DATE variable Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:22   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 03/13] Remove filename extension crap for OS compatibility Thomas Petazzoni
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index bfa82d2..7cc2380 100644
--- a/Makefile
+++ b/Makefile
@@ -177,13 +177,6 @@ BUILD_DIR:=$(BASE_DIR)/build
 
 ifeq ($(BR2_HAVE_DOT_CONFIG),y)
 
-# cc-option
-# Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
-# sets -march=winchip-c6 if supported else falls back to -march=i586
-# without checking the latter.
-cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
-	> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
-
 #############################################################
 #
 # Hide troublesome environment variables from sub processes
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 03/13] Remove filename extension crap for OS compatibility
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
  2012-03-07 19:34 ` [Buildroot] [PATCH 01/13] Remove the DATE variable Thomas Petazzoni
  2012-03-07 19:34 ` [Buildroot] [PATCH 02/13] Remove cc-option: not used anywhere Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:27   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 04/13] kconfig: do not use HOST_LOADLIBES anymore Thomas Petazzoni
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

The only variable that is used is HOST_LOADLIBES, defined for the
cygwin case in the kconfig build. Since we don't support cygwin,
simply get rid of this.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile |   28 ----------------------------
 1 files changed, 0 insertions(+), 28 deletions(-)

diff --git a/Makefile b/Makefile
index 7cc2380..c3ff284 100644
--- a/Makefile
+++ b/Makefile
@@ -194,34 +194,6 @@ unexport CONFIG_SITE
 
 GNU_HOST_NAME:=$(shell support/gnuconfig/config.guess)
 
-#############################################################
-#
-# Setup the proper filename extensions for the host
-#
-##############################################################
-ifneq ($(findstring linux,$(GNU_HOST_NAME)),)
-HOST_EXEEXT:=
-HOST_LIBEXT:=.a
-HOST_SHREXT:=.so
-endif
-ifneq ($(findstring apple,$(GNU_HOST_NAME)),)
-HOST_EXEEXT:=
-HOST_LIBEXT:=.a
-HOST_SHREXT:=.dylib
-endif
-ifneq ($(findstring cygwin,$(GNU_HOST_NAME)),)
-HOST_EXEEXT:=.exe
-HOST_LIBEXT:=.lib
-HOST_SHREXT:=.dll
-HOST_LOADLIBES=-lcurses -lintl
-export HOST_LOADLIBES
-endif
-ifneq ($(findstring mingw,$(GNU_HOST_NAME)),)
-HOST_EXEEXT:=.exe
-HOST_LIBEXT:=.lib
-HOST_SHREXT:=.dll
-endif
-
 ##############################################################
 #
 # The list of stuff to build for the target toolchain
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 04/13] kconfig: do not use HOST_LOADLIBES anymore
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 03/13] Remove filename extension crap for OS compatibility Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:29   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk Thomas Petazzoni
                   ` (10 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 support/kconfig/Makefile.br                      |    4 ++--
 support/kconfig/patches/10-br-build-system.patch |   12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br
index c24b6b5..2f8b6ba 100644
--- a/support/kconfig/Makefile.br
+++ b/support/kconfig/Makefile.br
@@ -22,10 +22,10 @@ host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxx
 HOST_EXTRACFLAGS += -I$(obj)
 
 $(host-csingle): %: %.c
-	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $(obj)/$@
+	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@
 
 $(host-cmulti): %: $(host-cobjs) $(host-cshlib)
-	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
+	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
 
 $(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
 	$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch
index 85125e5..c5d9a75 100644
--- a/support/kconfig/patches/10-br-build-system.patch
+++ b/support/kconfig/patches/10-br-build-system.patch
@@ -3,10 +3,10 @@
  foo.h       |   12 ++++++++++++
  2 files changed, 65 insertions(+)
 
-Index: config/Makefile.br
+Index: kconfig/Makefile.br
 ===================================================================
 --- /dev/null
-+++ config/Makefile.br
++++ kconfig/Makefile.br
 @@ -0,0 +1,53 @@
 +src := .
 +top_srcdir=../../
@@ -32,10 +32,10 @@ Index: config/Makefile.br
 +HOST_EXTRACFLAGS += -I$(obj)
 +
 +$(host-csingle): %: %.c
-+	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $(obj)/$@
++	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@
 +
 +$(host-cmulti): %: $(host-cobjs) $(host-cshlib)
-+	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
++	$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
 +
 +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
 +	$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
@@ -61,10 +61,10 @@ Index: config/Makefile.br
 +
 +FORCE:
 +.PHONY: FORCE clean distclean
-Index: config/foo.h
+Index: kconfig/foo.h
 ===================================================================
 --- /dev/null
-+++ config/foo.h
++++ kconfig/foo.h
 @@ -0,0 +1,12 @@
 +#ifndef __KCONFIG_FOO_H
 +#define __KCONFIG_FOO_H
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (3 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 04/13] kconfig: do not use HOST_LOADLIBES anymore Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:35   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 06/13] Rename Makefile.cmake.in to pkg-cmaketargets.mk Thomas Petazzoni
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in                                |    2 +-
 .../{Makefile.autotools.in => pkg-autotargets.mk}  |    0
 2 files changed, 1 insertions(+), 1 deletions(-)
 rename package/{Makefile.autotools.in => pkg-autotargets.mk} (100%)

diff --git a/package/Makefile.in b/package/Makefile.in
index dc8d038..0a0f94d 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -298,6 +298,6 @@ else
 SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
 endif
 
-include package/Makefile.autotools.in
+include package/pkg-autotargets.mk
 include package/Makefile.cmake.in
 include package/Makefile.package.in
diff --git a/package/Makefile.autotools.in b/package/pkg-autotargets.mk
similarity index 100%
rename from package/Makefile.autotools.in
rename to package/pkg-autotargets.mk
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 06/13] Rename Makefile.cmake.in to pkg-cmaketargets.mk
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (4 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:36   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 07/13] Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk Thomas Petazzoni
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in                                |    2 +-
 package/{Makefile.cmake.in => pkg-cmaketargets.mk} |    0
 2 files changed, 1 insertions(+), 1 deletions(-)
 rename package/{Makefile.cmake.in => pkg-cmaketargets.mk} (100%)

diff --git a/package/Makefile.in b/package/Makefile.in
index 0a0f94d..5f0d00a 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -299,5 +299,5 @@ SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
 endif
 
 include package/pkg-autotargets.mk
-include package/Makefile.cmake.in
+include package/pkg-cmaketargets.mk
 include package/Makefile.package.in
diff --git a/package/Makefile.cmake.in b/package/pkg-cmaketargets.mk
similarity index 100%
rename from package/Makefile.cmake.in
rename to package/pkg-cmaketargets.mk
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 07/13] Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (5 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 06/13] Rename Makefile.cmake.in to pkg-cmaketargets.mk Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:40   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 08/13] pkg-*.mk: add some comments, update some existing comments Thomas Petazzoni
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in         |    4 +-
 package/Makefile.package.in |  746 -------------------------------------------
 package/pkg-download.mk     |  212 ++++++++++++
 package/pkg-gentargets.mk   |  458 ++++++++++++++++++++++++++
 package/pkg-utils.mk        |   72 +++++
 5 files changed, 745 insertions(+), 747 deletions(-)
 delete mode 100644 package/Makefile.package.in
 create mode 100644 package/pkg-download.mk
 create mode 100644 package/pkg-gentargets.mk
 create mode 100644 package/pkg-utils.mk

diff --git a/package/Makefile.in b/package/Makefile.in
index 5f0d00a..4f72864 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -298,6 +298,8 @@ else
 SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
 endif
 
+include package/pkg-utils.mk
+include package/pkg-download.mk
 include package/pkg-autotargets.mk
 include package/pkg-cmaketargets.mk
-include package/Makefile.package.in
+include package/pkg-gentargets.mk
diff --git a/package/Makefile.package.in b/package/Makefile.package.in
deleted file mode 100644
index 59adce1..0000000
--- a/package/Makefile.package.in
+++ /dev/null
@@ -1,746 +0,0 @@
-################################################################################
-# Generic package infrastructure
-#
-# This file implements an infrastructure that eases development of
-# package .mk files. It should be used for all non-autotools based
-# packages. Autotools-based packages should use the specialized
-# autotools infrastructure in package/Makefile.autotools.in.
-#
-# See the Buildroot documentation for details on the usage of this
-# infrastructure
-#
-# In terms of implementation, this generic infrastructure requires the
-# .mk file to specify:
-#
-#   1. Metadata informations about the package: name, version,
-#      download URL, etc.
-#
-#   2. Description of the commands to be executed to configure, build
-#      and install the package
-#
-# The autotools infrastructure specializes this generic infrastructure
-# by already implementing the configure, build and install steps.
-################################################################################
-
-# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
-# hyphens to underscores
-
-# Heavily inspired by the up macro from gmsl (http://gmsl.sf.net)
-# This is approx 5 times faster than forking a shell and tr, and
-# as this macro is used a lot it matters
-# This works by creating translation character pairs (E.G. a:A b:B)
-# and then looping though all of them running $(subst from,to,text)
-[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z . -
-[TO]   := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _
-
-UPPERCASE = $(strip $(eval __tmp := $1) \
-     $(foreach c, $(join $(addsuffix :,$([FROM])),$([TO])), \
-	$(eval __tmp :=	\
-		$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),\
-			$(__tmp)))) \
-     $(__tmp))
-
-define KCONFIG_ENABLE_OPT
-       $(SED) "/\\<$(1)\\>/d" $(2)
-       echo "$(1)=y" >> $(2)
-endef
-
-define KCONFIG_SET_OPT
-       $(SED) "/\\<$(1)\\>/d" $(3)
-       echo "$(1)=$(2)" >> $(3)
-endef
-
-define KCONFIG_DISABLE_OPT
-       $(SED) "/\\<$(1)\\>/d" $(2)
-       echo "# $(1) is not set" >> $(2)
-endef
-
-# Helper functions to determine the name of a package and its
-# directory from its makefile directory, using the $(MAKEFILE_LIST)
-# variable provided by make. This is used by the *TARGETS macros to
-# automagically find where the package is located. Note that the
-# pkgdir macro is carefully written to handle the case of the Linux
-# package, for which the package directory is an empty string.
-define pkgdir
-$(dir $(lastword $(MAKEFILE_LIST)))
-endef
-
-define pkgname
-$(lastword $(subst /, ,$(call pkgdir)))
-endef
-
-define pkgparentdir
-$(patsubst %$(call pkgname)/,%,$(call pkgdir))
-endef
-
-# Define extractors for different archive suffixes
-INFLATE.bz2  = $(BZCAT)
-INFLATE.gz   = $(ZCAT)
-INFLATE.tbz  = $(BZCAT)
-INFLATE.tbz2 = $(BZCAT)
-INFLATE.tgz  = $(ZCAT)
-INFLATE.xz   = $(XZCAT)
-INFLATE.tar  = cat
-
-# MESSAGE Macro -- display a message in bold type
-MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESET)"
-TERM_BOLD := $(shell tput smso)
-TERM_RESET := $(shell tput rmso)
-
-# Download method commands
-WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
-SVN:=$(call qstrip,$(BR2_SVN))
-BZR:=$(call qstrip,$(BR2_BZR))
-GIT:=$(call qstrip,$(BR2_GIT))
-HG:=$(call qstrip,$(BR2_HG)) $(QUIET)
-SCP:=$(call qstrip,$(BR2_SCP)) $(QUIET)
-SSH:=$(call qstrip,$(BR2_SSH)) $(QUIET)
-LOCALFILES:=$(call qstrip,$(BR2_LOCALFILES))
-
-# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
-# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
-# external-deps target.
-DL_MODE=DOWNLOAD
-
-DL_DIR=$(call qstrip,$(BR2_DL_DIR))
-ifeq ($(DL_DIR),)
-DL_DIR:=$(TOPDIR)/dl
-endif
-
-#
-# URI scheme helper functions
-# Example URIs:
-# * http://www.example.com/dir/file
-# * scp://www.example.com:dir/file (with domainseparator :)
-#
-# geturischeme: http
-geturischeme=$(firstword $(subst ://, ,$(call qstrip,$(1))))
-# stripurischeme: www.example.com/dir/file
-stripurischeme=$(lastword $(subst ://, ,$(call qstrip,$(1))))
-# domain: www.example.com
-domain=$(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1))))
-# notdomain: dir/file
-notdomain=$(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1)))
-#
-# default domainseparator is /, specify alternative value as first argument
-domainseparator=$(if $(1),$(1),/)
-
-################################################################################
-# The DOWNLOAD_{GIT,SVN,BZR,HG,LOCALFILES} helpers are in charge of getting a
-# working copy of the source repository for their corresponding SCM,
-# checking out the requested version / commit / tag, and create an
-# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with
-# ssh authentication. DOWNLOAD_WGET is the normal wget-based download
-# mechanism.
-#
-# The SOURCE_CHECK_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers are in charge of
-# simply checking that the source is available for download. This can be used
-# to make sure one will be able to get all the sources needed for
-# one's build configuration.
-#
-# The SHOW_EXTERNAL_DEPS_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers simply
-# output to the console the names of the files that will be downloaded, or path
-# and revision of the source repositories, producing a list of all the
-# "external dependencies" of a given build configuration.
-################################################################################
-
-define DOWNLOAD_GIT
-	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
-	(pushd $(DL_DIR) > /dev/null && \
-	$(GIT) clone --bare $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
-	pushd $($(PKG)_BASE_NAME) > /dev/null && \
-	$(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
-		gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
-	popd > /dev/null && \
-	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null)
-endef
-
-# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
-# repository
-define SOURCE_CHECK_GIT
-  $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
-endef
-
-define SHOW_EXTERNAL_DEPS_GIT
-	echo $($(PKG)_SOURCE)
-endef
-
-
-define DOWNLOAD_BZR
-	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
-	$(BZR) export $(DL_DIR)/$($(PKG)_SOURCE) $($(PKG)_SITE) -r $($(PKG)_DL_VERSION)
-endef
-
-define SOURCE_CHECK_BZR
-	$(BZR) ls --quiet $($(PKG)_SITE) > /dev/null
-endef
-
-define SHOW_EXTERNAL_DEPS_BZR
-	echo $($(PKG)_SOURCE)
-endef
-
-
-define DOWNLOAD_SVN
-	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
-	(pushd $(DL_DIR) > /dev/null && \
-	$(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
-	$(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
-	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null)
-endef
-
-define SOURCE_CHECK_SVN
-  $(SVN) ls $($(PKG)_SITE) > /dev/null
-endef
-
-define SHOW_EXTERNAL_DEPS_SVN
-  echo $($(PKG)_SOURCE)
-endef
-
-# SCP URIs should be of the form scp://[user@]host:filepath
-# Note that filepath is relative to the user's home directory, so you may want
-# to prepend the path with a slash: scp://[user@]host:/absolutepath
-define DOWNLOAD_SCP
-	test -e $(DL_DIR)/$(2) || \
-	$(SCP) $(call stripurischeme,$(call qstrip,$(1)))/$(2) $(DL_DIR)
-endef
-
-define SOURCE_CHECK_SCP
-	$(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1)/$(2),:) > /dev/null
-endef
-
-define SHOW_EXTERNAL_DEPS_SCP
-	echo $(2)
-endef
-
-
-define DOWNLOAD_HG
-	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
-	(pushd $(DL_DIR) > /dev/null && \
-	$(HG) clone --noupdate --rev $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
-	$(HG) archive --repository $($(PKG)_BASE_NAME) --type tgz --prefix $($(PKG)_BASE_NAME)/ \
-	              --rev $($(PKG)_DL_VERSION) $(DL_DIR)/$($(PKG)_SOURCE) && \
-	rm -rf $($(PKG)_DL_DIR) && \
-	popd > /dev/null)
-endef
-
-# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
-# repository
-define SOURCE_CHECK_HG
-  $(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
-endef
-
-define SHOW_EXTERNAL_DEPS_HG
-  echo $($(PKG)_SOURCE)
-endef
-
-# Download a file using wget. Only download the file if it doesn't
-# already exist in the download directory. If the download fails,
-# remove the file (because wget -O creates a 0-byte file even if the
-# download fails).
-define DOWNLOAD_WGET
-	test -e $(DL_DIR)/$(2) || \
-	$(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1))/$(2) || \
-	(rm -f $(DL_DIR)/$(2) ; exit 1)
-endef
-
-define SOURCE_CHECK_WGET
-  $(WGET) --spider $(call qstrip,$(1))/$(2)
-endef
-
-define SHOW_EXTERNAL_DEPS_WGET
-  echo $(2)
-endef
-
-define DOWNLOAD_LOCALFILES
-	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
-		$(LOCALFILES) $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE) $(DL_DIR)
-endef
-
-define SOURCE_CHECK_LOCALFILES
-  test -e $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE)
-endef
-
-define SHOW_EXTERNAL_DEPS_LOCALFILES
-  echo $($(PKG)_SITE)/$($(PKG)_SOURCE)
-endef
-
-################################################################################
-# DOWNLOAD -- Download helper. Will try to download source from:
-# 1) BR2_PRIMARY_SITE if enabled
-# 2) Download site
-# 3) BR2_BACKUP_SITE if enabled
-#
-# Argument 1 is the source location
-# Argument 2 is the source filename
-#
-# E.G. use like this:
-# $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE))
-################################################################################
-
-define DOWNLOAD
-	$(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
-		case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
-			scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
-			*) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
-		esac ; \
-	fi ; \
-	if test -n "$(1)" ; then \
-		case "$($(PKG)_SITE_METHOD)" in \
-			git) $($(DL_MODE)_GIT) && exit ;; \
-			svn) $($(DL_MODE)_SVN) && exit ;; \
-			bzr) $($(DL_MODE)_BZR) && exit ;; \
-			file) $($(DL_MODE)_LOCALFILES) && exit ;; \
-			scp) $($(DL_MODE)_SCP) && exit ;; \
-			hg) $($(DL_MODE)_HG) && exit ;; \
-			*) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
-		esac ; \
-	fi ; \
-	if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
-		$(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
-	fi ; \
-	exit 1
-endef
-
-# Needed for the foreach loops to loop over the list of hooks, so that
-# each hook call is properly separated by a newline.
-define sep
-
-
-endef
-
-################################################################################
-# Implicit targets -- produce a stamp file for each step of a package build
-################################################################################
-
-# Retrieve the archive
-$(BUILD_DIR)/%/.stamp_downloaded:
-ifeq ($(DL_MODE),DOWNLOAD)
-# Only show the download message if it isn't already downloaded
-	$(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
-		(test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
-		$(call MESSAGE,"Downloading")
-endif
-	$(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE)))
-	$(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
-	$(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
-ifeq ($(DL_MODE),DOWNLOAD)
-	$(Q)mkdir -p $(@D)
-	$(Q)touch $@
-endif
-
-# Unpack the archive
-$(BUILD_DIR)/%/.stamp_extracted:
-	@$(call MESSAGE,"Extracting")
-	$(Q)mkdir -p $(@D)
-	$($(PKG)_EXTRACT_CMDS)
-# some packages have messed up permissions inside
-	$(Q)chmod -R +rw $(@D)
-	$(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Rsync the source directory if the <pkg>_OVERRIDE_SRCDIR feature is
-# used.
-$(BUILD_DIR)/%/.stamp_rsynced:
-	@$(call MESSAGE,"Syncing from source dir $(SRCDIR)")
-	@test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1)
-	rsync -au $(SRCDIR)/ $(@D)
-	$(Q)touch $@
-
-# Handle the SOURCE_CHECK and SHOW_EXTERNAL_DEPS cases for rsynced
-# packages
-$(BUILD_DIR)/%/.stamp_rsync_sourced:
-ifeq ($(DL_MODE),SOURCE_CHECK)
-	test -d $(SRCDIR)
-else ifeq ($(DL_MODE),SHOW_EXTERNAL_DEPS)
-	echo "file://$(SRCDIR)"
-else
-	@true # Nothing to do to source a local package
-endif
-
-# Patch
-#
-# The RAWNAME variable is the lowercased package name, which allows to
-# find the package directory (typically package/<pkgname>) and the
-# prefix of the patches
-$(BUILD_DIR)/%/.stamp_patched: NAMEVER = $(RAWNAME)-$($(PKG)_VERSION)
-$(BUILD_DIR)/%/.stamp_patched:
-	@$(call MESSAGE,"Patching $($(PKG)_DIR_PREFIX)/$(RAWNAME)")
-	$(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep))
-	$(if $($(PKG)_PATCH),support/scripts/apply-patches.sh $(@D) $(DL_DIR) $($(PKG)_PATCH))
-	$(Q)( \
-	if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME); then \
-	  if test "$(wildcard $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER)*.patch*)"; then \
-	    support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(NAMEVER)\*.patch $(NAMEVER)\*.patch.$(ARCH) || exit 1; \
-	  else \
-	    support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(RAWNAME)\*.patch $(RAWNAME)\*.patch.$(ARCH) || exit 1; \
-	    if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER); then \
-	      support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER) \*.patch \*.patch.$(ARCH) || exit 1; \
-	    fi; \
-	  fi; \
-	fi; \
-	)
-	$(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Configure
-$(BUILD_DIR)/%/.stamp_configured:
-	$(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep))
-	@$(call MESSAGE,"Configuring")
-	$($(PKG)_CONFIGURE_CMDS)
-	$(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Build
-$(BUILD_DIR)/%/.stamp_built::
-	@$(call MESSAGE,"Building")
-	$($(PKG)_BUILD_CMDS)
-	$(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Install to host dir
-$(BUILD_DIR)/%/.stamp_host_installed:
-	@$(call MESSAGE,"Installing to host directory")
-	$($(PKG)_INSTALL_CMDS)
-	$(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Install to staging dir
-$(BUILD_DIR)/%/.stamp_staging_installed:
-	@$(call MESSAGE,"Installing to staging directory")
-	$($(PKG)_INSTALL_STAGING_CMDS)
-	$(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Install to images dir
-$(BUILD_DIR)/%/.stamp_images_installed:
-	@$(call MESSAGE,"Installing to images directory")
-	$($(PKG)_INSTALL_IMAGES_CMDS)
-	$(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Install to target dir
-$(BUILD_DIR)/%/.stamp_target_installed:
-	@$(call MESSAGE,"Installing to target")
-	$($(PKG)_INSTALL_TARGET_CMDS)
-	$(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))
-	$(Q)touch $@
-
-# Clean package
-$(BUILD_DIR)/%/.stamp_cleaned:
-	@$(call MESSAGE,"Cleaning up")
-	$($(PKG)_CLEAN_CMDS)
-	rm -f $(@D)/.stamp_built
-
-# Uninstall package from target and staging
-# Uninstall commands tend to fail, so remove the stamp files first
-$(BUILD_DIR)/%/.stamp_uninstalled:
-	@$(call MESSAGE,"Uninstalling")
-	rm -f $($(PKG)_TARGET_INSTALL_STAGING)
-	rm -f $($(PKG)_TARGET_INSTALL_TARGET)
-	$($(PKG)_UNINSTALL_STAGING_CMDS)
-	$($(PKG)_UNINSTALL_TARGET_CMDS)
-
-# Remove package sources
-$(BUILD_DIR)/%/.stamp_dircleaned:
-	rm -Rf $(@D)
-
-################################################################################
-# GENTARGETS_INNER -- generates the make targets needed to build a
-# generic package
-#
-#  argument 1 is the lowercase package name
-#  argument 2 is the uppercase package name, including an HOST_ prefix
-#             for host packages
-#  argument 3 is the uppercase package name, without the HOST_ prefix
-#             for host packages
-#  argument 4 is the package directory prefix
-#  argument 5 is the type (target or host)
-################################################################################
-
-define GENTARGETS_INNER
-
-# Define default values for various package-related variables, if not
-# already defined. For some variables (version, source, site and
-# subdir), if they are undefined, we try to see if a variable without
-# the HOST_ prefix is defined. If so, we use such a variable, so that
-# these informations have only to be specified once, for both the
-# target and host packages of a given .mk file.
-
-$(2)_TYPE                       =  $(5)
-$(2)_NAME			=  $(1)
-
-# Keep the package version that may contain forward slashes in the _DL_VERSION
-# variable, then replace all forward slashes ('/') by underscores ('_') to
-# sanitize the package version that is used in paths, directory and file names.
-# Forward slashes may appear in the package's version when pointing to a
-# version control system branch or tag, for example remotes/origin/1_10_stable.
-ifndef $(2)_VERSION
- ifdef $(3)_VERSION
-  $(2)_DL_VERSION = $($(3)_VERSION)
-  $(2)_VERSION = $(subst /,_,$($(3)_VERSION))
- else
-  $(2)_VERSION = undefined
-  $(2)_DL_VERSION = undefined
- endif
-else
-  $(2)_DL_VERSION = $($(2)_VERSION)
-  $(2)_VERSION = $(subst /,_,$($(2)_VERSION))
-endif
-
-$(2)_BASE_NAME	=  $(1)-$$($(2)_VERSION)
-$(2)_DL_DIR	=  $$(DL_DIR)/$$($(2)_BASE_NAME)
-$(2)_DIR	=  $$(BUILD_DIR)/$$($(2)_BASE_NAME)
-
-ifneq ($$($(2)_OVERRIDE_SRCDIR),)
-$(2)_VERSION = custom
-endif
-
-ifndef $(2)_SOURCE
- ifdef $(3)_SOURCE
-  $(2)_SOURCE = $($(3)_SOURCE)
- else
-  $(2)_SOURCE			?= $$($(2)_BASE_NAME).tar.gz
- endif
-endif
-
-ifndef $(2)_PATCH
- ifdef $(3)_PATCH
-  $(2)_PATCH = $($(3)_PATCH)
- endif
-endif
-
-ifndef $(2)_SITE
- ifdef $(3)_SITE
-  $(2)_SITE = $($(3)_SITE)
- else
-  $(2)_SITE			?= \
-	http://$$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/$(1)
- endif
-endif
-
-ifndef $(2)_SITE_METHOD
- ifdef $(3)_SITE_METHOD
-  $(2)_SITE_METHOD = $($(3)_SITE_METHOD)
- else
-	# Try automatic detection using the scheme part of the URI
-	$(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call qstrip,$($(2)_SITE))))
- endif
-endif
-
-ifeq ($$($(2)_SITE_METHOD),local)
-ifeq ($$($(2)_OVERRIDE_SRCDIR),)
-$(2)_OVERRIDE_SRCDIR = $($(2)_SITE)
-endif
-endif
-
-$(2)_DEPENDENCIES ?= $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))
-
-$(2)_INSTALL_STAGING		?= NO
-$(2)_INSTALL_IMAGES		?= NO
-$(2)_INSTALL_TARGET		?= YES
-$(2)_DIR_PREFIX			= $(if $(4),$(4),$(TOP_SRCDIR)/package)
-
-# define sub-target stamps
-$(2)_TARGET_INSTALL_TARGET =	$$($(2)_DIR)/.stamp_target_installed
-$(2)_TARGET_INSTALL_STAGING =	$$($(2)_DIR)/.stamp_staging_installed
-$(2)_TARGET_INSTALL_IMAGES =	$$($(2)_DIR)/.stamp_images_installed
-$(2)_TARGET_INSTALL_HOST =      $$($(2)_DIR)/.stamp_host_installed
-$(2)_TARGET_BUILD =		$$($(2)_DIR)/.stamp_built
-$(2)_TARGET_CONFIGURE =		$$($(2)_DIR)/.stamp_configured
-$(2)_TARGET_RSYNC =	        $$($(2)_DIR)/.stamp_rsynced
-$(2)_TARGET_RSYNC_SOURCE =      $$($(2)_DIR)/.stamp_rsync_sourced
-$(2)_TARGET_PATCH =		$$($(2)_DIR)/.stamp_patched
-$(2)_TARGET_EXTRACT =		$$($(2)_DIR)/.stamp_extracted
-$(2)_TARGET_SOURCE =		$$($(2)_DIR)/.stamp_downloaded
-$(2)_TARGET_UNINSTALL =		$$($(2)_DIR)/.stamp_uninstalled
-$(2)_TARGET_CLEAN =		$$($(2)_DIR)/.stamp_cleaned
-$(2)_TARGET_DIRCLEAN =		$$($(2)_DIR)/.stamp_dircleaned
-
-# default extract command
-$(2)_EXTRACT_CMDS ?= \
-	$$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
-	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
-
-# post-steps hooks
-$(2)_POST_DOWNLOAD_HOOKS        ?=
-$(2)_POST_EXTRACT_HOOKS         ?=
-$(2)_PRE_PATCH_HOOKS            ?=
-$(2)_POST_PATCH_HOOKS           ?=
-$(2)_PRE_CONFIGURE_HOOKS        ?=
-$(2)_POST_CONFIGURE_HOOKS       ?=
-$(2)_POST_BUILD_HOOKS           ?=
-$(2)_POST_INSTALL_HOOKS         ?=
-$(2)_POST_INSTALL_STAGING_HOOKS ?=
-$(2)_POST_INSTALL_TARGET_HOOKS  ?=
-$(2)_POST_INSTALL_IMAGES_HOOKS  ?=
-
-# human-friendly targets and target sequencing
-$(1):			$(1)-install
-
-ifeq ($$($(2)_TYPE),host)
-$(1)-install:	        $(1)-install-host
-else
-$(1)-install:		$(1)-install-staging $(1)-install-target $(1)-install-images
-endif
-
-ifeq ($$($(2)_INSTALL_TARGET),YES)
-$(1)-install-target:	$(1)-build \
-			$$($(2)_TARGET_INSTALL_TARGET)
-else
-$(1)-install-target:
-endif
-
-ifeq ($$($(2)_INSTALL_STAGING),YES)
-$(1)-install-staging:	$(1)-build \
-			$$($(2)_TARGET_INSTALL_STAGING)
-else
-$(1)-install-staging:
-endif
-
-ifeq ($$($(2)_INSTALL_IMAGES),YES)
-$(1)-install-images:	$(1)-build \
-			$$($(2)_TARGET_INSTALL_IMAGES)
-else
-$(1)-install-images:
-endif
-
-$(1)-install-host:      $(1)-build $$($(2)_TARGET_INSTALL_HOST)
-
-$(1)-build:		$(1)-configure \
-			$$($(2)_TARGET_BUILD)
-
-ifeq ($$($(2)_OVERRIDE_SRCDIR),)
-# In the normal case (no package override), the sequence of steps is
-#  source, by downloading
-#  depends
-#  extract
-#  patch
-#  configure
-$(1)-configure:		$(1)-patch $(1)-depends \
-			$$($(2)_TARGET_CONFIGURE)
-
-$(1)-patch:		$(1)-extract $$($(2)_TARGET_PATCH)
-
-$(1)-extract:		$(1)-source \
-			$$($(2)_TARGET_EXTRACT)
-
-$(1)-depends:		$$($(2)_DEPENDENCIES)
-
-$(1)-source:		$$($(2)_TARGET_SOURCE)
-else
-# In the package override case, the sequence of steps
-#  source, by rsyncing
-#  depends
-#  configure
-$(1)-configure:		$(1)-depends \
-			$$($(2)_TARGET_CONFIGURE)
-
-$(1)-depends:		$(1)-rsync $$($(2)_DEPENDENCIES)
-
-$(1)-rsync:		$$($(2)_TARGET_RSYNC)
-
-$(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
-endif
-
-$(1)-show-depends:
-			@echo $$($(2)_DEPENDENCIES)
-
-$(1)-uninstall:		$(1)-configure $$($(2)_TARGET_UNINSTALL)
-
-$(1)-clean:		$(1)-uninstall \
-			$$($(2)_TARGET_CLEAN)
-
-$(1)-dirclean:		$$($(2)_TARGET_DIRCLEAN)
-
-$(1)-clean-for-rebuild:
-ifneq ($$($(2)_OVERRIDE_SRCDIR),)
-			rm -f $$($(2)_TARGET_RSYNC)
-endif
-			rm -f $$($(2)_TARGET_BUILD)
-			rm -f $$($(2)_TARGET_INSTALL_STAGING)
-			rm -f $$($(2)_TARGET_INSTALL_TARGET)
-			rm -f $$($(2)_TARGET_INSTALL_IMAGES)
-			rm -f $$($(2)_TARGET_INSTALL_HOST)
-
-$(1)-rebuild:		$(1)-clean-for-rebuild all
-
-$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild
-			rm -f $$($(2)_TARGET_CONFIGURE)
-
-$(1)-reconfigure:	$(1)-clean-for-reconfigure all
-
-# define the PKG variable for all targets, containing the
-# uppercase package variable prefix
-$$($(2)_TARGET_INSTALL_TARGET):		PKG=$(2)
-$$($(2)_TARGET_INSTALL_STAGING):	PKG=$(2)
-$$($(2)_TARGET_INSTALL_IMAGES):		PKG=$(2)
-$$($(2)_TARGET_INSTALL_HOST):           PKG=$(2)
-$$($(2)_TARGET_BUILD):			PKG=$(2)
-$$($(2)_TARGET_CONFIGURE):		PKG=$(2)
-$$($(2)_TARGET_RSYNC):                  SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
-$$($(2)_TARGET_RSYNC):                  PKG=$(2)
-$$($(2)_TARGET_RSYNC_SOURCE):		SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
-$$($(2)_TARGET_RSYNC_SOURCE):		PKG=$(2)
-$$($(2)_TARGET_PATCH):			PKG=$(2)
-$$($(2)_TARGET_PATCH):			RAWNAME=$(patsubst host-%,%,$(1))
-$$($(2)_TARGET_EXTRACT):		PKG=$(2)
-$$($(2)_TARGET_SOURCE):			PKG=$(2)
-$$($(2)_TARGET_UNINSTALL):		PKG=$(2)
-$$($(2)_TARGET_CLEAN):			PKG=$(2)
-$$($(2)_TARGET_DIRCLEAN):		PKG=$(2)
-
-# Compute the name of the Kconfig option that correspond to the
-# package being enabled. We handle three cases: the special Linux
-# kernel case, the bootloaders case, and the normal packages case.
-ifeq ($(1),linux)
-$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
-else ifeq ($(4),boot/)
-$(2)_KCONFIG_VAR = BR2_TARGET_$(2)
-else
-$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
-endif
-
-# add package to the general list of targets if requested by the buildroot
-# configuration
-ifeq ($$($$($(2)_KCONFIG_VAR)),y)
-
-TARGETS += $(1)
-PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
-PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)
-
-ifeq ($$($(2)_SITE_METHOD),svn)
-DL_TOOLS_DEPENDENCIES += svn
-else ifeq ($$($(2)_SITE_METHOD),git)
-DL_TOOLS_DEPENDENCIES += git
-else ifeq ($$($(2)_SITE_METHOD),bzr)
-DL_TOOLS_DEPENDENCIES += bzr
-else ifeq ($$($(2)_SITE_METHOD),scp)
-DL_TOOLS_DEPENDENCIES += scp ssh
-else ifeq ($$($(2)_SITE_METHOD),hg)
-DL_TOOLS_DEPENDENCIES += hg
-endif # SITE_METHOD
-
-DL_TOOLS_DEPENDENCIES += $(firstword $(INFLATE$(suffix $($(2)_SOURCE))))
-
-endif # $(2)_KCONFIG_VAR
-endef # GENTARGETS_INNER
-
-################################################################################
-# GENTARGETS -- the target generator macro for generic packages
-#
-# Argument 1 is "target" or "host"           [optional, default: "target"]
-################################################################################
-
-define GENTARGETS
-ifeq ($(1),host)
-# In the case of host packages, turn the package name "pkg" into "host-pkg"
-$(call GENTARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
-else
-# In the case of target packages, keep the package name "pkg"
-$(call GENTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
-endif
-endef
-
-# :mode=makefile:
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
new file mode 100644
index 0000000..7e25674
--- /dev/null
+++ b/package/pkg-download.mk
@@ -0,0 +1,212 @@
+# Download method commands
+WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
+SVN:=$(call qstrip,$(BR2_SVN))
+BZR:=$(call qstrip,$(BR2_BZR))
+GIT:=$(call qstrip,$(BR2_GIT))
+HG:=$(call qstrip,$(BR2_HG)) $(QUIET)
+SCP:=$(call qstrip,$(BR2_SCP)) $(QUIET)
+SSH:=$(call qstrip,$(BR2_SSH)) $(QUIET)
+LOCALFILES:=$(call qstrip,$(BR2_LOCALFILES))
+
+# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
+# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
+# external-deps target.
+DL_MODE=DOWNLOAD
+
+DL_DIR=$(call qstrip,$(BR2_DL_DIR))
+ifeq ($(DL_DIR),)
+DL_DIR:=$(TOPDIR)/dl
+endif
+
+#
+# URI scheme helper functions
+# Example URIs:
+# * http://www.example.com/dir/file
+# * scp://www.example.com:dir/file (with domainseparator :)
+#
+# geturischeme: http
+geturischeme=$(firstword $(subst ://, ,$(call qstrip,$(1))))
+# stripurischeme: www.example.com/dir/file
+stripurischeme=$(lastword $(subst ://, ,$(call qstrip,$(1))))
+# domain: www.example.com
+domain=$(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1))))
+# notdomain: dir/file
+notdomain=$(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1)))
+#
+# default domainseparator is /, specify alternative value as first argument
+domainseparator=$(if $(1),$(1),/)
+
+################################################################################
+# The DOWNLOAD_{GIT,SVN,BZR,HG,LOCALFILES} helpers are in charge of getting a
+# working copy of the source repository for their corresponding SCM,
+# checking out the requested version / commit / tag, and create an
+# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with
+# ssh authentication. DOWNLOAD_WGET is the normal wget-based download
+# mechanism.
+#
+# The SOURCE_CHECK_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers are in charge of
+# simply checking that the source is available for download. This can be used
+# to make sure one will be able to get all the sources needed for
+# one's build configuration.
+#
+# The SHOW_EXTERNAL_DEPS_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers simply
+# output to the console the names of the files that will be downloaded, or path
+# and revision of the source repositories, producing a list of all the
+# "external dependencies" of a given build configuration.
+################################################################################
+
+define DOWNLOAD_GIT
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
+	$(GIT) clone --bare $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
+	pushd $($(PKG)_BASE_NAME) > /dev/null && \
+	$(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
+		gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
+	popd > /dev/null && \
+	rm -rf $($(PKG)_DL_DIR) && \
+	popd > /dev/null)
+endef
+
+# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
+# repository
+define SOURCE_CHECK_GIT
+  $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_GIT
+	echo $($(PKG)_SOURCE)
+endef
+
+
+define DOWNLOAD_BZR
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	$(BZR) export $(DL_DIR)/$($(PKG)_SOURCE) $($(PKG)_SITE) -r $($(PKG)_DL_VERSION)
+endef
+
+define SOURCE_CHECK_BZR
+	$(BZR) ls --quiet $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_BZR
+	echo $($(PKG)_SOURCE)
+endef
+
+
+define DOWNLOAD_SVN
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
+	$(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
+	$(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
+	rm -rf $($(PKG)_DL_DIR) && \
+	popd > /dev/null)
+endef
+
+define SOURCE_CHECK_SVN
+  $(SVN) ls $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_SVN
+  echo $($(PKG)_SOURCE)
+endef
+
+# SCP URIs should be of the form scp://[user@]host:filepath
+# Note that filepath is relative to the user's home directory, so you may want
+# to prepend the path with a slash: scp://[user@]host:/absolutepath
+define DOWNLOAD_SCP
+	test -e $(DL_DIR)/$(2) || \
+	$(SCP) $(call stripurischeme,$(call qstrip,$(1)))/$(2) $(DL_DIR)
+endef
+
+define SOURCE_CHECK_SCP
+	$(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1)/$(2),:) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_SCP
+	echo $(2)
+endef
+
+
+define DOWNLOAD_HG
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+	(pushd $(DL_DIR) > /dev/null && \
+	$(HG) clone --noupdate --rev $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
+	$(HG) archive --repository $($(PKG)_BASE_NAME) --type tgz --prefix $($(PKG)_BASE_NAME)/ \
+	              --rev $($(PKG)_DL_VERSION) $(DL_DIR)/$($(PKG)_SOURCE) && \
+	rm -rf $($(PKG)_DL_DIR) && \
+	popd > /dev/null)
+endef
+
+# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
+# repository
+define SOURCE_CHECK_HG
+  $(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
+endef
+
+define SHOW_EXTERNAL_DEPS_HG
+  echo $($(PKG)_SOURCE)
+endef
+
+
+define DOWNLOAD_WGET
+	test -e $(DL_DIR)/$(2) || \
+	$(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1))/$(2) || \
+	(rm -f $(DL_DIR)/$(2) ; exit 1)
+endef
+
+define SOURCE_CHECK_WGET
+  $(WGET) --spider $(call qstrip,$(1))/$(2)
+endef
+
+define SHOW_EXTERNAL_DEPS_WGET
+  echo $(2)
+endef
+
+define DOWNLOAD_LOCALFILES
+	test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
+		$(LOCALFILES) $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE) $(DL_DIR)
+endef
+
+define SOURCE_CHECK_LOCALFILES
+  test -e $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE)
+endef
+
+define SHOW_EXTERNAL_DEPS_LOCALFILES
+  echo $($(PKG)_SITE)/$($(PKG)_SOURCE)
+endef
+
+################################################################################
+# DOWNLOAD -- Download helper. Will try to download source from:
+# 1) BR2_PRIMARY_SITE if enabled
+# 2) Download site
+# 3) BR2_BACKUP_SITE if enabled
+#
+# Argument 1 is the source location
+# Argument 2 is the source filename
+#
+# E.G. use like this:
+# $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE))
+################################################################################
+
+define DOWNLOAD
+	$(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
+		case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
+			scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
+			*) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
+		esac ; \
+	fi ; \
+	if test -n "$(1)" ; then \
+		case "$($(PKG)_SITE_METHOD)" in \
+			git) $($(DL_MODE)_GIT) && exit ;; \
+			svn) $($(DL_MODE)_SVN) && exit ;; \
+			bzr) $($(DL_MODE)_BZR) && exit ;; \
+			file) $($(DL_MODE)_LOCALFILES) && exit ;; \
+			scp) $($(DL_MODE)_SCP) && exit ;; \
+			hg) $($(DL_MODE)_HG) && exit ;; \
+			*) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
+		esac ; \
+	fi ; \
+	if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
+		$(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
+	fi ; \
+	exit 1
+endef
diff --git a/package/pkg-gentargets.mk b/package/pkg-gentargets.mk
new file mode 100644
index 0000000..b8c437e
--- /dev/null
+++ b/package/pkg-gentargets.mk
@@ -0,0 +1,458 @@
+################################################################################
+# Generic package infrastructure
+#
+# This file implements an infrastructure that eases development of
+# package .mk files. It should be used for all non-autotools based
+# packages. Autotools-based packages should use the specialized
+# autotools infrastructure in package/Makefile.autotools.in.
+#
+# See the Buildroot documentation for details on the usage of this
+# infrastructure
+#
+# In terms of implementation, this generic infrastructure requires the
+# .mk file to specify:
+#
+#   1. Metadata informations about the package: name, version,
+#      download URL, etc.
+#
+#   2. Description of the commands to be executed to configure, build
+#      and install the package
+#
+# The autotools infrastructure specializes this generic infrastructure
+# by already implementing the configure, build and install steps.
+################################################################################
+
+################################################################################
+# Implicit targets -- produce a stamp file for each step of a package build
+################################################################################
+
+# Retrieve the archive
+$(BUILD_DIR)/%/.stamp_downloaded:
+ifeq ($(DL_MODE),DOWNLOAD)
+# Only show the download message if it isn't already downloaded
+	$(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
+		(test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
+		$(call MESSAGE,"Downloading")
+endif
+	$(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE)))
+	$(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
+	$(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
+ifeq ($(DL_MODE),DOWNLOAD)
+	$(Q)mkdir -p $(@D)
+	$(Q)touch $@
+endif
+
+# Unpack the archive
+$(BUILD_DIR)/%/.stamp_extracted:
+	@$(call MESSAGE,"Extracting")
+	$(Q)mkdir -p $(@D)
+	$($(PKG)_EXTRACT_CMDS)
+# some packages have messed up permissions inside
+	$(Q)chmod -R +rw $(@D)
+	$(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Rsync the source directory if the <pkg>_OVERRIDE_SRCDIR feature is
+# used.
+$(BUILD_DIR)/%/.stamp_rsynced:
+	@$(call MESSAGE,"Syncing from source dir $(SRCDIR)")
+	@test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1)
+	rsync -au $(SRCDIR)/ $(@D)
+	$(Q)touch $@
+
+# Handle the SOURCE_CHECK and SHOW_EXTERNAL_DEPS cases for rsynced
+# packages
+$(BUILD_DIR)/%/.stamp_rsync_sourced:
+ifeq ($(DL_MODE),SOURCE_CHECK)
+	test -d $(SRCDIR)
+else ifeq ($(DL_MODE),SHOW_EXTERNAL_DEPS)
+	echo "file://$(SRCDIR)"
+else
+	@true # Nothing to do to source a local package
+endif
+
+# Patch
+#
+# The RAWNAME variable is the lowercased package name, which allows to
+# find the package directory (typically package/<pkgname>) and the
+# prefix of the patches
+$(BUILD_DIR)/%/.stamp_patched: NAMEVER = $(RAWNAME)-$($(PKG)_VERSION)
+$(BUILD_DIR)/%/.stamp_patched:
+	@$(call MESSAGE,"Patching $($(PKG)_DIR_PREFIX)/$(RAWNAME)")
+	$(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep))
+	$(if $($(PKG)_PATCH),support/scripts/apply-patches.sh $(@D) $(DL_DIR) $($(PKG)_PATCH))
+	$(Q)( \
+	if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME); then \
+	  if test "$(wildcard $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER)*.patch*)"; then \
+	    support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(NAMEVER)\*.patch $(NAMEVER)\*.patch.$(ARCH) || exit 1; \
+	  else \
+	    support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(RAWNAME)\*.patch $(RAWNAME)\*.patch.$(ARCH) || exit 1; \
+	    if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER); then \
+	      support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER) \*.patch \*.patch.$(ARCH) || exit 1; \
+	    fi; \
+	  fi; \
+	fi; \
+	)
+	$(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Configure
+$(BUILD_DIR)/%/.stamp_configured:
+	$(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep))
+	@$(call MESSAGE,"Configuring")
+	$($(PKG)_CONFIGURE_CMDS)
+	$(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Build
+$(BUILD_DIR)/%/.stamp_built::
+	@$(call MESSAGE,"Building")
+	$($(PKG)_BUILD_CMDS)
+	$(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Install to host dir
+$(BUILD_DIR)/%/.stamp_host_installed:
+	@$(call MESSAGE,"Installing to host directory")
+	$($(PKG)_INSTALL_CMDS)
+	$(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Install to staging dir
+$(BUILD_DIR)/%/.stamp_staging_installed:
+	@$(call MESSAGE,"Installing to staging directory")
+	$($(PKG)_INSTALL_STAGING_CMDS)
+	$(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Install to images dir
+$(BUILD_DIR)/%/.stamp_images_installed:
+	@$(call MESSAGE,"Installing to images directory")
+	$($(PKG)_INSTALL_IMAGES_CMDS)
+	$(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Install to target dir
+$(BUILD_DIR)/%/.stamp_target_installed:
+	@$(call MESSAGE,"Installing to target")
+	$($(PKG)_INSTALL_TARGET_CMDS)
+	$(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))
+	$(Q)touch $@
+
+# Clean package
+$(BUILD_DIR)/%/.stamp_cleaned:
+	@$(call MESSAGE,"Cleaning up")
+	$($(PKG)_CLEAN_CMDS)
+	rm -f $(@D)/.stamp_built
+
+# Uninstall package from target and staging
+# Uninstall commands tend to fail, so remove the stamp files first
+$(BUILD_DIR)/%/.stamp_uninstalled:
+	@$(call MESSAGE,"Uninstalling")
+	rm -f $($(PKG)_TARGET_INSTALL_STAGING)
+	rm -f $($(PKG)_TARGET_INSTALL_TARGET)
+	$($(PKG)_UNINSTALL_STAGING_CMDS)
+	$($(PKG)_UNINSTALL_TARGET_CMDS)
+
+# Remove package sources
+$(BUILD_DIR)/%/.stamp_dircleaned:
+	rm -Rf $(@D)
+
+################################################################################
+# GENTARGETS_INNER -- generates the make targets needed to build a
+# generic package
+#
+#  argument 1 is the lowercase package name
+#  argument 2 is the uppercase package name, including an HOST_ prefix
+#             for host packages
+#  argument 3 is the uppercase package name, without the HOST_ prefix
+#             for host packages
+#  argument 4 is the package directory prefix
+#  argument 5 is the type (target or host)
+################################################################################
+
+define GENTARGETS_INNER
+
+# Define default values for various package-related variables, if not
+# already defined. For some variables (version, source, site and
+# subdir), if they are undefined, we try to see if a variable without
+# the HOST_ prefix is defined. If so, we use such a variable, so that
+# these informations have only to be specified once, for both the
+# target and host packages of a given .mk file.
+
+$(2)_TYPE                       =  $(5)
+$(2)_NAME			=  $(1)
+
+# Keep the package version that may contain forward slashes in the _DL_VERSION
+# variable, then replace all forward slashes ('/') by underscores ('_') to
+# sanitize the package version that is used in paths, directory and file names.
+# Forward slashes may appear in the package's version when pointing to a
+# version control system branch or tag, for example remotes/origin/1_10_stable.
+ifndef $(2)_VERSION
+ ifdef $(3)_VERSION
+  $(2)_DL_VERSION = $($(3)_VERSION)
+  $(2)_VERSION = $(subst /,_,$($(3)_VERSION))
+ else
+  $(2)_VERSION = undefined
+  $(2)_DL_VERSION = undefined
+ endif
+else
+  $(2)_DL_VERSION = $($(2)_VERSION)
+  $(2)_VERSION = $(subst /,_,$($(2)_VERSION))
+endif
+
+$(2)_BASE_NAME	=  $(1)-$$($(2)_VERSION)
+$(2)_DL_DIR	=  $$(DL_DIR)/$$($(2)_BASE_NAME)
+$(2)_DIR	=  $$(BUILD_DIR)/$$($(2)_BASE_NAME)
+
+ifneq ($$($(2)_OVERRIDE_SRCDIR),)
+$(2)_VERSION = custom
+endif
+
+ifndef $(2)_SOURCE
+ ifdef $(3)_SOURCE
+  $(2)_SOURCE = $($(3)_SOURCE)
+ else
+  $(2)_SOURCE			?= $$($(2)_BASE_NAME).tar.gz
+ endif
+endif
+
+ifndef $(2)_PATCH
+ ifdef $(3)_PATCH
+  $(2)_PATCH = $($(3)_PATCH)
+ endif
+endif
+
+ifndef $(2)_SITE
+ ifdef $(3)_SITE
+  $(2)_SITE = $($(3)_SITE)
+ else
+  $(2)_SITE			?= \
+	http://$$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/$(1)
+ endif
+endif
+
+ifndef $(2)_SITE_METHOD
+ ifdef $(3)_SITE_METHOD
+  $(2)_SITE_METHOD = $($(3)_SITE_METHOD)
+ else
+	# Try automatic detection using the scheme part of the URI
+	$(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call qstrip,$($(2)_SITE))))
+ endif
+endif
+
+ifeq ($$($(2)_SITE_METHOD),local)
+ifeq ($$($(2)_OVERRIDE_SRCDIR),)
+$(2)_OVERRIDE_SRCDIR = $($(2)_SITE)
+endif
+endif
+
+$(2)_DEPENDENCIES ?= $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))
+
+$(2)_INSTALL_STAGING		?= NO
+$(2)_INSTALL_IMAGES		?= NO
+$(2)_INSTALL_TARGET		?= YES
+$(2)_DIR_PREFIX			= $(if $(4),$(4),$(TOP_SRCDIR)/package)
+
+# define sub-target stamps
+$(2)_TARGET_INSTALL_TARGET =	$$($(2)_DIR)/.stamp_target_installed
+$(2)_TARGET_INSTALL_STAGING =	$$($(2)_DIR)/.stamp_staging_installed
+$(2)_TARGET_INSTALL_IMAGES =	$$($(2)_DIR)/.stamp_images_installed
+$(2)_TARGET_INSTALL_HOST =      $$($(2)_DIR)/.stamp_host_installed
+$(2)_TARGET_BUILD =		$$($(2)_DIR)/.stamp_built
+$(2)_TARGET_CONFIGURE =		$$($(2)_DIR)/.stamp_configured
+$(2)_TARGET_RSYNC =	        $$($(2)_DIR)/.stamp_rsynced
+$(2)_TARGET_RSYNC_SOURCE =      $$($(2)_DIR)/.stamp_rsync_sourced
+$(2)_TARGET_PATCH =		$$($(2)_DIR)/.stamp_patched
+$(2)_TARGET_EXTRACT =		$$($(2)_DIR)/.stamp_extracted
+$(2)_TARGET_SOURCE =		$$($(2)_DIR)/.stamp_downloaded
+$(2)_TARGET_UNINSTALL =		$$($(2)_DIR)/.stamp_uninstalled
+$(2)_TARGET_CLEAN =		$$($(2)_DIR)/.stamp_cleaned
+$(2)_TARGET_DIRCLEAN =		$$($(2)_DIR)/.stamp_dircleaned
+
+# default extract command
+$(2)_EXTRACT_CMDS ?= \
+	$$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
+	$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
+
+# post-steps hooks
+$(2)_POST_DOWNLOAD_HOOKS        ?=
+$(2)_POST_EXTRACT_HOOKS         ?=
+$(2)_PRE_PATCH_HOOKS            ?=
+$(2)_POST_PATCH_HOOKS           ?=
+$(2)_PRE_CONFIGURE_HOOKS        ?=
+$(2)_POST_CONFIGURE_HOOKS       ?=
+$(2)_POST_BUILD_HOOKS           ?=
+$(2)_POST_INSTALL_HOOKS         ?=
+$(2)_POST_INSTALL_STAGING_HOOKS ?=
+$(2)_POST_INSTALL_TARGET_HOOKS  ?=
+$(2)_POST_INSTALL_IMAGES_HOOKS  ?=
+
+# human-friendly targets and target sequencing
+$(1):			$(1)-install
+
+ifeq ($$($(2)_TYPE),host)
+$(1)-install:	        $(1)-install-host
+else
+$(1)-install:		$(1)-install-staging $(1)-install-target $(1)-install-images
+endif
+
+ifeq ($$($(2)_INSTALL_TARGET),YES)
+$(1)-install-target:	$(1)-build \
+			$$($(2)_TARGET_INSTALL_TARGET)
+else
+$(1)-install-target:
+endif
+
+ifeq ($$($(2)_INSTALL_STAGING),YES)
+$(1)-install-staging:	$(1)-build \
+			$$($(2)_TARGET_INSTALL_STAGING)
+else
+$(1)-install-staging:
+endif
+
+ifeq ($$($(2)_INSTALL_IMAGES),YES)
+$(1)-install-images:	$(1)-build \
+			$$($(2)_TARGET_INSTALL_IMAGES)
+else
+$(1)-install-images:
+endif
+
+$(1)-install-host:      $(1)-build $$($(2)_TARGET_INSTALL_HOST)
+
+$(1)-build:		$(1)-configure \
+			$$($(2)_TARGET_BUILD)
+
+ifeq ($$($(2)_OVERRIDE_SRCDIR),)
+# In the normal case (no package override), the sequence of steps is
+#  source, by downloading
+#  depends
+#  extract
+#  patch
+#  configure
+$(1)-configure:		$(1)-patch $(1)-depends \
+			$$($(2)_TARGET_CONFIGURE)
+
+$(1)-patch:		$(1)-extract $$($(2)_TARGET_PATCH)
+
+$(1)-extract:		$(1)-source \
+			$$($(2)_TARGET_EXTRACT)
+
+$(1)-depends:		$$($(2)_DEPENDENCIES)
+
+$(1)-source:		$$($(2)_TARGET_SOURCE)
+else
+# In the package override case, the sequence of steps
+#  source, by rsyncing
+#  depends
+#  configure
+$(1)-configure:		$(1)-depends \
+			$$($(2)_TARGET_CONFIGURE)
+
+$(1)-depends:		$(1)-rsync $$($(2)_DEPENDENCIES)
+
+$(1)-rsync:		$$($(2)_TARGET_RSYNC)
+
+$(1)-source:		$$($(2)_TARGET_RSYNC_SOURCE)
+endif
+
+$(1)-show-depends:
+			@echo $$($(2)_DEPENDENCIES)
+
+$(1)-uninstall:		$(1)-configure $$($(2)_TARGET_UNINSTALL)
+
+$(1)-clean:		$(1)-uninstall \
+			$$($(2)_TARGET_CLEAN)
+
+$(1)-dirclean:		$$($(2)_TARGET_DIRCLEAN)
+
+$(1)-clean-for-rebuild:
+ifneq ($$($(2)_OVERRIDE_SRCDIR),)
+			rm -f $$($(2)_TARGET_RSYNC)
+endif
+			rm -f $$($(2)_TARGET_BUILD)
+			rm -f $$($(2)_TARGET_INSTALL_STAGING)
+			rm -f $$($(2)_TARGET_INSTALL_TARGET)
+			rm -f $$($(2)_TARGET_INSTALL_IMAGES)
+			rm -f $$($(2)_TARGET_INSTALL_HOST)
+
+$(1)-rebuild:		$(1)-clean-for-rebuild all
+
+$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild
+			rm -f $$($(2)_TARGET_CONFIGURE)
+
+$(1)-reconfigure:	$(1)-clean-for-reconfigure all
+
+# define the PKG variable for all targets, containing the
+# uppercase package variable prefix
+$$($(2)_TARGET_INSTALL_TARGET):		PKG=$(2)
+$$($(2)_TARGET_INSTALL_STAGING):	PKG=$(2)
+$$($(2)_TARGET_INSTALL_IMAGES):		PKG=$(2)
+$$($(2)_TARGET_INSTALL_HOST):           PKG=$(2)
+$$($(2)_TARGET_BUILD):			PKG=$(2)
+$$($(2)_TARGET_CONFIGURE):		PKG=$(2)
+$$($(2)_TARGET_RSYNC):                  SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
+$$($(2)_TARGET_RSYNC):                  PKG=$(2)
+$$($(2)_TARGET_RSYNC_SOURCE):		SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
+$$($(2)_TARGET_RSYNC_SOURCE):		PKG=$(2)
+$$($(2)_TARGET_PATCH):			PKG=$(2)
+$$($(2)_TARGET_PATCH):			RAWNAME=$(patsubst host-%,%,$(1))
+$$($(2)_TARGET_EXTRACT):		PKG=$(2)
+$$($(2)_TARGET_SOURCE):			PKG=$(2)
+$$($(2)_TARGET_UNINSTALL):		PKG=$(2)
+$$($(2)_TARGET_CLEAN):			PKG=$(2)
+$$($(2)_TARGET_DIRCLEAN):		PKG=$(2)
+
+# Compute the name of the Kconfig option that correspond to the
+# package being enabled. We handle three cases: the special Linux
+# kernel case, the bootloaders case, and the normal packages case.
+ifeq ($(1),linux)
+$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
+else ifeq ($(4),boot/)
+$(2)_KCONFIG_VAR = BR2_TARGET_$(2)
+else
+$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
+endif
+
+# add package to the general list of targets if requested by the buildroot
+# configuration
+ifeq ($$($$($(2)_KCONFIG_VAR)),y)
+
+TARGETS += $(1)
+PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
+PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)
+
+ifeq ($$($(2)_SITE_METHOD),svn)
+DL_TOOLS_DEPENDENCIES += svn
+else ifeq ($$($(2)_SITE_METHOD),git)
+DL_TOOLS_DEPENDENCIES += git
+else ifeq ($$($(2)_SITE_METHOD),bzr)
+DL_TOOLS_DEPENDENCIES += bzr
+else ifeq ($$($(2)_SITE_METHOD),scp)
+DL_TOOLS_DEPENDENCIES += scp ssh
+else ifeq ($$($(2)_SITE_METHOD),hg)
+DL_TOOLS_DEPENDENCIES += hg
+endif # SITE_METHOD
+
+DL_TOOLS_DEPENDENCIES += $(firstword $(INFLATE$(suffix $($(2)_SOURCE))))
+
+endif # $(2)_KCONFIG_VAR
+endef # GENTARGETS_INNER
+
+################################################################################
+# GENTARGETS -- the target generator macro for generic packages
+#
+# Argument 1 is "target" or "host"           [optional, default: "target"]
+################################################################################
+
+define GENTARGETS
+ifeq ($(1),host)
+# In the case of host packages, turn the package name "pkg" into "host-pkg"
+$(call GENTARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
+else
+# In the case of target packages, keep the package name "pkg"
+$(call GENTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
+endif
+endef
+
+# :mode=makefile:
diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
new file mode 100644
index 0000000..729f8bb
--- /dev/null
+++ b/package/pkg-utils.mk
@@ -0,0 +1,72 @@
+# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
+# hyphens to underscores
+
+# Heavily inspired by the up macro from gmsl (http://gmsl.sf.net)
+# This is approx 5 times faster than forking a shell and tr, and
+# as this macro is used a lot it matters
+# This works by creating translation character pairs (E.G. a:A b:B)
+# and then looping though all of them running $(subst from,to,text)
+[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z . -
+[TO]   := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _
+
+UPPERCASE = $(strip $(eval __tmp := $1) \
+     $(foreach c, $(join $(addsuffix :,$([FROM])),$([TO])), \
+	$(eval __tmp :=	\
+		$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),\
+			$(__tmp)))) \
+     $(__tmp))
+
+define KCONFIG_ENABLE_OPT
+       $(SED) "/\\<$(1)\\>/d" $(2)
+       echo "$(1)=y" >> $(2)
+endef
+
+define KCONFIG_SET_OPT
+       $(SED) "/\\<$(1)\\>/d" $(3)
+       echo "$(1)=$(2)" >> $(3)
+endef
+
+define KCONFIG_DISABLE_OPT
+       $(SED) "/\\<$(1)\\>/d" $(2)
+       echo "# $(1) is not set" >> $(2)
+endef
+
+# Helper functions to determine the name of a package and its
+# directory from its makefile directory, using the $(MAKEFILE_LIST)
+# variable provided by make. This is used by the *TARGETS macros to
+# automagically find where the package is located. Note that the
+# pkgdir macro is carefully written to handle the case of the Linux
+# package, for which the package directory is an empty string.
+define pkgdir
+$(dir $(lastword $(MAKEFILE_LIST)))
+endef
+
+define pkgname
+$(lastword $(subst /, ,$(call pkgdir)))
+endef
+
+define pkgparentdir
+$(patsubst %$(call pkgname)/,%,$(call pkgdir))
+endef
+
+# Define extractors for different archive suffixes
+INFLATE.bz2  = $(BZCAT)
+INFLATE.gz   = $(ZCAT)
+INFLATE.tbz  = $(BZCAT)
+INFLATE.tbz2 = $(BZCAT)
+INFLATE.tgz  = $(ZCAT)
+INFLATE.xz   = $(XZCAT)
+INFLATE.tar  = cat
+
+# MESSAGE Macro -- display a message in bold type
+MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESET)"
+TERM_BOLD := $(shell tput smso)
+TERM_RESET := $(shell tput rmso)
+
+
+# Needed for the foreach loops to loop over the list of hooks, so that
+# each hook call is properly separated by a newline.
+define sep
+
+
+endef
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 08/13] pkg-*.mk: add some comments, update some existing comments
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (6 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 07/13] Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:45   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 09/13] Remove unused .fakeroot.* mechanism Thomas Petazzoni
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/pkg-autotargets.mk |    4 +---
 package/pkg-download.mk    |    9 +++++++++
 package/pkg-gentargets.mk  |   10 ++++------
 package/pkg-utils.mk       |   13 +++++++++++++
 4 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/package/pkg-autotargets.mk b/package/pkg-autotargets.mk
index fd118dc..c9887c2 100644
--- a/package/pkg-autotargets.mk
+++ b/package/pkg-autotargets.mk
@@ -3,9 +3,7 @@
 #
 # This file implements an infrastructure that eases development of
 # package .mk files for autotools packages. It should be used for all
-# packages that use the autotools as their build system. Non-autotools
-# packages should use the generic infrastructure in
-# package/Makefile.package.in.
+# packages that use the autotools as their build system.
 #
 # See the Buildroot documentation for details on the usage of this
 # infrastructure
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index 7e25674..b58e12c 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -1,3 +1,12 @@
+############################################################################
+#
+# This file contains the download helpers for the various package
+# infrastructures. It is used to handle downloads from HTTP servers,
+# FTP servers, Git repositories, Subversion repositories, Mercurial
+# repositories, Bazaar repositories, and SCP servers.
+#
+############################################################################
+
 # Download method commands
 WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
 SVN:=$(call qstrip,$(BR2_SVN))
diff --git a/package/pkg-gentargets.mk b/package/pkg-gentargets.mk
index b8c437e..d693845 100644
--- a/package/pkg-gentargets.mk
+++ b/package/pkg-gentargets.mk
@@ -2,9 +2,10 @@
 # Generic package infrastructure
 #
 # This file implements an infrastructure that eases development of
-# package .mk files. It should be used for all non-autotools based
-# packages. Autotools-based packages should use the specialized
-# autotools infrastructure in package/Makefile.autotools.in.
+# package .mk files. It should be used for packages that do not rely
+# on a well-known build system for which Buildroot has a dedicated
+# infrastructure (so far, Buildroot has special support for
+# autotools-based and CMake-based packages).
 #
 # See the Buildroot documentation for details on the usage of this
 # infrastructure
@@ -17,9 +18,6 @@
 #
 #   2. Description of the commands to be executed to configure, build
 #      and install the package
-#
-# The autotools infrastructure specializes this generic infrastructure
-# by already implementing the configure, build and install steps.
 ################################################################################
 
 ################################################################################
diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
index 729f8bb..953dbc9 100644
--- a/package/pkg-utils.mk
+++ b/package/pkg-utils.mk
@@ -1,3 +1,10 @@
+############################################################################
+#
+# This file contains various utility functions used by the package
+# infrastructure, or by the packages themselves.
+#
+############################################################################
+
 # UPPERCASE Macro -- transform its argument to uppercase and replace dots and
 # hyphens to underscores
 
@@ -16,6 +23,12 @@ UPPERCASE = $(strip $(eval __tmp := $1) \
 			$(__tmp)))) \
      $(__tmp))
 
+#
+# Manipulation of .config files based on the Kconfig
+# infrastructure. Used by the Busybox package, the Linux kernel
+# package, and more.
+#
+
 define KCONFIG_ENABLE_OPT
        $(SED) "/\\<$(1)\\>/d" $(2)
        echo "$(1)=y" >> $(2)
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 09/13] Remove unused .fakeroot.* mechanism
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (7 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 08/13] pkg-*.mk: add some comments, update some existing comments Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:49   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk Thomas Petazzoni
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

There used to be a mechanism using which packages could leave a
.fakeroot.<something> file which could contain commands to be executed
within the fakeroot environment. Since this mechanism is no longer
used by any package, remove it from the common infrastructure.

The latest user was nfs-utils, which used this mechanism to do the
"make install" as root, since doing otherwise was not supported. But
since 16e7b8255c82815126a2c502c3787d442d254a86, nfs-utils has been
upgraded and converted to the package infrastructure, and this hack is
no longer necessary. Another past user was the ltp-testsuite package,
for the same reason, and since
a72a670489547a3ca645ff7c3a0d9c3fb66eab51, the fakeroot hack is no
longer needed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile              |    6 ------
 fs/common.mk          |    2 --
 fs/iso9660/iso9660.mk |    2 --
 3 files changed, 0 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile
index c3ff284..ab6cee1 100644
--- a/Makefile
+++ b/Makefile
@@ -301,8 +301,6 @@ endif
 
 include fs/common.mk
 
-TARGETS+=erase-fakeroots
-
 TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
 TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
 TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
@@ -391,7 +389,6 @@ $(BUILD_DIR)/.root:
 		if [ -d "$(TARGET_SKELETON)" ]; then \
 			cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
 		fi; \
-		touch $(STAGING_DIR)/.fakeroot.00000; \
 	fi
 	-find $(TARGET_DIR) -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
 	-find $(TARGET_DIR) -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
@@ -399,9 +396,6 @@ $(BUILD_DIR)/.root:
 
 $(TARGET_DIR): $(BUILD_DIR)/.root
 
-erase-fakeroots:
-	rm -f $(BUILD_DIR)/.fakeroot*
-
 target-finalize:
 ifeq ($(BR2_HAVE_DEVFILES),y)
 	( support/scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
diff --git a/fs/common.mk b/fs/common.mk
index d426f37..debf7db 100644
--- a/fs/common.mk
+++ b/fs/common.mk
@@ -45,8 +45,6 @@ $(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES)
 	@$(call MESSAGE,"Generating root filesystem image rootfs.$(1)")
 	$(foreach hook,$(ROOTFS_$(2)_PRE_GEN_HOOKS),$(call $(hook))$(sep))
 	rm -f $(FAKEROOT_SCRIPT)
-	touch $(BUILD_DIR)/.fakeroot.00000
-	cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT)
 	echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
 ifneq ($(ROOTFS_DEVICE_TABLES),)
 	cat $(ROOTFS_DEVICE_TABLES) > $(FULL_DEVICE_TABLE)
diff --git a/fs/iso9660/iso9660.mk b/fs/iso9660/iso9660.mk
index afebafc..f51b6ee 100644
--- a/fs/iso9660/iso9660.mk
+++ b/fs/iso9660/iso9660.mk
@@ -25,8 +25,6 @@ $(BINARIES_DIR)/rootfs.iso9660: host-cdrkit host-fakeroot linux rootfs-ext2 grub
 	cp $(BINARIES_DIR)/rootfs.ext2 $(ISO9660_TARGET_DIR)/initrd
 	# Use fakeroot to pretend all target binaries are owned by root
 	rm -f $(FAKEROOT_SCRIPT)
-	touch $(BUILD_DIR)/.fakeroot.00000
-	cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT)
 	echo "chown -R 0:0 $(ISO9660_TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
 	# Use fakeroot so mkisofs believes the previous fakery
 	echo "$(HOST_DIR)/usr/bin/genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot " \
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (8 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 09/13] Remove unused .fakeroot.* mechanism Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:50   ` Thomas De Schampheleire
  2012-03-10 11:56   ` Arnout Vandecappelle
  2012-03-07 19:34 ` [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk Thomas Petazzoni
                   ` (4 subsequent siblings)
  14 siblings, 2 replies; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile              |   49 +------------------------------------------------
 docs/manual/manual.mk |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 48 deletions(-)
 create mode 100644 docs/manual/manual.mk

diff --git a/Makefile b/Makefile
index ab6cee1..1986e33 100644
--- a/Makefile
+++ b/Makefile
@@ -679,54 +679,7 @@ release:
 	bzip2 -9 -c < $(OUT).tar > $(OUT).tar.bz2
 	rm -rf $(OUT) $(OUT).tar
 
-################################################################################
-# GENDOC -- generates the make targets needed to build a specific type of
-#           asciidoc documentation.
-#
-#  argument 1 is the name of the document and must be a subdirectory of docs/;
-#             the top-level asciidoc file must have the same name
-#  argument 2 is the type of document to generate (-f argument of a2x)
-#  argument 3 is the document type as used in the make target
-#  argument 4 is the output file extension for the document type
-#  argument 5 is the human text for the document type
-#  argument 6 (optional) are extra arguments for a2x
-#
-# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
-################################################################################
-define GENDOC_INNER
-$(1): $(1)-$(3)
-.PHONY: $(1)-$(3)
-$(1)-$(3): $$(O)/docs/$(1)/$(1).$(4)
-
-$$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt $$($(call UPPERCASE,$(1))_SOURCES)
-	@echo "Generating $(5) $(1)..."
-	$(Q)mkdir -p $$(@D)
-	$(Q)a2x $(6) -f $(2) -d book -L -r $(TOPDIR)/docs/images \
-	  -D $$(@D) $$<
-endef
-
-################################################################################
-# GENDOC -- generates the make targets needed to build asciidoc documentation.
-#
-#  argument 1 is the name of the document and must be a subdirectory of docs/;
-#             the top-level asciidoc file must have the same name
-#
-# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
-################################################################################
-define GENDOC
-$(call GENDOC_INNER,$(1),xhtml,html,html,HTML)
-$(call GENDOC_INNER,$(1),chunked,split-html,chunked,Split HTML)
-$(call GENDOC_INNER,$(1),pdf,pdf,pdf,PDF,--dblatex-opts "-P latex.output.revhistory=0")
-$(call GENDOC_INNER,$(1),text,txt,text,Text)
-$(call GENDOC_INNER,$(1),epub,epub,epub,EPUB)
-clean: clean-$(1)
-clean-$(1):
-	$(Q)$(RM) -rf $(O)/docs/$(1)
-.PHONY: $(1) clean-$(1)
-endef
-
-MANUAL_SOURCES = $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)
-$(eval $(call GENDOC,manual))
+include docs/manual/manual.mk
 
 .PHONY: $(noconfig_targets)
 
diff --git a/docs/manual/manual.mk b/docs/manual/manual.mk
new file mode 100644
index 0000000..1eaf73a
--- /dev/null
+++ b/docs/manual/manual.mk
@@ -0,0 +1,48 @@
+################################################################################
+# GENDOC -- generates the make targets needed to build a specific type of
+#           asciidoc documentation.
+#
+#  argument 1 is the name of the document and must be a subdirectory of docs/;
+#             the top-level asciidoc file must have the same name
+#  argument 2 is the type of document to generate (-f argument of a2x)
+#  argument 3 is the document type as used in the make target
+#  argument 4 is the output file extension for the document type
+#  argument 5 is the human text for the document type
+#  argument 6 (optional) are extra arguments for a2x
+#
+# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
+################################################################################
+define GENDOC_INNER
+$(1): $(1)-$(3)
+.PHONY: $(1)-$(3)
+$(1)-$(3): $$(O)/docs/$(1)/$(1).$(4)
+
+$$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt $$($(call UPPERCASE,$(1))_SOURCES)
+	@echo "Generating $(5) $(1)..."
+	$(Q)mkdir -p $$(@D)
+	$(Q)a2x $(6) -f $(2) -d book -L -r $(TOPDIR)/docs/images \
+	  -D $$(@D) $$<
+endef
+
+################################################################################
+# GENDOC -- generates the make targets needed to build asciidoc documentation.
+#
+#  argument 1 is the name of the document and must be a subdirectory of docs/;
+#             the top-level asciidoc file must have the same name
+#
+# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
+################################################################################
+define GENDOC
+$(call GENDOC_INNER,$(1),xhtml,html,html,HTML)
+$(call GENDOC_INNER,$(1),chunked,split-html,chunked,Split HTML)
+$(call GENDOC_INNER,$(1),pdf,pdf,pdf,PDF,--dblatex-opts "-P latex.output.revhistory=0")
+$(call GENDOC_INNER,$(1),text,txt,text,Text)
+$(call GENDOC_INNER,$(1),epub,epub,epub,EPUB)
+clean: clean-$(1)
+clean-$(1):
+	$(Q)$(RM) -rf $(O)/docs/$(1)
+.PHONY: $(1) clean-$(1)
+endef
+
+MANUAL_SOURCES = $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)
+$(eval $(call GENDOC,manual))
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (9 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:54   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 12/13] package: remove unused STRIP_DISCARD_ALL variable Thomas Petazzoni
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 Makefile                    |   17 -----------------
 package/pkg-cmaketargets.mk |   22 ++++++++++++++++++++++
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/Makefile b/Makefile
index 1986e33..ab91b10 100644
--- a/Makefile
+++ b/Makefile
@@ -339,23 +339,6 @@ prepare: $(BUILD_DIR)/buildroot-config/auto.conf
 
 world: prepare dirs dependencies $(BASE_TARGETS) $(TARGETS_ALL)
 
-$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake:
-	mkdir -p $(@D)
-	@echo -en "\
-	set(CMAKE_SYSTEM_NAME Linux)\n\
-	set(CMAKE_C_COMPILER $(TARGET_CC_NOCCACHE))\n\
-	set(CMAKE_CXX_COMPILER $(TARGET_CXX_NOCCACHE))\n\
-	set(CMAKE_C_FLAGS \"\$${CMAKE_C_FLAGS} $(TARGET_CFLAGS)\" CACHE STRING \"Buildroot CFLAGS\" FORCE)\n\
-	set(CMAKE_CXX_FLAGS \"\$${CMAKE_CXX_FLAGS} $(TARGET_CXXFLAGS)\" CACHE STRING \"Buildroot CXXFLAGS\" FORCE)\n\
-	set(CMAKE_INSTALL_SO_NO_EXE 0)\n\
-	set(CMAKE_PROGRAM_PATH \"$(HOST_DIR)/usr/bin\")\n\
-	set(CMAKE_FIND_ROOT_PATH \"$(STAGING_DIR)\")\n\
-	set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n\
-	set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n\
-	set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n\
-	set(ENV{PKG_CONFIG_SYSROOT_DIR} \"$(STAGING_DIR)\")\n\
-	" > $@
-
 .PHONY: all world dirs clean distclean source outputmakefile \
 	$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
 	$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
diff --git a/package/pkg-cmaketargets.mk b/package/pkg-cmaketargets.mk
index 1cd65e4..371ab11 100644
--- a/package/pkg-cmaketargets.mk
+++ b/package/pkg-cmaketargets.mk
@@ -197,3 +197,25 @@ else
 $(call CMAKETARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
 endif
 endef
+
+################################################################################
+# Generation of the CMake toolchain file
+################################################################################
+
+$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake:
+	@mkdir -p $(@D)
+	@echo -en "\
+	set(CMAKE_SYSTEM_NAME Linux)\n\
+	set(CMAKE_C_COMPILER $(TARGET_CC_NOCCACHE))\n\
+	set(CMAKE_CXX_COMPILER $(TARGET_CXX_NOCCACHE))\n\
+	set(CMAKE_C_FLAGS \"\$${CMAKE_C_FLAGS} $(TARGET_CFLAGS)\" CACHE STRING \"Buildroot CFLAGS\" FORCE)\n\
+	set(CMAKE_CXX_FLAGS \"\$${CMAKE_CXX_FLAGS} $(TARGET_CXXFLAGS)\" CACHE STRING \"Buildroot CXXFLAGS\" FORCE)\n\
+	set(CMAKE_INSTALL_SO_NO_EXE 0)\n\
+	set(CMAKE_PROGRAM_PATH \"$(HOST_DIR)/usr/bin\")\n\
+	set(CMAKE_FIND_ROOT_PATH \"$(STAGING_DIR)\")\n\
+	set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n\
+	set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n\
+	set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n\
+	set(ENV{PKG_CONFIG_SYSROOT_DIR} \"$(STAGING_DIR)\")\n\
+	" > $@
+
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 12/13] package: remove unused STRIP_DISCARD_ALL variable
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (10 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  6:56   ` Thomas De Schampheleire
  2012-03-07 19:34 ` [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk Thomas Petazzoni
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/package/Makefile.in b/package/Makefile.in
index 4f72864..29ba497 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -126,7 +126,6 @@ TARGET_CXX := $(CCACHE) $(TARGET_CXX)
 endif
 
 ifeq ($(BR2_STRIP_strip),y)
-STRIP_DISCARD_ALL:=--discard-all
 STRIP_STRIP_UNNEEDED:=--strip-unneeded
 STRIP_STRIP_ALL:=--strip-all
 TARGET_STRIP=$(TARGET_CROSS)strip
@@ -134,7 +133,6 @@ STRIPCMD=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
 KSTRIPCMD=$(STRIPCMD) $(STRIP_STRIP_UNNEEDED)
 endif
 ifeq ($(BR2_STRIP_sstrip),y)
-STRIP_DISCARD_ALL:=
 STRIP_STRIP_UNNEEDED:=
 STRIP_STRIP_ALL:=
 TARGET_STRIP=$(HOST_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-sstrip
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (11 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 12/13] package: remove unused STRIP_DISCARD_ALL variable Thomas Petazzoni
@ 2012-03-07 19:34 ` Thomas Petazzoni
  2012-03-09  7:01   ` Thomas De Schampheleire
  2012-03-09  7:06 ` [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas De Schampheleire
  2012-03-09 13:07 ` Alexandre Pereira da Silva
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-07 19:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 package/Makefile.in        |   73 --------------------------------------------
 package/pkg-autotargets.mk |   70 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 73 deletions(-)

diff --git a/package/Makefile.in b/package/Makefile.in
index 29ba497..a008fe7 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -223,79 +223,6 @@ HOST_MAKE_ENV=PATH=$(HOST_PATH) \
 		PKG_CONFIG_LIBDIR="$(HOST_DIR)/usr/lib/pkgconfig" \
 		PERLLIB="$(HOST_DIR)/usr/lib/perl"
 
-
-#######################################################################
-# settings we need to pass to configure
-
-# does unaligned access trap?
-BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=yes
-ifeq ($(BR2_i386),y)
-BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
-endif
-ifeq ($(BR2_x86_64),y)
-BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
-endif
-ifeq ($(BR2_m68k),y)
-BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
-endif
-ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG)
-BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
-endif
-
-ifeq ($(BR2_ENDIAN),"BIG")
-BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=yes
-else
-BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=no
-endif
-
-TARGET_CONFIGURE_ARGS= \
-	$(BR2_AC_CV_TRAP_CHECK) \
-	ac_cv_func_mmap_fixed_mapped=yes \
-	ac_cv_func_memcmp_working=yes \
-	ac_cv_have_decl_malloc=yes \
-	gl_cv_func_malloc_0_nonnull=yes \
-	ac_cv_func_malloc_0_nonnull=yes \
-	ac_cv_func_calloc_0_nonnull=yes \
-	ac_cv_func_realloc_0_nonnull=yes \
-	lt_cv_sys_lib_search_path_spec="" \
-	$(BR2_AC_CV_C_BIGENDIAN)
-
-#######################################################################
-
-ifeq ($(BR2_ENABLE_LOCALE),y)
-DISABLE_NLS:=
-else
-DISABLE_NLS:=--disable-nls
-endif
-
-ifneq ($(BR2_LARGEFILE),y)
-DISABLE_LARGEFILE= --disable-largefile
-endif
-
-ifneq ($(BR2_HAVE_DOCUMENTATION),y)
-DISABLE_DOCUMENTATION=--disable-gtk-doc
-endif
-
-ifneq ($(BR2_INET_IPV6),y)
-DISABLE_IPV6= --disable-ipv6
-endif
-
-ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
-TARGET_CONFIGURE_OPTS+=CXX=false
-endif
-
-ifeq ($(BR2_ENABLE_DEBUG),y)
-ENABLE_DEBUG:=--enable-debug
-else
-ENABLE_DEBUG:=
-endif
-
-ifeq ($(BR2_PREFER_STATIC_LIB),y)
-SHARED_STATIC_LIBS_OPTS=--enable-static --disable-shared
-else
-SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
-endif
-
 include package/pkg-utils.mk
 include package/pkg-download.mk
 include package/pkg-autotargets.mk
diff --git a/package/pkg-autotargets.mk b/package/pkg-autotargets.mk
index c9887c2..a1539bb 100644
--- a/package/pkg-autotargets.mk
+++ b/package/pkg-autotargets.mk
@@ -36,6 +36,76 @@ define CONFIG_UPDATE
 	done
 endef
 
+#
+# Calculate values of well-known settings for configure scripts
+#
+
+# does unaligned access trap?
+BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=yes
+ifeq ($(BR2_i386),y)
+BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
+else ifeq ($(BR2_x86_64),y)
+BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
+else ifeq ($(BR2_m68k),y)
+BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
+else ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG)
+BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
+endif
+
+ifeq ($(BR2_ENDIAN),"BIG")
+BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=yes
+else
+BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=no
+endif
+
+TARGET_CONFIGURE_ARGS= \
+	$(BR2_AC_CV_TRAP_CHECK) \
+	ac_cv_func_mmap_fixed_mapped=yes \
+	ac_cv_func_memcmp_working=yes \
+	ac_cv_have_decl_malloc=yes \
+	gl_cv_func_malloc_0_nonnull=yes \
+	ac_cv_func_malloc_0_nonnull=yes \
+	ac_cv_func_calloc_0_nonnull=yes \
+	ac_cv_func_realloc_0_nonnull=yes \
+	lt_cv_sys_lib_search_path_spec="" \
+	$(BR2_AC_CV_C_BIGENDIAN)
+
+# Calculate values of well-known configure script options
+
+ifeq ($(BR2_ENABLE_LOCALE),y)
+DISABLE_NLS:=
+else
+DISABLE_NLS:=--disable-nls
+endif
+
+ifneq ($(BR2_LARGEFILE),y)
+DISABLE_LARGEFILE= --disable-largefile
+endif
+
+ifneq ($(BR2_HAVE_DOCUMENTATION),y)
+DISABLE_DOCUMENTATION=--disable-gtk-doc
+endif
+
+ifneq ($(BR2_INET_IPV6),y)
+DISABLE_IPV6= --disable-ipv6
+endif
+
+ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
+TARGET_CONFIGURE_OPTS+=CXX=false
+endif
+
+ifeq ($(BR2_ENABLE_DEBUG),y)
+ENABLE_DEBUG:=--enable-debug
+else
+ENABLE_DEBUG:=
+endif
+
+ifeq ($(BR2_PREFER_STATIC_LIB),y)
+SHARED_STATIC_LIBS_OPTS=--enable-static --disable-shared
+else
+SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
+endif
+
 ################################################################################
 # AUTOTARGETS_INNER -- defines how the configuration, compilation and
 # installation of an autotools package should be done, implements a
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 01/13] Remove the DATE variable
  2012-03-07 19:34 ` [Buildroot] [PATCH 01/13] Remove the DATE variable Thomas Petazzoni
@ 2012-03-09  6:20   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:20 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> This variable was only used by uboot.mk to add a #define DATE into the
> U-Boot .h configuration file. But such a definition does not seem to
> be used by the mainline U-Boot, so there's no reason to keep it.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?Makefile ? ? ? ? ? ?| ? ?1 -
> ?boot/uboot/uboot.mk | ? ?1 -
> ?2 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index d508888..bfa82d2 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -39,7 +39,6 @@ endif
> ?TOPDIR:=$(shell pwd)
> ?CONFIG_CONFIG_IN=Config.in
> ?CONFIG=support/kconfig
> -DATE:=$(shell date +%Y%m%d)
>
> ?# Compute the full local version string so packages can use it as-is
> ?# Need to export it, so it can be got from environment in children (eg. mconf)
> diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
> index db9de8d..83696be 100644
> --- a/boot/uboot/uboot.mk
> +++ b/boot/uboot/uboot.mk
> @@ -69,7 +69,6 @@ define UBOOT_CONFIGURE_CMDS
> ? ? ? ?@echo "/* Add a wrapper around the values Buildroot sets. */" >> $(@D)/include/config.h
> ? ? ? ?@echo "#ifndef __BR2_ADDED_CONFIG_H" >> $(@D)/include/config.h
> ? ? ? ?@echo "#define __BR2_ADDED_CONFIG_H" >> $(@D)/include/config.h
> - ? ? ? $(call insert_define,DATE,$(DATE))
> ? ? ? ?$(call insert_define,CONFIG_LOAD_SCRIPTS,1)
> ? ? ? ?$(call insert_define,CONFIG_IPADDR,$(BR2_TARGET_UBOOT_IPADDR))
> ? ? ? ?$(call insert_define,CONFIG_GATEWAYIP,$(BR2_TARGET_UBOOT_GATEWAY))
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 02/13] Remove cc-option: not used anywhere
  2012-03-07 19:34 ` [Buildroot] [PATCH 02/13] Remove cc-option: not used anywhere Thomas Petazzoni
@ 2012-03-09  6:22   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:22 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?Makefile | ? ?7 -------
> ?1 files changed, 0 insertions(+), 7 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index bfa82d2..7cc2380 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -177,13 +177,6 @@ BUILD_DIR:=$(BASE_DIR)/build
>
> ?ifeq ($(BR2_HAVE_DOT_CONFIG),y)
>
> -# cc-option
> -# Usage: cflags-y+=$(call cc-option, -march=winchip-c6, -march=i586)
> -# sets -march=winchip-c6 if supported else falls back to -march=i586
> -# without checking the latter.
> -cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
> - ? ? ? > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
> -
> ?#############################################################
> ?#
> ?# Hide troublesome environment variables from sub processes
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 03/13] Remove filename extension crap for OS compatibility
  2012-03-07 19:34 ` [Buildroot] [PATCH 03/13] Remove filename extension crap for OS compatibility Thomas Petazzoni
@ 2012-03-09  6:27   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:27 UTC (permalink / raw)
  To: buildroot

Hi,

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> The only variable that is used is HOST_LOADLIBES, defined for the
> cygwin case in the kconfig build. Since we don't support cygwin,
> simply get rid of this.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?Makefile | ? 28 ----------------------------
> ?1 files changed, 0 insertions(+), 28 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 7cc2380..c3ff284 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -194,34 +194,6 @@ unexport CONFIG_SITE
>
> ?GNU_HOST_NAME:=$(shell support/gnuconfig/config.guess)
>
> -#############################################################
> -#
> -# Setup the proper filename extensions for the host
> -#
> -##############################################################
> -ifneq ($(findstring linux,$(GNU_HOST_NAME)),)
> -HOST_EXEEXT:=
> -HOST_LIBEXT:=.a
> -HOST_SHREXT:=.so
> -endif
> -ifneq ($(findstring apple,$(GNU_HOST_NAME)),)
> -HOST_EXEEXT:=
> -HOST_LIBEXT:=.a
> -HOST_SHREXT:=.dylib
> -endif
> -ifneq ($(findstring cygwin,$(GNU_HOST_NAME)),)
> -HOST_EXEEXT:=.exe
> -HOST_LIBEXT:=.lib
> -HOST_SHREXT:=.dll
> -HOST_LOADLIBES=-lcurses -lintl
> -export HOST_LOADLIBES
> -endif
> -ifneq ($(findstring mingw,$(GNU_HOST_NAME)),)
> -HOST_EXEEXT:=.exe
> -HOST_LIBEXT:=.lib
> -HOST_SHREXT:=.dll
> -endif
> -
> ?##############################################################
> ?#
> ?# The list of stuff to build for the target toolchain
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 04/13] kconfig: do not use HOST_LOADLIBES anymore
  2012-03-07 19:34 ` [Buildroot] [PATCH 04/13] kconfig: do not use HOST_LOADLIBES anymore Thomas Petazzoni
@ 2012-03-09  6:29   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:29 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?support/kconfig/Makefile.br ? ? ? ? ? ? ? ? ? ? ?| ? ?4 ++--
> ?support/kconfig/patches/10-br-build-system.patch | ? 12 ++++++------
> ?2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/support/kconfig/Makefile.br b/support/kconfig/Makefile.br
> index c24b6b5..2f8b6ba 100644
> --- a/support/kconfig/Makefile.br
> +++ b/support/kconfig/Makefile.br
> @@ -22,10 +22,10 @@ host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxx
> ?HOST_EXTRACFLAGS += -I$(obj)
>
> ?$(host-csingle): %: %.c
> - ? ? ? $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $(obj)/$@
> + ? ? ? $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@
>
> ?$(host-cmulti): %: $(host-cobjs) $(host-cshlib)
> - ? ? ? $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
> + ? ? ? $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
>
> ?$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
> ? ? ? ?$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
> diff --git a/support/kconfig/patches/10-br-build-system.patch b/support/kconfig/patches/10-br-build-system.patch
> index 85125e5..c5d9a75 100644
> --- a/support/kconfig/patches/10-br-build-system.patch
> +++ b/support/kconfig/patches/10-br-build-system.patch
> @@ -3,10 +3,10 @@
> ?foo.h ? ? ? | ? 12 ++++++++++++
> ?2 files changed, 65 insertions(+)
>
> -Index: config/Makefile.br
> +Index: kconfig/Makefile.br
> ?===================================================================
> ?--- /dev/null
> -+++ config/Makefile.br
> ++++ kconfig/Makefile.br
> ?@@ -0,0 +1,53 @@
> ?+src := .
> ?+top_srcdir=../../
> @@ -32,10 +32,10 @@ Index: config/Makefile.br
> ?+HOST_EXTRACFLAGS += -I$(obj)
> ?+
> ?+$(host-csingle): %: %.c
> -+ ? ? ?$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $(obj)/$@
> ++ ? ? ?$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@
> ?+
> ?+$(host-cmulti): %: $(host-cobjs) $(host-cshlib)
> -+ ? ? ?$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
> ++ ? ? ?$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
> ?+
> ?+$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
> ?+ ? ? ?$(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@
> @@ -61,10 +61,10 @@ Index: config/Makefile.br
> ?+
> ?+FORCE:
> ?+.PHONY: FORCE clean distclean
> -Index: config/foo.h
> +Index: kconfig/foo.h
> ?===================================================================
> ?--- /dev/null
> -+++ config/foo.h
> ++++ kconfig/foo.h
> ?@@ -0,0 +1,12 @@
> ?+#ifndef __KCONFIG_FOO_H
> ?+#define __KCONFIG_FOO_H
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk Thomas Petazzoni
@ 2012-03-09  6:35   ` Thomas De Schampheleire
  2012-03-09  7:51     ` Thomas Petazzoni
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:35 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?package/Makefile.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?.../{Makefile.autotools.in => pkg-autotargets.mk} ?| ? ?0
> ?2 files changed, 1 insertions(+), 1 deletions(-)
> ?rename package/{Makefile.autotools.in => pkg-autotargets.mk} (100%)
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index dc8d038..0a0f94d 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -298,6 +298,6 @@ else
> ?SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
> ?endif
>
> -include package/Makefile.autotools.in
> +include package/pkg-autotargets.mk
> ?include package/Makefile.cmake.in
> ?include package/Makefile.package.in
> diff --git a/package/Makefile.autotools.in b/package/pkg-autotargets.mk
> similarity index 100%
> rename from package/Makefile.autotools.in
> rename to package/pkg-autotargets.mk


In addition you should fix the comment

> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 06/13] Rename Makefile.cmake.in to pkg-cmaketargets.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 06/13] Rename Makefile.cmake.in to pkg-cmaketargets.mk Thomas Petazzoni
@ 2012-03-09  6:36   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:36 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?package/Makefile.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?package/{Makefile.cmake.in => pkg-cmaketargets.mk} | ? ?0
> ?2 files changed, 1 insertions(+), 1 deletions(-)
> ?rename package/{Makefile.cmake.in => pkg-cmaketargets.mk} (100%)
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 0a0f94d..5f0d00a 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -299,5 +299,5 @@ SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
> ?endif
>
> ?include package/pkg-autotargets.mk
> -include package/Makefile.cmake.in
> +include package/pkg-cmaketargets.mk
> ?include package/Makefile.package.in
> diff --git a/package/Makefile.cmake.in b/package/pkg-cmaketargets.mk
> similarity index 100%
> rename from package/Makefile.cmake.in
> rename to package/pkg-cmaketargets.mk
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 07/13] Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 07/13] Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk Thomas Petazzoni
@ 2012-03-09  6:40   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:40 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?package/Makefile.in ? ? ? ? | ? ?4 +-
> ?package/Makefile.package.in | ?746 -------------------------------------------
> ?package/pkg-download.mk ? ? | ?212 ++++++++++++
> ?package/pkg-gentargets.mk ? | ?458 ++++++++++++++++++++++++++
> ?package/pkg-utils.mk ? ? ? ?| ? 72 +++++
> ?5 files changed, 745 insertions(+), 747 deletions(-)
> ?delete mode 100644 package/Makefile.package.in
> ?create mode 100644 package/pkg-download.mk
> ?create mode 100644 package/pkg-gentargets.mk
> ?create mode 100644 package/pkg-utils.mk
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 5f0d00a..4f72864 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -298,6 +298,8 @@ else
> ?SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
> ?endif
>
> +include package/pkg-utils.mk
> +include package/pkg-download.mk
> ?include package/pkg-autotargets.mk
> ?include package/pkg-cmaketargets.mk
> -include package/Makefile.package.in
> +include package/pkg-gentargets.mk
> diff --git a/package/Makefile.package.in b/package/Makefile.package.in
> deleted file mode 100644
> index 59adce1..0000000
> --- a/package/Makefile.package.in
> +++ /dev/null
> @@ -1,746 +0,0 @@
> -################################################################################
> -# Generic package infrastructure
> -#
> -# This file implements an infrastructure that eases development of
> -# package .mk files. It should be used for all non-autotools based
> -# packages. Autotools-based packages should use the specialized
> -# autotools infrastructure in package/Makefile.autotools.in.
> -#
> -# See the Buildroot documentation for details on the usage of this
> -# infrastructure
> -#
> -# In terms of implementation, this generic infrastructure requires the
> -# .mk file to specify:
> -#
> -# ? 1. Metadata informations about the package: name, version,
> -# ? ? ?download URL, etc.
> -#
> -# ? 2. Description of the commands to be executed to configure, build
> -# ? ? ?and install the package
> -#
> -# The autotools infrastructure specializes this generic infrastructure
> -# by already implementing the configure, build and install steps.
> -################################################################################
> -
> -# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
> -# hyphens to underscores
> -
> -# Heavily inspired by the up macro from gmsl (http://gmsl.sf.net)
> -# This is approx 5 times faster than forking a shell and tr, and
> -# as this macro is used a lot it matters
> -# This works by creating translation character pairs (E.G. a:A b:B)
> -# and then looping though all of them running $(subst from,to,text)
> -[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z . -
> -[TO] ? := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _
> -
> -UPPERCASE = $(strip $(eval __tmp := $1) \
> - ? ? $(foreach c, $(join $(addsuffix :,$([FROM])),$([TO])), \
> - ? ? ? $(eval __tmp := \
> - ? ? ? ? ? ? ? $(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),\
> - ? ? ? ? ? ? ? ? ? ? ? $(__tmp)))) \
> - ? ? $(__tmp))
> -
> -define KCONFIG_ENABLE_OPT
> - ? ? ? $(SED) "/\\<$(1)\\>/d" $(2)
> - ? ? ? echo "$(1)=y" >> $(2)
> -endef
> -
> -define KCONFIG_SET_OPT
> - ? ? ? $(SED) "/\\<$(1)\\>/d" $(3)
> - ? ? ? echo "$(1)=$(2)" >> $(3)
> -endef
> -
> -define KCONFIG_DISABLE_OPT
> - ? ? ? $(SED) "/\\<$(1)\\>/d" $(2)
> - ? ? ? echo "# $(1) is not set" >> $(2)
> -endef
> -
> -# Helper functions to determine the name of a package and its
> -# directory from its makefile directory, using the $(MAKEFILE_LIST)
> -# variable provided by make. This is used by the *TARGETS macros to
> -# automagically find where the package is located. Note that the
> -# pkgdir macro is carefully written to handle the case of the Linux
> -# package, for which the package directory is an empty string.
> -define pkgdir
> -$(dir $(lastword $(MAKEFILE_LIST)))
> -endef
> -
> -define pkgname
> -$(lastword $(subst /, ,$(call pkgdir)))
> -endef
> -
> -define pkgparentdir
> -$(patsubst %$(call pkgname)/,%,$(call pkgdir))
> -endef
> -
> -# Define extractors for different archive suffixes
> -INFLATE.bz2 ?= $(BZCAT)
> -INFLATE.gz ? = $(ZCAT)
> -INFLATE.tbz ?= $(BZCAT)
> -INFLATE.tbz2 = $(BZCAT)
> -INFLATE.tgz ?= $(ZCAT)
> -INFLATE.xz ? = $(XZCAT)
> -INFLATE.tar ?= cat
> -
> -# MESSAGE Macro -- display a message in bold type
> -MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESET)"
> -TERM_BOLD := $(shell tput smso)
> -TERM_RESET := $(shell tput rmso)
> -
> -# Download method commands
> -WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
> -SVN:=$(call qstrip,$(BR2_SVN))
> -BZR:=$(call qstrip,$(BR2_BZR))
> -GIT:=$(call qstrip,$(BR2_GIT))
> -HG:=$(call qstrip,$(BR2_HG)) $(QUIET)
> -SCP:=$(call qstrip,$(BR2_SCP)) $(QUIET)
> -SSH:=$(call qstrip,$(BR2_SSH)) $(QUIET)
> -LOCALFILES:=$(call qstrip,$(BR2_LOCALFILES))
> -
> -# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
> -# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
> -# external-deps target.
> -DL_MODE=DOWNLOAD
> -
> -DL_DIR=$(call qstrip,$(BR2_DL_DIR))
> -ifeq ($(DL_DIR),)
> -DL_DIR:=$(TOPDIR)/dl
> -endif
> -
> -#
> -# URI scheme helper functions
> -# Example URIs:
> -# * http://www.example.com/dir/file
> -# * scp://www.example.com:dir/file (with domainseparator :)
> -#
> -# geturischeme: http
> -geturischeme=$(firstword $(subst ://, ,$(call qstrip,$(1))))
> -# stripurischeme: www.example.com/dir/file
> -stripurischeme=$(lastword $(subst ://, ,$(call qstrip,$(1))))
> -# domain: www.example.com
> -domain=$(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1))))
> -# notdomain: dir/file
> -notdomain=$(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1)))
> -#
> -# default domainseparator is /, specify alternative value as first argument
> -domainseparator=$(if $(1),$(1),/)
> -
> -################################################################################
> -# The DOWNLOAD_{GIT,SVN,BZR,HG,LOCALFILES} helpers are in charge of getting a
> -# working copy of the source repository for their corresponding SCM,
> -# checking out the requested version / commit / tag, and create an
> -# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with
> -# ssh authentication. DOWNLOAD_WGET is the normal wget-based download
> -# mechanism.
> -#
> -# The SOURCE_CHECK_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers are in charge of
> -# simply checking that the source is available for download. This can be used
> -# to make sure one will be able to get all the sources needed for
> -# one's build configuration.
> -#
> -# The SHOW_EXTERNAL_DEPS_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers simply
> -# output to the console the names of the files that will be downloaded, or path
> -# and revision of the source repositories, producing a list of all the
> -# "external dependencies" of a given build configuration.
> -################################################################################
> -
> -define DOWNLOAD_GIT
> - ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> - ? ? ? (pushd $(DL_DIR) > /dev/null && \
> - ? ? ? $(GIT) clone --bare $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
> - ? ? ? pushd $($(PKG)_BASE_NAME) > /dev/null && \
> - ? ? ? $(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
> - ? ? ? ? ? ? ? gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
> - ? ? ? popd > /dev/null && \
> - ? ? ? rm -rf $($(PKG)_DL_DIR) && \
> - ? ? ? popd > /dev/null)
> -endef
> -
> -# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
> -# repository
> -define SOURCE_CHECK_GIT
> - ?$(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_GIT
> - ? ? ? echo $($(PKG)_SOURCE)
> -endef
> -
> -
> -define DOWNLOAD_BZR
> - ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> - ? ? ? $(BZR) export $(DL_DIR)/$($(PKG)_SOURCE) $($(PKG)_SITE) -r $($(PKG)_DL_VERSION)
> -endef
> -
> -define SOURCE_CHECK_BZR
> - ? ? ? $(BZR) ls --quiet $($(PKG)_SITE) > /dev/null
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_BZR
> - ? ? ? echo $($(PKG)_SOURCE)
> -endef
> -
> -
> -define DOWNLOAD_SVN
> - ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> - ? ? ? (pushd $(DL_DIR) > /dev/null && \
> - ? ? ? $(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
> - ? ? ? $(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
> - ? ? ? rm -rf $($(PKG)_DL_DIR) && \
> - ? ? ? popd > /dev/null)
> -endef
> -
> -define SOURCE_CHECK_SVN
> - ?$(SVN) ls $($(PKG)_SITE) > /dev/null
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_SVN
> - ?echo $($(PKG)_SOURCE)
> -endef
> -
> -# SCP URIs should be of the form scp://[user@]host:filepath
> -# Note that filepath is relative to the user's home directory, so you may want
> -# to prepend the path with a slash: scp://[user@]host:/absolutepath
> -define DOWNLOAD_SCP
> - ? ? ? test -e $(DL_DIR)/$(2) || \
> - ? ? ? $(SCP) $(call stripurischeme,$(call qstrip,$(1)))/$(2) $(DL_DIR)
> -endef
> -
> -define SOURCE_CHECK_SCP
> - ? ? ? $(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1)/$(2),:) > /dev/null
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_SCP
> - ? ? ? echo $(2)
> -endef
> -
> -
> -define DOWNLOAD_HG
> - ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> - ? ? ? (pushd $(DL_DIR) > /dev/null && \
> - ? ? ? $(HG) clone --noupdate --rev $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
> - ? ? ? $(HG) archive --repository $($(PKG)_BASE_NAME) --type tgz --prefix $($(PKG)_BASE_NAME)/ \
> - ? ? ? ? ? ? ? ? ? ? --rev $($(PKG)_DL_VERSION) $(DL_DIR)/$($(PKG)_SOURCE) && \
> - ? ? ? rm -rf $($(PKG)_DL_DIR) && \
> - ? ? ? popd > /dev/null)
> -endef
> -
> -# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
> -# repository
> -define SOURCE_CHECK_HG
> - ?$(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_HG
> - ?echo $($(PKG)_SOURCE)
> -endef
> -
> -# Download a file using wget. Only download the file if it doesn't
> -# already exist in the download directory. If the download fails,
> -# remove the file (because wget -O creates a 0-byte file even if the
> -# download fails).
> -define DOWNLOAD_WGET
> - ? ? ? test -e $(DL_DIR)/$(2) || \
> - ? ? ? $(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1))/$(2) || \
> - ? ? ? (rm -f $(DL_DIR)/$(2) ; exit 1)
> -endef
> -
> -define SOURCE_CHECK_WGET
> - ?$(WGET) --spider $(call qstrip,$(1))/$(2)
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_WGET
> - ?echo $(2)
> -endef
> -
> -define DOWNLOAD_LOCALFILES
> - ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> - ? ? ? ? ? ? ? $(LOCALFILES) $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE) $(DL_DIR)
> -endef
> -
> -define SOURCE_CHECK_LOCALFILES
> - ?test -e $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE)
> -endef
> -
> -define SHOW_EXTERNAL_DEPS_LOCALFILES
> - ?echo $($(PKG)_SITE)/$($(PKG)_SOURCE)
> -endef
> -
> -################################################################################
> -# DOWNLOAD -- Download helper. Will try to download source from:
> -# 1) BR2_PRIMARY_SITE if enabled
> -# 2) Download site
> -# 3) BR2_BACKUP_SITE if enabled
> -#
> -# Argument 1 is the source location
> -# Argument 2 is the source filename
> -#
> -# E.G. use like this:
> -# $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE))
> -################################################################################
> -
> -define DOWNLOAD
> - ? ? ? $(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
> - ? ? ? ? ? ? ? case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
> - ? ? ? ? ? ? ? ? ? ? ? scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? *) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
> - ? ? ? ? ? ? ? esac ; \
> - ? ? ? fi ; \
> - ? ? ? if test -n "$(1)" ; then \
> - ? ? ? ? ? ? ? case "$($(PKG)_SITE_METHOD)" in \
> - ? ? ? ? ? ? ? ? ? ? ? git) $($(DL_MODE)_GIT) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? svn) $($(DL_MODE)_SVN) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? bzr) $($(DL_MODE)_BZR) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? file) $($(DL_MODE)_LOCALFILES) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? scp) $($(DL_MODE)_SCP) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? hg) $($(DL_MODE)_HG) && exit ;; \
> - ? ? ? ? ? ? ? ? ? ? ? *) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
> - ? ? ? ? ? ? ? esac ; \
> - ? ? ? fi ; \
> - ? ? ? if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
> - ? ? ? ? ? ? ? $(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
> - ? ? ? fi ; \
> - ? ? ? exit 1
> -endef
> -
> -# Needed for the foreach loops to loop over the list of hooks, so that
> -# each hook call is properly separated by a newline.
> -define sep
> -
> -
> -endef
> -
> -################################################################################
> -# Implicit targets -- produce a stamp file for each step of a package build
> -################################################################################
> -
> -# Retrieve the archive
> -$(BUILD_DIR)/%/.stamp_downloaded:
> -ifeq ($(DL_MODE),DOWNLOAD)
> -# Only show the download message if it isn't already downloaded
> - ? ? ? $(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
> - ? ? ? ? ? ? ? (test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
> - ? ? ? ? ? ? ? $(call MESSAGE,"Downloading")
> -endif
> - ? ? ? $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE)))
> - ? ? ? $(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
> - ? ? ? $(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
> -ifeq ($(DL_MODE),DOWNLOAD)
> - ? ? ? $(Q)mkdir -p $(@D)
> - ? ? ? $(Q)touch $@
> -endif
> -
> -# Unpack the archive
> -$(BUILD_DIR)/%/.stamp_extracted:
> - ? ? ? @$(call MESSAGE,"Extracting")
> - ? ? ? $(Q)mkdir -p $(@D)
> - ? ? ? $($(PKG)_EXTRACT_CMDS)
> -# some packages have messed up permissions inside
> - ? ? ? $(Q)chmod -R +rw $(@D)
> - ? ? ? $(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Rsync the source directory if the <pkg>_OVERRIDE_SRCDIR feature is
> -# used.
> -$(BUILD_DIR)/%/.stamp_rsynced:
> - ? ? ? @$(call MESSAGE,"Syncing from source dir $(SRCDIR)")
> - ? ? ? @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1)
> - ? ? ? rsync -au $(SRCDIR)/ $(@D)
> - ? ? ? $(Q)touch $@
> -
> -# Handle the SOURCE_CHECK and SHOW_EXTERNAL_DEPS cases for rsynced
> -# packages
> -$(BUILD_DIR)/%/.stamp_rsync_sourced:
> -ifeq ($(DL_MODE),SOURCE_CHECK)
> - ? ? ? test -d $(SRCDIR)
> -else ifeq ($(DL_MODE),SHOW_EXTERNAL_DEPS)
> - ? ? ? echo "file://$(SRCDIR)"
> -else
> - ? ? ? @true # Nothing to do to source a local package
> -endif
> -
> -# Patch
> -#
> -# The RAWNAME variable is the lowercased package name, which allows to
> -# find the package directory (typically package/<pkgname>) and the
> -# prefix of the patches
> -$(BUILD_DIR)/%/.stamp_patched: NAMEVER = $(RAWNAME)-$($(PKG)_VERSION)
> -$(BUILD_DIR)/%/.stamp_patched:
> - ? ? ? @$(call MESSAGE,"Patching $($(PKG)_DIR_PREFIX)/$(RAWNAME)")
> - ? ? ? $(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(if $($(PKG)_PATCH),support/scripts/apply-patches.sh $(@D) $(DL_DIR) $($(PKG)_PATCH))
> - ? ? ? $(Q)( \
> - ? ? ? if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME); then \
> - ? ? ? ? if test "$(wildcard $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER)*.patch*)"; then \
> - ? ? ? ? ? support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(NAMEVER)\*.patch $(NAMEVER)\*.patch.$(ARCH) || exit 1; \
> - ? ? ? ? else \
> - ? ? ? ? ? support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(RAWNAME)\*.patch $(RAWNAME)\*.patch.$(ARCH) || exit 1; \
> - ? ? ? ? ? if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER); then \
> - ? ? ? ? ? ? support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER) \*.patch \*.patch.$(ARCH) || exit 1; \
> - ? ? ? ? ? fi; \
> - ? ? ? ? fi; \
> - ? ? ? fi; \
> - ? ? ? )
> - ? ? ? $(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Configure
> -$(BUILD_DIR)/%/.stamp_configured:
> - ? ? ? $(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep))
> - ? ? ? @$(call MESSAGE,"Configuring")
> - ? ? ? $($(PKG)_CONFIGURE_CMDS)
> - ? ? ? $(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Build
> -$(BUILD_DIR)/%/.stamp_built::
> - ? ? ? @$(call MESSAGE,"Building")
> - ? ? ? $($(PKG)_BUILD_CMDS)
> - ? ? ? $(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Install to host dir
> -$(BUILD_DIR)/%/.stamp_host_installed:
> - ? ? ? @$(call MESSAGE,"Installing to host directory")
> - ? ? ? $($(PKG)_INSTALL_CMDS)
> - ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Install to staging dir
> -$(BUILD_DIR)/%/.stamp_staging_installed:
> - ? ? ? @$(call MESSAGE,"Installing to staging directory")
> - ? ? ? $($(PKG)_INSTALL_STAGING_CMDS)
> - ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Install to images dir
> -$(BUILD_DIR)/%/.stamp_images_installed:
> - ? ? ? @$(call MESSAGE,"Installing to images directory")
> - ? ? ? $($(PKG)_INSTALL_IMAGES_CMDS)
> - ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Install to target dir
> -$(BUILD_DIR)/%/.stamp_target_installed:
> - ? ? ? @$(call MESSAGE,"Installing to target")
> - ? ? ? $($(PKG)_INSTALL_TARGET_CMDS)
> - ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))
> - ? ? ? $(Q)touch $@
> -
> -# Clean package
> -$(BUILD_DIR)/%/.stamp_cleaned:
> - ? ? ? @$(call MESSAGE,"Cleaning up")
> - ? ? ? $($(PKG)_CLEAN_CMDS)
> - ? ? ? rm -f $(@D)/.stamp_built
> -
> -# Uninstall package from target and staging
> -# Uninstall commands tend to fail, so remove the stamp files first
> -$(BUILD_DIR)/%/.stamp_uninstalled:
> - ? ? ? @$(call MESSAGE,"Uninstalling")
> - ? ? ? rm -f $($(PKG)_TARGET_INSTALL_STAGING)
> - ? ? ? rm -f $($(PKG)_TARGET_INSTALL_TARGET)
> - ? ? ? $($(PKG)_UNINSTALL_STAGING_CMDS)
> - ? ? ? $($(PKG)_UNINSTALL_TARGET_CMDS)
> -
> -# Remove package sources
> -$(BUILD_DIR)/%/.stamp_dircleaned:
> - ? ? ? rm -Rf $(@D)
> -
> -################################################################################
> -# GENTARGETS_INNER -- generates the make targets needed to build a
> -# generic package
> -#
> -# ?argument 1 is the lowercase package name
> -# ?argument 2 is the uppercase package name, including an HOST_ prefix
> -# ? ? ? ? ? ? for host packages
> -# ?argument 3 is the uppercase package name, without the HOST_ prefix
> -# ? ? ? ? ? ? for host packages
> -# ?argument 4 is the package directory prefix
> -# ?argument 5 is the type (target or host)
> -################################################################################
> -
> -define GENTARGETS_INNER
> -
> -# Define default values for various package-related variables, if not
> -# already defined. For some variables (version, source, site and
> -# subdir), if they are undefined, we try to see if a variable without
> -# the HOST_ prefix is defined. If so, we use such a variable, so that
> -# these informations have only to be specified once, for both the
> -# target and host packages of a given .mk file.
> -
> -$(2)_TYPE ? ? ? ? ? ? ? ? ? ? ? = ?$(5)
> -$(2)_NAME ? ? ? ? ? ? ? ? ? ? ?= ?$(1)
> -
> -# Keep the package version that may contain forward slashes in the _DL_VERSION
> -# variable, then replace all forward slashes ('/') by underscores ('_') to
> -# sanitize the package version that is used in paths, directory and file names.
> -# Forward slashes may appear in the package's version when pointing to a
> -# version control system branch or tag, for example remotes/origin/1_10_stable.
> -ifndef $(2)_VERSION
> - ifdef $(3)_VERSION
> - ?$(2)_DL_VERSION = $($(3)_VERSION)
> - ?$(2)_VERSION = $(subst /,_,$($(3)_VERSION))
> - else
> - ?$(2)_VERSION = undefined
> - ?$(2)_DL_VERSION = undefined
> - endif
> -else
> - ?$(2)_DL_VERSION = $($(2)_VERSION)
> - ?$(2)_VERSION = $(subst /,_,$($(2)_VERSION))
> -endif
> -
> -$(2)_BASE_NAME = ?$(1)-$$($(2)_VERSION)
> -$(2)_DL_DIR ? ?= ?$$(DL_DIR)/$$($(2)_BASE_NAME)
> -$(2)_DIR ? ? ? = ?$$(BUILD_DIR)/$$($(2)_BASE_NAME)
> -
> -ifneq ($$($(2)_OVERRIDE_SRCDIR),)
> -$(2)_VERSION = custom
> -endif
> -
> -ifndef $(2)_SOURCE
> - ifdef $(3)_SOURCE
> - ?$(2)_SOURCE = $($(3)_SOURCE)
> - else
> - ?$(2)_SOURCE ? ? ? ? ? ? ? ? ??= $$($(2)_BASE_NAME).tar.gz
> - endif
> -endif
> -
> -ifndef $(2)_PATCH
> - ifdef $(3)_PATCH
> - ?$(2)_PATCH = $($(3)_PATCH)
> - endif
> -endif
> -
> -ifndef $(2)_SITE
> - ifdef $(3)_SITE
> - ?$(2)_SITE = $($(3)_SITE)
> - else
> - ?$(2)_SITE ? ? ? ? ? ? ? ? ? ??= \
> - ? ? ? http://$$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/$(1)
> - endif
> -endif
> -
> -ifndef $(2)_SITE_METHOD
> - ifdef $(3)_SITE_METHOD
> - ?$(2)_SITE_METHOD = $($(3)_SITE_METHOD)
> - else
> - ? ? ? # Try automatic detection using the scheme part of the URI
> - ? ? ? $(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call qstrip,$($(2)_SITE))))
> - endif
> -endif
> -
> -ifeq ($$($(2)_SITE_METHOD),local)
> -ifeq ($$($(2)_OVERRIDE_SRCDIR),)
> -$(2)_OVERRIDE_SRCDIR = $($(2)_SITE)
> -endif
> -endif
> -
> -$(2)_DEPENDENCIES ?= $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))
> -
> -$(2)_INSTALL_STAGING ? ? ? ? ? ?= NO
> -$(2)_INSTALL_IMAGES ? ? ? ? ? ??= NO
> -$(2)_INSTALL_TARGET ? ? ? ? ? ??= YES
> -$(2)_DIR_PREFIX ? ? ? ? ? ? ? ? ? ? ? ?= $(if $(4),$(4),$(TOP_SRCDIR)/package)
> -
> -# define sub-target stamps
> -$(2)_TARGET_INSTALL_TARGET = ? $$($(2)_DIR)/.stamp_target_installed
> -$(2)_TARGET_INSTALL_STAGING = ?$$($(2)_DIR)/.stamp_staging_installed
> -$(2)_TARGET_INSTALL_IMAGES = ? $$($(2)_DIR)/.stamp_images_installed
> -$(2)_TARGET_INSTALL_HOST = ? ? ?$$($(2)_DIR)/.stamp_host_installed
> -$(2)_TARGET_BUILD = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_built
> -$(2)_TARGET_CONFIGURE = ? ? ? ? ? ? ? ?$$($(2)_DIR)/.stamp_configured
> -$(2)_TARGET_RSYNC = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_rsynced
> -$(2)_TARGET_RSYNC_SOURCE = ? ? ?$$($(2)_DIR)/.stamp_rsync_sourced
> -$(2)_TARGET_PATCH = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_patched
> -$(2)_TARGET_EXTRACT = ? ? ? ? ?$$($(2)_DIR)/.stamp_extracted
> -$(2)_TARGET_SOURCE = ? ? ? ? ? $$($(2)_DIR)/.stamp_downloaded
> -$(2)_TARGET_UNINSTALL = ? ? ? ? ? ? ? ?$$($(2)_DIR)/.stamp_uninstalled
> -$(2)_TARGET_CLEAN = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_cleaned
> -$(2)_TARGET_DIRCLEAN = ? ? ? ? $$($(2)_DIR)/.stamp_dircleaned
> -
> -# default extract command
> -$(2)_EXTRACT_CMDS ?= \
> - ? ? ? $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
> - ? ? ? $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
> -
> -# post-steps hooks
> -$(2)_POST_DOWNLOAD_HOOKS ? ? ? ??=
> -$(2)_POST_EXTRACT_HOOKS ? ? ? ? ?=
> -$(2)_PRE_PATCH_HOOKS ? ? ? ? ? ??=
> -$(2)_POST_PATCH_HOOKS ? ? ? ? ? ?=
> -$(2)_PRE_CONFIGURE_HOOKS ? ? ? ??=
> -$(2)_POST_CONFIGURE_HOOKS ? ? ? ?=
> -$(2)_POST_BUILD_HOOKS ? ? ? ? ? ?=
> -$(2)_POST_INSTALL_HOOKS ? ? ? ? ?=
> -$(2)_POST_INSTALL_STAGING_HOOKS ?=
> -$(2)_POST_INSTALL_TARGET_HOOKS ??=
> -$(2)_POST_INSTALL_IMAGES_HOOKS ??=
> -
> -# human-friendly targets and target sequencing
> -$(1): ? ? ? ? ? ? ? ? ?$(1)-install
> -
> -ifeq ($$($(2)_TYPE),host)
> -$(1)-install: ? ? ? ? ?$(1)-install-host
> -else
> -$(1)-install: ? ? ? ? ?$(1)-install-staging $(1)-install-target $(1)-install-images
> -endif
> -
> -ifeq ($$($(2)_INSTALL_TARGET),YES)
> -$(1)-install-target: ? $(1)-build \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_INSTALL_TARGET)
> -else
> -$(1)-install-target:
> -endif
> -
> -ifeq ($$($(2)_INSTALL_STAGING),YES)
> -$(1)-install-staging: ?$(1)-build \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_INSTALL_STAGING)
> -else
> -$(1)-install-staging:
> -endif
> -
> -ifeq ($$($(2)_INSTALL_IMAGES),YES)
> -$(1)-install-images: ? $(1)-build \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_INSTALL_IMAGES)
> -else
> -$(1)-install-images:
> -endif
> -
> -$(1)-install-host: ? ? ?$(1)-build $$($(2)_TARGET_INSTALL_HOST)
> -
> -$(1)-build: ? ? ? ? ? ?$(1)-configure \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_BUILD)
> -
> -ifeq ($$($(2)_OVERRIDE_SRCDIR),)
> -# In the normal case (no package override), the sequence of steps is
> -# ?source, by downloading
> -# ?depends
> -# ?extract
> -# ?patch
> -# ?configure
> -$(1)-configure: ? ? ? ? ? ? ? ?$(1)-patch $(1)-depends \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_CONFIGURE)
> -
> -$(1)-patch: ? ? ? ? ? ?$(1)-extract $$($(2)_TARGET_PATCH)
> -
> -$(1)-extract: ? ? ? ? ?$(1)-source \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_EXTRACT)
> -
> -$(1)-depends: ? ? ? ? ?$$($(2)_DEPENDENCIES)
> -
> -$(1)-source: ? ? ? ? ? $$($(2)_TARGET_SOURCE)
> -else
> -# In the package override case, the sequence of steps
> -# ?source, by rsyncing
> -# ?depends
> -# ?configure
> -$(1)-configure: ? ? ? ? ? ? ? ?$(1)-depends \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_CONFIGURE)
> -
> -$(1)-depends: ? ? ? ? ?$(1)-rsync $$($(2)_DEPENDENCIES)
> -
> -$(1)-rsync: ? ? ? ? ? ?$$($(2)_TARGET_RSYNC)
> -
> -$(1)-source: ? ? ? ? ? $$($(2)_TARGET_RSYNC_SOURCE)
> -endif
> -
> -$(1)-show-depends:
> - ? ? ? ? ? ? ? ? ? ? ? @echo $$($(2)_DEPENDENCIES)
> -
> -$(1)-uninstall: ? ? ? ? ? ? ? ?$(1)-configure $$($(2)_TARGET_UNINSTALL)
> -
> -$(1)-clean: ? ? ? ? ? ?$(1)-uninstall \
> - ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_CLEAN)
> -
> -$(1)-dirclean: ? ? ? ? $$($(2)_TARGET_DIRCLEAN)
> -
> -$(1)-clean-for-rebuild:
> -ifneq ($$($(2)_OVERRIDE_SRCDIR),)
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_RSYNC)
> -endif
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_BUILD)
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_STAGING)
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_TARGET)
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_IMAGES)
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_HOST)
> -
> -$(1)-rebuild: ? ? ? ? ?$(1)-clean-for-rebuild all
> -
> -$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild
> - ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_CONFIGURE)
> -
> -$(1)-reconfigure: ? ? ?$(1)-clean-for-reconfigure all
> -
> -# define the PKG variable for all targets, containing the
> -# uppercase package variable prefix
> -$$($(2)_TARGET_INSTALL_TARGET): ? ? ? ? ? ? ? ?PKG=$(2)
> -$$($(2)_TARGET_INSTALL_STAGING): ? ? ? PKG=$(2)
> -$$($(2)_TARGET_INSTALL_IMAGES): ? ? ? ? ? ? ? ?PKG=$(2)
> -$$($(2)_TARGET_INSTALL_HOST): ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_BUILD): ? ? ? ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_CONFIGURE): ? ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_RSYNC): ? ? ? ? ? ? ? ? ?SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> -$$($(2)_TARGET_RSYNC): ? ? ? ? ? ? ? ? ?PKG=$(2)
> -$$($(2)_TARGET_RSYNC_SOURCE): ? ? ? ? ?SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> -$$($(2)_TARGET_RSYNC_SOURCE): ? ? ? ? ?PKG=$(2)
> -$$($(2)_TARGET_PATCH): ? ? ? ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_PATCH): ? ? ? ? ? ? ? ? RAWNAME=$(patsubst host-%,%,$(1))
> -$$($(2)_TARGET_EXTRACT): ? ? ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_SOURCE): ? ? ? ? ? ? ? ? ? ? ? ?PKG=$(2)
> -$$($(2)_TARGET_UNINSTALL): ? ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_CLEAN): ? ? ? ? ? ? ? ? PKG=$(2)
> -$$($(2)_TARGET_DIRCLEAN): ? ? ? ? ? ? ?PKG=$(2)
> -
> -# Compute the name of the Kconfig option that correspond to the
> -# package being enabled. We handle three cases: the special Linux
> -# kernel case, the bootloaders case, and the normal packages case.
> -ifeq ($(1),linux)
> -$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
> -else ifeq ($(4),boot/)
> -$(2)_KCONFIG_VAR = BR2_TARGET_$(2)
> -else
> -$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
> -endif
> -
> -# add package to the general list of targets if requested by the buildroot
> -# configuration
> -ifeq ($$($$($(2)_KCONFIG_VAR)),y)
> -
> -TARGETS += $(1)
> -PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
> -PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)
> -
> -ifeq ($$($(2)_SITE_METHOD),svn)
> -DL_TOOLS_DEPENDENCIES += svn
> -else ifeq ($$($(2)_SITE_METHOD),git)
> -DL_TOOLS_DEPENDENCIES += git
> -else ifeq ($$($(2)_SITE_METHOD),bzr)
> -DL_TOOLS_DEPENDENCIES += bzr
> -else ifeq ($$($(2)_SITE_METHOD),scp)
> -DL_TOOLS_DEPENDENCIES += scp ssh
> -else ifeq ($$($(2)_SITE_METHOD),hg)
> -DL_TOOLS_DEPENDENCIES += hg
> -endif # SITE_METHOD
> -
> -DL_TOOLS_DEPENDENCIES += $(firstword $(INFLATE$(suffix $($(2)_SOURCE))))
> -
> -endif # $(2)_KCONFIG_VAR
> -endef # GENTARGETS_INNER
> -
> -################################################################################
> -# GENTARGETS -- the target generator macro for generic packages
> -#
> -# Argument 1 is "target" or "host" ? ? ? ? ? [optional, default: "target"]
> -################################################################################
> -
> -define GENTARGETS
> -ifeq ($(1),host)
> -# In the case of host packages, turn the package name "pkg" into "host-pkg"
> -$(call GENTARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
> -else
> -# In the case of target packages, keep the package name "pkg"
> -$(call GENTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
> -endif
> -endef
> -
> -# :mode=makefile:
> diff --git a/package/pkg-download.mk b/package/pkg-download.mk
> new file mode 100644
> index 0000000..7e25674
> --- /dev/null
> +++ b/package/pkg-download.mk
> @@ -0,0 +1,212 @@
> +# Download method commands
> +WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
> +SVN:=$(call qstrip,$(BR2_SVN))
> +BZR:=$(call qstrip,$(BR2_BZR))
> +GIT:=$(call qstrip,$(BR2_GIT))
> +HG:=$(call qstrip,$(BR2_HG)) $(QUIET)
> +SCP:=$(call qstrip,$(BR2_SCP)) $(QUIET)
> +SSH:=$(call qstrip,$(BR2_SSH)) $(QUIET)
> +LOCALFILES:=$(call qstrip,$(BR2_LOCALFILES))
> +
> +# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
> +# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
> +# external-deps target.
> +DL_MODE=DOWNLOAD
> +
> +DL_DIR=$(call qstrip,$(BR2_DL_DIR))
> +ifeq ($(DL_DIR),)
> +DL_DIR:=$(TOPDIR)/dl
> +endif
> +
> +#
> +# URI scheme helper functions
> +# Example URIs:
> +# * http://www.example.com/dir/file
> +# * scp://www.example.com:dir/file (with domainseparator :)
> +#
> +# geturischeme: http
> +geturischeme=$(firstword $(subst ://, ,$(call qstrip,$(1))))
> +# stripurischeme: www.example.com/dir/file
> +stripurischeme=$(lastword $(subst ://, ,$(call qstrip,$(1))))
> +# domain: www.example.com
> +domain=$(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1))))
> +# notdomain: dir/file
> +notdomain=$(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1)))
> +#
> +# default domainseparator is /, specify alternative value as first argument
> +domainseparator=$(if $(1),$(1),/)
> +
> +################################################################################
> +# The DOWNLOAD_{GIT,SVN,BZR,HG,LOCALFILES} helpers are in charge of getting a
> +# working copy of the source repository for their corresponding SCM,
> +# checking out the requested version / commit / tag, and create an
> +# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with
> +# ssh authentication. DOWNLOAD_WGET is the normal wget-based download
> +# mechanism.
> +#
> +# The SOURCE_CHECK_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers are in charge of
> +# simply checking that the source is available for download. This can be used
> +# to make sure one will be able to get all the sources needed for
> +# one's build configuration.
> +#
> +# The SHOW_EXTERNAL_DEPS_{GIT,SVN,BZR,HG,WGET,LOCALFILES,SCP} helpers simply
> +# output to the console the names of the files that will be downloaded, or path
> +# and revision of the source repositories, producing a list of all the
> +# "external dependencies" of a given build configuration.
> +################################################################################
> +
> +define DOWNLOAD_GIT
> + ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> + ? ? ? (pushd $(DL_DIR) > /dev/null && \
> + ? ? ? $(GIT) clone --bare $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
> + ? ? ? pushd $($(PKG)_BASE_NAME) > /dev/null && \
> + ? ? ? $(GIT) archive --format=tar --prefix=$($(PKG)_BASE_NAME)/ $($(PKG)_DL_VERSION) | \
> + ? ? ? ? ? ? ? gzip -c > $(DL_DIR)/$($(PKG)_SOURCE) && \
> + ? ? ? popd > /dev/null && \
> + ? ? ? rm -rf $($(PKG)_DL_DIR) && \
> + ? ? ? popd > /dev/null)
> +endef
> +
> +# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
> +# repository
> +define SOURCE_CHECK_GIT
> + ?$(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_GIT
> + ? ? ? echo $($(PKG)_SOURCE)
> +endef
> +
> +
> +define DOWNLOAD_BZR
> + ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> + ? ? ? $(BZR) export $(DL_DIR)/$($(PKG)_SOURCE) $($(PKG)_SITE) -r $($(PKG)_DL_VERSION)
> +endef
> +
> +define SOURCE_CHECK_BZR
> + ? ? ? $(BZR) ls --quiet $($(PKG)_SITE) > /dev/null
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_BZR
> + ? ? ? echo $($(PKG)_SOURCE)
> +endef
> +
> +
> +define DOWNLOAD_SVN
> + ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> + ? ? ? (pushd $(DL_DIR) > /dev/null && \
> + ? ? ? $(SVN) export -r $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_DL_DIR) && \
> + ? ? ? $(TAR) czf $($(PKG)_SOURCE) $($(PKG)_BASE_NAME)/ && \
> + ? ? ? rm -rf $($(PKG)_DL_DIR) && \
> + ? ? ? popd > /dev/null)
> +endef
> +
> +define SOURCE_CHECK_SVN
> + ?$(SVN) ls $($(PKG)_SITE) > /dev/null
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_SVN
> + ?echo $($(PKG)_SOURCE)
> +endef
> +
> +# SCP URIs should be of the form scp://[user@]host:filepath
> +# Note that filepath is relative to the user's home directory, so you may want
> +# to prepend the path with a slash: scp://[user@]host:/absolutepath
> +define DOWNLOAD_SCP
> + ? ? ? test -e $(DL_DIR)/$(2) || \
> + ? ? ? $(SCP) $(call stripurischeme,$(call qstrip,$(1)))/$(2) $(DL_DIR)
> +endef
> +
> +define SOURCE_CHECK_SCP
> + ? ? ? $(SSH) $(call domain,$(1),:) ls $(call notdomain,$(1)/$(2),:) > /dev/null
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_SCP
> + ? ? ? echo $(2)
> +endef
> +
> +
> +define DOWNLOAD_HG
> + ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> + ? ? ? (pushd $(DL_DIR) > /dev/null && \
> + ? ? ? $(HG) clone --noupdate --rev $($(PKG)_DL_VERSION) $($(PKG)_SITE) $($(PKG)_BASE_NAME) && \
> + ? ? ? $(HG) archive --repository $($(PKG)_BASE_NAME) --type tgz --prefix $($(PKG)_BASE_NAME)/ \
> + ? ? ? ? ? ? ? ? ? ? --rev $($(PKG)_DL_VERSION) $(DL_DIR)/$($(PKG)_SOURCE) && \
> + ? ? ? rm -rf $($(PKG)_DL_DIR) && \
> + ? ? ? popd > /dev/null)
> +endef
> +
> +# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
> +# repository
> +define SOURCE_CHECK_HG
> + ?$(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_HG
> + ?echo $($(PKG)_SOURCE)
> +endef
> +
> +
> +define DOWNLOAD_WGET
> + ? ? ? test -e $(DL_DIR)/$(2) || \
> + ? ? ? $(WGET) -O $(DL_DIR)/$(2) $(call qstrip,$(1))/$(2) || \
> + ? ? ? (rm -f $(DL_DIR)/$(2) ; exit 1)
> +endef
> +
> +define SOURCE_CHECK_WGET
> + ?$(WGET) --spider $(call qstrip,$(1))/$(2)
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_WGET
> + ?echo $(2)
> +endef
> +
> +define DOWNLOAD_LOCALFILES
> + ? ? ? test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
> + ? ? ? ? ? ? ? $(LOCALFILES) $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE) $(DL_DIR)
> +endef
> +
> +define SOURCE_CHECK_LOCALFILES
> + ?test -e $(call qstrip,$(subst file://,,$($(PKG)_SITE)))/$($(PKG)_SOURCE)
> +endef
> +
> +define SHOW_EXTERNAL_DEPS_LOCALFILES
> + ?echo $($(PKG)_SITE)/$($(PKG)_SOURCE)
> +endef
> +
> +################################################################################
> +# DOWNLOAD -- Download helper. Will try to download source from:
> +# 1) BR2_PRIMARY_SITE if enabled
> +# 2) Download site
> +# 3) BR2_BACKUP_SITE if enabled
> +#
> +# Argument 1 is the source location
> +# Argument 2 is the source filename
> +#
> +# E.G. use like this:
> +# $(call DOWNLOAD,$(FOO_SITE),$(FOO_SOURCE))
> +################################################################################
> +
> +define DOWNLOAD
> + ? ? ? $(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
> + ? ? ? ? ? ? ? case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
> + ? ? ? ? ? ? ? ? ? ? ? scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? *) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE),$(2)) && exit ;; \
> + ? ? ? ? ? ? ? esac ; \
> + ? ? ? fi ; \
> + ? ? ? if test -n "$(1)" ; then \
> + ? ? ? ? ? ? ? case "$($(PKG)_SITE_METHOD)" in \
> + ? ? ? ? ? ? ? ? ? ? ? git) $($(DL_MODE)_GIT) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? svn) $($(DL_MODE)_SVN) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? bzr) $($(DL_MODE)_BZR) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? file) $($(DL_MODE)_LOCALFILES) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? scp) $($(DL_MODE)_SCP) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? hg) $($(DL_MODE)_HG) && exit ;; \
> + ? ? ? ? ? ? ? ? ? ? ? *) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
> + ? ? ? ? ? ? ? esac ; \
> + ? ? ? fi ; \
> + ? ? ? if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
> + ? ? ? ? ? ? ? $(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE),$(2)) && exit ; \
> + ? ? ? fi ; \
> + ? ? ? exit 1
> +endef
> diff --git a/package/pkg-gentargets.mk b/package/pkg-gentargets.mk
> new file mode 100644
> index 0000000..b8c437e
> --- /dev/null
> +++ b/package/pkg-gentargets.mk
> @@ -0,0 +1,458 @@
> +################################################################################
> +# Generic package infrastructure
> +#
> +# This file implements an infrastructure that eases development of
> +# package .mk files. It should be used for all non-autotools based
> +# packages. Autotools-based packages should use the specialized
> +# autotools infrastructure in package/Makefile.autotools.in.
> +#
> +# See the Buildroot documentation for details on the usage of this
> +# infrastructure
> +#
> +# In terms of implementation, this generic infrastructure requires the
> +# .mk file to specify:
> +#
> +# ? 1. Metadata informations about the package: name, version,
> +# ? ? ?download URL, etc.
> +#
> +# ? 2. Description of the commands to be executed to configure, build
> +# ? ? ?and install the package
> +#
> +# The autotools infrastructure specializes this generic infrastructure
> +# by already implementing the configure, build and install steps.
> +################################################################################
> +
> +################################################################################
> +# Implicit targets -- produce a stamp file for each step of a package build
> +################################################################################
> +
> +# Retrieve the archive
> +$(BUILD_DIR)/%/.stamp_downloaded:
> +ifeq ($(DL_MODE),DOWNLOAD)
> +# Only show the download message if it isn't already downloaded
> + ? ? ? $(Q)(test -e $(DL_DIR)/$($(PKG)_SOURCE) && \
> + ? ? ? ? ? ? ? (test -z $($(PKG)_PATCH) || test -e $(DL_DIR)$($(PKG)_PATCH))) || \
> + ? ? ? ? ? ? ? $(call MESSAGE,"Downloading")
> +endif
> + ? ? ? $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_SOURCE)))
> + ? ? ? $(if $($(PKG)_PATCH),$(call DOWNLOAD,$($(PKG)_SITE),$($(PKG)_PATCH)))
> + ? ? ? $(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
> +ifeq ($(DL_MODE),DOWNLOAD)
> + ? ? ? $(Q)mkdir -p $(@D)
> + ? ? ? $(Q)touch $@
> +endif
> +
> +# Unpack the archive
> +$(BUILD_DIR)/%/.stamp_extracted:
> + ? ? ? @$(call MESSAGE,"Extracting")
> + ? ? ? $(Q)mkdir -p $(@D)
> + ? ? ? $($(PKG)_EXTRACT_CMDS)
> +# some packages have messed up permissions inside
> + ? ? ? $(Q)chmod -R +rw $(@D)
> + ? ? ? $(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Rsync the source directory if the <pkg>_OVERRIDE_SRCDIR feature is
> +# used.
> +$(BUILD_DIR)/%/.stamp_rsynced:
> + ? ? ? @$(call MESSAGE,"Syncing from source dir $(SRCDIR)")
> + ? ? ? @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1)
> + ? ? ? rsync -au $(SRCDIR)/ $(@D)
> + ? ? ? $(Q)touch $@
> +
> +# Handle the SOURCE_CHECK and SHOW_EXTERNAL_DEPS cases for rsynced
> +# packages
> +$(BUILD_DIR)/%/.stamp_rsync_sourced:
> +ifeq ($(DL_MODE),SOURCE_CHECK)
> + ? ? ? test -d $(SRCDIR)
> +else ifeq ($(DL_MODE),SHOW_EXTERNAL_DEPS)
> + ? ? ? echo "file://$(SRCDIR)"
> +else
> + ? ? ? @true # Nothing to do to source a local package
> +endif
> +
> +# Patch
> +#
> +# The RAWNAME variable is the lowercased package name, which allows to
> +# find the package directory (typically package/<pkgname>) and the
> +# prefix of the patches
> +$(BUILD_DIR)/%/.stamp_patched: NAMEVER = $(RAWNAME)-$($(PKG)_VERSION)
> +$(BUILD_DIR)/%/.stamp_patched:
> + ? ? ? @$(call MESSAGE,"Patching $($(PKG)_DIR_PREFIX)/$(RAWNAME)")
> + ? ? ? $(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(if $($(PKG)_PATCH),support/scripts/apply-patches.sh $(@D) $(DL_DIR) $($(PKG)_PATCH))
> + ? ? ? $(Q)( \
> + ? ? ? if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME); then \
> + ? ? ? ? if test "$(wildcard $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER)*.patch*)"; then \
> + ? ? ? ? ? support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(NAMEVER)\*.patch $(NAMEVER)\*.patch.$(ARCH) || exit 1; \
> + ? ? ? ? else \
> + ? ? ? ? ? support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME) $(RAWNAME)\*.patch $(RAWNAME)\*.patch.$(ARCH) || exit 1; \
> + ? ? ? ? ? if test -d $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER); then \
> + ? ? ? ? ? ? support/scripts/apply-patches.sh $(@D) $($(PKG)_DIR_PREFIX)/$(RAWNAME)/$(NAMEVER) \*.patch \*.patch.$(ARCH) || exit 1; \
> + ? ? ? ? ? fi; \
> + ? ? ? ? fi; \
> + ? ? ? fi; \
> + ? ? ? )
> + ? ? ? $(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Configure
> +$(BUILD_DIR)/%/.stamp_configured:
> + ? ? ? $(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep))
> + ? ? ? @$(call MESSAGE,"Configuring")
> + ? ? ? $($(PKG)_CONFIGURE_CMDS)
> + ? ? ? $(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Build
> +$(BUILD_DIR)/%/.stamp_built::
> + ? ? ? @$(call MESSAGE,"Building")
> + ? ? ? $($(PKG)_BUILD_CMDS)
> + ? ? ? $(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Install to host dir
> +$(BUILD_DIR)/%/.stamp_host_installed:
> + ? ? ? @$(call MESSAGE,"Installing to host directory")
> + ? ? ? $($(PKG)_INSTALL_CMDS)
> + ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Install to staging dir
> +$(BUILD_DIR)/%/.stamp_staging_installed:
> + ? ? ? @$(call MESSAGE,"Installing to staging directory")
> + ? ? ? $($(PKG)_INSTALL_STAGING_CMDS)
> + ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Install to images dir
> +$(BUILD_DIR)/%/.stamp_images_installed:
> + ? ? ? @$(call MESSAGE,"Installing to images directory")
> + ? ? ? $($(PKG)_INSTALL_IMAGES_CMDS)
> + ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Install to target dir
> +$(BUILD_DIR)/%/.stamp_target_installed:
> + ? ? ? @$(call MESSAGE,"Installing to target")
> + ? ? ? $($(PKG)_INSTALL_TARGET_CMDS)
> + ? ? ? $(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep))
> + ? ? ? $(Q)touch $@
> +
> +# Clean package
> +$(BUILD_DIR)/%/.stamp_cleaned:
> + ? ? ? @$(call MESSAGE,"Cleaning up")
> + ? ? ? $($(PKG)_CLEAN_CMDS)
> + ? ? ? rm -f $(@D)/.stamp_built
> +
> +# Uninstall package from target and staging
> +# Uninstall commands tend to fail, so remove the stamp files first
> +$(BUILD_DIR)/%/.stamp_uninstalled:
> + ? ? ? @$(call MESSAGE,"Uninstalling")
> + ? ? ? rm -f $($(PKG)_TARGET_INSTALL_STAGING)
> + ? ? ? rm -f $($(PKG)_TARGET_INSTALL_TARGET)
> + ? ? ? $($(PKG)_UNINSTALL_STAGING_CMDS)
> + ? ? ? $($(PKG)_UNINSTALL_TARGET_CMDS)
> +
> +# Remove package sources
> +$(BUILD_DIR)/%/.stamp_dircleaned:
> + ? ? ? rm -Rf $(@D)
> +
> +################################################################################
> +# GENTARGETS_INNER -- generates the make targets needed to build a
> +# generic package
> +#
> +# ?argument 1 is the lowercase package name
> +# ?argument 2 is the uppercase package name, including an HOST_ prefix
> +# ? ? ? ? ? ? for host packages
> +# ?argument 3 is the uppercase package name, without the HOST_ prefix
> +# ? ? ? ? ? ? for host packages
> +# ?argument 4 is the package directory prefix
> +# ?argument 5 is the type (target or host)
> +################################################################################
> +
> +define GENTARGETS_INNER
> +
> +# Define default values for various package-related variables, if not
> +# already defined. For some variables (version, source, site and
> +# subdir), if they are undefined, we try to see if a variable without
> +# the HOST_ prefix is defined. If so, we use such a variable, so that
> +# these informations have only to be specified once, for both the
> +# target and host packages of a given .mk file.
> +
> +$(2)_TYPE ? ? ? ? ? ? ? ? ? ? ? = ?$(5)
> +$(2)_NAME ? ? ? ? ? ? ? ? ? ? ?= ?$(1)
> +
> +# Keep the package version that may contain forward slashes in the _DL_VERSION
> +# variable, then replace all forward slashes ('/') by underscores ('_') to
> +# sanitize the package version that is used in paths, directory and file names.
> +# Forward slashes may appear in the package's version when pointing to a
> +# version control system branch or tag, for example remotes/origin/1_10_stable.
> +ifndef $(2)_VERSION
> + ifdef $(3)_VERSION
> + ?$(2)_DL_VERSION = $($(3)_VERSION)
> + ?$(2)_VERSION = $(subst /,_,$($(3)_VERSION))
> + else
> + ?$(2)_VERSION = undefined
> + ?$(2)_DL_VERSION = undefined
> + endif
> +else
> + ?$(2)_DL_VERSION = $($(2)_VERSION)
> + ?$(2)_VERSION = $(subst /,_,$($(2)_VERSION))
> +endif
> +
> +$(2)_BASE_NAME = ?$(1)-$$($(2)_VERSION)
> +$(2)_DL_DIR ? ?= ?$$(DL_DIR)/$$($(2)_BASE_NAME)
> +$(2)_DIR ? ? ? = ?$$(BUILD_DIR)/$$($(2)_BASE_NAME)
> +
> +ifneq ($$($(2)_OVERRIDE_SRCDIR),)
> +$(2)_VERSION = custom
> +endif
> +
> +ifndef $(2)_SOURCE
> + ifdef $(3)_SOURCE
> + ?$(2)_SOURCE = $($(3)_SOURCE)
> + else
> + ?$(2)_SOURCE ? ? ? ? ? ? ? ? ??= $$($(2)_BASE_NAME).tar.gz
> + endif
> +endif
> +
> +ifndef $(2)_PATCH
> + ifdef $(3)_PATCH
> + ?$(2)_PATCH = $($(3)_PATCH)
> + endif
> +endif
> +
> +ifndef $(2)_SITE
> + ifdef $(3)_SITE
> + ?$(2)_SITE = $($(3)_SITE)
> + else
> + ?$(2)_SITE ? ? ? ? ? ? ? ? ? ??= \
> + ? ? ? http://$$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/$(1)
> + endif
> +endif
> +
> +ifndef $(2)_SITE_METHOD
> + ifdef $(3)_SITE_METHOD
> + ?$(2)_SITE_METHOD = $($(3)_SITE_METHOD)
> + else
> + ? ? ? # Try automatic detection using the scheme part of the URI
> + ? ? ? $(2)_SITE_METHOD = $(firstword $(subst ://, ,$(call qstrip,$($(2)_SITE))))
> + endif
> +endif
> +
> +ifeq ($$($(2)_SITE_METHOD),local)
> +ifeq ($$($(2)_OVERRIDE_SRCDIR),)
> +$(2)_OVERRIDE_SRCDIR = $($(2)_SITE)
> +endif
> +endif
> +
> +$(2)_DEPENDENCIES ?= $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES)))
> +
> +$(2)_INSTALL_STAGING ? ? ? ? ? ?= NO
> +$(2)_INSTALL_IMAGES ? ? ? ? ? ??= NO
> +$(2)_INSTALL_TARGET ? ? ? ? ? ??= YES
> +$(2)_DIR_PREFIX ? ? ? ? ? ? ? ? ? ? ? ?= $(if $(4),$(4),$(TOP_SRCDIR)/package)
> +
> +# define sub-target stamps
> +$(2)_TARGET_INSTALL_TARGET = ? $$($(2)_DIR)/.stamp_target_installed
> +$(2)_TARGET_INSTALL_STAGING = ?$$($(2)_DIR)/.stamp_staging_installed
> +$(2)_TARGET_INSTALL_IMAGES = ? $$($(2)_DIR)/.stamp_images_installed
> +$(2)_TARGET_INSTALL_HOST = ? ? ?$$($(2)_DIR)/.stamp_host_installed
> +$(2)_TARGET_BUILD = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_built
> +$(2)_TARGET_CONFIGURE = ? ? ? ? ? ? ? ?$$($(2)_DIR)/.stamp_configured
> +$(2)_TARGET_RSYNC = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_rsynced
> +$(2)_TARGET_RSYNC_SOURCE = ? ? ?$$($(2)_DIR)/.stamp_rsync_sourced
> +$(2)_TARGET_PATCH = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_patched
> +$(2)_TARGET_EXTRACT = ? ? ? ? ?$$($(2)_DIR)/.stamp_extracted
> +$(2)_TARGET_SOURCE = ? ? ? ? ? $$($(2)_DIR)/.stamp_downloaded
> +$(2)_TARGET_UNINSTALL = ? ? ? ? ? ? ? ?$$($(2)_DIR)/.stamp_uninstalled
> +$(2)_TARGET_CLEAN = ? ? ? ? ? ?$$($(2)_DIR)/.stamp_cleaned
> +$(2)_TARGET_DIRCLEAN = ? ? ? ? $$($(2)_DIR)/.stamp_dircleaned
> +
> +# default extract command
> +$(2)_EXTRACT_CMDS ?= \
> + ? ? ? $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $(DL_DIR)/$$($(2)_SOURCE) | \
> + ? ? ? $(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $$($(2)_DIR) $(TAR_OPTIONS) -)
> +
> +# post-steps hooks
> +$(2)_POST_DOWNLOAD_HOOKS ? ? ? ??=
> +$(2)_POST_EXTRACT_HOOKS ? ? ? ? ?=
> +$(2)_PRE_PATCH_HOOKS ? ? ? ? ? ??=
> +$(2)_POST_PATCH_HOOKS ? ? ? ? ? ?=
> +$(2)_PRE_CONFIGURE_HOOKS ? ? ? ??=
> +$(2)_POST_CONFIGURE_HOOKS ? ? ? ?=
> +$(2)_POST_BUILD_HOOKS ? ? ? ? ? ?=
> +$(2)_POST_INSTALL_HOOKS ? ? ? ? ?=
> +$(2)_POST_INSTALL_STAGING_HOOKS ?=
> +$(2)_POST_INSTALL_TARGET_HOOKS ??=
> +$(2)_POST_INSTALL_IMAGES_HOOKS ??=
> +
> +# human-friendly targets and target sequencing
> +$(1): ? ? ? ? ? ? ? ? ?$(1)-install
> +
> +ifeq ($$($(2)_TYPE),host)
> +$(1)-install: ? ? ? ? ?$(1)-install-host
> +else
> +$(1)-install: ? ? ? ? ?$(1)-install-staging $(1)-install-target $(1)-install-images
> +endif
> +
> +ifeq ($$($(2)_INSTALL_TARGET),YES)
> +$(1)-install-target: ? $(1)-build \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_INSTALL_TARGET)
> +else
> +$(1)-install-target:
> +endif
> +
> +ifeq ($$($(2)_INSTALL_STAGING),YES)
> +$(1)-install-staging: ?$(1)-build \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_INSTALL_STAGING)
> +else
> +$(1)-install-staging:
> +endif
> +
> +ifeq ($$($(2)_INSTALL_IMAGES),YES)
> +$(1)-install-images: ? $(1)-build \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_INSTALL_IMAGES)
> +else
> +$(1)-install-images:
> +endif
> +
> +$(1)-install-host: ? ? ?$(1)-build $$($(2)_TARGET_INSTALL_HOST)
> +
> +$(1)-build: ? ? ? ? ? ?$(1)-configure \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_BUILD)
> +
> +ifeq ($$($(2)_OVERRIDE_SRCDIR),)
> +# In the normal case (no package override), the sequence of steps is
> +# ?source, by downloading
> +# ?depends
> +# ?extract
> +# ?patch
> +# ?configure
> +$(1)-configure: ? ? ? ? ? ? ? ?$(1)-patch $(1)-depends \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_CONFIGURE)
> +
> +$(1)-patch: ? ? ? ? ? ?$(1)-extract $$($(2)_TARGET_PATCH)
> +
> +$(1)-extract: ? ? ? ? ?$(1)-source \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_EXTRACT)
> +
> +$(1)-depends: ? ? ? ? ?$$($(2)_DEPENDENCIES)
> +
> +$(1)-source: ? ? ? ? ? $$($(2)_TARGET_SOURCE)
> +else
> +# In the package override case, the sequence of steps
> +# ?source, by rsyncing
> +# ?depends
> +# ?configure
> +$(1)-configure: ? ? ? ? ? ? ? ?$(1)-depends \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_CONFIGURE)
> +
> +$(1)-depends: ? ? ? ? ?$(1)-rsync $$($(2)_DEPENDENCIES)
> +
> +$(1)-rsync: ? ? ? ? ? ?$$($(2)_TARGET_RSYNC)
> +
> +$(1)-source: ? ? ? ? ? $$($(2)_TARGET_RSYNC_SOURCE)
> +endif
> +
> +$(1)-show-depends:
> + ? ? ? ? ? ? ? ? ? ? ? @echo $$($(2)_DEPENDENCIES)
> +
> +$(1)-uninstall: ? ? ? ? ? ? ? ?$(1)-configure $$($(2)_TARGET_UNINSTALL)
> +
> +$(1)-clean: ? ? ? ? ? ?$(1)-uninstall \
> + ? ? ? ? ? ? ? ? ? ? ? $$($(2)_TARGET_CLEAN)
> +
> +$(1)-dirclean: ? ? ? ? $$($(2)_TARGET_DIRCLEAN)
> +
> +$(1)-clean-for-rebuild:
> +ifneq ($$($(2)_OVERRIDE_SRCDIR),)
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_RSYNC)
> +endif
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_BUILD)
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_STAGING)
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_TARGET)
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_IMAGES)
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_INSTALL_HOST)
> +
> +$(1)-rebuild: ? ? ? ? ?$(1)-clean-for-rebuild all
> +
> +$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild
> + ? ? ? ? ? ? ? ? ? ? ? rm -f $$($(2)_TARGET_CONFIGURE)
> +
> +$(1)-reconfigure: ? ? ?$(1)-clean-for-reconfigure all
> +
> +# define the PKG variable for all targets, containing the
> +# uppercase package variable prefix
> +$$($(2)_TARGET_INSTALL_TARGET): ? ? ? ? ? ? ? ?PKG=$(2)
> +$$($(2)_TARGET_INSTALL_STAGING): ? ? ? PKG=$(2)
> +$$($(2)_TARGET_INSTALL_IMAGES): ? ? ? ? ? ? ? ?PKG=$(2)
> +$$($(2)_TARGET_INSTALL_HOST): ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_BUILD): ? ? ? ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_CONFIGURE): ? ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_RSYNC): ? ? ? ? ? ? ? ? ?SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> +$$($(2)_TARGET_RSYNC): ? ? ? ? ? ? ? ? ?PKG=$(2)
> +$$($(2)_TARGET_RSYNC_SOURCE): ? ? ? ? ?SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> +$$($(2)_TARGET_RSYNC_SOURCE): ? ? ? ? ?PKG=$(2)
> +$$($(2)_TARGET_PATCH): ? ? ? ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_PATCH): ? ? ? ? ? ? ? ? RAWNAME=$(patsubst host-%,%,$(1))
> +$$($(2)_TARGET_EXTRACT): ? ? ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_SOURCE): ? ? ? ? ? ? ? ? ? ? ? ?PKG=$(2)
> +$$($(2)_TARGET_UNINSTALL): ? ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_CLEAN): ? ? ? ? ? ? ? ? PKG=$(2)
> +$$($(2)_TARGET_DIRCLEAN): ? ? ? ? ? ? ?PKG=$(2)
> +
> +# Compute the name of the Kconfig option that correspond to the
> +# package being enabled. We handle three cases: the special Linux
> +# kernel case, the bootloaders case, and the normal packages case.
> +ifeq ($(1),linux)
> +$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
> +else ifeq ($(4),boot/)
> +$(2)_KCONFIG_VAR = BR2_TARGET_$(2)
> +else
> +$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
> +endif
> +
> +# add package to the general list of targets if requested by the buildroot
> +# configuration
> +ifeq ($$($$($(2)_KCONFIG_VAR)),y)
> +
> +TARGETS += $(1)
> +PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
> +PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)
> +
> +ifeq ($$($(2)_SITE_METHOD),svn)
> +DL_TOOLS_DEPENDENCIES += svn
> +else ifeq ($$($(2)_SITE_METHOD),git)
> +DL_TOOLS_DEPENDENCIES += git
> +else ifeq ($$($(2)_SITE_METHOD),bzr)
> +DL_TOOLS_DEPENDENCIES += bzr
> +else ifeq ($$($(2)_SITE_METHOD),scp)
> +DL_TOOLS_DEPENDENCIES += scp ssh
> +else ifeq ($$($(2)_SITE_METHOD),hg)
> +DL_TOOLS_DEPENDENCIES += hg
> +endif # SITE_METHOD
> +
> +DL_TOOLS_DEPENDENCIES += $(firstword $(INFLATE$(suffix $($(2)_SOURCE))))
> +
> +endif # $(2)_KCONFIG_VAR
> +endef # GENTARGETS_INNER
> +
> +################################################################################
> +# GENTARGETS -- the target generator macro for generic packages
> +#
> +# Argument 1 is "target" or "host" ? ? ? ? ? [optional, default: "target"]
> +################################################################################
> +
> +define GENTARGETS
> +ifeq ($(1),host)
> +# In the case of host packages, turn the package name "pkg" into "host-pkg"
> +$(call GENTARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host)
> +else
> +# In the case of target packages, keep the package name "pkg"
> +$(call GENTARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
> +endif
> +endef
> +
> +# :mode=makefile:
> diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
> new file mode 100644
> index 0000000..729f8bb
> --- /dev/null
> +++ b/package/pkg-utils.mk
> @@ -0,0 +1,72 @@
> +# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
> +# hyphens to underscores
> +
> +# Heavily inspired by the up macro from gmsl (http://gmsl.sf.net)
> +# This is approx 5 times faster than forking a shell and tr, and
> +# as this macro is used a lot it matters
> +# This works by creating translation character pairs (E.G. a:A b:B)
> +# and then looping though all of them running $(subst from,to,text)
> +[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z . -
> +[TO] ? := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _
> +
> +UPPERCASE = $(strip $(eval __tmp := $1) \
> + ? ? $(foreach c, $(join $(addsuffix :,$([FROM])),$([TO])), \
> + ? ? ? $(eval __tmp := \
> + ? ? ? ? ? ? ? $(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),\
> + ? ? ? ? ? ? ? ? ? ? ? $(__tmp)))) \
> + ? ? $(__tmp))
> +
> +define KCONFIG_ENABLE_OPT
> + ? ? ? $(SED) "/\\<$(1)\\>/d" $(2)
> + ? ? ? echo "$(1)=y" >> $(2)
> +endef
> +
> +define KCONFIG_SET_OPT
> + ? ? ? $(SED) "/\\<$(1)\\>/d" $(3)
> + ? ? ? echo "$(1)=$(2)" >> $(3)
> +endef
> +
> +define KCONFIG_DISABLE_OPT
> + ? ? ? $(SED) "/\\<$(1)\\>/d" $(2)
> + ? ? ? echo "# $(1) is not set" >> $(2)
> +endef
> +
> +# Helper functions to determine the name of a package and its
> +# directory from its makefile directory, using the $(MAKEFILE_LIST)
> +# variable provided by make. This is used by the *TARGETS macros to
> +# automagically find where the package is located. Note that the
> +# pkgdir macro is carefully written to handle the case of the Linux
> +# package, for which the package directory is an empty string.
> +define pkgdir
> +$(dir $(lastword $(MAKEFILE_LIST)))
> +endef
> +
> +define pkgname
> +$(lastword $(subst /, ,$(call pkgdir)))
> +endef
> +
> +define pkgparentdir
> +$(patsubst %$(call pkgname)/,%,$(call pkgdir))
> +endef
> +
> +# Define extractors for different archive suffixes
> +INFLATE.bz2 ?= $(BZCAT)
> +INFLATE.gz ? = $(ZCAT)
> +INFLATE.tbz ?= $(BZCAT)
> +INFLATE.tbz2 = $(BZCAT)
> +INFLATE.tgz ?= $(ZCAT)
> +INFLATE.xz ? = $(XZCAT)
> +INFLATE.tar ?= cat
> +
> +# MESSAGE Macro -- display a message in bold type
> +MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(1)$(TERM_RESET)"
> +TERM_BOLD := $(shell tput smso)
> +TERM_RESET := $(shell tput rmso)
> +
> +
> +# Needed for the foreach loops to loop over the list of hooks, so that
> +# each hook call is properly separated by a newline.
> +define sep
> +
> +
> +endef
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 08/13] pkg-*.mk: add some comments, update some existing comments
  2012-03-07 19:34 ` [Buildroot] [PATCH 08/13] pkg-*.mk: add some comments, update some existing comments Thomas Petazzoni
@ 2012-03-09  6:45   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:45 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?package/pkg-autotargets.mk | ? ?4 +---
> ?package/pkg-download.mk ? ?| ? ?9 +++++++++
> ?package/pkg-gentargets.mk ?| ? 10 ++++------
> ?package/pkg-utils.mk ? ? ? | ? 13 +++++++++++++
> ?4 files changed, 27 insertions(+), 9 deletions(-)
>
> diff --git a/package/pkg-autotargets.mk b/package/pkg-autotargets.mk
> index fd118dc..c9887c2 100644
> --- a/package/pkg-autotargets.mk
> +++ b/package/pkg-autotargets.mk
> @@ -3,9 +3,7 @@
> ?#
> ?# This file implements an infrastructure that eases development of
> ?# package .mk files for autotools packages. It should be used for all
> -# packages that use the autotools as their build system. Non-autotools
> -# packages should use the generic infrastructure in
> -# package/Makefile.package.in.
> +# packages that use the autotools as their build system.
> ?#
> ?# See the Buildroot documentation for details on the usage of this
> ?# infrastructure
> diff --git a/package/pkg-download.mk b/package/pkg-download.mk
> index 7e25674..b58e12c 100644
> --- a/package/pkg-download.mk
> +++ b/package/pkg-download.mk
> @@ -1,3 +1,12 @@
> +############################################################################
> +#
> +# This file contains the download helpers for the various package
> +# infrastructures. It is used to handle downloads from HTTP servers,
> +# FTP servers, Git repositories, Subversion repositories, Mercurial
> +# repositories, Bazaar repositories, and SCP servers.
> +#
> +############################################################################
> +
> ?# Download method commands
> ?WGET:=$(call qstrip,$(BR2_WGET)) $(QUIET)
> ?SVN:=$(call qstrip,$(BR2_SVN))
> diff --git a/package/pkg-gentargets.mk b/package/pkg-gentargets.mk
> index b8c437e..d693845 100644
> --- a/package/pkg-gentargets.mk
> +++ b/package/pkg-gentargets.mk
> @@ -2,9 +2,10 @@
> ?# Generic package infrastructure
> ?#
> ?# This file implements an infrastructure that eases development of
> -# package .mk files. It should be used for all non-autotools based
> -# packages. Autotools-based packages should use the specialized
> -# autotools infrastructure in package/Makefile.autotools.in.
> +# package .mk files. It should be used for packages that do not rely
> +# on a well-known build system for which Buildroot has a dedicated
> +# infrastructure (so far, Buildroot has special support for
> +# autotools-based and CMake-based packages).
> ?#
> ?# See the Buildroot documentation for details on the usage of this
> ?# infrastructure
> @@ -17,9 +18,6 @@
> ?#
> ?# ? 2. Description of the commands to be executed to configure, build
> ?# ? ? ?and install the package
> -#
> -# The autotools infrastructure specializes this generic infrastructure
> -# by already implementing the configure, build and install steps.
> ?################################################################################
>
> ?################################################################################
> diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
> index 729f8bb..953dbc9 100644
> --- a/package/pkg-utils.mk
> +++ b/package/pkg-utils.mk
> @@ -1,3 +1,10 @@
> +############################################################################
> +#
> +# This file contains various utility functions used by the package
> +# infrastructure, or by the packages themselves.
> +#
> +############################################################################
> +
> ?# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
> ?# hyphens to underscores
>
> @@ -16,6 +23,12 @@ UPPERCASE = $(strip $(eval __tmp := $1) \
> ? ? ? ? ? ? ? ? ? ? ? ?$(__tmp)))) \
> ? ? ?$(__tmp))
>
> +#
> +# Manipulation of .config files based on the Kconfig
> +# infrastructure. Used by the Busybox package, the Linux kernel
> +# package, and more.
> +#
> +
> ?define KCONFIG_ENABLE_OPT
> ? ? ? ?$(SED) "/\\<$(1)\\>/d" $(2)
> ? ? ? ?echo "$(1)=y" >> $(2)
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 09/13] Remove unused .fakeroot.* mechanism
  2012-03-07 19:34 ` [Buildroot] [PATCH 09/13] Remove unused .fakeroot.* mechanism Thomas Petazzoni
@ 2012-03-09  6:49   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:49 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> There used to be a mechanism using which packages could leave a
> .fakeroot.<something> file which could contain commands to be executed
> within the fakeroot environment. Since this mechanism is no longer
> used by any package, remove it from the common infrastructure.
>
> The latest user was nfs-utils, which used this mechanism to do the
> "make install" as root, since doing otherwise was not supported. But
> since 16e7b8255c82815126a2c502c3787d442d254a86, nfs-utils has been
> upgraded and converted to the package infrastructure, and this hack is
> no longer necessary. Another past user was the ltp-testsuite package,
> for the same reason, and since
> a72a670489547a3ca645ff7c3a0d9c3fb66eab51, the fakeroot hack is no
> longer needed.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?Makefile ? ? ? ? ? ? ?| ? ?6 ------
> ?fs/common.mk ? ? ? ? ?| ? ?2 --
> ?fs/iso9660/iso9660.mk | ? ?2 --
> ?3 files changed, 0 insertions(+), 10 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index c3ff284..ab6cee1 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -301,8 +301,6 @@ endif
>
> ?include fs/common.mk
>
> -TARGETS+=erase-fakeroots
> -
> ?TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
> ?TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
> ?TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
> @@ -391,7 +389,6 @@ $(BUILD_DIR)/.root:
> ? ? ? ? ? ? ? ?if [ -d "$(TARGET_SKELETON)" ]; then \
> ? ? ? ? ? ? ? ? ? ? ? ?cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
> ? ? ? ? ? ? ? ?fi; \
> - ? ? ? ? ? ? ? touch $(STAGING_DIR)/.fakeroot.00000; \
> ? ? ? ?fi
> ? ? ? ?-find $(TARGET_DIR) -type d -name CVS -print0 -o -name .svn -print0 | xargs -0 rm -rf
> ? ? ? ?-find $(TARGET_DIR) -type f \( -name .empty -o -name '*~' \) -print0 | xargs -0 rm -rf
> @@ -399,9 +396,6 @@ $(BUILD_DIR)/.root:
>
> ?$(TARGET_DIR): $(BUILD_DIR)/.root
>
> -erase-fakeroots:
> - ? ? ? rm -f $(BUILD_DIR)/.fakeroot*
> -
> ?target-finalize:
> ?ifeq ($(BR2_HAVE_DEVFILES),y)
> ? ? ? ?( support/scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
> diff --git a/fs/common.mk b/fs/common.mk
> index d426f37..debf7db 100644
> --- a/fs/common.mk
> +++ b/fs/common.mk
> @@ -45,8 +45,6 @@ $(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES)
> ? ? ? ?@$(call MESSAGE,"Generating root filesystem image rootfs.$(1)")
> ? ? ? ?$(foreach hook,$(ROOTFS_$(2)_PRE_GEN_HOOKS),$(call $(hook))$(sep))
> ? ? ? ?rm -f $(FAKEROOT_SCRIPT)
> - ? ? ? touch $(BUILD_DIR)/.fakeroot.00000
> - ? ? ? cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT)
> ? ? ? ?echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
> ?ifneq ($(ROOTFS_DEVICE_TABLES),)
> ? ? ? ?cat $(ROOTFS_DEVICE_TABLES) > $(FULL_DEVICE_TABLE)
> diff --git a/fs/iso9660/iso9660.mk b/fs/iso9660/iso9660.mk
> index afebafc..f51b6ee 100644
> --- a/fs/iso9660/iso9660.mk
> +++ b/fs/iso9660/iso9660.mk
> @@ -25,8 +25,6 @@ $(BINARIES_DIR)/rootfs.iso9660: host-cdrkit host-fakeroot linux rootfs-ext2 grub
> ? ? ? ?cp $(BINARIES_DIR)/rootfs.ext2 $(ISO9660_TARGET_DIR)/initrd
> ? ? ? ?# Use fakeroot to pretend all target binaries are owned by root
> ? ? ? ?rm -f $(FAKEROOT_SCRIPT)
> - ? ? ? touch $(BUILD_DIR)/.fakeroot.00000
> - ? ? ? cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT)
> ? ? ? ?echo "chown -R 0:0 $(ISO9660_TARGET_DIR)" >> $(FAKEROOT_SCRIPT)
> ? ? ? ?# Use fakeroot so mkisofs believes the previous fakery
> ? ? ? ?echo "$(HOST_DIR)/usr/bin/genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot " \
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk Thomas Petazzoni
@ 2012-03-09  6:50   ` Thomas De Schampheleire
  2012-03-10 11:56   ` Arnout Vandecappelle
  1 sibling, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:50 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?Makefile ? ? ? ? ? ? ?| ? 49 +------------------------------------------------
> ?docs/manual/manual.mk | ? 48 ++++++++++++++++++++++++++++++++++++++++++++++++
> ?2 files changed, 49 insertions(+), 48 deletions(-)
> ?create mode 100644 docs/manual/manual.mk
>
> diff --git a/Makefile b/Makefile
> index ab6cee1..1986e33 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -679,54 +679,7 @@ release:
> ? ? ? ?bzip2 -9 -c < $(OUT).tar > $(OUT).tar.bz2
> ? ? ? ?rm -rf $(OUT) $(OUT).tar
>
> -################################################################################
> -# GENDOC -- generates the make targets needed to build a specific type of
> -# ? ? ? ? ? asciidoc documentation.
> -#
> -# ?argument 1 is the name of the document and must be a subdirectory of docs/;
> -# ? ? ? ? ? ? the top-level asciidoc file must have the same name
> -# ?argument 2 is the type of document to generate (-f argument of a2x)
> -# ?argument 3 is the document type as used in the make target
> -# ?argument 4 is the output file extension for the document type
> -# ?argument 5 is the human text for the document type
> -# ?argument 6 (optional) are extra arguments for a2x
> -#
> -# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
> -################################################################################
> -define GENDOC_INNER
> -$(1): $(1)-$(3)
> -.PHONY: $(1)-$(3)
> -$(1)-$(3): $$(O)/docs/$(1)/$(1).$(4)
> -
> -$$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt $$($(call UPPERCASE,$(1))_SOURCES)
> - ? ? ? @echo "Generating $(5) $(1)..."
> - ? ? ? $(Q)mkdir -p $$(@D)
> - ? ? ? $(Q)a2x $(6) -f $(2) -d book -L -r $(TOPDIR)/docs/images \
> - ? ? ? ? -D $$(@D) $$<
> -endef
> -
> -################################################################################
> -# GENDOC -- generates the make targets needed to build asciidoc documentation.
> -#
> -# ?argument 1 is the name of the document and must be a subdirectory of docs/;
> -# ? ? ? ? ? ? the top-level asciidoc file must have the same name
> -#
> -# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
> -################################################################################
> -define GENDOC
> -$(call GENDOC_INNER,$(1),xhtml,html,html,HTML)
> -$(call GENDOC_INNER,$(1),chunked,split-html,chunked,Split HTML)
> -$(call GENDOC_INNER,$(1),pdf,pdf,pdf,PDF,--dblatex-opts "-P latex.output.revhistory=0")
> -$(call GENDOC_INNER,$(1),text,txt,text,Text)
> -$(call GENDOC_INNER,$(1),epub,epub,epub,EPUB)
> -clean: clean-$(1)
> -clean-$(1):
> - ? ? ? $(Q)$(RM) -rf $(O)/docs/$(1)
> -.PHONY: $(1) clean-$(1)
> -endef
> -
> -MANUAL_SOURCES = $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)
> -$(eval $(call GENDOC,manual))
> +include docs/manual/manual.mk
>
> ?.PHONY: $(noconfig_targets)
>
> diff --git a/docs/manual/manual.mk b/docs/manual/manual.mk
> new file mode 100644
> index 0000000..1eaf73a
> --- /dev/null
> +++ b/docs/manual/manual.mk
> @@ -0,0 +1,48 @@
> +################################################################################
> +# GENDOC -- generates the make targets needed to build a specific type of
> +# ? ? ? ? ? asciidoc documentation.
> +#
> +# ?argument 1 is the name of the document and must be a subdirectory of docs/;
> +# ? ? ? ? ? ? the top-level asciidoc file must have the same name
> +# ?argument 2 is the type of document to generate (-f argument of a2x)
> +# ?argument 3 is the document type as used in the make target
> +# ?argument 4 is the output file extension for the document type
> +# ?argument 5 is the human text for the document type
> +# ?argument 6 (optional) are extra arguments for a2x
> +#
> +# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
> +################################################################################
> +define GENDOC_INNER
> +$(1): $(1)-$(3)
> +.PHONY: $(1)-$(3)
> +$(1)-$(3): $$(O)/docs/$(1)/$(1).$(4)
> +
> +$$(O)/docs/$(1)/$(1).$(4): docs/$(1)/$(1).txt $$($(call UPPERCASE,$(1))_SOURCES)
> + ? ? ? @echo "Generating $(5) $(1)..."
> + ? ? ? $(Q)mkdir -p $$(@D)
> + ? ? ? $(Q)a2x $(6) -f $(2) -d book -L -r $(TOPDIR)/docs/images \
> + ? ? ? ? -D $$(@D) $$<
> +endef
> +
> +################################################################################
> +# GENDOC -- generates the make targets needed to build asciidoc documentation.
> +#
> +# ?argument 1 is the name of the document and must be a subdirectory of docs/;
> +# ? ? ? ? ? ? the top-level asciidoc file must have the same name
> +#
> +# The variable <DOCUMENT_NAME>_SOURCES defines the dependencies.
> +################################################################################
> +define GENDOC
> +$(call GENDOC_INNER,$(1),xhtml,html,html,HTML)
> +$(call GENDOC_INNER,$(1),chunked,split-html,chunked,Split HTML)
> +$(call GENDOC_INNER,$(1),pdf,pdf,pdf,PDF,--dblatex-opts "-P latex.output.revhistory=0")
> +$(call GENDOC_INNER,$(1),text,txt,text,Text)
> +$(call GENDOC_INNER,$(1),epub,epub,epub,EPUB)
> +clean: clean-$(1)
> +clean-$(1):
> + ? ? ? $(Q)$(RM) -rf $(O)/docs/$(1)
> +.PHONY: $(1) clean-$(1)
> +endef
> +
> +MANUAL_SOURCES = $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)
> +$(eval $(call GENDOC,manual))
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk Thomas Petazzoni
@ 2012-03-09  6:54   ` Thomas De Schampheleire
  2012-03-09  7:53     ` Thomas Petazzoni
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:54 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
> ?Makefile ? ? ? ? ? ? ? ? ? ?| ? 17 -----------------
> ?package/pkg-cmaketargets.mk | ? 22 ++++++++++++++++++++++
> ?2 files changed, 22 insertions(+), 17 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 1986e33..ab91b10 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -339,23 +339,6 @@ prepare: $(BUILD_DIR)/buildroot-config/auto.conf
>
> ?world: prepare dirs dependencies $(BASE_TARGETS) $(TARGETS_ALL)
>
> -$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake:
> - ? ? ? mkdir -p $(@D)
> - ? ? ? @echo -en "\
> - ? ? ? set(CMAKE_SYSTEM_NAME Linux)\n\
> - ? ? ? set(CMAKE_C_COMPILER $(TARGET_CC_NOCCACHE))\n\
> - ? ? ? set(CMAKE_CXX_COMPILER $(TARGET_CXX_NOCCACHE))\n\
> - ? ? ? set(CMAKE_C_FLAGS \"\$${CMAKE_C_FLAGS} $(TARGET_CFLAGS)\" CACHE STRING \"Buildroot CFLAGS\" FORCE)\n\
> - ? ? ? set(CMAKE_CXX_FLAGS \"\$${CMAKE_CXX_FLAGS} $(TARGET_CXXFLAGS)\" CACHE STRING \"Buildroot CXXFLAGS\" FORCE)\n\
> - ? ? ? set(CMAKE_INSTALL_SO_NO_EXE 0)\n\
> - ? ? ? set(CMAKE_PROGRAM_PATH \"$(HOST_DIR)/usr/bin\")\n\
> - ? ? ? set(CMAKE_FIND_ROOT_PATH \"$(STAGING_DIR)\")\n\
> - ? ? ? set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n\
> - ? ? ? set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n\
> - ? ? ? set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n\
> - ? ? ? set(ENV{PKG_CONFIG_SYSROOT_DIR} \"$(STAGING_DIR)\")\n\
> - ? ? ? " > $@
> -
> ?.PHONY: all world dirs clean distclean source outputmakefile \
> ? ? ? ?$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
> ? ? ? ?$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
> diff --git a/package/pkg-cmaketargets.mk b/package/pkg-cmaketargets.mk
> index 1cd65e4..371ab11 100644
> --- a/package/pkg-cmaketargets.mk
> +++ b/package/pkg-cmaketargets.mk
> @@ -197,3 +197,25 @@ else
> ?$(call CMAKETARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target)
> ?endif
> ?endef
> +
> +################################################################################
> +# Generation of the CMake toolchain file
> +################################################################################
> +
> +$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake:
> + ? ? ? @mkdir -p $(@D)
> + ? ? ? @echo -en "\
> + ? ? ? set(CMAKE_SYSTEM_NAME Linux)\n\
> + ? ? ? set(CMAKE_C_COMPILER $(TARGET_CC_NOCCACHE))\n\
> + ? ? ? set(CMAKE_CXX_COMPILER $(TARGET_CXX_NOCCACHE))\n\
> + ? ? ? set(CMAKE_C_FLAGS \"\$${CMAKE_C_FLAGS} $(TARGET_CFLAGS)\" CACHE STRING \"Buildroot CFLAGS\" FORCE)\n\
> + ? ? ? set(CMAKE_CXX_FLAGS \"\$${CMAKE_CXX_FLAGS} $(TARGET_CXXFLAGS)\" CACHE STRING \"Buildroot CXXFLAGS\" FORCE)\n\
> + ? ? ? set(CMAKE_INSTALL_SO_NO_EXE 0)\n\
> + ? ? ? set(CMAKE_PROGRAM_PATH \"$(HOST_DIR)/usr/bin\")\n\
> + ? ? ? set(CMAKE_FIND_ROOT_PATH \"$(STAGING_DIR)\")\n\
> + ? ? ? set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)\n\
> + ? ? ? set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)\n\
> + ? ? ? set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)\n\
> + ? ? ? set(ENV{PKG_CONFIG_SYSROOT_DIR} \"$(STAGING_DIR)\")\n\
> + ? ? ? " > $@
> +

Currently, BASE_TARGETS is still:
$(BASE_TARGETS): dirs $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake

Now that the recipe for toolchainfile.cmake has moved, I find it a bit
strange that the 'magic' path to this file still appears here.
What about creating a nicer name and using that in BASE_TARGETS, and
let the pkg-cmaketargets.mk file resolve the nice name into the actual
path?

> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 12/13] package: remove unused STRIP_DISCARD_ALL variable
  2012-03-07 19:34 ` [Buildroot] [PATCH 12/13] package: remove unused STRIP_DISCARD_ALL variable Thomas Petazzoni
@ 2012-03-09  6:56   ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  6:56 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>

> ---
> ?package/Makefile.in | ? ?2 --
> ?1 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 4f72864..29ba497 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -126,7 +126,6 @@ TARGET_CXX := $(CCACHE) $(TARGET_CXX)
> ?endif
>
> ?ifeq ($(BR2_STRIP_strip),y)
> -STRIP_DISCARD_ALL:=--discard-all
> ?STRIP_STRIP_UNNEEDED:=--strip-unneeded
> ?STRIP_STRIP_ALL:=--strip-all
> ?TARGET_STRIP=$(TARGET_CROSS)strip
> @@ -134,7 +133,6 @@ STRIPCMD=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note
> ?KSTRIPCMD=$(STRIPCMD) $(STRIP_STRIP_UNNEEDED)
> ?endif
> ?ifeq ($(BR2_STRIP_sstrip),y)
> -STRIP_DISCARD_ALL:=
> ?STRIP_STRIP_UNNEEDED:=
> ?STRIP_STRIP_ALL:=
> ?TARGET_STRIP=$(HOST_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-sstrip
> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk Thomas Petazzoni
@ 2012-03-09  7:01   ` Thomas De Schampheleire
  2012-03-09  7:55     ` Thomas Petazzoni
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  7:01 UTC (permalink / raw)
  To: buildroot

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
> ?package/Makefile.in ? ? ? ?| ? 73 --------------------------------------------
> ?package/pkg-autotargets.mk | ? 70 ++++++++++++++++++++++++++++++++++++++++++
> ?2 files changed, 70 insertions(+), 73 deletions(-)
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 29ba497..a008fe7 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -223,79 +223,6 @@ HOST_MAKE_ENV=PATH=$(HOST_PATH) \
> ? ? ? ? ? ? ? ?PKG_CONFIG_LIBDIR="$(HOST_DIR)/usr/lib/pkgconfig" \
> ? ? ? ? ? ? ? ?PERLLIB="$(HOST_DIR)/usr/lib/perl"
>
> -
> -#######################################################################
> -# settings we need to pass to configure
> -
> -# does unaligned access trap?
> -BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=yes
> -ifeq ($(BR2_i386),y)
> -BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> -endif
> -ifeq ($(BR2_x86_64),y)
> -BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> -endif
> -ifeq ($(BR2_m68k),y)
> -BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> -endif
> -ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG)
> -BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> -endif
> -
> -ifeq ($(BR2_ENDIAN),"BIG")
> -BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=yes
> -else
> -BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=no
> -endif
> -
> -TARGET_CONFIGURE_ARGS= \
> - ? ? ? $(BR2_AC_CV_TRAP_CHECK) \
> - ? ? ? ac_cv_func_mmap_fixed_mapped=yes \
> - ? ? ? ac_cv_func_memcmp_working=yes \
> - ? ? ? ac_cv_have_decl_malloc=yes \
> - ? ? ? gl_cv_func_malloc_0_nonnull=yes \
> - ? ? ? ac_cv_func_malloc_0_nonnull=yes \
> - ? ? ? ac_cv_func_calloc_0_nonnull=yes \
> - ? ? ? ac_cv_func_realloc_0_nonnull=yes \
> - ? ? ? lt_cv_sys_lib_search_path_spec="" \
> - ? ? ? $(BR2_AC_CV_C_BIGENDIAN)
> -
> -#######################################################################
> -
> -ifeq ($(BR2_ENABLE_LOCALE),y)
> -DISABLE_NLS:=
> -else
> -DISABLE_NLS:=--disable-nls
> -endif
> -
> -ifneq ($(BR2_LARGEFILE),y)
> -DISABLE_LARGEFILE= --disable-largefile
> -endif
> -
> -ifneq ($(BR2_HAVE_DOCUMENTATION),y)
> -DISABLE_DOCUMENTATION=--disable-gtk-doc
> -endif
> -
> -ifneq ($(BR2_INET_IPV6),y)
> -DISABLE_IPV6= --disable-ipv6
> -endif
> -
> -ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
> -TARGET_CONFIGURE_OPTS+=CXX=false
> -endif
> -
> -ifeq ($(BR2_ENABLE_DEBUG),y)
> -ENABLE_DEBUG:=--enable-debug
> -else
> -ENABLE_DEBUG:=
> -endif
> -
> -ifeq ($(BR2_PREFER_STATIC_LIB),y)
> -SHARED_STATIC_LIBS_OPTS=--enable-static --disable-shared
> -else
> -SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
> -endif
> -
> ?include package/pkg-utils.mk
> ?include package/pkg-download.mk
> ?include package/pkg-autotargets.mk
> diff --git a/package/pkg-autotargets.mk b/package/pkg-autotargets.mk
> index c9887c2..a1539bb 100644
> --- a/package/pkg-autotargets.mk
> +++ b/package/pkg-autotargets.mk
> @@ -36,6 +36,76 @@ define CONFIG_UPDATE
> ? ? ? ?done
> ?endef
>
> +#
> +# Calculate values of well-known settings for configure scripts
> +#
> +
> +# does unaligned access trap?
> +BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=yes
> +ifeq ($(BR2_i386),y)
> +BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> +else ifeq ($(BR2_x86_64),y)
> +BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> +else ifeq ($(BR2_m68k),y)
> +BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> +else ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG)
> +BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no
> +endif
> +
> +ifeq ($(BR2_ENDIAN),"BIG")
> +BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=yes
> +else
> +BR2_AC_CV_C_BIGENDIAN=ac_cv_c_bigendian=no
> +endif
> +
> +TARGET_CONFIGURE_ARGS= \
> + ? ? ? $(BR2_AC_CV_TRAP_CHECK) \
> + ? ? ? ac_cv_func_mmap_fixed_mapped=yes \
> + ? ? ? ac_cv_func_memcmp_working=yes \
> + ? ? ? ac_cv_have_decl_malloc=yes \
> + ? ? ? gl_cv_func_malloc_0_nonnull=yes \
> + ? ? ? ac_cv_func_malloc_0_nonnull=yes \
> + ? ? ? ac_cv_func_calloc_0_nonnull=yes \
> + ? ? ? ac_cv_func_realloc_0_nonnull=yes \
> + ? ? ? lt_cv_sys_lib_search_path_spec="" \
> + ? ? ? $(BR2_AC_CV_C_BIGENDIAN)
> +
> +# Calculate values of well-known configure script options
> +
> +ifeq ($(BR2_ENABLE_LOCALE),y)
> +DISABLE_NLS:=
> +else
> +DISABLE_NLS:=--disable-nls
> +endif
> +
> +ifneq ($(BR2_LARGEFILE),y)
> +DISABLE_LARGEFILE= --disable-largefile
> +endif
> +
> +ifneq ($(BR2_HAVE_DOCUMENTATION),y)
> +DISABLE_DOCUMENTATION=--disable-gtk-doc
> +endif
> +
> +ifneq ($(BR2_INET_IPV6),y)
> +DISABLE_IPV6= --disable-ipv6
> +endif
> +
> +ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
> +TARGET_CONFIGURE_OPTS+=CXX=false
> +endif
> +
> +ifeq ($(BR2_ENABLE_DEBUG),y)
> +ENABLE_DEBUG:=--enable-debug
> +else
> +ENABLE_DEBUG:=
> +endif
> +
> +ifeq ($(BR2_PREFER_STATIC_LIB),y)
> +SHARED_STATIC_LIBS_OPTS=--enable-static --disable-shared
> +else
> +SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared
> +endif
> +
> ?################################################################################
> ?# AUTOTARGETS_INNER -- defines how the configuration, compilation and
> ?# installation of an autotools package should be done, implements a

Ok for the BR2_AC_BV_... move.

The last defines like DISABLE_NLS, DISABLE_LARGEFILES, ... are
sometimes used outside of autotargets, e.g. in
./toolchain/gcc/gcc-uclibc-4.x.mk, toolchain/gdb/gdb.mk,
./package/newt/newt.mk.

I'm not sure if it's a good idea to move them, based on that observation.

> --
> 1.7.4.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (12 preceding siblings ...)
  2012-03-07 19:34 ` [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk Thomas Petazzoni
@ 2012-03-09  7:06 ` Thomas De Schampheleire
  2012-03-09  7:56   ` Thomas Petazzoni
  2012-03-09 13:07 ` Alexandre Pereira da Silva
  14 siblings, 1 reply; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  7:06 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On Wed, Mar 7, 2012 at 8:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> Here is a set of proposal that cleanup/re-organize a few parts of our
> main Makefiles. This is just the beginning of a cleanup of Makefile,
> package/Makefile.in and some other core parts of the
> infrastructure. Before going further, I'd like to see if the direction
> I'm taking is something that is considered to be useful and
> interesting.
>
> This set of patches is at the Request For Comment state, they are not
> yet intended to be committed, I need to do some further testing. The
> purpose is really to get some early feedback about them.

Thanks for this cleanup. I think the reorganization of the *targets
infrastructure and the move of its related bits from other files will
certainly make the whole cleaner. And I also like the removal of the
unneeded variables.

I tried validating these patches by grepping/reviewing the code, and I
don't really expect surprises related to broken stuff. But of course,
it's good that you do some further testing.

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk
  2012-03-09  6:35   ` Thomas De Schampheleire
@ 2012-03-09  7:51     ` Thomas Petazzoni
  2012-03-09  8:51       ` Thomas De Schampheleire
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-09  7:51 UTC (permalink / raw)
  To: buildroot

Hello,

Thanks for your review!

Le Fri, 9 Mar 2012 07:35:43 +0100,
Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :

> In addition you should fix the comment

Hum, which comment are you talking about here?

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
  2012-03-09  6:54   ` Thomas De Schampheleire
@ 2012-03-09  7:53     ` Thomas Petazzoni
  2012-03-09  8:54       ` Thomas De Schampheleire
  2012-03-09 20:13       ` Samuel Martin
  0 siblings, 2 replies; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-09  7:53 UTC (permalink / raw)
  To: buildroot

Le Fri, 9 Mar 2012 07:54:32 +0100,
Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :

> Currently, BASE_TARGETS is still:
> $(BASE_TARGETS): dirs
> $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
> 
> Now that the recipe for toolchainfile.cmake has moved, I find it a bit
> strange that the 'magic' path to this file still appears here.
> What about creating a nicer name and using that in BASE_TARGETS, and
> let the pkg-cmaketargets.mk file resolve the nice name into the actual
> path?

Something like:

CMAKE_TOOLCHAIN_FILE=$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake

in pkg-cmaketargets.mk

and then in the main Makefile:

$(BASE_TARGETS): dirs $(CMAKE_TOOLCHAIN_FILE)

Is this what you're suggesting?

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk
  2012-03-09  7:01   ` Thomas De Schampheleire
@ 2012-03-09  7:55     ` Thomas Petazzoni
  2012-03-09  9:04       ` Thomas De Schampheleire
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-09  7:55 UTC (permalink / raw)
  To: buildroot

Hello,

Le Fri, 9 Mar 2012 08:01:54 +0100,
Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :

> Ok for the BR2_AC_BV_... move.
> 
> The last defines like DISABLE_NLS, DISABLE_LARGEFILES, ... are
> sometimes used outside of autotargets, e.g. in
> ./toolchain/gcc/gcc-uclibc-4.x.mk, toolchain/gdb/gdb.mk,
> ./package/newt/newt.mk.
> 
> I'm not sure if it's a good idea to move them, based on that
> observation.

Yes, I agree that this patch can definitely be discussed. I am not
totally sure myself that it is a good idea.

In the same way, the TARGET_CONFIGURE_OPTS, HOST_CONFIGURE_OPTS,
TARGET_MAKE_ENV and HOST_MAKE_ENV are somewhat specific to autotools,
but in fact used in many other locations as well.

In general, my goal is to cut down on the size, complexity and messiness
of /Makefile and /package/Makefile.in. Suggestions are welcome.

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-09  7:06 ` [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas De Schampheleire
@ 2012-03-09  7:56   ` Thomas Petazzoni
  2012-03-09  9:55     ` Thomas De Schampheleire
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-09  7:56 UTC (permalink / raw)
  To: buildroot

Le Fri, 9 Mar 2012 08:06:23 +0100,
Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :

> Thanks for this cleanup. I think the reorganization of the *targets
> infrastructure and the move of its related bits from other files will
> certainly make the whole cleaner. And I also like the removal of the
> unneeded variables.
> 
> I tried validating these patches by grepping/reviewing the code, and I
> don't really expect surprises related to broken stuff. But of course,
> it's good that you do some further testing.

And still: I did test them a bit yesterday, and it seems they were some
problems (but I didn't investigate too much, my testing was
unintentional: I had forgotten to move to another branch to work on a
customer project).

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk
  2012-03-09  7:51     ` Thomas Petazzoni
@ 2012-03-09  8:51       ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  8:51 UTC (permalink / raw)
  To: buildroot

On Fri, Mar 9, 2012 at 8:51 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> Thanks for your review!
>
> Le Fri, 9 Mar 2012 07:35:43 +0100,
> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>
>> In addition you should fix the comment
>
> Hum, which comment are you talking about here?

Ai, I forgot to delete this line. I was referring to the comment in
package/Makefile.package.in that mentions
'package/Makefile.autotools.in'. While writing this mail I realized
that you actually did that change in another patch...

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
  2012-03-09  7:53     ` Thomas Petazzoni
@ 2012-03-09  8:54       ` Thomas De Schampheleire
  2012-03-09 20:13       ` Samuel Martin
  1 sibling, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  8:54 UTC (permalink / raw)
  To: buildroot

On Fri, Mar 9, 2012 at 8:53 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Le Fri, 9 Mar 2012 07:54:32 +0100,
> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>
>> Currently, BASE_TARGETS is still:
>> $(BASE_TARGETS): dirs
>> $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
>>
>> Now that the recipe for toolchainfile.cmake has moved, I find it a bit
>> strange that the 'magic' path to this file still appears here.
>> What about creating a nicer name and using that in BASE_TARGETS, and
>> let the pkg-cmaketargets.mk file resolve the nice name into the actual
>> path?
>
> Something like:
>
> CMAKE_TOOLCHAIN_FILE=$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
>
> in pkg-cmaketargets.mk
>
> and then in the main Makefile:
>
> $(BASE_TARGETS): dirs $(CMAKE_TOOLCHAIN_FILE)
>
> Is this what you're suggesting?

Although I was thinking of an actual target, like 'cmake-prepare' or
something, using a variable like you suggest above is also fine with
me. It's maybe more simple and equally covers my comment.

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk
  2012-03-09  7:55     ` Thomas Petazzoni
@ 2012-03-09  9:04       ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  9:04 UTC (permalink / raw)
  To: buildroot

On Fri, Mar 9, 2012 at 8:55 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> Le Fri, 9 Mar 2012 08:01:54 +0100,
> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>
>> Ok for the BR2_AC_BV_... move.
>>
>> The last defines like DISABLE_NLS, DISABLE_LARGEFILES, ... are
>> sometimes used outside of autotargets, e.g. in
>> ./toolchain/gcc/gcc-uclibc-4.x.mk, toolchain/gdb/gdb.mk,
>> ./package/newt/newt.mk.
>>
>> I'm not sure if it's a good idea to move them, based on that
>> observation.
>
> Yes, I agree that this patch can definitely be discussed. I am not
> totally sure myself that it is a good idea.
>
> In the same way, the TARGET_CONFIGURE_OPTS, HOST_CONFIGURE_OPTS,
> TARGET_MAKE_ENV and HOST_MAKE_ENV are somewhat specific to autotools,
> but in fact used in many other locations as well.
>
> In general, my goal is to cut down on the size, complexity and messiness
> of /Makefile and /package/Makefile.in. Suggestions are welcome.

We could create one file for target options/defines/... and one for
host options/defines, or one file for both.
These could contain the following variables from both Makefile as
package/Makefile.in:

TARGET_CONFIGURE_OPTS, HOST_CONFIGURE_OPTS, TARGET_MAKE_ENV, HOST_MAKE_ENV
DISABLE_x, ENABLE_x
HOST_xFLAGS
HOST<tool>
TARGET_xFLAGS
TARGET_<tool>

Then, the 'strategy' is that:
- Makefile handles the top-level targets, the help, and config stuff
- Makefile.in will be almost empty. Currently it still contains the
strip stuff, the tool locations for install/sed/flex/bison and the
definition of MAKE/HOSTMAKE. We may keep this file or rename it.
- pkg-xtargets.mk contains the rules for the specific build infrastructure
- pkg-download.mk, pkg-utility.mk, and the new file with target/host
defines cover each a specific part of the build process.

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-09  7:56   ` Thomas Petazzoni
@ 2012-03-09  9:55     ` Thomas De Schampheleire
  0 siblings, 0 replies; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09  9:55 UTC (permalink / raw)
  To: buildroot

On Fri, Mar 9, 2012 at 8:56 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Le Fri, 9 Mar 2012 08:06:23 +0100,
> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>
>> Thanks for this cleanup. I think the reorganization of the *targets
>> infrastructure and the move of its related bits from other files will
>> certainly make the whole cleaner. And I also like the removal of the
>> unneeded variables.
>>
>> I tried validating these patches by grepping/reviewing the code, and I
>> don't really expect surprises related to broken stuff. But of course,
>> it's good that you do some further testing.
>
> And still: I did test them a bit yesterday, and it seems they were some
> problems (but I didn't investigate too much, my testing was
> unintentional: I had forgotten to move to another branch to work on a
> customer project).

Ok, let me know what you find...

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
                   ` (13 preceding siblings ...)
  2012-03-09  7:06 ` [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas De Schampheleire
@ 2012-03-09 13:07 ` Alexandre Pereira da Silva
  2012-03-09 13:33   ` Thomas Petazzoni
  14 siblings, 1 reply; 42+ messages in thread
From: Alexandre Pereira da Silva @ 2012-03-09 13:07 UTC (permalink / raw)
  To: buildroot

Hi,

I think the pkg-* makefiles could be moved from the packages directory
as they are used by the kernel and bootloaders as well.
Maybe move them to the support directory.

On Wed, Mar 7, 2012 at 4:34 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> Here is a set of proposal that cleanup/re-organize a few parts of our
> main Makefiles. This is just the beginning of a cleanup of Makefile,
> package/Makefile.in and some other core parts of the
> infrastructure. Before going further, I'd like to see if the direction
> I'm taking is something that is considered to be useful and
> interesting.
>
> This set of patches is at the Request For Comment state, they are not
> yet intended to be committed, I need to do some further testing. The
> purpose is really to get some early feedback about them.
>
> Thanks,
>
> Thomas
>
> The following changes since commit b50f7a832de2801aeee33146ff5a81945f4078c2:
>
> ?barebox: fix 2012.03 typo (2012-03-07 16:26:50 +0100)
>
> are available in the git repository at:
> ?git://git.free-electrons.com/users/thomas-petazzoni/buildroot.git for-2012.05/misc-cleanups
>
> Thomas Petazzoni (13):
> ? ? ?Remove the DATE variable
> ? ? ?Remove cc-option: not used anywhere
> ? ? ?Remove filename extension crap for OS compatibility
> ? ? ?kconfig: do not use HOST_LOADLIBES anymore
> ? ? ?Rename Makefile.autotools.in to pkg-autotargets.mk
> ? ? ?Rename Makefile.cmake.in to pkg-cmaketargets.mk
> ? ? ?Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk
> ? ? ?pkg-*.mk: add some comments, update some existing comments
> ? ? ?Remove unused .fakeroot.* mechanism
> ? ? ?Move the manual build infrastructure to docs/manual/manual.mk
> ? ? ?cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
> ? ? ?package: remove unused STRIP_DISCARD_ALL variable
> ? ? ?package: move autotools specific stuff to pkg-autotargets.mk
>
> ?Makefile ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ?108 +---
> ?boot/uboot/uboot.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?1 -
> ?docs/manual/manual.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 48 ++
> ?fs/common.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ?2 -
> ?fs/iso9660/iso9660.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 -
> ?package/Makefile.in ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? 83 +--
> ?package/Makefile.package.in ? ? ? ? ? ? ? ? ? ? ? ?| ?746 --------------------
> ?.../{Makefile.autotools.in => pkg-autotargets.mk} ?| ? 74 ++-
> ?package/{Makefile.cmake.in => pkg-cmaketargets.mk} | ? 22 +
> ?package/pkg-download.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ?221 ++++++
> ?package/pkg-gentargets.mk ? ? ? ? ? ? ? ? ? ? ? ? ?| ?456 ++++++++++++
> ?package/pkg-utils.mk ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? 85 +++
> ?support/kconfig/Makefile.br ? ? ? ? ? ? ? ? ? ? ? ?| ? ?4 +-
> ?support/kconfig/patches/10-br-build-system.patch ? | ? 12 +-
> ?14 files changed, 917 insertions(+), 947 deletions(-)
> ?create mode 100644 docs/manual/manual.mk
> ?delete mode 100644 package/Makefile.package.in
> ?rename package/{Makefile.autotools.in => pkg-autotargets.mk} (85%)
> ?rename package/{Makefile.cmake.in => pkg-cmaketargets.mk} (86%)
> ?create mode 100644 package/pkg-download.mk
> ?create mode 100644 package/pkg-gentargets.mk
> ?create mode 100644 package/pkg-utils.mk
>
> Thanks,
> --
> Thomas Petazzoni
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-09 13:07 ` Alexandre Pereira da Silva
@ 2012-03-09 13:33   ` Thomas Petazzoni
  2012-03-09 14:18     ` Thomas De Schampheleire
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas Petazzoni @ 2012-03-09 13:33 UTC (permalink / raw)
  To: buildroot

Hello,

Le Fri, 9 Mar 2012 10:07:29 -0300,
Alexandre Pereira da Silva <aletes.xgr@gmail.com> a ?crit :

> I think the pkg-* makefiles could be moved from the packages directory
> as they are used by the kernel and bootloaders as well.
> Maybe move them to the support directory.

Yeah, I was also wondering about this. I don't know if support/ is the
right place, or if we need yet another top-level directory such as
include/ or mk/ or whatever. What are others opinion?

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-09 13:33   ` Thomas Petazzoni
@ 2012-03-09 14:18     ` Thomas De Schampheleire
  2012-03-10 12:12       ` Arnout Vandecappelle
  0 siblings, 1 reply; 42+ messages in thread
From: Thomas De Schampheleire @ 2012-03-09 14:18 UTC (permalink / raw)
  To: buildroot

On Fri, Mar 9, 2012 at 2:33 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Hello,
>
> Le Fri, 9 Mar 2012 10:07:29 -0300,
> Alexandre Pereira da Silva <aletes.xgr@gmail.com> a ?crit :
>
>> I think the pkg-* makefiles could be moved from the packages directory
>> as they are used by the kernel and bootloaders as well.
>> Maybe move them to the support directory.
>
> Yeah, I was also wondering about this. I don't know if support/ is the
> right place, or if we need yet another top-level directory such as
> include/ or mk/ or whatever. What are others opinion?

I don't think support/ is the right place, but I'm not against moving
these files elsewhere.
Not sure about the best name though...

Best regards,
Thomas

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk
  2012-03-09  7:53     ` Thomas Petazzoni
  2012-03-09  8:54       ` Thomas De Schampheleire
@ 2012-03-09 20:13       ` Samuel Martin
  1 sibling, 0 replies; 42+ messages in thread
From: Samuel Martin @ 2012-03-09 20:13 UTC (permalink / raw)
  To: buildroot

Hi Thomas (both), all,

2012/3/9 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>:
> Le Fri, 9 Mar 2012 07:54:32 +0100,
> Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> a ?crit :
>
>> Currently, BASE_TARGETS is still:
>> $(BASE_TARGETS): dirs
>> $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
>>
>> Now that the recipe for toolchainfile.cmake has moved, I find it a bit
>> strange that the 'magic' path to this file still appears here.
>> What about creating a nicer name and using that in BASE_TARGETS, and
>> let the pkg-cmaketargets.mk file resolve the nice name into the actual
>> path?
>
> Something like:
>
> CMAKE_TOOLCHAIN_FILE=$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
>
> in pkg-cmaketargets.mk
>
> and then in the main Makefile:
>
> $(BASE_TARGETS): dirs $(CMAKE_TOOLCHAIN_FILE)

Having CMAKE_TOOLCHAIN_FILE as a dependency of BASE_TARGET means that
the CMAKE_TOOLCHAIN_FILE is generated before the building or import+check
of the cross-compiler depending on the chosen backend.
This may leads to some inconsistencies between the toolchain described in
CMAKE_TOOLCHAIN_FILE and the actual one.


Regards,

Sam

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk
  2012-03-07 19:34 ` [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk Thomas Petazzoni
  2012-03-09  6:50   ` Thomas De Schampheleire
@ 2012-03-10 11:56   ` Arnout Vandecappelle
  1 sibling, 0 replies; 42+ messages in thread
From: Arnout Vandecappelle @ 2012-03-10 11:56 UTC (permalink / raw)
  To: buildroot

On Wednesday 07 March 2012 20:34:23 Thomas Petazzoni wrote:
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
>  Makefile              |   49 +------------------------------------------------
>  docs/manual/manual.mk |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 49 insertions(+), 48 deletions(-)
>  create mode 100644 docs/manual/manual.mk

 Since this is generic documentation infrastructure, I'd rather put it in
docs/docs.mk.  Perhaps including a docs/manual/manual.mk containing the
last two lines:
+MANUAL_SOURCES = $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)
+$(eval $(call GENDOC,manual))


 Regards,
 Arnout

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

^ permalink raw reply	[flat|nested] 42+ messages in thread

* [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups
  2012-03-09 14:18     ` Thomas De Schampheleire
@ 2012-03-10 12:12       ` Arnout Vandecappelle
  0 siblings, 0 replies; 42+ messages in thread
From: Arnout Vandecappelle @ 2012-03-10 12:12 UTC (permalink / raw)
  To: buildroot

On Friday 09 March 2012 15:18:07 Thomas De Schampheleire wrote:
> On Fri, Mar 9, 2012 at 2:33 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
> > Hello,
> >
> > Le Fri, 9 Mar 2012 10:07:29 -0300,
> > Alexandre Pereira da Silva <aletes.xgr@gmail.com> a ?crit :
> >
> >> I think the pkg-* makefiles could be moved from the packages directory
> >> as they are used by the kernel and bootloaders as well.
> >> Maybe move them to the support directory.
> >
> > Yeah, I was also wondering about this. I don't know if support/ is the
> > right place, or if we need yet another top-level directory such as
> > include/ or mk/ or whatever. What are others opinion?
> 
> I don't think support/ is the right place, but I'm not against moving
> these files elsewhere.
> Not sure about the best name though...

 Many projects have a top-level 'mk' or 'make' directory for the common
make infrastructure.

 For me, however, support/mk sounds good as well.

 Regards,
 Arnout

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2012-03-10 12:12 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-07 19:34 [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas Petazzoni
2012-03-07 19:34 ` [Buildroot] [PATCH 01/13] Remove the DATE variable Thomas Petazzoni
2012-03-09  6:20   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 02/13] Remove cc-option: not used anywhere Thomas Petazzoni
2012-03-09  6:22   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 03/13] Remove filename extension crap for OS compatibility Thomas Petazzoni
2012-03-09  6:27   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 04/13] kconfig: do not use HOST_LOADLIBES anymore Thomas Petazzoni
2012-03-09  6:29   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 05/13] Rename Makefile.autotools.in to pkg-autotargets.mk Thomas Petazzoni
2012-03-09  6:35   ` Thomas De Schampheleire
2012-03-09  7:51     ` Thomas Petazzoni
2012-03-09  8:51       ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 06/13] Rename Makefile.cmake.in to pkg-cmaketargets.mk Thomas Petazzoni
2012-03-09  6:36   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 07/13] Split Makefile.package.in in pkg-download.mk, pkg-utils.mk and pkg-gentargets.mk Thomas Petazzoni
2012-03-09  6:40   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 08/13] pkg-*.mk: add some comments, update some existing comments Thomas Petazzoni
2012-03-09  6:45   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 09/13] Remove unused .fakeroot.* mechanism Thomas Petazzoni
2012-03-09  6:49   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 10/13] Move the manual build infrastructure to docs/manual/manual.mk Thomas Petazzoni
2012-03-09  6:50   ` Thomas De Schampheleire
2012-03-10 11:56   ` Arnout Vandecappelle
2012-03-07 19:34 ` [Buildroot] [PATCH 11/13] cmake: move creation of toolchain file to package/pkg-cmaketargets.mk Thomas Petazzoni
2012-03-09  6:54   ` Thomas De Schampheleire
2012-03-09  7:53     ` Thomas Petazzoni
2012-03-09  8:54       ` Thomas De Schampheleire
2012-03-09 20:13       ` Samuel Martin
2012-03-07 19:34 ` [Buildroot] [PATCH 12/13] package: remove unused STRIP_DISCARD_ALL variable Thomas Petazzoni
2012-03-09  6:56   ` Thomas De Schampheleire
2012-03-07 19:34 ` [Buildroot] [PATCH 13/13] package: move autotools specific stuff to pkg-autotargets.mk Thomas Petazzoni
2012-03-09  7:01   ` Thomas De Schampheleire
2012-03-09  7:55     ` Thomas Petazzoni
2012-03-09  9:04       ` Thomas De Schampheleire
2012-03-09  7:06 ` [Buildroot] [RFC] Request for comment for branch for-2012.05/misc-cleanups Thomas De Schampheleire
2012-03-09  7:56   ` Thomas Petazzoni
2012-03-09  9:55     ` Thomas De Schampheleire
2012-03-09 13:07 ` Alexandre Pereira da Silva
2012-03-09 13:33   ` Thomas Petazzoni
2012-03-09 14:18     ` Thomas De Schampheleire
2012-03-10 12:12       ` Arnout Vandecappelle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox