summary refs log tree commit diff
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)
downloadnixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.tar
nixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.tar.gz
nixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.tar.bz2
nixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.tar.lz
nixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.tar.xz
nixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.tar.zst
nixpkgs-f671b85fb2c082819ea419ea5b0f5914bc6f26b3.zip
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 = ''