Fix issues with binary external toolchains
Fix two problems encountered while using an external binary toolchain
generated by crosstool-ng:
- Don't remove the ending / in LIB_DIR, otherwise find $LIB_DIR
-maxdepth 1 doesn't find any file in the case LIB_DIR is a symbolic
link and not a directory.
For some reason, find -maxdepth 1 doesn't have the same behaviour
on directories and symbolic links. Demonstration:
$ mkdir foobar
$ touch foobar/t1
$ touch foobar/t2
$ ln -s foobar barfoo
$ find foobar -maxdepth 1 -name 't*'
foobar/t1
foobar/t2
$ find barfoo -maxdepth 1 -name 't*'
$ find barfoo/ -maxdepth 1 -name 't*'
barfoo/t1
barfoo/t2
* Make sure the libraries are writable, otherwise the strip operation
might fail. The library files may not be writable if the toolchain
is not writable (which may happen if one wants to prevent anyone
from overwriting the toolchain, which is done by crosstool-ng, for
example).
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Improve external toolchain support
* Do not put kernel-headers in the dependencies of BASE_TARGETS in
the case where BR2_TOOLCHAIN_SOURCE is not y. The kernel headers
are already supposed to be part of the external toolchain, so
there's no need to download, extract and install them.
* In the configuration system, don't display the kernel headers
version selection list when an external toolchain is selected. This
is implemented by moving the source
"toolchain/kernel-headers/Config.in" inside the if
BR2_TOOLCHAIN_SOURCE in toolchain/Config.in.2.
* Change the description and help message of the BR2_LARGEFILE,
BR2_INET_IPV6, BR2_INET_RPC, and BR2_SOFT_FLOAT option in
toolchain/external-toolchain/Config.in. In the case of an external
toolchain, the semantic of these options is not to enable large
file support, IPV6 or RPC (since the toolchain is already compiled,
it has been decided previously). Their semantic is to let Buildroot
know about the characteristics of the external toolchain being
used.
As an improvement, we could guess these values automatically:
- for BR2_LARGEFILE, look at the value of __UCLIBC_HAS_LFS__ in
bits/uClibc_config.h in the libc headers directory.
- for BR2_INET_RPC, look at the value of __UCLIBC_HAS_RPC__ in the
same file
- for BR2_INET_IPV6, look at the value of __UCLIBC_HAS_IPV6__ in
the same file
- for BR2_SOFT_FLOAT, look at the output of $(CC) -v 2>&1 | grep
-- "--with-float=soft"
But I'm not sure how this would be possible, since these values are
used at configuration-time by other configuration options, not only
at build time.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
libpng used to have the 'png' Makefile alias, which some packages used
in their dependencies list.
With the move to Makefile.autotools.in this is now gone, so update the
packages to match.
This patch will check if CONFIG_MODULES is set in the kernel .config, if not
yes then it will skip installing the modules.
Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
This patch will ask the kernel for the specific version before doing
modules_install, that way Buildroot will know which directories to remove and
what parameters to use for depmod. Needed when compiling a kernel grabbed from
GIT or vendor specific releases.
Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
Extend the regexp to match spaces and also tabs to replace the qmake
variables with the proper buildroot values. Also use TARGET_AR and
TARGET_STRIP instead of using TARGET_CROSS and set a variable for
qmake.conf to shorten the command line.
Patch by Markus Heidelberg
When cross compiling, Qt sets PKG_CONFIG in its own configure script to
an empty string. That leads to not using pkg-config. To avoid that, use
the configure option -force-pkg-config. Also set environment variables
for pkg-config defined in TARGET_CONFIGURE_OPTS.
Patch by Markus Heidelberg.
See http://buildroot.uclibc.org/lists/buildroot/2008-October/011324.html
for more details.
Fix matchbox build
This patch fixes various failures in the Matchbox build:
* libmatchbox and matchbox-panel were using a now legacy index()
function, which is not part of every uClibc build nowadays
(depending on the configuration). As this function doesn't exist
anymore in all builds, use strchr() instead, which is the
recommended replacement for index(). Two patches, one for
libmatchbox, one for matchbox-panel, are added to fix this problem.
Closes bug http://bugs.uclibc.org/view.php?id=5484
* Do not override the CFLAGS and LDFLAGS values, they are already set
by TARGET_CONFIGURE_OPTS. It caused build failures.
* Mangle the library paths in the .la file of libmatchbox, after
installation in the staging dir.
It would probably be nice to switch Matchbox over to the new
Makefile.autotools.in.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Rely on the sane default values of Makefile.autotools.in for the
staging and target installs. The immediate benefit is that the target
install will use install-strip instead of install, leading to a quite
nice size reduction in the libraries.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Use the predefined INSTALL_STAGING_OPT and INSTALL_TARGET_OPT
behaviour of Makefile.autotools.in, so that installation on the target
is done using install-strip.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The configure target of pango had strange characters in it, preventing
compilation to work. Remove them, they just seem to be mistakes.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
The configure option --disable-nls is not supported anymore in glib
since version 2.0, see file ChangeLog.pre-2-0 line 544.
Patch by Markus Heidelberg.
PKG_CONFIG_SYSROOT_DIR and friends get set in package/Makefile.in,
so there's no need to set it in the makefiles of the individual
packages as well.
Based on a patch by Markus Heidelberg.
Use one conditional if statement instead of several single "depends on".
Patch by Markus Heidelberg.
Cleaned up trailing white space while we're at it.