Commit graph

46 commits

Author SHA1 Message Date
Shea Levy
9bccb95a82 cc-wrapper: Fix for cross-compiling
Fixes #5949

Suggested by @ambrop72
2015-01-25 23:29:06 -05:00
John Wiegley
28b6fb61e6 Change occurrences of gcc to the more general cc
This is done for the sake of Yosemite, which does not have gcc, and yet
this change is also compatible with Linux.
2014-12-26 11:06:21 -06:00
Eelco Dolstra
66dedaa6ee gcc-wrapper: Remove NIX_GCC_NEEDS_GREP
This is not needed on any currently supported platform.
2014-09-23 19:43:38 +02:00
Eelco Dolstra
e3f7dbbac8 Cleanup: Use += to append to envHooks 2014-08-09 12:47:05 +02:00
aszlig
625d7b9043
Merge pull request #1928 from 'cross-win-osx'.
This includes a lot of fixes for cross-building to Windows and Mac OS X
and could possibly fix things even for non-cross-builds, like for
example OpenSSL on Windows.

The main reason for merging this in 14.04 already is that we already
have runInWindowsVM in master and it doesn't work until we actually
cross-build Cygwin's setup binary as the upstream version is a fast
moving target which gets _overwritten_ on every new release.

Conflicts:
	pkgs/top-level/all-packages.nix
2014-04-21 10:00:35 +02:00
Bjørn Forsman
25f0b7cb50 gcc-{,cross-}wrapper: add 'cpp' wrapper (close #1820)
The gcc-wrapper doesn't wrap 'cpp'. This breaks some software (such as
Buildroot) because the 'cpp' they get come from the non-wrapped gcc
package which doesn't know about any standard include paths.

gcc-cross-wrapper is untested.
2014-04-02 19:05:57 +02:00
aszlig
b25ac9ea55
gcc-cross-wrapper: Revert adding LD program name.
This reverts commit c5ab2bfd25.

As mentioned in the previous commit, this is now no longer needed.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2014-03-12 10:58:55 +01:00
aszlig
c7bac81c66
Merge 'mingw-w64' and 'darwin' into cross-win-osx.
Both branches have quite a lot in common, so it's time for a merge and
do the cleanups with respect to both implementations and also generalize
both implementations as much as possible.

This also closes #1876.

Conflicts:
	pkgs/development/interpreters/lua-5/5.2.nix
	pkgs/development/libraries/SDL/default.nix
	pkgs/development/libraries/glew/default.nix
	pkgs/top-level/all-packages.nix
2014-03-12 10:16:51 +01:00
aszlig
2d17335f68
gcc-cross-wrapper: Allow to pass US X min version.
This allows to pass a new attribute osxMinVersion to crossSystem, which
specifies the minimum Mac OS X version you want to be compatible to.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2014-03-12 10:00:47 +01:00
aszlig
c5ab2bfd25
gcc-cross-wrapper: Explicitly add LD program name.
This is because autoconf is passing -print-prog-name=ld to the
cross-gcc, which in turn assumes a FHS compliant filesystem hierarchy
and searches ../../../../$crossConfig/bin/ld for the correct ld.

Of course, this won't work on Nix, hence we're explicitly passing the
correct LD program name.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2014-02-27 18:28:32 +01:00
aszlig
92c59d37a7
gcc-cross-wrapper: Enable dontStrip in setup hook.
At least for x86_64-w64-mingw32, it doesn't make sense to use the native
strip tool for stripping of symbols. To the contrary it results in
unusable archive files.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2014-02-24 07:26:23 +01:00
Lluís Batlle i Rossell
719ba63004 Merge branch 'stdenv-updates' into pi-stdenv-updates
Conflicts:
	pkgs/development/compilers/gcc/4.6/default.nix
	pkgs/development/compilers/gcc/4.7/default.nix

The 4.7 had some weird parameters added in crossAttrs; I've removed
them, but I don't understand where they come from.
2012-12-28 20:14:01 +00:00
Eelco Dolstra
84779a6f7d Remove unnecessary parentheses around if conditions
Pet peeve...
2012-12-28 19:54:15 +01:00
Lluís Batlle i Rossell
651734b619 gcc/gcc-cross-wrapper: making gcc47 work with uclibc
It wants pthreads, and libpthreads wants libdl, and this can
only be found with -rpath-link when cross building.
2012-12-26 22:00:33 +00:00
Peter Simons
94fe7bed1d Extend compiler wrapper scripts to allow compilation of "/dev/null" input.
This feature sounds crazy, but it is used in some configure scripts (e.g. xbmc).
This patch causes an almost complete rebuild of Nixpkgs.

Patch submitted by Jan Malakhovski <oxij@oxij.org>.
2012-07-02 17:15:21 +02:00
Ludovic Courtès
adcc6d4102 gcc-cross-wrapper-libs: Gracefully deal with non-existent /TRIPLET/lib dir.
This fixes the cross-MinGW environment.

svn path=/nixpkgs/trunk/; revision=33010
2012-03-12 09:45:14 +00:00
Eelco Dolstra
c556a6ea46 * "ensureDir" -> "mkdir -p". "ensureDir" is a rather pointless
function, so obsolete it.

svn path=/nixpkgs/branches/stdenv-updates/; revision=31644
2012-01-18 20:16:00 +00:00
Eelco Dolstra
3ea1c30846 * Remove the NIX_STRIP_DEBUG flag. It was undocumented and confusing
in its interaction with the ‘dontStrip’ attribute.

svn path=/nixpkgs/branches/stdenv-updates/; revision=30848
2011-12-12 14:02:12 +00:00
Lluís Batlle i Rossell
51f6aec764 Fixing the gcc-cross-wrapper; it failed after some changes related to breaking
dependencies with it. (I should never link ld.so with a NIX_LDFLAGS -rpath
forced)

I made vim, scummvm cross-build. I added prboom (that cross-builds).
Mplayer and elinks don't cross-build fine still, but are on the way.
The mplayer fails to build in a weird way; nix does not show either a gcc
error message or even the 'make' error message.

svn path=/nixpkgs/branches/stdenv-updates/; revision=23131
2010-08-11 20:14:25 +00:00
Lluís Batlle i Rossell
d5097ad3d3 Breaking dependencies on the cross-built gcc through the gcc-cross-wrapper.
svn path=/nixpkgs/branches/stdenv-updates/; revision=23073
2010-08-09 21:37:31 +00:00
Lluís Batlle i Rossell
ae3383e001 Making the cross-built packages not depend on the gcc cross compiler directly,
but on a nix-store path only having the cross-built gcc libraries.
This trims down a lot the runtime dependency tree for cross-built packages.

I also remove the glibc dependency on the native bash.

svn path=/nixpkgs/branches/stdenv-updates/; revision=23040
2010-08-08 18:47:48 +00:00
Lluís Batlle i Rossell
6d15eabdc1 Merging from trunk (the callPackage change)
svn path=/nixpkgs/branches/stdenv-updates/; revision=22915
2010-08-03 08:14:13 +00:00
Lluís Batlle i Rossell
de5e1de89b Fixing the dynamic linker in the gcc-cross-wrapper so it takes also the dynamic
linker of glibc on mips (specifically ld.so.1, and not ld-*.so.? as we had before)

svn path=/nixpkgs/trunk/; revision=22912
2010-08-02 22:44:41 +00:00
Lluís Batlle i Rossell
6f2fac6466 Merging from trunk.
I hope I resolved the conflicts well (gmp and gccCross)


svn path=/nixpkgs/branches/stdenv-updates/; revision=21251
2010-04-22 21:44:33 +00:00
Lluís Batlle i Rossell
8c2af71a0f Fixing the gcc-cross-wrapper (wanting to make it work with uclibc, I had
broken it for glibc).
Now I tested that it works for both.

svn path=/nixpkgs/trunk/; revision=20519
2010-03-10 09:15:20 +00:00
Lluís Batlle i Rossell
fb6adb13ac Updating busybox. I left only a single busybox in its directory. The others, coming from the old
cross-building nixpkgs implementation, were not referenced anywhere.

This new busybox builds natively, and also cross-builds with uclibc.

I updated the uclibc config with a busybox defconfig requirement (something about RPC).

I made the gcc-cross-wrapper properly set the dynamic loader to programs.

After this, 'qemu-arm' can run the dynamically linked busybox cross built for armv5tel--linux-gnueabi.



svn path=/nixpkgs/trunk/; revision=20514
2010-03-09 22:17:38 +00:00
Lluís Batlle i Rossell
f36f99e368 Making gcc cross-buildable, at least for glibc.
svn path=/nixpkgs/branches/stdenv-updates/; revision=20454
2010-03-06 21:41:01 +00:00
Lluís Batlle i Rossell
c6b526495b Improving the crossStripping. A cross-glibc gets broken if stripped by the
native strip. So we now distinguish dontStrip and dontCrossStrip. I updated
the expressions for glibc-2.9 and glibc-2.11 accordingly.
I could get rid of the cross-glibc depending on the cross-gcc-stage-static.

Enabling nls in the final cross-gcc.

I still have problems on wint_t/wchar_t not working on cross build. Gettext
does not build.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18562
2009-11-23 17:06:57 +00:00
Lluís Batlle i Rossell
45886e474d On native builds:
- Disabling guile test, because one fails. I commented on that in the source.
On cross builds:
- Adding stripping
- Updating the glibc-2.11 expression to match the parameters of glibc-2.9,
  which I was updating more.
- Renaming from selfNativeBuildInput to selfBuildNativeInput, so this matches
  better the pattern buildNativeInputs.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18550
2009-11-22 22:48:43 +00:00
Lluís Batlle i Rossell
585ba8c27f Big fixes in the cross build:
- Before this changes, cflags and ldflags for the native and the cross compiler
  got mixed. Not all the gcc-wrapper/gcc-cross-wrapper variables are
  independant now, but enough, I think.
- Fixed the generic stdenv expression, which did a big mess on buildInputs and
  buildNativeInputs. Now it distinguishes when there is a stdenvCross or not.
  Maybe we should have a single stdenv and forget about the stdenvCross
  adapter - this could end in a stdenv a bit complex, but simpler than the
  generic stdenv + adapter.
- Added basic support in pkgconfig for cross-builds: a single PKG_CONFIG_PATH
  now works for both the cross and the native compilers, but I think this
  should work well for most cases I can think of.
- I tried to fix the guile expression to cross-biuld; guile is built, but not
  its manual, so the derivation still fails. Guile requires patching to
  cross-build, as far as I understnad.
- Made the glibcCross build to be done through the usage of a
  gcc-cross-wrapper over the gcc-cross-stage-static, instead of using it
  directly.
- Trying to make physfs (a neverball dependency) cross build.
- Updated the gcc expression to support building a cross compiler without getting
  derivation variables mixed with those of the stdenvCross.

svn path=/nixpkgs/branches/stdenv-updates/; revision=18534
2009-11-22 19:51:45 +00:00
Lluís Batlle i Rossell
a263cb814e Fixed some details on cross compilation. Among others:
- Stating better the guile dependencies (native/host) for guile to build
- Fixing cross-linking, through --rpath-link (ld(1) explains well about it
- Made gcc call the linker and the assembler through the gcc wrapper instead of
  directly. I thought this was the source of missing -rpath's, but the source
  of the problem ended up being the lack of --rpath-link. But I think the
  native gcc calls the wrapped ld and as, so let's do the same cross
  compiling.
- Removed the binutilsCross from the glibc expressions. Now they are built
  using the gcc-cross-wrapper, and they were built with the direct gcc and
  binutils before this change.
- I think patchelf and strip don't break the cross-compiled binaries, so I
  reallow them on cross compilation.
- I disable the checkPhase on cross compilation. This made gmp and libtool
  fail when cross compiled, iirc.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18498
2009-11-21 02:42:52 +00:00
Lluís Batlle i Rossell
a5fee3325a Fixing some things on the gcc-cross-wrapper (libc was not properly added to the
linking path), and with this achieved bash being cross-compilable.
I fixed the few expressions involved in bash building, so they have well stated
native and non-native inputs.

I also tried to cross-build guile, and with this I found a problem in the
actual cross-gcc: it calls the binutils ld, instead of the ld wrapper. This
way, the programs/shared_libraries don't get the proper -rpath.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18497
2009-11-20 22:56:58 +00:00
Lluís Batlle i Rossell
6f3630e128 Attention, people who care on the builders for native builds. In the stdenv
derivation, the "buildInputs" in every stdenv mkDerivation don't map now
directly to the environment
variable "buildInputs" in the builder, but "buildNativeInputs". So, the inputs
build by the native compiler.
When cross compiling, they will map to the environment variable "buildInputs"
(yes, now the same name), which means does to be built with the cross compiler.

I think I improved the naming of variables a bit. There was a big mess,
specially in the stdenv adapter for cross building, and also in the default
builder script.

I also tried to add proper manager of propagatedInputBuilds, these being
propagated considering the host or build origin of that input build (so, at the
end, being those propagatedInputBuilds being propagated properly to the native
or the cross compiler.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18477
2009-11-19 23:05:11 +00:00
Lluís Batlle i Rossell
4dfc635cbb Fixing the uboot cross-build.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18473
2009-11-19 21:43:03 +00:00
Lluís Batlle i Rossell
4c09cfc8a3 Adding generic builder management of cross compilation: envHooksHost, pkgsHost, ...
svn path=/nixpkgs/branches/stdenv-updates/; revision=18446
2009-11-18 18:16:35 +00:00
Lluís Batlle i Rossell
0c631f6181 Trying to move all stdenv cross-compiling details out of the stdenv expression,
into a stdenv adapater.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18397
2009-11-17 21:14:57 +00:00
Lluís Batlle i Rossell
2c7fa189fb Making the definition of the cross compiling target an attribute set.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18378
2009-11-16 23:21:13 +00:00
Lluís Batlle i Rossell
3c4edd6bfa Fixing the gcc cross wrapper (removing some /usr/) so it gives proper linking.
svn path=/nixpkgs/branches/stdenv-updates/; revision=18361
2009-11-15 21:36:13 +00:00
Lluís Batlle i Rossell
2aba922d30 My first attempt at getting cross compilers in nixpkgs.
My idea is to provide special stdenv expressions that will contain in the path
additional cross compilers. As most expressions for programs accept a stdenv parameter, 
we could substitute this parameter with the special stdenv, which will have a
generic builder that attempts the usual "--target=..." and can additionally
have an env variable like "cross" with the target architecture set.
So, finally we could have additional expressions like this:

bashRealArm = makeOverridable (import ../shells/bash) {
    inherit fetchurl bison;
    stdenv = stdenvCross "armv5tel-unknown-linux-gnueabi";
};

Meanwhile it does not work - I still cannot get the cross-gcc to build.

I think it does not fill the previous expressions with a lot of noise, so I
think it may be a good path to follow.

I only touched some files of the current stdenv: gcc-4.3, kernel headers
2.6.28, glibc 2.9, ...

I tried to use the gcc-cross-wrapper, that may be very outdated. Maybe I will
update it, or update the gcc-wrapper expression to make it fit the cross tools,
but meanwhile I even cannot build gcc, so I have not tested the wrapper.

This new idea on cross compiling is not similar to that of the
nixpkgs/branches/cross-compilation, which mostly added bare new expressions for
anything to be cross compiled, if I understood it correctly.

I cared not to break anything of the usual stdenv in all this work.


svn path=/nixpkgs/branches/stdenv-updates/; revision=18343
2009-11-14 08:11:30 +00:00
Eelco Dolstra
7a79d1ff6a * Remove references to substitute.sh.
svn path=/nixpkgs/trunk/; revision=7499
2006-12-27 18:17:53 +00:00
Eelco Dolstra
01fbf62a2c * nativeGlibc -> nativeLibc (gcc-cross-wrapper is probably broken
right now; should merge gcc-wrapper changes).

svn path=/nixpkgs/trunk/; revision=6876
2006-10-27 13:44:17 +00:00
Eelco Dolstra
09a9cae715 * Merged the usability branch (from trunk@4749 to branches/usability@5087).
svn path=/nixpkgs/trunk/; revision=5088
2006-03-24 12:25:19 +00:00
Eelco Dolstra
baec8f5b38 * stdenv.mkDerivation now takes an optional attribute "meta" that
contains arbitrary information about a package, like this:

  meta = {
    homepage = "http://gcc.gnu.org/";
    license = "GPL/LGPL";
    description = "GNU Compiler Collection, 4.0.x";
  };

  The "meta" attribute is not passed to the actual derivation
  operation, so it's not a dependency --- changes to "meta" attributes
  don't trigger a recompilation.

  Now we have to standardise some useful attributes ;-)

svn path=/nixpkgs/branches/usability/; revision=5024
2006-03-10 16:12:46 +00:00
Armijn Hemel
bdf35869f6 make sure we can find things like mips-linux-ar, mips-linux-strip, and so on.
Even though you could just inherit binutils it is conceptually cleaner (I
think) to make these tools available here.

svn path=/nixpkgs/trunk/; revision=4967
2006-03-02 18:03:20 +00:00
Eelco Dolstra
82e678362f * "." -> "source".
svn path=/nixpkgs/trunk/; revision=4335
2005-12-05 14:11:09 +00:00
Armijn Hemel
508cd3a3e8 add a wrapper for cross compilers, which makes the correct link to the cross compiler. Only works for "gcc", haven't tried for g++ and the others
svn path=/nixpkgs/trunk/; revision=4317
2005-11-29 01:40:33 +00:00