aboutsummaryrefslogtreecommitdiff
path: root/pkgs/test
diff options
context:
space:
mode:
authorJohn Ericson <Ericson2314@Yahoo.com>2017-07-26 23:28:36 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2017-07-31 17:02:56 -0400
commitf671b85fb2c082819ea419ea5b0f5914bc6f26b3 (patch)
tree7c6c35342fe3976b806f1cdc2abe2248b0c175cc /pkgs/test
parent1cd74ac70a69f60b826b20d2e31644f2a2be98ea (diff)
cc-wrapper: Beef up sierra tests to actually use functions
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/macos-sierra-shared/default.nix34
1 files changed, 28 insertions, 6 deletions
diff --git a/pkgs/test/macos-sierra-shared/default.nix b/pkgs/test/macos-sierra-shared/default.nix
index 8d7b9fc9384..ebcf6c62c60 100644
--- a/pkgs/test/macos-sierra-shared/default.nix
+++ b/pkgs/test/macos-sierra-shared/default.nix
@@ -3,30 +3,52 @@
let
makeBigExe = stdenv: prefix: rec {
+ count = 500;
+
sillyLibs = lib.genList (i: stdenv.mkDerivation rec {
name = "${prefix}-fluff-${toString i}";
unpackPhase = ''
src=$PWD
- echo 'int asdf${toString i}(void) { return ${toString i}; }' > ${name}.c
+ cat << 'EOF' > ${name}.c
+ unsigned int asdf_${toString i}(void) {
+ return ${toString i};
+ }
+ EOF
'';
buildPhase = ''
- $CC -shared ${name}.c -o lib${name}.dylib -Wl,-install_name,$out/lib/lib${name}.dylib
+ $CC -std=c99 -shared ${name}.c -o lib${name}.dylib -Wl,-install_name,$out/lib/lib${name}.dylib
'';
installPhase = ''
mkdir -p "$out/lib"
mv lib${name}.dylib "$out/lib"
'';
- }) 500
- ;
+ }) count;
finalExe = stdenv.mkDerivation rec {
name = "${prefix}-final-asdf";
unpackPhase = ''
src=$PWD
- echo 'int main(int argc, char **argv) { return argc; }' > main.c;
+ cat << 'EOF' > main.cxx
+
+ #include <assert.h>
+
+ ${toString (lib.genList (i: "extern unsigned int asdf_${toString i}(void); ") count)}
+
+ unsigned int (*funs[])(void) = {
+ ${toString (lib.genList (i: "asdf_${toString i},") count)}
+ };
+
+ int main(int argc, char **argv) {
+ unsigned int i = 0;
+ for (auto f : funs) {
+ assert(f() == i++);
+ }
+ return 0;
+ }
+ EOF
'';
buildPhase = ''
- $CC main.c ${toString (map (x: "-l${x.name}") sillyLibs)} -o asdf
+ $CC -std=c++11 main.cxx ${toString (map (x: "-l${x.name}") sillyLibs)} -o asdf
'';
buildInputs = sillyLibs;
installPhase = ''