Commit Graph

82 Commits

Author SHA1 Message Date
Alexander von Gluck IV
cb837539f5 build/scripts: make toolchain scripts more self-sustainable
Change-Id: Ibe4cf105a20184392498371ba770529d69bd61a7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2417
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2020-03-24 18:24:13 +00:00
Alexander von Gluck IV
3d4c153e17 buildtools: Disable tls on riscv64 for now
Change-Id: I8084e0fa2ffbaf04242fa14617807d83abbd5586
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1556
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2019-08-21 12:00:51 +00:00
Augustin Cavalier
d511533a48 build_cross_tools_gcc4: Keep static libstdc++, but rename it.
The gcc_bootstrap recipe still needs it, it seems.
2019-06-16 20:30:53 -04:00
Augustin Cavalier
9bb9cc8896 build_cross_tools_gcc4: Remove the generated static libstdc++.
We always want to use the shared one from the syslibs package,
never the shared one from this build.

Part of #14842: after this change, the ICU build now fails with
"cannot find libstdc++" instead of an invalid symbol.
2019-06-15 15:42:13 -04:00
Augustin Cavalier
4dd5af2f75 build_cross_tools_gcc4: Handle $PATH having spaces in it properly.
Fixes the build of the cross tools under WSL.
2019-02-21 14:02:13 -05:00
Augustin Cavalier
5a7156f435 build_cross_tools_gcc4: Clear "missing" scripts instead of touching files.
This just stops the errors from occuring rather than trying to
rebuild the files at all. This is much cleaner, and solves
a few cases that the other method did not.
2019-02-21 14:01:40 -05:00
Augustin Cavalier
849f58107a build_cross_tools_gcc4: Enable initfini-array in binutils.
Our implementation of it now behaves properly after the last commit.

Change-Id: I6bebc91ae0f9512ea07ad6a7a4ccea9ee758e01b
Reviewed-on: https://review.haiku-os.org/c/908
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2019-01-28 16:37:28 +00:00
Augustin Cavalier
d8b0a13568 build_cross_tools: export ACLOCAL to stop GCC from trying to use it.
This should fix the build of the crosstools on Haiku, CentOS, and
other platforms with versions of autofools too old or too new for
GCC 7.
2018-11-10 14:41:55 -05:00
waddlesplash
d28caaed68 build_cross_tools: Also touch .in files to prevent their regeneration.
Change-Id: Id893460327fd6db064c6fc0fb4de8e6ada1b1773
Reviewed-on: https://review.haiku-os.org/496
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-08-28 21:27:50 +00:00
waddlesplash
2cf7d49495 build_cross_tools: Touch configure scripts so the Makefiles don't regenerate them. 2018-08-27 19:06:22 -04:00
waddlesplash
75f7932ae2 build_cross_tools_gcc4: Forcibly disable maintainer mode.
This should stop GCC from trying to reconfigure.
2018-08-26 22:24:45 -04:00
waddlesplash
d1feb7cb60 build_cross_tools: Have scripts exit on failure.
Previously they just silently continued, which meant that if part of the
cross-tools build failed, you would have to scroll back pretty far to
see what the failure was.
2018-05-19 14:54:10 -04:00
Alexander von Gluck IV
82876dc4cb build_cross_tools_gcc4: Disable TLS on PowerPC for now
Change-Id: Ib99a1a4aeeb5d17a301ffd1d9c5fcadd37261ebf
2018-02-28 21:46:24 -06:00
Jessica Hamilton
6cc6f04747 build_cross_tools_gcc4: bring in sync with native compiler.
* Previously, the cross-compiler would generate code that doesn't
  run on Haiku, particularly where TLS is concerned. It also ended
  up with a c++config.h header incompatible with the version in
  the native compiler.
* Now possible to correctly cross-compile rust for Haiku.
2017-09-05 21:41:39 +00:00
Jérôme Duval
03820c114a Update binutils_x86 and binutils for x86_gcc2 and x86_64.
* starting with 2.27, binutils defaults to initfini-array instead of init and fini,
this leads to problems in Haiku, just disable for the time being.
2017-08-06 14:12:28 +02:00
François Revol
e409118307 configure: pass proper gdb target for m68k 2016-10-20 13:30:33 +02:00
François Revol
4da6cf8403 configure: allow building GDB along with the buildtools
from a stock GDB source tree.

I was getting tired of doing it manually.

Note the prefix is not exactly the same as the buildtools since the
machine triplet is different, but it's not an issue.

Tested with arm and ppc with GDB 7.8. Might need patching gdbTarget for other archs,
as stock GDB doesn't know about Haiku.
2016-10-20 11:14:50 +02:00
François Revol
96c72d6933 typo 2016-10-20 11:14:50 +02:00
Jérôme Duval
11ece1736c build_cross_tools_gcc4: disable libatomic. 2016-05-03 21:05:31 +02:00
Adrien Destugues
d958d336a8 Try to fix the ARM cross-tools build
* Gcc5 does not allow both --with-arch and --with-cpu anymore, so use just --with-cpu.
2016-03-04 20:04:41 +01:00
François Revol
1c91ed03fa Build binutils with different extra targets depending on arch
EFI support isn't much useful for ARM.

Also add some targets to help debugging binutils on PPC.
2015-04-18 15:14:24 +02:00
Oliver Tappe
11ae3c5fe7 Cleanup build system and configuration.
* Drop unused variables from build system that refer to the system
  libraries.
* Drop unused lists of libgcc objects.
* Drop no longer used variables from configuration script.
* Remove no longer needed building of kernel-libgcc and -libsupc++ from
  build_cross_tools_gcc4, only the boot-specific (32-bit) libs are
  built for a x86_64 target.
* Explicitly disable threads and TLS support when building the cross
  compiler, as the only libraries that are used by Haiku's build system
  is the 32-bit libgcc and libsupc++ for the bootloader on x86_64 (and
  for that neither is wanted).
2014-08-13 13:32:45 +02:00
Jessica Hamilton
1a6ec00140 Re-enable TLS on x86_64 when cross-building.
Building gcc on x86_64 with TLS enabled has been fixed,
so this is to keep cross-builds and native builds in
sync.
2014-07-22 21:26:57 +12:00
Arvind S Raj
6d345e6c9d Fixed hrev47542 changeset to become sh compatible.
Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
2014-07-22 14:45:19 +12:00
Arvind S Raj
d1e057eefb Disable building gcc with TLS support since ARM build fails due to undefined references 2014-07-22 02:03:32 +12:00
Jonathan Schleifer
e0650f25c3 Build libsupc++-kernel without TLS 2014-07-20 20:32:34 +02:00
Oliver Tappe
c90d405154 Disable TLS support on x86_64 explicitly.
* Building gcc-4.8.3 on x86_64 with TLS support fails with an internal
  compiler error. Until that problem is fixed, don't use TLS on x86_64,
  which (due to libstdc++ compatibility) requires the same for the
  host cross compiler.
2014-07-03 19:43:24 +02:00
Adrien Destugues
2b103ca8be Enable TLS support in gcc.
Since hrev47198 we have ELF-based TLS support in Haiku. When building
gcc with haikuporter, this is detected by the configure script, but when
cross compiling gcc we need to manually enable it, as no runtime check
can be performed to detect the feature.

This should fix #10938 by avoiding the mix of TLS and non-TLS libstdc++.
2014-06-16 15:19:11 +02:00
Oliver Tappe
8c54af563c Whitespace cleanup in root and 'build' folder.
* Removed trailing whitespace and empty lines at top of files.
2014-05-01 12:55:41 +02:00
PulkoMandy
574dbabb00 Configure the ARM compiler to default to Cortex-A8
Ideally, we would only need to set this in build/jam/board/*, but the
flags set there are not passed to the build of packages. The default is
using some early ARM variant, for which gcc lacks some more atomic
operations and emits calls to helper functions we don't implement.

Setting the default architecture avoids this, as all packages will now
be built to target the Cortex-A8.

Also set the proper VFP version in BeagleBoard config file.

Note this breaks the Verdex and Pi builds, but ARMv7 is what we should
focus on for now. We can try to make older archs work after finishing
the m68k port.
2014-04-22 09:49:32 +02:00
PulkoMandy
b8058ea8ee Disable multilib for the ARM compiler build.
* This avoids mixup of the soft/hard float libs
* It also means we can use the hard-float libs for targets that supports
it
* Again, we could introduce an arm_softfp compiler for targets that
don't have floating point support, with a different gcc build.
2014-04-21 21:21:28 +02:00
Jérôme Duval
b3ece9056d configure: --use-gcc-pipe now affects build_cross_tools_gcc4. 2014-02-09 10:06:43 +01:00
Jérôme Duval
4f57b13404 build_cross_tools_gcc4: enable posix threads.
* build kernel libgcc and libsupc++ with disabled posix threads for all
architectures. We currently change the configuration manually, as gcc
doesn't easily let us reconfigure without a full rebuild.
2014-02-05 23:38:18 +01:00
Jérôme Duval
1e93288e65 build_cross_tools_gcc4: unbreak --use-gcc-graphite.
* added -pipe to CFLAGS, builds are faster and /tmp usage is avoided at the
cost of more memory used.
* replaced ppl by isl as required by gcc 4.8
2014-01-28 19:18:14 +01:00
Jeroen Oortwijn
467f4ab3a8 Fix for whitespace in paths
Signed-off-by: Ingo Weinhold <ingo_weinhold@gmx.de>
2013-11-26 02:06:09 +01:00
John Scipione
a7e9ce676f Use uname -s instead of uname -o
...since BSD uname (on OS X at least) doesn't have a -o param, only a -s,
Haiku has both, and both print "Haiku".
2013-09-17 14:40:22 +02:00
Ingo Weinhold
cf70d345b2 Merge remote-tracking branch 'haiku/master' into package-management
This reverts 8f7f28a7c3 (OpenGL: Upgrade
to
Mesa 9.2).

Conflicts:
	build/jam/BuildFeatures
	build/jam/HaikuImage
	build/jam/OptionalPackages
	build/scripts/build_cross_tools_gcc4
	src/add-ons/opengl/swpipe/Jamfile
	src/apps/diskusage/Jamfile
	src/kits/tracker/ContainerWindow.cpp
	src/kits/tracker/DeskWindow.cpp
	src/kits/tracker/Jamfile
2013-09-13 01:02:28 +02:00
Fredrik Holmqvist
f0aee2b4ea Enable targets for EFI on binutils.
objcopy needs to know about EFI targets if we want to build EFI Applications.
Also minor whitespace removal.
2013-08-28 19:59:56 +02:00
Ingo Weinhold
86de8c37b5 Use GNU make also for building gcc 2
Should fix the build on {Free,Open}BSD.
2013-08-22 12:32:20 +02:00
Ingo Weinhold
394c099f62 build_cross_tools_gcc4: use --with-hybrid-secondary 2013-08-07 02:13:15 +02:00
Ingo Weinhold
68ccc98930 Build the cross gcc for the secondary arch as such
Pass --enable-hybrid-secondary to gcc's configure when building it as
a secondary compiler. Doesn't make a difference for building Haiku
itself, but makes it easier to match the Haiku cross devel package with
the compiler when building bootstrap packages with haikuporter.

gcc 4 only ATM.
2013-08-04 17:21:20 +02:00
Ingo Weinhold
f975dc63f1 build_cross_tools_gcc4: move sysroot dir into install dir
This allows us to sneak in system include and library search dirs in
haikuporter without doing anything outside the cross tools dir.
2013-08-03 05:29:15 +02:00
Ingo Weinhold
c0e8cc1a13 configure: prepare for hybrid support
The goal is to do hybrid builds in a single jam (instead of calling a
sub-jam to build parts with the secondary tool chain). This changeset
adds support to configure to prepare multiple tool chains.

configure:
* Merge option --build-cross-tools-gcc4 into --build-cross-tools. The
  option does now always require a packaging architecture parameter,
  i.e. x86_gcc2 for the legacy tool chain.
* Multiple occurrences of the --build-cross-tools and
  --cross-tools-prefix options are allowed. The first one specifies the
  primary tool chain, the subsequent ones the secondary tool chains.
* All architecture dependent jam variables are now suffixed with the
  name of the packaging architecture. The new HAIKU_PACKAGING_ARCHS
  contains the packaging architectures for the prepared tool chains. The
  first element is for the primary tool chain.
* No longer generate a separate libgccObjects file. Just put the
  respective variable into BuildConfig as well.

build_cross_tools[_gcc4]:
* Replace the <haiku output dir> parameter by a <install dir>
  parameter. This allows to create different cross-tools directories.
  They are simply suffixed by the packaging architecture.

Jamrules:
* For the moment map the variables for the primary tool chain to the
  respective suffix-less variables, so that everything still works as
  before.

The next step is to actually support the secondary tool chains in the
jam build system. This will require quite a bit more butchering, though.
2013-07-25 23:52:49 +02:00
Oliver Tappe
49f8422a0d Remove whole sys-include folder when cross-compiler has been built.
* at least for gcc2, we used to leave the 'os' subfolder in there,
  which may have caused problems when Haiku's headers have changed
  since the last time the compiler was built.
(cherry picked from commit 92bb2fb33e)
2013-06-14 19:31:20 +02:00
Oliver Tappe
de2188e964 Fix #7824: failure to build a cross-compiler on Haiku.
* force creation of a cross-compiler for both gcc2 and gcc4 when
  building on Haiku (by suffixing the build and host machine with
  '_buildhost')
(cherry picked from commit df69e209bb)

Conflicts:
	build/scripts/build_cross_tools_gcc4
2013-06-14 19:30:55 +02:00
Oliver Tappe
92bb2fb33e Remove whole sys-include folder when cross-compiler has been built.
* at least for gcc2, we used to leave the 'os' subfolder in there,
  which may have caused problems when Haiku's headers have changed
  since the last time the compiler was built.
2013-06-14 16:07:06 +02:00
Oliver Tappe
df69e209bb Fix #7824: failure to build a cross-compiler on Haiku.
* force creation of a cross-compiler for both gcc2 and gcc4 when
  building on Haiku (by suffixing the build and host machine with
  '_buildhost')
2013-06-14 16:04:26 +02:00
Oliver Tappe
30c2352188 Adjust buildscript for gcc4 to configure with a sysroot. 2013-05-30 00:22:06 +02:00
Jérôme Duval
7e1f963596 style clean up 2013-04-11 18:09:35 +02:00
Jérôme Duval
575cfdf28a GCC4 cross tools: fixes the build with --use-gcc-graphite on another machine
* libsupc++ wasn't required, the build failed on x86_64.
* PPL: --disable-maintainer-mode configure option seems not enough to avoid an autoconf launch.
Solved by redefined AUTOCONF AUTOHEADER ACLOCAL AUTOMAKE variables to the noop command "true".
2013-04-11 17:57:42 +02:00