Compare commits

..

1 Commits

Author SHA1 Message Date
Peter Korsgaard
79ba278358 buildroot: fix version for 2009.02-rc4 2009-02-09 15:52:49 +00:00
3785 changed files with 828081 additions and 132483 deletions

14
.gitignore vendored
View File

@@ -1,14 +0,0 @@
/output
/dl
/.auto.deps
/.config.cmd
/.config.old
/..config.tmp
/.config
*.depend
*.o
/*.patch
/*.diff
*.orig
*.rej
*~

1275
CHANGES

File diff suppressed because it is too large Load Diff

339
COPYING
View File

@@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

236
Config.in
View File

@@ -1,6 +1,6 @@
#
mainmenu "Buildroot $BR2_VERSION Configuration"
mainmenu "Buildroot2 Configuration"
config BR2_HAVE_DOT_CONFIG
bool
@@ -8,33 +8,28 @@ config BR2_HAVE_DOT_CONFIG
config BR2_VERSION
string
option env="BR2_VERSION_FULL"
default "2009.02-rc4"
source "target/Config.in.arch"
source "target/device/Config.in"
menu "Build options"
menu "Commands"
config BR2_WGET
string "Wget command"
default "wget --passive-ftp -nd -t 3"
default "wget --passive-ftp -nd"
config BR2_SVN
string "Subversion (svn) command"
default "svn"
config BR2_SVN_CO
string "Subversion (svn) command to download source tree"
default "svn co"
config BR2_BZR
string "Bazaar (bzr) command"
default "bzr"
config BR2_SVN_UP
string "Subversion (svn) command to update source tree"
default "svn up"
config BR2_GIT
string "Git command"
default "git"
config BR2_LOCALFILES
string "Local files retrieval command"
default "cp"
string "Git command to download source tree"
default "git clone"
config BR2_ZCAT
string "zcat command"
@@ -56,13 +51,6 @@ config BR2_BZCAT
Default is "bzcat"
Other possible values include "bunzip2 -c" or "bzip2 -d -c".
config BR2_XZCAT
string "xzcat command"
default "xzcat"
help
Command to be used to extract a xz'ed file to stdout.
Default is "xzcat"
config BR2_TAR_OPTIONS
string "Tar options"
default ""
@@ -71,116 +59,129 @@ config BR2_TAR_OPTIONS
E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
and to be verbose.
endmenu
config BR2_DL_DIR
string "Download dir"
default "$(TOPDIR)/dl"
default "$(BASE_DIR)/dl"
help
Directory to store all the source files that we need to fetch.
If the Linux shell environment has defined the BUILDROOT_DL_DIR
environment variable, then this overrides this configuration item.
The default is $(TOPDIR)/dl
The default is $(BASE_DIR)/dl
config BR2_HOST_DIR
string "Host dir"
default "$(BASE_DIR)/host"
help
Directory to store all the binary files that are built for the host.
This includes the cross compilation toolchain when building the
internal buildroot toolchain.
The default is $(BASE_DIR)/host
menu "Mirrors and Download locations"
config BR2_PRIMARY_SITE
string "Primary download site"
config BR2_COPYTO
string "Copy result to..."
default ""
help
Primary site to download from. If this option is set then buildroot
will try to download package source first from this site and try the
default if the file is not found.
NOTE: This only works for packages using the Makefile.autotools.in
Setting this variable will (eventually) override
any other copyto configurations in buildroot.
config BR2_BACKUP_SITE
string "Backup download site"
default "http://sources.buildroot.net/"
source "target/device/Config.in.mirrors"
config BR2_STAGING_DIR
string "Toolchain and header file location?"
default "$(BUILD_DIR)/staging_dir"
help
Backup site to download from. If this option is set then buildroot
will fall back to download package sources from here if the
normal location fails.
This is the location where the toolchain will be installed. The
toolchain will not work if it is moved from this location.
Therefore, if you wish to package up a uClibc toolchain, it is
important that is is set to the final location where the toolchain
will be used.
config BR2_SOURCEFORGE_MIRROR
string "Sourceforge mirror site"
default "kent"
Most people will leave this set to the default value of
"$(BUILD_DIR)/staging_dir".
config BR2_FPU_SUFFIX
bool "Add '_nofpu' suffix for softfloat toolchains"
help
Sourceforge has a system of mirror sites. Some sites may be
closer to your location, and sometimes mirror sites go down
and are no longer available. This option allows you to select
your preferred Sourceforge mirror site.
If the toolchain is configured to use softfloat, then
the "_nofpu" suffix will be added to the toolchain build
directory name and to any rootfs image name
The list of mirrors is available here:
http://sourceforge.net/apps/trac/sourceforge/wiki/Mirrors
config BR2_KERNEL_MIRROR
string "Kernel.org mirror"
default "http://www.kernel.org/pub/"
config BR2_TOPDIR_PREFIX
string "Custom build dir prefix"
default ""
help
kernel.org is mirrored on a number of servers around the world.
The following allows you to select your preferred mirror.
Add a custom string to the beginning of the build directories.
Have a look on the kernel.org site for a list of mirrors, then enter
the URL to the base directory. Examples:
build_ARCH -> [PREFIX]_build_ARCH
toolchain_build_ARCH -> [PREFIX]_toolchain_build_ARCH
http://www.XX.kernel.org/pub (XX = country code)
http://mirror.aarnet.edu.au/pub/ftp.kernel.org
config BR2_GNU_MIRROR
string "GNU Software mirror"
default "http://ftp.gnu.org/pub/gnu"
config BR2_TOPDIR_SUFFIX
string "Custom build dir suffix"
default ""
help
GNU has multiple software mirrors scattered around the world.
The following allows you to select your preferred mirror.
Add a custom string to the end of the build directories.
Have a look on the gnu.org site for a list of mirrors, then enter
the URL to the base directory. Examples:
build_ARCH -> build_ARCH_[SUFFIX]
toolchain_build_ARCH -> toolchain_build_ARCH_[SUFFIX]
http://ftp.gnu.org/pub/gnu
http://mirror.aarnet.edu.au/pub/gnu
config BR2_DEBIAN_MIRROR
string "Debian Software mirror"
default "http://ftp.debian.org"
config BR2_GNU_BUILD_SUFFIX
string "GNU build hostname suffix"
default "pc-linux-gnu"
help
Debian has multiple software mirrors scattered around the world.
The following allows you to select your preferred mirror.
The string used to pass to configure scripts via the
--build= option. Just specify the suffix here, the leading
arch will be filled in automatically.
Usually, just add your country code like XX here:
http://ftp.XX.debian.org
Here's some copy and paste build host options for you:
linux: pc-linux-gnu
cygwin: pc-cygwin
os x: apple-darwin7 / apple-darwin8
endmenu
config BR2_GNU_TARGET_SUFFIX
string "GNU target suffix"
default "linux-uclibcgnueabi" if BR2_ARM_EABI
default "linux-uclibc"
help
The string used to pass to configure scripts via the
--target= option. Just specify the suffix here, the leading
arch will be filled in automatically.
Most users will want to stick with the default setting, though
other users (most notably ARM EABI) like to add on to this in
order to stay in line with gcc conventions.
Default options are:
linux-uclibcgnueabi for ARM EABI
linux-uclibc for the rest
gnuhurd-uclibc for the hurd
config BR2_JLEVEL
int "Number of jobs to run simultaneously"
default "2"
default "1"
help
Number of jobs to run simultaneously
config BR2_CCACHE
bool "Enable compiler cache"
config BR2_PREFER_IMA
bool "prefer IMA compiles"
help
This option will enable the use of ccache, a compiler
cache. It will cache the result of previous builds to speed
up future builds. The cache is stored in
$HOME/.buildroot-ccache.
Where possible, compile package with Inter Module Analysis.
This potentially uses alot of system resources on your compile
host with the benefit of creating smaller binaries for the target.
If unsure, say No.
WARNING: This is highly experimental at the moment.
config BR2_DEPRECATED
bool "Show packages that are deprecated or obsolete"
help
This option hides outdated/obsolete versions of packages.
config BR2_RECENT
bool "Show packages that are of the latest major version"
default y
help
This option show recent versions of packages.
config BR2_CONFIG_CACHE
bool "Use a central configure cache file"
help
This determines if a central config cache is used by
packages, reducing the configure time for packages as each
one caches its findings.
config BR2_ENABLE_DEBUG
bool "build packages with debugging symbols"
select BR2_PACKAGE_GDB_SERVER
@@ -230,14 +231,14 @@ choice
config BR2_STRIP_strip
bool "strip"
depends on !BR2_ELF2FLT
depends on !BR2_ENABLE_DEBUG && !BR2_ELF2FLT
help
strip is the normal strip command
config BR2_STRIP_sstrip
bool "sstrip"
select BR2_PACKAGE_SSTRIP_HOST
depends on !BR2_ELF2FLT
depends on !BR2_ENABLE_DEBUG && !BR2_ELF2FLT
help
sstrip is a strip that discards more than the normal strip
@@ -255,11 +256,13 @@ choice
config BR2_OPTIMIZE_0
bool "optimization level 0"
depends on !BR2_PACKAGE_LINUX
help
Do not optimize. This is the default.
config BR2_OPTIMIZE_1
bool "optimization level 1"
depends on !BR2_PACKAGE_LINUX
help
Optimize. Optimizing compilation takes somewhat more time,
and a lot more memory for a large function. With -O, the
@@ -324,11 +327,24 @@ config BR2_PREFER_STATIC_LIB
WARNING: This is highly experimental at the moment.
config BR2_HAVE_MANPAGES
bool "manpages on the target"
help
Leave the manpages on the target.
If you say n here, your target will not contain any
manpage.
config BR2_HAVE_INFOPAGES
bool "infopages on the target"
help
Leave the infopages on the target.
If you say n here, your target will not contain any
infopage.
config BR2_HAVE_DOCUMENTATION
bool "documentation on the target"
help
Install the documentation, including manual pages and info
pages, on the target.
Leave the documentation on the target.
If you say n here, your target will not contain any
documentation.
@@ -338,26 +354,12 @@ config BR2_HAVE_DEVFILES
Install headers and static libraries in the
target filesystem
config BR2_PACKAGE_OVERRIDE_FILE
string "location of a package override file"
default "$(TOPDIR)/local.mk"
help
A package override file is a short makefile that contains
variable definitions of the form <pkg>_OVERRIDE_SRCDIR,
which allows to tell Buildroot to use an existing directory
as the source directory for a particular package. See the
Buildroot documentation for more details on this feature.
source package/gnuconfig/Config.in
endmenu
source "toolchain/Config.in"
source "target/generic/Config.in"
source "package/Config.in"
source "fs/Config.in"
source "boot/Config.in"
source "linux/Config.in"
source "target/Config.in"

704
Makefile
View File

@@ -1,7 +1,7 @@
# Makefile for buildroot2
#
# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
# Copyright (C) 2006-2011 by the Buildroot developers <buildroot@uclibc.org>
# Copyright (C) 2006-2009 by the Buildroot developers <buildroot@uclibc.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -22,68 +22,46 @@
# Just run 'make menuconfig', configure stuff, then run 'make'.
# You shouldn't need to mess with anything beyond this point...
#--------------------------------------------------------------
# Set and export the version string
export BR2_VERSION:=2011.11-rc2
# This top-level Makefile can *not* be executed in parallel
.NOTPARALLEL:
# absolute path
TOPDIR:=$(shell pwd)
TOPDIR=./
CONFIG_CONFIG_IN=Config.in
CONFIG=support/kconfig
CONFIG_DEFCONFIG=.defconfig
CONFIG=package/config
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)
export BR2_VERSION_FULL:=$(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlocalversion)
noconfig_targets:=menuconfig config oldconfig randconfig \
defconfig allyesconfig allnoconfig release tags \
source-check help
noconfig_targets:=menuconfig nconfig gconfig xconfig config oldconfig randconfig \
defconfig %_defconfig savedefconfig allyesconfig allnoconfig silentoldconfig release \
randpackageconfig allyespackageconfig allnopackageconfig \
source-check
# Strip quotes and then whitespaces
qstrip=$(strip $(subst ",,$(1)))
#"))
# Use shell variables, if defined
ifneq ($(BUILDROOT_LOCAL),)
BR2_LOCAL:=$(BUILDROOT_LOCAL)
else
BR2_LOCAL:=$(TOPDIR)/local
endif
# Variables for use in Make constructs
comma:=,
empty:=
space:=$(empty) $(empty)
ifneq ("$(origin O)", "command line")
O:=output
CONFIG_DIR:=$(TOPDIR)
NEED_WRAPPER=
else
# other packages might also support Linux-style out of tree builds
# with the O=<dir> syntax (E.G. Busybox does). As make automatically
# forwards command line variable definitions those packages get very
# confused. Fix this by telling make to not do so
MAKEOVERRIDES =
# strangely enough O is still passed to submakes with MAKEOVERRIDES
# (with make 3.81 atleast), the only thing that changes is the output
# of the origin function (command line -> environment).
# Unfortunately some packages don't look at origin (E.G. uClibc 0.9.31+)
# To really make O go away, we have to override it.
override O:=$(O)
CONFIG_DIR:=$(O)
# we need to pass O= everywhere we call back into the toplevel makefile
EXTRAMAKEARGS = O=$(O)
NEED_WRAPPER=y
endif
# $(shell find . -name *_defconfig |sed 's/.*\///')
# Pull in the user's configuration file
ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
-include $(CONFIG_DIR)/.config
ifeq ($(BOARD),)
# if "make BOARD=xyz" command
-include .config
else
# if "make" command
-include $(BR2_LOCAL)/$(BOARD)/$(BOARD).config
endif
endif
# Override BR2_DL_DIR if shell variable defined
ifneq ($(BUILDROOT_DL_DIR),)
BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
endif
LOCAL:=$(BR2_LOCAL)
# To put more focus on warnings, be less verbose as default
# Use 'make V=1' to see the full commands
@@ -125,14 +103,11 @@ HOSTAS:=as
endif
ifndef HOSTCC
HOSTCC:=gcc
HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
else
endif
HOSTCC_NOCCACHE:=$(HOSTCC)
ifndef HOSTCXX
HOSTCXX:=g++
HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
endif
HOSTCXX_NOCCACHE:=$(HOSTCXX)
ifndef HOSTFC
HOSTFC:=gfortran
endif
@@ -150,24 +125,24 @@ HOSTNM:=nm
endif
HOSTAR:=$(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar)
HOSTAS:=$(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as)
HOSTCC:=$(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc)
HOSTCXX:=$(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++)
HOSTFC:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo || which g77 || type -p g77 || echo gfortran)
HOSTCPP:=$(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp)
HOSTLD:=$(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld)
HOSTLN:=$(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln)
HOSTNM:=$(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm)
ifndef CFLAGS_FOR_BUILD
CFLAGS_FOR_BUILD:=-g -O2
endif
ifndef CXXFLAGS_FOR_BUILD
CXXFLAGS_FOR_BUILD:=-g -O2
endif
ifndef FCFLAGS_FOR_BUILD
FCFLAGS_FOR_BUILD:=-g -O2
endif
export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTFC HOSTLD
export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE
# bash prints the name of the directory on 'cd <dir>' if CDPATH is
# set, so unset it here to not cause problems. Notice that the export
# line doesn't affect the environment of $(shell ..) calls, so
# explictly throw away any output from 'cd' here.
export CDPATH:=
BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd)
$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
BUILD_DIR:=$(BASE_DIR)/build
ifeq ($(BR2_HAVE_DOT_CONFIG),y)
@@ -186,105 +161,62 @@ cc-option=$(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev
#############################################################
unexport CROSS_COMPILE
unexport ARCH
unexport CC
unexport CXX
unexport CPP
unexport CFLAGS
unexport CXXFLAGS
unexport GREP_OPTIONS
GNU_HOST_NAME:=$(shell support/gnuconfig/config.guess)
#############################################################
#
# Setup the proper filename extensions for the host
#
##############################################################
ifneq ($(findstring linux,$(GNU_HOST_NAME)),)
ifneq ($(findstring linux,$(BR2_GNU_BUILD_SUFFIX)),)
HOST_EXEEXT:=
HOST_LIBEXT:=.a
HOST_SHREXT:=.so
endif
ifneq ($(findstring apple,$(GNU_HOST_NAME)),)
ifneq ($(findstring apple,$(BR2_GNU_BUILD_SUFFIX)),)
HOST_EXEEXT:=
HOST_LIBEXT:=.a
HOST_SHREXT:=.dylib
endif
ifneq ($(findstring cygwin,$(GNU_HOST_NAME)),)
ifneq ($(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)),)
HOST_EXEEXT:=.exe
HOST_LIBEXT:=.lib
HOST_SHREXT:=.dll
HOST_LOADLIBES=-lcurses -lintl
HOST_LOADLIBES="-lcurses -lintl"
export HOST_LOADLIBES
endif
ifneq ($(findstring mingw,$(GNU_HOST_NAME)),)
ifneq ($(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)),)
HOST_EXEEXT:=.exe
HOST_LIBEXT:=.lib
HOST_SHREXT:=.dll
endif
# The preferred type of libs we build for the target
ifeq ($(BR2_PREFER_STATIC_LIB),y)
LIBTGTEXT=.a
#PREFERRED_LIB_FLAGS:=--disable-shared --enable-static
else
LIBTGTEXT=.so
#PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
endif
PREFERRED_LIB_FLAGS:=--enable-static --enable-shared
##############################################################
#
# The list of stuff to build for the target toolchain
# along with the packages to build for the target.
#
##############################################################
ifeq ($(BR2_CCACHE),y)
BASE_TARGETS += host-ccache
endif
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
BASE_TARGETS += uclibc-configured host-binutils cross_compiler uclibc-target-utils kernel-headers
ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers
else
BASE_TARGETS += uclibc
BASE_TARGETS:=uclibc
endif
TARGETS:=
# silent mode requested?
QUIET:=$(if $(findstring s,$(MAKEFLAGS)),-q)
# setup our paths
include project/Makefile.in
# Strip off the annoying quoting
ARCH:=$(call qstrip,$(BR2_ARCH))
ifeq ($(ARCH),xtensa)
ARCH:=$(ARCH)_$(call qstrip,$(BR2_xtensa_core_name))
endif
KERNEL_ARCH:=$(shell echo "$(ARCH)" | sed -e "s/-.*//" \
-e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/bfin/blackfin/ \
-e s/parisc64/parisc/ \
-e s/powerpc64/powerpc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh.*/sh/)
ZCAT:=$(call qstrip,$(BR2_ZCAT))
BZCAT:=$(call qstrip,$(BR2_BZCAT))
XZCAT:=$(call qstrip,$(BR2_XZCAT))
TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
GNU_TARGET_SUFFIX:=-$(call qstrip,$(BR2_GNU_TARGET_SUFFIX))
# packages compiled for the host go here
HOST_DIR:=$(call qstrip,$(BR2_HOST_DIR))
# stamp (dependency) files go here
STAMP_DIR:=$(BASE_DIR)/stamps
BINARIES_DIR:=$(BASE_DIR)/images
TARGET_DIR:=$(BASE_DIR)/target
TOOLCHAIN_DIR=$(BASE_DIR)/toolchain
TARGET_SKELETON=$(TOPDIR)/fs/skeleton
BR2_DEPENDS_DIR=$(BUILD_DIR)/buildroot-config
ifeq ($(BR2_CCACHE),y)
CCACHE:=$(HOST_DIR)/usr/bin/ccache
CCACHE_CACHE_DIR=$(HOME)/.buildroot-ccache
HOSTCC := $(CCACHE) $(HOSTCC)
HOSTCXX := $(CCACHE) $(HOSTCXX)
endif
BR2_DEPENDS_DIR=$(PROJECT_BUILD_DIR)/buildroot-config
include toolchain/Makefile.in
include package/Makefile.in
@@ -298,37 +230,42 @@ include package/Makefile.in
all: world
# In this section, we need .config
include .config.cmd
include project/*.mk
# We also need the various per-package makefiles, which also add
# each selected package to TARGETS if that package was selected
# in the .config file.
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
include toolchain/toolchain-buildroot.mk
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
include toolchain/toolchain-external.mk
else ifeq ($(BR2_TOOLCHAIN_CTNG),y)
include toolchain/toolchain-crosstool-ng.mk
ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
# avoid pulling in external toolchain which is broken for toplvl parallel builds
# Explicit ordering:
include toolchain/dependencies/dependencies.mk
include toolchain/binutils/binutils.mk
include toolchain/ccache/ccache.mk
include toolchain/elf2flt/elf2flt.mk
include toolchain/gcc/gcc-uclibc-3.x.mk
include toolchain/gcc/gcc-uclibc-4.x.mk
include toolchain/gdb/gdb.mk
include toolchain/kernel-headers/kernel-headers.mk
include toolchain/mklibs/mklibs.mk
include toolchain/sstrip/sstrip.mk
include toolchain/uClibc/uclibc.mk
else
include toolchain/*/*.mk
endif
# Include the package override file if one has been provided in the
# configuration.
PACKAGE_OVERRIDE_FILE=$(call qstrip,$(BR2_PACKAGE_OVERRIDE_FILE))
ifneq ($(PACKAGE_OVERRIDE_FILE),)
-include $(PACKAGE_OVERRIDE_FILE)
ifeq ($(BR2_PACKAGE_LINUX),y)
TARGETS+=linux26-modules
endif
include package/*/*.mk
include boot/common.mk
TARGETS+=target-devfiles
# target stuff is last so it can override anything else
include target/Makefile.in
include linux/linux.mk
TARGETS+=target-finalize
ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
TARGETS+=target-purgelocales
endif
include fs/common.mk
TARGETS+=erase-fakeroots
@@ -336,61 +273,29 @@ TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
# host-* dependencies have to be handled specially, as those aren't
# visible in Kconfig and hence not added to a variable like TARGETS.
# instead, find all the host-* targets listed in each <PKG>_DEPENDENCIES
# variable for each enabled target.
# Notice: this only works for newstyle gentargets/autotargets packages
TARGETS_HOST_DEPS = $(sort $(filter host-%,$(foreach dep,\
$(addsuffix _DEPENDENCIES,$(call UPPERCASE,$(TARGETS))),\
$($(dep)))))
# Host packages can in turn have their own dependencies. Likewise find
# all the package names listed in the HOST_<PKG>_DEPENDENCIES for each
# host package found above. Ideally this should be done recursively until
# no more packages are found, but that's hard to do in make, so limit to
# 1 level for now.
HOST_DEPS = $(sort $(foreach dep,\
$(addsuffix _DEPENDENCIES,$(call UPPERCASE,$(TARGETS_HOST_DEPS))),\
$($(dep))))
HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
# all targets depend on the crosscompiler and it's prerequisites
$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
dirs: $(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
$(BR2_DEPENDS_DIR): .config
rm -rf $@
mkdir -p $(@D)
cp -dpRf $(CONFIG)/buildroot-config $@
$(BASE_TARGETS): dirs $(O)/toolchainfile.cmake
dirs: $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps
$(BUILD_DIR)/buildroot-config/auto.conf: $(CONFIG_DIR)/.config
$(MAKE) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" silentoldconfig
$(BASE_TARGETS): dirs
prepare: $(BUILD_DIR)/buildroot-config/auto.conf
world: dependencies dirs target-host-info $(BASE_TARGETS) $(TARGETS_ALL)
world: prepare dependencies dirs $(BASE_TARGETS) $(TARGETS_ALL)
$(O)/toolchainfile.cmake:
@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 \
.PHONY: all world dirs clean dirclean distclean source \
$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(STAMP_DIR)
$(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps
#############################################################
#
@@ -398,22 +303,26 @@ $(O)/toolchainfile.cmake:
# dependencies anywhere else
#
#############################################################
$(DL_DIR) $(TOOLCHAIN_DIR) $(BUILD_DIR) $(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR):
$(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps $(BINARIES_DIR):
@mkdir -p $@
$(STAGING_DIR):
@mkdir -p $(STAGING_DIR)/bin
@mkdir -p $(STAGING_DIR)/lib
ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
@mkdir -p $(STAGING_DIR)/usr/lib
@mkdir -p $(STAGING_DIR)/usr/include
@mkdir -p $(STAGING_DIR)/usr/bin
@ln -snf $(STAGING_DIR) $(BASE_DIR)/staging
ifeq ($(BR2_ROOTFS_SKELETON_CUSTOM),y)
TARGET_SKELETON=$(BR2_ROOTFS_SKELETON_CUSTOM_PATH)
else
ifneq ($(BR2_TOOLCHAIN_EXTERNAL),y)
@ln -snf . $(STAGING_DIR)/usr
@mkdir -p $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)
@ln -snf ../lib $(STAGING_DIR)/usr/lib
@ln -snf ../lib $(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
endif
endif
@mkdir -p $(STAGING_DIR)/usr/include
$(BUILD_DIR)/.root:
$(PROJECT_BUILD_DIR)/.root:
mkdir -p $(TARGET_DIR)
if ! [ -d "$(TARGET_DIR)/bin" ]; then \
if [ -d "$(TARGET_SKELETON)" ]; then \
@@ -421,85 +330,63 @@ $(BUILD_DIR)/.root:
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
-find $(TARGET_DIR) -type d -name CVS -o -name .svn | xargs rm -rf
-find $(TARGET_DIR) -type f -name .empty | xargs rm -rf
touch $@
$(TARGET_DIR): $(BUILD_DIR)/.root
$(TARGET_DIR): $(PROJECT_BUILD_DIR)/.root
erase-fakeroots:
rm -f $(BUILD_DIR)/.fakeroot*
rm -f $(PROJECT_BUILD_DIR)/.fakeroot*
target-finalize:
target-devfiles:
ifeq ($(BR2_HAVE_DEVFILES),y)
( support/scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
else
rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/aclocal
find $(TARGET_DIR)/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
find $(TARGET_DIR)/usr/lib \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f
endif
ifneq ($(BR2_PACKAGE_GDB),y)
rm -rf $(TARGET_DIR)/usr/share/gdb
endif
ifneq ($(BR2_HAVE_DOCUMENTATION),y)
rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man
rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc
rm -rf $(TARGET_DIR)/usr/share/gtk-doc
-rmdir $(TARGET_DIR)/usr/share 2>/dev/null
endif
ifeq ($(BR2_PACKAGE_PYTHON_PY_ONLY),y)
find $(TARGET_DIR)/usr/lib/ -name '*.pyc' -print0 | xargs -0 rm -f
endif
ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y)
find $(TARGET_DIR)/usr/lib/ -name '*.py' -print0 | xargs -0 rm -f
endif
find $(TARGET_DIR) -type f -perm +111 '!' -name 'libthread_db*.so*' | \
xargs $(STRIPCMD) 2>/dev/null || true
find $(TARGET_DIR)/lib/modules -type f -name '*.ko' | \
xargs -r $(KSTRIPCMD) || true
mkdir -p $(TARGET_DIR)/etc
# Mandatory configuration file and auxilliary cache directory
# for recent versions of ldconfig
touch $(TARGET_DIR)/etc/ld.so.conf
mkdir -p $(TARGET_DIR)/var/cache/ldconfig
if [ -x "$(TARGET_CROSS)ldconfig" ]; \
then \
$(TARGET_CROSS)ldconfig -r $(TARGET_DIR); \
else \
/sbin/ldconfig -r $(TARGET_DIR); \
fi
echo $(BR2_VERSION_FULL) > $(TARGET_DIR)/etc/br-version
ifneq ($(BR2_ROOTFS_POST_BUILD_SCRIPT),"")
$(BR2_ROOTFS_POST_BUILD_SCRIPT) $(TARGET_DIR)
rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
find $(TARGET_DIR)/usr/lib -name '*.a' -delete
find $(TARGET_DIR)/lib -name '*.a' -delete
find $(TARGET_DIR)/usr/lib -name '*.la' -delete
find $(TARGET_DIR)/lib -name '*.la' -delete
endif
ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
LOCALE_WHITELIST=$(BUILD_DIR)/locales.nopurge
LOCALE_NOPURGE=$(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST))
source: $(TARGETS_SOURCE) $(HOST_SOURCE)
target-purgelocales:
rm -f $(LOCALE_WHITELIST)
for i in $(LOCALE_NOPURGE); do echo $$i >> $(LOCALE_WHITELIST); done
for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/man /usr/share/man)); \
do \
for lang in $$(cd $$dir; ls .|grep -v man); \
do \
grep -qx $$lang $(LOCALE_WHITELIST) || rm -rf $$dir/$$lang; \
done; \
done
endif
source: dirs $(TARGETS_SOURCE) $(HOST_SOURCE)
_source-check:
$(MAKE) SPIDER=--spider source
external-deps:
@$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source | sort -u
@$(MAKE) -Bs BR2_WGET=$(TOPDIR)/toolchain/wget-show-external-deps.sh \
SPIDER=--spider source
#############################################################
#
# Cleanup and misc junk
#
#############################################################
clean: $(TARGETS_CLEAN)
rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps
dirclean: $(TARGETS_DIRCLEAN)
rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps
distclean:
ifeq ($(DL_DIR),$(BASE_DIR)/dl)
rm -rf $(DL_DIR)
endif
rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \
$(LINUX_KERNEL) $(BASE_DIR)/include \
.config.cmd
$(MAKE) -C $(CONFIG) clean
sourceball:
rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR)
set -e; \
cd ..; \
rm -f buildroot.tar.bz2; \
tar -cvf buildroot.tar buildroot; \
bzip2 -9 buildroot.tar; \
show-targets:
@echo $(TARGETS)
else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
@@ -511,130 +398,112 @@ all: menuconfig
HOSTCFLAGS=$(CFLAGS_FOR_BUILD)
export HOSTCFLAGS
$(BUILD_DIR)/buildroot-config/%onf:
mkdir -p $(@D)/lxdialog
$(MAKE) CC="$(HOSTCC_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F)
$(CONFIG)/conf:
@mkdir -p $(CONFIG)/buildroot-config
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf
-@if [ ! -f .config ]; then \
cp $(CONFIG_DEFCONFIG) .config; \
fi
$(CONFIG)/mconf:
@mkdir -p $(CONFIG)/buildroot-config
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
-@if [ ! -f .config ]; then \
cp $(CONFIG_DEFCONFIG) .config; \
fi
COMMON_CONFIG_ENV = \
KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \
BUILDROOT_CONFIG=$(CONFIG_DIR)/.config
menuconfig: $(CONFIG)/mconf
@mkdir -p $(CONFIG)/buildroot-config
@if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/mconf $(CONFIG_CONFIG_IN); then \
test -f .config.cmd || rm -f .config; \
fi
xconfig: $(BUILD_DIR)/buildroot-config/qconf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
config: $(CONFIG)/conf
@mkdir -p $(CONFIG)/buildroot-config
@KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/conf $(CONFIG_CONFIG_IN)
gconfig: $(BUILD_DIR)/buildroot-config/gconf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) srctree=$(TOPDIR) $< $(CONFIG_CONFIG_IN)
oldconfig: $(CONFIG)/conf
@mkdir -p $(CONFIG)/buildroot-config
@KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
menuconfig: $(BUILD_DIR)/buildroot-config/mconf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
randconfig: $(CONFIG)/conf
@mkdir -p $(CONFIG)/buildroot-config
@KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
nconfig: $(BUILD_DIR)/buildroot-config/nconf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
allyesconfig: $(CONFIG)/conf
cat $(CONFIG_DEFCONFIG) > .config
@mkdir -p $(CONFIG)/buildroot-config
@KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
#sed -i -e "s/^CONFIG_DEBUG.*/# CONFIG_DEBUG is not set/" .config
config: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
allnoconfig: $(CONFIG)/conf
@mkdir -p $(CONFIG)/buildroot-config
@KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
oldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --oldconfig $(CONFIG_CONFIG_IN)
randconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --randconfig $(CONFIG_CONFIG_IN)
allyesconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --allyesconfig $(CONFIG_CONFIG_IN)
allnoconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --allnoconfig $(CONFIG_CONFIG_IN)
randpackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
@$(COMMON_CONFIG_ENV) \
KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
$< --randconfig $(CONFIG_CONFIG_IN)
@rm -f $(CONFIG_DIR)/.config.nopkg
allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
@$(COMMON_CONFIG_ENV) \
KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
$< --allyesconfig $(CONFIG_CONFIG_IN)
@rm -f $(CONFIG_DIR)/.config.nopkg
allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@grep -v BR2_PACKAGE_ $(CONFIG_DIR)/.config > $(CONFIG_DIR)/.config.nopkg
@$(COMMON_CONFIG_ENV) \
KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
$< --allnoconfig $(CONFIG_CONFIG_IN)
@rm -f $(CONFIG_DIR)/.config.nopkg
silentoldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
$(COMMON_CONFIG_ENV) $< --silentoldconfig $(CONFIG_CONFIG_IN)
defconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --defconfig $(CONFIG_CONFIG_IN)
%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(TOPDIR)/configs/%_defconfig outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --defconfig=$(TOPDIR)/configs/$@ $(CONFIG_CONFIG_IN)
savedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
@mkdir -p $(BUILD_DIR)/buildroot-config
@$(COMMON_CONFIG_ENV) $< --savedefconfig=$(CONFIG_DIR)/defconfig $(CONFIG_CONFIG_IN)
defconfig: $(CONFIG)/conf
@mkdir -p $(CONFIG)/buildroot-config
@KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/conf -d $(CONFIG_CONFIG_IN)
# check if download URLs are outdated
source-check: allyesconfig
$(MAKE) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
$(MAKE) _source-check
#############################################################
#
# Cleanup and misc junk
#
#############################################################
# outputmakefile generates a Makefile in the output directory, if using a
# separate output directory. This allows convenient use of make in the
# output directory.
outputmakefile:
ifeq ($(NEED_WRAPPER),y)
$(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)
endif
clean:
rm -rf $(STAGING_DIR) $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \
$(STAMP_DIR) $(BUILD_DIR) $(TOOLCHAIN_DIR) $(BASE_DIR)/staging
rm -f .config .config.old .config.cmd .tmpconfig.h .lognr.*
-$(MAKE) -C $(CONFIG) clean
distclean: clean
ifeq ($(DL_DIR),$(TOPDIR)/dl)
rm -rf $(DL_DIR)
endif
ifeq ($(O),output)
rm -rf $(O)
endif
rm -rf $(CONFIG_DIR)/.config $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/.auto.deps
rm -rf sources/*
endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
flush:
rm -f $(PROJECT_BUILD_DIR)/tgt-config.cache
%_defconfig: $(CONFIG)/conf
cp $(shell find ./target/ -name $@) .config
-@$(MAKE) oldconfig
update:
cp .config $(BOARD_PATH)/$(PROJECT)_defconfig
configured: dirs host-sed kernel-headers uclibc-config busybox-config linux26-config
prepatch: gcc-patched binutils-patched gdb-patched uclibc-patched
.lognr.$(PROJECT):
@echo "0" > .lognr.$(PROJECT)
log: .lognr.$(PROJECT)
@expr `cat .lognr.$(PROJECT)` + 1 > .lognr.$(PROJECT)
@echo Creating $(PROJECT)-`cat .lognr.$(PROJECT)`.log
@$(MAKE) > $(PROJECT)-`cat .lognr.$(PROJECT)`.log 2>&1
cross: $(BASE_TARGETS)
help:
@echo 'Cleaning:'
@echo ' clean - delete all files created by build'
@echo ' clean - delete temporary files created by build'
@echo ' distclean - delete all non-source files (including .config)'
@echo
@echo 'Build:'
@@ -642,111 +511,26 @@ help:
@echo
@echo 'Configuration:'
@echo ' menuconfig - interactive curses-based configurator'
@echo ' nconfig - interactive ncurses-based configurator'
@echo ' xconfig - interactive Qt-based configurator'
@echo ' gconfig - interactive GTK-based configurator'
@echo ' oldconfig - resolve any unresolved symbols in .config'
@echo ' randconfig - New config with random answer to all options'
@echo ' defconfig - New config with default answer to all options'
@echo ' savedefconfig - Save current config as ./defconfig (minimal config)'
@echo ' allyesconfig - New config where all options are accepted with yes'
@echo ' allnoconfig - New config where all options are answered with no'
@echo ' randpackageconfig - New config with random answer to package options'
@echo ' allyespackageconfig - New config where pkg options are accepted with yes'
@echo ' allnopackageconfig - New config where package options are answered with no'
ifeq ($(BR2_PACKAGE_BUSYBOX),y)
@echo ' busybox-menuconfig - Run BusyBox menuconfig'
endif
ifeq ($(BR2_LINUX_KERNEL),y)
@echo ' linux-menuconfig - Run Linux kernel menuconfig'
@echo ' linux-savedefconfig - Run Linux kernel savedefconfig'
endif
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
@echo ' uclibc-menuconfig - Run uClibc menuconfig'
endif
ifeq ($(BR2_TOOLCHAIN_CTNG),y)
@echo ' ctng-menuconfig - Run crosstool-NG menuconfig'
endif
ifeq ($(BR2_TARGET_BAREBOX),y)
@echo ' barebox-menuconfig - Run barebox menuconfig'
@echo ' barebox-savedefconfig - Run barebox savedefconfig'
endif
@echo
@echo 'Documentation:'
@echo ' manual - build manual in HTML, split HTML, PDF and txt'
@echo ' manual-html - build manual in HTML'
@echo ' manual-split-html - build manual in split HTML'
@echo ' manual-pdf - build manual in PDF'
@echo ' manual-txt - build manual in txt'
@echo ' manual-epub - build manual in ePub'
@echo ' configured - make {uclibc/busybox/linux26}-config'
@echo ' saveconfig - save current configuration under local/<project>'
@echo ' getconfig - restore saved configuration from local/<project>'
@echo
@echo 'Miscellaneous:'
@echo ' source - download all sources needed for offline-build'
@echo ' source-check - check all packages for valid download URLs'
@echo ' external-deps - list external packages used'
@echo ' flush - flush configuration cache'
@echo
@echo ' make V=0|1 - 0 => quiet build (default), 1 => verbose build'
@echo ' make O=dir - Locate all output files in "dir", including .config'
@echo
@$(foreach b, $(sort $(notdir $(wildcard $(TOPDIR)/configs/*_defconfig))), \
printf " %-35s - Build for %s\\n" $(b) $(b:_defconfig=);)
@echo
@echo 'See docs/README, or generate the Buildroot manual for further details'
@echo 'See docs/README and docs/buildroot.html for further details'
@echo
release: OUT=buildroot-$(BR2_VERSION)
release: distclean
OUT=buildroot-$$(grep -A2 BR2_VERSION $(CONFIG_CONFIG_IN)|grep default|cut -f2 -d\"); \
rm -rf ../$$OUT*; cp -al . ../$$OUT; cd ..; \
tar cfz $$OUT.tar.gz --exclude .svn --exclude .git --exclude \*~ $$OUT; \
rm -rf $$OUT
release:
git archive --format=tar --prefix=$(OUT)/ master|gzip -9 >$(OUT).tar.gz
################################################################################
# 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 $$(O)/docs/$(1)/$(2)
$(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))
.PHONY: $(noconfig_targets)
.PHONY: dummy subdirs release distclean clean config oldconfig \
menuconfig tags check test depend defconfig help

14
TODO Normal file
View File

@@ -0,0 +1,14 @@
Buildroot2 TODOs
- fix packages/Makefile.autotools.in to use a package-imposed patchdir
(Ivan Kuten)
- convert all packages that use autoconf to use the infrastructure of
packages/Makefile.autotools.in
- fix setting of flags for packages
- stabilize for a 0.10.0 release
- think about using a common --config-cache for configure
Should take care of expanding TARGET_CONFIGURE_ARGS for cross compiles
to working presets.

View File

@@ -1,89 +0,0 @@
CONFIG_EXPERIMENTAL=y
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SYSVIPC=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_BLK_DEV_INITRD=y
CONFIG_SLAB=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MACH_VERSATILE_AB=y
CONFIG_PCI=y
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
CONFIG_LEDS=y
CONFIG_LEDS_CPU=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="root=1f03 mem=32M"
CONFIG_VFP=y
CONFIG_PM=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_ADV_OPTIONS=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_ARM_INTEGRATOR=y
CONFIG_BLK_DEV_RAM=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_SYM53C8XX_2=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_SMC91X=y
# CONFIG_SERIO_SERPORT is not set
CONFIG_SERIO_AMBAKMI=y
CONFIG_SERIAL_8250=m
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_LEGACY_PTY_COUNT=16
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=m
# CONFIG_HWMON is not set
CONFIG_FB=y
CONFIG_FB_ARMCLCD=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FONTS=y
CONFIG_FONT_ACORN_8x8=y
CONFIG_SOUND=y
CONFIG_SND=m
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_ARMAACI=m
CONFIG_MMC=y
CONFIG_MMC_ARMMMCI=m
CONFIG_EXT2_FS=y
CONFIG_VFAT_FS=m
CONFIG_TMPFS=y
CONFIG_JFFS2_FS=y
CONFIG_CRAMFS=y
CONFIG_MINIX_FS=y
CONFIG_ROMFS_FS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_ROOT_NFS=y
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
CONFIG_PARTITION_ADVANCED=y
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_ISO8859_1=m
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y

View File

@@ -1,6 +0,0 @@
Run the emulation with:
qemu-system-arm -M versatilepb -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=scsi -append "root=/dev/sda console=ttyAMA0,115200" -serial stdio
The login prompt will appear in the terminal that started Qemu. The
graphical window is the framebuffer.

View File

@@ -1,77 +0,0 @@
CONFIG_MIPS_MALTA=y
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS32_R2=y
CONFIG_MIPS_MT_SMP=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_HZ_100=y
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_SYSFS_DEPRECATED_V2=y
CONFIG_RELAY=y
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_EMBEDDED=y
# CONFIG_SYSCTL_SYSCALL is not set
# CONFIG_COMPAT_BRK is not set
CONFIG_SLAB=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_PCI=y
CONFIG_PM=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_PNP=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
# CONFIG_WIRELESS is not set
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
# CONFIG_MISC_DEVICES is not set
CONFIG_IDE=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_IDE_GENERIC=y
CONFIG_BLK_DEV_GENERIC=y
CONFIG_BLK_DEV_PIIX=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_PCI=y
CONFIG_PCNET32=y
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_WLAN is not set
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO_I8042 is not set
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_HW_RANDOM is not set
# CONFIG_HWMON is not set
# CONFIG_MFD_SUPPORT is not set
CONFIG_FB=y
CONFIG_FB_CIRRUS=y
# CONFIG_VGA_CONSOLE is not set
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y
CONFIG_QUOTA=y
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_ROOT_NFS=y
# CONFIG_RCU_CPU_STALL_DETECTOR is not set

View File

@@ -1,7 +0,0 @@
Run the emulation with:
qemu-system-mipsel -M malta -kernel vmlinux -serial stdio -hda rootfs.ext2 -append "root=/dev/hda"
The login prompt will appear in the terminal that started Qemu. The
graphical window is the framebuffer. No keyboard support has been
enabled.

View File

@@ -1,86 +0,0 @@
CONFIG_ALTIVEC=y
CONFIG_EXPERIMENTAL=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_COMPAT_BRK=y
CONFIG_SLAB=y
CONFIG_LBDAF=y
CONFIG_PPC_PMAC=y
CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
CONFIG_PPC601_SYNC_FIX=y
CONFIG_HIGHMEM=y
CONFIG_NO_HZ=y
CONFIG_BINFMT_ELF=y
CONFIG_PROC_DEVICETREE=y
CONFIG_PM=y
CONFIG_SECCOMP=y
CONFIG_PCCARD=y
CONFIG_PCMCIA=y
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_PCMCIA_IOCTL=y
CONFIG_YENTA=y
CONFIG_ADVANCED_OPTIONS=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_INET_LRO=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_IDE=y
CONFIG_IDE_GD=y
CONFIG_IDE_GD_ATA=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_IDE_PROC_FS=y
CONFIG_BLK_DEV_CMD64X=y
CONFIG_BLK_DEV_IDE_PMAC=y
CONFIG_IEEE1394=y
CONFIG_IEEE1394_OHCI1394=y
CONFIG_IEEE1394_ETH1394=y
CONFIG_IEEE1394_RAWIO=y
CONFIG_IEEE1394_VIDEO1394=y
CONFIG_IEEE1394_DV1394=y
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_ADB=y
CONFIG_ADB_CUDA=y
CONFIG_ADB_PMU=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_MACE=y
CONFIG_BMAC=y
CONFIG_HAPPYMEAL=y
CONFIG_SUNGEM=y
CONFIG_CASSINI=y
CONFIG_NET_PCI=y
CONFIG_PCNET32=y
CONFIG_NE2K_PCI=y
CONFIG_8139CP=y
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
CONFIG_SERIO=y
CONFIG_SERIAL_PMACZILOG=y
CONFIG_SERIAL_PMACZILOG_TTYS=y
CONFIG_SERIAL_PMACZILOG_CONSOLE=y
CONFIG_HW_RANDOM=y
CONFIG_SSB=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_PCMCIAHOST=y
CONFIG_SSB_DRIVER_PCICORE=y
CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_MISC_FILESYSTEMS=y
CONFIG_SQUASHFS=y
CONFIG_LIBCRC32C=y
CONFIG_BOOTX_TEXT=y
CONFIG_CRYPTO_HW=y

View File

@@ -1,6 +0,0 @@
Run the emulation with:
qemu-system-ppc -M g3beige -kernel vmlinux -hda rootfs.ext2 -append "console=ttyS0 root=/dev/hdc" -serial stdio
The login prompt will appear in the terminal that started Qemu. The
graphical window is the framebuffer.

View File

@@ -1,105 +0,0 @@
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_SLAB=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
CONFIG_MODULES=y
# CONFIG_BLK_DEV_BSG is not set
CONFIG_CPU_SUBTYPE_SH7751R=y
CONFIG_MEMORY_START=0x0c000000
CONFIG_FLATMEM_MANUAL=y
CONFIG_SH_RTS7751R2D=y
CONFIG_RTS7751R2D_PLUS=y
CONFIG_HEARTBEAT=y
CONFIG_PCI=y
CONFIG_HOTPLUG_PCI=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_INET_LRO is not set
# CONFIG_IPV6 is not set
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_FW_LOADER=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_SD=y
CONFIG_ATA=y
CONFIG_PATA_PLATFORM=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_PCI=y
CONFIG_8139CP=y
CONFIG_8139TOO=y
# CONFIG_8139TOO_PIO is not set
# CONFIG_WLAN is not set
CONFIG_INPUT_FF_MEMLESS=m
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO is not set
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_SH_SCI=y
CONFIG_SERIAL_SH_SCI_CONSOLE=y
CONFIG_HW_RANDOM=y
CONFIG_SPI=y
CONFIG_SPI_SH_SCI=y
CONFIG_MFD_SM501=y
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
CONFIG_FB_SH_MOBILE_LCDC=m
CONFIG_FB_SH_MOBILE_HDMI=m
CONFIG_FB_SM501=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_LOGO_LINUX_CLUT224 is not set
# CONFIG_LOGO_SUPERH_MONO is not set
# CONFIG_LOGO_SUPERH_VGA16 is not set
CONFIG_SOUND=y
CONFIG_SND=m
CONFIG_SND_YMFPCI=m
CONFIG_SOUND_PRIME=m
CONFIG_HID_A4TECH=y
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_EZKEY=y
CONFIG_HID_GYRATION=y
CONFIG_HID_LOGITECH=y
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
CONFIG_HID_PANTHERLORD=y
CONFIG_HID_PETALYNX=y
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
CONFIG_HID_SUNPLUS=y
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_STORAGE=y
CONFIG_USB_LIBUSUAL=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_R9701=y
CONFIG_EXT2_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_MINIX_FS=y
CONFIG_NLS_CODEPAGE_932=y
CONFIG_DEBUG_FS=y
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRC_T10DIF=y

View File

@@ -1,7 +0,0 @@
Run the emulation with:
qemu-system-sh4 -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide -append "root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio
The login prompt will appear in the terminal that started Qemu.
The graphical window is the framebuffer.

View File

@@ -1,67 +0,0 @@
CONFIG_EXPERIMENTAL=y
# CONFIG_LOCALVERSION_AUTO is not set
# CONFIG_SWAP is not set
# CONFIG_COMPAT_BRK is not set
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_IOSCHED_DEADLINE is not set
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set
# CONFIG_SCHED_OMIT_FRAME_POINTER is not set
# CONFIG_MTRR_SANITIZER is not set
# CONFIG_SECCOMP is not set
# CONFIG_RELOCATABLE is not set
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_PNP=y
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
# CONFIG_INET_DIAG is not set
# CONFIG_IPV6 is not set
# CONFIG_WIRELESS is not set
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
# CONFIG_FIRMWARE_IN_KERNEL is not set
# CONFIG_BLK_DEV is not set
CONFIG_BLK_DEV_SD=y
CONFIG_ATA=y
CONFIG_ATA_PIIX=y
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_PCI=y
CONFIG_NE2K_PCI=y
CONFIG_8139CP=y
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
# CONFIG_WLAN is not set
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO_SERPORT is not set
# CONFIG_LEGACY_PTYS is not set
# CONFIG_DEVKMEM is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
# CONFIG_HW_RANDOM is not set
# CONFIG_HWMON is not set
# CONFIG_MFD_SUPPORT is not set
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_HDA_INTEL=y
# CONFIG_HID_SUPPORT is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
# CONFIG_DMIID is not set
CONFIG_EXT2_FS=y
# CONFIG_DNOTIFY is not set
# CONFIG_INOTIFY_USER is not set
# CONFIG_MISC_FILESYSTEMS is not set
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_FRAME_POINTER is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set
# CONFIG_VIRTUALIZATION is not set

View File

@@ -1,12 +0,0 @@
menu "Bootloaders"
source "boot/barebox/Config.in"
source "boot/grub/Config.in"
source "boot/syslinux/Config.in"
source "boot/uboot/Config.in"
source "boot/at91bootstrap/Config.in"
source "boot/at91dataflashboot/Config.in"
source "boot/xloader/Config.in"
endmenu

View File

@@ -1,41 +0,0 @@
config BR2_TARGET_AT91BOOTSTRAP
depends on BR2_arm
bool "AT91 Bootstrap"
help
AT91Bootstrap is a first level bootloader for the Atmel AT91
devices. It integrates algorithms for:
- Device initialization such as clock configuration, PIO settings...
- Peripheral drivers such as PIO, PMC or SDRAMC...
- Physical media algorithm such as DataFlash, NandFlash, NOR Flash...
if BR2_TARGET_AT91BOOTSTRAP
config BR2_TARGET_AT91BOOTSTRAP_BOARD
string "Bootstrap board"
default ""
help
This is used to do a make <board>_config
choice
prompt "Boot Memory"
default BR2_TARGET_AT91BOOTSTRAP_DATAFLASH
help
Select Chip for which AT91 bootstrap should be built
config BR2_TARGET_AT91BOOTSTRAP_DATAFLASH
bool "Data Flash"
config BR2_TARGET_AT91BOOTSTRAP_NANDFLASH
bool "NAND Flash"
endchoice
config BR2_TARGET_AT91BOOTSTRAP_MEMORY
string
default "dataflash" if BR2_TARGET_AT91BOOTSTRAP_DATAFLASH
default "nandflash" if BR2_TARGET_AT91BOOTSTRAP_NANDFLASH
endif

View File

@@ -1,334 +0,0 @@
When using an EABI toolchain, the default compilation generates
references to __aeabi_unwind_cpp_pr0(). This symbol is defined in
libgcc, but we don't want to use it for a bootloader.
Therefore, this patch passes some additional CFLAGS to disable the
generation of such references by avoiding unwind tables, exceptions,
etc.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
board/at91cap9adk/dataflash/Makefile | 2 +-
board/at91cap9adk/norflash/Makefile | 2 +-
board/at91cap9stk/nandflash/Makefile | 2 +-
board/at91sam9260ek/dataflash/Makefile | 2 +-
board/at91sam9260ek/nandflash/Makefile | 2 +-
board/at91sam9261ek/dataflash/Makefile | 2 +-
board/at91sam9261ek/nandflash/Makefile | 2 +-
board/at91sam9263ek/dataflash/Makefile | 2 +-
board/at91sam9263ek/nandflash/Makefile | 2 +-
board/at91sam9g10ek/dataflash/Makefile | 2 +-
board/at91sam9g10ek/nandflash/Makefile | 2 +-
board/at91sam9g20ek/dataflash/Makefile | 2 +-
board/at91sam9g20ek/nandflash/Makefile | 2 +-
board/at91sam9g45ekes/nandflash/Makefile | 2 +-
board/at91sam9m10ekes/dataflash/Makefile | 2 +-
board/at91sam9m10ekes/nandflash/Makefile | 2 +-
board/at91sam9m10g45ek/dataflash/Makefile | 2 +-
board/at91sam9m10g45ek/nandflash/Makefile | 2 +-
board/at91sam9rlek/dataflash/Makefile | 2 +-
board/at91sam9rlek/nandflash/Makefile | 2 +-
board/at91sam9xeek/dataflash/Makefile | 2 +-
board/at91sam9xeek/nandflash/Makefile | 2 +-
lib/Makefile | 2 +-
23 files changed, 23 insertions(+), 23 deletions(-)
Index: Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91cap9adk/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile
@@ -34,7 +34,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91cap9adk/norflash/Makefile
+++ Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile
@@ -34,7 +34,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91cap9stk/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
Index: Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9260ek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9260ek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9261ek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9261ek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9263ek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile
@@ -34,7 +34,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9263ek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile
@@ -33,7 +33,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9g10ek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9g10ek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9g20ek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9g20ek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9g45ekes/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9rlek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9rlek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9xeek/dataflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile
@@ -38,7 +38,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile
===================================================================
--- Bootstrap-v1.16.orig/board/at91sam9xeek/nandflash/Makefile
+++ Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile
@@ -38,7 +38,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.
Index: Bootstrap-v1.16/lib/Makefile
===================================================================
--- Bootstrap-v1.16.orig/lib/Makefile
+++ Bootstrap-v1.16/lib/Makefile
@@ -37,7 +37,7 @@
SIZE=$(CROSS_COMPILE)size
OBJCOPY=$(CROSS_COMPILE)objcopy
OBJDUMP=$(CROSS_COMPILE)objdump
-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL)
+CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables
ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY)
# Linker flags.

View File

@@ -1,41 +0,0 @@
#############################################################
#
# at91bootstrap
#
#############################################################
AT91BOOTSTRAP_VERSION = 1.16
AT91BOOTSTRAP_SITE = http://www.atmel.com/dyn/resources/prod_documents/
AT91BOOTSTRAP_SOURCE = AT91Bootstrap$(AT91BOOTSTRAP_VERSION).zip
AT91BOOTSTRAP_BOARD = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_BOARD))
AT91BOOTSTRAP_MEMORY = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_MEMORY))
AT91BOOTSTRAP_MAKE_SUBDIR = board/$(AT91BOOTSTRAP_BOARD)/$(AT91BOOTSTRAP_MEMORY)
AT91BOOTSTRAP_BINARY = $(AT91BOOTSTRAP_MAKE_SUBDIR)/$(AT91BOOTSTRAP_MEMORY)_$(AT91BOOTSTRAP_BOARD).bin
AT91BOOTSTRAP_INSTALL_IMAGES = YES
AT91BOOTSTRAP_INSTALL_TARGET = NO
define AT91BOOTSTRAP_EXTRACT_CMDS
unzip -d $(BUILD_DIR) $(DL_DIR)/$(AT91BOOTSTRAP_SOURCE)
mv $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)/* $(@D)
rmdir $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)
endef
define AT91BOOTSTRAP_BUILD_CMDS
$(MAKE) CROSS_COMPILE=$(TARGET_CROSS) -C $(@D)/$(AT91BOOTSTRAP_MAKE_SUBDIR)
endef
define AT91BOOTSTRAP_INSTALL_IMAGES_CMDS
cp $(@D)/$(AT91BOOTSTRAP_BINARY) $(BINARIES_DIR)
endef
$(eval $(call GENTARGETS))
ifeq ($(BR2_TARGET_AT91BOOTSTRAP),y)
# we NEED a board name unless we're at make source
ifeq ($(filter source,$(MAKECMDGOALS)),)
ifeq ($(AT91BOOTSTRAP_BOARD),)
$(error No AT91Bootstrap board name set. Check your BR2_TARGET_AT91BOOTSTRAP_BOARD setting)
endif
endif
endif

View File

@@ -1,3 +0,0 @@
config BR2_TARGET_AT91DATAFLASHBOOT
depends on BR2_arm
bool "AT91 DataFlashBoot"

View File

@@ -1,22 +0,0 @@
Disable the automatic installation of at91dataflashboot since it tries
to install things to /tftpboot, which is not possible when not
building as root.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: at91dataflashboot-1.05/Makefile
===================================================================
--- at91dataflashboot-1.05.orig/Makefile
+++ at91dataflashboot-1.05/Makefile
@@ -40,7 +40,7 @@
I=config.h com.h dataflash.h embedded_services.h main.h stdio.h include/AT91RM9200.h include/lib_AT91RM9200.h
-all: clean $(BINNAME) $(LSSNAME) install
+all: clean $(BINNAME) $(LSSNAME)
$(SIZE) $(OUTNAME)
# C objects here

View File

@@ -1,43 +0,0 @@
Get at91dataflashboot to build with EABI toolchains, by providing the
__aeabi_uidiv and __aeabi_uidivmod symbols. The code is based on
U-Boot's code.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
_udivsi3.S | 14 ++++++++++++++
1 file changed, 14 insertions(+)
Index: DataflashBoot-1.05/_udivsi3.S
===================================================================
--- DataflashBoot-1.05.orig/_udivsi3.S
+++ DataflashBoot-1.05/_udivsi3.S
@@ -12,8 +12,11 @@
.text
.globl __udivsi3
.type __udivsi3 ,function
+ .globl __aeabi_uidiv
+ .type __aeabi_uidiv ,function
.align 0
__udivsi3 :
+ __aeabi_uidiv:
cmp divisor, #0
beq Ldiv0
mov curbit, #1
@@ -68,6 +71,17 @@
mov r0, #0 @ about as wrong as it could be
ldmia sp!, {pc}
.size __udivsi3 , . - __udivsi3
+
+.globl __aeabi_uidivmod
+__aeabi_uidivmod:
+
+ stmfd sp!, {r0, r1, ip, lr}
+ bl __aeabi_uidiv
+ ldmfd sp!, {r1, r2, ip, lr}
+ mul r3, r0, r2
+ sub r1, r1, r3
+ mov pc, lr
+
/* # 235 "libgcc1.S" */
/* # 320 "libgcc1.S" */
/* # 421 "libgcc1.S" */

View File

@@ -1,22 +0,0 @@
#############################################################
#
# DataFlashBoot
#
#############################################################
AT91DATAFLASHBOOT_VERSION = 1.05
AT91DATAFLASHBOOT_SOURCE = DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).tar.bz2
AT91DATAFLASHBOOT_SITE = ftp://www.at91.com/pub/buildroot/
AT91DATAFLASHBOOT_INSTALL_TARGET = NO
AT91DATAFLASHBOOT_INSTALL_IMAGES = YES
define AT91DATAFLASHBOOT_BUILD_CMDS
make -C $(@D) CROSS_COMPILE=$(TARGET_CROSS)
endef
define AT91DATAFLASHBOOT_INSTALL_IMAGES_CMDS
cp $(@D)/DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).bin $(BINARIES_DIR)
endef
$(eval $(call GENTARGETS))

View File

@@ -1,78 +0,0 @@
config BR2_TARGET_BAREBOX
bool "Barebox"
help
The Barebox bootloader, formerly known as U-Boot v2.
http://www.barebox.org
if BR2_TARGET_BAREBOX
choice
prompt "version"
default BR2_TARGET_BAREBOX_2011_10
help
Select the specific Barebox version you want to use
config BR2_TARGET_BAREBOX_2011_08
depends on BR2_DEPRECATED
bool "2011.08"
config BR2_TARGET_BAREBOX_2011_09
bool "2011.09"
config BR2_TARGET_BAREBOX_2011_10
bool "2011.10"
config BR2_TARGET_BAREBOX_CUSTOM_TARBALL
bool "Custom tarball"
config BR2_TARGET_BAREBOX_CUSTOM_GIT
bool "Custom Git repository"
endchoice
if BR2_TARGET_BAREBOX_CUSTOM_TARBALL
config BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION
string "URL of custom Barebox tarball"
endif
config BR2_TARGET_BAREBOX_VERSION
string
default "2011.08.0" if BR2_TARGET_BAREBOX_2011_08
default "2011.09.0" if BR2_TARGET_BAREBOX_2011_09
default "2011.10.0" if BR2_TARGET_BAREBOX_2011_10
default "custom" if BR2_TARGET_BAREBOX_CUSTOM_TARBALL
default $BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT
config BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR
string "custom patch dir"
help
If your board requires custom patches, add the path to the
directory containing the patches here. The patches must be
named barebox-<version>-<something>.patch.
Most users may leave this empty
if BR2_TARGET_BAREBOX_CUSTOM_GIT
config BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL
string "URL of custom Git repository"
config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION
string "Custom Git version"
endif
config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG
string "board defconfig"
help
Name of the board for which Barebox should be built, without
the _defconfig suffix.
config BR2_TARGET_BAREBOX_BAREBOXENV
bool "bareboxenv tool in target"
help
Install bareboxenv tool in target.
endif

View File

@@ -1,94 +0,0 @@
#############################################################
#
# Barebox
#
#############################################################
BAREBOX_VERSION = $(call qstrip,$(BR2_TARGET_BAREBOX_VERSION))
ifeq ($(BAREBOX_VERSION),custom)
# Handle custom Barebox tarballs as specified by the configuration
BAREBOX_TARBALL = $(call qstrip,$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION))
BAREBOX_SITE = $(dir $(BAREBOX_TARBALL))
BAREBOX_SOURCE = $(notdir $(BAREBOX_TARBALL))
else ifeq ($(BR2_TARGET_BAREBOX_CUSTOM_GIT),y)
BAREBOX_SITE = $(call qstrip,$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL))
BAREBOX_SITE_METHOD = git
else
# Handle stable official Barebox versions
BAREBOX_SOURCE = barebox-$(BAREBOX_VERSION).tar.bz2
BAREBOX_SITE = http://www.barebox.org/download/
endif
ifneq ($(call qstrip,$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),)
define BAREBOX_APPLY_CUSTOM_PATCHES
support/scripts/apply-patches.sh $(@D) $(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \
barebox-$(BAREBOX_VERSION)-\*.patch
endef
BAREBOX_POST_PATCH_HOOKS += BAREBOX_APPLY_CUSTOM_PATCHES
endif
BAREBOX_INSTALL_IMAGES = YES
ifneq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
BAREBOX_INSTALL_TARGET = NO
endif
BAREBOX_BOARD_DEFCONFIG = $(call qstrip,$(BR2_TARGET_BAREBOX_BOARD_DEFCONFIG))
ifeq ($(KERNEL_ARCH),i386)
BAREBOX_ARCH=x86
else ifeq ($(KERNEL_ARCH),powerpc)
BAREBOX_ARCH=ppc
else
BAREBOX_ARCH=$(KERNEL_ARCH)
endif
BAREBOX_MAKE_FLAGS = ARCH=$(BAREBOX_ARCH) CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)"
define BAREBOX_CONFIGURE_CMDS
$(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(@D) $(BAREBOX_BOARD_DEFCONFIG)_defconfig
endef
ifeq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
define BAREBOX_BUILD_BAREBOXENV_CMDS
$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/bareboxenv \
$(@D)/scripts/bareboxenv.c
endef
endif
define BAREBOX_BUILD_CMDS
$(BAREBOX_BUILD_BAREBOXENV_CMDS)
$(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(@D)
endef
define BAREBOX_INSTALL_IMAGES_CMDS
cp $(@D)/barebox.bin $(BINARIES_DIR)
endef
ifeq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
define BAREBOX_INSTALL_TARGET_CMDS
cp $(@D)/bareboxenv $(TARGET_DIR)/usr/bin
endef
endif
$(eval $(call GENTARGETS))
ifeq ($(BR2_TARGET_BAREBOX),y)
# we NEED a board defconfig file unless we're at make source
ifeq ($(filter source,$(MAKECMDGOALS)),)
ifeq ($(BAREBOX_BOARD_DEFCONFIG),)
$(error No Barebox defconfig file. Check your BR2_TARGET_BAREBOX_BOARD_DEFCONFIG setting)
endif
endif
barebox-menuconfig barebox-xconfig barebox-gconfig barebox-nconfig: barebox-configure
$(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) \
$(subst barebox-,,$@)
rm -f $(BAREBOX_DIR)/.stamp_{built,target_installed,images_installed}
barebox-savedefconfig: barebox-configure
$(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) \
$(subst barebox-,,$@)
endif

View File

@@ -1 +0,0 @@
include boot/*/*.mk

View File

@@ -1,146 +0,0 @@
config BR2_TARGET_GRUB
bool "grub"
depends on BR2_i386 || BR2_x86_64
help
The GRand Unified Bootloader for x86 systems.
config BR2_TARGET_GRUB_SPLASH
bool "Splashimage support"
depends on BR2_TARGET_GRUB
help
Add support for splashimage.
A splashimage is a 14-color indexed .xpm picture which
is displayed as background for the grub menu.
config BR2_TARGET_GRUB_DISKLESS
bool "diskless support"
depends on BR2_TARGET_GRUB
help
enable diskless support
config BR2_TARGET_GRUB_3c595
bool "3Com595 driver"
depends on BR2_TARGET_GRUB
help
enable 3Com595 driver
config BR2_TARGET_GRUB_3c90x
bool "3Com90x driver"
depends on BR2_TARGET_GRUB
help
enable 3Com90x driver
config BR2_TARGET_GRUB_davicom
bool "Davicom driver"
depends on BR2_TARGET_GRUB
help
enable Davicom driver
config BR2_TARGET_GRUB_e1000
bool "Etherexpress Pro/1000 driver"
depends on BR2_TARGET_GRUB
help
enable Etherexpress Pro/1000 driver
config BR2_TARGET_GRUB_eepro100
bool "Etherexpress Pro/100 driver"
depends on BR2_TARGET_GRUB
help
enable Etherexpress Pro/100 driver
config BR2_TARGET_GRUB_epic100
bool "SMC 83c170 EPIC/100 driver"
depends on BR2_TARGET_GRUB
help
enable SMC 83c170 EPIC/100 driver
config BR2_TARGET_GRUB_forcedeth
bool "Nvidia Geforce driver"
depends on BR2_TARGET_GRUB
help
enable Nvidia Geforce driver
config BR2_TARGET_GRUB_natsemi
bool "NatSemi DP8381x driver"
depends on BR2_TARGET_GRUB
help
enable NatSemi DP8381x driver
config BR2_TARGET_GRUB_ns83820
bool "NS83820 driver"
depends on BR2_TARGET_GRUB
help
enable NS83820 driver
config BR2_TARGET_GRUB_ns8390
bool "NE2000 PCI driver"
depends on BR2_TARGET_GRUB
help
enable NE2000 PCI driver
config BR2_TARGET_GRUB_pcnet32
bool "AMD Lance/PCI PCNet/32 driver"
depends on BR2_TARGET_GRUB
help
enable AMD Lance/PCI PCNet/32 driver
config BR2_TARGET_GRUB_pnic
bool "Bochs Pseudo Nic driver"
depends on BR2_TARGET_GRUB
help
enable Bochs Pseudo Nic driver
config BR2_TARGET_GRUB_rtl8139
bool "Realtek 8139 driver"
depends on BR2_TARGET_GRUB
help
enable Realtek 8139 driver
config BR2_TARGET_GRUB_r8169
bool "Realtek 8169 driver"
depends on BR2_TARGET_GRUB
help
enable Realtek 8169 driver
config BR2_TARGET_GRUB_sis900
bool "SIS 900 and SIS 7016 driver"
depends on BR2_TARGET_GRUB
help
enable SIS 900 and SIS 7016 driver
config BR2_TARGET_GRUB_tg3
bool "Broadcom Tigon3 driver"
depends on BR2_TARGET_GRUB
help
enable Broadcom Tigon3 driver
config BR2_TARGET_GRUB_tulip
bool "Tulip driver"
depends on BR2_TARGET_GRUB
help
enable Tulip driver
config BR2_TARGET_GRUB_tlan
bool "TI ThunderLAN driver"
depends on BR2_TARGET_GRUB
help
enable TI ThunderLAN driver
config BR2_TARGET_GRUB_undi
bool "PXE UNDI driver"
depends on BR2_TARGET_GRUB
help
enable PXE UNDI driver
config BR2_TARGET_GRUB_via_rhine
bool "Rhine-I/II driver"
depends on BR2_TARGET_GRUB
help
enable Rhine-I/II driver
config BR2_TARGET_GRUB_w89c840
bool "Winbond W89c840 driver"
depends on BR2_TARGET_GRUB
help
enable Winbond W89c840 driver

File diff suppressed because it is too large Load Diff

View File

@@ -1,85 +0,0 @@
#############################################################
#
# grub
#
#############################################################
GRUB_VERSION = 0.97
GRUB_SOURCE = grub_$(GRUB_VERSION).orig.tar.gz
GRUB_PATCH = grub_$(GRUB_VERSION)-35.diff.gz
GRUB_SITE = http://snapshot.debian.org/archive/debian/20080329T000000Z/pool/main/g/grub/
GRUB_CFLAGS=-DSUPPORT_LOOPDEV
ifeq ($(BR2_LARGEFILE),)
GRUB_CFLAGS+=-U_FILE_OFFSET_BITS
endif
GRUB_CONFIG-$(BR2_TARGET_GRUB_SPLASH) += --enable-graphics
GRUB_CONFIG-$(BR2_TARGET_GRUB_DISKLESS) += --enable-diskless
GRUB_CONFIG-$(BR2_TARGET_GRUB_3c595) += --enable-3c595
GRUB_CONFIG-$(BR2_TARGET_GRUB_3c90x) += --enable-3c90x
GRUB_CONFIG-$(BR2_TARGET_GRUB_davicom) += --enable-davicom
GRUB_CONFIG-$(BR2_TARGET_GRUB_e1000) += --enable-e1000
GRUB_CONFIG-$(BR2_TARGET_GRUB_eepro100) += --enable-eepro100
GRUB_CONFIG-$(BR2_TARGET_GRUB_epic100) += --enable-epic100
GRUB_CONFIG-$(BR2_TARGET_GRUB_forcedeth) += --enable-forcedeth
GRUB_CONFIG-$(BR2_TARGET_GRUB_natsemi) += --enable-natsemi
GRUB_CONFIG-$(BR2_TARGET_GRUB_ns83820) += --enable-ns83820
GRUB_CONFIG-$(BR2_TARGET_GRUB_ns8390) += --enable-ns8390
GRUB_CONFIG-$(BR2_TARGET_GRUB_pcnet32) += --enable-pcnet32
GRUB_CONFIG-$(BR2_TARGET_GRUB_pnic) += --enable-pnic
GRUB_CONFIG-$(BR2_TARGET_GRUB_rtl8139) += --enable-rtl8139
GRUB_CONFIG-$(BR2_TARGET_GRUB_r8169) += --enable-r8169
GRUB_CONFIG-$(BR2_TARGET_GRUB_sis900) += --enable-sis900
GRUB_CONFIG-$(BR2_TARGET_GRUB_tg3) += --enable-tg3
GRUB_CONFIG-$(BR2_TARGET_GRUB_tulip) += --enable-tulip
GRUB_CONFIG-$(BR2_TARGET_GRUB_tlan) += --enable-tlan
GRUB_CONFIG-$(BR2_TARGET_GRUB_undi) += --enable-undi
GRUB_CONFIG-$(BR2_TARGET_GRUB_via_rhine) += --enable-via-rhine
GRUB_CONFIG-$(BR2_TARGET_GRUB_w89c840) += --enable-w89c840
define GRUB_DEBIAN_PATCHES
# Apply the patches from the Debian patch
(cd $(@D) ; for f in `cat debian/patches/00list | grep -v ^#` ; do \
cat debian/patches/$$f | patch -p1 ; \
done)
endef
GRUB_POST_PATCH_HOOKS += GRUB_DEBIAN_PATCHES
GRUB_CONF_ENV = \
CFLAGS="$(TARGET_CFLAGS) $(GRUB_CFLAGS)"
GRUB_CONF_OPT = \
--disable-auto-linux-mem-opt \
$(GRUB_CONFIG-y)
define GRUB_INSTALL_STAGING_CMDS
install -m 0755 -D $(@D)/grub/grub $(STAGING_DIR)/sbin/grub
endef
ifeq ($(BR2_TARGET_GRUB_SPLASH),y)
define GRUB_INSTALL_SPLASH
cp boot/grub/splash.xpm.gz $(TARGET_DIR)/boot/grub/
endef
endif
define GRUB_INSTALL_TARGET_CMDS
install -m 0755 -D $(@D)/grub/grub $(TARGET_DIR)/sbin/grub
mkdir -p $(TARGET_DIR)/boot/grub
cp $(@D)/stage1/stage1 $(TARGET_DIR)/boot/grub
cp $(@D)/stage2/*1_5 $(TARGET_DIR)/boot/grub
cp $(@D)/stage2/stage2 $(TARGET_DIR)/boot/grub
$(GRUB_INSTALL_SPLASH)
endef
define GRUB_UNINSTALL_STAGING_CMDS
rm -f $(STAGING_DIR)/sbin/grub
endef
define GRUB_UNINSTALL_TARGET_CMDS
rm -f $(TARGET_DIR)/sbin/grub
rm -rf $(TARGET_DIR)/boot/grub
endef
$(eval $(call AUTOTARGETS))

View File

@@ -1,16 +0,0 @@
config BR2_TARGET_SYSLINUX
bool "syslinux"
depends on BR2_i386 || BR2_x86_64
help
The syslinux bootloader for x86 systems.
This includes: syslinux, pxelinux, extlinux.
config BR2_TARGET_SYSLINUX_ISOLINUX
bool "Install isolinux"
depends on BR2_TARGET_SYSLINUX
default y
config BR2_TARGET_SYSLINUX_PXELINUX
bool "Install pxelinux"
depends on BR2_TARGET_SYSLINUX
default y

View File

@@ -1,17 +0,0 @@
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: syslinux-3.85/Makefile
===================================================================
--- syslinux-3.85.orig/Makefile
+++ syslinux-3.85/Makefile
@@ -43,7 +43,7 @@
mbr/mbr_c.bin mbr/altmbr_c.bin mbr/gptmbr_c.bin \
mbr/mbr_f.bin mbr/altmbr_f.bin mbr/gptmbr_f.bin \
core/pxelinux.0 core/isolinux.bin core/isolinux-debug.bin \
- gpxe/gpxelinux.0 dos/syslinux.com win32/syslinux.exe \
+ gpxe/gpxelinux.0 dos/syslinux.com \
dosutil/*.com dosutil/*.sys \
$(MODULES)

View File

@@ -1,29 +0,0 @@
#############################################################
#
# syslinux to make target msdos/iso9660 filesystems bootable
#
#############################################################
SYSLINUX_VERSION = 3.85
SYSLINUX_SOURCE = syslinux-$(SYSLINUX_VERSION).tar.bz2
SYSLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/boot/syslinux/3.xx/
SYSLINUX_INSTALL_TARGET = NO
SYSLINUX_INSTALL_IMAGES = YES
SYSLINUX_DEPENDENCIES = host-nasm
define SYSLINUX_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) CC="$(HOSTCC)" AR="$(HOSTAR)" -C $(@D)
endef
SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_ISOLINUX) += isolinux.bin
SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_PXELINUX) += pxelinux.bin
define SYSLINUX_INSTALL_IMAGES_CMDS
for i in $(SYSLINUX_IMAGES-y); do \
$(INSTALL) -D -m 0755 $(@D)/core/$$i $(BINARIES_DIR)/$$i; \
done
endef
$(eval $(call GENTARGETS))

View File

@@ -1,139 +0,0 @@
config BR2_TARGET_UBOOT
bool "U-Boot"
help
Build "Das U-Boot" Boot Monitor
if BR2_TARGET_UBOOT
config BR2_TARGET_UBOOT_BOARDNAME
string "U-Boot board name"
help
One of U-Boot supported boards to be built.
This will be suffixed with _config to meet U-Boot standard naming.
choice
prompt "U-Boot Version"
default BR2_TARGET_UBOOT_2011_06
help
Select the specific U-Boot version you want to use
config BR2_TARGET_UBOOT_2011_06
bool "2011.06"
config BR2_TARGET_UBOOT_2011_03
bool "2011.03"
config BR2_TARGET_UBOOT_2010_12
bool "2010.12"
config BR2_TARGET_UBOOT_2010_09
bool "2010.09"
config BR2_TARGET_UBOOT_2010_06
bool "2010.06"
config BR2_TARGET_UBOOT_CUSTOM_TARBALL
bool "Custom tarball"
config BR2_TARGET_UBOOT_CUSTOM_GIT
bool "Custom Git repository"
endchoice
if BR2_TARGET_UBOOT_CUSTOM_TARBALL
config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
string "URL of custom U-Boot tarball"
endif
config BR2_TARGET_UBOOT_VERSION
string
default "2011.06" if BR2_TARGET_UBOOT_2011_06
default "2011.03" if BR2_TARGET_UBOOT_2011_03
default "2010.12" if BR2_TARGET_UBOOT_2010_12
default "2010.09" if BR2_TARGET_UBOOT_2010_09
default "2010.06" if BR2_TARGET_UBOOT_2010_06
default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL
default $BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION if BR2_TARGET_UBOOT_CUSTOM_GIT
config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR
string "custom patch dir"
help
If your board requires custom patches, add the path to the
directory containing the patches here. The patches must be
named u-boot-<version>-<something>.patch.
Most users may leave this empty
if BR2_TARGET_UBOOT_CUSTOM_GIT
config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL
string "URL of custom Git repository"
config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION
string "Custom Git version"
endif
choice
prompt "U-Boot binary format"
config BR2_TARGET_UBOOT_FORMAT_BIN
bool "u-boot.bin"
config BR2_TARGET_UBOOT_FORMAT_KWB
depends on BR2_arm
bool "u-boot.kwb (Marvell)"
config BR2_TARGET_UBOOT_FORMAT_LDR
depends on BR2_bfin
bool "u-boot.ldr"
endchoice
menuconfig BR2_TARGET_UBOOT_NETWORK
bool "Custom Network Settings"
help
Custom network settings for U-boot
if BR2_TARGET_UBOOT_NETWORK
config BR2_TARGET_UBOOT_SERVERIP
string "server ip"
default "10.175.196.221"
help
TFTP server ip address
config BR2_TARGET_UBOOT_IPADDR
string "ip address"
default "10.175.196.18"
help
Target ip address
config BR2_TARGET_UBOOT_GATEWAY
string "gateway ip"
default "10.175.196.1"
help
Gateway ip address
config BR2_TARGET_UBOOT_NETMASK
string "netmask"
default "255.255.255.0"
help
Network Mask
config BR2_TARGET_UBOOT_ETHADDR
string "ethernet address"
default "04:25:fe:ed:00:18"
help
Target MAC address for the ethernet interface.
This should be changed for production units
config BR2_TARGET_UBOOT_ETH1ADDR
string "ethernet 2 address"
help
Target MAC address for the second ethernet interface.
endif # BR2_TARGET_UBOOT_NETWORK
endif # BR2_TARGET_UBOOT

View File

@@ -1,100 +0,0 @@
#############################################################
#
# U-Boot
#
#############################################################
UBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION))
UBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME))
UBOOT_INSTALL_IMAGES = YES
ifeq ($(UBOOT_VERSION),custom)
# Handle custom U-Boot tarballs as specified by the configuration
UBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION))
UBOOT_SITE = $(dir $(UBOOT_TARBALL))
UBOOT_SOURCE = $(notdir $(UBOOT_TARBALL))
else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT),y)
UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL))
UBOOT_SITE_METHOD = git
else
# Handle stable official U-Boot versions
UBOOT_SITE = ftp://ftp.denx.de/pub/u-boot
UBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2
endif
ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y)
UBOOT_BIN = u-boot.kwb
UBOOT_MAKE_TARGET = $(UBOOT_BIN)
else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y)
UBOOT_BIN = u-boot.ldr
else
UBOOT_BIN = u-boot.bin
endif
UBOOT_ARCH=$(KERNEL_ARCH)
UBOOT_CONFIGURE_OPTS += CONFIG_NOSOFTFLOAT=1
UBOOT_MAKE_OPTS += \
CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \
ARCH=$(UBOOT_ARCH)
# Helper function to fill the U-Boot config.h file.
# Argument 1: option name
# Argument 2: option value
# If the option value is empty, this function does nothing.
define insert_define
$(if $(call qstrip,$(2)),
@echo "#ifdef $(strip $(1))" >> $(@D)/include/config.h
@echo "#undef $(strip $(1))" >> $(@D)/include/config.h
@echo "#endif" >> $(@D)/include/config.h
@echo '#define $(strip $(1)) $(call qstrip,$(2))' >> $(@D)/include/config.h)
endef
ifneq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR)),)
define UBOOT_APPLY_CUSTOM_PATCHES
support/scripts/apply-patches.sh $(@D) $(BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR) \
uboot-$(UBOOT_VERSION)-\*.patch
endef
UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_CUSTOM_PATCHES
endif
define UBOOT_CONFIGURE_CMDS
$(TARGET_CONFIGURE_OPTS) $(UBOOT_CONFIGURE_OPTS) \
$(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \
$(UBOOT_BOARD_NAME)_config
@echo >> $(@D)/include/config.h
@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))
$(call insert_define,CONFIG_NETMASK,$(BR2_TARGET_UBOOT_NETMASK))
$(call insert_define,CONFIG_SERVERIP,$(BR2_TARGET_UBOOT_SERVERIP))
$(call insert_define,CONFIG_ETHADDR,$(BR2_TARGET_UBOOT_ETHADDR))
$(call insert_define,CONFIG_ETH1ADDR,$(BR2_TARGET_UBOOT_ETH1ADDR))
@echo "#endif /* __BR2_ADDED_CONFIG_H */" >> $(@D)/include/config.h
endef
define UBOOT_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) $(UBOOT_CONFIGURE_OPTS) \
$(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \
$(UBOOT_MAKE_TARGET)
endef
define UBOOT_INSTALL_IMAGES_CMDS
cp -dpf $(@D)/$(UBOOT_BIN) $(BINARIES_DIR)/
endef
$(eval $(call GENTARGETS))
ifeq ($(BR2_TARGET_UBOOT),y)
# we NEED a board name unless we're at make source
ifeq ($(filter source,$(MAKECMDGOALS)),)
ifeq ($(UBOOT_BOARD_NAME),)
$(error NO U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)
endif
endif
endif

View File

@@ -1,15 +0,0 @@
config BR2_TARGET_XLOADER
bool "X-loader"
depends on BR2_cortex_a8 || BR2_cortex_a9
help
The x-loader bootloader. It is mainly used on OMAP-based
platforms.
if BR2_TARGET_XLOADER
config BR2_TARGET_XLOADER_BOARDNAME
string "x-loader board name"
help
One of x-loader supported boards to be built.
This will be suffixed with _config to meet x-loader
standard naming.
endif

View File

@@ -1,37 +0,0 @@
#############################################################
#
# x-loader
#
#############################################################
XLOADER_VERSION = 6f3a26101303051e0f91b6213735b68ce804e94e
XLOADER_SITE = git://gitorious.org/x-loader/x-loader.git
XLOADER_BOARD_NAME = $(call qstrip,$(BR2_TARGET_XLOADER_BOARDNAME))
XLOADER_INSTALL_IMAGES = YES
define XLOADER_BUILD_CMDS
$(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) $(XLOADER_BOARD_NAME)_config
$(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all
$(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) ift
endef
define XLOADER_INSTALL_IMAGES_CMDS
$(INSTALL) -D -m 0755 $(@D)/MLO $(BINARIES_DIR)/
endef
$(eval $(call GENTARGETS))
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_TARGET_XLOADER),y)
# we NEED a board name unless we're at make source
ifeq ($(filter source,$(MAKECMDGOALS)),)
ifeq ($(XLOADER_BOARD_NAME),)
$(error NO x-loader board name set. Check your BR2_BOOT_XLOADER_BOARDNAME setting)
endif
endif
endif

View File

@@ -1,23 +0,0 @@
# Architecture
BR2_arm=y
# Filesystem
BR2_TARGET_ROOTFS_JFFS2=y
BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056=y
BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x420
BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x2100
BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y
BR2_TARGET_ROOTFS_JFFS2_LE=y
# Bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="at91rm9200ek"
BR2_TARGET_UBOOT_2010_06=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.33"
BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.33-at91.patch.gz"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="at91rm9200ek"

View File

@@ -1,23 +0,0 @@
# Architecture
BR2_arm=y
# First stage bootloader
BR2_TARGET_AT91BOOTSTRAP=y
BR2_TARGET_AT91BOOTSTRAP_BOARD="at91sam9260ek"
BR2_TARGET_AT91BOOTSTRAP_DATAFLASHCARD=y
# Second stage bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="at91sam9260ek"
BR2_TARGET_UBOOT_2010_06=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.33"
BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.33-at91.patch.gz"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="at91sam9260ek"
# Filesystem
BR2_TARGET_ROOTFS_TAR=y

View File

@@ -1,24 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# First stage bootloader
BR2_TARGET_AT91BOOTSTRAP=y
BR2_TARGET_AT91BOOTSTRAP_BOARD="at91sam9261ek"
BR2_TARGET_AT91BOOTSTRAP_DATAFLASHCARD=y
# Second stage bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="at91sam9261ek"
BR2_TARGET_UBOOT_2010_06=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.33"
BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.33-at91.patch.gz"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="at91sam9261ek"
# Filesystem
BR2_TARGET_ROOTFS_TAR=y

View File

@@ -1,24 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# First stage bootloader
BR2_TARGET_AT91BOOTSTRAP=y
BR2_TARGET_AT91BOOTSTRAP_BOARD="at91sam9263ek"
BR2_TARGET_AT91BOOTSTRAP_DATAFLASHCARD=y
# Second stage bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="at91sam9263ek"
BR2_TARGET_UBOOT_2010_06=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.33"
BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.33-at91.patch.gz"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="at91sam9263ek"
# Filesystem
BR2_TARGET_ROOTFS_TAR=y

View File

@@ -1,24 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# First stage bootloader
BR2_TARGET_AT91BOOTSTRAP=y
BR2_TARGET_AT91BOOTSTRAP_BOARD="at91sam9g20ek"
BR2_TARGET_AT91BOOTSTRAP_DATAFLASHCARD=y
# Second stage bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="at91sam9g20ek"
BR2_TARGET_UBOOT_2010_06=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.33"
BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.33-at91.patch.gz"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="at91sam9g20ek"
# Filesystem
BR2_TARGET_ROOTFS_TAR=y

View File

@@ -1,24 +0,0 @@
# Architecture
BR2_avr32=y
# Filesystems
BR2_TARGET_ROOTFS_JFFS2=y
BR2_TARGET_ROOTFS_JFFS2_FLASH_128=y
BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x1000
BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x20000
BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y
BR2_TARGET_ROOTFS_JFFS2_BE=y
BR2_TARGET_ROOTFS_TAR=y
BR2_TARGET_ROOTFS_TAR_NONE=y
# Bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="atngw100"
BR2_TARGET_UBOOT_2010_09=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.35"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="atngw100"

View File

@@ -1,19 +0,0 @@
# Architecture
BR2_avr32=y
# U-Boot
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="atstk1002"
BR2_TARGET_UBOOT_2010_09=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.35"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="atstk1002"
# Filesystem
BR2_TARGET_ROOTFS_TAR=y

View File

@@ -1,17 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# Bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="cp926ejs"
BR2_TARGET_UBOOT_2010_06=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_2_6_35=
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="integrator"
# Filesystem
BR2_TARGET_ROOTFS_TAR=y

View File

@@ -1,14 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm920t=y
# Filesystem
BR2_TARGET_ROOTFS_TAR=y
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.33"
BR2_LINUX_KERNEL_PATCH="http://maxim.org.za/AT91RM9200/2.6/2.6.33-at91.patch.gz"
BR2_LINUX_KERNEL_USE_DEFCONFIG=y
BR2_LINUX_KERNEL_DEFCONFIG="kb9202"

View File

@@ -1,31 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm920t=y
# Serial port
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttySAC0"
# Filesystem
BR2_TARGET_ROOTFS_JFFS2=y
BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K=y
BR2_TARGET_ROOTFS_JFFS2_PAGESIZE=0x800
BR2_TARGET_ROOTFS_JFFS2_EBSIZE=0x20000
BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y
BR2_TARGET_ROOTFS_JFFS2_LE=y
BR2_TARGET_ROOTFS_TAR=y
# Bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="mini2440"
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="http://repo.or.cz/w/u-boot-openmoko/mini2440.git/snapshot/dev-mini2440-stable.tar.gz"
#
# Kernel
#
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.0.4"
BR2_LINUX_KERNEL_DEFCONFIG="mini2440"
BR2_LINUX_KERNEL_UIMAGE=y

View File

@@ -1,19 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# system
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
# filesystem
BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.1"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-3.1.config"
BR2_LINUX_KERNEL_ZIMAGE=y

View File

@@ -1,19 +0,0 @@
# Architecture
BR2_mipsel=y
BR2_mips_32r2=y
# filesystem
BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.1"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mipsel-malta/linux-3.1.config"
BR2_LINUX_KERNEL_VMLINUX=y
# Serial port config
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"

View File

@@ -1,19 +0,0 @@
# Architecture
BR2_powerpc=y
BR2_powerpc_440fp=y
# filesystem
BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.1"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/powerpc-g3beige/linux-3.1.config"
BR2_LINUX_KERNEL_VMLINUX=y
# Serial port config
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"

View File

@@ -1,24 +0,0 @@
# Architecture
BR2_sh=y
BR2_sh4=y
# system
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttySC1"
# filesystem
BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
# The kernel wants to use the -m4-nofpu option to make sure that it
# doesn't use floating point operations.
BR2_GCC_VERSION_4_5_X=y
BR2_EXTRA_GCC_CONFIG_OPTIONS="--with-multilib-list=m4,m4-nofpu"
# Linux kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.1"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux-3.1.config"
BR2_LINUX_KERNEL_ZIMAGE=y

View File

@@ -1,17 +0,0 @@
# Architecture
BR2_i386=y
BR2_x86_pentiumpro=y
# system
BR2_TARGET_GENERIC_GETTY=y
# filesystem
BR2_TARGET_ROOTFS_EXT2=y
# BR2_TARGET_ROOTFS_TAR is not set
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.0.4"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-3.0.config"

View File

@@ -1,24 +0,0 @@
# Architecture
BR2_arm=y
BR2_arm926t=y
# system
BR2_TARGET_GENERIC_GETTY=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
# filesystem
BR2_TARGET_ROOTFS_JFFS2=y
BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K=y
# bootloader
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="sheevaplug"
BR2_TARGET_UBOOT_FORMAT_KWB=y
# BR2_TARGET_UBOOT_NETWORK is not set
# Kernel
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="2.6.39.4"
BR2_LINUX_KERNEL_DEFCONFIG="kirkwood"
BR2_LINUX_KERNEL_UIMAGE=y

240
docs/Glibc_vs_uClibc.html Normal file
View File

@@ -0,0 +1,240 @@
<!--#include file="header.html" -->
<h2>uClibc vs. glibc</h2>
<p>
uClibc and Glibc are not the same -- there are a number of differences which
may or may not cause you problems. This document attempts to list these
differences and, when completed, will contain a full list of all relevant
differences.
<br><br></p>
<ol>
<li>uClibc is smaller than glibc. We attempt to maintain a glibc compatible
interface, allowing applications that compile with glibc to easily compile with
uClibc. However, we do not include _everything_ that glibc includes, and
therefore some applications may not compile. If this happens to you, please
report the failure to the uclibc mailing list, with detailed error messages.
</li><br>
<li>uClibc is much more configurable then glibc. This means that a developer
may have compiled uClibc in such a way that significant amounts of
functionality have been omitted.
</li><br>
<li>uClibc does not even attempt to ensure binary compatibility across releases.
When a new version of uClibc is released, you may or may not need to recompile
all your binaries.
</li><br>
<li><ul><li> malloc(0) in glibc returns a valid pointer to something(!?!?) while in
uClibc calling malloc(0) returns a NULL. The behavior of malloc(0) is listed
as implementation-defined by SuSv3, so both libraries are equally correct.
This difference also applies to realloc(NULL, 0). I personally feel glibc's
behavior is not particularly safe. To enable glibc behavior, one has to
explicitly enable the MALLOC_GLIBC_COMPAT option.
</li><br><li>
glibc's malloc() implementation has behavior that is tunable via the
MALLOC_CHECK_ environment variable. This is primarily used to provide extra
malloc debugging features. These extended malloc debugging features are not
available within uClibc. There are many good malloc debugging libraries
available for Linux (dmalloc, electric fence, valgrind, etc) that work much
better than the glibc extended malloc debugging. So our omitting this
functionality from uClibc is not a great loss.
</li><br>
</ul></li>
<li>uClibc does not provide a database library (libdb).
</li><br>
<li>uClibc does not support NSS (/lib/libnss_*), which allows glibc to easily
support various methods of authentication and DNS resolution. uClibc only
supports flat password files and shadow password files for storing
authentication information. If you need something more complex than this,
you can compile and install pam.
</li><br>
<li>uClibc's libresolv is only a stub. Some, but not all of the functionality
provided by glibc's libresolv is provided internal to uClibc. Other functions
are not at all implemented.
</li><br>
<li>libnsl provides support for Network Information Service (NIS) which was
originally called "Yellow Pages" or "YP", which is an extension of RPC invented
by Sun to share Unix password files over the network. I personally think NIS
is an evil abomination and should not be used. These days, using ldap is much
more effective mechanism for doing the same thing. uClibc provides a stub
libnsl, but has no actual support for Network Information Service (NIS).
We therefore, also do not provide any of the headers files provided by glibc
under /usr/include/rpcsvc.
</li><br>
<li>uClibc's locale support is not 100% complete yet. We are working on it.
</li><br>
<li>uClibc's math library only supports long double as inlines, and even
then the long double support is quite limited. Also, very few of the
float math functions are implemented. Stick with double and you should
be just fine.
</li><br>
<li>uClibc's libcrypt does not support the reentrant crypt_r, setkey_r and
encrypt_r, since these are not required by SuSv3.
</li><br>
<li>uClibc directly uses kernel types to define most opaque data types.
</li><br>
<li>uClibc directly uses the linux kernel's arch specific 'stuct stat'.
</li><br>
<li>uClibc's librt library currently lacks all aio routines, all clock
routines, and all shm routines (only the timer routines and the mq
routines are implemented).
</li><br>
</ol>
<hr>
<h3>Manuel's Notes</h3>
Some general comments...<br>
<p>
The intended target for all my uClibc code is ANSI/ISO C99 and SUSv3
compliance. While some glibc extensions are present, many will eventually
be configurable. Also, even when present, the glibc-like extensions may
differ slightly or be more restrictive than the native glibc counterparts.
They are primarily meant to be porting _aides_ and not necessarily
drop-in replacements.
</p><br>
Now for some details...<br><br>
<u>time functions</u><br>
<ol>
<li>Leap seconds are not supported.</li><br>
<li>/etc/timezone and the whole zoneinfo directory tree are not supported.
To set the timezone, set the TZ environment variable as specified in
http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
or you may also create an /etc/TZ file of a single line, ending with a
newline, containing the TZ setting. For example
echo CST6CDT > /etc/TZ
</li><br>
<li>Currently, locale specific eras and alternate digits are not supported.
They are on my TODO list.
</li>
</ol><br>
<u>wide char support</u><br>
<ol>
<li>The only multibyte encoding currently supported is UTF-8. The various
ISO-8859-* encodings are (optionally) supported. The internal
representation of wchar's is assumed to be 31 bit unicode values in
native endian representation. Also, the underlying char encoding is
assumed to match ASCII in the range 0-0x7f.
</li>
<li>In the next iteration of locale support, I plan to add support for
(at least some) other multibyte encodings.
</li>
</ol>
<u>locale support</u><br>
<ol>
<li>The target for support is SUSv3 locale functionality. While nl_langinfo
has been extended, similar to glibc, it only returns values for related
locale entries.
</li>
<li>Currently, all SUSv3 libc locale functionality should be implemented
except for wcsftime and collating item support in regex.
</li>
</ol>
<u>stdio</u><br>
<ol>
<li>Conversion of large magnitude floating-point values by printf suffers a loss
of precision due to the algorithm used.
</li><br>
<li>uClibc's printf is much stricter than glibcs, especially regarding positional
args. The entire format string is parsed first and an error is returned if
a problem is detected. In locales other than C, the format string is checked
to be a valid multibyte sequence as well. Also, currently at most 10 positional
args are allowed (although this is configurable).
</li><br>
<li>BUFSIZ is configurable, but no attempt is made at automatic tuning of internal
buffer sizes for stdio streams. In fact, the stdio code in general sacrifices
sophistication/performace for minimal size.
</li><br>
<li>uClibc allows glibc-like custom printf functions. However, while not
currently checked, the specifier must be <= 0x7f.
</li><br>
<li>uClibc allows glibc-like custom streams. However, no in-buffer seeking is
done.
</li><br>
<li>The functions fcloseall() and __fpending() can behave differently than their
glibc counterparts.
</li><br>
<li>uClibc's setvbuf is more restrictive about when it can be called than glibc's
is. The standards specify that setvbuf must occur before any other operations
take place on the stream.
</li><br>
<li>Right now, %m is not handled properly by printf when the format uses positional
args.
</li><br>
<li>The FILEs created by glibc's fmemopen(), open_memstream(), and fopencookie()
are not capable of wide orientation. The corresponding uClibc routines do
not have this limitation.
</li><br>
<li>For scanf, the C99 standard states "The fscanf function returns the value of
the macro EOF if an input failure occurs before any conversion." But glibc's
scanf does not respect conversions for which assignment was surpressed, even
though the standard states that the value is converted but not stored.
</li></ol><br>
<hr><h3>Glibc bugs</h3><br>
glibc bugs that Ulrich Drepper has refused to acknowledge or comment on
( <a href="http://sources.redhat.com/ml/libc-alpha/2003-09/">http://sources.redhat.com/ml/libc-alpha/2003-09/</a> )
<br>
<ol>
<li>The C99 standard says that for printf, a %s conversion makes no special
provisions for multibyte characters. SUSv3 is even more clear, stating
that bytes are written and a specified precision is in bytes. Yet glibc
treats the arg as a multibyte string when a precision is specified and
not otherwise.
</li><br>
<li>Both C99 and C89 state that the %c conversion for scanf reads the exact
number of bytes specified by the optional field width (or 1 if not specified).
uClibc complies with the standard. There is an argument that perhaps the
specified width should be treated as an upper bound, based on some historical
use. However, such behavior should be mentioned in the Conformance document.
</li><br>
<li>glibc's scanf is broken regarding some numeric patterns. Some invalid
strings are accepted as valid ("0x.p", "1e", digit grouped strings).
In spite of my posting examples clearly illustrating the bugs, they remain
unacknowledged by the glibc developers.
</li><br>
<li>glibc's scanf seems to require a 'p' exponent for hexadecimal float strings.
According to the standard, this is optional.
</li><br>
<li>C99 requires that once an EOF is encountered, the stream should be treated
as if at end-of-file even if more data becomes available. Further reading
can be attempted by clearing the EOF flag though, via clearerr() or a file
positioning function. For details concerning the original change, see
Defect Report #141. glibc is currently non-compliant, and the developers
did not comment when I asked for their official position on this issue.
</li><br>
<li>glibc's collation routines and/or localedef are broken regarding implicit
and explicit UNDEFINED rules.
</li><br></ol>
More to follow as I think of it...
<br><br><hr>
<h3>Profiling:</h3>
<p>
uClibc no longer supports 'gcc -fprofile-arcs -pg' style profiling, which
causes your application to generate a 'gmon.out' file that can then be analyzed
by 'gprof'. Not only does this require explicit extra support in uClibc, it
requires that you rebuild everything with profiling support. There is both a
size and performance penalty to profiling your applications this way, as well
as Heisenberg effects, where the act of measuring changes what is measured.
</p>
<p>
There exist a number of less invasive alternatives that do not require you to
specially instrument your application, and recompile and relink everything.
</p><p>
The OProfile system-wide profiler is an excellent alternative:
<a href="http://oprofile.sourceforge.net/">http://oprofile.sourceforge.net/</a>
</p><p>
Many people have had good results using the combination of Valgrind
to generate profiling information and KCachegrind for analysis:
<a href="http://developer.kde.org/~sewardj/">http://developer.kde.org/~sewardj/</a>
<a href="http://kcachegrind.sourceforge.net/">http://kcachegrind.sourceforge.net/</a>
</p><p>
Prospect is another alternative based on OProfile:
<a href="http://prospect.sourceforge.net/">http://prospect.sourceforge.net/</a>
</p><p>
And the Linux Trace Toolkit (LTT) is also a fine tool:
<a href="http://www.opersys.com/LTT/">http://www.opersys.com/LTT/</a>
</p><p>
FunctionCheck:
<a href="http://www710.univ-lyon1.fr/~yperret/fnccheck/">http://www710.univ-lyon1.fr/~yperret/fnccheck/</a>
</p>
<!--#include file="footer.html" -->

View File

@@ -4,13 +4,15 @@ To build and use the buildroot stuff, do the following:
2) select the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) Use your shiny new root filesystem. Depending on which sort of
5) Use your shiny new root filesystem. Depending on which sortof
root filesystem you selected, you may want to loop mount it,
chroot into it, nfs mount it on your target device, burn it
to flash, or whatever is appropriate for your target system.
You do not need to be root to build or run buildroot. Have fun!
-Erik
Offline build:
==============
@@ -33,7 +35,7 @@ make command line, E.G.:
$ make O=/tmp/build
And all the output files (including .config) will be located under /tmp/build.
And all the output files will be located under /tmp/build.
More finegrained configuration:
===============================
@@ -51,7 +53,7 @@ $ make HOSTCC=gcc-4.3.orig HOSTCXX=gcc-4.3-mine
Depending on your configuration, there are some targets you can use to
use menuconfig of certain packages. This includes:
$ make HOSTCC=gcc-4.3 linux-menuconfig
$ make HOSTCC=gcc-4.3 linux26-menuconfig
$ make HOSTCC=gcc-4.3 uclibc-menuconfig
$ make HOSTCC=gcc-4.3 busybox-menuconfig

37
docs/README.diskimage Normal file
View File

@@ -0,0 +1,37 @@
# Sample for i386 to create a 6MB disk-image
# create an image file
dd if=/dev/zero bs=512 count=$((6*1024*1024/512)) of=img
# create a partition (optional)
echo -e "n\np\n1\n\nw\n" | \
~/src/busybox/busybox fdisk -C 16065 -H 255 -S 63 ./img
# as root, associate the image with a look-device:
# The offset of 512 comes from the the layout of the image. See
# ~/src/busybox/busybox fdisk -C 16065 -H 255 -S 63 -l ./img for the start
# block and multiply this with the block size (==512).
~/src/busybox/busybox losetup -o 512 /dev/loop/0 /path/to/the/img
# create some filesystem on it, for example ext2
mkfs.ext2 -m0 -Lslash /dev/loop/0
# mount it and copy your stuff to it
~/src/busybox/busybox mount -oloop,rw /dev/loop/0 /media/l0
~/src/busybox/busybox mkdir -p /media/l0/boot/grub
~/src/busybox/busybox cp -a project_build_i386/root/boot/grub/stage? /media/l0/boot/grub/
~/src/busybox/busybox cp -a project_build_i386/root/boot/bzImage /media/l0/boot/
~/src/busybox/busybox cat > /media/l0/boot/grub/menu.lst <<EOF
title=GNU/Linux
root (hd0,0)
kernel /boot/bzImage
EOF
# finally unmount the dist and disassociate the loopdev
~/src/busybox/busybox umount /media/l0
~/src/busybox/busybox losetup -d /dev/loop/0
# now install grub from the chroot
~/src/busybox/busybox losetup /dev/loop/0 /path/to/the/img
project_build_i386/root/usr/sbin/grub --device-map=/dev/null
device (hd0) img
geometry (hd0) 16065 255 63
root (hd0,0)
setup (hd0)
quit
# finally boot the thing
/opt/qemu-trunk_ggi-2.2.2/bin/qemu -snapshot -hda img -boot c

67
docs/TESTING.html Normal file
View File

@@ -0,0 +1,67 @@
<!--#include file="header.html" -->
<h2>Testing Buildroot for an Architecture</h2>
<p>
<h4>scripts/mkpkg script</h4>
If you want to test the build of a single package you can use the mkpkg script.
</p>
<p>
<li>$ scripts/mkpkg PACKAGE</li>
</p>
<p>
Will make the board, and save the result in a log file.
The log file resides in
<li>$ log/OK/PACKAGE.log.OK</li>
</p>
<p>
if the build succeeds and in
<li>$ log/OK/PACKAGE.log.FAIL</li>
</p>
<p>
if it cannot complete.
</p>
<p>
By creating an alias
<li>alias mk=scripts/mkpkg</li>
</p>
<p>
it is enough to type
<li>$ mk PACKAGE</li>
</p>
<p>
mkpkg will only print out the <h4>{PACKAGE}......OK</h4> or <h4>{PACKAGE}......FAIL</h4>
depending on success or failure making it easy to get an overview
of the status of this specific architecture.
</p>
<p>
It is recommended to build a simple board before running the test
to get some basic things done.
</p>
<p>
<h4>scripts/buildall.sh script</h4>
</p>
<p>
By running this script you will run scripts/mkpkg on
a lot of the packages available in Buildroot.
</p>
<p>
You need to run the script while in the TOP directory.
I.E: Where you typically run make.
</p>
<p>
There are a few lacking, for no very good reason,
but these can be easily added.
</p>
<p>
Note that some packages will not build properly
if you do not enable them using makeconfig.
</p>
<p>
Examples are:
<li>freetype</li>
<li>socat</li>
</p>
<!--#include file="footer.html" -->

255
docs/U-boot.html Normal file
View File

@@ -0,0 +1,255 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Buildroot - U-boot extensions in 2009.01-rc1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
</head>
<body>
<div class="main">
<div class="titre">
<a name="top" id="top"></a>
<h1>U-boot extensions in 2009.01-rc1</h1>
</div>
<p><a href="http://buildroot.uclibc.org/">U-Boot</a>
usage and documentation by Ulf Samuelsson.
</p>
<p><small>$LastChangedDate: 2008-12-16 10:00:11 +0100 (tis, 16 dec 2008) $</small></p>
<ul>
<li><a href="#about">About U-Boot</a></li>
<li><a href="#at91rm9200dk">Board Support for AT91RM9200DK</a></li>
<li><a href="#at91rm9200ek">Board Support for AT91RM9200EK</a></li>
<li><a href="#at91sam9g20ek">Board Support for AT91SAM9G20EK</a></li>
<li><a href="#Minicom extensions">X-Modem/Raw extensions to minicom</a></li>
<li><a href="#cmd_factory">New Command: factory</a></li>
<li><a href="#cmd_os">New Command: os</a></li>
<li><a href="#cmd_fs">New Command: fs</a></li>
<li><a href="#cmd_setargs">New Command: setargs</a></li>
<li><a href="#cmd_led">New Command: led</a></li>
<li><a href="#cmd_mux">New Command: mux</a></li>
<li><a href="#cmd_ethinit">New Command: ethinit</a></li>
<li><a href="#environment">Special environment variables</a></li>
</ul>
<h2><a name="about" id="about"></a>About U-boot</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
U-Boot is an open source bootloader ported to a multitude of processors.
See (<a href="http://www.denx.de/wiki/U-Boot/WebHome">U-Boot Home</a>)
for documentation for vanilla U-Boot. This document only describes
changes compared to the vanilla u-boot.
</p>
<h2><a name="at91rm9200dk" id="at91rm9200dk"></a>Board support for at91rm9200dk</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
"at91rm9200dk" is updated to use a linux like API for gpio.
A new target "at91rm9200dk_df" is defined to support boot from dataflash.
</p>
<h2><a name="at91rm9200ek" id="at91rm9200ek"></a>Board support for at91rm9200ek</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
The "at91rm9200ek" BSP supports booting from a parallel flash.
The "at91rm9200df" BSP supports a generic target booting from dataflash.
</p>
<h2><a name="#at91sam9g20ek" id="#at91sam9g20ek"></a>Board support for at91sam9g20ek</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
The "at91sam9g20ek" target with dataflash(card) and NAND boot support.
</p>
<h2><a name="minicom_extensions" id="minicom_extensions"></a>Minicom extensions </h2>
<a href="#top"><small>[TOP]</small></a>
<p>
"sx-at91" is a reliable X-Modem application allowing download to the at91rm9200
based board
</p>
<p>
"raw-at91" is a download application which will download binary data using minicom.
Typically used to download an environment script.
</p>
<h2><a name="cmd_factory" id="cmd_factory"></a>New command: factory</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>factory</code></h3>
</p>
<p>
"factory" will set a selected set of environment variables
back to the compile time default. The following will give some
hints on capabilities, but is not yet complete.
</p>
<p>
It will generate a set of scripts which will facilitate downloading
the kernel and root file system using tftp and will also
add commands to store into and retrieve from flash
</p>
<h2><a name="cmd_os" id="cmd_os"></a>New command: os</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>os<code></h3>
</p>
<p>
"os" computes a new name for the linux kernel
</p>
<h2><a name="cmd_fs" id="cmd_fs"></a>New command: fs</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>fs<code></h3>
</p>
<p>
"fs" computes a new name for the file system
</p>
<h2><a name="cmd_setargs" id="cmd_setargs"></a>New command: setargs</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>setargs<code></h3>
</p>
<p>
"setargs" will create new bootcmd/bootargs combination from
kernel name, filesystem name, and rootfs type.
</p>
<h2><a name="cmd_led" id="cmd_led"></a>New command: led</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>led [green | yellow | red | all ] [ on | off ]<code></h3>
</p>
<p>
"led" will turn on or off the specified (coloured) led
</p>
<h2><a name="cmd_mux" id="cmd_mux"></a>New command: mux</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>mux [spi | mmc ]<code></h3>
</p>
<p>
"mux" will select how to use the flash card connector on the
at91rm9200dk or at91rm9200ek
</p>
<h2><a name="cmd_ethinit" id="cmd_ethinit"></a>New command: ethinit</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>ethinit<code></h3>
</p>
<p>
"ethinit" can be used to delay the boot of linux, until a valid network
connection has been established. This is useful if the machine is NFS mounting
the root file system and both this machine and the NFS server are powering up
simultaneously. The NFS server could take a lot longer to boot, and waiting
for this to boot may be neccessary for proper operation.
</p>
<h2><a name="environment" id="environment"></a>Special environment variables</h2>
<a href="#top"><small>[TOP]</small></a>
<p>
<h3><code>rd<code></h3>
</p>
<p>
rd contains the name of the current root file system
It is autmatically generated from <bold>ver</bold> and <bold>rd-1</bold>, <bold>rd-2</bold> etc.
The "fs-date" is added at the end.
</p>
<p>
<h3><code>ver<code></h3>
</p>
<p>
You can handle a number of different root fs by defining <code>ver</code>.
When running <code>fs</code> rd will be assigned from one of:
<ul><code>rd-1, rd2, rd-3 ...<code></ul>
</p>
<p>
By defining <code>ver</code> to a number you will
select the appropriate disk name
</p>
<p>
<h3><code>fs-date<code></h3>
</p>
<p>
"date" part of the root file system name
</p>
<p>
<h3><code>linux<code></h3>
</p>
<p>
linux contains the name of the current kernel.
</p>
<p>
It is generated from several environment variables when <code>os</code> is run
</p>
<p>
A typical name would be "at91sam9263ek-linux-2.6.28-20090105.gz"
</p>
<p>
<h3><code>hostname<code></h3>
</p>
<p>
"name" part of the kernel file name
</p>
<p>
<h3><code>kernel-version<code></h3>
</p>
<p>
"version" part of the kernel file name
</p>
<p>
<h3><code>kernel-date<code></h3>
</p>
<p>
"date" part of the kernel file name
</p>
<p>
<h3><code>fstype [ ram | flash ]<code></h3>
<p>
You can have several file system types.
bootargs is created depending on fstype..
</p>
<a href="#top"><small>[TOP]</small></a>
</div>
<!--
<a href="http://validator.w3.org/check?uri=referer"><img
border="0" height="31" width="88"
src="images/valid-html401.png"
alt="Valid HTML"></img></a>
-->
</body>
</html>

View File

@@ -3,62 +3,24 @@
<!-- Begin Introduction section -->
<h3>Buildroot: making Embedded Linux easy</h3>
<h3>buildroot: making Embedded Linux easy</h3>
<div align="center">
<a href="images/menuconfig.png">
<img src="images/menuconfig_small.png" width="340" height="220"
alt="Buildroot menuconfig" border="0">
</a>
</div>
<p>Buildroot is a set of Makefiles and patches that makes it easy to
generate a complete embedded Linux system. Buildroot can generate any
or all of a cross-compilation toolchain, a root filesystem, a kernel
image and a bootloader image. Buildroot is useful mainly for people
working with small or embedded systems, using various CPU
architectures (x86, ARM, MIPS, PowerPC, etc.) : it automates the
building process of your embedded system and eases the
cross-compilation process.</p>
Buildroot is a set of Makefiles and patches that makes it easy generate a
cross-compilation toolchain and root filesystem for your target Linux
system using the <a href= "http://www.uclibc.org/">uClibc C library</a>.
Buildroot is useful mainly for people working with small or embedded
systems. Embedded systems often use processors that are not the regular
x86 processors everyone is used to using on their PC. It can be PowerPC
processors, MIPS processors, ARM processors, etc. And to be extra safe,
you do not need to be root to build or run buildroot.
<p>The major Buildroot features are:</p>
<p>
<ul>
<li>Can <b>handle everything</b> in your embedded system development
project: cross-compiling toolchain, root filesystem generation,
kernel image compilation and bootloader compilation. Buildroot is
also sufficiently flexible that it can also be used for only one or
several of these steps.</li>
<li>Is <b>very easy</b> to set up, thanks to its menuconfig, gconfig
and xconfig configuration interfaces, familiar to all embedded Linux
developers. Building a basic embedded Linux system with Buildroot
typically takes 15-30 minutes.</li>
<li>Supports <b>several hundreds of packages</b> for userspace
applications and libraries: X.org stack, Gtk2, Qt, DirectFB, SDL,
GStreamer and a large number of network-related and system-related
utilities and libraries are supported.</li>
<li>Supports <b>multiple filesystem types</b> for the root
filesystem image: JFFS2, UBIFS, tarballs, romfs, cramfs, squashfs
and more.</li>
<li>Can generate an uClibc cross-compilation toolchain, or re-use
your existing glibc, eglibc or uClibc cross-compilation
toolchain</li>
<li>Has a <b>simple structure</b> that makes it easy to understand
and extend. It relies only on the well-known Makefile language.</li>
</ul>
<p>Buildroot is maintained by <a href=
"mailto:jacmet@uclibc.org">Peter Korsgaard</a>, and licensed under the
<a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU
GENERAL PUBLIC LICENSE V2 (Or later)</a>. Stable releases are
delivered every three months.</p>
buildroot is maintained by <a href=
"mailto:jacmet@uclibc.org">Peter Korsgaard</a>, and
licensed under the
<a href="http://www.gnu.org/copyleft/lgpl.html">GNU LIBRARY GENERAL PUBLIC LICENSE</a>.
<!--#include file="footer.html" -->

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
The code and graphics on this website (and it's mirror sites, if any) are
Copyright (c) 1999-2005 by Erik Andersen, 2006-2011 The Buildroot
Copyright (c) 1999-2005 by Erik Andersen, 2006-2009 The Buildroot
developers. All rights reserved.
Documents on this Web site including their graphical elements, design, and
@@ -25,6 +25,6 @@ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
You have been warned.
You can contact the webmaster at <buildroot@uclibc.org> if you have some sort
You can contact the webmaster at <andersen@codepoet.org> if you have some sort
of problem with this.

View File

@@ -1,46 +1,64 @@
<!--#include file="header.html" -->
<h3>Developer Access</h3>
<h3>Subversion Read/Write Access</h3>
Because we use Git for version control, you don't need developer (ssh)
access on uclibc.org to contribute to Buildroot, but you can request
it if needed.
If you want to be able to commit things to Subversion, first contribute some
stuff to show you are serious. Then, very nicely ask <a
href="mailto:buildroot@uclibc.org">The Buildroot Developers</a> to set you up
with commit access to the Subversion repository. To access Subversion, you
will want to add the following to set up your environment:
<p>
To obtain developer access, you will need to demonstrate you are
serious by submitting a few good patches first. Then, you will need
to select a username to use when logging in, you will need to send me
the username you have selected, you must send me your preferred
contact email address, and finally, you must send me an ssh version 2
DSA key with 1024 bits (the default) or more. If you do not currently
have an ssh version 2 DSA key, you can generate a key using the
command<pre>ssh-keygen -t dsa</pre> This will create the
files <pre>/home/&lt;USERNAME&gt;/ssh/id_dsa
/home/&lt;USERNAME&gt;/.ssh/id_dsa.pub</pre> It is recommended that
you generate a key with a "passphrase" for security reasons.
To obtain commit access, you will need to demonstrate you are serious by
submitting a few good patches first. Then, you will need to select a username
to use when committing changes to SVN, you will need to send me the username
you have selected, you must send me your preferred contact email address, and
finally, you must send me an ssh version 2 DSA key with 1024 bits (the default)
or more. If you do not currently have an ssh version 2 DSA key, you can
generate a key using the command<pre>ssh-keygen -t dsa</pre> This will
create the files <pre>/home/&lt;USERNAME&gt;/ssh/id_dsa
/home/&lt;USERNAME&gt;/.ssh/id_dsa.pub</pre>
It is recommended that you generate a key with a "passphrase" for security reasons.
<p>
Make the file known to the system by running
<pre>ssh-add ~/.ssh/id_dsa</pre>
You must then send the content of 'id_dsa.pub' to me so I can setup your account.
You must then send the content of 'id_dsa.pub' to me so I can setup your account.
The content of 'id_dsa' should of course be kept secret.
<p>
Once you have an account, you can use it to store Git
repositories. Simply put them in subdirectories of your ~/git, and
touch ~/git/<repo>/git-daemon-export-ok, after which the hourly
cronjob will pick them up and show them in cgit. They are also
available though git-daemon:
Once you are setup with an account, you will need to use your account to
checkout a copy of buildroot from Subversion:
<pre>git clone git://git.buildroot.net/~&lt;USERNAME&gt/git/&lt;REPO&gt;</pre>
<pre>
svn list svn+ssh://username@svn.uclibc.org/svn/trunk/buildroot</pre>
<br>
It goes without saying you must change <em>username</em> to your own
username...
<p>
You can then enter the newly checked out buildroot directory, make changes, check
your changes, diff your changes, revert your changes, and and commit your
changes usine commands such as:
<pre>
svn diff
svn status
svn revert
svn commit</pre>
<p>
For additional detail on how to use Subversion, please visit the
<a href="http://subversion.tigris.org/">the Subversion website</a>.
You might also want to read online or buy a copy of <a
href="http://svnbook.red-bean.com/">the Subversion Book</a>...
For additional detail on how to use Git, please visit the
<a href="http://git-scm.org/">the Git website</a>.
<!--#include file="footer.html" -->

View File

@@ -1,32 +1,29 @@
<!--#include file="header.html" -->
<h3>Documentation</h3>
<p>Our document "Buildroot usage and documentation" is where you want
to start reading if you wish to understand how Buildroot work, or wish
to change/extend/fix things. If you find any errors (factual,
grammatical, whatever) please report them. Choose between:</p>
<ul>
<li><a href="/downloads/buildroot.html">Latest stable release</a></li>
<li><a href="buildroot.html">GIT head revision</a></li>
</ul>
<p>If you find that you need help with Buildroot, you can ask for
help:</p>
Current documentation for buildroot includes:
<ul>
<li>On the <a href="lists.html">buildroot mailing list</a>
at <code>buildroot at uclibc.org</code></li>
<li>
<a href= "buildroot.html">Buildroot - Usage and
documentation</a> is where you want to start reading if you wish to
understand how buildroot work, or wish to change/extend/fix things. If you
find any errors (factual, grammatical, whatever) please report them.
</li>
<li>On the <a href="irc://freenode.net/#uclibc">Buildroot IRC
channel</a>, <code>#uclibc</code> on Freenode</li>
<li>
<a href="README">README</a>. This is the README file included in the
buildroot source release.
</li>
<li>On our <a href="https://bugs.uclibc.org">bugtracker</a>.</li>
<li>Through the various companies offering commercial Buildroot
support.</li>
<li>
If you find that you need help with buildroot, you can ask for help on the
<a href= "lists/uClibc/">buildroot mailing list</a> at buildroot at mail.uclibc.org.
In addition the BusyBox, uClibc, and buildroot developers are also known to
hang out on the uClibc IRC channel: #uclibc on irc.freenode.net.
</li>
</ul>

View File

@@ -6,40 +6,30 @@
<p>
The latest stable release is <b>2011.08</b>, which can be downloaded
here:<p>
<a href="/downloads/buildroot-2011.08.tar.gz">buildroot-2011.08.tar.gz</a>
or
<a href="/downloads/buildroot-2011.08.tar.bz2">buildroot-2011.08.tar.bz2</a>.
<p>
The latest release candidate is <b>2011.11-rc2</b>, which can be
downloaded here:<p>
<a href="/downloads/buildroot-2011.11-rc2.tar.gz">buildroot-2011.11-rc2.tar.gz</a>
or
<a href="/downloads/buildroot-2011.11-rc2.tar.bz2">buildroot-2011.11-rc2.tar.bz2</a>.
<p>
This and earlier releases can always be downloaded from
<a href="/downloads/">http://buildroot.net/downloads/</a>.
The latest release can always be dowloaded from
<a href="/downloads/">http://buildroot.uclibc.org/downloads/</a>.
<p>
You can also obtain <a href="/downloads/snapshots/">Daily
Snapshots</a> of the latest Buildroot source tree if you want to to
follow development, but cannot or do not wish to use Git.
follow development, but cannot or do not wish to use Subversion (svn).
<ul>
<li> Click here to <a href="downloads/snapshots/">Daily Snapshots</a>.
</li>
<li> Click here to <a href="http://git.buildroot.net/buildroot">browse the source tree</a>.
<li> Click here to <a href="http://sources.busybox.net/index.py/trunk/buildroot/">browse the source tree</a>.
</li>
<li>Anonymous <a href="git.html">Git access</a> is available.
<li>Anonymous <a href="subversion.html">Subversion access</a> is available.
</li>
<li>For those that are actively contributing obtaining
<a href="developer.html">Subversion read/write access</a> is also possible.
</li>
</ul>
<!--#include file="footer.html" -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -9,8 +9,7 @@
<p>
<font face="arial, helvetica, sans-serif" size="-1">
<a HREF="/copyright.txt">Copyright &copy; 1999-2005 Erik Andersen,
2006-2011 The Buildroot developers</a>
<a HREF="/copyright.txt">Copyright &copy; 1999-2009 Erik Andersen</a>
<br>
Mail all comments, insults, suggestions and bribes to
<br>

View File

@@ -1,44 +0,0 @@
<!--#include file="header.html" -->
<h3>Git Access</h3>
The buildroot repository can be browsed online through cgit at
<a href="http://git.buildroot.net/buildroot">http://git.buildroot.net/buildroot</a>.
To grab a copy of the repository use
<pre>
git clone git://git.buildroot.net/buildroot</pre>
Or if you're behind a firewall blocking git:
<pre>
git clone http://git.buildroot.net/git/buildroot.git</pre>
<p>
Please use the native git protocol if at all possible, as it's a lot
more efficient than HTTP.
<p>
If you are not already familiar with using Git, we recommend you visit <a
href="http://git-scm.org">the Git website</a>.
<p>
Once you've checked out a copy of the source tree, you can update your source
tree at any time so it is in sync with the latest and greatest by entering your
buildroot directory and running the command:
<pre>
git pull
</pre>
Because you've only been granted anonymous access to the tree, you won't be
able to commit any changes. Changes can be submitted for inclusion by posting
them to the buildroot mailing list or to the <a
href="https://bugs.uclibc.org/">Bug and Patch Tracking System</a>.
<!--#include file="footer.html" -->

View File

@@ -15,21 +15,6 @@
td.c2 {font-family: arial, helvetica, sans-serif; font-size: 80%}
td.c1 {font-family: lucida, helvetica; font-size: 248%}
</style>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-21761074-1']);
_gaq.push(['_setDomainName', 'none']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
@@ -42,16 +27,28 @@
<tr>
<td valign="TOP">
<a href="/"><IMG SRC="images/logo_small.png" alt="Buildroot"
border="0" width="200" height="100"></a><BR>
<td>
<div class="c3">
<table border="0" cellspacing="1" cellpadding="2">
<tr>
<td class="c1">BUILDROOT</td>
</tr>
</table>
</div>
<a href="/"><IMG SRC="images/busybox1.png" alt="Buildroot" border="0"></a><BR>
</td>
</tr>
<tr>
<td valign="TOP">
<br><a href="/about.html">About</a>
<br><a href="/news.html">Latest News</a>
<br><a href="/download.html">Download</a>
<br><a href="http://git.buildroot.net/buildroot">Browse Source</a>
<br><a href="/git.html">Accessing Source</a>
<br><a href="https://bugs.uclibc.org/">Bug Tracking</a>
<br><a href="http://sources.busybox.net/index.py/trunk/buildroot/">Browse Source</a>
<br><a href="/subversion.html">Accessing Source</a>
<br><a href="http://bugs.uclibc.org/">Bug Tracking</a>
<br><a href="/docs.html">Documentation</a>
<br><a href="/lists.html">Mailing Lists</a>

BIN
docs/images/busybox1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

View File

@@ -1 +1 @@
<!--#include file="about.html" -->
<!--#include file="news.html" -->

View File

@@ -8,9 +8,7 @@ development. You can subscribe by visiting
<a href="http://lists.busybox.net/mailman/listinfo/buildroot">this page</a>.
Only subscribers to the Buildroot mailing list are allowed to post
to this list.
<p>
The list is also available through <a
href="http://gmane.org">Gmane</a> at <a href="http://dir.gmane.org/gmane.comp.lib.uclibc.buildroot">gmane.comp.lib.uclibc.buildroot</a>.
<p>
<h3>Search the List Archives</h3>
@@ -22,8 +20,8 @@ list with frequently asked questions...
<center>
<form method="GET" action="http://www.google.com/custom">
<input type="hidden" name="domains" value="lists.busybox.net">
<input type="hidden" name="sitesearch" value="lists.busybox.net">
<input type="hidden" name="domains" value="buildroot.uclibc.org">
<input type="hidden" name="sitesearch" value="buildroot.uclibc.org">
<input type="text" name="q" size="31" maxlength="255" value="">
<br>
<input type="submit" name="sa" value="search the mailing list archives">

View File

@@ -1,171 +0,0 @@
Infrastructure for autotools-based packages
-------------------------------------------
[[autotargets-tutorial]]
+AUTOTARGETS+ tutorial
~~~~~~~~~~~~~~~~~~~~~~
First, let's see how to write a +.mk+ file for an autotools-based
package, with an example :
------------------------
01: #############################################################
02: #
03: # libfoo
04: #
05: #############################################################
06: LIBFOO_VERSION = 1.0
07: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
08: LIBFOO_SITE = http://www.foosoftware.org/download
09: LIBFOO_INSTALL_STAGING = YES
10: LIBFOO_INSTALL_TARGET = YES
11: LIBFOO_CONF_OPT = --enable-shared
12: LIBFOO_DEPENDENCIES = libglib2 host-pkg-config
13:
14: $(eval $(call AUTOTARGETS))
------------------------
On line 6, we declare the version of the package.
On line 7 and 8, we declare the name of the tarball and the location
of the tarball on the Web. Buildroot will automatically download the
tarball from this location.
On line 9, we tell Buildroot to install the package to the staging
directory. The staging directory, located in +output/staging/+
is the directory where all the packages are installed, including their
development files, etc. By default, packages are not installed to the
staging directory, since usually, only libraries need to be installed in
the staging directory: their development files are needed to compile
other libraries or applications depending on them. Also by default, when
staging installation is enabled, packages are installed in this location
using the +make install+ command.
On line 10, we tell Buildroot to also install the package to the
target directory. This directory contains what will become the root
filesystem running on the target. Usually, we try not to install header
files and to install stripped versions of the binary. By default, target
installation is enabled, so in fact, this line is not strictly
necessary. Also by default, packages are installed in this location
using the +make install+ command.
On line 11, we tell Buildroot to pass a custom configure option, that
will be passed to the +./configure+ script before configuring
and building the package.
On line 12, we declare our dependencies, so that they are built
before the build process of our package starts.
Finally, on line line 14, we invoke the +AUTOTARGETS+
macro that generates all the Makefile rules that actually allows the
package to be built.
[[autotargets-reference]]
+AUTOTARGETS+ reference
~~~~~~~~~~~~~~~~~~~~~~~
The main macro of the autotools package infrastructure is
+AUTOTARGETS+. It has the same number of arguments and the
same semantic as the +GENTARGETS+ macro, which is the main
macro of the generic package infrastructure. For autotools packages, the
ability to have target and host packages is also available (and is
actually widely used).
Just like the generic infrastructure, the autotools infrastructure
works by defining a number of variables before calling the
+AUTOTARGETS+ macro.
First, all the package metadata information variables that exist in the
generic infrastructure also exist in the autotools infrastructure:
+LIBFOO_VERSION+, +LIBFOO_SOURCE+,
+LIBFOO_PATCH+, +LIBFOO_SITE+,
+LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+,
+LIBFOO_INSTALL_STAGING+, +LIBFOO_INSTALL_TARGET+.
A few additional variables, specific to the autotools infrastructure,
can also be defined. Many of them are only useful in very specific
cases, typical packages will therefore only use a few of them.
* +LIBFOO_SUBDIR+ may contain the name of a subdirectory
inside the package that contains the configure script. This is useful,
if for example, the main configure script is not at the root of the
tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is
not specified, it defaults to +LIBFOO_SUBDIR+.
* +LIBFOO_CONF_ENV+, to specify additional environment
variables to pass to the configure script. By default, empty.
* +LIBFOO_CONF_OPT+, to specify additional configure
options to pass to the configure script. By default, empty.
* +LIBFOO_MAKE+, to specify an alternate +make+
command. This is typically useful when parallel make is enabled in
the configuration (using +BR2_JLEVEL+) but that this
feature should be disabled for the given package, for one reason or
another. By default, set to +$(MAKE)+. If parallel building
is not supported by the package, then it should be set to
+LIBFOO_MAKE=$(MAKE1)+.
* +LIBFOO_MAKE_ENV+, to specify additional environment
variables to pass to make in the build step. These are passed before
the +make+ command. By default, empty.
* +LIBFOO_MAKE_OPT+, to specify additional variables to
pass to make in the build step. These are passed after the
+make+ command. By default, empty.
* +LIBFOO_AUTORECONF+, tells whether the package should
be autoreconfigured or not (i.e, if the configure script and
Makefile.in files should be re-generated by re-running autoconf,
automake, libtool, etc.). Valid values are +YES+ and
+NO+. By default, the value is +NO+
* +LIBFOO_AUTORECONF_OPT+ to specify additional options
passed to the 'autoreconf' program if
+LIBFOO_AUTORECONF=YES+. By default, empty.
* +LIBFOO_LIBTOOL_PATCH+ tells whether the Buildroot
patch to fix libtool cross-compilation issues should be applied or
not. Valid values are +YES+ and +NO+. By
default, the value is +YES+
* +LIBFOO_INSTALL_STAGING_OPT+ contains the make options
used to install the package to the staging directory. By default, the
value is +DESTDIR=$$(STAGING_DIR) install+, which is
correct for most autotools packages. It is still possible to override
it.
* +LIBFOO_INSTALL_TARGET_OPT+ contains the make options
used to install the package to the target directory. By default, the
value is +DESTDIR=$$(TARGET_DIR) install+. The default
value is correct for most autotools packages, but it is still possible
to override it if needed.
* +LIBFOO_CLEAN_OPT+ contains the make options used to
clean the package. By default, the value is +clean+.
* +LIBFOO_UNINSTALL_STAGING_OPT+, contains the make
options used to uninstall the package from the staging directory. By
default, the value is +DESTDIR=$$(STAGING_DIR) uninstall+.
* +LIBFOO_UNINSTALL_TARGET_OPT+, contains the make
options used to uninstall the package from the target directory. By
default, the value is +DESTDIR=$$(TARGET_DIR) uninstall+.
With the autotools infrastructure, all the steps required to build
and install the packages are already defined, and they generally work
well for most autotools-based packages. However, when required, it is
still possible to customize what is done in any particular step:
* By adding a post-operation hook (after extract, patch, configure,
build or install). See the reference documentation of the generic
infrastructure for details.
* By overriding one of the steps. For example, even if the autotools
infrastructure is used, if the package +.mk+ file defines its
own +LIBFOO_CONFIGURE_CMDS+ variable, it will be used
instead of the default autotools one. However, using this method
should be restricted to very specific cases. Do not use it in the
general case.

View File

@@ -1,142 +0,0 @@
Infrastructure for CMake-based packages
---------------------------------------
[[cmaketargets-tutorial]]
+CMAKETARGETS+ tutorial
~~~~~~~~~~~~~~~~~~~~~~~
First, let's see how to write a +.mk+ file for a CMake-based package,
with an example :
------------------------
01: #############################################################
02: #
03: # libfoo
04: #
05: #############################################################
06: LIBFOO_VERSION = 1.0
07: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
08: LIBFOO_SITE = http://www.foosoftware.org/download
09: LIBFOO_INSTALL_STAGING = YES
10: LIBFOO_INSTALL_TARGET = YES
11: LIBFOO_CONF_OPT = -DBUILD_DEMOS=ON
12: LIBFOO_DEPENDENCIES = libglib2 host-pkg-config
13:
14: $(eval $(call CMAKETARGETS))
------------------------
On line 6, we declare the version of the package.
On line 7 and 8, we declare the name of the tarball and the location
of the tarball on the Web. Buildroot will automatically download the
tarball from this location.
On line 9, we tell Buildroot to install the package to the staging
directory. The staging directory, located in +output/staging/+
is the directory where all the packages are installed, including their
development files, etc. By default, packages are not installed to the
staging directory, since usually, only libraries need to be installed in
the staging directory: their development files are needed to compile
other libraries or applications depending on them. Also by default, when
staging installation is enabled, packages are installed in this location
using the +make install+ command.
On line 10, we tell Buildroot to also install the package to the
target directory. This directory contains what will become the root
filesystem running on the target. Usually, we try not to install header
files and to install stripped versions of the binary. By default, target
installation is enabled, so in fact, this line is not strictly
necessary. Also by default, packages are installed in this location
using the +make install+ command.
On line 11, we tell Buildroot to pass custom options to CMake when it is
configuring the package.
On line 12, we declare our dependencies, so that they are built
before the build process of our package starts.
Finally, on line line 14, we invoke the +CMAKETARGETS+
macro that generates all the Makefile rules that actually allows the
package to be built.
[[cmaketargets-reference]]
+CMAKETARGETS+ reference
~~~~~~~~~~~~~~~~~~~~~~~~
The main macro of the CMake package infrastructure is
+CMAKETARGETS+. It has the same number of arguments and the same
semantic as the +GENTARGETS+ macro, which is the main macro of the
generic package infrastructure. For CMake packages, the ability to
have target and host packages is also available.
Just like the generic infrastructure, the CMake infrastructure works
by defining a number of variables before calling the +CMAKETARGETS+
macro.
First, all the package metadata information variables that exist in
the generic infrastructure also exist in the CMake infrastructure:
+LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+,
+LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+,
+LIBFOO_INSTALL_TARGET+.
A few additional variables, specific to the CMake infrastructure, can
also be defined. Many of them are only useful in very specific cases,
typical packages will therefore only use a few of them.
* +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the
package that contains the main CMakeLists.txt file. This is useful,
if for example, the main CMakeLists.txt file is not at the root of
the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not
specified, it defaults to +LIBFOO_SUBDIR+.
* +LIBFOO_CONF_ENV+, to specify additional environment variables to
pass to CMake. By default, empty.
* +LIBFOO_CONF_OPT+, to specify additional configure options to pass
to CMake. By default, empty.
* +LIBFOO_MAKE+, to specify an alternate +make+ command. This is
typically useful when parallel make is enabled in the configuration
(using +BR2_JLEVEL+) but that this feature should be disabled for
the given package, for one reason or another. By default, set to
+$(MAKE)+. If parallel building is not supported by the package,
then it should be set to +LIBFOO_MAKE=$(MAKE1)+.
* +LIBFOO_MAKE_ENV+, to specify additional environment variables to
pass to make in the build step. These are passed before the +make+
command. By default, empty.
* +LIBFOO_MAKE_OPT+, to specify additional variables to pass to make
in the build step. These are passed after the +make+ command. By
default, empty.
* +LIBFOO_INSTALL_STAGING_OPT+ contains the make options used to
install the package to the staging directory. By default, the value
is +DESTDIR=$$(STAGING_DIR) install+, which is correct for most
CMake packages. It is still possible to override it.
* +LIBFOO_INSTALL_TARGET_OPT+ contains the make options used to
install the package to the target directory. By default, the value
is +DESTDIR=$$(TARGET_DIR) install+. The default value is correct
for most CMake packages, but it is still possible to override it if
needed.
* +LIBFOO_CLEAN_OPT+ contains the make options used to clean the
package. By default, the value is +clean+.
With the CMake infrastructure, all the steps required to build and
install the packages are already defined, and they generally work well
for most CMake-based packages. However, when required, it is still
possible to customize what is done in any particular step:
* By adding a post-operation hook (after extract, patch, configure,
build or install). See the reference documentation of the generic
infrastructure for details.
* By overriding one of the steps. For example, even if the CMake
infrastructure is used, if the package +.mk+ file defines its own
+LIBFOO_CONFIGURE_CMDS+ variable, it will be used instead of the
default CMake one. However, using this method should be restricted
to very specific cases. Do not use it in the general case.

View File

@@ -1,10 +0,0 @@
Conclusion
----------
As you can see, adding a software package to Buildroot is simply a
matter of writing a Makefile using an existing example and modifying it
according to the compilation process required by the package.
If you package software that might be useful for other people, don't
forget to send a patch to Buildroot developers!

View File

@@ -1,133 +0,0 @@
Package directory
-----------------
First of all, create a directory under the +package+ directory for
your software, for example +libfoo+.
Some packages have been grouped by topic in a sub-directory:
+multimedia+, +java+, +x11r7+, and +games+. If your package fits in
one of these categories, then create your package directory in these.
+Config.in+ file
~~~~~~~~~~~~~~~~
Then, create a file named +Config.in+. This file will contain the
option descriptions related to our +libfoo+ software that will be used
and displayed in the configuration tool. It should basically contain :
---------------------------
config BR2_PACKAGE_LIBFOO
bool "libfoo"
help
This is a comment that explains what libfoo is.
http://foosoftware.org/libfoo/
---------------------------
The +bool+ line, +help+ line and other meta-informations about the
configuration option must be indented with one tab. The help text
itself should be indented with one tab and two spaces, and it must
mention the upstream URL of the project.
Of course, you can add other sub-options into a +if
BR2_PACKAGE_LIBFOO...endif+ statement to configure particular things
in your software. You can look at examples in other packages. The
syntax of the +Config.in+ file is the same as the one for the kernel
Kconfig file. The documentation for this syntax is available at
http://lxr.free-electrons.com/source/Documentation/kbuild/kconfig-language.txt[]
Finally you have to add your new +libfoo/Config.in+ to
+package/Config.in+ (or in a category subdirectory if you decided to
put your package in one of the existing categories). The files
included there are 'sorted alphabetically' per category and are 'NOT'
supposed to contain anything but the 'bare' name of the package.
--------------------------
source "package/libfoo/Config.in"
--------------------------
The +Config.in+ file of your package must also ensure that
dependencies are enabled. Typically, Buildroot uses the following
rules:
* Use a +select+ type of dependency for dependencies on
libraries. These dependencies are generally not obvious and it
therefore make sense to have the kconfig system ensure that the
dependencies are selected. For example, the _libgtk2_ package uses
+select BR2_PACKAGE_LIBGLIB2+ to make sure this library is also
enabled.
* Use a +depends on+ type of dependency when the user really needs to
be aware of the dependency. Typically, Buildroot uses this type of
dependency for dependencies on toolchain options (large file
support, RPC support, IPV6 support), or for dependencies on "big"
things, such as the X.org system. In some cases, especially
dependency on toolchain options, it is recommended to add a
+comment+ displayed when the option is not enabled, so that the user
knows why the package is not available.
An example illustrates both the usage of +select+ and +depends on+.
--------------------------
config BR2_PACKAGE_ACL
bool "acl"
select BR2_PACKAGE_ATTR
depends on BR2_LARGEFILE
help
POSIX Access Control Lists, which are used to define more
fine-grained discretionary access rights for files and
directories.
This package also provides libacl.
http://savannah.nongnu.org/projects/acl
comment "acl requires a toolchain with LARGEFILE support"
depends on !BR2_LARGEFILE
--------------------------
Note that such dependencies will make sure that the dependency option
is also enabled, but not necessarily built before your package. To do
so, the dependency also needs to be expressed in the +.mk+ file of the
package.
The +.mk+ file
~~~~~~~~~~~~~~
Finally, here's the hardest part. Create a file named +libfoo.mk+. It
describes how the package should be downloaded, configured, built,
installed, etc.
Depending on the package type, the +.mk+ file must be written in a
different way, using different infrastructures:
* *Makefiles for generic packages* (not using autotools or CMake):
These are based on an infrastructure similar to the one used for
autotools-based packages, but requires a little more work from the
developer. They specify what should be done for the configuration,
compilation, installation and cleanup of the package. This
infrastructure must be used for all packages that do not use the
autotools as their build system. In the future, other specialized
infrastructures might be written for other build systems. We cover
them through in a xref:gentargets-tutorial[tutorial] and a
xref:gentargets-reference[reference].
* *Makefiles for autotools-based software* (autoconf, automake, etc.):
We provide a dedicated infrastructure for such packages, since
autotools is a very common build system. This infrastructure 'must'
be used for new packages that rely on the autotools as their build
system. We cover them through a xref:autotargets-tutorial[tutorial]
and xref:autotargets-reference[reference].
* *Makefiles for cmake-based software*: We provide a dedicated
infrastructure for such packages, as CMake is a more and more
commonly used build system and has a standardized behaviour. This
infrastructure 'must' be used for new packages that rely on
CMake. We cover them through a xref:cmaketargets-tutorial[tutorial]
and xref:cmaketargets-reference[reference].
* *Hand-written Makefiles:* These are currently obsolete, and no new
manual Makefiles should be added. However, since there are still
many of them in the tree, we keep them documented in a
xref:handwritten-tutorial[tutorial].

View File

@@ -1,294 +0,0 @@
Infrastructure for packages with specific build systems
-------------------------------------------------------
By 'packages with specific build systems' we mean all the packages
whose build system is not one of the standard ones, such as
'autotools' or 'CMake'. This typically includes packages whose build
system is based on hand-written Makefiles or shell scripts.
[[gentargets-tutorial]]
+GENTARGETS+ Tutorial
~~~~~~~~~~~~~~~~~~~~~
------------------------------
01: #############################################################
02: #
03: # libfoo
04: #
05: #############################################################
06: LIBFOO_VERSION = 1.0
07: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
08: LIBFOO_SITE = http://www.foosoftware.org/download
09: LIBFOO_INSTALL_STAGING = YES
10: LIBFOO_DEPENDENCIES = host-libaaa libbbb
11:
12: define LIBFOO_BUILD_CMDS
13: $(MAKE) CC=$(TARGET_CC) LD=$(TARGET_LD) -C $(@D) all
14: endef
15:
16: define LIBFOO_INSTALL_STAGING_CMDS
17: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a
18: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h
19: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib
20: endef
21:
22: define LIBFOO_INSTALL_TARGET_CMDS
23: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib
24: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d
25: endef
26:
27: $(eval $(call GENTARGETS))
--------------------------------
The Makefile begins on line 6 to 8 with metadata information: the
version of the package (+LIBFOO_VERSION+), the name of the
tarball containing the package (+LIBFOO_SOURCE+) and the
Internet location at which the tarball can be downloaded
(+LIBFOO_SITE+). All variables must start with the same prefix,
+LIBFOO_+ in this case. This prefix is always the uppercased
version of the package name (see below to understand where the package
name is defined).
On line 9, we specify that this package wants to install something to
the staging space. This is often needed for libraries, since they must
install header files and other development files in the staging space.
This will ensure that the commands listed in the
+LIBFOO_INSTALL_STAGING_CMDS+ variable will be executed.
On line 10, we specify the list of dependencies this package relies
on. These dependencies are listed in terms of lower-case package names,
which can be packages for the target (without the +host-+
prefix) or packages for the host (with the +host-+) prefix).
Buildroot will ensure that all these packages are built and installed
'before' the current package starts its configuration.
The rest of the Makefile defines what should be done at the different
steps of the package configuration, compilation and installation.
+LIBFOO_BUILD_CMDS+ tells what steps should be performed to
build the package. +LIBFOO_INSTALL_STAGING_CMDS+ tells what
steps should be performed to install the package in the staging space.
+LIBFOO_INSTALL_TARGET_CMDS+ tells what steps should be
performed to install the package in the target space.
All these steps rely on the +$(@D)+ variable, which
contains the directory where the source code of the package has been
extracted.
Finally, on line 27, we call the +GENTARGETS+ which
generates, according to the variables defined previously, all the
Makefile code necessary to make your package working.
[[gentargets-reference]]
+GENTARGETS+ Reference
~~~~~~~~~~~~~~~~~~~~~~
The +GENTARGETS+ macro takes one optional argument. This argument can
be used to tell if the package is a target package (cross-compiled for
the target) or a host package (natively compiled for the host). If
unspecified, it is assumed that it is a target package. See below for
details.
For a given package, in a single +.mk+ file, it is possible to call
GENTARGETS twice, once to create the rules to generate a target
package and once to create the rules to generate a host package:
----------------------
$(eval $(call GENTARGETS))
$(eval $(call GENTARGETS,host))
----------------------
This might be useful if the compilation of the target package requires
some tools to be installed on the host. If the package name is
+libfoo+, then the name of the package for the target is also
+libfoo+, while the name of the package for the host is
+host-libfoo+. These names should be used in the DEPENDENCIES
variables of other packages, if they depend on +libfoo+ or
+host-libfoo+.
The call to the +GENTARGETS+ macro *must* be at the end of the +.mk+
file, after all variable definitions.
For the target package, the +GENTARGETS+ uses the variables defined by
the .mk file and prefixed by the uppercased package name:
+LIBFOO_*+. For the host package, it uses the +HOST_LIBFOO_*+. For
'some' variables, if the +HOST_LIBFOO_+ prefixed variable doesn't
exist, the package infrastructure uses the corresponding variable
prefixed by +LIBFOO_+. This is done for variables that are likely to
have the same value for both the target and host packages. See below
for details.
The list of variables that can be set in a +.mk+ file to give metadata
information is (assuming the package name is +libfoo+) :
* +LIBFOO_VERSION+, mandatory, must contain the version of the
package. Note that if +HOST_LIBFOO_VERSION+ doesn't exist, it is
assumed to be the same as +LIBFOO_VERSION+. It can also be a
Subversion or Git branch or tag, for packages that are fetched
directly from their revision control system. +
Example: +LIBFOO_VERSION = 0.1.2+
* +LIBFOO_SOURCE+ may contain the name of the tarball of
the package. If +HOST_LIBFOO_SOURCE+ is not specified, it
defaults to +LIBFOO_VERSION+. If none are specified, then
the value is assumed to be
+packagename-$(LIBFOO_VERSION).tar.gz+. +
Example: +LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2+
* +LIBFOO_PATCH+ may contain the name of a patch, that will be
downloaded from the same location as the tarball indicated in
+LIBFOO_SOURCE+. If +HOST_LIBFOO_PATCH+ is not specified, it
defaults to +LIBFOO_PATCH+. Also note that another mechanism is
available to patch a package: all files of the form
+packagename-packageversion-description.patch+ present in the
package directory inside Buildroot will be applied to the package
after extraction.
* +LIBFOO_SITE+ may contain the Internet location of the package. It
can either be the HTTP or FTP location of a tarball, or the URL of a
Git or Subversion repository (see +LIBFOO_SITE_METHOD+ below). If
+HOST_LIBFOO_SITE+ is not specified, it defaults to
+LIBFOO_SITE+. If none are specified, then the location is assumed
to be
+http://$$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/packagename+. +
Examples: +LIBFOO_SITE=http://www.libfoosoftware.org/libfoo+ +
+LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor/+
* +LIBFOO_SITE_METHOD+ may contain the method to fetch the package
source code. It can either be +wget+ (for normal FTP/HTTP downloads
of tarballs), +svn+, +git+ or +bzr+. When not specified, it is
guessed from the URL given in +LIBFOO_SITE+: +svn://+, +git://+ and
+bzr://+ URLs will use the +svn+, +git+ and +bzr+ methods
respectively. All other URL-types will use the +wget+ method. So for
example, in the case of a package whose source code is available
through Subversion repository on HTTP, one 'must' specifiy
+LIBFOO_SITE_METHOD=svn+. For +svn+ and +git+ methods, what
Buildroot does is a checkout/clone of the repository which is then
tarballed and stored into the download cache. Next builds will not
checkout/clone again, but will use the tarball directly. When
+HOST_LIBFOO_SITE_METHOD+ is not specified, it defaults to the value
of +LIBFOO_SITE_METHOD+. See +package/multimedia/tremor/+ for an
example.
* +LIBFOO_DEPENDENCIES+ lists the dependencies (in terms of package
name) that are required for the current target package to
compile. These dependencies are guaranteed to be compiled and
installed before the configuration of the current package starts. In
a similar way, +HOST_LIBFOO_DEPENDENCIES+ lists the dependency for
the current host package.
* +LIBFOO_INSTALL_STAGING+ can be set to +YES+ or +NO+ (default). If
set to +YES+, then the commands in the +LIBFOO_INSTALL_STAGING_CMDS+
variables are executed to install the package into the staging
directory.
* +LIBFOO_INSTALL_TARGET+ can be set to +YES+ (default) or +NO+. If
set to +YES+, then the commands in the +LIBFOO_INSTALL_TARGET_CMDS+
variables are executed to install the package into the target
directory.
The recommended way to define these variables is to use the following
syntax:
----------------------
LIBFOO_VERSION = 2.32
----------------------
Now, the variables that define what should be performed at the
different steps of the build process.
* +LIBFOO_CONFIGURE_CMDS+, used to list the actions to be performed to
configure the package before its compilation
* +LIBFOO_BUILD_CMDS+, used to list the actions to be performed to
compile the package
* +HOST_LIBFOO_INSTALL_CMDS+, used to list the actions to be performed
to install the package, when the package is a host package. The
package must install its files to the directory given by
+$(HOST_DIR)+. All files, including development files such as
headers should be installed, since other packages might be compiled
on top of this package.
* +LIBFOO_INSTALL_TARGET_CMDS+, used to list the actions to be
performed to install the package to the target directory, when the
package is a target package. The package must install its files to
the directory given by +$(TARGET_DIR)+. Only the files required for
'documentation' and 'execution' of the package should be
installed. Header files should not be installed, they will be copied
to the target, if the +development files in target filesystem+
option is selected.
* +LIBFOO_INSTALL_STAGING_CMDS+, used to list the actions to be
performed to install the package to the staging directory, when the
package is a target package. The package must install its files to
the directory given by +$(STAGING_DIR)+. All development files
should be installed, since they might be needed to compile other
packages.
* +LIBFOO_CLEAN_CMDS+, used to list the actions to perform to clean up
the build directory of the package.
* +LIBFOO_UNINSTALL_TARGET_CMDS+, used to list the actions to
uninstall the package from the target directory +$(TARGET_DIR)+
* +LIBFOO_UNINSTALL_STAGING_CMDS+, used to list the actions to
uninstall the package from the staging directory +$(STAGING_DIR)+.
The preferred way to define these variables is:
----------------------
define LIBFOO_CONFIGURE_CMDS
action 1
action 2
action 3
endef
----------------------
In the action definitions, you can use the following variables:
* +$(@D)+, which contains the directory in which the package source
code has been uncompressed.
* +$(TARGET_CC)+, +$(TARGET_LD)+, etc. to get the target
cross-compilation utilities
* +$(TARGET_CROSS)+ to get the cross-compilation toolchain prefix
* Of course the +$(HOST_DIR)+, +$(STAGING_DIR)+ and +$(TARGET_DIR)+
variables to install the packages properly.
The last feature of the generic infrastructure is the ability to add
hooks. These define further actions to perform after existing steps.
Most hooks aren't really useful for generic packages, since the +.mk+
file already has full control over the actions performed in each step
of the package construction. The hooks are more useful for packages
using the autotools infrastructure described below. However, since
they are provided by the generic infrastructure, they are documented
here. The exception is +LIBFOO_POST_PATCH_HOOKS+. Patching the
package is not user definable, so +LIBFOO_POST_PATCH_HOOKS+ will be
userful for generic packages.
The following hook points are available:
* +LIBFOO_POST_PATCH_HOOKS+
* +LIBFOO_PRE_CONFIGURE_HOOKS+
* +LIBFOO_POST_CONFIGURE_HOOKS+
* +LIBFOO_POST_BUILD_HOOKS+
* +LIBFOO_POST_INSTALL_HOOKS+ (for host packages only)
* +LIBFOO_POST_INSTALL_STAGING_HOOKS+ (for target packages only)
* +LIBFOO_POST_INSTALL_TARGET_HOOKS+ (for target packages only)
These variables are 'lists' of variable names containing actions to be
performed at this hook point. This allows several hooks to be
registered at a given hook point. Here is an example:
----------------------
define LIBFOO_POST_PATCH_FIXUP
action1
action2
endef
LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP
----------------------

View File

@@ -1,44 +0,0 @@
Gettext integration and interaction with packages
-------------------------------------------------
Many packages that support internationalization use the gettext
library. Dependencies for this library are fairly complicated and
therefore, deserves some explanation.
The 'uClibc' C library doesn't implement gettext functionality,
therefore with this C library, a separate gettext must be compiled. On
the other hand, the 'glibc' C library does integrate its own gettext,
and in this case, the separate gettext library should not be compiled,
because it creates various kinds of build failures.
Additionally, some packages (such as +libglib2+) do require gettext
unconditionally, while other packages (those who support
+--disable-nls+ in general) only require gettext when locale support
is enabled.
Therefore, Buildroot defines two configuration options:
* +BR2_NEEDS_GETTEXT+, which is true as soon as the toolchain doesn't
provide its own gettext implementation
* +BR2_NEEDS_GETTEXT_IF_LOCALE+, which is true if the toolchain
doesn't provide its own gettext implementation and if locale support
is enabled
Therefore, packages that unconditionally need gettext should:
* Use +select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT+ and possibly
+select BR2_PACKAGE_LIBINTL if BR2_NEEDS_GETTEXT+, if libintl is
also needed
* Use +$(if $(BR2_NEEDS_GETTEXT),gettext)+ in the package
+DEPENDENCIES+ variable
Packages that need gettext only when locale support is enabled should:
* Use +select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE+ and
possibly +select BR2_PACKAGE_LIBINTL if
BR2_NEEDS_GETTEXT_IF_LOCALE+, if libintl is also needed
* Use +$(if $(BR2_NEEDS_GETTEXT_IF_LOCALE),gettext)+ in the package
+DEPENDENCIES+ variable

View File

@@ -1,167 +0,0 @@
[[handwritten-tutorial]]
Manual Makefile
---------------
*NOTE: new manual makefiles should not be created, and existing manual
makefiles should be converted either to the generic, autotools or
cmake infrastructure. This section is only kept to document the
existing manual makefiles and to help understand how they work.*
------------------------
01: #############################################################
02: #
03: # libfoo
04: #
05: #############################################################
06: LIBFOO_VERSION:=1.0
07: LIBFOO_SOURCE:=libfoo-$(LIBFOO_VERSION).tar.gz
08: LIBFOO_SITE:=http://www.foosoftware.org/downloads
09: LIBFOO_DIR:=$(BUILD_DIR)/foo-$(FOO_VERSION)
10: LIBFOO_BINARY:=foo
11: LIBFOO_TARGET_BINARY:=usr/bin/foo
12:
13: $(DL_DIR)/$(LIBFOO_SOURCE):
14: $(call DOWNLOAD,$(LIBFOO_SITE),$(LIBFOO_SOURCE))
15:
16: $(LIBFOO_DIR)/.source: $(DL_DIR)/$(LIBFOO_SOURCE)
17: $(ZCAT) $(DL_DIR)/$(LIBFOO_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
18: touch $@
19:
20: $(LIBFOO_DIR)/.configured: $(LIBFOO_DIR)/.source
21: (cd $(LIBFOO_DIR); rm -rf config.cache; \
22: $(TARGET_CONFIGURE_OPTS) \
23: $(TARGET_CONFIGURE_ARGS) \
24: ./configure \
25: --target=$(GNU_TARGET_NAME) \
26: --host=$(GNU_TARGET_NAME) \
27: --build=$(GNU_HOST_NAME) \
28: --prefix=/usr \
29: --sysconfdir=/etc \
30: )
31: touch $@
32:
33: $(LIBFOO_DIR)/$(LIBFOO_BINARY): $(LIBFOO_DIR)/.configured
34: $(MAKE) CC=$(TARGET_CC) -C $(LIBFOO_DIR)
35:
36: $(TARGET_DIR)/$(LIBFOO_TARGET_BINARY): $(LIBFOO_DIR)/$(LIBFOO_BINARY)
37: $(MAKE) DESTDIR=$(TARGET_DIR) -C $(LIBFOO_DIR) install-strip
38: rm -Rf $(TARGET_DIR)/usr/man
39:
40: libfoo: uclibc ncurses $(TARGET_DIR)/$(LIBFOO_TARGET_BINARY)
41:
42: libfoo-source: $(DL_DIR)/$(LIBFOO_SOURCE)
43:
44: libfoo-clean:
45: $(MAKE) prefix=$(TARGET_DIR)/usr -C $(LIBFOO_DIR) uninstall
46: -$(MAKE) -C $(LIBFOO_DIR) clean
47:
48: libfoo-dirclean:
49: rm -rf $(LIBFOO_DIR)
50:
51: #############################################################
52: #
53: # Toplevel Makefile options
54: #
55: #############################################################
56: ifeq ($(BR2_PACKAGE_LIBFOO),y)
57: TARGETS+=libfoo
58: endif
------------------------
First of all, this Makefile example works for a package which
comprises a single binary executable. For other software, such as
libraries or more complex stuff with multiple binaries, it must be
qqadapted. For examples look at the other +*.mk+ files in the
+package+ directory.
At lines 6-11, a couple of useful variables are defined:
* +LIBFOO_VERSION+: The version of 'libfoo' that should be downloaded.
* +LIBFOO_SOURCE+: The name of the tarball of 'libfoo' on the download
website or FTP site. As you can see +LIBFOO_VERSION+ is used.
* +LIBFOO_SITE+: The HTTP or FTP site from which 'libfoo' archive is
downloaded. It must include the complete path to the directory where
+LIBFOO_SOURCE+ can be found.
* +LIBFOO_DIR+: The directory into which the software will be
configured and compiled. Basically, it's a subdirectory of
+BUILD_DIR+ which is created upon decompression of the tarball.
* +LIBFOO_BINARY+: Software binary name. As said previously, this is
an example for a package with a single binary.
* +LIBFOO_TARGET_BINARY+: The full path of the binary inside the
target filesystem. Lines 13-14 define a target that downloads the
tarball from the remote site to the download directory (+DL_DIR+).
Lines 16-18 define a target and associated rules that uncompress the
downloaded tarball. As you can see, this target depends on the tarball
file so that the previous target (lines 13-14) is called before
executing the rules of the current target. Uncompressing is followed
by 'touching' a hidden file to mark the software as having been
uncompressed. This trick is used everywhere in a Buildroot Makefile to
split steps (download, uncompress, configure, compile, install) while
still having correct dependencies.
Lines 20-31 define a target and associated rules that configure the
software. It depends on the previous target (the hidden +.source+
file) so that we are sure the software has been uncompressed. In order
to configure the package, it basically runs the well-known
+./configure+ script. As we may be doing cross-compilation, +target+,
+host+ and +build+ arguments are given. The prefix is also set to
+/usr+, not because the software will be installed in +/usr+ on your
host system, but because the software will be installed in + /usr+ on
the target filesystem. Finally it creates a +.configured+ file to mark
the software as configured.
Lines 33-34 define a target and a rule that compile the software. This
target will create the binary file in the compilation directory and
depends on the software being already configured (hence the reference
to the +.configured+ file). It basically runs +make+ inside the
source directory.
Lines 36-38 define a target and associated rules that install the
software inside the target filesystem. They depend on the binary file
in the source directory to make sure the software has been
compiled. They use the +install-strip+ target of the software
+Makefile+ by passing a +DESTDIR+ argument so that the +Makefile+
doesn't try to install the software in the host +/usr+ but rather in
the target +/usr+. After the installation, the +/usr/man + directory
inside the target filesystem is removed to save space.
Line 40 defines the main target of the software &mdash; the one that
will eventually be used by the top level +Makefile+ to download,
compile, and then install this package. This target should first of
all depend on all needed dependencies of the software (in our example,
'uclibc' and 'ncurses') and also depend on the final binary. This last
dependency will call all previous dependencies in the correct order.
Line 42 defines a simple target that only downloads the code
source. This is not used during normal operation of Buildroot, but is
needed if you intend to download all required sources at once for
later offline build. Note that if you add a new package, providing a
+libfoo-source+ target is 'mandatory' to support users that wish to do
offline-builds. Furthermore, it eases checking if all package-sources
are downloadable.
Lines 44-46 define a simple target to clean the software build by
calling the Makefile with the appropriate options. The +-clean+
target should run +make clean+ on $(BUILD_DIR)/package-version and
MUST uninstall all files of the package from $(STAGING_DIR) and from
$(TARGET_DIR).
Lines 48-49 define a simple target to completely remove the directory
in which the software was uncompressed, configured and compiled. The
+-dirclean+ target MUST completely rm $(BUILD_DIR)/ package-version.
Lines 51-58 add the target +libfoo+ to the list of targets to be
compiled by Buildroot, by first checking if the configuration option
for this package has been enabled using the configuration tool. If so,
it then &quot;subscribes&quot; this package to be compiled by adding
the package to the TARGETS global variable. The name added to the
TARGETS global variable is the name of this package's target, as
defined on line 40, which is used by Buildroot to download, compile,
and then install this package.

View File

@@ -1,21 +0,0 @@
Adding new packages to Buildroot
================================
This section covers how new packages (userspace libraries or
applications) can be integrated into Buildroot. It also shows how
existing packages are integrated, which is needed for fixing issues or
tuning their configuration.
include::adding-packages-directory.txt[]
include::adding-packages-gentargets.txt[]
include::adding-packages-autotargets.txt[]
include::adding-packages-cmaketargets.txt[]
include::adding-packages-handwritten.txt[]
include::adding-packages-gettext.txt[]
include::adding-packages-conclusion.txt[]

View File

@@ -1,35 +0,0 @@
Creating your own board support
===============================
Creating your own board support in Buildroot allows users of a
particular hardware platform to easily build a system that is known to
work.
To do so, you need to create a normal Buildroot configuration that
builds a basic system for the hardware: toolchain, kernel, bootloader,
filesystem and a simple Busybox-only userspace. No specific package
should be selected: the configuration should be as minimal as
possible, and should only build a working basic Busybox system for the
target platform. You can of course use more complicated configurations
for your internal projects, but the Buildroot project will only
integrate basic board configurations. This is because package
selections are highly application-specific.
Once you have a known working configuration, run +make
savedefconfig+. This will generate a minimal +defconfig+ file at the
root of the Buildroot source tree. Move this file into the +configs/+
directory, and rename it +MYBOARD_defconfig+.
It is recommended to use as much as possible upstream versions of the
Linux kernel and bootloaders, and to use as much as possible default
kernel and bootloader configurations. If they are incorrect for your
platform, we encourage you to send fixes to the corresponding upstream
projects.
However, in the mean time, you may want to store kernel or bootloader
configuration or patches specific to your target platform. To do so,
create a directory +board/MANUFACTURER+ and a subdirectory
+board/MANUFACTURER/BOARDNAME+ (after replacing, of course,
MANUFACTURER and BOARDNAME with the appropriate values, in lower case
letters). You can then store your patches and configurations in these
directories, and reference them from the main Buildroot configuration.

View File

@@ -1,21 +0,0 @@
Using +ccache+ in Buildroot
===========================
http://ccache.samba.org[ccache] is a compiler cache. It stores the
object files resulting from each compilation process, and is able to
skip future compilation of the same source file (with same compiler
and same arguments) by using the pre-existing object files. When doing
almost identical builds from scratch a number of times, it can nicely
speed up the build process.
+ccache+ support is integrated in Buildroot. You just have to enable
+Enable compiler cache+ in +Build options+. This will automatically
build +ccache+ and use it for every host and target compilation.
The cache is located in +$HOME/.buildroot-ccache+. It is stored
outside of Buildroot output directory so that it can be shared by
separate Buildroot builds. If you want to get rid of the cache, simply
remove this directory.
You can get statistics on the cache (its size, number of hits,
misses, etc.) by running +make ccache-stats+.

View File

@@ -1,24 +0,0 @@
Customizing the Busybox configuration
-------------------------------------
[[busybox-custom]]
http://www.busybox.net/[Busybox] is very configurable, and you may
want to customize it. You can follow these simple steps to do so. This
method isn't optimal, but it's simple, and it works:
* Do an initial compilation of Buildroot, with busybox, without
trying to customize it.
* Invoke +make busybox-menuconfig+.
The nice configuration tool appears, and you can
customize everything.
* Run the compilation of Buildroot again.
Otherwise, you can simply change the
+package/busybox/busybox-<version>.config+ file, if you know the
options you want to change, without using the configuration tool.
If you want to use an existing config file for busybox, then see
section xref:env-vars[].

View File

@@ -1,12 +0,0 @@
Customizing the Linux kernel configuration
------------------------------------------
The Linux kernel configuration can be customized just like
xref:busybox-custom[BusyBox] and xref:uclibc-custom[uClibc] using
+make linux-menuconfig+. Make sure you have enabled the kernel build
in +make menuconfig+ first. Once done, run +make+ to (re)build
everything.
If you want to use an existing config file for Linux, then see
xref:env-vars[].

View File

@@ -1,36 +0,0 @@
Customizing the generated target filesystem
-------------------------------------------
There are a few ways to customize the resulting target filesystem:
* Customize the target filesystem directly and rebuild the image. The
target filesystem is available under +output/target/+. You can
simply make your changes here and run make afterwards - this will
rebuild the target filesystem image. This method allows you to do
anything to the target filesystem, but if you decide to completely
rebuild your toolchain and tools, these changes will be lost.
* Create your own 'target skeleton'. You can start with the default
skeleton available under +fs/skeleton+ and then customize it to suit
your needs. The +BR2_ROOTFS_SKELETON_CUSTOM+ and
+BR2_ROOTFS_SKELETON_CUSTOM_PATH+ will allow you to specify the
location of your custom skeleton. At build time, the contents of the
skeleton are copied to output/target before any package
installation.
* In the Buildroot configuration, you can specify the path to a
post-build script, that gets called 'after' Buildroot builds all the
selected software, but 'before' the rootfs packages are
assembled. The destination root filesystem folder is given as the
first argument to this script, and this script can then be used to
copy programs, static data or any other needed file to your target
filesystem. You should, however, use this feature with care.
Whenever you find that a certain package generates wrong or unneeded
files, you should fix that package rather than work around it with a
post-build cleanup script.
* A special package, 'customize', stored in +package/customize+ can be
used. You can put all the files that you want to see in the final
target root filesystem in +package/customize/source+, and then
enable this special package in the configuration system.

View File

@@ -1,32 +0,0 @@
Customizing the uClibc configuration
------------------------------------
[[uclibc-custom]]
Just like xref:busybox-custom[BusyBox], http://www.uclibc.org/[uClibc]
offers a lot of configuration options. They allow you to select
various functionalities depending on your needs and limitations.
The easiest way to modify the configuration of uClibc is to
follow these steps:
* Do an initial compilation of Buildroot without trying to customize
uClibc.
* Invoke +make uclibc-menuconfig+. The nice configuration assistant,
similar to the one used in the Linux kernel or Buildroot,
appears. Make your configuration changes as appropriate.
* Copy the +$(O)/toolchain/uclibc-VERSION/.config+ file to a different
place (like +toolchain/uClibc/uClibc-myconfig.config+, or
+board/mymanufacturer/myboard/uClibc.config+) and adjust the uClibc
configuration (configuration option +BR2_UCLIBC_CONFIG+) to use this
configuration instead of the default one.
* Run the compilation of Buildroot again.
Otherwise, you can simply change +toolchain/uClibc/uClibc.config+,
without running the configuration assistant.
If you want to use an existing config file for uclibc, then see
xref:env-vars[].

View File

@@ -1,10 +0,0 @@
Customization
=============
include::customize-rootfs.txt[]
include::customize-busybox-config.txt[]
include::customize-uclibc-config.txt[]
include::customize-kernel-config.txt[]

View File

@@ -1,26 +0,0 @@
Location of downloaded packages
===============================
It might be useful to know that the various tarballs that are
downloaded by the Makefiles are all stored in the +DL_DIR+ which by
default is the +dl+ directory. It's useful, for example, if you want
to keep a complete version of Buildroot which is known to be working
with the associated tarballs. This will allow you to regenerate the
toolchain and the target filesystem with exactly the same versions.
If you maintain several Buildroot trees, it might be better to have a
shared download location. This can be accessed by creating a symbolic
link from the +dl+ directory to the shared download location:
-----------------
$ ln -s <shared download location> dl
-----------------
Another way of accessing a shared download location is to create the
+BUILDROOT_DL_DIR+ environment variable. If this is set, then the
value of DL_DIR in the project is overridden. The following line
should be added to +<~/.bashrc>+.
-----------------
$ export BUILDROOT_DL_DIR <shared download location>
-----------------

View File

@@ -1,84 +0,0 @@
Using an external toolchain
===========================
Using an already existing toolchain is useful for different
reasons:
* you already have a toolchain that is known to work for your specific
CPU
* you want to speed up the Buildroot build process by skipping the
long toolchain build part
* the toolchain generation feature of Buildroot is not sufficiently
flexible for you (for example if you need to generate a system with
'glibc' instead of 'uClibc')
Buildroot supports using existing toolchains through a mechanism
called 'external toolchain'. The external toolchain mechanism is
enabled in the +Toolchain+ menu, by selecting +External toolchain+ in
+Toolchain type+.
Then, you have three solutions to use an external toolchain:
* Use a predefined external toolchain profile, and let Buildroot
download, extract and install the toolchain. Buildroot already knows
about a few CodeSourcery toolchains for ARM, PowerPC, MIPS and
SuperH. Just select the toolchain profile in +Toolchain+ through the
available ones. This is definitely the easiest solution.
* Use a predefined external toolchain profile, but instead of having
Buildroot download and extract the toolchain, you can tell Buildroot
where your toolchain is already installed on your system. Just
select the toolchain profile in +Toolchain+ through the available
ones, unselect +Download toolchain automatically+, and fill the
+Toolchain path+ text entry with the path to your cross-compiling
toolchain.
* Use a completely custom external toolchain. This is particularly
useful for toolchains generated using crosstool-NG. To do this,
select the +Custom toolchain+ solution in the +Toolchain+ list. You
need to fill the +Toolchain path+, +Toolchain prefix+ and +External
toolchain C library+ options. Then, you have to tell Buildroot what
your external toolchain supports. If your external toolchain uses
the 'glibc' library, you only have to tell whether your toolchain
supports C++ or not. If your external toolchain uses the 'uclibc'
library, then you have to tell Buildroot if it supports largefile,
IPv6, RPC, wide-char, locale, program invocation, threads and
C++. At the beginning of the execution, Buildroot will tell you if
the selected options do not match the toolchain configuration.
Our external toolchain support has been tested with toolchains from
CodeSourcery, toolchains generated by
http://crosstool-ng.org[crosstool-NG], and toolchains generated by
Buildroot itself. In general, all toolchains that support the
'sysroot' feature should work. If not, do not hesitate to contact the
developers.
We do not support toolchains from the
http://www.denx.de/wiki/DULG/ELDK[ELDK] of Denx, for two reasons:
* The ELDK does not contain a pure toolchain (i.e just the compiler,
binutils, the C and C++ libraries), but a toolchain that comes with
a very large set of pre-compiled libraries and programs. Therefore,
Buildroot cannot import the 'sysroot' of the toolchain, as it would
contain hundreds of megabytes of pre-compiled libraries that are
normally built by Buildroot.
* The ELDK toolchains have a completely non-standard custom mechanism
to handle multiple library variants. Instead of using the standard
GCC 'multilib' mechanism, the ARM ELDK uses different symbolic links
to the compiler to differentiate between library variants (for ARM
soft-float and ARM VFP), and the PowerPC ELDK compiler uses a
+CROSS_COMPILE+ environment variable. This non-standard behaviour
makes it difficult to support ELDK in Buildroot.
We also do not support using the distribution toolchain (i.e the
gcc/binutils/C library installed by your distribution) as the
toolchain to build software for the target. This is because your
distribution toolchain is not a "pure" toolchain (i.e only with the
C/C++ library), so we cannot import it properly into the Buildroot
build environment. So even if you are building a system for a x86 or
x86_64 target, you have to generate a cross-compilation toolchain with
Buildroot or crosstool-NG.

View File

@@ -1,23 +0,0 @@
Getting Buildroot
=================
Buildroot releases are made approximately every 3 months. Direct Git
access and daily snapshots are also available, if you want more
bleeding edge.
Releases are available at http://buildroot.net/downloads/[].
The latest snapshot is always available at
http://buildroot.net/downloads/snapshots/buildroot-snapshot.tar.bz2[],
and previous snapshots are also available at
http://buildroot.net/downloads/snapshots/[].
To download Buildroot using Git, you can simply follow the rules
described on the "Accessing Git" page
(http://buildroot.net/git.html[]) of the Buildroot website
(http://buildroot.net[]). For the impatient, here's a quick recipe:
---------------------
$ git clone git://git.buildroot.net/buildroot
---------------------

View File

@@ -1,59 +0,0 @@
How Buildroot works
===================
As mentioned above, Buildroot is basically a set of Makefiles that
download, configure, and compile software with the correct options. It
also includes patches for various software packages - mainly the ones
involved in the cross-compilation tool chain (+gcc+, +binutils+ and
+uClibc+).
There is basically one Makefile per software package, and they are
named with the +.mk+ extension. Makefiles are split into three main
sections:
* *toolchain* (in the +toolchain/+ directory) contains the Makefiles
and associated files for all software related to the
cross-compilation toolchain: +binutils+, +gcc+, +gdb+,
+kernel-headers+ and +uClibc+.
* *package* (in the +package/+ directory) contains the Makefiles and
associated files for all user-space tools that Buildroot can compile
and add to the target root filesystem. There is one sub-directory
per tool.
* *target* (in the +target+ directory) contains the Makefiles and
associated files for software related to the generation of the
target root filesystem image. Four types of filesystems are
supported: ext2, jffs2, cramfs and squashfs. For each of them there
is a sub-directory with the required files. There is also a
+default/+ directory that contains the target filesystem skeleton.
Each directory contains at least 2 files:
* +something.mk+ is the Makefile that downloads, configures,
compiles and installs the package +something+.
* +Config.in+ is a part of the configuration tool
description file. It describes the options related to the
package.
The main Makefile performs the following steps (once the
configuration is done):
* Create all the output directories: +staging+, +target+, +build+,
+stamps+, etc. in the output directory (+output/+ by default,
another value can be specified using +O=+)
* Generate all the targets listed in the +BASE_TARGETS+ variable. When
an internal toolchain is used, this means generating the
cross-compilation toolchain. When an external toolchain is used,
this means checking the features of the external toolchain and
importing it into the Buildroot environment.
* Generate all the targets listed in the +TARGETS+ variable. This
variable is filled by all the individual components'
Makefiles. Generating these targets will trigger the compilation of
the userspace packages (libraries, programs), the kernel, the
bootloader and the generation of the root filesystem images,
depending on the configuration.

View File

@@ -1,69 +0,0 @@
About Buildroot
===============
Buildroot is a set of Makefiles and patches that allows you to easily
generate a cross-compilation toolchain, a root filesystem and a Linux
kernel image for your target. Buildroot can be used for one, two or
all of these options, independently.
Buildroot is useful mainly for people working with embedded systems.
Embedded systems often use processors that are not the regular x86
processors everyone is used to having in his PC. They can be PowerPC
processors, MIPS processors, ARM processors, etc.
A compilation toolchain is the set of tools that allows you to compile
code for your system. It consists of a compiler (in our case, +gcc+),
binary utils like assembler and linker (in our case, +binutils+) and a
C standard library (for example
http://www.gnu.org/software/libc/libc.html[GNU Libc],
http://www.uclibc.org/[uClibc] or
http://www.fefe.de/dietlibc/[dietlibc]). The system installed on your
development station certainly already has a compilation toolchain that
you can use to compile an application that runs on your system. If
you're using a PC, your compilation toolchain runs on an x86 processor
and generates code for an x86 processor. Under most Linux systems, the
compilation toolchain uses the GNU libc (glibc) as the C standard
library. This compilation toolchain is called the "host compilation
toolchain". The machine on which it is running, and on which you're
working, is called the "host system". The compilation toolchain is
provided by your distribution, and Buildroot has nothing to do with it
(other than using it to build a cross-compilation toolchain and other
tools that are run on the development host).
As said above, the compilation toolchain that comes with your system
runs on and generates code for the processor in your host system. As
your embedded system has a different processor, you need a
cross-compilation toolchain - a compilation toolchain that runs on
your host system but generates code for your target system (and target
processor). For example, if your host system uses x86 and your target
system uses ARM, the regular compilation toolchain on your host runs on
x86 and generates code for x86, while the cross-compilation toolchain
runs on x86 and generates code for ARM.
Even if your embedded system uses an x86 processor, you might be
interested in Buildroot for two reasons:
* The compilation toolchain on your host certainly uses the GNU Libc
which is a complete but huge C standard library. Instead of using
GNU Libc on your target system, you can use uClibc which is a tiny C
standard library. If you want to use this C library, then you need a
compilation toolchain to generate binaries linked with it. Buildroot
can do that for you.
* Buildroot automates the building of a root filesystem with all
needed tools like busybox. That makes it much easier than doing it
by hand.
You might wonder why such a tool is needed when you can compile +gcc+,
+binutils+, +uClibc+ and all the other tools by hand. Of course doing
so is possible but, dealing with all of the configure options and
problems of every +gcc+ or +binutils+ version is very time-consuming
and uninteresting. Buildroot automates this process through the use
of Makefiles and has a collection of patches for each +gcc+ and
+binutils+ version to make them work on most architectures.
Moreover, Buildroot provides an infrastructure for reproducing the
build process of your kernel, cross-toolchain, and embedded root
filesystem. Being able to reproduce the build process will be useful
when a component needs to be patched or updated or when another person
is supposed to take over the project.

View File

@@ -1,32 +0,0 @@
The Buildroot user manual
=========================
:toc:
Buildroot usage and documentation by Thomas Petazzoni. Contributions
from Karsten Kruse, Ned Ludd, Martin Herren and others.
image::logo.png[]
:leveloffset: 1
include::introduction.txt[]
include::getting.txt[]
include::using.txt[]
include::customize.txt[]
include::rebuilding-packages.txt[]
include::how-buildroot-works.txt[]
include::using-buildroot-toolchain.txt[]
include::external-toolchain.txt[]
include::ccache-support.txt[]
include::download-location.txt[]
include::adding-packages.txt[]

View File

@@ -1,62 +0,0 @@
Understanding how to rebuild packages
=====================================
One of the most common questions asked by Buildroot users is how to
rebuild a given package or how to remove a package without rebuilding
everything from scratch.
Removing a package is currently unsupported by Buildroot without
rebuilding from scratch. This is because Buildroot doesn't keep track
of which package installs what files in the +output/staging+ and
+output/target+ directories. However, implementing clean package
removal is on the TODO-list of Buildroot developers.
The easiest way to rebuild a single package from scratch is to remove
its build directory in +output/build+. Buildroot will then re-extract,
re-configure, re-compile and re-install this package from scratch.
However, if you don't want to rebuild the package completely from
scratch, a better understanding of the Buildroot internals is
needed. Internally, to keep track of which steps have been done and
which steps remain to be done, Buildroot maintains stamp files (empty
files that just tell whether this or that action has been done). The
problem is that these stamp files are not uniformly named and handled
by the different packages, so some understanding of the particular
package is needed.
For packages relying on Buildroot packages infrastructures (see
xref:add-packages[this section] for details), the following stamp
files are relevant:
* +output/build/packagename-version/.stamp_configured+. If removed,
Buildroot will trigger the recompilation of the package from the
configuration step (execution of +./configure+).
* +output/build/packagename-version/.stamp_built+. If removed,
Buildroot will trigger the recompilation of the package from the
compilation step (execution of +make+).
For other packages, an analysis of the specific 'package.mk' file is
needed. For example, the zlib Makefile used to look like this (before
it was converted to the generic package infrastructure):
-----------------
$(ZLIB_DIR)/.configured: $(ZLIB_DIR)/.patched
(cd $(ZLIB_DIR); rm -rf config.cache; \
[...]
)
touch $@
$(ZLIB_DIR)/libz.a: $(ZLIB_DIR)/.configured
$(MAKE) -C $(ZLIB_DIR) all libz.a
touch -c $@
-----------------
If you want to trigger the reconfiguration, you need to remove
+output/build/zlib-version/.configured+. If you want to trigger only
the recompilation, you need to remove
+output/build/zlib-version/libz.a+.
Note that most packages, if not all, will progressively be ported over
to the generic or autotools infrastructure, making it much easier to
rebuild individual packages.

View File

@@ -1,20 +0,0 @@
Using the generated toolchain outside Buildroot
===============================================
You may want to compile, for your target, your own programs or other
software that are not packaged in Buildroot. In order to do this you
can use the toolchain that was generated by Buildroot.
The toolchain generated by Buildroot is located by default in
+output/host/+. The simplest way to use it is to add
+output/host/usr/bin/+ to your PATH environment variable and then to
use +ARCH-linux-gcc+, +ARCH-linux-objdump+, +ARCH-linux-ld+, etc.
It is possible to relocate the toolchain - but then +--sysroot+ must
be passed every time the compiler is called to tell where the
libraries and header files are.
It is also possible to generate the Buildroot toolchain in a directory
other than +output/host+ by using the +Build options -> Host dir+
option. This could be useful if the toolchain must be shared with
other users.

View File

@@ -1,183 +0,0 @@
Using Buildroot
===============
Configuration and general usage
-------------------------------
Buildroot has a nice configuration tool similar to the one you can
find in the http://www.kernel.org/[Linux kernel] or in
http://www.busybox.org/[Busybox]. Note that you can (and should) build
everything as a normal user. There is no need to be root to configure
and use Buildroot. The first step is to run the configuration
assistant:
--------------------
$ make menuconfig
--------------------
to run the curses-based configurator, or
--------------------
$ make xconfig
--------------------
or
--------------------
$ make gconfig
--------------------
to run the Qt or GTK-based configurators.
All of these "make" commands will need to build a configuration
utility, so you may need to install "development" packages for
relevant libraries used by the configuration utilities. On Debian-like
systems, the +libncurses5-dev+ package is required to use the
'menuconfig' interface, +libqt4-dev+ is required to use the 'xconfig'
interface, and +libglib2.0-dev, libgtk2.0-dev and libglade2-dev+ are
needed to use the 'gconfig' interface.
For each menu entry in the configuration tool, you can find associated
help that describes the purpose of the entry.
Once everything is configured, the configuration tool generates a
+.config+ file that contains the description of your
configuration. It will be used by the Makefiles to do what's needed.
Let's go:
--------------------
$ make
--------------------
You *should never* use +make -jN+ with Buildroot: it does not support
'top-level parallel make'. Instead, use the +BR2_JLEVEL+ option to
tell Buildroot to run each package compilation with +make -jN+.
This command will generally perform the following steps:
* Download source files (as required)
* Configure, build and install the cross-compiling toolchain if an
internal toolchain is used, or import a toolchain if an external
toolchain is used
* Build/install selected target packages
* Build a kernel image, if selected
* Build a bootloader image, if selected
* Create a root filesystem in selected formats
Buildroot output is stored in a single directory, +output/+.
This directory contains several subdirectories:
* +images/+ where all the images (kernel image, bootloader and root
filesystem images) are stored.
* +build/+ where all the components except for the cross-compilation
toolchain are built (this includes tools needed to run Buildroot on
the host and packages compiled for the target). The +build/+
directory contains one subdirectory for each of these components.
* +staging/+ which contains a hierarchy similar to a root filesystem
hierarchy. This directory contains the installation of the
cross-compilation toolchain and all the userspace packages selected
for the target. However, this directory is 'not' intended to be
the root filesystem for the target: it contains a lot of development
files, unstripped binaries and libraries that make it far too big
for an embedded system. These development files are used to compile
libraries and applications for the target that depend on other
libraries.
* +target/+ which contains 'almost' the complete root filesystem for
the target: everything needed is present except the device files in
+/dev/+ (Buildroot can't create them because Buildroot doesn't run
as root and doesn't want to run as root). Therefore, this directory
*should not be used on your target*. Instead, you should use one of
the images built in the +images/+ directory. If you need an
extracted image of the root filesystem for booting over NFS, then
use the tarball image generated in +images/+ and extract it as
root. Compared to +staging/+, +target/+ contains only the files and
libraries needed to run the selected target applications: the
development files (headers, etc.) are not present, unless the
+development files in target filesystem+ option is selected.
* +host/+ contains the installation of tools compiled for the host
that are needed for the proper execution of Buildroot, including the
cross-compilation toolchain.
* +toolchain/+ contains the build directories for the various
components of the cross-compilation toolchain.
Offline builds
--------------
If you intend to do an offline build and just want to download
all sources that you previously selected in the configurator
('menuconfig', 'xconfig' or 'gconfig'), then issue:
--------------------
$ make source
--------------------
You can now disconnect or copy the content of your +dl+
directory to the build-host.
Building out-of-tree
--------------------
Buildroot supports building out of tree with a syntax similar to the
Linux kernel. To use it, add +O=<directory>+ to the make command line:
--------------------
$ make O=/tmp/build
--------------------
Or:
--------------------
$ cd /tmp/build; make O=$PWD -C path/to/buildroot
--------------------
All the output files will be located under +/tmp/build+.
When using out-of-tree builds, the Buildroot +.config+ and temporary
files are also stored in the output directory. This means that you can
safely run multiple builds in parallel using the same source tree as
long as they use unique output directories.
For ease of use, Buildroot generates a Makefile wrapper in the output
directory - So after the first run, you no longer need to pass +O=..+
and +-C ..+, simply run (in the output directory):
--------------------
$ make <target>
--------------------
Environment variables
---------------------
[[env-vars]]
Buildroot also honors some environment variables, when they are passed
to +make+ or set in the environment:
* +HOSTCXX+, the host C++ compiler to use
* +HOSTCC+, the host C compiler to use
* +UCLIBC_CONFIG_FILE=<path/to/.config>+, path to
the uClibc configuration file, used to compile uClibc, if an
internal toolchain is being built
* +BUSYBOX_CONFIG_FILE=<path/to/.config>+, path to
the Busybox configuration file
* +BUILDROOT_DL_DIR+ to override the directory in which
Buildroot stores/retrieves downloaded files
An example that uses config files located in the toplevel directory and
in your $HOME:
--------------------
$ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config
--------------------
If you want to use a compiler other than the default +gcc+
or +g+++ for building helper-binaries on your host, then do
--------------------
$ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD
--------------------

View File

@@ -1,518 +1,7 @@
<!--#include file="header.html" -->
<h3>News</h3>
<p>
<ul>
<li><b>18 November 2011 -- 2011.11-rc2 released</b>
<p>Another week, another release candidate with a bunch of
cleanups and build fixes. See the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc2">CHANGES</a>
file for details.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.11-rc2.tar.bz2">2011.11-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>11 November 2011 -- 2011.11-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.11_rc1">CHANGES</a>
file for details, and read the
<a href="http://lists.busybox.net/pipermail/buildroot/2011-November/047395.html">announcement</a>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.11-rc1.tar.bz2">2011.11-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>31 August 2011 -- 2011.08 released</b>
<p>The stable 2011.08 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08">CHANGES</a>
file for more details, and go to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.08.tar.bz2">2011.08 release</a>.</p>
<li><b>29 August 2011 -- 2011.08-rc2 released</b>
<p>RC2 is out with more bugfixes. See the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08_rc2">CHANGES</a>
file for details, and read the
<a href="http://lists.busybox.net/pipermail/buildroot/2011-August/045211.html">announcement</a>.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.08-rc2.tar.bz2">2011.08-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>4 August 2011 -- 2011.08-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.08_rc1">CHANGES</a>
file for details, and read the
<a href="http://lists.busybox.net/pipermail/buildroot/2011-August/044855.html">announcement</a>.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.08-rc1.tar.bz2">2011.08-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>27 May 2011 -- 2011.05 released</b>
<p>The stable 2011.05 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05">CHANGES</a>
file for more details, and go to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.05.tar.bz2">2011.05 release</a>.</p>
<li><b>24 May 2011 -- 2011.05-rc2 released</b>
<p>RC2 is out with more bugfixes. See the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05_rc2">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.05-rc2.tar.bz2">2011.05-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>18 May 2011 -- 2011.05-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.05_rc1">CHANGES</a>
file for details, and read the
<a href="http://lists.busybox.net/pipermail/buildroot/2011-May/043317.html">announcement</a>.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.05-rc1.tar.bz2">2011.05-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>28 February 2011 -- 2011.02 released</b>
<p>The stable 2011.02 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02">CHANGES</a>
file for more details, read the
<a href="http://lists.busybox.net/pipermail/buildroot/2011-February/041662.html">announcement</a>
and go to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.02.tar.bz2">2011.02 release</a>.</p>
<li><b>24 February 2011 -- 2011.02-rc2 released</b>
<p>RC2 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02_rc2">CHANGES</a>
file for details.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.02-rc2.tar.bz2">2011.02-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>14 February 2011 -- 2011.02-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2011.02_rc1">CHANGES</a>
file for details, and read the
<a href="http://lists.busybox.net/pipermail/buildroot/2011-February/041365.html">announcement</a>.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2011.02-rc1.tar.bz2">2011.02-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>30 November 2010 -- 2010.11 released</b>
<p>The stable 2010.11 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11">CHANGES</a>
file for more details, read the
<a href="http://lists.busybox.net/pipermail/buildroot/2010-November/039135.html">announcement</a>
and go to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.11.tar.bz2">2010.11 release</a>.</p>
<li><b>25 November 2010 -- 2010.11-rc2 released</b>
<p>RC2 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11_rc2">CHANGES</a>
file for details.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.11-rc2.tar.bz2">2010.11-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>8 November 2010 -- 2010.11-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.11_rc1">CHANGES</a>
file for details, and read the
<a href="http://lists.busybox.net/pipermail/buildroot/2010-November/038645.html">announcement</a>.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.11-rc1.tar.bz2">2010.11-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>28 September 2010 - Buildroot Developer Day</b>
<p>A <i>Buildroot Developer Day</i> will take place on
Friday, October 29th in Cambridge, UK - Just the day after the
<a href="http://www.embeddedlinuxconference.com/elc_europe10/">Embedded
Linux Conference Europe</a>. This <i>Developer Day</i> aims
at allowing Buildroot developers to meet and exchange ideas on the
project and its future. See the
<a href="http://lists.busybox.net/pipermail/buildroot/2010-September/037930.html">announcement</a>
for more info.</p>
<p>Thanks to Thomas Petazzoni for taking care of the practical
arrangements.</p>
<li><b>31 August 2010 -- 2010.08 released</b>
<p>The stable 2010.08 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08">CHANGES</a>
file for more details, read the
<a href="http://lists.busybox.net/pipermail/buildroot/2010-August/037078.html">announcement</a>
and go to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.08.tar.bz2">2010.08 release</a>.</p>
<li><b>30 August 2010 -- 2010.08-rc2 released</b>
<p>RC2 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08_rc2">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.08-rc2.tar.bz2">2010.08-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
This is very much expected to be the final release
candidate, so give it a good test and expect a final 2010.08
release before September unless critical issues are found.</p>
<li><b>30 July 2010 -- 2010.08-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.08_rc1">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.08-rc1.tar.bz2">2010.08-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>30 May 2010 -- 2010.05 released</b>
<p>The stable 2010.05 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05">CHANGES</a>
file for more details, read the
<a href="http://lists.busybox.net/pipermail/buildroot/2010-May/034878.html">announcement</a>
and go to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.05.tar.bz2">2010.05 release</a>.</p>
<li><b>27 May 2010 -- 2010.05-rc3 released</b>
<p>RC3 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05_rc3">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.05-rc3.tar.bz2">2010.05-rc3
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>11 May 2010 -- 2010.05-rc2 released</b>
<p>Another week, another release candidate with a bunch of
cleanups and build fixes.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.05-rc2.tar.bz2">2010.05-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>3 May 2010 -- 2010.05-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.05_rc1">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.05-rc1.tar.bz2">2010.05-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>2 May 2010 - FOSDEM slides online</b>
<p>The slides from the <a
href="http://fosdem.org/2010/schedule/events/emb_cross_build">Cross
Build Systems: Present & Future</a> session at <a
href="http://fosdem.org/2010">FOSDEM</a> are now <a
href="http://send-patches.org/news/20100211-1-FOSDEM-Crossdev-Workshop.pdf">online</a>.
<li><b>26 February 2010 -- 2010.02 released</b>
<p>The stable 2010.02 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02">CHANGES</a>
file for more details, and go to the <a href="/downloads/">downloads page</a>
to pick up the <a href="/downloads/buildroot-2010.02.tar.bz2">2010.02
release</a>.</p>
<li><b>23 February 2010 -- 2010.02-rc2 released</b>
<p>RC2 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02_rc2">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.02-rc2.tar.bz2">2010.02-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>9 February 2010 -- 2010.02-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2010.02_rc1">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2010.02-rc1.tar.bz2">2010.02-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>1 December 2009 -- 2009.11 released</b>
<p>The stable 2009.11 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://lists.busybox.net/pipermail/buildroot/2009-December/030672.html">announcement</a>
or <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11">CHANGES</a>
for more details, and go to the <a href="/downloads/">downloads page</a>
to pick up the <a href="/downloads/buildroot-2009.11.tar.bz2">2009.11
release</a>.</p>
<li><b>29 November 2009 -- 2009.11-rc2 released</b>
<p>RC2 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11_rc2">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.11-rc2.tar.bz2">2009.11-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>23 November 2009 -- 2009.11-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.11_rc1">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.11-rc1.tar.bz2">2009.11-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>7 September 2009 -- First Buildroot Developer Day</b>
<p>The first <i>Buildroot Developer Day</i> will take place on
Saturday, October 17th in Grenoble, France, just the day after
Embedded Linux Conference Europe. This <i>Developer Day</i> aims
at allowing Buildroot developers to meet and exchange ideas on the
project and its future.</p>
<p>As the number of places is limited, interested candidates are
invited to send an e-mail to Peter Korsgaard (<code>jacmet at
uclibc dot org</code>) and Thomas Petazzoni (<code>thomas dot
petazzoni at free-electrons dot com</code>).</p>
<p>This <i>Developer Day</i> will take place thanks to the
sponsoring of <a href="http://www.calao-systems.com">Calao
Systems</a> and <a href="http://www.free-electrons.com">Free
Electrons</a>.</p>
<li><b>31 August 2009 -- 2009.08 released</b>
<p>The stable 2009.08 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://lists.busybox.net/pipermail/buildroot/2009-August/029018.html">announcement</a>
or <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08">CHANGES</a>
for more details, and go to the <a href="/downloads/">downloads page</a>
to pick up the <a href="/downloads/buildroot-2009.08.tar.bz2">2009.08
release</a>.</p>
<li><b>26 August 2009 -- 2009.08-rc3 released</b>
<p>A number of bugfixes have been added to the tree since RC2
(especially thanks to Thomas Petazzoni) - See the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc3">CHANGES</a>
file for details. This is very much expected to be the final release
candidate, so give it a good test and expect a final 2009.08
release next weekend unless critical issues are found.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.08-rc3.tar.bz2">2009.08-rc3
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>6 August 2009 -- 2009.08-rc2 released</b>
<p>RC2 is out with more cleanups and bugfixes, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc2">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.08-rc2.tar.bz2">2009.08-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>2 August 2009 -- 2009.08-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.08_rc1">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.08-rc1.tar.bz2">2009.08-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>1 June 2009 -- 2009.05 released</b>
<p>The stable 2009.05 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://lists.busybox.net/pipermail/buildroot/2009-June/027640.html">announcement</a>
or <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05">CHANGES</a>
for more details, and go to the <a href="/downloads/">downloads page</a>
to pick up the <a href="/downloads/buildroot-2009.05.tar.bz2">2009.05
release</a>.</p>
<li><b>27 May 2009 -- 2009.05-rc3 released</b>
<p>We had a number of fixes post-RC2, so RC3 is out (see <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc3">CHANGES</a>
for details). Now is the moment to test and verify that everything
is working for your favorite config - Expect a final 2009.05 very soon.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.05-rc3.tar.bz2">2009.05-rc3
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>19 May 2009 -- 2009.05-rc2 released</b>
<p>RC2 is out with more cleanups and bug fixes (see <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc2">CHANGES</a>).
Unless big issues are found, expect this to be the last release
candidate before the release - So give it a good test.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.05-rc2.tar.bz2">2009.05-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>14 May 2009 -- Buildroot.org</b>
<p>Earl Levine has been so kind to donate the <b>buildroot.org</b>
domain to us, so the website can now also be reached at <a
href="http://www.buildroot.org">www.buildroot.org</a> (and git at
<a href="http://git.buildroot.org/buildroot">git.buildroot.org</a>).
Thanks a lot Earl!</p>
<li><b>5 May 2009 -- 2009.05-rc1 released</b>
<p>We have a new release candidate! Lots of changes all over the
tree, see the <a
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc1">CHANGES</a>
file for details.
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.05-rc1.tar.bz2">2009.05-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>3 May 2009 -- Moved to git</b>
<p>We've moved the source code from <a
href="http://subversion.tigris.org">Subversion</a> to <a
href="http://git-scm.org">Git</a>. You can browse the repo online
<a href="http://git.buildroot.net/buildroot">here</a>, and clone
the repo using:
<pre>git clone git://git.buildroot.net/buildroot</pre>
See the <a href="/git.html">Git Access</a> page for more details.
</p>
<li><b>27 March 2009 -- new Logo</b>
<p>We have a <a href="images/logo.png">logo</a>! We have so far
been using the <a href="http://busybox.net">Busybox</a> logo on
the website, as the website was a copy of the <a
href="http://busybox.net">Busybox</a> one - But not anymore, we
now have a shiny new logo of our own.</p>
<li><b>12 February 2009 -- 2009.02 released</b>
<p>The stable 2009.02 release is out - Thanks to everyone
contributing and testing the release candidates. See the
<a href="http://lists.busybox.net/pipermail/buildroot/2009-February/025974.html">announcement</a>
for more details, and go to the <a href="/downloads/">downloads page</a>
to pick up the <a href="/downloads/buildroot-2009.02.tar.bz2">2009.02
release</a>.</p>
<li><b>9 February 2009 -- 2009.02-rc4 released</b>
<p>We had more than 50 changes since RC3, several of them
toolchain related, so decided to make a RC4 as well. This is
very much expected to be the final release candidate, so give it
a good test and expect a final 2009.02 release this week unless
critical issues are found.</p>
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
<a href="/downloads/buildroot-2009.02-rc4.tar.bz2">2009.02-rc4
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>31 January 2009 -- 2009.02-rc3 released</b>
<p>RC3 is out with more cleanups and bug fixes. Unless big issues
@@ -523,7 +12,7 @@
<a href="/downloads/buildroot-2009.02-rc3.tar.bz2">2009.02-rc3
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
href="http://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>23 January 2009 -- 2009.02-rc2 released</b>
<p>Another week, another release candidate with a bunch of
@@ -533,7 +22,7 @@
<a href="/downloads/buildroot-2009.02-rc2.tar.bz2">2009.02-rc2
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>.</p>
href="http://bugs.uclibc.org">bug tracker</a>.</p>
<li><b>16 January 2009 -- Release candidate and new maintainer</b>
<p>It has been a long time coming, but we finally have a new
@@ -543,7 +32,7 @@
<a href="/downloads/buildroot-2009.02-rc1.tar.bz2">2009.02-rc1
release candidate</a>, and report any problems found to the <a
href="lists.html">mailing list</a> or <a
href="https://bugs.uclibc.org">bug tracker</a>. The plan is to
href="http://bugs.uclibc.org">bug tracker</a>. The plan is to
release 2009.02 in time for <a
href="http://www.fosdem.org/2009/">FOSDEM</a>.</p>
@@ -571,7 +60,7 @@
If you find a bug in buildroot, or wish to submit a patch to fix a problem
or add a shiny new feature, please use the <a
href="https://bugs.uclibc.org/">Bug and Patch Tracking System</a> to post
href="http://bugs.uclibc.org/">Bug and Patch Tracking System</a> to post
the details, to make certain your work is not lost.

Some files were not shown because too many files have changed in this diff Show More