summary refs log tree commit diff
path: root/pkgs/test
diff options
context:
space:
mode:
authorJörg Thalheim <joerg@thalheim.io>2020-07-01 21:55:06 +0100
committerJörg Thalheim <joerg@thalheim.io>2020-07-23 08:39:46 +0100
commit96092dc93640b8ad6520a8bae6f78d62eaba0ec2 (patch)
treeda92599db20e876969400bb19fd7220e1d4f06f1 /pkgs/test
parent434a0111f6a7618a7024b637c5496ea261b23016 (diff)
downloadnixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.tar
nixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.tar.gz
nixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.tar.bz2
nixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.tar.lz
nixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.tar.xz
nixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.tar.zst
nixpkgs-96092dc93640b8ad6520a8bae6f78d62eaba0ec2.zip
stdenv: make -nostdinc work as intended
Right now we add glibc to search path also -nostdinc was provided,
which breaks projects providing their own gcc.
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/cc-wrapper/default.nix8
-rw-r--r--pkgs/test/cc-wrapper/nostdinc-main.c8
-rw-r--r--pkgs/test/cc-wrapper/stdio.h1
3 files changed, 17 insertions, 0 deletions
diff --git a/pkgs/test/cc-wrapper/default.nix b/pkgs/test/cc-wrapper/default.nix
index 7bd82b4ab2a..c0c89d63fff 100644
--- a/pkgs/test/cc-wrapper/default.nix
+++ b/pkgs/test/cc-wrapper/default.nix
@@ -45,6 +45,14 @@ in stdenv.mkDerivation {
     NIX_LDFLAGS="-L$NIX_BUILD_TOP/foo/lib -rpath $NIX_BUILD_TOP/foo/lib" $CC -lfoo -o ldflags-check ${./ldflags-main.c}
     ./ldflags-check
 
+    printf "Check whether -nostdinc and -nostdinc++ is handled correctly" >&2
+    mkdir -p std-include
+    cp ${./stdio.h} std-include/stdio.h
+    NIX_DEBUG=1 $CC -I std-include -nostdinc -o nostdinc-main ${./nostdinc-main.c}
+    ./nostdinc-main
+    $CXX -I std-include -nostdinc++ -o nostdinc-main++ ${./nostdinc-main.c}
+    ./nostdinc-main++
+
     ${optionalString sanitizersWorking ''
       printf "checking whether sanitizers are fully functional... ">&2
       $CC -o sanitizers -fsanitize=address,undefined ${./sanitizers.c}
diff --git a/pkgs/test/cc-wrapper/nostdinc-main.c b/pkgs/test/cc-wrapper/nostdinc-main.c
new file mode 100644
index 00000000000..f71d155b1b2
--- /dev/null
+++ b/pkgs/test/cc-wrapper/nostdinc-main.c
@@ -0,0 +1,8 @@
+// This one should not come from libc because of -nostdinc
+#include <stdio.h>
+
+int main(int argc, char *argv[]) {
+  // provided by our own stdio.h
+  foo();
+  return 0;
+}
diff --git a/pkgs/test/cc-wrapper/stdio.h b/pkgs/test/cc-wrapper/stdio.h
new file mode 100644
index 00000000000..4bddf1d9d48
--- /dev/null
+++ b/pkgs/test/cc-wrapper/stdio.h
@@ -0,0 +1 @@
+static void foo(void) {}