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
910 changed files with 170251 additions and 18747 deletions

13
.gitignore vendored
View File

@@ -1,13 +0,0 @@
/build_*
/project_*
/toolchain_*
/binaries
/dl
/.auto.deps
/.config.cmd
/.config.old
/.config
*.depend
*.o
*.orig
*~

207
CHANGES
View File

@@ -1,207 +0,0 @@
2009.08-rc3, Released August 26th, 2009:
Additional fixes and cleanups.
Updated/fixed packages: alsa-utils, berkeleydb, busybox, dbus,
directfb, enchant, kernel headers.
Issues resolved (http://bugs.uclibc.org):
#471: Allow directfb compilation with debug
#541: Removal of CVS directories in target filesystem broken
#547: berkeleydb: Update config.{sub, guess}
#549: enchant: Fix dependencies.
#569: Fix alsa-utils build for x86 on x86-64
2009.08-rc2, Released August 6th, 2009:
Additional fixes and new features.
New packages: libuuid, gcc 4.3.4.
Updated/fixed packages: busybox, classpath, gzip, ipsec-tools,
jamvm, libusb, microperl, neon, popt, sed, webkit.
Fixed issue with 'make oldconfig'
Issues resolved (http://bugs.uclibc.org):
#525: sed broken with external toolchain
#537: Fix gzip build with recent glibc
2009.08-rc1, Released August 2nd, 2009:
Fixes all over the tree and new features.
Improvement of external toolchain support:
- Support for glibc toolchains.
- The toolchain configuration announced to Buildroot is
verified against the real toolchain configuration.
- Fixes, documentation.
Cleanup X.org support: clarified configuration options, and
removed mandatory dependency on useless libraries such as
libXt or libXaw.
New QT-based configurator, usable using 'make xconfig'.
Support for the Xtensa architecture.
Toolchain: GCC 4.4.1, 2.6.30 kernel headers, removed < 2.6.26
headers.
New packages: bmon, ctorrent, dosfstools, enchant,
gst-plugins-bad, iw, libmms, libnl, netstat-nat, ntfsprogs,
sdl_gfx, spawn-fcgi.
Updated packages: bind, busybox, coreutils, sqlite, directfb,
expat, gamin, gnuconfig, haserl, ipsec-tools, classpath,
libcurl, libglib2, liblockfile, libpng, libsoup, libxml2,
lighttpd, ltp-testsuite, lvm2, matchbox, memstat,
gst-plugins-good, gstreamer, libogg, libvorbis, mplayer,
neon, openssl, pciutils, php, qt, ruby, sawman, webkit,
wpa-supplicant, xdriver_xf86-input-synaptics,
xdriver_xf86-video-intel, xlib_libXfont, xlib_libXft,
xlib_libXt, xproto_xproto, xserver-xorg, xutil_makedepend,
xutil_util-macros.
Issues resolved (http://bugs.uclibc.org):
#83: liblockfile fails to compile due to eaccess redefinition
#163: Xtensa architecture port
#171: xorg-server / kernel headers 2.6.26 - vm86.c compilation issue
#241: device mapper + lvm2: build together
#243: ctorrent: new package
#247: ntfsprogs: new package
#271: Library 'libgcc_s.so.1' not installed in search path
#287: New package libnl
#289: New package iw
#331: Update MPlayer to version 1.0rc2
#333: Bump sqlite package to 3.6.15
#349: update libsoup to version 2.26.2
#357: New package netstat-nat
#359,#413: Upgrade openvpn to Makefile.autotools.in
#367: linux kernel compile error for arm926t
#369: Add SDL_gfx package
#373: Support for building gstreamer without libxml
#379: update DirectFB to version 1.4.0
#383: gst-plugins-good: Allow soup plugin to be configured
#385: neon: Fix pkgconfig dependency
#387: Tremor not installed to toolchain
#389: New package bmon
#391: gstreamer: Bump version to 0.10.23
#393: gst-plugins-base: Bump version to 0.10.23
#395: gst-plugins-bad: New package
#403: Error while building iso9660 image
#409: Bump php package to 5.2.10
#411: ipsec-tools: Bump version to 0.7.2
#417: New package spawn-fcgi
#419: Bump lighttpd package to 1.4.23
#421: toolchain: Clean up toolchain locale support menu
#427: webkit: Update to WebKit svn r44552
#437: ltp-testsuite: Bump version to 20090630
#451: Upgrade from unmaintained dosfstools-2.11 to dosfstools-3.0.3
#467: DirectFB 1.4.1
#473: memstat_0.5.tar.gz has install with -D and that fails "make"
#491: libxml2: Bump version to 0.7.3
#495: Bump bind package to 9.5.1-P3 (security)
#497: OpenSSL RSA key generation hangs on x86_64
#509: Bump sqlite package to 3.6.16
#523: pciutils broken with external toolchain
#533: Update gamin to 0.1.10 to fix compilation
2009.05, Released June 1st, 2009:
Fixes for dropbear & diffutils, bump linux-advanced 2.6.29.x
version and marked ubifsroot as broken.
2009.05-rc3, Released May 27th, 2009:
Fixes for toolchain (gcc arm pr37436), stable kernel versions,
busybox, curl, libusb, readline, python and strace.
Issues resolved (http://bugs.uclibc.org):
#345: libcurl package needs a urandom fix
2009.05-rc2, Released May 19th, 2009:
Fixes for toolchain (gcc w/softfloat on ppc, 3.4.6 buildfix
for newer hosts), stable kernel versions, busybox, cups,
dmraid, docker, mesa3d, rsync and updated defconfigs.
xserver marked as broken on AVR32 and atngw100-expanded
config removed.
Issues resolved (http://bugs.uclibc.org):
#167: metacity does not build
#295: gamin installs python support even if python is disabled
#323: gen_matypes fails to execute during build of Mesa when us...
2009.05-rc1, Released May 5th, 2009:
Fixes all over the tree, further conversion of packages to
Makefile.autotools.in and we now build host versions of
packages where needed for build time dependencies instead of
relying on the correct versions being available on the build
host. Ancient toolchain / busybox versions have furthermore
been removed as announced in the 2009.02 release notes.
New packages: flac, gob2, lzop, taglib, wpa_supplicant
Updated packages: avahi, bind, binutils, busybox, dbus, dbus-glib,
directfb, dnsmasq, freetype, gcc, gmp, gstreamer, iptables, kernel
headers, kexec, libglib2, libpng, libsndfile, lua, mpfr, ntfs-3g,
openssl, php, qtopia4, rsync, samba, sqlite, tar, uboot, uclibc,
util-linux, xorg7, xerces
Issues resolved (http://bugs.uclibc.org):
#5,#77,#141,#143: Convert php package to Makefile.autotools.in
and a ton of other improvements
#19: page.h missing by util-linux
#37: update libglib2 to version 2.18.4
#61: tslib puts staging_dir into pkgconfig file
#69: tar refuses to build
#71,#175: ./wchar.h:41:12: error: empty filename in #include
#73: Bump openssl package to the latest version
#81: New package wpa_supplicant
#99: new package: flac
#101: update gstreamer packages
#105,#313: menuconfig segfaults on tinyx if wchar is not
selected
#107: convert libvorbis to Makefile.autotools.in
#109: Make pppd package avoid bsd err
#111: binutils 2.17 fails to build when texinfo >= 4.10
#133: Modify ncurses5-config to get correct include path
#137: Bump php to version 5.2.9
#139: Bump sqlite to 3.6.11 and convert to
Makefile.autotools.in
#145: Bump bind package to 9.5.1-P1 (security)
#147: buildroot toolchain fails to build w/binutils-2.19.1
#151: openssl package trivial fixes
#161: vim fails on patching with errors in configure.patch
#169: blackbox-0.70.1 does not build
#177: xdriver_xf86-input-keyboard does not build
#179: Upgrade dropbear to Makefile.autotools.in
#181: Update to Xorg 7.4
#187: ntfs-3g: could not build cross
#191: alsa-lib ARM binaries always built with EABI
#213: Bump wpa_supplicant package to version 0.6.9
#217: Bump openssl package to 0.9.8k (security)
#219: Toolchain build fails on m4
#225: m4 macros are out of place
#233: make ipv6 optional in iptables
#237: ncftp: convert to Makefile.autotools.in
#239: ntfs-3g: convert to Makefile.autotools.in
#245: lzop: new package
#271: Bump bind package to 9.5.1-P2 (security)
#277: Bump sqlite package to 3.6.16
#279: update libglib2 to version 2.20.1
#281: update DirectFB to version 1.2.8
#283: add taglib
#285: compilation of samba fails if IPV6 support is missing
#293: update samba to version 3.3.3
#299: add shared-mime-info package
#307: make openssl package respect build flags

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.

View File

@@ -8,7 +8,7 @@ config BR2_HAVE_DOT_CONFIG
config BR2_VERSION
string
default "2009.08-rc3"
default "2009.02-rc4"
source "target/Config.in.arch"
source "target/device/Config.in"

View File

@@ -28,7 +28,7 @@ CONFIG_DEFCONFIG=.defconfig
CONFIG=package/config
DATE:=$(shell date +%Y%m%d)
noconfig_targets:=menuconfig xconfig config oldconfig randconfig \
noconfig_targets:=menuconfig config oldconfig randconfig \
defconfig allyesconfig allnoconfig release tags \
source-check help
@@ -262,11 +262,7 @@ endif
include package/*/*.mk
TARGETS+=target-finalize
ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
TARGETS+=target-purgelocales
endif
TARGETS+=target-devfiles
# target stuff is last so it can override anything else
include target/Makefile.in
@@ -286,8 +282,8 @@ $(BR2_DEPENDS_DIR): .config
cp -dpRf $(CONFIG)/buildroot-config $@
dirs: $(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
$(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps
$(BASE_TARGETS): dirs
@@ -298,8 +294,8 @@ world: dependencies dirs target-host-info $(BASE_TARGETS) $(TARGETS_ALL)
$(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
$(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
$(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
$(BR2_DEPENDS_DIR) $(BINARIES_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps
#############################################################
#
@@ -307,8 +303,8 @@ world: dependencies dirs target-host-info $(BASE_TARGETS) $(TARGETS_ALL)
# dependencies anywhere else
#
#############################################################
$(DL_DIR) $(TOOL_BUILD_DIR) $(BUILD_DIR) $(HOST_DIR) $(PROJECT_BUILD_DIR) \
$(PROJECT_BUILD_DIR)/autotools-stamps $(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):
@@ -332,13 +328,10 @@ $(PROJECT_BUILD_DIR)/.root:
if [ -d "$(TARGET_SKELETON)" ]; then \
cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
fi; \
if [ -d "$(TARGET_SKELETON_PATCH)" ]; then \
toolchain/patch-kernel.sh $(TARGET_DIR) $(TARGET_SKELETON_PATCH)/ \*patch\*; \
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 -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): $(PROJECT_BUILD_DIR)/.root
@@ -346,43 +339,15 @@ $(TARGET_DIR): $(PROJECT_BUILD_DIR)/.root
erase-fakeroots:
rm -f $(PROJECT_BUILD_DIR)/.fakeroot*
target-finalize:
target-devfiles:
ifeq ($(BR2_HAVE_DEVFILES),y)
( scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
else
rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/lib/pkgconfig
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_HAVE_MANPAGES),y)
rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man
endif
ifneq ($(BR2_HAVE_INFOPAGES),y)
rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
endif
find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
$(TARGET_LDCONFIG) -r $(TARGET_DIR) 2>/dev/null
ifneq ($(BR2_ROOTFS_POST_BUILD_SCRIPT),"")
$(BR2_ROOTFS_POST_BUILD_SCRIPT) $(TARGET_DIR)
endif
ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
LOCALE_WHITELIST=$(PROJECT_BUILD_DIR)/locales.nopurge
LOCALE_NOPURGE=$(strip $(subst ",,$(BR2_ENABLE_LOCALE_WHITELIST)))
#"))
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
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
source: $(TARGETS_SOURCE) $(HOST_SOURCE)
@@ -400,17 +365,18 @@ external-deps:
#
#############################################################
clean: $(TARGETS_CLEAN)
rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) $(PROJECT_BUILD_DIR)/.root $(PROJECT_BUILD_DIR)/autotools-stamps $(STAMP_DIR)
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 $(STAMP_DIR)
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 $(TOOL_BUILD_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \
.config.cmd
rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \
$(LINUX_KERNEL) $(BASE_DIR)/include \
.config.cmd
$(MAKE) -C $(CONFIG) clean
sourceball:
@@ -438,29 +404,13 @@ $(CONFIG)/conf:
-@if [ ! -f .config ]; then \
cp $(CONFIG_DEFCONFIG) .config; \
fi
$(CONFIG)/mconf:
@mkdir -p $(CONFIG)/buildroot-config
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) mconf
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
-@if [ ! -f .config ]; then \
cp $(CONFIG_DEFCONFIG) .config; \
fi
$(CONFIG)/qconf:
@mkdir -p $(CONFIG)/buildroot-config
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) qconf
-@if [ ! -f .config ]; then \
cp $(CONFIG_DEFCONFIG) .config; \
fi
xconfig: $(CONFIG)/qconf
@mkdir -p $(CONFIG)/buildroot-config
@if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
$(CONFIG)/qconf $(CONFIG_CONFIG_IN); then \
test -f .config.cmd || rm -f .config; \
fi
menuconfig: $(CONFIG)/mconf
@mkdir -p $(CONFIG)/buildroot-config
@if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
@@ -561,7 +511,6 @@ help:
@echo
@echo 'Configuration:'
@echo ' menuconfig - interactive curses-based configurator'
@echo ' xconfig - interactive Qt-based configurator'
@echo ' oldconfig - resolve any unresolved symbols in .config'
@echo ' configured - make {uclibc/busybox/linux26}-config'
@echo ' saveconfig - save current configuration under local/<project>'
@@ -583,5 +532,5 @@ release: distclean
rm -rf $$OUT
.PHONY: dummy subdirs release distclean clean config oldconfig \
menuconfig xconfig tags check test depend defconfig help
menuconfig tags check test depend defconfig help

15
TODO
View File

@@ -6,12 +6,9 @@ Buildroot2 TODOs
packages/Makefile.autotools.in
- fix setting of flags for packages
- coreutils: use make install-strip to install the packages. For now,
it fails beause even if we pass STRIP="/path/to/$(ARCH)-strip", the
coreutils build system uses the host strip to strip target
binaries. The ./configure execution done by Buildroot properly
detects the cross-strip, but when running make, build-aux/missing
gets run, complains about aclocal-1.10c and atuomake-1.10c not being
present, and rerun the configuration... with the wrong environment
variables (STRIP= is missing). An autoreconf on this package is
probably necessary.
- 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

@@ -16,10 +16,11 @@
<h1>U-boot extensions in 2009.01-rc1</h1>
</div>
<p><a href="http://buildroot.net/">U-Boot</a>
<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>

View File

@@ -3,31 +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>
Buildroot is a set of Makefiles and patches that makes it easy to generate a
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.
you do not need to be root to build or run buildroot.
<p>
Buildroot is maintained by <a href=
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>.
<a href="http://www.gnu.org/copyleft/lgpl.html">GNU LIBRARY GENERAL PUBLIC LICENSE</a>.
<!--#include file="footer.html" -->

View File

@@ -15,10 +15,12 @@
<h1>Buildroot</h1>
</div>
<p><a href="http://buildroot.net/">Buildroot</a>
<p><a href="http://buildroot.uclibc.org/">Buildroot</a>
usage and documentation by Thomas Petazzoni. Contributions from
Karsten Kruse, Ned Ludd, Martin Herren and others. </p>
<p><small>$LastChangedDate$</small></p>
<ul>
<li><a href="#about">About Buildroot</a></li>
@@ -30,14 +32,11 @@
<li><a href="#custom_uclibc">Customizing the uClibc
configuration</a></li>
<li><a href="#buildroot_innards">How Buildroot works</a></li>
<li><a href="#multi_project">Building several projects in the
same buildroot source tree</a></li>
<li><a href="#using_toolchain">Using the uClibc toolchain
outside Buildroot</a></li>
<li><a href="#external_toolchain">Use an external toolchain</a></li>
<li><a href="#using_toolchain">Using the uClibc toolchain</a></li>
<li><a href="#toolchain_standalone">Using the uClibc toolchain
outside of Buildroot</a></li>
<li><a href="#downloaded_packages">Location of downloaded packages</a>
</li>
<li><a href="#adapting_rootfs">Adapting the rootfs for own binaries</a></li>
<li><a href="#add_software">Extending Buildroot with more
Software</a></li>
<li><a href="#links">Resources</a></li>
@@ -117,28 +116,24 @@
<h2><a name="download" id="download"></a>Obtaining Buildroot</h2>
<p>Buildroot releases are made approximately every 3
months. Direct Git access and daily snapshots are also
available if you want more bleeding edge.</p>
<p>Releases are available at <a
href="http://buildroot.net/downloads/">http://buildroot.net/downloads/</a>.</p>
<p>Buildroot is available as daily SVN snapshots or directly using
SVN. As of today, no stable releases of Buildroot are made. </p>
<p>The latest snapshot is always available at <a
href="http://buildroot.net/downloads/snapshots/buildroot-snapshot.tar.bz2">http://buildroot.net/downloads/snapshots/buildroot-snapshot.tar.bz2</a>,
href="http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2">http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2</a>,
and previous snapshots are also available at <a
href="http://buildroot.net/downloads/snapshots/">http://buildroot.net/downloads/snapshots/</a>. </p>
href="http://buildroot.uclibc.org/downloads/snapshots/">http://buildroot.uclibc.org/downloads/snapshots/</a>. </p>
<p>To download Buildroot using Git, you can simply follow
the rules described on the &quot;Accessing Git&quot;-page (<a href=
"http://buildroot.net/git.html">http://buildroot.net/git.html</a>)
of the Buildroot website (<a href=
"http://buildroot.net">http://buildroot.net</a>), and download
<code>buildroot</code> from Git. For the impatient, here's a quick
<p>To download Buildroot using SVN, you can simply follow
the rules described on the &quot;Accessing SVN&quot;-page (<a href=
"http://buildroot.uclibc.org/subversion.html">http://buildroot.uclibc.org/subversion.html</a>)
of the uClibc buildroot website (<a href=
"http://buildroot.uclibc.org">http://buildroot.uclibc.org</a>), and download the
<code>buildroot</code> SVN module. For the impatient, here's a quick
recipe:</p>
<pre>
$ git clone git://git.buildroot.net/buildroot
$ svn co svn://uclibc.org/trunk/buildroot
</pre>
<h2><a name="using" id="using"></a>Using Buildroot</h2>
@@ -155,17 +150,6 @@
$ make menuconfig
</pre>
<p>to run the curses-based configurator, or</p>
<pre>
$ make xconfig
</pre>
<p>to run the Qt3-based configurator. On Debian-like systems, the
<code>libncurses5-dev</code> package is required to use the
<i>menuconfig</i> interface, and the <code>libqt3-mt-dev</code> is
required to use the <i>xconfig</i> interface.</p>
<p>For each entry of the configuration tool, you can find associated help
that describes the purpose of the entry. </p>
@@ -230,9 +214,9 @@
<h3><a name="offline_builds" id="offline_builds"></a>
Offline builds</h3>
<p>If you intend to do an offline-build and just want to download
all sources that you previously selected in the configurator
(<i>menuconfig</i> or <i>xconfig</i>) then issue:</p>
<p>If you intend to do an offline-build and just want to download all
sources that you previously selected in &quot;make menuconfig&quot; then
issue:</p>
<pre>
$ make source
</pre>
@@ -266,6 +250,7 @@
<li>BUILDROOT_COPYTO</li>
<li>BUILDROOT_DL_DIR</li>
<li>BUILDROOT_LOCAL</li>
<li>BUILDROOT_USE_XWINDOWS</li>
</ul>
<p>An example that uses config files located in the toplevel directory and
@@ -351,10 +336,9 @@ $ make me&lt;TAB&gt;
is made. So simply rebuilding the image by running
make should propagate any new changes to the image. </li>
<li>When configuring the build system, using <code>make
menuconfig</code> or <code>make xconfig</code>, you can specify
the contents of the /etc/hostname and /etc/issue (the welcome
banner) in the <code>PROJECT</code> section</li>
<li>When configuring the build system, using <code>make menuconfig</code>,
you can specify the contents of the /etc/hostname and /etc/issue
(the welcome banner) in the <code>PROJECT</code> section</li>
</ul>
<h2><a name="custom_busybox" id="custom_busybox"></a>Customizing the
@@ -526,7 +510,7 @@ $ make me&lt;TAB&gt;
uncompress the <code>target/generic/skel.tar.gz</code> file to create the
main subdirectories and symlinks, copies the skeleton available in
<code>target/generic/target_skeleton</code> and then removes useless
<code>.svn/CVS</code> directories. </li>
<code>.svn/</code> directories. </li>
<li>Add the <code>TARGETS</code> dependency. This should generally check
if the configuration option for this package is enabled, and if so then
@@ -537,10 +521,7 @@ $ make me&lt;TAB&gt;
<h2><a name="multi_project" id="multi_project"></a>Building several
projects in the same buildroot source tree</h2>
<p><i>Note: the contents of this section are obsolete since this
feature has been implemented.</i></p>
<h3>Background</h3>
<p><b>BACKGROUND</b></p>
<p>Buildroot has always supported building several projects in the same
tree if each project was for a different architecture. </p>
@@ -576,7 +557,8 @@ $ make me&lt;TAB&gt;
was also duplicated, so each </code>package</code> would also
be rebuilt once per project, resulting in even longer build times.</p>
<h3>Project to share toolchain and package builds</h3>
<p><b>PROJECT TO SHARE TOOLCHAIN AND PACKAGE BUILDS</b></p>
<p>Work has started on a project which will allow the user to build
multiple root file systems for the same architecture in the same tree.
@@ -606,7 +588,7 @@ $ make me&lt;TAB&gt;
<p>Only packages, not used by the first project, will have to go
through the normal extract-configure-compile flow. </p>
<h3>Implementation</h3>
<p><b>IMPLEMENTATION</b></p>
<p>The core of the solution is the introduction
of two new directories: </p>
@@ -661,13 +643,15 @@ $ make me&lt;TAB&gt;
<p>The resulting binaries for all architectures are stored in the
<code>&quot;$(BINARIES_DIR)&quot;</code> directory. <p>
<h3>Summary</h3>
<p><b>SUMMARY</b></p>
<p>The project will share directories which can be share without
conflicts, but will use unique build directories, where the user
can configure the build. </p>
<h2><a name="Linux" id="Linux"></a>Linux</h2>
<ol>
<p>The user can select from three different Linux strategies:
@@ -707,8 +691,9 @@ $ make me&lt;TAB&gt;
buildroot starts the linux configuration system, which
defaults to "make menuconfig".
</p>
</ol>
<h3>Todo</h3>
<h2><a name="Todo" id="Todo"></a>Todo</h2>
<ol>
<li>Configurable packages</li>
@@ -778,7 +763,7 @@ $ make me&lt;TAB&gt;
</ol>
<h2><a name="using_toolchain" id="using_toolchain"></a>Using the
uClibc toolchain outside Buildroot</h2>
uClibc toolchain</h2>
<p>You may want to compile your own programs or other software
that are not packaged in Buildroot. In order to do this, you can
@@ -806,19 +791,32 @@ export PATH=&quot;$PATH:~/buildroot/build_mips/staging_dir/usr/bin/&quot;
mips-linux-gcc -o foo foo.c
</pre>
<p><b>Important</b> : do not try to move a gcc-3.x toolchain to an other
directory, it won't work. There are some hardcoded paths in the
<i>gcc</i> configuration. If you are using a current gcc-4.x, it
is possible to relocate the toolchain, but then
<code>--sysroot</code> must be passed every time the compiler is
called to tell where the libraries and header files are, which
might be cumbersome.</p>
<p><b>Important</b> : do not try to move a gcc-3.x toolchain to an other
directory, it won't work. There are some hardcoded paths in the
<i>gcc</i> configuration. If the default toolchain directory
doesn't suit your needs, please refer to the <a
href="#toolchain_standalone">Using the uClibc toolchain outside of
buildroot</a> section. </p>
<p>If you are using a current gcc-4.x, then use --sysroot and -isysroot
since these toolchains have fully functional sysroot support. No
hardcoded paths do exist in these configurations. </p>
<p>It is also possible to generate the Buildroot toolchain in
another directory than <code>build_ARCH/staging_dir</code> using
the <code>Build options -&gt; Toolchain and header file
location</code> option. This could be useful if the toolchain
must be shared with other users.</p>
<h2><a name="toolchain_standalone" id="toolchain_standalone"></a>Using the
uClibc toolchain outside of buildroot</h2>
<p>By default, the cross-compilation toolchain is generated inside
<code>build_ARCH/staging_dir/</code>. But sometimes, it may be useful to
install it somewhere else, so that it can be used to compile other programs
or by other users. Moving the <code>build_ARCH/staging_dir/</code>
directory elsewhere is <b>not possible if using gcc-3.x</b>, because there
are some hardcoded paths in the toolchain configuration. This works, thanks
to sysroot support, with current, stable gcc-4.x toolchains, of course. </p>
<p>If you want to use the generated gcc-3.x toolchain for other purposes,
you can configure Buildroot to generate it elsewhere using the
option of the configuration tool : <code>Build options -&gt;
Toolchain and header file location</code>, which defaults to
<code>$(BUILD_DIR)/staging_dir/</code>. </p>
<h2><a name="downloaded_packages"
id="downloaded_packages"></a>Location of downloaded packages</h2>
@@ -852,59 +850,7 @@ ln -s &lt;shared download location&gt; dl
export BUILDROOT_DL_DIR &lt;shared download location&gt;
</pre>
<h2><a name="external_toolchain" id="external_toolchain"></a>Using
an external toolchain</h2>
<p>It might be useful not to use the toolchain generated by
Buildroot, for example if you already have a toolchain that is known
to work for your specific CPU, or if the toolchain generation feature
of Buildroot is not sufficiently flexible for you (for example if you
need to generate a system with <i>glibc</i> instead of
<i>uClibc</i>). Buildroot supports using an <i>external
toolchain</i>.</p>
<p>To enable the use of an external toolchain, go in the
<code>Toolchain</code> menu, and&nbsp;:</p>
<ul>
<li>Select the <code>External binary toolchain</code> toolchain
type</li>
<li>Adjust the <code>External toolchain path</code>
appropriately. It should be set to a path where a bin/ directory
contains your cross-compiling tools</li>
<li>Adjust the <code>External toolchain prefix</code>, so that the
prefix, suffixed with <code>-gcc</code> or <code>-ld</code> will
correspond to your cross-compiling tools</li>
</ul>
<p>If you are using an external toolchain based on <i>uClibc</i>, the
<code>Core C library from the external toolchain</code> and
<code>Libraries to copy from the external toolchain</code> options
should already have correct values. However, if your external
toolchain is based on <i>glibc</i>, you'll have to change these values
according to your cross-compiling toolchain.</p>
<p>To generate external toolchains, we recommend using <a
href="http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool">Crosstool-NG</a>.
It allows to generate toolchains based on <i>uClibc</i>, <i>glibc</i>
and <i>eglibc</i> for a wide range of architectures, and has good
community support.</p>
<h2><a name="adapting_rootfs" id="adapting_rootfs">Adapting the rootfs
for own binaries</h2>
<p>When using BR2 in an environment where own software binaries or
static data should be part of the generated rootfs package, the
<code>BR2_ROOTFS_POST_BUILD_SCRIPT</code> feature might interest
you. You can specify a command here which is called <i>after</i> BR2
built all the selected software, but <i>before</i> the the rootfs
packages are assembled. The destination rootfs folder is given as
first argument. You can add own components here, change
default configurations and remove unwanted files.</p>
<p>You should, however, use that feature with care. Whenever you
find that a certain package generates wrong or unneeded files, you
should rather fix than package than working around it with a
cleanup script.</p>
<h2><a name="add_software" id="add_software"></a>Extending Buildroot with
more software</h2>
@@ -980,7 +926,7 @@ endif
<a name="ex1line9" id="ex1line9">9</a> FOO_INSTALL_STAGING = YES
<a name="ex1line10" id="ex1line10">10</a> FOO_INSTALL_TARGET = YES
<a name="ex1line11" id="ex1line11">11</a> FOO_CONF_OPT = --enable-shared
<a name="ex1line12" id="ex1line12">12</a> FOO_DEPENDENCIES = libglib2 host-pkgconfig
<a name="ex1line12" id="ex1line12">12</a> FOO_DEPENDENCIES = libglib2 pkgconfig
<a name="ex1line13" id="ex1line13">13</a> $(eval $(call AUTOTARGETS,package,foo))
</pre>
@@ -1064,7 +1010,7 @@ endif
<a name="ex2line34" id="ex2line34">34</a> $(MAKE) CC=$(TARGET_CC) -C $(FOO_DIR)
<a name="ex2line35" id="ex2line35">35</a>
<a name="ex2line36" id="ex2line36">36</a> $(TARGET_DIR)/$(FOO_TARGET_BINARY): $(FOO_DIR)/$(FOO_BINARY)
<a name="ex2line37" id="ex2line37">37</a> $(MAKE) DESTDIR=$(TARGET_DIR) -C $(FOO_DIR) install-strip
<a name="ex2line37" id="ex2line37">37</a> $(MAKE) prefix=$(TARGET_DIR)/usr -C $(FOO_DIR) install
<a name="ex2line38" id="ex2line38">38</a> rm -Rf $(TARGET_DIR)/usr/man
<a name="ex2line39" id="ex2line39">39</a>
<a name="ex2line40" id="ex2line40">40</a> foo: uclibc ncurses $(TARGET_DIR)/$(FOO_TARGET_BINARY)
@@ -1161,8 +1107,8 @@ endif
<p>Lines <a href="#ex2line36">36-38</a> defines a target and associated rules
that install the software inside the target filesystem. It depends on the
binary file in the source directory, to make sure the software has
been compiled. It uses the <code>install-strip</code> target of the
software <code>Makefile</code> by passing a <code>DESTDIR</code>
been compiled. It uses the <code>install</code> target of the
software <code>Makefile</code> by passing a <code>prefix</code>
argument, so that the <code>Makefile</code> doesn't try to install
the software inside host <code>/usr</code> but inside target
<code>/usr</code>. After the installation, the
@@ -1227,12 +1173,13 @@ endif
<li><a href="http://www.uclibc.org/">http://www.uclibc.org/</a></li>
<li><a href="http://www.busybox.net/">http://www.busybox.net/</a></li>
</ul>
</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>
<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>

View File

@@ -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

@@ -20,7 +20,7 @@ Current documentation for buildroot includes:
<li>
If you find that you need help with buildroot, you can ask for help on the
<a href= "/lists/buildroot/">buildroot mailing list</a> at buildroot at mail.uclibc.org.
<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>

View File

@@ -6,40 +6,29 @@
<p>
The latest stable release is <b>2009.05</b>, which can be downloaded
here:<p>
<a href="/downloads/buildroot-2009.05.tar.gz">buildroot-2009.05.tar.gz</a>
or
<a href="/downloads/buildroot-2009.05.tar.bz2">buildroot-2009.05.tar.bz2</a>.
<p>
The latest release candidate is <b>2009.08-rc3</b>, which can be
downloaded here:<p>
<a href="/downloads/buildroot-2009.08-rc3.tar.gz">buildroot-2009.08-rc3.tar.gz</a>
or
<a href="/downloads/buildroot-2009.08-rc3.tar.bz2">buildroot-2009.08-rc3.tar.bz2</a>.
<p>
This and earlier releases can always be dowloaded 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" -->

View File

@@ -1,39 +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/buildroot</pre>
<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

@@ -27,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: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 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>

View File

@@ -1,146 +1,7 @@
<!--#include file="header.html" -->
<h3>News</h3>
<p>
<ul>
<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
@@ -151,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
@@ -161,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
@@ -171,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>
@@ -199,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.

40
docs/subversion.html Normal file
View File

@@ -0,0 +1,40 @@
<!--#include file="header.html" -->
<h3>Anonymous Subversion Access</h3>
We allow anonymous (read-only) Subversion (svn) access to everyone. To
grab a copy of the latest version of buildroot using anonymous svn access:
<pre>
svn co svn://uclibc.org/trunk/buildroot</pre>
<p>
If you are not already familiar with using Subversion, I recommend you visit <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>. If you are
already comfortable with using CVS, you may want to skip ahead to the <a
href="http://svnbook.red-bean.com/en/1.1/apa.html">Subversion for CVS Users</a>
part of the Subversion Book.
<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>
svn update</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="http://bugs.uclibc.org/">Bug and Patch Tracking System</a>.
For those that are actively contributing <a
href="developer.html">Subversion commit access</a> can be made available.
<!--#include file="footer.html" -->

View File

@@ -43,7 +43,7 @@ source "package/libtool/Config.in"
source "package/m4/Config.in"
source "package/mpatrol/Config.in"
source "package/oprofile/Config.in"
source "package/pkg-config/Config.in"
source "package/pkgconfig/Config.in"
source "package/readline/Config.in"
source "package/valgrind/Config.in"
source "package/pcre/Config.in"
@@ -61,7 +61,6 @@ source "package/customize/Config.in"
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/dash/Config.in"
endif
source "package/enchant/Config.in"
source "package/file/Config.in"
source "package/gamin/Config.in"
source "package/icu/Config.in"
@@ -101,7 +100,6 @@ if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/psmisc/Config.in"
endif
source "package/screen/Config.in"
source "package/shared-mime-info/Config.in"
source "package/startup-notification/Config.in"
source "package/strace/Config.in"
source "package/sudo/Config.in"
@@ -133,9 +131,7 @@ if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/boa/Config.in"
endif
source "package/bind/Config.in"
source "package/bmon/Config.in"
source "package/bridge-utils/Config.in"
source "package/ctorrent/Config.in"
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/dhcp/Config.in"
endif
@@ -150,7 +146,6 @@ source "package/iperf/Config.in"
source "package/iproute2/Config.in"
source "package/ipsec-tools/Config.in"
source "package/iptables/Config.in"
source "package/iw/Config.in"
source "package/kismet/Config.in"
source "package/l2tp/Config.in"
source "package/libcgi/Config.in"
@@ -158,10 +153,8 @@ source "package/libcgicc/Config.in"
source "package/libcurl/Config.in"
source "package/libdnet/Config.in"
source "package/libeXosip2/Config.in"
source "package/libnl/Config.in"
source "package/libosip2/Config.in"
source "package/libpcap/Config.in"
source "package/libsoup/Config.in"
source "package/libupnp/Config.in"
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/lighttpd/Config.in"
@@ -169,7 +162,7 @@ endif
source "package/links/Config.in"
source "package/lrzsz/Config.in"
source "package/mdnsresponder/Config.in"
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS || !BR2_PACKAGE_BUSYBOX_SNAPSHOT
source "package/microcom/Config.in"
endif
source "package/mii-diag/Config.in"
@@ -185,7 +178,6 @@ source "package/netkitbase/Config.in"
source "package/netkittelnet/Config.in"
source "package/netplug/Config.in"
source "package/netsnmp/Config.in"
source "package/netstat-nat/Config.in"
source "package/nfs-utils/Config.in"
source "package/ntp/Config.in"
source "package/olsr/Config.in"
@@ -204,7 +196,6 @@ source "package/quagga/Config.in"
source "package/rsync/Config.in"
source "package/samba/Config.in"
source "package/socat/Config.in"
source "package/spawn-fcgi/Config.in"
source "package/stunnel/Config.in"
source "package/tcpdump/Config.in"
source "package/tftpd/Config.in"
@@ -227,7 +218,6 @@ if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/wget/Config.in"
endif
source "package/wireless-tools/Config.in"
source "package/wpa_supplicant/Config.in"
endmenu
@@ -235,10 +225,9 @@ menu "Hardware handling / blockdevices and filesystem maintenance"
source "package/acpid/Config.in"
source "package/dbus/Config.in"
source "package/dbus-glib/Config.in"
source "package/dbus-python/Config.in"
source "package/devmem2/Config.in"
source "package/dm/Config.in"
source "package/dmraid/Config.in"
source "package/dosfstools/Config.in"
source "package/e2fsprogs/Config.in"
source "package/eeprog/Config.in"
source "package/fconfig/Config.in"
@@ -261,9 +250,9 @@ source "package/lm-sensors/Config.in"
source "package/lvm2/Config.in"
source "package/mdadm/Config.in"
source "package/memtester/Config.in"
source "package/mkdosfs/Config.in"
source "package/mtd/Config.in"
source "package/ntfs-3g/Config.in"
source "package/ntfsprogs/Config.in"
source "package/pciutils/Config.in"
source "package/pcmcia/Config.in"
source "package/setserial/Config.in"
@@ -312,7 +301,6 @@ source "package/sdl_image/Config.in"
source "package/sdl_mixer/Config.in"
source "package/sdl_net/Config.in"
source "package/sdl_ttf/Config.in"
source "package/sdl_gfx/Config.in"
source "package/tiff/Config.in"
comment "busybox graphic applications"
@@ -321,13 +309,46 @@ source "package/fbv/Config.in"
source "package/fbset/Config.in"
comment "other GUIs"
source "package/qt/Config.in"
source "package/qte/Config.in"
source "package/qtopia4/Config.in"
#source "package/microwin/Config.in"
choice
prompt "X Window System server"
default BR2_PACKAGE_XSERVER_none
help
Select the X Window System server to use
config BR2_PACKAGE_XSERVER_none
bool "none"
config BR2_PACKAGE_XSERVER_xorg
bool "modular xorg"
depends on BR2_USE_WCHAR # && BR2_ENABLE_LOCALE
# depending on BR2_ENABLE_LOCALE gives a recursion error with dbus
comment "xorg requires a toolchain with LOCALE and WCHAR support"
depends on !(BR2_USE_WCHAR && BR2_ENABLE_LOCALE)
config BR2_PACKAGE_XSERVER_tinyx
bool "tinyx"
depends on BR2_USE_WCHAR
comment "tinyx requires a toolchain with WCHAR support"
depends on !BR2_USE_WCHAR
endchoice
config BR2_X11_PREFIX
string
default "/usr/X11R6" if BR2_PACKAGE_XSERVER_xorg
default "/usr" if BR2_PACKAGE_XSERVER_tinyx
help
X11 apps root location
if !BR2_PACKAGE_XSERVER_none
source "package/x11r7/Config.in"
endif
comment "X libraries and helper libraries"
#XXX: maybe some of these should depend on !BR2_PACKAGE_XSERVER_none
source "package/atk/Config.in"
source "package/cairo/Config.in"
source "package/pango/Config.in"
@@ -359,7 +380,6 @@ source "package/dillo/Config.in"
source "package/docker/Config.in"
source "package/gqview/Config.in"
source "package/gmpc/Config.in"
source "package/gob2/Config.in"
source "package/gtkperf/Config.in"
source "package/leafpad/Config.in"
source "package/midori/Config.in"
@@ -381,7 +401,6 @@ if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
source "package/gzip/Config.in"
endif
source "package/lzo/Config.in"
source "package/lzop/Config.in"
source "package/lzma/Config.in"
source "package/zlib/Config.in"
endmenu

View File

@@ -10,7 +10,7 @@
# | FOO_VERSION = 1.0
# | FOO_SOURCE = foo-$(FOO_VERSION).tar.gz
# | FOO_SITE = http://www.libfoo.org/dist
# | $(eval $(call AUTOTARGETS,package,foo))
# | $(eval $(call AUTOTARGETS,foo))
#
## The following targets can be called from the shell:
#
@@ -259,7 +259,7 @@ $(BUILD_DIR)/%/.stamp_configured:
# Build
$(BUILD_DIR)/%/.stamp_built:
$(call MESSAGE,"Building")
PATH=$(TARGET_PATH) $($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_MAKE_OPT) -C $(@D)/$($(PKG)_SUBDIR)
$($(PKG)_MAKE_ENV) $($(PKG)_MAKE) $($(PKG)_MAKE_OPT) -C $(@D)/$($(PKG)_SUBDIR)
$(Q)touch $@
# Install to staging dir

View File

@@ -93,9 +93,9 @@ TARGET_CXXFLAGS=$(TARGET_CFLAGS)
# else it's an external toolchain
#########################################################################
else
TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) --sysroot $(STAGING_DIR)/
TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include -I$(TOOLCHAIN_EXTERNAL_PATH)/$(TOOLCHAIN_EXTERNAL_PREFIX)/include --sysroot $(STAGING_DIR)/
TARGET_CXXFLAGS=$(TARGET_CFLAGS)
TARGET_LDFLAGS=--sysroot $(STAGING_DIR)/
TARGET_LDFLAGS=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib
endif
#########################################################################
#ifeq ($(BR2_ROOTFS_SUFFIX),)
@@ -117,7 +117,7 @@ ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(ARCH)$(COND_ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)
# Quotes are needed for spaces et al in path components.
TARGET_PATH="$(TOOL_BUILD_DIR)/bin:$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(PATH)"
TARGET_PATH="$(TOOL_BUILD_DIR)/bin:$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(PATH)"
IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(ARCH)$(COND_ARCH_FPU_SUFFIX)$(ROOTFS_SUFFIX)
GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-linux
REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)$(GNU_TARGET_SUFFIX)
@@ -130,7 +130,7 @@ TOOLCHAIN_EXTERNAL_PATH:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PATH)))
#"))
#TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(TOOLCHAIN_EXTERNAL_PREFIX)
TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(ARCH)$(COND_ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)
TARGET_PATH="$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
TARGET_PATH="$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
#IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(TOOLCHAIN_EXTERNAL_PREFIX)$(ROOTFS_SUFFIX)
IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(ARCH)$(COND_ARCH_FPU_SUFFIX)$(ROOTFS_SUFFIX)
@@ -181,15 +181,10 @@ ifeq ($(BR2_STRIP_none),y)
TARGET_STRIP=true -Not_stripping
STRIPCMD=$(TARGET_STRIP)
endif
INSTALL:=$(shell which install || type -p install)
INSTALL=/usr/bin/install
FLEX:=$(shell which flex || type -p flex)
BISON:=$(shell which bison || type -p bison)
HOST_CFLAGS += -I$(HOST_DIR)/include -I$(HOST_DIR)/usr/include
HOST_CXXFLAGS += -I$(HOST_DIR)/include -I$(HOST_DIR)/usr/include
HOST_LDFLAGS += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib
HOST_PATH=$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(PATH)
# hostcc version as an integer - E.G. 4.3.2 => 432
HOSTCC_VERSION:=$(shell $(HOSTCC) --version | \
sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p')
@@ -205,11 +200,20 @@ HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
-e 's/mipsel-.*/mipsel/' \
-e 's/cris.*/cris/' \
-e 's/i[3-9]86/i386/' \
-e 's/xtensa.*/xtensa/' \
)
GNU_HOST_NAME:=$(HOST_ARCH)-$(subst ",,$(BR2_GNU_BUILD_SUFFIX))
#")
AUTO_CONFIGURE_TARGET=\
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
$(TARGET_CONFIGURE_ENV) \
$(if $(THIS_SRCDIR),$(THIS_SRCDIR)/,./)configure \
$(if $(BR2_CONFIG_CACHE),--cache-file="$(PROJECT_BUILD_DIR)/tgt-config.cache",) \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME)
TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
AR="$(TARGET_AR)" \
AS="$(TARGET_AS)" \
@@ -242,8 +246,8 @@ TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
DEFAULT_ASSEMBLER="$(TARGET_AS)" \
DEFAULT_LINKER="$(TARGET_LD)" \
PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig$(PKG_CONFIG_PATH)" \
PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config" \
PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \
STAGING_DIR="$(STAGING_DIR)"
TARGET_CONFIGURE_ENV=\
@@ -252,7 +256,7 @@ TARGET_CONFIGURE_ENV=\
LDFLAGS="$(TARGET_LDFLAGS)" \
FCFLAGS="$(TARGET_FCFLAGS)" \
HOST_CONFIGURE_OPTS=PATH=$(HOST_PATH) \
HOST_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
AR="$(HOSTAR)" \
AS="$(HOSTAS)" \
LD="$(HOSTLD) $(HOST_LDFLAGS)" \
@@ -286,11 +290,7 @@ HOST_CONFIGURE_OPTS=PATH=$(HOST_PATH) \
ORIGINAL_AS_FOR_TARGET="$(TARGET_AS)" \
ORIGINAL_LD_FOR_TARGET="$(TARGET_LD)" \
ORIGINAL_NM_FOR_TARGET="$(TARGET_NM)" \
ORIGINAL_OBJDUMP_FOR_TARGET="$(TARGET_OBJDUMP)" \
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
PKG_CONFIG_PATH="$(HOST_DIR)/usr/lib/pkgconfig$(PKG_CONFIG_PATH)"
HOST_MAKE_ENV=PATH=$(HOST_PATH)
ORIGINAL_OBJDUMP_FOR_TARGET="$(TARGET_OBJDUMP)"
#######################################################################
# settings we need to pass to configure
@@ -354,7 +354,7 @@ DISABLE_LARGEFILE= --disable-largefile
endif
ifneq ($(BR2_HAVE_DOCUMENTATION),y)
DISABLE_DOCUMENTATION=--disable-gtk-doc
DISABLE_DOCUMENTATION=--without-html-dir --disable-gtk-doc
endif
ifneq ($(BR2_INET_IPV6),y)
@@ -362,7 +362,7 @@ DISABLE_IPV6= --disable-ipv6
endif
ifneq ($(BR2_GCC_CROSS_CXX),y)
TARGET_CONFIGURE_OPTS+=CXX=false
TARGET_CONFIGURE_OPTS+=CXX=""
endif
ifeq ($(BR2_ENABLE_DEBUG),y)
@@ -371,8 +371,23 @@ else
ENABLE_DEBUG:=
endif
# X Windowing system
XSERVER:=
ifeq ($(BR2_PACKAGE_TINYX),y)
XSERVER+=tinyx
endif
ifeq ($(BR2_PACKAGE_XORG),y)
XSERVER+=xorg
endif
ifeq ($(BR2_PACKAGE_XORG7),y)
XSERVER+=xserver_xorg-server
endif
ifeq ($(BR2_PACKAGE_XGGI),y)
XSERVER+=xggi
endif
X11_PREFIX:=$(strip $(subst ",, $(BR2_X11_PREFIX)))
#"))

View File

@@ -1,5 +1,6 @@
config BR2_PACKAGE_ATK
bool "atk"
select BR2_PACKAGE_PKGCONFIG
select BR2_PACKAGE_LIBGLIB2
help
The ATK accessibility toolkit, needed to build GTK+-2.x.

View File

@@ -38,67 +38,24 @@ ATK_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes \
am_cv_func_working_getline=yes gl_cv_func_mkdir_trailing_slash_bug=no \
gl_cv_func_mkstemp_limitations=no ac_cv_func_working_mktime=yes \
jm_cv_func_working_re_compile_pattern=yes ac_use_included_regex=no \
gl_cv_c_restrict=no ac_cv_prog_F77=no
gl_cv_c_restrict=no ac_cv_path_GLIB_GENMARSHAL=$(HOST_GLIB)/bin/glib-genmarshal \
ac_cv_prog_F77=no
ATK_CONF_OPT = --enable-shared \
--enable-static
--disable-glibtest --enable-explicit-deps=no \
--disable-debug
ifeq ($(BR2_PACKAGE_XORG7),y)
ATK_CONF_OPT += --with-x \
ifneq ($(BR2_PACKAGE_XSERVER_none),y)
ATK_CONF_OPT_X = --with-x \
--x-includes=$(STAGING_DIR)/usr/include/X11 \
--x-libraries=$(STAGING_DIR)/usr/lib --disable-glibtest
else
ATK_CONF_OPT += --without-x
ATK_CONF_OPT_X = --without-x
endif
ATK_DEPENDENCIES = libglib2 host-pkgconfig
ATK_CONF_OPT = --enable-shared \
--enable-static $(ATK_CONF_OPT_X) \
--disable-glibtest --enable-explicit-deps=no \
--disable-debug
ATK_MAKE_OPT = GLIB_GENMARSHAL=$(HOST_GLIB)/bin/glib-genmarshal GLIB_MKENUMS=$(HOST_GLIB)/bin/glib-mkenums
ATK_DEPENDENCIES = libglib2 pkgconfig
$(eval $(call AUTOTARGETS,package,atk))
# atk for the host
ATK_HOST_DIR:=$(BUILD_DIR)/atk-$(ATK_VERSION)-host
$(DL_DIR)/$(ATK_SOURCE):
$(call DOWNLOAD,$(ATK_SITE),$(ATK_SOURCE))
$(STAMP_DIR)/host_atk_unpacked: $(DL_DIR)/$(ATK_SOURCE)
mkdir -p $(ATK_HOST_DIR)
$(INFLATE$(suffix $(ATK_SOURCE))) $< | \
$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(ATK_HOST_DIR) $(TAR_OPTIONS) -
touch $@
$(STAMP_DIR)/host_atk_configured: $(STAMP_DIR)/host_atk_unpacked $(STAMP_DIR)/host_libglib2_installed $(STAMP_DIR)/host_pkgconfig_installed
(cd $(ATK_HOST_DIR); rm -rf config.cache; \
$(HOST_CONFIGURE_OPTS) \
CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" \
./configure \
--prefix="$(HOST_DIR)/usr" \
--sysconfdir="$(HOST_DIR)/etc" \
--enable-shared \
--disable-static \
--disable-glibtest \
)
touch $@
$(STAMP_DIR)/host_atk_compiled: $(STAMP_DIR)/host_atk_configured
$(HOST_MAKE_ENV) $(MAKE) -C $(ATK_HOST_DIR)
touch $@
$(STAMP_DIR)/host_atk_installed: $(STAMP_DIR)/host_atk_compiled
$(HOST_MAKE_ENV) $(MAKE) -C $(ATK_HOST_DIR) install
touch $@
host-atk: $(STAMP_DIR)/host_atk_installed
host-atk-source: atk-source
host-atk-clean:
rm -f $(addprefix $(STAMP_DIR)/host_atk_,unpacked configured compiled installed)
-$(MAKE) -C $(ATK_HOST_DIR) uninstall
-$(MAKE) -C $(ATK_HOST_DIR) clean
host-atk-dirclean:
rm -rf $(ATK_HOST_DIR)

View File

@@ -1,6 +1,5 @@
config BR2_PACKAGE_AUTOCONF
bool "autoconf"
select BR2_PACKAGE_MICROPERL
help
Extensible program for developing configure scripts. These
scripts handle all the mundane system/feature detection.

View File

@@ -3,63 +3,136 @@
# autoconf
#
#############################################################
AUTOCONF_VERSION = 2.63
AUTOCONF_SOURCE = autoconf-$(AUTOCONF_VERSION).tar.bz2
AUTOCONF_SITE = $(BR2_GNU_MIRROR)/autoconf
ifeq ($(BR2_ENABLE_DEBUG),y) # install-exec doesn't install aclocal stuff
AUTOCONF_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
endif
AUTOCONF_CONF_ENV = EMACS="no"
AUTOCONF_DEPENDENCIES = uclibc microperl
$(eval $(call AUTOTARGETS,package,autoconf))
# autoconf for the host
AUTOCONF_HOST_DIR:=$(BUILD_DIR)/autoconf-$(AUTOCONF_VERSION)-host
AUTOCONF_VERSION:=2.63
AUTOCONF_SOURCE:=autoconf-$(AUTOCONF_VERSION).tar.bz2
AUTOCONF_SITE:=$(BR2_GNU_MIRROR)/autoconf
AUTOCONF_CAT:=$(BZCAT)
AUTOCONF_SRC_DIR:=$(TOOL_BUILD_DIR)/autoconf-$(AUTOCONF_VERSION)
AUTOCONF_DIR:=$(BUILD_DIR)/autoconf-$(AUTOCONF_VERSION)
AUTOCONF_HOST_DIR:=$(TOOL_BUILD_DIR)/autoconf-$(AUTOCONF_VERSION)-host
AUTOCONF_BINARY:=autoconf
AUTOCONF_TARGET_BINARY:=usr/bin/autoconf
AUTOCONF:=$(STAGING_DIR)/usr/bin/autoconf
# variables used by other packages
AUTOCONF:=$(HOST_DIR)/usr/bin/autoconf
AUTORECONF=$(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" $(HOST_DIR)/usr/bin/autoreconf -v -f -i -I "$(ACLOCAL_DIR)"
AUTORECONF=$(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" autoreconf -v -f -i -I "$(ACLOCAL_DIR)"
$(DL_DIR)/$(AUTOCONF_SOURCE):
$(call DOWNLOAD,$(AUTOCONF_SITE),$(AUTOCONF_SOURCE))
$(call DOWNLOAD,$(AUTOCONF_SITE),$(AUTOCONF_SOURCE))
$(STAMP_DIR)/host_autoconf_unpacked: $(DL_DIR)/$(AUTOCONF_SOURCE)
mkdir -p $(AUTOCONF_HOST_DIR)
$(INFLATE$(suffix $(AUTOCONF_SOURCE))) $< | \
$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(AUTOCONF_HOST_DIR) $(TAR_OPTIONS) -
toolchain/patch-kernel.sh $(AUTOCONF_HOST_DIR) package/autoconf/ \*.patch
autoconf-source: $(DL_DIR)/$(AUTOCONF_SOURCE)
$(AUTOCONF_SRC_DIR)/.unpacked: $(DL_DIR)/$(AUTOCONF_SOURCE)
$(AUTOCONF_CAT) $(DL_DIR)/$(AUTOCONF_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
$(CONFIG_UPDATE) $(AUTOCONF_SRC_DIR)
touch $@
$(STAMP_DIR)/host_autoconf_configured: $(STAMP_DIR)/host_autoconf_unpacked $(STAMP_DIR)/host_m4_installed $(STAMP_DIR)/host_libtool_installed
#############################################################
#
# autoconf for the target
#
#############################################################
$(AUTOCONF_DIR)/.configured: $(AUTOCONF_SRC_DIR)/.unpacked
mkdir -p $(AUTOCONF_DIR)
(cd $(AUTOCONF_DIR); rm -rf config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
EMACS="no" \
$(AUTOCONF_SRC_DIR)/configure \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libdir=/lib \
--libexecdir=/usr/lib \
--sysconfdir=/etc \
--datadir=/usr/share \
--localstatedir=/var \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
)
touch $@
$(AUTOCONF_DIR)/bin/$(AUTOCONF_BINARY): $(AUTOCONF_DIR)/.configured
$(MAKE1) -C $(AUTOCONF_DIR)
$(TARGET_DIR)/$(AUTOCONF_TARGET_BINARY): $(AUTOCONF_DIR)/bin/$(AUTOCONF_BINARY)
$(MAKE) \
prefix=$(TARGET_DIR)/usr \
exec_prefix=$(TARGET_DIR)/usr \
bindir=$(TARGET_DIR)/usr/bin \
sbindir=$(TARGET_DIR)/usr/sbin \
libexecdir=$(TARGET_DIR)/usr/lib \
datadir=$(TARGET_DIR)/usr/share \
sysconfdir=$(TARGET_DIR)/etc \
localstatedir=$(TARGET_DIR)/var \
libdir=$(TARGET_DIR)/usr/lib \
infodir=$(TARGET_DIR)/usr/share/info \
mandir=$(TARGET_DIR)/usr/share/man \
includedir=$(TARGET_DIR)/usr/include \
-C $(AUTOCONF_DIR) install
ifneq ($(BR2_HAVE_INFOPAGES),y)
rm -rf $(TARGET_DIR)/usr/share/info
endif
ifneq ($(BR2_HAVE_MANPAGES),y)
rm -rf $(TARGET_DIR)/usr/share/man
endif
rm -rf $(TARGET_DIR)/share/locale
rm -rf $(TARGET_DIR)/usr/share/doc
touch -c $@
autoconf: uclibc $(TARGET_DIR)/$(AUTOCONF_TARGET_BINARY)
autoconf-clean:
$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(AUTOCONF_DIR) uninstall
-$(MAKE) -C $(AUTOCONF_DIR) clean
autoconf-dirclean:
rm -rf $(AUTOCONF_DIR)
#############################################################
#
# autoconf for the host
#
#############################################################
$(AUTOCONF_HOST_DIR)/.configured: $(AUTOCONF_SRC_DIR)/.unpacked
mkdir -p $(AUTOCONF_HOST_DIR)
(cd $(AUTOCONF_HOST_DIR); rm -rf config.cache; \
$(HOST_CONFIGURE_OPTS) \
CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" \
./configure \
--prefix="$(HOST_DIR)/usr" \
--sysconfdir="$(HOST_DIR)/etc" \
--disable-static \
EMACS="no" \
$(AUTOCONF_SRC_DIR)/configure \
--prefix=$(STAGING_DIR)/usr \
)
touch $@
$(STAMP_DIR)/host_autoconf_compiled: $(STAMP_DIR)/host_autoconf_configured
$(MAKE) -C $(AUTOCONF_HOST_DIR)
touch $@
$(AUTOCONF_HOST_DIR)/bin/$(AUTOCONF_BINARY): $(AUTOCONF_HOST_DIR)/.configured
$(MAKE1) -C $(AUTOCONF_HOST_DIR)
$(STAMP_DIR)/host_autoconf_installed: $(STAMP_DIR)/host_autoconf_compiled
$(AUTOCONF): $(AUTOCONF_HOST_DIR)/bin/$(AUTOCONF_BINARY)
$(MAKE) -C $(AUTOCONF_HOST_DIR) install
touch $@
host-autoconf: $(STAMP_DIR)/host_autoconf_installed
host-autoconf: host-m4 host-libtool $(AUTOCONF)
host-autoconf-clean:
rm -f $(addprefix $(STAMP_DIR)/host_autoconf_,unpacked configured compiled installed)
-$(MAKE) -C $(AUTOCONF_HOST_DIR) uninstall
$(MAKE) CC=$(HOST_CC) -C $(AUTOCONF_HOST_DIR) uninstall
-$(MAKE) -C $(AUTOCONF_HOST_DIR) clean
host-autoconf-dirclean:
rm -rf $(AUTOCONF_HOST_DIR)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_AUTOCONF),y)
TARGETS+=autoconf
endif

View File

@@ -1,7 +1,5 @@
config BR2_PACKAGE_AUTOMAKE
bool "automake"
select BR2_PACKAGE_AUTOCONF
select BR2_PACKAGE_MICROPERL
help
Tool for automatically generating Makefile's for input to
configure scripts (made by autoconf).

View File

@@ -3,63 +3,139 @@
# automake
#
#############################################################
AUTOMAKE_VERSION = 1.10
AUTOMAKE_SOURCE = automake-$(AUTOMAKE_VERSION).tar.bz2
AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake
ifeq ($(BR2_ENABLE_DEBUG),y) # install-exec doesn't install aclocal stuff
AUTOMAKE_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
endif
AUTOMAKE_DEPENDENCIES = uclibc autoconf microperl
$(eval $(call AUTOTARGETS,package,automake))
# automake for the host
AUTOMAKE_HOST_DIR:=$(BUILD_DIR)/automake-$(AUTOMAKE_VERSION)-host
AUTOMAKE_VERSION:=1.10
AUTOMAKE_SOURCE:=automake-$(AUTOMAKE_VERSION).tar.bz2
AUTOMAKE_SITE:=$(BR2_GNU_MIRROR)/automake
AUTOMAKE_CAT:=$(BZCAT)
AUTOMAKE_SRC_DIR:=$(TOOL_BUILD_DIR)/automake-$(AUTOMAKE_VERSION)
AUTOMAKE_DIR:=$(BUILD_DIR)/automake-$(AUTOMAKE_VERSION)
AUTOMAKE_HOST_DIR:=$(TOOL_BUILD_DIR)/automake-$(AUTOMAKE_VERSION)-host
AUTOMAKE_BINARY:=automake
AUTOMAKE_TARGET_BINARY:=usr/bin/automake
AUTOMAKE:=$(STAGING_DIR)/usr/bin/automake
# variables used by other packages
AUTOMAKE:=$(HOST_DIR)/usr/bin/automake
ACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal
ACLOCAL = $(HOST_DIR)/usr/bin/aclocal -I $(ACLOCAL_DIR)
ACLOCAL = aclocal -I $(ACLOCAL_DIR)
$(DL_DIR)/$(AUTOMAKE_SOURCE):
$(call DOWNLOAD,$(AUTOMAKE_SITE),$(AUTOMAKE_SOURCE))
$(call DOWNLOAD,$(AUTOMAKE_SITE),$(AUTOMAKE_SOURCE))
$(STAMP_DIR)/host_automake_unpacked: $(DL_DIR)/$(AUTOMAKE_SOURCE)
mkdir -p $(AUTOMAKE_HOST_DIR)
$(INFLATE$(suffix $(AUTOMAKE_SOURCE))) $< | \
$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(AUTOMAKE_HOST_DIR) $(TAR_OPTIONS) -
toolchain/patch-kernel.sh $(AUTOMAKE_HOST_DIR) package/automake/ \*.patch
automake-source: $(DL_DIR)/$(AUTOMAKE_SOURCE)
$(AUTOMAKE_SRC_DIR)/.unpacked: $(DL_DIR)/$(AUTOMAKE_SOURCE)
$(AUTOMAKE_CAT) $(DL_DIR)/$(AUTOMAKE_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
$(CONFIG_UPDATE) $(AUTOMAKE_SRC_DIR)
touch $@
$(STAMP_DIR)/host_automake_configured: $(STAMP_DIR)/host_automake_unpacked $(STAMP_DIR)/host_autoconf_installed
#############################################################
#
# automake for the target
#
#############################################################
$(AUTOMAKE_DIR)/.configured: $(AUTOMAKE_SRC_DIR)/.unpacked
mkdir -p $(AUTOMAKE_DIR)
(cd $(AUTOMAKE_DIR); rm -rf config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
WANT_AUTOCONF=2.5 \
$(AUTOMAKE_SRC_DIR)/configure \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libdir=/lib \
--libexecdir=/usr/lib \
--sysconfdir=/etc \
--datadir=/usr/share \
--localstatedir=/var \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--includedir=/usr/include \
)
touch $@
$(AUTOMAKE_DIR)/$(AUTOMAKE_BINARY): $(AUTOMAKE_DIR)/.configured
$(MAKE) -C $(AUTOMAKE_DIR)
touch -c $@
$(TARGET_DIR)/$(AUTOMAKE_TARGET_BINARY): $(AUTOMAKE_DIR)/$(AUTOMAKE_BINARY)
$(MAKE) \
prefix=$(TARGET_DIR)/usr \
exec_prefix=$(TARGET_DIR)/usr \
bindir=$(TARGET_DIR)/usr/bin \
sbindir=$(TARGET_DIR)/usr/sbin \
libexecdir=$(TARGET_DIR)/usr/lib \
datadir=$(TARGET_DIR)/usr/share \
sysconfdir=$(TARGET_DIR)/etc \
localstatedir=$(TARGET_DIR)/var \
libdir=$(TARGET_DIR)/usr/lib \
infodir=$(TARGET_DIR)/usr/share/info \
mandir=$(TARGET_DIR)/usr/share/man \
includedir=$(TARGET_DIR)/usr/include \
-C $(AUTOMAKE_DIR) install
ifneq ($(BR2_HAVE_INFOPAGES),y)
rm -rf $(TARGET_DIR)/usr/share/info
endif
ifneq ($(BR2_HAVE_MANPAGES),y)
rm -rf $(TARGET_DIR)/usr/share/man
endif
rm -rf $(TARGET_DIR)/share/locale
rm -rf $(TARGET_DIR)/usr/share/doc
touch -c $@
automake: uclibc autoconf $(TARGET_DIR)/$(AUTOMAKE_TARGET_BINARY)
automake-clean:
$(MAKE) DESTDIR=$(TARGET_DIR) -C $(AUTOMAKE_DIR) uninstall
-$(MAKE) -C $(AUTOMAKE_DIR) clean
automake-dirclean:
rm -rf $(AUTOMAKE_DIR)
#############################################################
#
# automake for the host
#
#############################################################
$(AUTOMAKE_HOST_DIR)/.configured: $(AUTOMAKE_SRC_DIR)/.unpacked
mkdir -p $(AUTOMAKE_HOST_DIR)
(cd $(AUTOMAKE_HOST_DIR); rm -rf config.cache; \
$(HOST_CONFIGURE_OPTS) \
CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" \
./configure \
--prefix="$(HOST_DIR)/usr" \
--sysconfdir="$(HOST_DIR)/etc" \
--disable-static \
WANT_AUTOCONF=2.5 \
$(AUTOMAKE_SRC_DIR)/configure \
--prefix=$(STAGING_DIR)/usr \
)
touch $@
$(STAMP_DIR)/host_automake_compiled: $(STAMP_DIR)/host_automake_configured
$(AUTOMAKE_HOST_DIR)/$(AUTOMAKE_BINARY): $(AUTOMAKE_HOST_DIR)/.configured
$(MAKE) -C $(AUTOMAKE_HOST_DIR)
touch $@
touch -c $@
$(STAMP_DIR)/host_automake_installed: $(STAMP_DIR)/host_automake_compiled
$(AUTOMAKE): $(AUTOMAKE_HOST_DIR)/$(AUTOMAKE_BINARY)
$(MAKE) -C $(AUTOMAKE_HOST_DIR) install
mkdir -p $(STAGING_DIR)/usr/share/aclocal
touch $@
host-automake: $(STAMP_DIR)/host_automake_installed
host-automake: host-autoconf host-libtool $(AUTOMAKE)
host-automake-clean:
rm -f $(addprefix $(STAMP_DIR)/host_automake_,unpacked configured compiled installed)
-$(MAKE) -C $(AUTOMAKE_HOST_DIR) uninstall
$(MAKE) -C $(AUTOMAKE_HOST_DIR) uninstall
-$(MAKE) -C $(AUTOMAKE_HOST_DIR) clean
host-automake-dirclean:
rm -rf $(AUTOMAKE_HOST_DIR)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_AUTOMAKE),y)
TARGETS+=automake
endif

View File

@@ -1,5 +1,6 @@
config BR2_PACKAGE_AVAHI
bool "avahi"
select BR2_PACKAGE_LIBDAEMON
select BR2_PACKAGE_GETTEXT if BR2_ENABLE_LOCALE
select BR2_PACKAGE_LIBINTL if BR2_ENABLE_LOCALE
help
@@ -12,7 +13,6 @@ config BR2_PACKAGE_AVAHI_AUTOIPD
bool "IPv4LL network address configuration daemon"
default y
depends on BR2_PACKAGE_AVAHI
select BR2_PACKAGE_LIBDAEMON
help
Avahi-autoipd implements IPv4LL, "Dynamic Configuration of
IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for
@@ -24,7 +24,6 @@ config BR2_PACKAGE_AVAHI_AUTOIPD
config BR2_PACKAGE_AVAHI_DAEMON
bool "mDNS/DNS-SD daemon"
depends on BR2_PACKAGE_AVAHI
select BR2_PACKAGE_LIBDAEMON
select BR2_PACKAGE_EXPAT
help
The Avahi mDNS/DNS-SD daemon implementing Apple's ZeroConf

View File

@@ -10,13 +10,54 @@
# either version 2.1 of the License, or (at your option) any
# later version.
AVAHI_VERSION = 0.6.23
AVAHI_SOURCE = avahi-$(AVAHI_VERSION).tar.gz
AVAHI_SITE = http://www.avahi.org/download/
AVAHI_INSTALL_STAGING = YES
AVAHI_INSTALL_TARGET = YES
AVAHI_VERSION:=0.6.22
AVAHI_DIR:=$(BUILD_DIR)/avahi-$(AVAHI_VERSION)
AVAHI_SITE:=http://www.avahi.org/download/
AVAHI_SOURCE:=avahi-$(AVAHI_VERSION).tar.gz
AVAHI_CAT:=$(ZCAT)
AVAHI_CONF_ENV = ac_cv_func_strtod=yes \
AVAHI_TARGETS:=
ifeq ($(BR2_PACKAGE_AVAHI_AUTOIPD),y)
AVAHI_TARGETS+=$(TARGET_DIR)/usr/sbin/avahi-autoipd
endif
AVAHI_EXTRA_DEPS:=
ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y)
AVAHI_TARGETS+=$(TARGET_DIR)/usr/sbin/avahi-daemon
AVAHI_DISABLE_EXPAT:=--with-xml=expat
# depend on the exact library file instead of expat so avahi isn't always
# considered out-of-date
AVAHI_EXTRA_DEPS+=$(STAGING_DIR)/usr/lib/libexpat.so.1
else
AVAHI_DISABLE_EXPAT:=--disable-expat --with-xml=none
endif
ifeq ($(BR2_PACKAGE_DBUS),y)
AVAHI_DISABLE_DBUS:=
AVAHI_EXTRA_DEPS+=$(STAGING_DIR)/usr/bin/dbus-daemon
else
AVAHI_DISABLE_DBUS:=--disable-dbus
endif
$(DL_DIR)/$(AVAHI_SOURCE):
$(call DOWNLOAD,$(AVAHI_SITE),$(AVAHI_SOURCE))
avahi-source: $(DL_DIR)/$(AVAHI_SOURCE)
$(AVAHI_DIR)/.unpacked: $(DL_DIR)/$(AVAHI_SOURCE)
$(AVAHI_CAT) $(DL_DIR)/$(AVAHI_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
toolchain/patch-kernel.sh $(AVAHI_DIR) package/avahi/ \*.patch
touch $@
$(AVAHI_DIR)/.configured: $(AVAHI_DIR)/.unpacked $(AVAHI_EXTRA_DEPS)
(cd $(AVAHI_DIR) && rm -rf config.cache && PATH=$(TARGET_PATH) autoconf)
(cd $(AVAHI_DIR) && \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
ac_cv_func_strtod=yes \
ac_fsusage_space=yes \
fu_cv_sys_stat_statfs2_bsize=yes \
ac_cv_func_closedir_void=no \
@@ -69,90 +110,94 @@ AVAHI_CONF_ENV = ac_cv_func_strtod=yes \
ac_cv_func_working_mktime=yes \
jm_cv_func_working_re_compile_pattern=yes \
ac_use_included_regex=no \
avahi_cv_sys_cxx_works=yes
AVAHI_CONF_OPT = --localstatedir=/var \
./configure \
--target=$(GNU_TARGET_NAME) \
--host=$(REAL_GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
$(DISABLE_NLS) \
$(DISABLE_LARGEFILE) \
--disable-glib \
--disable-gobject \
--disable-qt3 \
--disable-qt4 \
--disable-gtk \
$(AVAHI_DISABLE_DBUS) \
$(AVAHI_DISABLE_EXPAT) \
--disable-gdbm \
--disable-python \
--disable-python-dbus \
--disable-pygtk \
--disable-mono \
--disable-monodoc \
--disable-stack-protector \
--with-distro=none \
$(if $(BR2_HAVE_MANPAGES),--enable,--disable)-manpages \
$(if $(BR2_PACKAGE_AVAHI_AUTOIPD),--enable,--disable)-autoipd \
--with-avahi-user=default \
--with-avahi-group=default \
--with-autoipd-user=default \
--with-autoipd-group=default
--with-autoipd-group=default \
)
touch $@
AVAHI_DEPENDENCIES = $(if $(BR2_PACKAGE_GETTEXT),gettext)
$(AVAHI_DIR)/.compiled: $(AVAHI_DIR)/.configured
$(MAKE) -C $(AVAHI_DIR) $(if $(BR2_ENABLE_LOCALE),LIBS=-lintl)
touch $@
ifneq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_AVAHI_AUTOIPD),)
AVAHI_DEPENDENCIES += libdaemon
else
AVAHI_CONF_OPT += --disable-libdaemon
endif
$(AVAHI_DIR)/.installed: $(AVAHI_DIR)/.compiled
mkdir -p $(STAGING_DIR)/etc/avahi
$(MAKE) DESTDIR=$(STAGING_DIR) -C $(AVAHI_DIR) install
touch $@
ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y)
AVAHI_DEPENDENCIES += expat
AVAHI_CONF_OPT += --with-xml=expat
else
AVAHI_CONF_OPT += --with-xml=none
endif
ifeq ($(BR2_PACKAGE_DBUS),y)
AVAHI_DEPENDENCIES += dbus
else
AVAHI_CONF_OPT += --disable-dbus
endif
ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
AVAHI_DEPENDENCIES += libglib2
else
AVAHI_CONF_OPT += --disable-glib --disable-gobject
endif
ifeq ($(BR2_PACKAGE_LIBGLADE),y)
AVAHI_DEPENDENCIES += libglade
else
AVAHI_CONF_OPT += --disable-gtk
endif
ifeq ($(BR2_PACKAGE_PYTHON),y)
AVAHI_CONF_ENV += am_cv_pathless_PYTHON=python \
am_cv_path_PYTHON=$(PYTHON_TARGET_BINARY) \
am_cv_python_version=$(PYTHON_VERSION) \
am_cv_python_platform=linux2 \
am_cv_python_pythondir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \
am_cv_python_pyexecdir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \
py_cv_mod_socket_=yes
AVAHI_DEPENDENCIES += libpython
AVAHI_CONF_OPT += --enable-python
else
AVAHI_CONF_OPT += --disable-python
endif
ifeq ($(BR2_PACKAGE_LIBINTL),y)
AVAHI_DEPENDENCIES += libintl
AVAHI_MAKE_OPT = LIBS=-lintl
endif
$(eval $(call AUTOTARGETS,package,avahi))
$(AVAHI_HOOK_POST_INSTALL):
rm -rf $(TARGET_DIR)/etc/init.d/avahi-*
ifeq ($(BR2_PACKAGE_AVAHI_AUTOIPD),y)
rm -rf $(TARGET_DIR)/etc/dhcp3/
$(INSTALL) -D -m 0755 package/avahi/busybox-udhcpc-default.script $(TARGET_DIR)/usr/share/udhcpc/default.script
$(INSTALL) -m 0755 package/avahi/S05avahi-setup.sh $(TARGET_DIR)/etc/init.d/
$(TARGET_DIR)/usr/sbin/avahi-autoipd: $(AVAHI_DIR)/.installed
mkdir -p $(addprefix $(TARGET_DIR),\
/etc/avahi /etc/init.d /var/lib /usr/share/udhcpc /usr/sbin)
cp -af $(STAGING_DIR)/etc/avahi/avahi-autoipd.action $(TARGET_DIR)/etc/avahi/
cp -af package/avahi/busybox-udhcpc-default.script $(TARGET_DIR)/usr/share/udhcpc/default.script
chmod 0755 $(TARGET_DIR)/usr/share/udhcpc/default.script
cp -af package/avahi/S05avahi-setup.sh $(TARGET_DIR)/etc/init.d/
cp $(STAGING_DIR)/usr/sbin/avahi-autoipd $@
rm -f $(TARGET_DIR)/var/lib/avahi-autoipd
ln -sf /tmp/avahi-autoipd $(TARGET_DIR)/var/lib/avahi-autoipd
$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $@
$(TARGET_DIR)/usr/sbin/avahi-daemon: $(AVAHI_DIR)/.installed
mkdir -p $(addprefix $(TARGET_DIR),\
/etc/avahi/services /usr/lib /usr/bin /usr/sbin)
cp -dpf $(STAGING_DIR)/usr/lib/libavahi-*.so* $(TARGET_DIR)/usr/lib/
$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/lib/libavahi-*.so*
cp -af $(STAGING_DIR)/etc/avahi/avahi-daemon.conf $(TARGET_DIR)/etc/avahi/
cp -af package/avahi/S50avahi-daemon $(TARGET_DIR)/etc/init.d/
ifeq ($(BR2_PACKAGE_DBUS),y)
cp -dpf $(STAGING_DIR)/usr/bin/avahi-* $(TARGET_DIR)/usr/bin
$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/avahi-*
mkdir -p $(TARGET_DIR)/etc/dbus-1/system.d/
cp -r $(STAGING_DIR)/etc/dbus-1/system.d/avahi-* \
$(TARGET_DIR)/etc/dbus-1/system.d/
endif
ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y)
$(INSTALL) -m 0755 package/avahi/S50avahi-daemon $(TARGET_DIR)/etc/init.d/
cp $(STAGING_DIR)/usr/sbin/avahi-daemon $@
$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $@
avahi: host-autoconf uclibc libdaemon $(if $(BR2_ENABLE_LOCALE),gettext libintl) $(AVAHI_TARGETS)
avahi-clean:
-$(MAKE) -C $(AVAHI_DIR) distclean
-rm -rf $(TARGET_DIR)/etc/avahi
-rm -f $(TARGET_DIR)/var/lib/avahi-autoipd
-rm -f $(TARGET_DIR)/etc/init.d/S*avahi*
-rm -f $(TARGET_DIR)/usr/sbin/avahi-*
-rm -f $(TARGET_DIR)/usr/bin/avahi-*
-rm -f $(TARGET_DIR)/usr/lib/libavahi-*
avahi-dirclean:
rm -rf $(AVAHI_DIR)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_AVAHI),y)
TARGETS+=avahi
endif
touch $@

View File

@@ -18,12 +18,6 @@ case "$1" in
if [ $? -eq 0 ]; then
/sbin/ifconfig $interface 0.0.0.0
fi
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -k $interface
fi
;;
leasefail|nak)
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -wD $interface --no-chroot
fi

View File

@@ -0,0 +1,77 @@
--- avahi/ltmain.sh.orig 2004-11-23 09:19:19.000000000 -0700
+++ avahi/ltmain.sh 2007-01-13 14:36:53.000000000 -0700
@@ -231,8 +231,9 @@
# line option must be used.
if test -z "$tagname"; then
$echo "$modename: unable to infer tagged configuration"
- $echo "$modename: specify a tag with \`--tag'" 1>&2
- exit $EXIT_FAILURE
+ $echo "$modename: defaulting to \`CC'"
+ $echo "$modename: if this is not correct, specify a tag with \`--tag'"
+# exit $EXIT_FAILURE
# else
# $echo "$modename: using $tagname tagged configuration"
fi
@@ -2279,8 +2280,14 @@
absdir="$abs_ladir"
libdir="$abs_ladir"
else
- dir="$libdir"
- absdir="$libdir"
+ # Adding 'libdir' from the .la file to our library search paths
+ # breaks crosscompilation horribly. We cheat here and don't add
+ # it, instead adding the path where we found the .la. -CL
+ dir="$abs_ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ #dir="$libdir"
+ #absdir="$libdir"
fi
else
if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
@@ -2754,6 +2761,16 @@
esac
if grep "^installed=no" $deplib > /dev/null; then
path="$absdir/$objdir"
+# This interferes with crosscompilation. -CL
+# else
+# eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+# if test -z "$libdir"; then
+# $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+# exit 1
+# fi
+# if test "$absdir" != "$libdir"; then
+# $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+# fi
else
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
if test -z "$libdir"; then
@@ -5141,6 +5158,10 @@
# Replace all uninstalled libtool libraries with the installed ones
newdependency_libs=
for deplib in $dependency_libs; do
+ # Replacing uninstalled with installed can easily break crosscompilation,
+ # since the installed path is generally the wrong architecture. -CL
+ newdependency_libs="$newdependency_libs $deplib"
+ continue
case $deplib in
*.la)
name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
@@ -5459,10 +5480,13 @@
# At present, this check doesn't affect windows .dll's that
# are installed into $libdir/../bin (currently, that works fine)
# but it's something to keep an eye on.
- if test "$inst_prefix_dir" = "$destdir"; then
- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
- exit $EXIT_FAILURE
- fi
+ #
+ # This breaks install into our staging area. -PB
+ #
+ # if test "$inst_prefix_dir" = "$destdir"; then
+ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ # exit $EXIT_FAILURE
+ # fi
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.

View File

@@ -20,7 +20,6 @@ $(DB_DIR)/.dist: $(DL_DIR)/$(DB_SOURCE)
touch $@
$(DB_DIR)/.configured: $(DB_DIR)/.dist
$(CONFIG_UPDATE) $(DB_DIR)/dist
(cd $(DB_DIR)/build_unix; rm -rf config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \

View File

@@ -3,7 +3,6 @@ comment "bind has no inherent support for AVR32"
config BR2_PACKAGE_BIND
bool "bind"
depends on BR2_LARGEFILE
help
BIND (Berkeley Internet Name Domain) is an implementation of
the Domain Name System (DNS) protocols and provides an openly
@@ -23,12 +22,3 @@ config BR2_PACKAGE_BIND
intended to be linked with applications requiring name service.
http://www.isc.org/sw/bind/
config BR2_PACKAGE_BIND_TOOLS
bool "Install tools"
depends on BR2_PACKAGE_BIND
help
Install tools (host, nslookup, dig, nsupdate)
comment "bind requires a toolchain with LARGEFILE support"
depends on !BR2_LARGEFILE

View File

@@ -0,0 +1,33 @@
---
lib/isc/unix/ifiter_ioctl.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
Index: bind-9.3.2/lib/isc/unix/ifiter_ioctl.c
===================================================================
--- bind-9.3.2.orig/lib/isc/unix/ifiter_ioctl.c
+++ bind-9.3.2/lib/isc/unix/ifiter_ioctl.c
@@ -17,11 +17,12 @@
/* $Id: ifiter_ioctl.c,v 1.19.2.5.2.17 2005/10/14 02:13:07 marka Exp $ */
+#include <string.h>
+
/*
* Obtain the list of network interfaces using the SIOCGLIFCONF ioctl.
* See netintro(4).
*/
-
#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
#ifdef ISC_PLATFORM_HAVEIF_LADDRCONF
#define lifc_len iflc_len
@@ -478,8 +479,8 @@
for (i = 0; i < 16; i++) {
unsigned char byte;
static const char hex[] = "0123456789abcdef";
- byte = ((index(hex, address[i * 2]) - hex) << 4) |
- (index(hex, address[i * 2 + 1]) - hex);
+ byte = ((strchr(hex, address[i * 2]) - hex) << 4) |
+ (strchr(hex, address[i * 2 + 1]) - hex);
addr6.s6_addr[i] = byte;
}
iter->current.af = AF_INET6;

View File

@@ -0,0 +1,11 @@
--- bind-9.3.2/lib/dns/Makefile.in
+++ bind-9.3.2/lib/dns/Makefile.in
@@ -156,7 +156,7 @@
./gen -s ${srcdir} > code.h
gen: gen.c
- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
+ cc ${ALL_CFLAGS} -o $@ ${srcdir}/gen.c
rbtdb64.@O@: rbtdb.c

View File

@@ -1,14 +0,0 @@
diff -Nura bind-9.5.1-P1/lib/dns/Makefile.in bind-9.5.1-P1.gencross/lib/dns/Makefile.in
--- bind-9.5.1-P1/lib/dns/Makefile.in 2007-09-11 22:09:08.000000000 -0300
+++ bind-9.5.1-P1.gencross/lib/dns/Makefile.in 2009-03-04 16:35:23.000000000 -0200
@@ -160,8 +160,8 @@
./gen -s ${srcdir} > code.h
gen: gen.c
- ${BUILD_CC} ${BUILD_CFLAGS} -I${top_srcdir}/lib/isc/include \
- ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c ${BUILD_LIBS}
+ ${HOSTCC} ${HOST_CFLAGS} -I${top_srcdir}/lib/isc/include \
+ ${HOST_LDFLAGS} -o $@ ${srcdir}/gen.c
rbtdb64.@O@: rbtdb.c

View File

@@ -1,23 +0,0 @@
diff -Nura bind-9.5.1-P1/lib/isc/unix/ifiter_ioctl.c bind-9.5.1-P1.nosusv3/lib/isc/unix/ifiter_ioctl.c
--- bind-9.5.1-P1/lib/isc/unix/ifiter_ioctl.c 2007-08-30 03:02:28.000000000 -0300
+++ bind-9.5.1-P1.nosusv3/lib/isc/unix/ifiter_ioctl.c 2009-03-04 16:31:20.000000000 -0200
@@ -17,6 +17,8 @@
/* $Id: ifiter_ioctl.c,v 1.58 2007/08/30 06:02:28 marka Exp $ */
+#include <string.h>
+
/*! \file
* \brief
* Obtain the list of network interfaces using the SIOCGLIFCONF ioctl.
@@ -479,8 +481,8 @@
for (i = 0; i < 16; i++) {
unsigned char byte;
static const char hex[] = "0123456789abcdef";
- byte = ((index(hex, address[i * 2]) - hex) << 4) |
- (index(hex, address[i * 2 + 1]) - hex);
+ byte = ((strchr(hex, address[i * 2]) - hex) << 4) |
+ (strchr(hex, address[i * 2 + 1]) - hex);
addr6.s6_addr[i] = byte;
}
iter->current.af = AF_INET6;

View File

@@ -3,46 +3,99 @@
# bind
#
#############################################################
BIND_VERSION = 9.5.1-P3
BIND_SOURCE = bind-$(BIND_VERSION).tar.gz
BIND_SITE = ftp://ftp.isc.org/isc/bind9/$(BIND_VERSION)
BIND_LIBTOOL_PATCH = NO
BIND_DEPENDENCIES = uclibc
BIND_INSTALL_STAGING = NO
BIND_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
BIND_TARGET_SBINS = lwresd named named-checkconf named-checkzone
BIND_TARGET_SBINS += named-compilezone rndc rndc-confgen
BIND_TARGET_SBINS += dnssec-keygen dnssec-signzone
BIND_TARGET_BINS = dig host nslookup nsupdate
BIND_TARGET_LIBS = libbind9.* libdns.* libisccc.* libisccfg.* libisc.* liblwres.*
BIND_CONF_ENV = BUILD_CC="$(TARGET_CC)" \
BUILD_CFLAGS="$(TARGET_CFLAGS)"
BIND_CONF_OPT = $(DISABLE_IPV6) \
--sysconfdir=/etc \
--localstatedir=/var \
--with-randomdev=/dev/urandom \
--with-openssl=no \
--with-libxml2=no \
--with-pic \
--with-libtool \
--disable-epoll \
--disable-threads
BIND_VERSION:=9.3.2
BIND_SOURCE:=bind-$(BIND_VERSION).tar.gz
BIND_SITE:=ftp://ftp.isc.org/isc/bind9/$(BIND_VERSION)
BIND_DIR1:=$(TOOL_BUILD_DIR)/bind-$(BIND_VERSION)
BIND_DIR2:=$(BUILD_DIR)/bind-$(BIND_VERSION)
BIND_CAT:=$(ZCAT)
BIND_BINARY:=bin/named/named
BIND_TARGET_BINARY:=usr/sbin/named
$(eval $(call AUTOTARGETS,package,bind))
$(DL_DIR)/$(BIND_SOURCE):
$(call DOWNLOAD,$(BIND_SITE),$(BIND_SOURCE))
$(BIND_HOOK_POST_INSTALL):
rm -f $(TARGET_DIR)/usr/bin/isc-config.sh
ifneq ($(BR2_PACKAGE_BIND_TOOLS),y)
rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_BINS))
endif
$(INSTALL) -m 0755 -D package/bind/bind.sysvinit $(TARGET_DIR)/etc/init.d/S81named
bind-source: $(DL_DIR)/$(BIND_SOURCE)
#############################################################
#
# build bind for use on the target system
#
#############################################################
$(BIND_DIR2)/.unpacked: $(DL_DIR)/$(BIND_SOURCE)
$(BIND_CAT) $(DL_DIR)/$(BIND_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
toolchain/patch-kernel.sh $(BIND_DIR2) package/bind/ bind\*.patch
touch $@
$(BIND_TARGET_UNINSTALL):
$(call MESSAGE,"Uninstalling")
rm -rf $(addprefix $(TARGET_DIR)/usr/sbin/, $(BIND_TARGET_SBINS))
rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_BINS))
rm -rf $(addprefix $(TARGET_DIR)/usr/lib/, $(BIND_TARGET_LIBS))
rm -f $(TARGET_DIR)/etc/init.d/S81named
rm -f $(BIND_TARGET_INSTALL_TARGET) $(BIND_HOOK_POST_INSTALL)
$(BIND_DIR2)/Makefile: $(BIND_DIR2)/.unpacked
(cd $(BIND_DIR2); rm -rf config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
./configure \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
--libdir=/lib \
--libexecdir=/usr/lib \
--libdir=/lib \
--includedir=/include \
--sysconfdir=/etc \
--localstatedir=/var \
--without-openssl \
--with-randomdev=/dev/random \
$(DISABLE_IPV6) \
--with-libtool \
--with-pic \
)
$(BIND_DIR2)/$(BIND_BINARY): $(BIND_DIR2)/Makefile
$(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 -C $(BIND_DIR2)
touch -c $@
#############################################################
#
# install bind binaries
#
#############################################################
$(TARGET_DIR)/$(BIND_TARGET_BINARY): $(BIND_DIR2)/$(BIND_BINARY)
$(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 MAKEDEFS="INSTALL_DATA=true" \
DESTDIR=$(TARGET_DIR) -C $(BIND_DIR2)/bin install
cd $(TARGET_DIR)/usr/man; rmdir --ignore-fail-on-non-empty man8 man5 `pwd`
$(INSTALL) -m 0755 -D package/bind/bind.sysvinit $(TARGET_DIR)/etc/init.d/S81named
bind-bin: $(TARGET_DIR)/$(BIND_TARGET_BINARY) bind-lib
#############################################################
#
# install bind libraries
#
#############################################################
$(STAGING_DIR)/lib/libdns.so: $(BIND_DIR2)/$(BIND_BINARY)
$(MAKE) $(TARGET_CONFIGURE_OPTS) -j1 DESTDIR=$(STAGING_DIR) -C $(BIND_DIR2)/lib install
$(TARGET_DIR)/lib/libdns.so: $(STAGING_DIR)/lib/libdns.so
mkdir -p $(TARGET_DIR)/lib
cd $(STAGING_DIR)/lib; \
cp -a libdns*so* libisc*so* libbind9*so* \
liblwres*so* $(TARGET_DIR)/lib
bind-lib: $(STAGING_DIR)/lib/libdns.so $(TARGET_DIR)/lib/libdns.so
bind: uclibc bind-bin bind-lib
bind-clean:
-$(MAKE) -C $(BIND_DIR2) clean
bind-dirclean:
rm -rf $(BIND_DIR2)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_BIND),y)
TARGETS+=bind
endif

View File

@@ -1,7 +1,6 @@
config BR2_PACKAGE_BLACKBOX
bool "blackbox"
depends on BR2_PACKAGE_XORG7
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_PACKAGE_XORG||BR2_PACKAGE_XORG7
help
Blackbox is a fast, lightweight window manager for the X
Window System.

View File

@@ -1,106 +0,0 @@
diff -Naupr blackbox-0.70.1.orig/lib/Image.cc blackbox-0.70.1/lib/Image.cc
--- blackbox-0.70.1.orig/lib/Image.cc 2005-04-08 17:41:09.000000000 +0200
+++ blackbox-0.70.1/lib/Image.cc 2008-02-24 08:31:28.000000000 +0100
@@ -42,8 +42,9 @@
#include <assert.h>
#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
// #define COLORTABLE_DEBUG
// #define MITSHM_DEBUG
diff -Naupr blackbox-0.70.1.orig/lib/Resource.cc blackbox-0.70.1/lib/Resource.cc
--- blackbox-0.70.1.orig/lib/Resource.cc 2005-04-06 23:16:50.000000000 +0200
+++ blackbox-0.70.1/lib/Resource.cc 2008-02-24 08:33:11.000000000 +0100
@@ -28,7 +28,8 @@
#include <X11/Xlib.h>
#include <X11/Xresource.h>
-#include <stdio.h>
+#include <cstdio>
+#include <cstring>
bt::Resource::Resource(void)
diff -Naupr blackbox-0.70.1.orig/lib/XDG.cc blackbox-0.70.1/lib/XDG.cc
--- blackbox-0.70.1.orig/lib/XDG.cc 2005-04-06 16:04:38.000000000 +0200
+++ blackbox-0.70.1/lib/XDG.cc 2008-02-24 08:34:11.000000000 +0100
@@ -25,7 +25,8 @@
#include "Util.hh"
#include "XDG.hh"
-#include <stdlib.h>
+#include <cstdlib>
+#include <algorithm>
// make sure directory names end with a slash
diff -Naupr blackbox-0.70.1.orig/src/BlackboxResource.cc blackbox-0.70.1/src/BlackboxResource.cc
--- blackbox-0.70.1.orig/src/BlackboxResource.cc 2005-10-18 09:34:46.000000000 +0200
+++ blackbox-0.70.1/src/BlackboxResource.cc 2008-02-24 08:34:49.000000000 +0100
@@ -33,6 +33,8 @@
#include <X11/Xutil.h>
#include <X11/cursorfont.h>
+#include <cstring>
+
BlackboxResource::BlackboxResource(const std::string& rc): rc_file(rc) {
screen_resources = 0;
diff -Naupr blackbox-0.70.1.orig/src/main.cc blackbox-0.70.1/src/main.cc
--- blackbox-0.70.1.orig/src/main.cc 2005-01-03 10:42:57.000000000 +0100
+++ blackbox-0.70.1/src/main.cc 2008-02-24 08:37:16.000000000 +0100
@@ -34,7 +34,8 @@
#include "blackbox.hh"
#include "../version.h"
-#include <stdio.h>
+#include <cstdio>
+#include <cstring>
static void showHelp(int exitval) {
diff -Naupr blackbox-0.70.1.orig/src/Screen.cc blackbox-0.70.1/src/Screen.cc
--- blackbox-0.70.1.orig/src/Screen.cc 2005-10-18 10:07:22.000000000 +0200
+++ blackbox-0.70.1/src/Screen.cc 2008-02-24 08:35:46.000000000 +0100
@@ -45,8 +45,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <assert.h>
-#include <ctype.h>
#include <dirent.h>
+#include <cctype>
+#include <cstring>
static bool running = true;
diff -Naupr blackbox-0.70.1.orig/src/ScreenResource.cc blackbox-0.70.1/src/ScreenResource.cc
--- blackbox-0.70.1.orig/src/ScreenResource.cc 2005-04-13 07:54:08.000000000 +0200
+++ blackbox-0.70.1/src/ScreenResource.cc 2008-02-24 08:36:31.000000000 +0100
@@ -33,6 +33,8 @@
#include <assert.h>
+#include <cstring>
+
static const int iconify_width = 9;
static const int iconify_height = 9;
diff -Naupr blackbox-0.70.1.orig/util/bsetroot.cc blackbox-0.70.1/util/bsetroot.cc
--- blackbox-0.70.1.orig/util/bsetroot.cc 2005-03-15 08:01:37.000000000 +0100
+++ blackbox-0.70.1/util/bsetroot.cc 2008-02-24 08:38:41.000000000 +0100
@@ -30,7 +30,9 @@
#include <cctype>
#include <X11/Xatom.h>
-#include <stdio.h>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
// ignore all X errors

View File

@@ -14,6 +14,6 @@ BLACKBOX_INSTALL_TARGET:=YES
BLACKBOX_CONF_OPT:=--x-includes=$(STAGING_DIR)/usr/include/X11 \
--x-libraries=$(STAGING_DIR)/usr/lib
BLACKBOX_DEPENDENCIES:=uclibc xserver_xorg-server
BLACKBOX_DEPENDENCIES:=uclibc $(XSERVER)
$(eval $(call AUTOTARGETS,package,blackbox))

View File

@@ -1,5 +0,0 @@
config BR2_PACKAGE_BMON
bool "bmon"
select BR2_PACKAGE_NCURSES
help
Linux bandwidth monitor

View File

@@ -1,36 +0,0 @@
diff -ru bmon-2.1.0~/src/out_audio.c bmon-2.1.0/src/out_audio.c
--- bmon-2.1.0~/src/out_audio.c 2008-07-26 20:06:24.000000000 +0200
+++ bmon-2.1.0/src/out_audio.c 2008-07-26 20:09:42.000000000 +0200
@@ -141,7 +141,7 @@
.om_draw = audio_draw,
.om_set_opts = audio_set_opts,
.om_probe = audio_probe,
- .om_shutdown audio_shutdown,
+ .om_shutdown = audio_shutdown
};
static void __init audio_init(void)
diff -ru bmon-2.1.0~/src/out_db.c bmon-2.1.0/src/out_db.c
--- bmon-2.1.0~/src/out_db.c 2008-07-26 20:06:24.000000000 +0200
+++ bmon-2.1.0/src/out_db.c 2008-07-26 20:07:44.000000000 +0200
@@ -679,7 +679,7 @@
.om_draw = db_draw,
.om_set_opts = db_set_opts,
.om_probe = db_probe,
- .om_shutdown db_shutdown,
+ .om_shutdown = db_shutdown,
};
static void __init db_init(void)
diff -ru bmon-2.1.0~/src/out_xml_event.c bmon-2.1.0/src/out_xml_event.c
--- bmon-2.1.0~/src/out_xml_event.c 2008-07-26 20:06:24.000000000 +0200
+++ bmon-2.1.0/src/out_xml_event.c 2008-07-26 20:09:42.000000000 +0200
@@ -127,7 +127,7 @@
.om_draw = xml_event_draw,
.om_set_opts = xml_event_set_opts,
.om_probe = xml_event_probe,
- .om_shutdown xml_event_shutdown,
+ .om_shutdown = xml_event_shutdown
};
static void __init xml_event_init(void)

View File

@@ -1,24 +0,0 @@
diff -Nura bmon/configure bmon.libnl/configure
--- bmon/configure 2005-04-05 12:01:33.000000000 -0300
+++ bmon.libnl/configure 2009-06-10 16:10:52.000000000 -0300
@@ -7327,13 +7327,13 @@
echo "${ECHO_T}$ac_cv_lib_nl_nl_connect" >&6
if test $ac_cv_lib_nl_nl_connect = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_NL "1"
-_ACEOF
-
- LIBNL="-lnl"
- NL="Yes"
+ case ${target_os} in
+ *linux*)
+ echo
+ echo "*** Warning: Building bmon on Linux w/o libnl ***"
+ echo
+ ;;
+ esac
else

View File

@@ -1,12 +0,0 @@
diff -Nura bmon/GNUmakefile bmon.nostrip/GNUmakefile
--- bmon/GNUmakefile 2005-04-05 12:01:33.000000000 -0300
+++ bmon.nostrip/GNUmakefile 2009-06-10 16:12:04.000000000 -0300
@@ -50,7 +50,7 @@
install:
./install-sh -d -m 0755 $(DESTDIR)$(prefix)/bin
./install-sh -d -m 0755 $(DESTDIR)$(mandir)/man1
- ./install-sh -c -s -m 0755 src/bmon $(DESTDIR)$(prefix)/bin
+ ./install-sh -c -m 0755 src/bmon $(DESTDIR)$(prefix)/bin
./install-sh -c -m 0644 man/bmon.1 $(DESTDIR)$(mandir)/man1
show: Makefile.opts

View File

@@ -1,18 +0,0 @@
#############################################################
#
# bmon
#
#############################################################
BMON_VERSION = 2.1.0
BMON_SOURCE = bmon-$(BMON_VERSION).tar.gz
BMON_SITE = http://distfiles.gentoo.org/distfiles
BMON_DEPENDENCIES = ncurses uclibc
BMON_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
$(eval $(call AUTOTARGETS,package,bmon))
$(BMON_TARGET_UNINSTALL):
$(call MESSAGE,"Uninstalling")
rm -f $(TARGET_DIR)/usr/bin/bmon
rm -f $(BMON_TARGET_INSTALL_TARGET) $(BMON_HOOK_POST_INSTALL)

View File

@@ -12,20 +12,44 @@ config BR2_PACKAGE_BUSYBOX
choice
prompt "BusyBox Version"
depends on BR2_PACKAGE_BUSYBOX
default BR2_BUSYBOX_VERSION_1_14_X
default BR2_BUSYBOX_VERSION_1_13_X
help
Select the version of BusyBox you wish to use.
config BR2_BUSYBOX_VERSION_1_2_2_1
bool "BusyBox 1.2.2.1"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_6_1
bool "BusyBox 1.6.1"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_7_X
bool "BusyBox 1.7.x"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_8_X
bool "BusyBox 1.8.x"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_9_X
bool "BusyBox 1.9.x"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_10_X
bool "BusyBox 1.10.x"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_11_X
bool "BusyBox 1.11.x"
depends on BR2_DEPRECATED
config BR2_BUSYBOX_VERSION_1_12_X
bool "BusyBox 1.12.x"
depends on BR2_DEPRECATED
depends on BR2_DEPRECATED || BR2_RECENT
config BR2_BUSYBOX_VERSION_1_13_X
bool "BusyBox 1.13.x"
depends on BR2_DEPRECATED || BR2_RECENT
config BR2_BUSYBOX_VERSION_1_14_X
bool "BusyBox 1.14.x"
config BR2_PACKAGE_BUSYBOX_SNAPSHOT
bool "daily snapshot"
@@ -34,9 +58,15 @@ endchoice
config BR2_BUSYBOX_VERSION
string
default "1.2.2.1" if BR2_BUSYBOX_VERSION_1_2_2_1
default "1.6.1" if BR2_BUSYBOX_VERSION_1_6_1
default "1.7.5" if BR2_BUSYBOX_VERSION_1_7_X
default "1.8.3" if BR2_BUSYBOX_VERSION_1_8_X
default "1.9.2" if BR2_BUSYBOX_VERSION_1_9_X
default "1.10.4" if BR2_BUSYBOX_VERSION_1_10_X
default "1.11.3" if BR2_BUSYBOX_VERSION_1_11_X
default "1.12.4" if BR2_BUSYBOX_VERSION_1_12_X
default "1.13.4" if BR2_BUSYBOX_VERSION_1_13_X
default "1.14.3" if BR2_BUSYBOX_VERSION_1_14_X
default "1.13.2" if BR2_BUSYBOX_VERSION_1_13_X
config BR2_PACKAGE_BUSYBOX_FULLINSTALL
bool "Run BusyBox's own full installation"
@@ -55,9 +85,15 @@ config BR2_PACKAGE_BUSYBOX_CONFIG
string "BusyBox configuration file to use?"
depends on BR2_PACKAGE_BUSYBOX
default "target/device/x86/i386/busybox.config" if BR2_PACKAGE_BUSYBOX_SNAPSHOT
default "package/busybox/busybox-1.2.2.1.config" if BR2_BUSYBOX_VERSION_1_2_2_1
default "package/busybox/busybox-1.6.0.config" if BR2_BUSYBOX_VERSION_1_6_1
default "package/busybox/busybox-1.6.0.config" if BR2_BUSYBOX_VERSION_1_7_X
default "package/busybox/busybox-1.6.0.config" if BR2_BUSYBOX_VERSION_1_8_X
default "package/busybox/busybox-1.6.0.config" if BR2_BUSYBOX_VERSION_1_9_X
default "package/busybox/busybox-1.6.0.config" if BR2_BUSYBOX_VERSION_1_10_X
default "package/busybox/busybox-1.11.x.config" if BR2_BUSYBOX_VERSION_1_11_X
default "package/busybox/busybox-1.11.x.config" if BR2_BUSYBOX_VERSION_1_12_X
default "package/busybox/busybox-1.13.x.config" if BR2_BUSYBOX_VERSION_1_13_X
default "package/busybox/busybox-1.13.x.config" if BR2_BUSYBOX_VERSION_1_14_X
help
Some people may wish to use their own modified BusyBox configuration
file, and will specify their config file location with this option.

View File

@@ -0,0 +1,121 @@
--- busybox-1.13.2/modutils/depmod.c Sun Nov 9 18:28:03 2008
+++ busybox-1.13.2-depmod/modutils/depmod.c Mon Jan 12 23:12:59 2009
@@ -33,7 +33,7 @@
enum {
ARG_a = (1<<0), /* All modules, ignore mods in argv */
ARG_A = (1<<1), /* Only emit .ko that are newer than modules.dep file */
- ARG_b = (1<<2), /* not /lib/modules/$(uname -r)/ but this base-dir */
+ ARG_b = (1<<2), /* base directory when modules are in staging area */
ARG_e = (1<<3), /* with -F, print unresolved symbols */
ARG_F = (1<<4), /* System.map that contains the symbols */
ARG_n = (1<<5) /* dry-run, print to stdout only */
@@ -57,7 +57,7 @@
*first = info;
info->dnext = info->dprev = info;
- info->name = xstrdup(fname);
+ info->name = xasprintf("/%s", fname);
info->modname = filename2modname(fname, NULL);
for (ptr = image; ptr < image + len - 10; ptr++) {
if (strncmp(ptr, "depends=", 8) == 0) {
@@ -123,44 +123,61 @@
}
}
+static void xfreopen_write(const char *file, FILE *f)
+{
+ if (freopen(file, "w", f) == NULL)
+ bb_perror_msg_and_die("can't open '%s'", file);
+}
+
int depmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int depmod_main(int argc UNUSED_PARAM, char **argv)
{
module_info *modules = NULL, *m, *dep;
- char *moddir_base = (char *)CONFIG_DEFAULT_MODULES_DIR;
+ const char *moddir_base = "/";
+ char *moddir, *version;
+ struct utsname uts;
int tmp;
getopt32(argv, "aAb:eF:n", &moddir_base, NULL);
argv += optind;
/* goto modules location */
+ xchdir(moddir_base);
/* If a version is provided, then that kernel version's module directory
* is used, rather than the current kernel version (as returned by
* "uname -r"). */
- xchdir(moddir_base);
- if (*argv && (sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3)) {
- xchdir(*argv++);
+ if (*argv && sscanf(*argv, "%d.%d.%d", &tmp, &tmp, &tmp) == 3) {
+ version = *argv++;
} else {
- struct utsname uts;
uname(&uts);
- xchdir(uts.release);
+ version = uts.release;
}
- /* If no modules are given on the command-line, -a is on per default. */
- option_mask32 |= *argv == NULL;
+ moddir = concat_path_file(&CONFIG_DEFAULT_MODULES_DIR[1], version);
/* Scan modules */
- moddir_base = xrealloc_getcwd_or_warn(NULL);
- do {
- recursive_action((option_mask32 & ARG_a) ? moddir_base : *argv,
- ACTION_RECURSE, parse_module, NULL, &modules, 0);
- } while (!(option_mask32 & ARG_a) && *(++argv));
+ if (*argv) {
+ char *modfile;
+ struct stat sb;
+ do {
+ modfile = concat_path_file(moddir, *argv);
+ xstat(modfile, &sb);
+ parse_module(modfile, &sb, &modules, 0);
+ free(modfile);
+ } while (*(++argv));
+ } else {
+ recursive_action(moddir, ACTION_RECURSE,
+ parse_module, NULL, &modules, 0);
+ }
+
+ /* Prepare for writing out the dep files */
+ xchdir(moddir);
if (ENABLE_FEATURE_CLEAN_UP)
- free(moddir_base);
+ free(moddir);
/* Generate dependency and alias files */
if (!(option_mask32 & ARG_n))
- freopen(CONFIG_DEFAULT_DEPMOD_FILE, "w", stdout);
+ xfreopen_write(CONFIG_DEFAULT_DEPMOD_FILE, stdout);
for (m = modules; m != NULL; m = m->next) {
printf("%s:", m->name);
@@ -174,12 +191,12 @@
dep->dprev->dnext = dep->dnext;
dep->dnext = dep->dprev = dep;
}
- puts("");
+ bb_putchar('\n');
}
#if ENABLE_FEATURE_MODUTILS_ALIAS
if (!(option_mask32 & ARG_n))
- freopen("modules.alias", "w", stdout);
+ xfreopen_write("modules.alias", stdout);
for (m = modules; m != NULL; m = m->next) {
while (m->aliases) {
printf("alias %s %s\n",
@@ -190,7 +207,7 @@
#endif
#if ENABLE_FEATURE_MODUTILS_SYMBOLS
if (!(option_mask32 & ARG_n))
- freopen("modules.symbols", "w", stdout);
+ xfreopen_write("modules.symbols", stdout);
for (m = modules; m != NULL; m = m->next) {
while (m->symbols) {
printf("alias symbol:%s %s\n",

View File

@@ -0,0 +1,50 @@
--- busybox-1.13.2/init/init.c Wed Dec 31 04:06:45 2008
+++ busybox-1.13.2-init/init/init.c Thu Jan 29 03:02:13 2009
@@ -671,15 +671,14 @@
*/
static void parse_inittab(void)
{
+#if ENABLE_FEATURE_USE_INITTAB
char *token[4];
- /* order must correspond to SYSINIT..RESTART constants */
- static const char actions[] ALIGN1 =
- "sysinit\0""respawn\0""askfirst\0""wait\0""once\0"
- "ctrlaltdel\0""shutdown\0""restart\0";
+ parser_t *parser = config_open2("/etc/inittab", fopen_for_read);
- parser_t *parser = config_open2(INITTAB, fopen_for_read);
- /* No inittab file -- set up some default behavior */
- if (parser == NULL) {
+ if (parser == NULL)
+#endif
+ {
+ /* No inittab file -- set up some default behavior */
/* Reboot on Ctrl-Alt-Del */
new_init_action(CTRLALTDEL, "reboot", "");
/* Umount all filesystems on halt/reboot */
@@ -699,11 +698,17 @@
new_init_action(SYSINIT, INIT_SCRIPT, "");
return;
}
+
+#if ENABLE_FEATURE_USE_INITTAB
/* optional_tty:ignored_runlevel:action:command
* Delims are not to be collapsed and need exactly 4 tokens
*/
while (config_read(parser, token, 4, 0, "#:",
PARSE_NORMAL & ~(PARSE_TRIM | PARSE_COLLAPSE))) {
+ /* order must correspond to SYSINIT..RESTART constants */
+ static const char actions[] ALIGN1 =
+ "sysinit\0""respawn\0""askfirst\0""wait\0""once\0"
+ "ctrlaltdel\0""shutdown\0""restart\0";
int action;
char *tty = token[0];
@@ -727,6 +732,7 @@
parser->lineno);
}
config_close(parser);
+#endif
}
#if ENABLE_FEATURE_USE_INITTAB

View File

@@ -0,0 +1,39 @@
--- busybox-1.13.2/testsuite/mdev.tests Sun Nov 9 18:28:19 2008
+++ busybox-1.13.2-mdev/testsuite/mdev.tests Mon Jan 12 08:59:15 2009
@@ -111,6 +111,22 @@
# continuing to use directory structure from prev test
rm -rf mdev.testdir/dev/*
+echo "sda 0:0 644 =block/ @echo @echo TEST" >mdev.testdir/etc/mdev.conf
+testing "mdev move and command" \
+ "env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1;
+ ls -lnR mdev.testdir/dev | $FILTER_LS2" \
+"\
+@echo TEST
+mdev.testdir/dev:
+drwxr-xr-x 2 0 0 block
+
+mdev.testdir/dev/block:
+brw-r--r-- 1 0 0 sda
+" \
+ "" ""
+
+# continuing to use directory structure from prev test
+rm -rf mdev.testdir/dev/*
echo "@8,0 :1 644" >mdev.testdir/etc/mdev.conf
testing "mdev #maj,min and no explicit uid" \
"env - PATH=$PATH ACTION=add DEVPATH=/block/sda chroot mdev.testdir /mdev 2>&1;
--- busybox-1.13.2/util-linux/mdev.c Sun Nov 9 18:28:22 2008
+++ busybox-1.13.2-mdev/util-linux/mdev.c Mon Jan 12 08:59:15 2009
@@ -179,8 +179,9 @@
unsigned i, n;
#endif
char *a = val;
- s = strchr(val, ' ');
- val = (s && s[1]) ? s+1 : NULL;
+ s = strchrnul(val, ' ');
+ val = (s[0] && s[1]) ? s+1 : NULL;
+ s[0] = '\0';
#if ENABLE_FEATURE_MDEV_RENAME_REGEXP
/* substitute %1..9 with off[1..9], if any */
n = 0;

View File

@@ -0,0 +1,99 @@
--- busybox-1.13.2/modutils/modutils-24.c Sat Nov 29 07:48:56 2008
+++ busybox-1.13.2-modprobe/modutils/modutils-24.c Sun Feb 1 00:08:26 2009
@@ -2150,7 +2150,7 @@
sec->name = name;
sec->idx = newidx;
if (size)
- sec->contents = xmalloc(size);
+ sec->contents = xzalloc(size);
obj_insert_section_load_order(f, sec);
@@ -2165,7 +2165,7 @@
int newidx = f->header.e_shnum++;
struct obj_section *sec;
- f->sections = xrealloc(f->sections, (newidx + 1) * sizeof(sec));
+ f->sections = xrealloc_vector(f->sections, 2, newidx);
f->sections[newidx] = sec = arch_new_section();
sec->header.sh_type = SHT_PROGBITS;
@@ -2175,7 +2175,7 @@
sec->name = name;
sec->idx = newidx;
if (size)
- sec->contents = xmalloc(size);
+ sec->contents = xzalloc(size);
sec->load_next = f->load_order;
f->load_order = sec;
@@ -2571,8 +2571,7 @@
/* Collect the modules' symbols. */
if (nmod) {
- ext_modules = modules = xmalloc(nmod * sizeof(*modules));
- memset(modules, 0, nmod * sizeof(*modules));
+ ext_modules = modules = xzalloc(nmod * sizeof(*modules));
for (i = 0, mn = module_names, m = modules;
i < nmod; ++i, ++m, mn += strlen(mn) + 1) {
struct new_module_info info;
@@ -2652,13 +2651,14 @@
}
-static void new_create_this_module(struct obj_file *f, const char *m_name)
+static void new_create_this_module(struct obj_file *f, const char *m_name)
{
struct obj_section *sec;
sec = obj_create_alloced_section_first(f, ".this", tgt_sizeof_long,
sizeof(struct new_module));
- memset(sec->contents, 0, sizeof(struct new_module));
+ /* done by obj_create_alloced_section_first: */
+ /*memset(sec->contents, 0, sizeof(struct new_module));*/
obj_add_symbol(f, SPFX "__this_module", -1,
ELF_ST_INFO(STB_LOCAL, STT_OBJECT), sec->idx, 0,
@@ -2965,9 +2965,9 @@
if (i == f->header.e_shnum) {
struct obj_section *sec;
+ f->header.e_shnum++;
f->sections = xrealloc_vector(f->sections, 2, i);
f->sections[i] = sec = arch_new_section();
- f->header.e_shnum = i + 1;
sec->header.sh_type = SHT_PROGBITS;
sec->header.sh_flags = SHF_WRITE | SHF_ALLOC;
@@ -3006,12 +3006,9 @@
for (i = 0; i < f->header.e_shnum; ++i) {
struct obj_section *s = f->sections[i];
if (s->header.sh_type == SHT_NOBITS) {
+ s->contents = NULL;
if (s->header.sh_size != 0)
- s->contents = memset(xmalloc(s->header.sh_size),
- 0, s->header.sh_size);
- else
- s->contents = NULL;
-
+ s->contents = xzalloc(s->header.sh_size);
s->header.sh_type = SHT_PROGBITS;
}
}
@@ -3275,14 +3272,13 @@
case SHT_SYMTAB:
case SHT_STRTAB:
case SHT_RELM:
+ sec->contents = NULL;
if (sec->header.sh_size > 0) {
- sec->contents = xmalloc(sec->header.sh_size);
+ sec->contents = xzalloc(sec->header.sh_size);
fseek(fp, sec->header.sh_offset, SEEK_SET);
if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
bb_perror_msg_and_die("error reading ELF section data");
}
- } else {
- sec->contents = NULL;
}
break;

View File

@@ -0,0 +1,11 @@
--- busybox-1.13.2/archival/tar.c Sun Nov 9 18:28:02 2008
+++ busybox-1.13.2-tar/archival/tar.c Tue Jan 20 03:52:04 2009
@@ -591,8 +591,6 @@
struct TarBallInfo tbInfo;
tbInfo.hlInfoHead = NULL;
-
- fchmod(tar_fd, 0644);
tbInfo.tarFd = tar_fd;
tbInfo.verboseFlag = verboseFlag;

View File

@@ -562,7 +562,7 @@ CONFIG_DC=y
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
CONFIG_DEVMEM=y
# CONFIG_DEVMEM is not set
CONFIG_EJECT=y
# CONFIG_FEATURE_EJECT_SCSI is not set
# CONFIG_FBSPLASH is not set

View File

@@ -0,0 +1,61 @@
diff -ur busybox-1.2.2.1/networking/dnsd.c busybox-1.2.2.1-patched/networking/dnsd.c
--- busybox-1.2.2.1/networking/dnsd.c 2006-10-24 15:21:17.000000000 -0500
+++ busybox-1.2.2.1-patched/networking/dnsd.c 2007-04-12 12:49:53.000000000 -0500
@@ -31,11 +31,11 @@
#define is_daemon() (flags&16)
#define is_verbose() (flags&32)
-//#define DEBUG
+#undef DEBUG
enum {
- MAX_HOST_LEN = 16, // longest host name allowed is 15
+ MAX_HOST_LEN = 41, // longest host name allowed is 40
IP_STRING_LEN = 18, // .xxx.xxx.xxx.xxx\0
//must be strlen('.in-addr.arpa') larger than IP_STRING_LEN
@@ -229,19 +229,23 @@
{
int i;
struct dns_entry *d = dnsentry;
+ char *p,*q;
+
+ q = (char *)&(qs[1]);
+ p = &(d->name[1]);
if(d) do {
#ifdef DEBUG
if(qs && d) {
- char *p,*q;
- q = (char *)&(qs[1]);
- p = &(d->name[1]);
fprintf(stderr, "\n%s: %d/%d p:%s q:%s %d",
__FUNCTION__, strlen(p), (int)(d->name[0]),
p, q, strlen(q));
}
#endif
if (type == REQ_A) { /* search by host name */
+ p = &(d->name[1]);
+ if(strlen(q) != strlen(p))
+ continue;
for(i = 1; i <= (int)(d->name[0]); i++)
if(tolower(qs[i]) != d->name[i])
break;
@@ -398,13 +402,15 @@
fprintf(stderr,"fileconf: %s\n", fileconf);
}
- if(is_daemon())
+ if(is_daemon()) {
#ifdef BB_NOMMU
/* reexec for vfork() do continue parent */
vfork_daemon_rexec(1, 0, argc, argv, "-d");
#else
bb_xdaemon(1, 0);
#endif
+ daemonmode = 1;
+ }
dnsentryinit(is_verbose());

View File

@@ -0,0 +1,643 @@
#
# Automatically generated make config: don't edit
#
HAVE_DOT_CONFIG=y
#
# Busybox Settings
#
#
# General Configuration
#
# CONFIG_NITPICK is not set
# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
# CONFIG_FEATURE_COMPRESS_USAGE is not set
# CONFIG_FEATURE_INSTALLER is not set
# CONFIG_LOCALE_SUPPORT is not set
CONFIG_GETOPT_LONG=y
CONFIG_FEATURE_DEVPTS=y
# CONFIG_FEATURE_CLEAN_UP is not set
CONFIG_FEATURE_SUID=y
# CONFIG_FEATURE_SUID_CONFIG is not set
# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
# CONFIG_SELINUX is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
#
# Build Options
#
# CONFIG_STATIC is not set
# CONFIG_BUILD_LIBBUSYBOX is not set
# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
# USING_CROSS_COMPILER is not set
CROSS_COMPILER_PREFIX=""
# CONFIG_BUILD_AT_ONCE is not set
#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_DEBUG_PESSIMIZE is not set
# CONFIG_NO_DEBUG_LIB is not set
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
CONFIG_DEBUG_YANK_SUSv2=y
#
# Installation Options
#
# CONFIG_INSTALL_NO_USR is not set
CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_APPLET_HARDLINKS is not set
# CONFIG_INSTALL_APPLET_DONT is not set
PREFIX="./_install"
#
# Busybox Library Tuning
#
CONFIG_MD5_SIZE_VS_SPEED=2
#
# Applets
#
#
# Archival Utilities
#
# CONFIG_AR is not set
# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
CONFIG_BUNZIP2=y
# CONFIG_CPIO is not set
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
CONFIG_GUNZIP=y
# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
CONFIG_GZIP=y
# CONFIG_RPM2CPIO is not set
# CONFIG_RPM is not set
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_BZIP2=y
# CONFIG_FEATURE_TAR_LZMA is not set
# CONFIG_FEATURE_TAR_FROM is not set
CONFIG_FEATURE_TAR_GZIP=y
# CONFIG_FEATURE_TAR_COMPRESS is not set
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
# CONFIG_UNCOMPRESS is not set
# CONFIG_UNLZMA is not set
# CONFIG_FEATURE_LZMA_FAST is not set
CONFIG_UNZIP=y
#
# Common options for cpio and tar
#
# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
# CONFIG_FEATURE_DEB_TAR_GZ is not set
# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
# CONFIG_FEATURE_DEB_TAR_LZMA is not set
#
# Coreutils
#
CONFIG_BASENAME=y
# CONFIG_CAL is not set
CONFIG_CAT=y
# CONFIG_CATV is not set
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_CHROOT=y
# CONFIG_CKSUM is not set
CONFIG_CMP=y
# CONFIG_COMM is not set
CONFIG_CP=y
CONFIG_CUT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_DD=y
# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set
# CONFIG_FEATURE_DD_IBS_OBS is not set
CONFIG_DF=y
# CONFIG_DIFF is not set
# CONFIG_FEATURE_DIFF_BINARY is not set
# CONFIG_FEATURE_DIFF_DIR is not set
# CONFIG_FEATURE_DIFF_MINIMAL is not set
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FALSE=y
# CONFIG_FOLD is not set
CONFIG_HEAD=y
# CONFIG_FEATURE_FANCY_HEAD is not set
CONFIG_HOSTID=y
CONFIG_ID=y
CONFIG_INSTALL=y
# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
# CONFIG_LENGTH is not set
CONFIG_LN=y
CONFIG_LOGNAME=y
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
CONFIG_MD5SUM=y
CONFIG_MKDIR=y
# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
# CONFIG_MKFIFO is not set
CONFIG_MKNOD=y
CONFIG_MV=y
# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
# CONFIG_NICE is not set
# CONFIG_NOHUP is not set
# CONFIG_OD is not set
# CONFIG_PRINTENV is not set
# CONFIG_PRINTF is not set
CONFIG_PWD=y
# CONFIG_REALPATH is not set
CONFIG_RM=y
CONFIG_RMDIR=y
# CONFIG_SEQ is not set
CONFIG_SHA1SUM=y
CONFIG_SLEEP=y
# CONFIG_FEATURE_FANCY_SLEEP is not set
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
# CONFIG_STAT is not set
# CONFIG_FEATURE_STAT_FORMAT is not set
CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
CONFIG_TEE=y
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
CONFIG_TEST=y
CONFIG_FEATURE_TEST_64=y
CONFIG_TOUCH=y
# CONFIG_TR is not set
# CONFIG_FEATURE_TR_CLASSES is not set
# CONFIG_FEATURE_TR_EQUIV is not set
CONFIG_TRUE=y
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNIQ=y
CONFIG_USLEEP=y
CONFIG_UUDECODE=y
CONFIG_UUENCODE=y
# CONFIG_WATCH is not set
CONFIG_WC=y
# CONFIG_WHO is not set
CONFIG_WHOAMI=y
CONFIG_YES=y
#
# Common options for cp and mv
#
CONFIG_FEATURE_PRESERVE_HARDLINKS=y
#
# Common options for ls, more and telnet
#
CONFIG_FEATURE_AUTOWIDTH=y
#
# Common options for df, du, ls
#
CONFIG_FEATURE_HUMAN_READABLE=y
#
# Common options for md5sum, sha1sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
#
# Console Utilities
#
CONFIG_CHVT=y
CONFIG_CLEAR=y
CONFIG_DEALLOCVT=y
# CONFIG_DUMPKMAP is not set
# CONFIG_LOADFONT is not set
# CONFIG_LOADKMAP is not set
CONFIG_OPENVT=y
CONFIG_RESET=y
# CONFIG_SETCONSOLE is not set
# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
# CONFIG_SETKEYCODES is not set
# CONFIG_SETLOGCONS is not set
#
# Debian Utilities
#
CONFIG_MKTEMP=y
# CONFIG_PIPE_PROGRESS is not set
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
CONFIG_WHICH=y
#
# Editors
#
# CONFIG_AWK is not set
# CONFIG_FEATURE_AWK_MATH is not set
# CONFIG_ED is not set
# CONFIG_PATCH is not set
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
#
# Finding Utilities
#
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
# CONFIG_FEATURE_FIND_MMIN is not set
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
# CONFIG_FEATURE_FIND_NEWER is not set
# CONFIG_FEATURE_FIND_INUM is not set
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
CONFIG_FEATURE_GREP_CONTEXT=y
CONFIG_XARGS=y
# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
#
# Init Utilities
#
CONFIG_INIT=y
# CONFIG_DEBUG_INIT is not set
CONFIG_FEATURE_USE_INITTAB=y
CONFIG_FEATURE_INIT_SCTTY=y
CONFIG_FEATURE_EXTRA_QUIET=y
# CONFIG_FEATURE_INIT_COREDUMPS is not set
CONFIG_FEATURE_INITRD=y
CONFIG_HALT=y
# CONFIG_MESG is not set
#
# Login/Password Management Utilities
#
CONFIG_FEATURE_SHADOWPASSWDS=y
# CONFIG_USE_BB_SHADOW is not set
# CONFIG_USE_BB_PWD_GRP is not set
CONFIG_ADDGROUP=y
CONFIG_DELGROUP=y
CONFIG_ADDUSER=y
CONFIG_DELUSER=y
CONFIG_GETTY=y
# CONFIG_FEATURE_UTMP is not set
# CONFIG_FEATURE_WTMP is not set
CONFIG_LOGIN=y
CONFIG_FEATURE_SECURETTY=y
CONFIG_PASSWD=y
CONFIG_SU=y
CONFIG_SULOGIN=y
CONFIG_VLOCK=y
#
# Linux Ext2 FS Progs
#
# CONFIG_CHATTR is not set
# CONFIG_E2FSCK is not set
# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set
# CONFIG_MKE2FS is not set
# CONFIG_TUNE2FS is not set
# CONFIG_E2LABEL is not set
# CONFIG_FINDFS is not set
#
# Linux Module Utilities
#
CONFIG_INSMOD=y
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
CONFIG_RMMOD=y
CONFIG_LSMOD=y
CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
CONFIG_MODPROBE=y
CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
#
# Options common to multiple modutils
#
CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
CONFIG_FEATURE_2_4_MODULES=y
CONFIG_FEATURE_2_6_MODULES=y
# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
#
# Linux System Utilities
#
CONFIG_DMESG=y
# CONFIG_FBSET is not set
# CONFIG_FEATURE_FBSET_FANCY is not set
# CONFIG_FEATURE_FBSET_READMODE is not set
# CONFIG_FDFLUSH is not set
CONFIG_FDFORMAT=y
CONFIG_FDISK=y
FDISK_SUPPORT_LARGE_DISKS=y
CONFIG_FEATURE_FDISK_WRITABLE=y
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
# CONFIG_FREERAMDISK is not set
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
CONFIG_GETOPT=y
CONFIG_HEXDUMP=y
CONFIG_HWCLOCK=y
# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
# CONFIG_IPCRM is not set
# CONFIG_IPCS is not set
# CONFIG_LOSETUP is not set
# CONFIG_MDEV is not set
# CONFIG_FEATURE_MDEV_CONF is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_MKSWAP is not set
# CONFIG_FEATURE_MKSWAP_V0 is not set
CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_MOUNT=y
CONFIG_FEATURE_MOUNT_NFS=y
CONFIG_PIVOT_ROOT=y
CONFIG_RDATE=y
# CONFIG_READPROFILE is not set
# CONFIG_SETARCH is not set
CONFIG_SWAPONOFF=y
CONFIG_SWITCH_ROOT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
#
# Common options for mount/umount
#
CONFIG_FEATURE_MOUNT_LOOP=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
#
# Miscellaneous Utilities
#
# CONFIG_ADJTIMEX is not set
# CONFIG_BBCONFIG is not set
# CONFIG_CROND is not set
# CONFIG_DEBUG_CROND_OPTION is not set
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
# CONFIG_CRONTAB is not set
CONFIG_DC=y
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
# CONFIG_EJECT is not set
# CONFIG_LAST is not set
CONFIG_LESS=y
# CONFIG_FEATURE_LESS_BRACKETS is not set
# CONFIG_FEATURE_LESS_FLAGS is not set
# CONFIG_FEATURE_LESS_FLAGCS is not set
# CONFIG_FEATURE_LESS_MARKS is not set
CONFIG_FEATURE_LESS_REGEXP=y
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
# CONFIG_MAKEDEVS is not set
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MOUNTPOINT is not set
CONFIG_MT=y
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
CONFIG_STRINGS=y
# CONFIG_SETSID is not set
# CONFIG_TASKSET is not set
CONFIG_TIME=y
# CONFIG_WATCHDOG is not set
#
# Networking Utilities
#
# CONFIG_FEATURE_IPV6 is not set
# CONFIG_ARPING is not set
# CONFIG_DNSD is not set
# CONFIG_ETHER_WAKE is not set
# CONFIG_FAKEIDENTD is not set
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
CONFIG_HOSTNAME=y
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_WITHOUT_INETD is not set
# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
# CONFIG_FEATURE_IFCONFIG_SLIP is not set
# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
# CONFIG_FEATURE_IFCONFIG_HW is not set
# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
CONFIG_IFUPDOWN=y
# CONFIG_FEATURE_IFUPDOWN_IP is not set
CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
CONFIG_FEATURE_IFUPDOWN_IPV4=y
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
# CONFIG_FEATURE_IFUPDOWN_IPX is not set
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
# CONFIG_INETD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
# CONFIG_FEATURE_INETD_RPC is not set
# CONFIG_IP is not set
# CONFIG_FEATURE_IP_ADDRESS is not set
# CONFIG_FEATURE_IP_LINK is not set
# CONFIG_FEATURE_IP_ROUTE is not set
# CONFIG_FEATURE_IP_TUNNEL is not set
# CONFIG_FEATURE_IP_SHORT_FORMS is not set
# CONFIG_IPADDR is not set
# CONFIG_IPLINK is not set
# CONFIG_IPROUTE is not set
# CONFIG_IPTUNNEL is not set
# CONFIG_IPCALC is not set
# CONFIG_FEATURE_IPCALC_FANCY is not set
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
# CONFIG_NAMEIF is not set
# CONFIG_NC is not set
# CONFIG_NC_GAPING_SECURITY_HOLE is not set
CONFIG_NETSTAT=y
CONFIG_NSLOOKUP=y
CONFIG_PING=y
CONFIG_FEATURE_FANCY_PING=y
# CONFIG_PING6 is not set
# CONFIG_FEATURE_FANCY_PING6 is not set
CONFIG_ROUTE=y
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_INETD is not set
# CONFIG_TFTP is not set
# CONFIG_FEATURE_TFTP_GET is not set
# CONFIG_FEATURE_TFTP_PUT is not set
# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
# CONFIG_DEBUG_TFTP is not set
# CONFIG_TRACEROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
#
# udhcp Server/Client
#
# CONFIG_APP_UDHCPD is not set
CONFIG_APP_UDHCPC=y
# CONFIG_APP_DUMPLEASES is not set
CONFIG_FEATURE_UDHCP_SYSLOG=y
# CONFIG_FEATURE_UDHCP_DEBUG is not set
# CONFIG_VCONFIG is not set
CONFIG_WGET=y
CONFIG_FEATURE_WGET_STATUSBAR=y
CONFIG_FEATURE_WGET_AUTHENTICATION=y
# CONFIG_FEATURE_WGET_IP6_LITERAL is not set
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
# CONFIG_ZCIP is not set
#
# Process Utilities
#
CONFIG_FREE=y
# CONFIG_FUSER is not set
CONFIG_KILL=y
CONFIG_KILLALL=y
CONFIG_PIDOF=y
# CONFIG_FEATURE_PIDOF_SINGLE is not set
# CONFIG_FEATURE_PIDOF_OMIT is not set
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
# CONFIG_RENICE is not set
# CONFIG_BB_SYSCTL is not set
# CONFIG_TOP is not set
# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set
CONFIG_UPTIME=y
#
# Shells
#
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
# CONFIG_FEATURE_SH_IS_LASH is not set
# CONFIG_FEATURE_SH_IS_MSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
CONFIG_ASH=y
#
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_READ_NCHARS=y
CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
CONFIG_ASH_MATH_SUPPORT_64=y
# CONFIG_ASH_GETOPTS is not set
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_TEST=y
# CONFIG_ASH_CMDCMD is not set
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
# CONFIG_ASH_RANDOM_SUPPORT is not set
CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH is not set
# CONFIG_LASH is not set
# CONFIG_MSH is not set
#
# Bourne Shell Options
#
# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
CONFIG_FEATURE_COMMAND_EDITING=y
# CONFIG_FEATURE_COMMAND_EDITING_VI is not set
CONFIG_FEATURE_COMMAND_HISTORY=15
CONFIG_FEATURE_COMMAND_SAVEHISTORY=y
CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y
# CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set
CONFIG_FEATURE_SH_FANCY_PROMPT=y
#
# System Logging Utilities
#
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
# CONFIG_FEATURE_REMOTE_LOG is not set
# CONFIG_FEATURE_IPC_SYSLOG is not set
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
# CONFIG_LOGREAD is not set
# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
CONFIG_KLOGD=y
CONFIG_LOGGER=y

View File

@@ -0,0 +1,690 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.5.0
# Wed Mar 14 13:42:28 2007
#
CONFIG_HAVE_DOT_CONFIG=y
#
# Busybox Settings
#
#
# General Configuration
#
CONFIG_NITPICK=y
CONFIG_DESKTOP=y
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
# CONFIG_FEATURE_COMPRESS_USAGE is not set
CONFIG_FEATURE_INSTALLER=y
# CONFIG_LOCALE_SUPPORT is not set
CONFIG_GETOPT_LONG=y
CONFIG_FEATURE_DEVPTS=y
CONFIG_FEATURE_CLEAN_UP=y
CONFIG_FEATURE_SUID=y
CONFIG_FEATURE_SYSLOG=y
# CONFIG_FEATURE_SUID_CONFIG is not set
# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
# CONFIG_FEATURE_HAVE_RPC is not set
# CONFIG_SELINUX is not set
# CONFIG_FEATURE_EXEC_PREFER_APPLETS is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
#
# Build Options
#
# CONFIG_STATIC is not set
# CONFIG_BUILD_LIBBUSYBOX is not set
# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
# CONFIG_LFS is not set
CONFIG_BUILD_AT_ONCE=y
#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_WERROR is not set
# CONFIG_NO_DEBUG_LIB is not set
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
CONFIG_INCLUDE_SUSv2=y
#
# Installation Options
#
# CONFIG_INSTALL_NO_USR is not set
CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_APPLET_HARDLINKS is not set
# CONFIG_INSTALL_APPLET_DONT is not set
CONFIG_PREFIX="./_install"
#
# Busybox Library Tuning
#
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SIZE_VS_SPEED=2
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_FANCY_KEYS=y
CONFIG_FEATURE_EDITING_VI=y
CONFIG_FEATURE_EDITING_HISTORY=999
CONFIG_FEATURE_EDITING_SAVEHISTORY=y
CONFIG_FEATURE_TAB_COMPLETION=y
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
#
# Applets
#
#
# Archival Utilities
#
CONFIG_AR=y
# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
CONFIG_BUNZIP2=y
CONFIG_CPIO=y
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
CONFIG_GUNZIP=y
# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set
CONFIG_GZIP=y
# CONFIG_RPM2CPIO is not set
# CONFIG_RPM is not set
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_BZIP2=y
CONFIG_FEATURE_TAR_LZMA=y
CONFIG_FEATURE_TAR_FROM=y
CONFIG_FEATURE_TAR_GZIP=y
# CONFIG_FEATURE_TAR_COMPRESS is not set
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
# CONFIG_UNCOMPRESS is not set
CONFIG_UNLZMA=y
# CONFIG_FEATURE_LZMA_FAST is not set
CONFIG_UNZIP=y
#
# Common options for cpio and tar
#
# CONFIG_FEATURE_UNARCHIVE_TAPE is not set
# CONFIG_FEATURE_DEB_TAR_GZ is not set
# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
# CONFIG_FEATURE_DEB_TAR_LZMA is not set
#
# Coreutils
#
CONFIG_BASENAME=y
# CONFIG_CAL is not set
CONFIG_CAT=y
CONFIG_CATV=y
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_CHROOT=y
CONFIG_CKSUM=y
CONFIG_CMP=y
# CONFIG_COMM is not set
CONFIG_CP=y
CONFIG_CUT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_DF=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_BINARY=y
CONFIG_FEATURE_DIFF_DIR=y
# CONFIG_FEATURE_DIFF_MINIMAL is not set
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FALSE=y
CONFIG_FOLD=y
CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y
CONFIG_HOSTID=y
CONFIG_ID=y
CONFIG_INSTALL=y
CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
CONFIG_LENGTH=y
CONFIG_LN=y
CONFIG_LOGNAME=y
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
CONFIG_MD5SUM=y
CONFIG_MKDIR=y
CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
CONFIG_MKFIFO=y
CONFIG_MKNOD=y
CONFIG_MV=y
CONFIG_FEATURE_MV_LONG_OPTIONS=y
CONFIG_NICE=y
CONFIG_NOHUP=y
CONFIG_OD=y
CONFIG_PRINTENV=y
CONFIG_PRINTF=y
CONFIG_PWD=y
CONFIG_REALPATH=y
CONFIG_RM=y
CONFIG_RMDIR=y
CONFIG_SEQ=y
CONFIG_SHA1SUM=y
CONFIG_SLEEP=y
# CONFIG_FEATURE_FANCY_SLEEP is not set
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
# CONFIG_STAT is not set
# CONFIG_FEATURE_STAT_FORMAT is not set
CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
CONFIG_TEE=y
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
CONFIG_TEST=y
CONFIG_FEATURE_TEST_64=y
CONFIG_TOUCH=y
CONFIG_TR=y
CONFIG_FEATURE_TR_CLASSES=y
CONFIG_FEATURE_TR_EQUIV=y
CONFIG_TRUE=y
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNIQ=y
CONFIG_USLEEP=y
CONFIG_UUDECODE=y
CONFIG_UUENCODE=y
CONFIG_WATCH=y
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
CONFIG_WHO=y
CONFIG_WHOAMI=y
CONFIG_YES=y
#
# Common options for cp and mv
#
CONFIG_FEATURE_PRESERVE_HARDLINKS=y
#
# Common options for ls, more and telnet
#
CONFIG_FEATURE_AUTOWIDTH=y
#
# Common options for df, du, ls
#
CONFIG_FEATURE_HUMAN_READABLE=y
#
# Common options for md5sum, sha1sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
#
# Console Utilities
#
CONFIG_CHVT=y
CONFIG_CLEAR=y
CONFIG_DEALLOCVT=y
CONFIG_DUMPKMAP=y
CONFIG_LOADFONT=y
CONFIG_LOADKMAP=y
CONFIG_OPENVT=y
CONFIG_RESET=y
CONFIG_RESIZE=y
CONFIG_FEATURE_RESIZE_PRINT=y
CONFIG_SETCONSOLE=y
# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
CONFIG_SETKEYCODES=y
CONFIG_SETLOGCONS=y
#
# Debian Utilities
#
CONFIG_MKTEMP=y
CONFIG_PIPE_PROGRESS=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_RUN_PARTS=y
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
CONFIG_WHICH=y
#
# Editors
#
CONFIG_AWK=y
CONFIG_FEATURE_AWK_MATH=y
# CONFIG_ED is not set
CONFIG_PATCH=y
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
CONFIG_FEATURE_ALLOW_EXEC=y
#
# Finding Utilities
#
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
CONFIG_FEATURE_FIND_MMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_NEWER=y
# CONFIG_FEATURE_FIND_INUM is not set
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_FEATURE_FIND_USER=y
CONFIG_FEATURE_FIND_NOT=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
CONFIG_FEATURE_GREP_CONTEXT=y
CONFIG_XARGS=y
# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
#
# Init Utilities
#
CONFIG_INIT=y
# CONFIG_DEBUG_INIT is not set
CONFIG_FEATURE_USE_INITTAB=y
CONFIG_FEATURE_INIT_SCTTY=y
CONFIG_FEATURE_INIT_SYSLOG=y
CONFIG_FEATURE_EXTRA_QUIET=y
# CONFIG_FEATURE_INIT_COREDUMPS is not set
CONFIG_FEATURE_INITRD=y
CONFIG_HALT=y
CONFIG_MESG=y
#
# Login/Password Management Utilities
#
CONFIG_FEATURE_SHADOWPASSWDS=y
# CONFIG_USE_BB_SHADOW is not set
# CONFIG_USE_BB_PWD_GRP is not set
CONFIG_ADDGROUP=y
CONFIG_DELGROUP=y
CONFIG_ADDUSER=y
CONFIG_DELUSER=y
CONFIG_GETTY=y
CONFIG_FEATURE_UTMP=y
CONFIG_FEATURE_WTMP=y
CONFIG_LOGIN=y
# CONFIG_LOGIN_SCRIPTS is not set
CONFIG_FEATURE_SECURETTY=y
CONFIG_PASSWD=y
CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
CONFIG_SU=y
CONFIG_FEATURE_SU_SYSLOG=y
CONFIG_FEATURE_SU_CHECKS_SHELLS=y
CONFIG_SULOGIN=y
CONFIG_VLOCK=y
#
# Linux Ext2 FS Progs
#
CONFIG_CHATTR=y
CONFIG_FSCK=y
CONFIG_LSATTR=y
#
# Linux Module Utilities
#
CONFIG_INSMOD=y
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
CONFIG_FEATURE_INSMOD_LOAD_MAP=y
CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL=y
CONFIG_RMMOD=y
CONFIG_LSMOD=y
CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
CONFIG_MODPROBE=y
CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
#
# Options common to multiple modutils
#
CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
# CONFIG_FEATURE_2_4_MODULES is not set
CONFIG_FEATURE_2_6_MODULES=y
# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
#
# Linux System Utilities
#
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
# CONFIG_FBSET is not set
# CONFIG_FEATURE_FBSET_FANCY is not set
# CONFIG_FEATURE_FBSET_READMODE is not set
CONFIG_FDFLUSH=y
CONFIG_FDFORMAT=y
# CONFIG_FDISK is not set
CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
CONFIG_FEATURE_FDISK_WRITABLE=y
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
CONFIG_FREERAMDISK=y
# CONFIG_FSCK_MINIX is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
CONFIG_GETOPT=y
CONFIG_HEXDUMP=y
CONFIG_HWCLOCK=y
CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
CONFIG_IPCRM=y
CONFIG_IPCS=y
CONFIG_LOSETUP=y
CONFIG_MDEV=y
CONFIG_FEATURE_MDEV_CONF=y
CONFIG_FEATURE_MDEV_EXEC=y
CONFIG_MKSWAP=y
# CONFIG_FEATURE_MKSWAP_V0 is not set
CONFIG_MORE=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_MOUNT=y
# CONFIG_FEATURE_MOUNT_NFS is not set
CONFIG_FEATURE_MOUNT_CIFS=y
CONFIG_FEATURE_MOUNT_FLAGS=y
CONFIG_FEATURE_MOUNT_FSTAB=y
CONFIG_PIVOT_ROOT=y
CONFIG_RDATE=y
CONFIG_READPROFILE=y
CONFIG_SETARCH=y
CONFIG_SWAPONOFF=y
CONFIG_SWITCH_ROOT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
#
# Common options for mount/umount
#
CONFIG_FEATURE_MOUNT_LOOP=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
#
# Miscellaneous Utilities
#
# CONFIG_ADJTIMEX is not set
# CONFIG_BBCONFIG is not set
CONFIG_CHRT=y
CONFIG_CROND=y
CONFIG_DEBUG_CROND_OPTION=y
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
CONFIG_CRONTAB=y
CONFIG_DC=y
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
CONFIG_EJECT=y
CONFIG_LAST=y
CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
CONFIG_FEATURE_LESS_BRACKETS=y
CONFIG_FEATURE_LESS_FLAGS=y
CONFIG_FEATURE_LESS_FLAGCS=y
# CONFIG_FEATURE_LESS_MARKS is not set
CONFIG_FEATURE_LESS_REGEXP=y
CONFIG_HDPARM=y
CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
CONFIG_MAKEDEVS=y
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
CONFIG_FEATURE_MAKEDEVS_TABLE=y
CONFIG_MOUNTPOINT=y
CONFIG_MT=y
# CONFIG_NMETER is not set
# CONFIG_RAIDAUTORUN is not set
# CONFIG_READAHEAD is not set
CONFIG_RUNLEVEL=y
# CONFIG_RX is not set
CONFIG_STRINGS=y
CONFIG_SETSID=y
# CONFIG_TASKSET is not set
CONFIG_FEATURE_TASKSET_FANCY=y
CONFIG_TIME=y
CONFIG_WATCHDOG=y
#
# Networking Utilities
#
# CONFIG_FEATURE_IPV6 is not set
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
# CONFIG_ARP is not set
CONFIG_ARPING=y
CONFIG_DNSD=y
CONFIG_ETHER_WAKE=y
# CONFIG_FAKEIDENTD is not set
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
CONFIG_HOSTNAME=y
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
CONFIG_FEATURE_IFCONFIG_SLIP=y
CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
CONFIG_IFUPDOWN=y
CONFIG_FEATURE_IFUPDOWN_IP=y
# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
CONFIG_FEATURE_IFUPDOWN_IPV4=y
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
# CONFIG_FEATURE_IFUPDOWN_IPX is not set
CONFIG_FEATURE_IFUPDOWN_MAPPING=y
CONFIG_INETD=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
# CONFIG_FEATURE_INETD_RPC is not set
CONFIG_IP=y
CONFIG_FEATURE_IP_ADDRESS=y
CONFIG_FEATURE_IP_LINK=y
CONFIG_FEATURE_IP_ROUTE=y
CONFIG_FEATURE_IP_TUNNEL=y
CONFIG_FEATURE_IP_RULE=y
CONFIG_FEATURE_IP_SHORT_FORMS=y
CONFIG_IPADDR=y
CONFIG_IPLINK=y
CONFIG_IPROUTE=y
CONFIG_IPTUNNEL=y
CONFIG_IPRULE=y
# CONFIG_IPCALC is not set
# CONFIG_FEATURE_IPCALC_FANCY is not set
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
CONFIG_NAMEIF=y
# CONFIG_NC is not set
# CONFIG_NC_SERVER is not set
# CONFIG_NC_EXTRA is not set
CONFIG_NETSTAT=y
CONFIG_NSLOOKUP=y
CONFIG_PING=y
# CONFIG_PING6 is not set
CONFIG_FEATURE_FANCY_PING=y
CONFIG_ROUTE=y
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
CONFIG_TFTP=y
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
# CONFIG_DEBUG_TFTP is not set
CONFIG_TRACEROUTE=y
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
CONFIG_APP_UDHCPD=y
CONFIG_APP_DHCPRELAY=y
CONFIG_APP_DUMPLEASES=y
CONFIG_APP_UDHCPC=y
CONFIG_FEATURE_UDHCP_SYSLOG=y
# CONFIG_FEATURE_UDHCP_DEBUG is not set
# CONFIG_FEATURE_RFC3397 is not set
CONFIG_VCONFIG=y
CONFIG_WGET=y
CONFIG_FEATURE_WGET_STATUSBAR=y
CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
# CONFIG_ZCIP is not set
#
# Process Utilities
#
CONFIG_FREE=y
CONFIG_FUSER=y
CONFIG_KILL=y
CONFIG_KILLALL=y
CONFIG_KILLALL5=y
CONFIG_PIDOF=y
CONFIG_FEATURE_PIDOF_SINGLE=y
CONFIG_FEATURE_PIDOF_OMIT=y
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
CONFIG_RENICE=y
CONFIG_BB_SYSCTL=y
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_UPTIME=y
#
# Shells
#
CONFIG_FEATURE_SH_IS_ASH=y
# CONFIG_FEATURE_SH_IS_HUSH is not set
# CONFIG_FEATURE_SH_IS_LASH is not set
# CONFIG_FEATURE_SH_IS_MSH is not set
# CONFIG_FEATURE_SH_IS_NONE is not set
CONFIG_ASH=y
#
# Ash Shell Options
#
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_READ_NCHARS=y
CONFIG_ASH_READ_TIMEOUT=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
CONFIG_ASH_MATH_SUPPORT_64=y
# CONFIG_ASH_GETOPTS is not set
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_TEST=y
CONFIG_ASH_CMDCMD=y
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_ASH_EXPAND_PRMT=y
# CONFIG_HUSH is not set
# CONFIG_LASH is not set
# CONFIG_MSH is not set
#
# Bourne Shell Options
#
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set
#
# System Logging Utilities
#
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
# CONFIG_FEATURE_IPC_SYSLOG is not set
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=
# CONFIG_LOGREAD is not set
# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
CONFIG_KLOGD=y
CONFIG_LOGGER=y
#
# Runit Utilities
#
# CONFIG_RUNSV is not set
# CONFIG_RUNSVDIR is not set
# CONFIG_SV is not set
# CONFIG_SVLOGD is not set
# CONFIG_CHPST is not set
# CONFIG_SETUIDGID is not set
# CONFIG_ENVUIDGID is not set
# CONFIG_ENVDIR is not set
# CONFIG_SOFTLIMIT is not set
# CONFIG_CHCON is not set
# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
# CONFIG_GETENFORCE is not set
# CONFIG_GETSEBOOL is not set
# CONFIG_MATCHPATHCON is not set
# CONFIG_RUNCON is not set
# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
# CONFIG_SELINUXENABLED is not set
# CONFIG_SETENFORCE is not set

View File

@@ -46,8 +46,14 @@ $(BUSYBOX_DIR)/.config: $(BUSYBOX_DIR)/.unpacked $(BUSYBOX_CONFIG_FILE)
cp -f $(BUSYBOX_CONFIG_FILE) $(BUSYBOX_DIR)/.config
$(SED) s,^CONFIG_PREFIX=.*,CONFIG_PREFIX=\"$(TARGET_DIR)\", \
$(BUSYBOX_DIR)/.config
# id applet breaks on >=1.13.0 with old uclibc unless the bb pwd routines are used
ifeq ($(BR2_BUSYBOX_VERSION_1_13_X)$(BR2_BUSYBOX_VERSION_1_14_X)$(BR2_UCLIBC_VERSION_0_9_28_3)$(BR2_UCLIBC_VERSION_0_9_29),yy)
ifeq ($(BR2_BUSYBOX_VERSION_1_2_2_1),y)
$(SED) s,^CROSS_COMPILER_PREFIX=.*,CROSS_COMPILER_PREFIX=\"$(TARGET_CROSS)\", \
$(BUSYBOX_DIR)/.config
$(SED) s,^PREFIX=.*,CROSS_COMPILER_PREFIX=\"$(TARGET_CROSS)\", \
$(BUSYBOX_DIR)/.config
endif
# id applet breaks on 1.13.0 with old uclibc unless the bb pwd routines are used
ifeq ($(BR2_BUSYBOX_VERSION_1_13_X)$(BR2_UCLIBC_VERSION_0_9_28_3)$(BR2_UCLIBC_VERSION_0_9_29),yy)
if grep -q 'CONFIG_ID=y' $(BUSYBOX_DIR)/.config; \
then \
echo 'warning: CONFIG_ID needs BB_PWD_GRP with old uclibc, enabling' >&2;\
@@ -69,15 +75,8 @@ else
endif
ifeq ($(BR2_INET_IPV6),y)
$(SED) "s/^.*CONFIG_FEATURE_IPV6.*/CONFIG_FEATURE_IPV6=y/;" $(BUSYBOX_DIR)/.config
$(SED) "s/^.*CONFIG_FEATURE_IFUPDOWN_IPV6.*/CONFIG_FEATURE_IFUPDOWN_IPV6=y/;" $(BUSYBOX_DIR)/.config
else
$(SED) "s/^.*CONFIG_FEATURE_IPV6.*/CONFIG_FEATURE_IPV6=n/;" $(BUSYBOX_DIR)/.config
$(SED) "s/^.*CONFIG_FEATURE_IFUPDOWN_IPV6.*/CONFIG_FEATURE_IFUPDOWN_IPV6=n/;" $(BUSYBOX_DIR)/.config
endif
ifeq ($(BR2_INET_RPC),y)
$(SED) "s/^.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=y/;" $(BUSYBOX_DIR)/.config
else
$(SED) "s/^.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=n/;" $(BUSYBOX_DIR)/.config
endif
ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y)
# force mdev on

View File

@@ -111,11 +111,11 @@ $(BB_INITRAMFS_TARGET): host-fakeroot $(BR2_INITRAMFS_DIR)/bin/busybox
$(PROJECT_BUILD_DIR)/initramfs/etc/inittab
rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
(echo "chown -R 0:0 $(PROJECT_BUILD_DIR)/initramfs"; \
echo "$(HOST_DIR)/usr/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(PROJECT_BUILD_DIR)/initramfs"; \
echo "$(STAGING_DIR)/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(PROJECT_BUILD_DIR)/initramfs"; \
echo "$(SHELL) target/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(PROJECT_BUILD_DIR)/initramfs > $(BB_INITRAMFS_TARGET)"; \
) > $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
chmod +x $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
$(HOST_DIR)/usr/bin/fakeroot -- \
$(STAGING_DIR)/usr/bin/fakeroot -- \
$(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
touch -c $@

View File

@@ -1,7 +1,11 @@
config BR2_PACKAGE_CAIRO
bool "cairo"
select BR2_PACKAGE_PKGCONFIG
select BR2_PACKAGE_LIBPNG
select BR2_PACKAGE_ZLIB
select BR2_PACKAGE_PIXMAN
select BR2_PACKAGE_FONTCONFIG
depends on BR2_PACKAGE_XORG||BR2_PACKAGE_XORG7||BR2_PACKAGE_TINYX||BR2_PACKAGE_DIRECTFB
help
Cairo is a 2D graphics library with support for multiple
output devices. Currently supported output targets include
@@ -10,24 +14,3 @@ config BR2_PACKAGE_CAIRO
OpenGL (through glitz), Quartz, and XCB.
http://cairographics.org/
if BR2_PACKAGE_CAIRO
config BR2_PACKAGE_CAIRO_PS
bool "postscript support"
select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_CAIRO_PDF
bool "pdf support"
select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_CAIRO_PNG
bool "png support"
select BR2_PACKAGE_LIBPNG
select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_CAIRO_SVG
bool "svg support"
select BR2_PACKAGE_CAIRO_PNG
endif

View File

@@ -9,6 +9,7 @@ CAIRO_SITE = http://cairographics.org/releases
CAIRO_AUTORECONF = NO
CAIRO_INSTALL_STAGING = YES
CAIRO_INSTALL_TARGET = YES
CAIRO_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) install
CAIRO_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \
glib_cv_uscore=no ac_cv_func_strtod=yes \
@@ -37,98 +38,15 @@ CAIRO_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \
am_getline_needs_run_time_check=no am_cv_func_working_getline=yes \
gl_cv_func_mkdir_trailing_slash_bug=no gl_cv_func_mkstemp_limitations=no \
ac_cv_func_working_mktime=yes jm_cv_func_working_re_compile_pattern=yes \
ac_use_included_regex=no gl_cv_c_restrict=no
ac_use_included_regex=no gl_cv_c_restrict=no \
ac_cv_path_GLIB_GENMARSHAL=$(HOST_GLIB)/bin/glib-genmarshal
CAIRO_DEPENDENCIES = uclibc host-pkgconfig fontconfig pixman
ifeq ($(BR2_PACKAGE_DIRECTFB),y)
CAIRO_CONF_OPT += --enable-directfb
CAIRO_DEPENDENCIES += directfb
else
CAIRO_CONF_OPT += --disable-directfb
CAIRO_CONF_OPT = --disable-xlib --without-x --enable-directfb
CAIRO_DEPENDENCIES_EXTRA = directfb
endif
ifeq ($(BR2_PACKAGE_XORG7),y)
CAIRO_CONF_OPT += --enable-xlib --with-x
CAIRO_DEPENDENCIES += xserver_xorg-server
else
CAIRO_CONF_OPT += --disable-xlib --without-x
endif
ifeq ($(BR2_PACKAGE_CAIRO_PS),y)
CAIRO_CONF_OPT += --enable-ps
CAIRO_DEPENDENCIES += zlib
else
CAIRO_CONF_OPT += --disable-ps
endif
ifeq ($(BR2_PACKAGE_CAIRO_PDF),y)
CAIRO_CONF_OPT += --enable-pdf
CAIRO_DEPENDENCIES += zlib
else
CAIRO_CONF_OPT += --disable-pdf
endif
ifeq ($(BR2_PACKAGE_CAIRO_PNG),y)
CAIRO_CONF_OPT += --enable-png
CAIRO_DEPENDENCIES += libpng
else
CAIRO_CONF_OPT += --disable-png
endif
ifeq ($(BR2_PACKAGE_CAIRO_SVG),y)
CAIRO_CONF_OPT += --enable-svg
else
CAIRO_CONF_OPT += --disable-svg
endif
CAIRO_DEPENDENCIES = uclibc gettext libintl pkgconfig zlib libpng fontconfig $(CAIRO_DEPENDENCIES_EXTRA) pixman $(XSERVER)
$(eval $(call AUTOTARGETS,package,cairo))
# cairo for the host
CAIRO_HOST_DIR:=$(BUILD_DIR)/cairo-$(CAIRO_VERSION)-host
$(DL_DIR)/$(CAIRO_SOURCE):
$(call DOWNLOAD,$(CAIRO_SITE),$(CAIRO_SOURCE))
$(STAMP_DIR)/host_cairo_unpacked: $(DL_DIR)/$(CAIRO_SOURCE)
mkdir -p $(CAIRO_HOST_DIR)
$(INFLATE$(suffix $(CAIRO_SOURCE))) $< | \
$(TAR) $(TAR_STRIP_COMPONENTS)=1 -C $(CAIRO_HOST_DIR) $(TAR_OPTIONS) -
touch $@
$(STAMP_DIR)/host_cairo_configured: $(STAMP_DIR)/host_cairo_unpacked $(STAMP_DIR)/host_pkgconfig_installed $(STAMP_DIR)/host_fontconfig_installed $(STAMP_DIR)/host_pixman_installed
(cd $(CAIRO_HOST_DIR); rm -rf config.cache; \
$(HOST_CONFIGURE_OPTS) \
CFLAGS="$(HOST_CFLAGS)" \
LDFLAGS="$(HOST_LDFLAGS)" \
./configure \
--prefix="$(HOST_DIR)/usr" \
--sysconfdir="$(HOST_DIR)/etc" \
--enable-ps \
--enable-pdf \
--enable-xlib \
--with-x \
--disable-png \
--disable-svg \
)
touch $@
$(STAMP_DIR)/host_cairo_compiled: $(STAMP_DIR)/host_cairo_configured
$(HOST_MAKE_ENV) $(MAKE) -C $(CAIRO_HOST_DIR)
touch $@
$(STAMP_DIR)/host_cairo_installed: $(STAMP_DIR)/host_cairo_compiled
$(HOST_MAKE_ENV) $(MAKE) -C $(CAIRO_HOST_DIR) install
touch $@
host-cairo: $(STAMP_DIR)/host_cairo_installed
host-cairo-source: cairo-source
host-cairo-clean:
rm -f $(addprefix $(STAMP_DIR)/host_cairo_,unpacked configured compiled installed)
-$(MAKE) -C $(CAIRO_HOST_DIR) uninstall
-$(MAKE) -C $(CAIRO_HOST_DIR) clean
host-cairo-dirclean:
rm -rf $(CAIRO_HOST_DIR)

View File

@@ -1,10 +0,0 @@
/buildroot-config
/conf
/mconf
/qconf
/qconf.moc
/.tmp_qtcheck
/lkc_defs.h
/lex.zconf.c
/zconf.hash.c
/zconf.tab.c

View File

@@ -14,10 +14,7 @@ __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
host-cmulti := $(foreach m,$(__hostprogs),\
$(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
host-cxxmulti := $(foreach m,$(__hostprogs),\
$(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),)))
host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
host-cxxobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))
$(host-csingle): %: %.c
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $@
@@ -25,15 +22,9 @@ $(host-csingle): %: %.c
$(host-cmulti): %: $(host-cobjs) $(host-cshlib)
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $($@-objs) $(HOST_LOADLIBES) -o $@
$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $($@-objs) $($@-cxxobjs) $(HOSTLOADLIBES_$@) -o $@
$(host-cobjs): %.o: %.c
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) -c $< -o $@
$(host-cxxobjs): %.o: %.cc
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) -c $< -o $@
$(obj)/%:: $(src)/%_shipped
$(Q)cat $< > $@

View File

@@ -4,11 +4,7 @@
PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
ifdef KBUILD_KCONFIG
Kconfig := $(KBUILD_KCONFIG)
else
Kconfig := arch/$(SRCARCH)/Kconfig
endif
xconfig: $(obj)/qconf
$< $(Kconfig)
@@ -28,25 +24,22 @@ oldconfig: $(obj)/conf
silentoldconfig: $(obj)/conf
$< -s $(Kconfig)
# Create new linux.pot file
# Create new linux.po file
# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
# The symlink is used to repair a deficiency in arch/um
update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h
$(Q)echo " GEN config"
$(Q)xgettext --default-domain=linux \
update-po-config: $(obj)/kxgettext
xgettext --default-domain=linux \
--add-comments --keyword=_ --keyword=N_ \
--from-code=UTF-8 \
--files-from=scripts/kconfig/POTFILES.in \
--output $(obj)/config.pot
$(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot
$(Q)ln -fs Kconfig.i386 arch/um/Kconfig.arch
$(Q)(for i in `ls arch/*/Kconfig`; \
do \
echo " GEN $$i"; \
$(obj)/kxgettext $$i \
>> $(obj)/config.pot; \
done )
$(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
(for i in `ls arch/`; \
do \
$(obj)/kxgettext arch/$$i/Kconfig; \
done ) >> $(obj)/config.pot
msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
--output $(obj)/linux.pot
$(Q)rm -f arch/um/Kconfig.arch
$(Q)rm -f $(obj)/config.pot
@@ -83,7 +76,7 @@ help:
@echo ' xconfig - Update current config utilising a QT based front-end'
@echo ' gconfig - Update current config utilising a GTK based front-end'
@echo ' oldconfig - Update current config utilising a provided .config as base'
@echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps'
@echo ' silentoldconfig - Same as oldconfig, but quietly'
@echo ' randconfig - New config with random answer to all options'
@echo ' defconfig - New config with default answer to all options'
@echo ' allmodconfig - New config selecting modules when possible'
@@ -100,11 +93,17 @@ HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
HOST_EXTRACFLAGS += -DLOCALE
PHONY += $(obj)/dochecklxdialog
$(obj)/dochecklxdialog:
$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES)
always := dochecklxdialog
# ===========================================================================
# Shared Makefile for the various kconfig executables:
# conf: Used for defconfig, oldconfig and related targets
# mconf: Used for the menuconfig target
# mconf: Used for the mconfig target.
# Utilizes the lxdialog package
# qconf: Used for the xconfig target
# Based on QT which needs to be installed to compile it
@@ -125,16 +124,12 @@ ifeq ($(MAKECMDGOALS),menuconfig)
hostprogs-y += mconf
endif
ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf)
hostprogs-y += mconf
hostprogs-y += mconf
endif
ifeq ($(MAKECMDGOALS),xconfig)
qconf-target := 1
endif
ifeq ($(findstring qconf,$(MAKECMDGOALS)),qconf)
qconf-target := 1
endif
ifeq ($(MAKECMDGOALS),gconfig)
gconf-target := 1
endif
@@ -150,17 +145,8 @@ gconf-objs := gconf.o kconfig_load.o zconf.tab.o
endif
clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
.tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h
.tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c
clean-files += mconf qconf gconf
clean-files += config.pot linux.pot
# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
PHONY += $(obj)/dochecklxdialog
$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog
$(obj)/dochecklxdialog:
$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES)
always := dochecklxdialog
# Add environment specific flags
HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))
@@ -198,8 +184,8 @@ $(obj)/.tmp_qtcheck:
done; \
if [ -z "$$dir" ]; then \
echo "*"; \
echo "* Unable to find the QT3 installation. Please make sure that"; \
echo "* the QT3 development package is correctly installed and"; \
echo "* Unable to find the QT installation. Please make sure that"; \
echo "* the QT development package is correctly installed and"; \
echo "* either install pkg-config or set the QTDIR environment"; \
echo "* variable to the correct location."; \
echo "*"; \
@@ -265,9 +251,6 @@ $(obj)/%.moc: $(src)/%.h
$(obj)/lkc_defs.h: $(src)/lkc_proto.h
sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
# Extract gconf menu items for I18N support
$(obj)/gconf.glade.h: $(obj)/gconf.glade
intltool-extract --type=gettext/glade $(obj)/gconf.glade
###
# The following requires flex/bison/gperf

View File

@@ -1,12 +1,5 @@
scripts/kconfig/lxdialog/checklist.c
scripts/kconfig/lxdialog/inputbox.c
scripts/kconfig/lxdialog/menubox.c
scripts/kconfig/lxdialog/textbox.c
scripts/kconfig/lxdialog/util.c
scripts/kconfig/lxdialog/yesno.c
scripts/kconfig/mconf.c
scripts/kconfig/conf.c
scripts/kconfig/confdata.c
scripts/kconfig/gconf.c
scripts/kconfig/gconf.glade.h
scripts/kconfig/qconf.cc

View File

@@ -3,15 +3,13 @@
* Released under the terms of the GNU GPL v2.0.
*/
#include <locale.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/time.h>
#define LKC_DIRECT_LINK
#include "lkc.h"
@@ -33,7 +31,6 @@ char *defconfig_file;
static int indent = 1;
static int valid_stdin = 1;
static int sync_kconfig;
static int conf_cnt;
static char line[128];
static struct menu *rootEntry;
@@ -43,7 +40,7 @@ static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n"
static const char *get_help(struct menu *menu)
{
if (menu_has_help(menu))
return _(menu_get_help(menu));
return menu_get_help(menu);
else
return nohelp_text;
}
@@ -67,7 +64,7 @@ static void strip(char *str)
static void check_stdin(void)
{
if (!valid_stdin) {
if (!valid_stdin && input_mode == ask_silent) {
printf(_("aborted!\n\n"));
printf(_("Console input/output is redirected. "));
printf(_("Run 'make oldconfig' to update configuration.\n\n"));
@@ -78,9 +75,10 @@ static void check_stdin(void)
static int conf_askvalue(struct symbol *sym, const char *def)
{
enum symbol_type type = sym_get_type(sym);
tristate val;
if (!sym_has_value(sym))
printf(_("(NEW) "));
printf("(NEW) ");
line[0] = '\n';
line[1] = 0;
@@ -93,6 +91,15 @@ static int conf_askvalue(struct symbol *sym, const char *def)
}
switch (input_mode) {
case set_no:
case set_mod:
case set_yes:
case set_random:
if (sym_has_value(sym)) {
printf("%s\n", def);
return 0;
}
break;
case ask_new:
case ask_silent:
if (sym_has_value(sym)) {
@@ -104,6 +111,9 @@ static int conf_askvalue(struct symbol *sym, const char *def)
fflush(stdout);
fgets(line, 128, stdin);
return 1;
case set_default:
printf("%s\n", def);
return 1;
default:
break;
}
@@ -117,6 +127,52 @@ static int conf_askvalue(struct symbol *sym, const char *def)
default:
;
}
switch (input_mode) {
case set_yes:
if (sym_tristate_within_range(sym, yes)) {
line[0] = 'y';
line[1] = '\n';
line[2] = 0;
break;
}
case set_mod:
if (type == S_TRISTATE) {
if (sym_tristate_within_range(sym, mod)) {
line[0] = 'm';
line[1] = '\n';
line[2] = 0;
break;
}
} else {
if (sym_tristate_within_range(sym, yes)) {
line[0] = 'y';
line[1] = '\n';
line[2] = 0;
break;
}
}
case set_no:
if (sym_tristate_within_range(sym, no)) {
line[0] = 'n';
line[1] = '\n';
line[2] = 0;
break;
}
case set_random:
do {
val = (tristate)(random() % 3);
} while (!sym_tristate_within_range(sym, val));
switch (val) {
case no: line[0] = 'n'; break;
case mod: line[0] = 'm'; break;
case yes: line[0] = 'y'; break;
}
line[1] = '\n';
line[2] = 0;
break;
default:
break;
}
printf("%s", line);
return 1;
}
@@ -127,7 +183,7 @@ int conf_string(struct menu *menu)
const char *def;
while (1) {
printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
printf("%*s%s ", indent - 1, "", menu->prompt->text);
printf("(%s) ", sym->name);
def = sym_get_string_value(sym);
if (sym_get_string_value(sym))
@@ -160,7 +216,7 @@ static int conf_sym(struct menu *menu)
tristate oldval, newval;
while (1) {
printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
printf("%*s%s ", indent - 1, "", menu->prompt->text);
if (sym->name)
printf("(%s) ", sym->name);
type = sym_get_type(sym);
@@ -250,7 +306,7 @@ static int conf_choice(struct menu *menu)
case no:
return 1;
case mod:
printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
return 0;
case yes:
break;
@@ -260,7 +316,7 @@ static int conf_choice(struct menu *menu)
while (1) {
int cnt, def;
printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
def_sym = sym_get_choice_value(sym);
cnt = def = 0;
line[0] = 0;
@@ -268,7 +324,7 @@ static int conf_choice(struct menu *menu)
if (!menu_is_visible(child))
continue;
if (!child->sym) {
printf("%*c %s\n", indent, '*', _(menu_get_prompt(child)));
printf("%*c %s\n", indent, '*', menu_get_prompt(child));
continue;
}
cnt++;
@@ -277,14 +333,14 @@ static int conf_choice(struct menu *menu)
printf("%*c", indent, '>');
} else
printf("%*c", indent, ' ');
printf(" %d. %s", cnt, _(menu_get_prompt(child)));
printf(" %d. %s", cnt, menu_get_prompt(child));
if (child->sym->name)
printf(" (%s)", child->sym->name);
if (!sym_has_value(child->sym))
printf(_(" (NEW)"));
printf(" (NEW)");
printf("\n");
}
printf(_("%*schoice"), indent - 1, "");
printf("%*schoice", indent - 1, "");
if (cnt == 1) {
printf("[1]: 1\n");
goto conf_childs;
@@ -317,7 +373,15 @@ static int conf_choice(struct menu *menu)
else
continue;
break;
default:
case set_random:
if (is_new)
def = (random() % cnt) + 1;
case set_default:
case set_yes:
case set_mod:
case set_no:
cnt = def;
printf("%d\n", cnt);
break;
}
@@ -335,9 +399,9 @@ static int conf_choice(struct menu *menu)
continue;
}
sym_set_choice_value(sym, child->sym);
for (child = child->list; child; child = child->next) {
if (child->list) {
indent += 2;
conf(child);
conf(child->list);
indent -= 2;
}
return 1;
@@ -369,7 +433,7 @@ static void conf(struct menu *menu)
if (prompt)
printf("%*c\n%*c %s\n%*c\n",
indent, '*',
indent, '*', _(prompt),
indent, '*', prompt,
indent, '*');
default:
;
@@ -431,29 +495,30 @@ static void check_conf(struct menu *menu)
int main(int ac, char **av)
{
int opt;
int i = 1;
const char *name;
struct stat tmpstat;
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
switch (opt) {
if (ac > i && av[i][0] == '-') {
switch (av[i++][1]) {
case 'o':
input_mode = ask_silent;
input_mode = ask_new;
break;
case 's':
input_mode = ask_silent;
sync_kconfig = 1;
valid_stdin = isatty(0) && isatty(1) && isatty(2);
break;
case 'd':
input_mode = set_default;
break;
case 'D':
input_mode = set_default;
defconfig_file = optarg;
defconfig_file = av[i++];
if (!defconfig_file) {
printf(_("%s: No default config file specified\n"),
av[0]);
exit(1);
}
break;
case 'n':
input_mode = set_no;
@@ -465,63 +530,44 @@ int main(int ac, char **av)
input_mode = set_yes;
break;
case 'r':
{
struct timeval now;
unsigned int seed;
/*
* Use microseconds derived seed,
* compensate for systems where it may be zero
*/
gettimeofday(&now, NULL);
seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
srand(seed);
input_mode = set_random;
srandom(time(NULL));
break;
}
case 'h':
printf(_("See README for usage info\n"));
case '?':
fprintf(stderr, "See README for usage info\n");
exit(0);
break;
default:
fprintf(stderr, _("See README for usage info\n"));
exit(1);
}
}
if (ac == optind) {
name = av[i];
if (!name) {
printf(_("%s: Kconfig file missing\n"), av[0]);
exit(1);
}
name = av[optind];
conf_parse(name);
if (sync_kconfig) {
name = conf_get_configname();
if (stat(name, &tmpstat)) {
fprintf(stderr, _("***\n"
"*** You have not yet configured Buildroot!\n"
"*** (missing .config file \"%s\")\n"
"***\n"
"*** Please run some configurator (e.g. \"make oldconfig\" or\n"
"*** \"make menuconfig\" or \"make xconfig\").\n"
"***\n"), name);
exit(1);
}
}
/*zconfdump(stdout);*/
switch (input_mode) {
case set_default:
if (!defconfig_file)
defconfig_file = conf_get_default_confname();
if (conf_read(defconfig_file)) {
printf(_("***\n"
printf("***\n"
"*** Can't find default configuration \"%s\"!\n"
"***\n"), defconfig_file);
"***\n", defconfig_file);
exit(1);
}
break;
case ask_silent:
if (stat(".config", &tmpstat)) {
printf(_("***\n"
"*** You have not yet configured Buildroot!\n"
"*** (missing .config file)\n"
"***\n"
"*** Please run some configurator (e.g. \"make oldconfig\" or\n"
"*** \"make menuconfig\" or \"make config\").\n"
"***\n"));
exit(1);
}
case ask_all:
case ask_new:
conf_read(NULL);
@@ -551,70 +597,35 @@ int main(int ac, char **av)
break;
}
if (sync_kconfig) {
if (conf_get_changed()) {
name = getenv("KCONFIG_NOSILENTUPDATE");
if (name && *name) {
fprintf(stderr,
_("\n*** Buildroot configuration requires explicit update.\n\n"));
return 1;
}
}
valid_stdin = isatty(0) && isatty(1) && isatty(2);
}
switch (input_mode) {
case set_no:
conf_set_all_new_symbols(def_no);
break;
case set_yes:
conf_set_all_new_symbols(def_yes);
break;
case set_mod:
conf_set_all_new_symbols(def_mod);
break;
case set_random:
conf_set_all_new_symbols(def_random);
break;
case set_default:
conf_set_all_new_symbols(def_default);
break;
case ask_new:
case ask_all:
if (input_mode != ask_silent) {
rootEntry = &rootmenu;
conf(&rootmenu);
input_mode = ask_silent;
/* fall through */
case ask_silent:
/* Update until a loop caused no more changes */
do {
conf_cnt = 0;
check_conf(&rootmenu);
} while (conf_cnt);
break;
if (input_mode == ask_all) {
input_mode = ask_silent;
valid_stdin = 1;
}
} else if (conf_get_changed()) {
name = getenv("KCONFIG_NOSILENTUPDATE");
if (name && *name) {
fprintf(stderr, _("\n*** Buildroot configuration requires explicit update.\n\n"));
return 1;
}
} else
goto skip_check;
do {
conf_cnt = 0;
check_conf(&rootmenu);
} while (conf_cnt);
if (conf_write(NULL)) {
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
return 1;
}
skip_check:
if (/*input_mode == ask_silent &&*/ conf_write_autoconf()) {
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
return 1;
}
if (sync_kconfig) {
/* silentoldconfig is used during the build so we shall update autoconf.
* All other commands are only used to generate a config.
*/
if (conf_get_changed() && conf_write(NULL)) {
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
exit(1);
}
if (conf_write_autoconf()) {
fprintf(stderr, _("\n*** Error during update of the Buildroot configuration.\n\n"));
return 1;
}
} else {
if (conf_write(NULL)) {
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
exit(1);
}
if (conf_write_autoconf()) {
fprintf(stderr, _("\n*** Error during update of the Buildroot configuration.\n\n"));
return 1;
}
}
return 0;
}

View File

@@ -42,11 +42,6 @@ const char *conf_get_configname(void)
return name ? name : ".config";
}
const char *conf_get_autoconfig_name(void)
{
return getenv("KCONFIG_AUTOCONFIG");
}
static char *conf_expand_value(const char *in)
{
struct symbol *sym;
@@ -229,7 +224,7 @@ load:
if (def == S_DEF_USER) {
sym = sym_find(line + 2);
if (!sym) {
sym_add_change_count(1);
conf_warning("trying to assign nonexistent symbol %s", line + 2);
break;
}
} else {
@@ -238,7 +233,8 @@ load:
sym->type = S_BOOLEAN;
}
if (sym->flags & def_flags) {
conf_warning("override: reassigning to symbol %s", sym->name);
conf_warning("trying to reassign symbol %s", sym->name);
break;
}
switch (sym->type) {
case S_BOOLEAN:
@@ -264,7 +260,7 @@ load:
if (def == S_DEF_USER) {
sym = sym_find(line);
if (!sym) {
sym_add_change_count(1);
conf_warning("trying to assign nonexistent symbol %s", line);
break;
}
} else {
@@ -273,7 +269,8 @@ load:
sym->type = S_OTHER;
}
if (sym->flags & def_flags) {
conf_warning("override: reassigning to symbol %s", sym->name);
conf_warning("trying to reassign symbol %s", sym->name);
break;
}
if (conf_set_sym_val(sym, def, def_flags, p))
continue;
@@ -297,12 +294,14 @@ load:
}
break;
case yes:
if (cs->def[def].tri != no)
conf_warning("override: %s changes choice state", sym->name);
cs->def[def].val = sym;
if (cs->def[def].tri != no) {
conf_warning("%s creates inconsistent choice state", sym->name);
cs->flags &= ~def_flags;
} else
cs->def[def].val = sym;
break;
}
cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);
cs->def[def].tri = E_OR(cs->def[def].tri, sym->def[def].tri);
}
}
fclose(in);
@@ -314,7 +313,7 @@ load:
int conf_read(const char *name)
{
struct symbol *sym, *choice_sym;
struct symbol *sym;
struct property *prop;
struct expr *e;
int i, flags;
@@ -355,9 +354,9 @@ int conf_read(const char *name)
*/
prop = sym_get_choice_prop(sym);
flags = sym->flags;
expr_list_for_each_sym(prop->expr, e, choice_sym)
if (choice_sym->visible != no)
flags &= choice_sym->flags;
for (e = prop->expr; e; e = e->left.expr)
if (e->right.sym->visible != no)
flags &= e->right.sym->flags;
sym->flags &= flags | ~SYMBOL_DEF_USER;
}
@@ -555,15 +554,15 @@ int conf_write(const char *name)
int conf_split_config(void)
{
const char *name;
char path[128];
char *opwd, *dir, *_name;
char *name, path[128], *opwd, *dir, *_name;
char *s, *d, c;
struct symbol *sym;
struct stat sb;
int res, i, fd;
name = conf_get_autoconfig_name();
name = getenv("KCONFIG_AUTOCONFIG");
if (!name)
name = "include/config/auto.conf";
conf_read_simple(name, S_DEF_AUTO);
opwd = malloc(256);
@@ -684,7 +683,7 @@ int conf_write_autoconf(void)
{
struct symbol *sym;
const char *str;
const char *name;
char *name;
FILE *out, *out_h;
time_t now;
int i, l;
@@ -784,7 +783,9 @@ int conf_write_autoconf(void)
name = "include/linux/autoconf.h";
if (rename(".tmpconfig.h", name))
return 1;
name = conf_get_autoconfig_name();
name = getenv("KCONFIG_AUTOCONFIG");
if (!name)
name = "include/config/auto.conf";
/*
* This must be the last step, kbuild has a dependency on auto.conf
* and this marks the successful completion of the previous steps.
@@ -821,93 +822,3 @@ void conf_set_changed_callback(void (*fn)(void))
{
conf_changed_callback = fn;
}
void conf_set_all_new_symbols(enum conf_def_mode mode)
{
struct symbol *sym, *csym;
struct property *prop;
struct expr *e;
int i, cnt, def;
for_all_symbols(i, sym) {
if (sym_has_value(sym))
continue;
switch (sym_get_type(sym)) {
case S_BOOLEAN:
case S_TRISTATE:
switch (mode) {
case def_yes:
sym->def[S_DEF_USER].tri = yes;
break;
case def_mod:
sym->def[S_DEF_USER].tri = mod;
break;
case def_no:
sym->def[S_DEF_USER].tri = no;
break;
case def_random:
sym->def[S_DEF_USER].tri = (tristate)(rand() % 3);
break;
default:
continue;
}
if (!(sym_is_choice(sym) && mode == def_random))
sym->flags |= SYMBOL_DEF_USER;
break;
default:
break;
}
}
sym_clear_all_valid();
if (mode != def_random)
return;
/*
* We have different type of choice blocks.
* If curr.tri equal to mod then we can select several
* choice symbols in one block.
* In this case we do nothing.
* If curr.tri equal yes then only one symbol can be
* selected in a choice block and we set it to yes,
* and the rest to no.
*/
for_all_symbols(i, csym) {
if (sym_has_value(csym) || !sym_is_choice(csym))
continue;
sym_calc_value(csym);
if (csym->curr.tri != yes)
continue;
prop = sym_get_choice_prop(csym);
/* count entries in choice block */
cnt = 0;
expr_list_for_each_sym(prop->expr, e, sym)
cnt++;
/*
* find a random value and set it to yes,
* set the rest to no so we have only one set
*/
def = (rand() % cnt);
cnt = 0;
expr_list_for_each_sym(prop->expr, e, sym) {
if (def == cnt++) {
sym->def[S_DEF_USER].tri = yes;
csym->def[S_DEF_USER].val = sym;
}
else {
sym->def[S_DEF_USER].tri = no;
}
}
csym->flags |= SYMBOL_DEF_USER;
/* clear VALID to get value calculated */
csym->flags &= ~(SYMBOL_VALID);
}
}

View File

@@ -87,7 +87,7 @@ struct expr *expr_copy(struct expr *org)
break;
case E_AND:
case E_OR:
case E_LIST:
case E_CHOICE:
e->left.expr = expr_copy(org->left.expr);
e->right.expr = expr_copy(org->right.expr);
break;
@@ -217,7 +217,7 @@ int expr_eq(struct expr *e1, struct expr *e2)
expr_free(e2);
trans_count = old_count;
return res;
case E_LIST:
case E_CHOICE:
case E_RANGE:
case E_NONE:
/* panic */;
@@ -648,7 +648,7 @@ struct expr *expr_transform(struct expr *e)
case E_EQUAL:
case E_UNEQUAL:
case E_SYMBOL:
case E_LIST:
case E_CHOICE:
break;
default:
e->left.expr = expr_transform(e->left.expr);
@@ -932,7 +932,7 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb
break;
case E_SYMBOL:
return expr_alloc_comp(type, e->left.sym, sym);
case E_LIST:
case E_CHOICE:
case E_RANGE:
case E_NONE:
/* panic */;
@@ -955,14 +955,14 @@ tristate expr_calc_value(struct expr *e)
case E_AND:
val1 = expr_calc_value(e->left.expr);
val2 = expr_calc_value(e->right.expr);
return EXPR_AND(val1, val2);
return E_AND(val1, val2);
case E_OR:
val1 = expr_calc_value(e->left.expr);
val2 = expr_calc_value(e->right.expr);
return EXPR_OR(val1, val2);
return E_OR(val1, val2);
case E_NOT:
val1 = expr_calc_value(e->left.expr);
return EXPR_NOT(val1);
return E_NOT(val1);
case E_EQUAL:
sym_calc_value(e->left.sym);
sym_calc_value(e->right.sym);
@@ -1000,9 +1000,9 @@ int expr_compare_type(enum expr_type t1, enum expr_type t2)
if (t2 == E_OR)
return 1;
case E_OR:
if (t2 == E_LIST)
if (t2 == E_CHOICE)
return 1;
case E_LIST:
case E_CHOICE:
if (t2 == 0)
return 1;
default:
@@ -1034,18 +1034,12 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
expr_print(e->left.expr, fn, data, E_NOT);
break;
case E_EQUAL:
if (e->left.sym->name)
fn(data, e->left.sym, e->left.sym->name);
else
fn(data, NULL, "<choice>");
fn(data, e->left.sym, e->left.sym->name);
fn(data, NULL, "=");
fn(data, e->right.sym, e->right.sym->name);
break;
case E_UNEQUAL:
if (e->left.sym->name)
fn(data, e->left.sym, e->left.sym->name);
else
fn(data, NULL, "<choice>");
fn(data, e->left.sym, e->left.sym->name);
fn(data, NULL, "!=");
fn(data, e->right.sym, e->right.sym->name);
break;
@@ -1059,11 +1053,11 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
fn(data, NULL, " && ");
expr_print(e->right.expr, fn, data, E_AND);
break;
case E_LIST:
case E_CHOICE:
fn(data, e->right.sym, e->right.sym->name);
if (e->left.expr) {
fn(data, NULL, " ^ ");
expr_print(e->left.expr, fn, data, E_LIST);
expr_print(e->left.expr, fn, data, E_CHOICE);
}
break;
case E_RANGE:

View File

@@ -25,13 +25,14 @@ struct file {
#define FILE_BUSY 0x0001
#define FILE_SCANNED 0x0002
#define FILE_PRINTED 0x0004
typedef enum tristate {
no, mod, yes
} tristate;
enum expr_type {
E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE
E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
};
union expr_data {
@@ -44,12 +45,9 @@ struct expr {
union expr_data left, right;
};
#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
#define EXPR_NOT(dep) (2-(dep))
#define expr_list_for_each_sym(l, e, s) \
for (e = (l); e && (s = e->right.sym); e = e->left.expr)
#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
#define E_NOT(dep) (2-(dep))
struct expr_value {
struct expr *expr;
@@ -65,13 +63,9 @@ enum symbol_type {
S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
};
/* enum values are used as index to symbol.def[] */
enum {
S_DEF_USER, /* main user value */
S_DEF_AUTO, /* values read from auto.conf */
S_DEF_DEF3, /* Reserved for UI usage */
S_DEF_DEF4, /* Reserved for UI usage */
S_DEF_COUNT
S_DEF_AUTO
};
struct symbol {
@@ -79,7 +73,7 @@ struct symbol {
char *name;
enum symbol_type type;
struct symbol_value curr;
struct symbol_value def[S_DEF_COUNT];
struct symbol_value def[4];
tristate visible;
int flags;
struct property *prop;
@@ -88,64 +82,42 @@ struct symbol {
#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
#define SYMBOL_CONST 0x0001 /* symbol is const */
#define SYMBOL_CHECK 0x0008 /* used during dependency checking */
#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */
#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
#define SYMBOL_WRITE 0x0200 /* ? */
#define SYMBOL_CHANGED 0x0400 /* ? */
#define SYMBOL_AUTO 0x1000 /* value from environment variable */
#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
#define SYMBOL_WARNED 0x8000 /* warning has been issued */
/* Set when symbol.def[] is used */
#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */
#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */
#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */
#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */
#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */
#define SYMBOL_CONST 0x0001
#define SYMBOL_CHECK 0x0008
#define SYMBOL_CHOICE 0x0010
#define SYMBOL_CHOICEVAL 0x0020
#define SYMBOL_PRINTED 0x0040
#define SYMBOL_VALID 0x0080
#define SYMBOL_OPTIONAL 0x0100
#define SYMBOL_WRITE 0x0200
#define SYMBOL_CHANGED 0x0400
#define SYMBOL_AUTO 0x1000
#define SYMBOL_CHECKED 0x2000
#define SYMBOL_WARNED 0x8000
#define SYMBOL_DEF 0x10000
#define SYMBOL_DEF_USER 0x10000
#define SYMBOL_DEF_AUTO 0x20000
#define SYMBOL_DEF3 0x40000
#define SYMBOL_DEF4 0x80000
#define SYMBOL_MAXLENGTH 256
#define SYMBOL_HASHSIZE 257
#define SYMBOL_HASHMASK 0xff
/* A property represent the config options that can be associated
* with a config "symbol".
* Sample:
* config FOO
* default y
* prompt "foo prompt"
* select BAR
* config BAZ
* int "BAZ Value"
* range 1..255
*/
enum prop_type {
P_UNKNOWN,
P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
P_COMMENT, /* text associated with a comment */
P_MENU, /* prompt associated with a menuconfig option */
P_DEFAULT, /* default y */
P_CHOICE, /* choice value */
P_SELECT, /* select BAR */
P_RANGE, /* range 7..100 (for a symbol) */
P_ENV, /* value from environment variable */
P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
};
struct property {
struct property *next; /* next property - null if last */
struct symbol *sym; /* the symbol for which the property is associated */
enum prop_type type; /* type of property */
const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */
struct property *next;
struct symbol *sym;
enum prop_type type;
const char *text;
struct expr_value visible;
struct expr *expr; /* the optional conditional part of the property */
struct menu *menu; /* the menu the property are associated with
* valid for: P_SELECT, P_RANGE, P_CHOICE,
* P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */
struct file *file; /* what file was this property defined */
int lineno; /* what lineno was this property defined */
struct expr *expr;
struct menu *menu;
struct file *file;
int lineno;
};
#define for_all_properties(sym, st, tok) \

View File

@@ -119,6 +119,8 @@ const char *dbg_print_flags(int val)
strcat(buf, "choice/");
if (val & SYMBOL_CHOICEVAL)
strcat(buf, "choiceval/");
if (val & SYMBOL_PRINTED)
strcat(buf, "printed/");
if (val & SYMBOL_VALID)
strcat(buf, "valid/");
if (val & SYMBOL_OPTIONAL)
@@ -455,18 +457,14 @@ static void text_insert_help(struct menu *menu)
{
GtkTextBuffer *buffer;
GtkTextIter start, end;
const char *prompt = _(menu_get_prompt(menu));
const char *prompt = menu_get_prompt(menu);
gchar *name;
const char *help;
help = menu_get_help(menu);
/* Gettextize if the help text not empty */
if ((help != 0) && (help[0] != 0))
help = _(help);
help = _(menu_get_help(menu));
if (menu->sym && menu->sym->name)
name = g_strdup_printf(menu->sym->name);
name = g_strdup_printf(_(menu->sym->name));
else
name = g_strdup("");
@@ -1173,7 +1171,7 @@ static gchar **fill_row(struct menu *menu)
bzero(row, sizeof(row));
row[COL_OPTION] =
g_strdup_printf("%s %s", _(menu_get_prompt(menu)),
g_strdup_printf("%s %s", menu_get_prompt(menu),
sym && sym_has_value(sym) ? "(NEW)" : "");
if (show_all && !menu_is_visible(menu))
@@ -1223,7 +1221,7 @@ static gchar **fill_row(struct menu *menu)
if (def_menu)
row[COL_VALUE] =
g_strdup(_(menu_get_prompt(def_menu)));
g_strdup(menu_get_prompt(def_menu));
}
if (sym->flags & SYMBOL_CHOICEVAL)
row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);

View File

@@ -24,7 +24,7 @@ visible if its parent entry is also visible.
Menu entries
------------
Most entries define a config option; all other entries help to organize
Most entries define a config option, all other entries help to organize
them. A single configuration option is defined like this:
config MODVERSIONS
@@ -50,7 +50,7 @@ applicable everywhere (see syntax).
- type definition: "bool"/"tristate"/"string"/"hex"/"int"
Every config option must have a type. There are only two basic types:
tristate and string; the other types are based on these two. The type
tristate and string, the other types are based on these two. The type
definition optionally accepts an input prompt, so these two examples
are equivalent:
@@ -104,15 +104,14 @@ applicable everywhere (see syntax).
Reverse dependencies can only be used with boolean or tristate
symbols.
Note:
select should be used with care. select will force
a symbol to a value without visiting the dependencies.
By abusing select you are able to select a symbol FOO even
if FOO depends on BAR that is not set.
In general use select only for non-visible symbols
(no prompts anywhere) and for symbols with no dependencies.
That will limit the usefulness but on the other hand avoid
the illegal configurations all over.
kconfig should one day warn about such things.
select is evil.... select will by brute force set a symbol
equal to 'y' without visiting the dependencies. So abusing
select you are able to select a symbol FOO even if FOO depends
on BAR that is not set. In general use select only for
non-visible symbols (no promts anywhere) and for symbols with
no dependencies. That will limit the usefulness but on the
other hand avoid the illegal configurations all over. kconfig
should one day warn about such things.
- numerical ranges: "range" <symbol> <symbol> ["if" <expr>]
This allows to limit the range of possible input values for int
@@ -128,27 +127,6 @@ applicable everywhere (see syntax).
used to help visually separate configuration logic from help within
the file as an aid to developers.
- misc options: "option" <symbol>[=<value>]
Various less common options can be defined via this option syntax,
which can modify the behaviour of the menu entry and its config
symbol. These options are currently possible:
- "defconfig_list"
This declares a list of default entries which can be used when
looking for the default configuration (which is used when the main
.config doesn't exists yet.)
- "modules"
This declares the symbol to be used as the MODULES symbol, which
enables the third modular state for all config symbols.
- "env"=<value>
This imports the environment variable into Kconfig. It behaves like
a default, except that the value comes from the environment, this
also means that the behaviour when mixing it with normal defaults is
undefined at this point. The symbol is currently not exported back
to the build environment (if this is desired, it can be done via
another symbol).
Menu dependencies
-----------------
@@ -184,9 +162,9 @@ An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
respectively for calculations). A menu entry becomes visible when it's
expression evaluates to 'm' or 'y'.
There are two types of symbols: constant and non-constant symbols.
Non-constant symbols are the most common ones and are defined with the
'config' statement. Non-constant symbols consist entirely of alphanumeric
There are two types of symbols: constant and nonconstant symbols.
Nonconstant symbols are the most common ones and are defined with the
'config' statement. Nonconstant symbols consist entirely of alphanumeric
characters or underscores.
Constant symbols are only part of expressions. Constant symbols are
always surrounded by single or double quotes. Within the quote, any
@@ -323,57 +301,3 @@ mainmenu:
This sets the config program's title bar if the config program chooses
to use it.
Kconfig hints
-------------
This is a collection of Kconfig tips, most of which aren't obvious at
first glance and most of which have become idioms in several Kconfig
files.
Adding common features and make the usage configurable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is a common idiom to implement a feature/functionality that are
relevant for some architectures but not all.
The recommended way to do so is to use a config variable named HAVE_*
that is defined in a common Kconfig file and selected by the relevant
architectures.
An example is the generic IOMAP functionality.
We would in lib/Kconfig see:
# Generic IOMAP is used to ...
config HAVE_GENERIC_IOMAP
config GENERIC_IOMAP
depends on HAVE_GENERIC_IOMAP && FOO
And in lib/Makefile we would see:
obj-$(CONFIG_GENERIC_IOMAP) += iomap.o
For each architecture using the generic IOMAP functionality we would see:
config X86
select ...
select HAVE_GENERIC_IOMAP
select ...
Note: we use the existing config option and avoid creating a new
config variable to select HAVE_GENERIC_IOMAP.
Note: the use of the internal config variable HAVE_GENERIC_IOMAP, it is
introduced to overcome the limitation of select which will force a
config option to 'y' no matter the dependencies.
The dependencies are moved to the symbol GENERIC_IOMAP and we avoid the
situation where select forces a symbol equals to 'y'.
Build as module only
~~~~~~~~~~~~~~~~~~~~
To restrict a component build to module-only, qualify its config symbol
with "depends on m". E.g.:
config FOO
depends on BAR && m
limits FOO to module (=m) or disabled (=n).

File diff suppressed because it is too large Load Diff

View File

@@ -43,10 +43,6 @@ static char *escape(const char* text, char *bf, int len)
++text;
goto next;
}
else if (*text == '\\') {
*bfp++ = '\\';
len--;
}
*bfp++ = *text++;
next:
--len;

View File

@@ -27,7 +27,7 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
#define YY_FLEX_SUBMINOR_VERSION 35
#define YY_FLEX_SUBMINOR_VERSION 33
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
@@ -49,7 +49,7 @@
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#if __STDC_VERSION__ >= 199901L
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
* if you want the limit (max/min) macros for int types.
@@ -72,6 +72,7 @@ typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
@@ -102,8 +103,6 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
#endif /* ! C99 */
#endif /* ! FLEXINT_H */
#ifdef __cplusplus
@@ -113,12 +112,11 @@ typedef unsigned int flex_uint32_t;
#else /* ! __cplusplus */
/* C99 requires __STDC__ to be defined as 1. */
#if defined (__STDC__)
#if __STDC__
#define YY_USE_CONST
#endif /* defined (__STDC__) */
#endif /* __STDC__ */
#endif /* ! __cplusplus */
#ifdef YY_USE_CONST
@@ -198,9 +196,14 @@ extern FILE *zconfin, *zconfout;
#define unput(c) yyunput( c, (yytext_ptr) )
/* The following is because we cannot portably get our hands on size_t
* (without autoconf's help, which isn't available because we want
* flex-generated scanners to compile on their own).
*/
#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef size_t yy_size_t;
typedef unsigned int yy_size_t;
#endif
#ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -764,7 +767,6 @@ int zconf_flex_debug = 0;
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *zconftext;
#define YY_NO_INPUT 1
/*
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
@@ -813,6 +815,12 @@ void new_string(void)
void append_string(const char *str, int size)
{
int new_size = text_size + size + 1;
if ((YY_START == 2 /* HELP */) && (size > 70)) {
fprintf (stderr, "%s:%d warning: Overlong line\n",
current_file->name, current_file->lineno);
}
if (new_size > text_asize) {
new_size += START_STRSIZE - 1;
new_size &= -START_STRSIZE;
@@ -851,35 +859,6 @@ void alloc_string(const char *str, int size)
static int yy_init_globals (void );
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
int zconflex_destroy (void );
int zconfget_debug (void );
void zconfset_debug (int debug_flag );
YY_EXTRA_TYPE zconfget_extra (void );
void zconfset_extra (YY_EXTRA_TYPE user_defined );
FILE *zconfget_in (void );
void zconfset_in (FILE * in_str );
FILE *zconfget_out (void );
void zconfset_out (FILE * out_str );
int zconfget_leng (void );
char *zconfget_text (void );
int zconfget_lineno (void );
void zconfset_lineno (int line_number );
/* Macros after this point can all be overridden by user definitions in
* section 1.
*/
@@ -922,7 +901,7 @@ static int input (void );
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite().
*/
#define ECHO fwrite( zconftext, zconfleng, 1, zconfout )
#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
#endif
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -1302,11 +1281,6 @@ YY_RULE_SETUP
case 32:
YY_RULE_SETUP
{
while (zconfleng) {
if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
break;
zconfleng--;
}
append_string(zconftext, zconfleng);
if (!first_ts)
first_ts = last_ts;
@@ -1562,7 +1536,7 @@ static int yy_get_next_buffer (void)
/* Read in more data. */
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
(yy_n_chars), (size_t) num_to_read );
(yy_n_chars), num_to_read );
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
@@ -1586,14 +1560,6 @@ static int yy_get_next_buffer (void)
else
ret_val = EOB_ACT_CONTINUE_SCAN;
if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
/* Extend the array by 50%, plus the number we really need. */
yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
}
(yy_n_chars) += number_to_move;
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
@@ -1980,9 +1946,7 @@ static void zconfensure_buffer_stack (void)
(yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
(num_to_alloc * sizeof(struct yy_buffer_state*)
);
if ( ! (yy_buffer_stack) )
YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
(yy_buffer_stack_max) = num_to_alloc;
@@ -2000,8 +1964,6 @@ static void zconfensure_buffer_stack (void)
((yy_buffer_stack),
num_to_alloc * sizeof(struct yy_buffer_state*)
);
if ( ! (yy_buffer_stack) )
YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
/* zero only the new slots.*/
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -2046,7 +2008,7 @@ YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
/** Setup the input buffer state to scan a string. The next call to zconflex() will
* scan from a @e copy of @a str.
* @param yystr a NUL-terminated string to scan
* @param str a NUL-terminated string to scan
*
* @return the newly allocated buffer state object.
* @note If you want to scan bytes that may contain NUL values, then use
@@ -2370,14 +2332,11 @@ void zconf_nextfile(const char *name)
current_buf = buf;
if (file->flags & FILE_BUSY) {
printf("%s:%d: do not source '%s' from itself\n",
zconf_curname(), zconf_lineno(), name);
printf("recursive scan (%s)?\n", name);
exit(1);
}
if (file->flags & FILE_SCANNED) {
printf("%s:%d: file '%s' is already sourced from '%s'\n",
zconf_curname(), zconf_lineno(), name,
file->parent->name);
printf("file %s already scanned?\n", name);
exit(1);
}
file->flags |= FILE_BUSY;

View File

@@ -11,9 +11,9 @@
#ifndef KBUILD_NO_NLS
# include <libintl.h>
#else
static inline const char *gettext(const char *txt) { return txt; }
static inline void textdomain(const char *domainname) {}
static inline void bindtextdomain(const char *name, const char *dir) {}
# define gettext(Msgid) ((const char *) (Msgid))
# define textdomain(Domainname) ((const char *) (Domainname))
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
#endif
#ifdef __cplusplus
@@ -42,17 +42,8 @@ extern "C" {
#define TF_PARAM 0x0002
#define TF_OPTION 0x0004
enum conf_def_mode {
def_default,
def_yes,
def_mod,
def_no,
def_random
};
#define T_OPT_MODULES 1
#define T_OPT_DEFCONFIG_LIST 2
#define T_OPT_ENV 3
struct kconf_id {
int name;
@@ -74,18 +65,15 @@ char *zconf_curname(void);
/* confdata.c */
const char *conf_get_configname(void);
const char *conf_get_autoconfig_name(void);
char *conf_get_default_confname(void);
void sym_set_change_count(int count);
void sym_add_change_count(int count);
void conf_set_all_new_symbols(enum conf_def_mode mode);
/* kconfig_load.c */
void kconfig_load(void);
/* menu.c */
void menu_init(void);
void menu_warn(struct menu *menu, const char *fmt, ...);
struct menu *menu_add_menu(void);
void menu_end_menu(void);
void menu_add_entry(struct symbol *sym);
@@ -115,8 +103,6 @@ void str_printf(struct gstr *gs, const char *fmt, ...);
const char *str_get(struct gstr *gs);
/* symbol.c */
extern struct expr *sym_env_list;
void sym_init(void);
void sym_clear_all_valid(void);
void sym_set_all_changed(void);
@@ -124,7 +110,6 @@ void sym_set_changed(struct symbol *sym);
struct symbol *sym_check_deps(struct symbol *sym);
struct property *prop_alloc(enum prop_type type, struct symbol *sym);
struct symbol *prop_get_symbol(struct property *prop);
struct property *sym_get_env_prop(struct symbol *sym);
static inline tristate sym_get_tristate_value(struct symbol *sym)
{

View File

@@ -21,7 +21,7 @@ P(menu_get_help,const char *,(struct menu *menu));
/* symbol.c */
P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
P(sym_lookup,struct symbol *,(const char *name, int flags));
P(sym_lookup,struct symbol *,(const char *name, int isconst));
P(sym_find,struct symbol *,(const char *name));
P(sym_re_search,struct symbol **,(const char *pattern));
P(sym_type_name,const char *,(enum symbol_type type));

View File

@@ -36,23 +36,19 @@ trap "rm -f $tmp" 0 1 2 3 15
# Check if we can link to ncurses
check() {
$cc -xc - -o $tmp 2>/dev/null <<'EOF'
#include CURSES_LOC
main() {}
EOF
echo "main() {}" | $cc -xc - -o $tmp 2> /dev/null
if [ $? != 0 ]; then
echo " *** Unable to find the ncurses libraries or the" 1>&2
echo " *** required header files." 1>&2
echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2
echo " *** " 1>&2
echo " *** Install ncurses (ncurses-devel) and try again." 1>&2
echo " *** " 1>&2
exit 1
echo " *** Unable to find the ncurses libraries." 1>&2
echo " *** make menuconfig require the ncurses libraries" 1>&2
echo " *** " 1>&2
echo " *** Install ncurses (ncurses-devel) and try again" 1>&2
echo " *** " 1>&2
exit 1
fi
}
usage() {
printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n"
printf "Usage: $0 [-check compiler options|-header|-library]\n"
}
if [ $# -eq 0 ]; then

View File

@@ -41,8 +41,7 @@ static void print_item(WINDOW * win, int choice, int selected)
wmove(win, choice, check_x);
wattrset(win, selected ? dlg.check_selected.atr
: dlg.check.atr);
if (!item_is_tag(':'))
wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
mvwaddch(win, choice, item_x, item_str()[0]);
@@ -98,8 +97,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
int x = width / 2 - 11;
int y = height - 2;
print_button(dialog, gettext("Select"), y, x, selected == 0);
print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
print_button(dialog, "Select", y, x, selected == 0);
print_button(dialog, " Help ", y, x + 14, selected == 1);
wmove(dialog, y, x + 1 + 14 * selected);
wrefresh(dialog);

View File

@@ -26,12 +26,6 @@
#include <string.h>
#include <stdbool.h>
#ifndef KBUILD_NO_NLS
# include <libintl.h>
#else
# define gettext(Msgid) ((const char *) (Msgid))
#endif
#ifdef __sun__
#define CURS_MACROS
#endif
@@ -193,9 +187,10 @@ int item_is_tag(char tag);
int on_key_esc(WINDOW *win);
int on_key_resize(void);
int init_dialog(const char *backtitle);
void init_dialog(const char *backtitle);
void set_dialog_backtitle(const char *backtitle);
void end_dialog(int x, int y);
void reset_dialog(void);
void end_dialog(void);
void attr_clear(WINDOW * win, int height, int width, chtype attr);
void dialog_clear(void);
void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);

View File

@@ -31,8 +31,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
int x = width / 2 - 11;
int y = height - 2;
print_button(dialog, gettext(" Ok "), y, x, selected == 0);
print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
print_button(dialog, " Ok ", y, x, selected == 0);
print_button(dialog, " Help ", y, x + 14, selected == 1);
wmove(dialog, y, x + 1 + 14 * selected);
wrefresh(dialog);
@@ -89,7 +89,7 @@ do_resize:
box_y = y + 2;
box_x = (width - box_width) / 2;
draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
dlg.dialog.atr, dlg.border.atr);
dlg.border.atr, dlg.dialog.atr);
print_buttons(dialog, height, width, 0);

View File

@@ -157,9 +157,9 @@ static void print_buttons(WINDOW * win, int height, int width, int selected)
int x = width / 2 - 16;
int y = height - 2;
print_button(win, gettext("Select"), y, x, selected == 0);
print_button(win, gettext(" Exit "), y, x + 12, selected == 1);
print_button(win, gettext(" Help "), y, x + 24, selected == 2);
print_button(win, "Select", y, x, selected == 0);
print_button(win, " Exit ", y, x + 12, selected == 1);
print_button(win, " Help ", y, x + 24, selected == 2);
wmove(win, y, x + 1 + 12 * selected);
wrefresh(win);

View File

@@ -114,7 +114,7 @@ do_resize:
print_title(dialog, title, width);
print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE);
print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
wnoutrefresh(dialog);
getyx(dialog, cur_y, cur_x); /* Save cursor position */

View File

@@ -266,26 +266,10 @@ void dialog_clear(void)
/*
* Do some initialization for dialog
*/
int init_dialog(const char *backtitle)
void init_dialog(const char *backtitle)
{
int height, width;
initscr(); /* Init curses */
getmaxyx(stdscr, height, width);
if (height < 19 || width < 80) {
endwin();
return -ERRDISPLAYTOOSMALL;
}
dlg.backtitle = backtitle;
color_setup(getenv("MENUCONFIG_COLOR"));
keypad(stdscr, TRUE);
cbreak();
noecho();
dialog_clear();
return 0;
}
void set_dialog_backtitle(const char *backtitle)
@@ -293,14 +277,20 @@ void set_dialog_backtitle(const char *backtitle)
dlg.backtitle = backtitle;
}
void reset_dialog(void)
{
initscr(); /* Init curses */
keypad(stdscr, TRUE);
cbreak();
noecho();
dialog_clear();
}
/*
* End using dialog functions.
*/
void end_dialog(int x, int y)
void end_dialog(void)
{
/* move cursor back to original position */
move(y, x);
refresh();
endwin();
}

View File

@@ -29,8 +29,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
int x = width / 2 - 10;
int y = height - 2;
print_button(dialog, gettext(" Yes "), y, x, selected == 0);
print_button(dialog, gettext(" No "), y, x + 13, selected == 1);
print_button(dialog, " Yes ", y, x, selected == 0);
print_button(dialog, " No ", y, x + 13, selected == 1);
wmove(dialog, y, x + 1 + 13 * selected);
wrefresh(dialog);

View File

@@ -8,13 +8,17 @@
* i18n, 2005, Arnaldo Carvalho de Melo <acme@conectiva.com.br>
*/
#include <sys/ioctl.h>
#include <sys/wait.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <signal.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
#include <locale.h>
@@ -270,6 +274,8 @@ search_help[] = N_(
"\n");
static int indent;
static struct termios ios_org;
static int rows = 0, cols = 0;
static struct menu *current_menu;
static int child_count;
static int single_menu_mode;
@@ -283,16 +289,51 @@ static void show_textbox(const char *title, const char *text, int r, int c);
static void show_helptext(const char *title, const char *text);
static void show_help(struct menu *menu);
static void init_wsize(void)
{
struct winsize ws;
char *env;
if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &ws)) {
rows = ws.ws_row;
cols = ws.ws_col;
}
if (!rows) {
env = getenv("LINES");
if (env)
rows = atoi(env);
if (!rows)
rows = 24;
}
if (!cols) {
env = getenv("COLUMNS");
if (env)
cols = atoi(env);
if (!cols)
cols = 80;
}
if (rows < 19 || cols < 80) {
fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
exit(1);
}
rows -= 4;
cols -= 5;
}
static void get_prompt_str(struct gstr *r, struct property *prop)
{
int i, j;
struct menu *submenu[8], *menu;
str_printf(r, _("Prompt: %s\n"), _(prop->text));
str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name,
str_printf(r, "Prompt: %s\n", prop->text);
str_printf(r, " Defined at %s:%d\n", prop->menu->file->name,
prop->menu->lineno);
if (!expr_is_yes(prop->visible.expr)) {
str_append(r, _(" Depends on: "));
str_append(r, " Depends on: ");
expr_gstr_print(prop->visible.expr, r);
str_append(r, "\n");
}
@@ -300,13 +341,13 @@ static void get_prompt_str(struct gstr *r, struct property *prop)
for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent)
submenu[i++] = menu;
if (i > 0) {
str_printf(r, _(" Location:\n"));
str_printf(r, " Location:\n");
for (j = 4; --i >= 0; j += 2) {
menu = submenu[i];
str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu)));
str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
if (menu->sym) {
str_printf(r, " (%s [=%s])", menu->sym->name ?
menu->sym->name : _("<choice>"),
menu->sym->name : "<choice>",
sym_get_string_value(menu->sym));
}
str_append(r, "\n");
@@ -336,7 +377,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym)
if (hit)
str_append(r, "\n");
if (sym->rev_dep.expr) {
str_append(r, _(" Selected by: "));
str_append(r, " Selected by: ");
expr_gstr_print(sym->rev_dep.expr, r);
str_append(r, "\n");
}
@@ -352,7 +393,7 @@ static struct gstr get_relations_str(struct symbol **sym_arr)
for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
get_symbol_str(&res, sym);
if (!i)
str_append(&res, _("No matches found.\n"));
str_append(&res, "No matches found.\n");
return res;
}
@@ -432,7 +473,6 @@ static void build_conf(struct menu *menu)
switch (prop->type) {
case P_MENU:
child_count++;
prompt = _(prompt);
if (single_menu_mode) {
item_make("%s%*c%s",
menu->data ? "-->" : "++>",
@@ -448,7 +488,7 @@ static void build_conf(struct menu *menu)
case P_COMMENT:
if (prompt) {
child_count++;
item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt));
item_make(" %*c*** %s ***", indent + 1, ' ', prompt);
item_set_tag(':');
item_set_data(menu);
}
@@ -456,7 +496,7 @@ static void build_conf(struct menu *menu)
default:
if (prompt) {
child_count++;
item_make("---%*c%s", indent + 1, ' ', _(prompt));
item_make("---%*c%s", indent + 1, ' ', prompt);
item_set_tag(':');
item_set_data(menu);
}
@@ -500,10 +540,10 @@ static void build_conf(struct menu *menu)
item_set_data(menu);
}
item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu));
if (val == yes) {
if (def_menu) {
item_add_str(" (%s)", _(menu_get_prompt(def_menu)));
item_add_str(" (%s)", menu_get_prompt(def_menu));
item_add_str(" --->");
if (def_menu->list) {
indent += 2;
@@ -515,7 +555,7 @@ static void build_conf(struct menu *menu)
}
} else {
if (menu == current_menu) {
item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
item_make("---%*c%s", indent + 1, ' ', menu_get_prompt(menu));
item_set_tag(':');
item_set_data(menu);
goto conf_childs;
@@ -558,17 +598,17 @@ static void build_conf(struct menu *menu)
tmp = indent - tmp + 4;
if (tmp < 0)
tmp = 0;
item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)),
item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
(sym_has_value(sym) || !sym_is_changable(sym)) ?
"" : _(" (NEW)"));
"" : " (NEW)");
item_set_tag('s');
item_set_data(menu);
goto conf_childs;
}
}
item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)),
item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
(sym_has_value(sym) || !sym_is_changable(sym)) ?
"" : _(" (NEW)"));
"" : " (NEW)");
if (menu->prompt->type == P_MENU) {
item_add_str(" --->");
return;
@@ -606,7 +646,7 @@ static void conf(struct menu *menu)
item_set_tag('S');
}
dialog_clear();
res = dialog_menu(prompt ? _(prompt) : _("Main Menu"),
res = dialog_menu(prompt ? prompt : _("Main Menu"),
_(menu_instructions),
active_menu, &s_scroll);
if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
@@ -653,7 +693,7 @@ static void conf(struct menu *menu)
if (sym)
show_help(submenu);
else
show_helptext(_("README"), _(mconf_readme));
show_helptext("README", _(mconf_readme));
break;
case 3:
if (item_is_tag('t')) {
@@ -703,7 +743,7 @@ static void show_help(struct menu *menu)
if (menu_has_help(menu))
{
if (sym->name) {
str_printf(&help, "CONFIG_%s:\n\n", sym->name);
str_printf(&help, "%s:\n\n", sym->name);
str_append(&help, _(menu_get_help(menu)));
str_append(&help, "\n");
}
@@ -711,13 +751,13 @@ static void show_help(struct menu *menu)
str_append(&help, nohelp_text);
}
get_symbol_str(&help, sym);
show_helptext(_(menu_get_prompt(menu)), str_get(&help));
show_helptext(menu_get_prompt(menu), str_get(&help));
str_free(&help);
}
static void conf_choice(struct menu *menu)
{
const char *prompt = _(menu_get_prompt(menu));
const char *prompt = menu_get_prompt(menu);
struct menu *child;
struct symbol *active;
@@ -731,12 +771,7 @@ static void conf_choice(struct menu *menu)
for (child = menu->list; child; child = child->next) {
if (!menu_is_visible(child))
continue;
if (child->sym)
item_make("%s", _(menu_get_prompt(child)));
else {
item_make("*** %s ***", _(menu_get_prompt(child)));
item_set_tag(':');
}
item_make("%s", menu_get_prompt(child));
item_set_data(child);
if (child->sym == active)
item_set_selected(1);
@@ -744,7 +779,7 @@ static void conf_choice(struct menu *menu)
item_set_tag('X');
}
dialog_clear();
res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"),
res = dialog_checklist(prompt ? prompt : _("Main Menu"),
_(radiolist_instructions),
15, 70, 6);
selected = item_activate_selected();
@@ -752,9 +787,6 @@ static void conf_choice(struct menu *menu)
case 0:
if (selected) {
child = item_data();
if (!child->sym)
break;
sym_set_tristate_value(child->sym, yes);
}
return;
@@ -780,7 +812,7 @@ static void conf_string(struct menu *menu)
while (1) {
int res;
const char *heading;
char *heading;
switch (sym_get_type(menu->sym)) {
case S_INT:
@@ -793,10 +825,10 @@ static void conf_string(struct menu *menu)
heading = _(inputbox_instructions_string);
break;
default:
heading = _("Internal mconf error!");
heading = "Internal mconf error!";
}
dialog_clear();
res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"),
res = dialog_inputbox(prompt ? prompt : _("Main Menu"),
heading, 10, 75,
sym_get_string_value(menu->sym));
switch (res) {
@@ -828,7 +860,6 @@ static void conf_load(void)
return;
if (!conf_read(dialog_input_result)) {
set_config_filename(dialog_input_result);
sym_set_change_count(1);
return;
}
show_textbox(NULL, _("File does not exist!"), 5, 38);
@@ -868,9 +899,13 @@ static void conf_save(void)
}
}
static void conf_cleanup(void)
{
tcsetattr(1, TCSAFLUSH, &ios_org);
}
int main(int ac, char **av)
{
int saved_x, saved_y;
char *mode;
int res;
@@ -887,13 +922,11 @@ int main(int ac, char **av)
single_menu_mode = 1;
}
getyx(stdscr, saved_y, saved_x);
if (init_dialog(NULL)) {
fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
return 1;
}
tcgetattr(1, &ios_org);
atexit(conf_cleanup);
init_wsize();
reset_dialog();
init_dialog(NULL);
set_config_filename(conf_get_configname());
do {
conf(&rootmenu);
@@ -907,7 +940,7 @@ int main(int ac, char **av)
else
res = -1;
} while (res == KEY_ESC);
end_dialog(saved_x, saved_y);
end_dialog();
switch (res) {
case 0:
@@ -932,4 +965,3 @@ int main(int ac, char **av)
return conf_write_autoconf();
}

View File

@@ -15,7 +15,7 @@ static struct menu **last_entry_ptr;
struct file *file_list;
struct file *current_file;
void menu_warn(struct menu *menu, const char *fmt, ...)
static void menu_warn(struct menu *menu, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
@@ -172,9 +172,6 @@ void menu_add_option(int token, char *arg)
else if (sym_defconfig_list != current_entry->sym)
zconf_error("trying to redefine defconfig symbol");
break;
case T_OPT_ENV:
prop_add_env(arg);
break;
}
}
@@ -203,9 +200,12 @@ void sym_check_prop(struct symbol *sym)
prop_warn(prop,
"config symbol '%s' uses select, but is "
"not boolean or tristate", sym->name);
else if (sym2->type != S_UNKNOWN &&
sym2->type != S_BOOLEAN &&
sym2->type != S_TRISTATE)
else if (sym2->type == S_UNKNOWN)
prop_warn(prop,
"'select' used by config symbol '%s' "
"refers to undefined symbol '%s'",
sym->name, sym2->name);
else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
prop_warn(prop,
"'%s' has wrong type. 'select' only "
"accept arguments of boolean and "
@@ -235,21 +235,15 @@ void menu_finalize(struct menu *parent)
sym = parent->sym;
if (parent->list) {
if (sym && sym_is_choice(sym)) {
if (sym->type == S_UNKNOWN) {
/* find the first choice value to find out choice type */
current_entry = parent;
for (menu = parent->list; menu; menu = menu->next) {
if (menu->sym && menu->sym->type != S_UNKNOWN) {
menu_set_type(menu->sym->type);
break;
}
}
}
/* set the type of the remaining choice values */
/* find the first choice value and find out choice type */
for (menu = parent->list; menu; menu = menu->next) {
current_entry = menu;
if (menu->sym && menu->sym->type == S_UNKNOWN)
if (menu->sym) {
current_entry = parent;
menu_set_type(menu->sym->type);
current_entry = menu;
menu_set_type(sym->type);
break;
}
}
parentdep = expr_alloc_symbol(sym);
} else if (parent->prompt)
@@ -317,43 +311,27 @@ void menu_finalize(struct menu *parent)
}
}
for (menu = parent->list; menu; menu = menu->next) {
if (sym && sym_is_choice(sym) &&
menu->sym && !sym_is_choice_value(menu->sym)) {
current_entry = menu;
if (sym && sym_is_choice(sym) && menu->sym) {
menu->sym->flags |= SYMBOL_CHOICEVAL;
if (!menu->prompt)
menu_warn(menu, "choice value must have a prompt");
for (prop = menu->sym->prop; prop; prop = prop->next) {
if (prop->type == P_PROMPT && prop->menu != menu) {
prop_warn(prop, "choice values "
"currently only support a "
"single prompt");
}
if (prop->type == P_DEFAULT)
prop_warn(prop, "defaults for choice "
"values not supported");
if (prop->menu == menu)
continue;
if (prop->type == P_PROMPT &&
prop->menu->parent->sym != sym)
prop_warn(prop, "choice value used outside its choice group");
}
/* Non-tristate choice values of tristate choices must
* depend on the choice being set to Y. The choice
* values' dependencies were propagated to their
* properties above, so the change here must be re-
* propagated.
*/
if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) {
basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);
menu->dep = expr_alloc_and(basedep, menu->dep);
for (prop = menu->sym->prop; prop; prop = prop->next) {
if (prop->menu != menu)
continue;
prop->visible.expr = expr_alloc_and(expr_copy(basedep),
prop->visible.expr);
}
"values not supported");
}
current_entry = menu;
menu_set_type(sym->type);
menu_add_symbol(P_CHOICE, sym, NULL);
prop = sym_get_choice_prop(sym);
for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
;
*ep = expr_alloc_one(E_LIST, NULL);
*ep = expr_alloc_one(E_CHOICE, NULL);
(*ep)->right.sym = menu->sym;
}
if (menu->list && (!menu->prompt || !menu->prompt->text)) {
@@ -416,9 +394,9 @@ bool menu_is_visible(struct menu *menu)
const char *menu_get_prompt(struct menu *menu)
{
if (menu->prompt)
return menu->prompt->text;
return _(menu->prompt->text);
else if (menu->sym)
return menu->sym->name;
return _(menu->sym->name);
return NULL;
}

View File

@@ -5,7 +5,6 @@
#include <qapplication.h>
#include <qmainwindow.h>
#include <qdesktopwidget.h>
#include <qtoolbar.h>
#include <qlayout.h>
#include <qvbox.h>
@@ -115,7 +114,7 @@ void ConfigItem::updateMenu(void)
sym = menu->sym;
prop = menu->prompt;
prompt = _(menu_get_prompt(menu));
prompt = QString::fromLocal8Bit(menu_get_prompt(menu));
if (prop) switch (prop->type) {
case P_MENU:
@@ -209,7 +208,7 @@ void ConfigItem::updateMenu(void)
break;
}
if (!sym_has_value(sym) && visible)
prompt += _(" (NEW)");
prompt += " (NEW)";
set_prompt:
setText(promptColIdx, prompt);
}
@@ -298,10 +297,10 @@ void ConfigLineEdit::show(ConfigItem* i)
void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
{
switch (e->key()) {
case Qt::Key_Escape:
case Key_Escape:
break;
case Qt::Key_Return:
case Qt::Key_Enter:
case Key_Return:
case Key_Enter:
sym_set_string_value(item->menu->sym, text().latin1());
parent()->updateList(item);
break;
@@ -347,7 +346,7 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
for (i = 0; i < colNr; i++)
colMap[i] = colRevMap[i] = -1;
addColumn(promptColIdx, _("Option"));
addColumn(promptColIdx, "Option");
reinit();
}
@@ -361,14 +360,14 @@ void ConfigList::reinit(void)
removeColumn(nameColIdx);
if (showName)
addColumn(nameColIdx, _("Name"));
addColumn(nameColIdx, "Name");
if (showRange) {
addColumn(noColIdx, "N");
addColumn(modColIdx, "M");
addColumn(yesColIdx, "Y");
}
if (showData)
addColumn(dataColIdx, _("Value"));
addColumn(dataColIdx, "Value");
updateListAll();
}
@@ -640,7 +639,7 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
struct menu *menu;
enum prop_type type;
if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) {
if (ev->key() == Key_Escape && mode != fullMode && mode != listMode) {
emit parentSelected();
ev->accept();
return;
@@ -653,8 +652,8 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
item = (ConfigItem*)i;
switch (ev->key()) {
case Qt::Key_Return:
case Qt::Key_Enter:
case Key_Return:
case Key_Enter:
if (item->goParent) {
emit parentSelected();
break;
@@ -668,16 +667,16 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
emit menuSelected(menu);
break;
}
case Qt::Key_Space:
case Key_Space:
changeValue(item);
break;
case Qt::Key_N:
case Key_N:
setValue(item, no);
break;
case Qt::Key_M:
case Key_M:
setValue(item, mod);
break;
case Qt::Key_Y:
case Key_Y:
setValue(item, yes);
break;
default:
@@ -804,7 +803,7 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
QAction *action;
headerPopup = new QPopupMenu(this);
action = new QAction(NULL, _("Show Name"), 0, this);
action = new QAction(NULL, "Show Name", 0, this);
action->setToggleAction(TRUE);
connect(action, SIGNAL(toggled(bool)),
parent(), SLOT(setShowName(bool)));
@@ -812,7 +811,7 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
action, SLOT(setOn(bool)));
action->setOn(showName);
action->addTo(headerPopup);
action = new QAction(NULL, _("Show Range"), 0, this);
action = new QAction(NULL, "Show Range", 0, this);
action->setToggleAction(TRUE);
connect(action, SIGNAL(toggled(bool)),
parent(), SLOT(setShowRange(bool)));
@@ -820,7 +819,7 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
action, SLOT(setOn(bool)));
action->setOn(showRange);
action->addTo(headerPopup);
action = new QAction(NULL, _("Show Data"), 0, this);
action = new QAction(NULL, "Show Data", 0, this);
action->setToggleAction(TRUE);
connect(action, SIGNAL(toggled(bool)),
parent(), SLOT(setShowData(bool)));
@@ -921,7 +920,7 @@ void ConfigView::updateListAll(void)
}
ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
: Parent(parent, name), sym(0), menu(0)
: Parent(parent, name), menu(0), sym(0)
{
if (name) {
configSettings->beginGroup(name);
@@ -1042,12 +1041,7 @@ void ConfigInfoView::menuInfo(void)
if (showDebug())
debug = debug_info(sym);
help = menu_get_help(menu);
/* Gettextize if the help text not empty */
if (help.isEmpty())
help = print_filter(menu_get_help(menu));
else
help = print_filter(_(menu_get_help(menu)));
help = print_filter(_(menu_get_help(menu)));
} else if (menu->prompt) {
head += "<big><b>";
head += print_filter(_(menu->prompt->text));
@@ -1089,11 +1083,7 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
debug += "</a><br>";
break;
case P_DEFAULT:
case P_SELECT:
case P_RANGE:
case P_ENV:
debug += prop_get_type_name(prop->type);
debug += ": ";
debug += "default: ";
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
debug += "<br>";
break;
@@ -1104,6 +1094,16 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
debug += "<br>";
}
break;
case P_SELECT:
debug += "select: ";
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
debug += "<br>";
break;
case P_RANGE:
debug += "range: ";
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
debug += "<br>";
break;
default:
debug += "unknown property: ";
debug += prop_get_type_name(prop->type);
@@ -1167,7 +1167,7 @@ void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char
QPopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos)
{
QPopupMenu* popup = Parent::createPopupMenu(pos);
QAction* action = new QAction(NULL, _("Show Debug Info"), 0, popup);
QAction* action = new QAction(NULL,"Show Debug Info", 0, popup);
action->setToggleAction(TRUE);
connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool)));
@@ -1189,18 +1189,18 @@ ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *nam
QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6);
QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6);
layout2->addWidget(new QLabel(_("Find:"), this));
layout2->addWidget(new QLabel("Find:", this));
editField = new QLineEdit(this);
connect(editField, SIGNAL(returnPressed()), SLOT(search()));
layout2->addWidget(editField);
searchButton = new QPushButton(_("Search"), this);
searchButton = new QPushButton("Search", this);
searchButton->setAutoDefault(FALSE);
connect(searchButton, SIGNAL(clicked()), SLOT(search()));
layout2->addWidget(searchButton);
layout1->addLayout(layout2);
split = new QSplitter(this);
split->setOrientation(Qt::Vertical);
split->setOrientation(QSplitter::Vertical);
list = new ConfigView(split, name);
list->list->mode = listMode;
info = new ConfigInfoView(split, name);
@@ -1276,8 +1276,9 @@ ConfigMainWindow::ConfigMainWindow(void)
int x, y, width, height;
char title[256];
QDesktopWidget *d = configApp->desktop();
snprintf(title, sizeof(title), _("Buildroot Configuration"));
QWidget *d = configApp->desktop();
snprintf(title, sizeof(title), _("Linux Kernel v%s Configuration"),
getenv("KERNELVERSION"));
setCaption(title);
width = configSettings->readNumEntry("/window width", d->width() - 64);
@@ -1290,14 +1291,14 @@ ConfigMainWindow::ConfigMainWindow(void)
move(x, y);
split1 = new QSplitter(this);
split1->setOrientation(Qt::Horizontal);
split1->setOrientation(QSplitter::Horizontal);
setCentralWidget(split1);
menuView = new ConfigView(split1, "menu");
menuList = menuView->list;
split2 = new QSplitter(split1);
split2->setOrientation(Qt::Vertical);
split2->setOrientation(QSplitter::Vertical);
// create config tree
configView = new ConfigView(split2, "config");
@@ -1312,58 +1313,58 @@ ConfigMainWindow::ConfigMainWindow(void)
menu = menuBar();
toolBar = new QToolBar("Tools", this);
backAction = new QAction("Back", QPixmap(xpm_back), _("Back"), 0, this);
backAction = new QAction("Back", QPixmap(xpm_back), "Back", 0, this);
connect(backAction, SIGNAL(activated()), SLOT(goBack()));
backAction->setEnabled(FALSE);
QAction *quitAction = new QAction("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this);
QAction *quitAction = new QAction("Quit", "&Quit", CTRL+Key_Q, this);
connect(quitAction, SIGNAL(activated()), SLOT(close()));
QAction *loadAction = new QAction("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this);
QAction *loadAction = new QAction("Load", QPixmap(xpm_load), "&Load", CTRL+Key_L, this);
connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
saveAction = new QAction("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this);
saveAction = new QAction("Save", QPixmap(xpm_save), "&Save", CTRL+Key_S, this);
connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
conf_set_changed_callback(conf_changed);
// Set saveAction's initial state
conf_changed();
QAction *saveAsAction = new QAction("Save As...", _("Save &As..."), 0, this);
QAction *saveAsAction = new QAction("Save As...", "Save &As...", 0, this);
connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
QAction *searchAction = new QAction("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this);
QAction *searchAction = new QAction("Find", "&Find", CTRL+Key_F, this);
connect(searchAction, SIGNAL(activated()), SLOT(searchConfig()));
QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this);
QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), "Split View", 0, this);
connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView()));
QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this);
QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), "Split View", 0, this);
connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView()));
QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this);
QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), "Full View", 0, this);
connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView()));
QAction *showNameAction = new QAction(NULL, _("Show Name"), 0, this);
QAction *showNameAction = new QAction(NULL, "Show Name", 0, this);
showNameAction->setToggleAction(TRUE);
connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool)));
connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool)));
showNameAction->setOn(configView->showName());
QAction *showRangeAction = new QAction(NULL, _("Show Range"), 0, this);
QAction *showRangeAction = new QAction(NULL, "Show Range", 0, this);
showRangeAction->setToggleAction(TRUE);
connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool)));
connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool)));
showRangeAction->setOn(configList->showRange);
QAction *showDataAction = new QAction(NULL, _("Show Data"), 0, this);
QAction *showDataAction = new QAction(NULL, "Show Data", 0, this);
showDataAction->setToggleAction(TRUE);
connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
showDataAction->setOn(configList->showData);
QAction *showAllAction = new QAction(NULL, _("Show All Options"), 0, this);
QAction *showAllAction = new QAction(NULL, "Show All Options", 0, this);
showAllAction->setToggleAction(TRUE);
connect(showAllAction, SIGNAL(toggled(bool)), configView, SLOT(setShowAll(bool)));
connect(showAllAction, SIGNAL(toggled(bool)), menuView, SLOT(setShowAll(bool)));
showAllAction->setOn(configList->showAll);
QAction *showDebugAction = new QAction(NULL, _("Show Debug Info"), 0, this);
QAction *showDebugAction = new QAction(NULL, "Show Debug Info", 0, this);
showDebugAction->setToggleAction(TRUE);
connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool)));
showDebugAction->setOn(helpText->showDebug());
QAction *showIntroAction = new QAction(NULL, _("Introduction"), 0, this);
QAction *showIntroAction = new QAction(NULL, "Introduction", 0, this);
connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
QAction *showAboutAction = new QAction(NULL, _("About"), 0, this);
QAction *showAboutAction = new QAction(NULL, "About", 0, this);
connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
// init tool bar
@@ -1378,7 +1379,7 @@ ConfigMainWindow::ConfigMainWindow(void)
// create config menu
QPopupMenu* config = new QPopupMenu(this);
menu->insertItem(_("&File"), config);
menu->insertItem("&File", config);
loadAction->addTo(config);
saveAction->addTo(config);
saveAsAction->addTo(config);
@@ -1387,12 +1388,12 @@ ConfigMainWindow::ConfigMainWindow(void)
// create edit menu
QPopupMenu* editMenu = new QPopupMenu(this);
menu->insertItem(_("&Edit"), editMenu);
menu->insertItem("&Edit", editMenu);
searchAction->addTo(editMenu);
// create options menu
QPopupMenu* optionMenu = new QPopupMenu(this);
menu->insertItem(_("&Option"), optionMenu);
menu->insertItem("&Option", optionMenu);
showNameAction->addTo(optionMenu);
showRangeAction->addTo(optionMenu);
showDataAction->addTo(optionMenu);
@@ -1403,7 +1404,7 @@ ConfigMainWindow::ConfigMainWindow(void)
// create help menu
QPopupMenu* helpMenu = new QPopupMenu(this);
menu->insertSeparator();
menu->insertItem(_("&Help"), helpMenu);
menu->insertItem("&Help", helpMenu);
showIntroAction->addTo(helpMenu);
showAboutAction->addTo(helpMenu);
@@ -1447,27 +1448,27 @@ ConfigMainWindow::ConfigMainWindow(void)
void ConfigMainWindow::loadConfig(void)
{
QString s = QFileDialog::getOpenFileName(conf_get_configname(), NULL, this);
QString s = QFileDialog::getOpenFileName(".config", NULL, this);
if (s.isNull())
return;
if (conf_read(QFile::encodeName(s)))
QMessageBox::information(this, "qconf", _("Unable to load configuration!"));
QMessageBox::information(this, "qconf", "Unable to load configuration!");
ConfigView::updateListAll();
}
void ConfigMainWindow::saveConfig(void)
{
if (conf_write(NULL))
QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
QMessageBox::information(this, "qconf", "Unable to save configuration!");
}
void ConfigMainWindow::saveConfigAs(void)
{
QString s = QFileDialog::getSaveFileName(conf_get_configname(), NULL, this);
QString s = QFileDialog::getSaveFileName(".config", NULL, this);
if (s.isNull())
return;
if (conf_write(QFile::encodeName(s)))
QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
QMessageBox::information(this, "qconf", "Unable to save configuration!");
}
void ConfigMainWindow::searchConfig(void)
@@ -1524,8 +1525,6 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
case fullMode:
list = configList;
break;
default:
break;
}
if (list) {
@@ -1611,18 +1610,16 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)
{
if (!conf_get_changed()) {
e->accept();
conf_write_autoconf();
return;
}
QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning,
QMessageBox mb("qconf", "Save configuration?", QMessageBox::Warning,
QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
mb.setButtonText(QMessageBox::Yes, _("&Save Changes"));
mb.setButtonText(QMessageBox::No, _("&Discard Changes"));
mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit"));
mb.setButtonText(QMessageBox::Yes, "&Save Changes");
mb.setButtonText(QMessageBox::No, "&Discard Changes");
mb.setButtonText(QMessageBox::Cancel, "Cancel Exit");
switch (mb.exec()) {
case QMessageBox::Yes:
conf_write(NULL);
conf_write_autoconf();
case QMessageBox::No:
e->accept();
break;
@@ -1634,7 +1631,7 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)
void ConfigMainWindow::showIntro(void)
{
static const QString str = _("Welcome to the qconf graphical kernel configuration tool for Linux.\n\n"
static char str[] = "Welcome to the qconf graphical kernel configuration tool for Linux.\n\n"
"For each option, a blank box indicates the feature is disabled, a check\n"
"indicates it is enabled, and a dot indicates that it is to be compiled\n"
"as a module. Clicking on the box will cycle through the three states.\n\n"
@@ -1644,15 +1641,15 @@ void ConfigMainWindow::showIntro(void)
"options must be enabled to support the option you are interested in, you can\n"
"still view the help of a grayed-out option.\n\n"
"Toggling Show Debug Info under the Options menu will show the dependencies,\n"
"which you can then match by examining other options.\n\n");
"which you can then match by examining other options.\n\n";
QMessageBox::information(this, "qconf", str);
}
void ConfigMainWindow::showAbout(void)
{
static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
"Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n");
static char str[] = "qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
"Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n";
QMessageBox::information(this, "qconf", str);
}
@@ -1677,9 +1674,6 @@ void ConfigMainWindow::saveSettings(void)
case fullMode :
entry = "full";
break;
default:
break;
}
configSettings->writeEntry("/listMode", entry);
@@ -1713,7 +1707,7 @@ static const char *progname;
static void usage(void)
{
printf(_("%s <config>\n"), progname);
printf("%s <config>\n", progname);
exit(0);
}

View File

@@ -34,19 +34,18 @@ struct symbol *sym_defconfig_list;
struct symbol *modules_sym;
tristate modules_val;
struct expr *sym_env_list;
void sym_add_default(struct symbol *sym, const char *def)
{
struct property *prop = prop_alloc(P_DEFAULT, sym);
prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST));
prop->expr = expr_alloc_symbol(sym_lookup(def, 1));
}
void sym_init(void)
{
struct symbol *sym;
struct utsname uts;
char *p;
static bool inited = false;
if (inited)
@@ -55,6 +54,20 @@ void sym_init(void)
uname(&uts);
sym = sym_lookup("ARCH", 0);
sym->type = S_STRING;
sym->flags |= SYMBOL_AUTO;
p = getenv("ARCH");
if (p)
sym_add_default(sym, p);
sym = sym_lookup("BR2_VERSION", 0);
sym->type = S_STRING;
sym->flags |= SYMBOL_AUTO;
p = getenv("BR2_VERSION");
if (p)
sym_add_default(sym, p);
sym = sym_lookup("UNAME_RELEASE", 0);
sym->type = S_STRING;
sym->flags |= SYMBOL_AUTO;
@@ -104,15 +117,6 @@ struct property *sym_get_choice_prop(struct symbol *sym)
return NULL;
}
struct property *sym_get_env_prop(struct symbol *sym)
{
struct property *prop;
for_all_properties(sym, prop, P_ENV)
return prop;
return NULL;
}
struct property *sym_get_default_prop(struct symbol *sym)
{
struct property *prop;
@@ -195,7 +199,7 @@ static void sym_calc_visibility(struct symbol *sym)
tri = no;
for_all_prompts(sym, prop) {
prop->visible.tri = expr_calc_value(prop->visible.expr);
tri = EXPR_OR(tri, prop->visible.tri);
tri = E_OR(tri, prop->visible.tri);
}
if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
tri = yes;
@@ -243,7 +247,8 @@ static struct symbol *sym_calc_choice(struct symbol *sym)
/* just get the first visible value */
prop = sym_get_choice_prop(sym);
expr_list_for_each_sym(prop->expr, e, def_sym) {
for (e = prop->expr; e; e = e->left.expr) {
def_sym = e->right.sym;
sym_calc_visibility(def_sym);
if (def_sym->visible != no)
return def_sym;
@@ -298,30 +303,22 @@ void sym_calc_value(struct symbol *sym)
if (sym_is_choice_value(sym) && sym->visible == yes) {
prop = sym_get_choice_prop(sym);
newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
} else {
if (sym->visible != no) {
/* if the symbol is visible use the user value
* if available, otherwise try the default value
*/
sym->flags |= SYMBOL_WRITE;
if (sym_has_value(sym)) {
newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri,
sym->visible);
goto calc_newval;
}
}
if (sym->rev_dep.tri != no)
sym->flags |= SYMBOL_WRITE;
if (!sym_is_choice(sym)) {
} else if (E_OR(sym->visible, sym->rev_dep.tri) != no) {
sym->flags |= SYMBOL_WRITE;
if (sym_has_value(sym))
newval.tri = sym->def[S_DEF_USER].tri;
else if (!sym_is_choice(sym)) {
prop = sym_get_default_prop(sym);
if (prop) {
sym->flags |= SYMBOL_WRITE;
newval.tri = EXPR_AND(expr_calc_value(prop->expr),
prop->visible.tri);
}
if (prop)
newval.tri = expr_calc_value(prop->expr);
}
newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri);
} else if (!sym_is_choice(sym)) {
prop = sym_get_default_prop(sym);
if (prop) {
sym->flags |= SYMBOL_WRITE;
newval.tri = expr_calc_value(prop->expr);
}
calc_newval:
newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
}
if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
newval.tri = yes;
@@ -364,19 +361,14 @@ void sym_calc_value(struct symbol *sym)
}
if (sym_is_choice(sym)) {
struct symbol *choice_sym;
int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
prop = sym_get_choice_prop(sym);
expr_list_for_each_sym(prop->expr, e, choice_sym) {
choice_sym->flags |= flags;
for (e = prop->expr; e; e = e->left.expr) {
e->right.sym->flags |= flags;
if (flags & SYMBOL_CHANGED)
sym_set_changed(choice_sym);
sym_set_changed(e->right.sym);
}
}
if (sym->flags & SYMBOL_AUTO)
sym->flags &= ~SYMBOL_WRITE;
}
void sym_clear_all_valid(void)
@@ -651,7 +643,7 @@ bool sym_is_changable(struct symbol *sym)
return sym->visible > sym->rev_dep.tri;
}
struct symbol *sym_lookup(const char *name, int flags)
struct symbol *sym_lookup(const char *name, int isconst)
{
struct symbol *symbol;
const char *ptr;
@@ -671,10 +663,11 @@ struct symbol *sym_lookup(const char *name, int flags)
hash &= 0xff;
for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
if (!strcmp(symbol->name, name) &&
(flags ? symbol->flags & flags
: !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))
return symbol;
if (!strcmp(symbol->name, name)) {
if ((isconst && symbol->flags & SYMBOL_CONST) ||
(!isconst && !(symbol->flags & SYMBOL_CONST)))
return symbol;
}
}
new_name = strdup(name);
} else {
@@ -686,7 +679,8 @@ struct symbol *sym_lookup(const char *name, int flags)
memset(symbol, 0, sizeof(*symbol));
symbol->name = new_name;
symbol->type = S_UNKNOWN;
symbol->flags |= flags;
if (isconst)
symbol->flags |= SYMBOL_CONST;
symbol->next = symbol_hash[hash];
symbol_hash[hash] = symbol;
@@ -760,6 +754,8 @@ struct symbol **sym_re_search(const char *pattern)
}
struct symbol *sym_check_deps(struct symbol *sym);
static struct symbol *sym_check_expr_deps(struct expr *e)
{
struct symbol *sym;
@@ -791,65 +787,6 @@ static struct symbol *sym_check_expr_deps(struct expr *e)
}
/* return NULL when dependencies are OK */
static struct symbol *sym_check_sym_deps(struct symbol *sym)
{
struct symbol *sym2;
struct property *prop;
sym2 = sym_check_expr_deps(sym->rev_dep.expr);
if (sym2)
return sym2;
for (prop = sym->prop; prop; prop = prop->next) {
if (prop->type == P_CHOICE || prop->type == P_SELECT)
continue;
sym2 = sym_check_expr_deps(prop->visible.expr);
if (sym2)
break;
if (prop->type != P_DEFAULT || sym_is_choice(sym))
continue;
sym2 = sym_check_expr_deps(prop->expr);
if (sym2)
break;
}
return sym2;
}
static struct symbol *sym_check_choice_deps(struct symbol *choice)
{
struct symbol *sym, *sym2;
struct property *prop;
struct expr *e;
prop = sym_get_choice_prop(choice);
expr_list_for_each_sym(prop->expr, e, sym)
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
sym2 = sym_check_sym_deps(choice);
choice->flags &= ~SYMBOL_CHECK;
if (sym2)
goto out;
expr_list_for_each_sym(prop->expr, e, sym) {
sym2 = sym_check_sym_deps(sym);
if (sym2) {
fprintf(stderr, " -> %s", sym->name);
break;
}
}
out:
expr_list_for_each_sym(prop->expr, e, sym)
sym->flags &= ~SYMBOL_CHECK;
if (sym2 && sym_is_choice_value(sym2) &&
prop_get_symbol(sym_get_choice_prop(sym2)) == choice)
sym2 = choice;
return sym2;
}
struct symbol *sym_check_deps(struct symbol *sym)
{
struct symbol *sym2;
@@ -857,34 +794,33 @@ struct symbol *sym_check_deps(struct symbol *sym)
if (sym->flags & SYMBOL_CHECK) {
fprintf(stderr, "%s:%d:error: found recursive dependency: %s",
sym->prop->file->name, sym->prop->lineno,
sym->name ? sym->name : "<choice>");
sym->prop->file->name, sym->prop->lineno, sym->name);
return sym;
}
if (sym->flags & SYMBOL_CHECKED)
return NULL;
if (sym_is_choice_value(sym)) {
/* for choice groups start the check with main choice symbol */
prop = sym_get_choice_prop(sym);
sym2 = sym_check_deps(prop_get_symbol(prop));
} else if (sym_is_choice(sym)) {
sym2 = sym_check_choice_deps(sym);
} else {
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
sym2 = sym_check_sym_deps(sym);
sym->flags &= ~SYMBOL_CHECK;
}
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
sym2 = sym_check_expr_deps(sym->rev_dep.expr);
if (sym2)
goto out;
if (sym2) {
fprintf(stderr, " -> %s", sym->name ? sym->name : "<choice>");
if (sym2 == sym) {
fprintf(stderr, "\n");
zconfnerrs++;
sym2 = NULL;
}
for (prop = sym->prop; prop; prop = prop->next) {
if (prop->type == P_CHOICE || prop->type == P_SELECT)
continue;
sym2 = sym_check_expr_deps(prop->visible.expr);
if (sym2)
goto out;
if (prop->type != P_DEFAULT || sym_is_choice(sym))
continue;
sym2 = sym_check_expr_deps(prop->expr);
if (sym2)
goto out;
}
out:
if (sym2)
fprintf(stderr, " -> %s%s", sym->name, sym2 == sym? "\n": "");
sym->flags &= ~SYMBOL_CHECK;
return sym2;
}
@@ -913,7 +849,7 @@ struct property *prop_alloc(enum prop_type type, struct symbol *sym)
struct symbol *prop_get_symbol(struct property *prop)
{
if (prop->expr && (prop->expr->type == E_SYMBOL ||
prop->expr->type == E_LIST))
prop->expr->type == E_CHOICE))
return prop->expr->left.sym;
return NULL;
}
@@ -923,8 +859,6 @@ const char *prop_get_type_name(enum prop_type type)
switch (type) {
case P_PROMPT:
return "prompt";
case P_ENV:
return "env";
case P_COMMENT:
return "comment";
case P_MENU:
@@ -942,32 +876,3 @@ const char *prop_get_type_name(enum prop_type type)
}
return "unknown";
}
void prop_add_env(const char *env)
{
struct symbol *sym, *sym2;
struct property *prop;
char *p;
sym = current_entry->sym;
sym->flags |= SYMBOL_AUTO;
for_all_properties(sym, prop, P_ENV) {
sym2 = prop_get_symbol(prop);
if (strcmp(sym2->name, env))
menu_warn(current_entry, "redefining environment symbol from %s",
sym2->name);
return;
}
prop = prop_alloc(P_ENV, sym);
prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST));
sym_env_list = expr_alloc_one(E_LIST, sym_env_list);
sym_env_list->right.sym = sym;
p = getenv(env);
if (p)
sym_add_default(sym, p);
else
menu_warn(current_entry, "environment variable %s undefined", env);
}

View File

@@ -132,8 +132,6 @@ next:
/* write a dependency file as used by kbuild to track dependencies */
int file_write_dep(const char *name)
{
struct symbol *sym, *env_sym;
struct expr *e;
struct file *file;
FILE *out;
@@ -149,28 +147,12 @@ int file_write_dep(const char *name)
else
fprintf(out, "\t%s\n", file->name);
}
fprintf(out, "\n%s: \\\n"
"\t$(deps_config)\n\n", conf_get_autoconfig_name());
expr_list_for_each_sym(sym_env_list, e, sym) {
struct property *prop;
const char *value;
prop = sym_get_env_prop(sym);
env_sym = prop_get_symbol(prop);
if (!env_sym)
continue;
value = getenv(env_sym->name);
if (!value)
value = "";
fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value);
fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name());
fprintf(out, "endif\n");
}
fprintf(out, "\n$(deps_config): ;\n");
fprintf(out, "\n$(BR2_DEPENDS_DIR)/config/auto.conf: \\\n"
"\t$(deps_config)\n\n"
"$(deps_config): ;\n");
fclose(out);
rename("..config.tmp", name);
return write_make_deps(NULL);
}
@@ -180,7 +162,7 @@ struct gstr str_new(void)
{
struct gstr gs;
gs.s = malloc(sizeof(char) * 64);
gs.len = 64;
gs.len = 16;
strcpy(gs.s, "\0");
return gs;
}

View File

@@ -35,10 +35,10 @@ int, T_TYPE, TF_COMMAND, S_INT
hex, T_TYPE, TF_COMMAND, S_HEX
string, T_TYPE, TF_COMMAND, S_STRING
select, T_SELECT, TF_COMMAND
enable, T_SELECT, TF_COMMAND
range, T_RANGE, TF_COMMAND
option, T_OPTION, TF_COMMAND
on, T_ON, TF_PARAM
modules, T_OPT_MODULES, TF_OPTION
defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
env, T_OPT_ENV, TF_OPTION
%%

View File

@@ -1,4 +1,4 @@
/* ANSI-C code produced by gperf version 3.0.3 */
/* ANSI-C code produced by gperf version 3.0.2 */
/* Command-line: gperf */
/* Computed positions: -k'1,3' */
@@ -53,9 +53,9 @@ kconf_id_hash (register const char *str, register unsigned int len)
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49, 11, 5,
49, 49, 49, 49, 49, 49, 49, 18, 11, 5,
0, 0, 5, 49, 5, 20, 49, 49, 5, 20,
5, 0, 30, 49, 0, 15, 0, 10, 0, 49,
5, 0, 30, 49, 0, 15, 0, 10, 49, 49,
25, 49, 49, 49, 49, 49, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
@@ -89,7 +89,6 @@ kconf_id_hash (register const char *str, register unsigned int len)
struct kconf_id_strings_t
{
char kconf_id_strings_str2[sizeof("on")];
char kconf_id_strings_str3[sizeof("env")];
char kconf_id_strings_str5[sizeof("endif")];
char kconf_id_strings_str6[sizeof("option")];
char kconf_id_strings_str7[sizeof("endmenu")];
@@ -108,6 +107,7 @@ struct kconf_id_strings_t
char kconf_id_strings_str21[sizeof("string")];
char kconf_id_strings_str22[sizeof("if")];
char kconf_id_strings_str23[sizeof("int")];
char kconf_id_strings_str24[sizeof("enable")];
char kconf_id_strings_str26[sizeof("select")];
char kconf_id_strings_str27[sizeof("modules")];
char kconf_id_strings_str28[sizeof("tristate")];
@@ -123,7 +123,6 @@ struct kconf_id_strings_t
static struct kconf_id_strings_t kconf_id_strings_contents =
{
"on",
"env",
"endif",
"option",
"endmenu",
@@ -142,6 +141,7 @@ static struct kconf_id_strings_t kconf_id_strings_contents =
"string",
"if",
"int",
"enable",
"select",
"modules",
"tristate",
@@ -157,9 +157,6 @@ static struct kconf_id_strings_t kconf_id_strings_contents =
#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
#ifdef __GNUC__
__inline
#ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__))
#endif
#endif
struct kconf_id *
kconf_id_lookup (register const char *str, register unsigned int len)
@@ -177,8 +174,7 @@ kconf_id_lookup (register const char *str, register unsigned int len)
{
{-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_OPT_ENV, TF_OPTION},
{-1},
{-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
@@ -198,7 +194,8 @@ kconf_id_lookup (register const char *str, register unsigned int len)
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
{-1}, {-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24, T_SELECT, TF_COMMAND},
{-1},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},

View File

@@ -1,6 +1,5 @@
%option backup nostdinit noyywrap never-interactive full ecs
%option 8bit backup nodefault perf-report perf-report
%option noinput
%x COMMAND HELP STRING PARAM
%{
/*
@@ -50,6 +49,11 @@ void new_string(void)
void append_string(const char *str, int size)
{
int new_size = text_size + size + 1;
if ((YY_START == 2 /* HELP */) && (size > 70)) {
fprintf (stderr, "%s:%d warning: Overlong line\n",
current_file->name, current_file->lineno);
}
if (new_size > text_asize) {
new_size += START_STRSIZE - 1;
new_size &= -START_STRSIZE;
@@ -218,11 +222,6 @@ n [A-Za-z0-9_]
append_string("\n", 1);
}
[^ \t\n].* {
while (yyleng) {
if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t'))
break;
yyleng--;
}
append_string(yytext, yyleng);
if (!first_ts)
first_ts = last_ts;
@@ -314,14 +313,11 @@ void zconf_nextfile(const char *name)
current_buf = buf;
if (file->flags & FILE_BUSY) {
printf("%s:%d: do not source '%s' from itself\n",
zconf_curname(), zconf_lineno(), name);
printf("recursive scan (%s)?\n", name);
exit(1);
}
if (file->flags & FILE_SCANNED) {
printf("%s:%d: file '%s' is already sourced from '%s'\n",
zconf_curname(), zconf_lineno(), name,
file->parent->name);
printf("file %s already scanned?\n", name);
exit(1);
}
file->flags |= FILE_BUSY;

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