Commit Graph

297 Commits

Author SHA1 Message Date
Alexey Neyman
f63fbd356f Allow for custom archive names
... and directories therein.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
d0ff020e23 Fixes for building
- Need GDB8.0 milestone
- Make uClibc "master" package
- Rename bionic -> android-ndk to match the package name and
  support suffixes for archives

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
c7a924a073 Fix printing the branch used in Git
... and prefer exact specified name, if it exists.
More bootstrap script specifications for packages.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
9cde8a61b0 Fix downloading released tarballs
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
bec14208a7 Builds comp.libs from VCS
... fails on DUMA because it cannot be compiled by newer C++, and patches
are not applied to checkouts from VCS.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
993b4acec5 Building packages using the new framework
(fails at building GMP off the VCS because it needs to run bootstrap scripts)

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
ee983f5f92 Downloading packages using new framework
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
567277099a Fix the references to old config variables
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:57:56 -07:00
Alexey Neyman
85599c4743 Point bundled patches location to packages/
Also disable per-arch patch application: this doesn't play well with the
reuse of the sources in .build/src

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-07-08 10:56:29 -07:00
hyc
8762c7698c Preliminary bionic/Android support
Mostly from Crystax NDK
2017-05-14 15:23:34 -07:00
Alexey Neyman
8f5dfe97c2 Avoid creating symlinks with empty prefix
(regression after Cygwin fix)

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-04-13 00:08:36 -07:00
Alexey Neyman
59651566a5 Make guidelines for bug reporting more explicit
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-04-10 14:01:08 -07:00
Alexey Neyman
d6bf8e2d98 Fix symlinking to multiarch tools on Cygwin
On cygwin, creating both "foo.exe" and "foo" results in 'ln -sf'
returning an error ("File exists"). However, ln silently removes
the "foo.exe" in this case, so an attempt to re-run the same command
manually then succeeds.

Hence, make binutils.sh also create symlinks with .exe prefix,
using the new & shiny routine.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-04-01 10:12:05 -07:00
Alexey Neyman
de4433298a Add a release creation script
One TBD left is the signing of the tarballs.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-03-21 14:04:12 -07:00
Alexey Neyman
11b52ab6d7 Create ld.so.conf
Also a fix for CT_IterateMultilibs: it didn't pass multi_os_dir_gcc, so
it only worked if the caller did *not* declare it as a local variable.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-03-13 01:08:13 -07:00
Alexey Neyman
b090e0f74d Fix up ld.so symlinks for musl
Convert absolute targets to relative so that they are valid on the host,
too. The procedure is very similar to uclibc, so it is moved into a
common function.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-03-12 19:41:09 -07:00
Alexey Neyman
8600f3ce56 Move tools alias creation to a common function
... and in addition to final toolchain aliasing, use it when configuring
multilibs for glibc/musl. Note that uClibc does not need it, it is
explicitly selecting the tools using CROSS_PREFIX.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-03-12 16:56:19 -07:00
Alexey Neyman
865a095d70 Do not pretend we're downloading anything
... when we're actually don't.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-03-03 16:45:05 -08:00
Alexey Neyman
439cab379e Require xz to be present
Some software starts to adopt xz-only distribution (strace,
gcc-linaro, ...). Better that than deal with cryptic errors like
"cannot find strace-.tar.bz2".

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-27 22:55:57 -08:00
Alexey Neyman
2dae1cf816 Require GNU sed
After much struggling with macos (BSD) sed and even getting everything
work in crosstool-ng itself, I had to abandon that because some
components rely on GNU syntax. Specifically, GNU libc uses '/.../{H;g}'
(note absense of the separator after 'g').

So, revert the -r/-E detection and check for sed's being of GNU origin.
MacOS people, sorry, but you'd have to install GNU sed.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-26 20:42:32 -08:00
Alexey Neyman
59bab98b2d Revert "Determine whether -E/-r option selects extended regexp"
This reverts commit 7bcf18bfab.
2017-02-26 19:06:35 -08:00
Alexey Neyman
7bcf18bfab Determine whether -E/-r option selects extended regexp
... and then use the right option. See the note in scripts/functions
on where we should use ${foo} and where just 'foo'; this boils down to
whether we can expect the build tools override to be in effect (e.g. in
the actual build scripts) or not (i.e. outside of scripts/build).
While running in scripts/functions, or in scripts/crosstool-NG.sh the
build tools override directory (.build/tools/bin) may have not been
set up (yet, or at all).

Also, modify the installed scripts (populate, xldd) accordingly.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-13 22:47:40 -08:00
Alexey Neyman
f9bec4ed7c stat: determine whether it is BSD or GNU flavor
Seems like MacOS may have either in the path.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-12 22:02:28 -08:00
Alexey Neyman
35f89c4064 Detect both wget/curl and allow user to select the agent
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-12 22:02:23 -08:00
Alexey Neyman
df68f203b4 Use 'make olddefconfig' in uClibc/uClibc-ng configuration
instead of 'make oldconfig' and responding 'y'. This avoids 'Broken pipe'
errors in the log, as well as selects default setting for all options not
explicitly set.

This requires a small fix in the old uClibc. Won't have to maintain that fix
for long though :)

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-04 21:16:10 -08:00
Alexey Neyman
a08a4c4b88 Allow for per-tool templates when creating overrides
... will be used to implement a smarter install wrapper.

While there, correct the spelling of "OVERIDE".

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-30 12:10:47 -08:00
Alexey Neyman
eb3ae48278 Fix log saving/restoring
after the CT_Log{Enable,Disable} changes.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-25 15:45:37 -08:00
Alexey Neyman
955f5bc0b8 Get rid of .config.2.
Now handled by CT_LoadConfig.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-19 18:08:29 -08:00
Alexey Neyman
c0cc73cd6f Install canadian crosses into a separate subdir.
Makes them sorted out by host, and removes the need for similar hack in
samples.mk.

Change how canadian crosses are named: using `=' character resulted in
Glibc build failure.

Move loading config into a common function, CT_LoadConfig.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-19 18:08:29 -08:00
Alexey Neyman
c1612e9295 Use ${CT_CC} instead of gcc ...
... when refering to target's compiler.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-13 21:47:07 -08:00
Alexey Neyman
9f5a92a783 Unify fetching Linaro components.
Add CT_GetLinaro, use it from gcc/binutils/gdb/glibc/newlib.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-12 23:00:41 -08:00
Alexey Neyman
b30e779d8e Catch more make errors.
Some errors from make(1) do not include a file reference in brackets.

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-12-18 10:14:40 -08:00
Alexey Neyman
b1ac2e7a7d Pass original multi_os_dir to iterator.
This is needed for callbacks that use that directory to look inside
GCC internal directories, e.g. moving the libraries. This broke
when I made libexpat for target honor ${CT_SHARED_LIBS}.

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-12-17 12:10:10 -08:00
Alexey Neyman
7e44983388 Work around Cygwin idiosyncrasy.
Cygwin doesn't like directory names ending with a dot, e.g. "multilib_."

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-12-06 10:33:20 -08:00
Alexey Neyman
488b27f58b Partially revert 6f8e89cb5c.
The referenced commit replaced 'make' with '${make}' everywhere. This is
wrong for at least the utilities that we may build as companion tools
(make, libtool): this will always invoke the version detected by configure
by supplying the absolute path. In other words, the wrappers in
.build/tools/bin are not fallbacks - they are either temporary (in case
a respective companion tool is built) or permanent redirectors.

This is the reason why the PATH= has .build/*/buildtools/bin at higher
precedence than .build/tools/bin; the latter has the versions detected by
configure and the former has the versions built as companion tools.

Revert the rest of the gang (grep/sed/...) for consistency. After all,
we may decide to supply some of them as well (awk, for instance).

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-11-20 23:50:17 -08:00
Bryan Hundven
b18469054d Merge pull request #422 from datacom-teracom/master
scripts/functions: fix log level in call to CT_DoLog
2016-08-23 14:25:48 -07:00
Alexey Neyman
98e556d386 Support multilib in sh/uClibc.
Signed-off-by: Alexey Neyman <stilor@att.net>
2016-08-23 11:00:27 -07:00
Alexey Neyman
0fdc1887a7 Change multilib functions to set the variable.
Rather than echo-ing the new value, set the value into the variable with
the name passed as an argument (similar to CT_SanitizeVarDir). This
allows to use CT_DoLog in these functions.

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-08-23 11:00:27 -07:00
Alexey Neyman
3ebc5d0c1e libc/*.sh: Deprecate libc_check_config step.
This step was only used in uClibc. However, with upcoming multilib, the
config management will have to be done for each variant differently,
anyway.

uClibc was the only user of libc_check_config step, as well as
CT_CONFIG_DIR directory. Retire these.

Two other clean-ups in uClibc.sh:
- KERNEL_HEADERS check seems to be bogus, this config option is not
  present even in 0.9.30 - which is not supported already.
- SHARED_LIB_LOADER_PREFIX was renamed to MULTILIB_DIR in 0.9.31,
  according to ChangeLog - and MULTILIB_DIR is passed from command line
  instead.

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-08-23 11:00:27 -07:00
Alexey Neyman
43c303c946 libc/*.sh: handle combinations of multilib root/dir.
Install startfiles for libc variants into the most specific combination
(suffixed sysroot, if applicable + suffixed multi-os dir, if
applicable). Install headers once in every suffixed sysroot (although it
seems that GCC picks up headers from top-level sysroot, GCC manual
claims that sysroot suffix affects headers search path).

In uClibc, this requires a better sanitization of the directory: it
creates symlinks from {sysroot}/usr/lib/{multi_os_dir} to
{sysroot}/lib/{multi_os_dir} and to do so, it counts the number of path
components in the libdir. This breaks if one of such components is `..'
- symlinks contain an extra `../..' then. Since such sanitization had to
be implemented anyway, use it in other places to print more sensible
directory names.

Also, fix the description of configure --host/--target per musl's
configure help message (and its actual code).

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-08-23 11:00:27 -07:00
Alexey Neyman
82072d0cbc multilib: Determine which options may pass through.
On some arches (e.g. MIPS) the options like -mabi do not work if
specified more than once (see the comment in 100-gcc.sh). Therefore,
we need to determine which of the options produced by <arch>.sh can
be passed to multilib builds and which must be removed (i.e., which
options vary among the multilibs).

This presents a chicken-and-egg problem. GCC developers, in their
infinite wisdom, do not allow arbitrary multilib specification to be
supplied to GCC's configure. Instead, the target (and sometimes some
extra options) determine the set of multilibs - which may include
different CPUs, different ABIs, different endianness, different FPUs,
different floating-point ABIs, ... That is, we don't know which parts
vary until we build GCC and ask it.

So, the solution implemented here is:
- For multilib builds, start with empty CT_ARCH_TARGET_CFLAGS/LDFLAGS.
- For multilib builds, require core pass 1. Pass 1 does not build any
  target binaries, so at that point, our target options have not been
  used yet.
- Provide an API to modify the environment variables for the steps that
  follow the current one.
- As a part of multilib-related housekeeping, determine the variable
  part of multilibs and filter out these options; pass the rest into
  CT_TARGET_CFLAGS/LDFLAGS.

This still does not handle extra dependencies between GCC options (like
-ma implying -mcpu=X -mtune=Y, etc.) but I feel that would complicate
matters too much. Let's leave this until there's a compelling case for
it.

Also, query GCC's sysroot suffix for targets that use it (SuperH,
for example) - the default multilib may not work if the command line
specifies the default option explicitly (%sysroot_suffix_spec is not
aware of multilib defaults).

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-08-23 11:00:27 -07:00
Carlos Santos
29df8cccf4 scripts/functions: fix log level in call to CT_DoLog
It must be "DEBUG", not "Debug"

Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
2016-08-16 23:56:23 -03:00
Ray Donnelly
c7da54edf4 glibc: Use common arch call to get multilib targets
The previous patch added the function 'CT_DoMultilibTarget()' to
scripts/build/arch/*.sh.

This patch calls the common function to (currently) get just the target
tuple for the current multilib target.

This patch was originally by: Cody P Schafer

Changed by Alexey Neyman: first, try `gcc -print-multiarch`. If it is
supported, use whatever it reports. Otherwise, fall back to our
guesswork. Move "i486" quirk into glibc.sh, as it is specific to glibc
(e.g. uclibc will need i386, which is what GCC reports).

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
Signed-off-by: Ray Donnelly <mingw.android@gmail.com>
Signed-off-by: Alexey Neyman <stilor@att.net>
2016-06-09 17:12:49 -07:00
Bryan Hundven
a9e5d4a12d functions: use 'ln -sf' for softlinks
I should have just used ln -sf when I rewrote the custom locations
change. BSD based systems don't have 'cp -s', so switch to using 'ln
-sf'.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2016-02-19 01:24:19 -08:00
Bryan Hundven
12d24ee33b functions: Softlink custom directory
Hardlinking the custom source directory does not work across separate
mount points. Chnage this to a softlink instead.

This closes #336

Reported-by: Jasmin Jessich <jasmin@anw.at>
Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2016-02-08 16:06:39 -08:00
Bryan Hundven
1b31314488 CT_GetCustom: Rewrite function to meet expectations
The previous version of CT_GetCustom was a bit... funky.
It didn't handle custom versions to location very well.

This new version is exactly as it appears:

CT_GetCustom <name> <version> <location>

The name is the beginning of the archive (file or directory).
The version is the second half of the archive.
The location is where it can be found. This should be made an absolute
path, but this version is expecting the path in kconfig to be absolute.

A file should extract to a directory: <name>-<version>
A directory will be copied to: <name>-<version>

This keeps our expectations of what we should get.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-12-08 07:20:35 -08:00
Bryan Hundven
0041a8b105 CT_Extract: Move check extracted up
If we are using a custom location, and that custom location is a
directory that does not have an associated tarball, then we shouldn't
warn about not finding a tarball in CT_TARBALLS_DIR if
CT_SRC_DIR/.<basename>.extracted is found.

If the extracted file is not found, then we can warn that the tarball
was not found then error out that the tarball is missing.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-12-08 07:20:16 -08:00
Bryan Hundven
6f8e89cb5c consistency: Use exported variables of required tools
We check for apps:

* make
* sed
* grep
* awk
* libtool/libtoolize
* install
* patch
* and more

...during configure. Our scripts should be consistent about using the
variables that define where the found tool was found.

Of course, we do hard-link these tools in buildtools, but that should be
a backup for the components we are building. Our scripts should always
use the tools we find.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-11-17 02:48:09 -08:00
Alexey Neyman
6744ff68e4 Do not log state saving/restoring as ERROR.
These are not errors.

Signed-off-by: Alexey Neyman <stilor@att.net>
2015-11-14 15:26:46 -08:00
Bryan Hundven
c4d14a97ad functions: Add global functions for manipulating kconfig options
This commit adds 4 new functions to aid in the process of managing a
kconfig .config file:

* CT_KconfigSetOption <option> <value> <file>
* CT_KconfigEnableOption <option> <file>
* CT_KconfigDisableOption <option> <file>
* CT_KconfigDeleteOption <option> <file>

(akin to how buildroot manages the uClibc.config)

These functions are global so that we can manage any component that also
uses kconfig, or to be able to use it internally on Crosstool-NG's
kconfig files.

Last but not least, be consistent and update sed to be ${sed}!

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-11-12 16:15:39 -08:00