Commit Graph

103 Commits

Author SHA1 Message Date
Alexey Neyman
1da3cc59df Fix typo
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-09-03 12:11:23 -07:00
Bernhard M. Wiedemann
349be05ee5 Allow to override build date
in order to make builds reproducible.
See https://reproducible-builds.org/ for why this is good
and https://reproducible-builds.org/specs/source-date-epoch/
for the definition of this variable.

This date call is designed to work with both GNU date and BSD date.
2017-07-21 15:21:08 +02:00
Alexey Neyman
1b4e784a0b Fix debuild warnings/errors
- Update .gitignore, do not place .gitignore into directories installed
in bulk
- Remove executable permissions and shebangs from the scripts that are
supposed to be invoked only via ct-ng frontent; prepend them with $(bash).
Despite what showSamples.sh said, it already has some bashisms.
- Remove --with autotools-dev and override dh_update_autotools_config
to avoid having config.{sub,guess} clobbered with older versions
- Install bash completion where Debian (now) expects it
- Update man page to use .\" as the comment delimiter, instead of
undefined macro (."); also, minor text edits.
- Install kconfig.mk without execute permission.
- Remove shell wrappers from 170-localedef-fix-trampoline.patch, we
do not use that for applying patches
- Revoke execute permissions on 210-expat.sh
- Get flags from dpkg-buildflags if available

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-06-07 22:38:53 -07:00
Alexey Neyman
2c0fb22641 Generate config/configure.in directly
from configure rather than substitute it from Makefile. Eventually we
might want to get rid of configure.in completely, doing on-the-fly
checks at the time of `ct-ng build`, but that is left for another day.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-04-22 12:28:50 -07:00
Alexey Neyman
a61f1c5bc2 Check for ggrep/gegrep in configure
Signed-off-by: Alexey Neyman <stilor@att.net>
2017-03-08 17:06:46 -08:00
Dan McGregor
6d1bcaa2f5 Use configure to find the processor count
configure.ac now finds how to count the CPUs in a system. Currently
the getconf method and sysctl methods are supported. Adding more is
easy enough.

Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
2017-03-01 22:22:13 -06: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
b3c23b7fdb Sed version may be reported differently
Either "GNU sed, version" or "gsed (GNU sed)".

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-27 09:33:03 -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
df80f4e69d Check for C++ in configure
Recent GMP/GCC/GDB releases require c++.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-02-02 16:39:23 -08:00
Alexey Neyman
30c91131a1 Bump autoconf requirement to 2.65
Required by automake 1.15.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-29 21:39:44 -08:00
Alexey Neyman
7a94c81e5b Rework configure logic wrt GNU autotools
Rather than requiring them of a certain version, detect if they are present
(and have sufficient version) and select an appropriate companion tool
otherwise. The reason is that, for example, most recent gettext requires
automake 1.15, but the newest available CentOS has 1.13. Hence, the option
to "upgrade your system" does not apply, and the warning comment above
the companion tools is rather scary.

With this approach, it will work out of the box - either by using the host's
tools, or by building them as needed. Note that the user can still change
the setting in the config.

While there, propagate the new version checking macro to awk/bash/host binutils,
and switch from --with-foo=xxx to officially blessed FOO=xxx: the latter
does not require checking for bogus values (i.e., --with-foo, --without-foo)
and AC_PROG_* macros recognize the corresponding settings without further
modifications. For now, I kept --with-foo=, if only to complain and steer
people to the new way. To be cleaned up after a release.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-27 20:40:47 -08:00
Alexey Neyman
8dff7012be Check for git presence
... and make the optiont that fetch from Git repositories depend on
the git discovery.

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-23 18:25:15 -08:00
Alexey Neyman
3bb2bcd2a3 Add a check for gperf function signature.
Loosely based on:
c9f7b4d356

Signed-off-by: Alexey Neyman <stilor@att.net>
2017-01-12 23:00:34 -08:00
Alexey Neyman
87bfd55b3b Give companion tools some love.
Allow selection of make/m4/... version. Support imports of new versions
via addToolVersion.sh. Import newest versions of the companion tools.

One non-trivial change is the handling of make versions. Existing code
was not handling make companion tool as described (see the previous
commit). However, since most modern systems have make 4.x, that previous
commit made crosstool-ng always build make as a companion tool.

This traces back to the commit dd15c93 from 2014. That commit's log message
says that actually it was 3.81 which broke the build for certain component
(it was originally breaking eglibc, but I noticed it was breaking current
glibc on powerpc64), and introduced an option to force using 3.81 by
"components that really need it". It looks like in 2.5 years we haven't
seen any such components that really need make 3.81, and (given that make
has already had a few releases since 3.81) we're unlikely to see them
in the future.

Hence, the configure check is changed from "exactly 3.81" to "3.81 or newer".
In its current form, configure will accept make 3.80+, and will not require
make as a companion tool for 3.81+. We might want to bump the latter check
to even newer version given the claim from dd15c93. Killed
COMP_TOOLS_make_3_81_NEEDED.

Anyway, I retained 3.81 just in case; ditto for m4 1.14.3, autoconf 2.65
and automake 1.11.1.

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-11-21 23:03:03 -08:00
Bryan Hundven
58617df80d configure: Don't write a.out on static compiler check
Because I don't pass `-o` to gcc, it makes an a.out file with gcc.
For clang it doesn't make the a.out, as that is not the default.

It doesn't hurt to output to /dev/null for both.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2016-03-03 09:51:32 -08:00
Bryan Hundven
c66d5c20cf configure: Check to see if gcc can static link
This is a semi-nasty-hack to see if gcc can static link.
Obviously on Mac OS X this is not possible, so we set
CT_CONFIGURE_has_static_link=y if it can.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2016-02-26 03:52:05 -08:00
Bryan Hundven
6c49a232a8 configure: Correctly search for tinfo for kconfig
I previously thought that tinfo could only be a link to libncurses in
modern ncurses installations. I was wrong.

Now we check for ncurses, then check for tinfo. If tinfo is a link to
ncurses, it is then not required to link against. But if libtinfo is
providing tgetent, and not libncurses, then we must add it to LIBS as
well.

Also, kconfig shouldn't hardcode -lncurses, it should use what is in
$(LIBS).

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-11-14 23:14:44 -08:00
Bryan Hundven
c9f3827b91 configure: fix search for gpatch for FreeBSD
We require GNU/patch, and when we install patch with `pkg`, crosstool-ng
still only finds the BSD/patch in /usr/bin/patch.

This commit fixes that and searches for gpatch first.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-11-14 23:03:52 -08:00
Bryan Hundven
ebb0df619e configure: Check for libtinfo.so
While usually distributed with ncurses, some distributions distribute
this library separately. Check to make sure it is installed.

This closes #241

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-11-14 14:29:11 -08:00
Bryan Hundven
e4bb360748 file modes: Set files to be non-executable
I was going to start doing some autoconf work, and noticed that
configure.in was executable. Then I noticed Makefile.in was executable.

o.O

So, I ran ```find . -type f -executable``` and found a bunch of files
that shouldn't be set executable.

This commit makes them normal files again.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-11-12 23:18:04 -08:00
Ray Donnelly
2cf7a83fde Cygwin: Link to libintl for gettext
Signed-off-by: Ray Donnelly <mingw.android@gmail.com>
2015-11-13 02:17:43 +00:00
Ray Donnelly
ada8ae30a8 Add help2man as PROGS_REQ and to travis
libtool needs it.

Signed-off-by: Ray Donnelly <mingw.android@gmail.com>
2015-11-13 02:17:43 +00:00
Jean-Marie Lemetayer
6b0fa2221a Revert the automated build option
This reverts commits:
 * d6413fe29f.
 * 4f266e1a8c.

Signed-off-by: Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com>
2015-10-03 14:35:22 +02:00
Bryan Hundven
4f266e1a8c configure: Add automated build option
This commit introduces a configure time option to let the build know
that this is going to be an automated build.

This forces the build to disable the progress bar, log tool warnings,
and force the log level to debug.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-09-29 16:22:49 -07:00
Jean-Marie Lemetayer
023dfee9b4 autoconf: Update sub directory name
Due to patch 0e45cdf, the VERSION string has changed. And so, the the sub
directory names has changed too:

From 'ct-ng.1.21.0' to 'ct-ng.crosstool-ng-1.21.0-xx-yyyyyyy'

This patch rename the sub directory to: 'crosstool-ng-1.21.0-xx-yyyyyyy'

Signed-off-by: Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com>
2015-06-18 09:48:02 +02:00
Bryan Hundven
0e45cdf624 autoconf: Update version numbering
This change removes the static .version file, and moves to using the git
tag as the version number, the change number if the current commit is
newer then the latest tag, and '-dirty' if there are changes to the git
repository since the last commit that are uncommitted.

This helps us in the troubleshooting process to identify if the user is:
* using a released version (i.e.: 1.21.0)
* using a clone from git (i.e.: 1.21.0-29-13e14f)
* using a clone from git with local uncommitted changes (i.e.: 1.21.0-29-13e14f-dirty)

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2015-06-03 12:32:34 -07:00
Fabian Freyer
22f87a8a38 configure: add option to specify grep
Allows users for which GNU grep is not the default grep (e.g. BSD
folks), or is in a weird location.

Reported-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Signed-off-by: "Fabian Freyer" <fabian.freyer@physik.tu-berlin.de>
[yann.morin.1998@free.fr: split the original patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
2014-08-28 22:32:09 +02:00
Yann E. MORIN
11a7a4cdcd configure: use a saner version string for git snapshots
This avoids using an oldish tag as base for the version string.

Reported-by: Bryan Hundven <bryanhundven@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-06-27 23:36:11 +02:00
Yann E. MORIN
a11b51c254 scripts: first batch of hg->git conversion
Replace calls to 'hg' with as-close-as-possible equivalents in git.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-06-27 00:59:00 +02:00
Yann E. MORIN"
3199644ae5 configure: look for more usual g-variants of some tools
Reported-by: Bryan Hundven <bryanhundven@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-05-05 21:54:03 +02:00
Yann E. MORIN"
341a0400ba configure: prefer g-variants
For awk and make, we currently check the standard names as found on
a classic GNU-userland system, and then fallback to looking for the
g-named variants as found on a *BSD system.

But it happens that the usual name might also be available on a *BSD
system, so we should first check the g-variant.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-05-05 19:36:35 +02:00
Andreas Bießmann
f364368350 configure.ac: respect 'g' variants of libtool/libtoolize
BSD OS'es (OS X for me) provide GNU tools with prefixed 'g'. To find correct
versions of libtool/libtoolize on those systems search also for
glibtool/glibtoolize.

Signed-off-by: Andreas Bießmann <andreas@biessmann.de>
Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
[yann.morin.1998@free.fr: search for the g-variant first]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <2f1530b54afcb6a00e1d.1395158786@andreas-mbp.er.biessmann.org>
Patchwork-Id: 331467
2014-03-18 17:01:10 +01:00
Ray Donnelly
7cd670ce06 If GNU make 3.81 is not found then build it as a companion tool.
Signed-off-by: Ray Donnelly <mingw.android@gmail.com>
[yann.morin.1998@free.fr: add message "checking for make 3.81"]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <8b8bf6998f3d239f6c74.1392920971@advancedsearch.virginmedia.com>
Patchwork-Id: 322302
2014-02-20 18:23:08 +00:00
Yann E. MORIN"
182a3d711a configure: s/don't/do not/
The autoconf manual suggests not to use ' in messages.

I don't why they do, but it breaks syntax-highlighting.

Just remove the lone quote we have.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2014-01-16 23:22:19 +01:00
Ray Donnelly
d2bc2be8db configure: Add --with-gperf option
On OS X, Apple supply an old gperf (3.0.3) with xcode and
xcode commandline tools which causes build failures:

./zconf.hash.c:183:17: error: expected expression
{offsetof(struct kconf_id_strings_t, kconf_id_strings_str2),

.. upgrading to gperf 3.0.4 was sufficient to fix this,
so this option allows the user to specify the gperf
program that they wish to use.

To install gperf 3.0.4 from homebrew, I did:

    brew tap homebrew/dupes
    brew install homebrew/dupes/gperf

.. then passed --with-gperf=$BREWFIX/Cellar/gperf/3.0.4/bin/gperf
to configure

Signed-off-by: Ray Donnelly <mingw.android@gmail.com>
Message-Id: <CAOYw7dtCmcJ9WiqmQ81MmZeRPcV-tDOqe9=kRDW4uQGuZNd2Ng@mail.gmail.com>
Patchwork-Id: 274892
2013-09-14 02:45:23 +01:00
Yann E. MORIN"
41443b3d0f configure: remove trailing cruft
Remove trailing cruft left after the migration to autoconf.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2012-10-07 23:15:57 +02:00
Yann E. MORIN"
a427e20308 configure: also check for install
We also need the GNU variant for this one.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2012-07-17 22:21:28 +02:00
Yann E. MORIN"
4ebe26af1a configure: add checks for objcopy and objdump
These two went MIA after the migration to an autoconf-based ./configure.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2012-07-17 21:42:32 +02:00
Yann E. MORIN"
9c75afd9d3 configure: check for GNU awk, not any awk
Building glibc requires GNU awk, not any other.

Reported-by: Han Sooloo <hansooloo@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2012-07-14 18:25:47 +02:00
Yann E. MORIN"
74b99be334 configure: fix check for gettext
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2012-05-08 12:15:37 +02:00
Yann E. MORIN"
2baef3ce71 configure: we do not require curl, but wget.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
2012-05-05 23:04:21 +02:00
Benoît Thébaudeau"
d4cfedec3c configure: do not use '@' in version string
#0a0410dd0cb0 broke #0cc4d6352c3e. This patch fixes this, which fixes the build
of gcc/glibc/gdb manuals.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
2012-01-30 16:52:50 +01:00
Johannes Stezenbach
067467bb18 configre: properly check for libtoolize
Fix a copy-n-paste typo, where the libtoolize check
would re-run the libtool check.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
2012-01-29 11:42:30 +01:00
Yann E. MORIN"
301cadf45d configure: fix kconfig option names
In the process of converting to autoconf, the kconfig option
were not properly translated.

Fix that.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2012-01-16 23:45:16 +01:00
Yann E. MORIN"
887eefec34 configure: also detect plain grep
We need just 'grep', and we need to be able to call it with 'grep -E'.
Check for 'grep', and bailout if egrep != grep -E

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2012-01-17 00:37:59 +01:00
Yann E. MORIN"
e0babe6738 kconfig: add missing files
The real sources for a few files are the lex/yacc/gperf
files, and the C files are only generated...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2012-01-15 01:04:26 +01:00
Yann E. MORIN"
cb7fcbe1ef kconfig: install compiled frontends
The kconfig frontends are currently instaleld as source files. This is
a remnant of the early times, when I wanted a single installation of
crosstool-NG to be shared across multiple machines, potentially of
different architectures.

This does not really make sense, and it's been a long time since it
was las tpossible in practice.

So, just build the kconfig frontends at make-time, and install them
as we do for all other crosstool-NG dependent files.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2012-01-14 18:22:06 +01:00
Yann E. MORIN"
c8e39d6d29 configure: use autoconf to generate configure
Create configure.ac, an autoconf script to generate ./configure
This will be needed by a subsequent patch to properly handle
--build and --host, and more tests, when the kconfig stuff will
be installed pre-built.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-11-07 22:28:40 +01:00