Merge pull request #83616 from andir/buildRustCrate-fix-link-order-test
buildRustCrateTests: Fix link order test on darwin
This commit is contained in:
commit
a078ee21f6
@ -1,4 +1,13 @@
|
|||||||
{ lib, buildRustCrate, runCommand, runCommandCC, writeTextFile, symlinkJoin, callPackage, releaseTools }:
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, buildRustCrate
|
||||||
|
, runCommand
|
||||||
|
, runCommandCC
|
||||||
|
, writeTextFile
|
||||||
|
, symlinkJoin
|
||||||
|
, callPackage
|
||||||
|
, releaseTools
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
mkCrate = args: let
|
mkCrate = args: let
|
||||||
p = {
|
p = {
|
||||||
@ -284,12 +293,18 @@ let
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
buildInputs = let
|
buildInputs = let
|
||||||
compile = name: text: runCommandCC name {} ''
|
compile = name: text: let
|
||||||
mkdir -p $out/lib
|
src = writeTextFile {
|
||||||
$CC -shared -o $out/lib/${name}.so ${writeTextFile {
|
|
||||||
name = "${name}-src.c";
|
name = "${name}-src.c";
|
||||||
inherit text;
|
inherit text;
|
||||||
}}
|
};
|
||||||
|
in runCommandCC name {} ''
|
||||||
|
mkdir -p $out/lib
|
||||||
|
# Note: On darwin (which defaults to clang) we have to add
|
||||||
|
# `-undefined dynamic_lookup` as otherwise the compilation fails.
|
||||||
|
cc -shared \
|
||||||
|
${lib.optionalString stdenv.isDarwin "-undefined dynamic_lookup"} \
|
||||||
|
-o $out/lib/${name}${stdenv.hostPlatform.extensions.sharedLibrary} ${src}
|
||||||
'';
|
'';
|
||||||
b = compile "libb" ''
|
b = compile "libb" ''
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user