This patch prevents the user from select "linux (Same version as linux
headers)" as a choice for building the kernel when an external binary
toolchain is used, since "same version as linux headers" doesn't make
sense when an external toolchain is used.
It fixes the issue encountered by Hartley <hartleys@visionengravers.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
HOST_GLIB is set to the path that contains the host glib tool set and is
used when building packages using glib. The buildroot top level Makefile
sets HOST_GLIB using which to find the path where glib-genmarshal is
located.
The problem is that a cross compiled version of glib-genmarshal is also
put in the build_ARCH/staging_dir/usr/bin directory when the package
libglib2 is built. This cross compiled version will typically not run on
the host system.
Fix it by ignoring staging_dir in the which output.
Closes#5934
jacmet: fixed to work correctly if it's only found in staging_dir.
External toolchain C++ cross-compiler fix
package/Makefile.in resets CXX to "" in TARGET_CONFIGURE_OPTS if
BR2_GCC_CROSS_CXX is not set to 'y'. However, when using an external
toolchain, BR2_GCC_CROSS_CXX is not set even if the toolchain has a
C++ cross-compiler.
This patch adds a new BR2_GCC_CROSS_CXX option in the external
toolchain configuration menu, so that just like BR2_INET_RPC,
BR2_INET_IPV6 and the others, it can be set according to the external
toolchain configuration.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
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.