From 19c46733104c680267a0a0dd3a2e6be893bd52b4 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Sat, 2 Sep 2017 14:00:47 +0200 Subject: nixpkgs-tests: add basic test for cc-wrapper --- pkgs/test/cc-wrapper/cc-main.c | 7 +++++ pkgs/test/cc-wrapper/cflags-main.c | 10 +++++++ pkgs/test/cc-wrapper/core-foundation-main.c | 7 +++++ pkgs/test/cc-wrapper/cxx-main.cc | 7 +++++ pkgs/test/cc-wrapper/default.nix | 45 +++++++++++++++++++++++++++++ pkgs/test/cc-wrapper/foo.c | 4 +++ pkgs/test/cc-wrapper/ldflags-main.c | 12 ++++++++ 7 files changed, 92 insertions(+) create mode 100644 pkgs/test/cc-wrapper/cc-main.c create mode 100644 pkgs/test/cc-wrapper/cflags-main.c create mode 100644 pkgs/test/cc-wrapper/core-foundation-main.c create mode 100644 pkgs/test/cc-wrapper/cxx-main.cc create mode 100644 pkgs/test/cc-wrapper/default.nix create mode 100644 pkgs/test/cc-wrapper/foo.c create mode 100644 pkgs/test/cc-wrapper/ldflags-main.c (limited to 'pkgs/test') diff --git a/pkgs/test/cc-wrapper/cc-main.c b/pkgs/test/cc-wrapper/cc-main.c new file mode 100644 index 0000000000000..06f28bc33c695 --- /dev/null +++ b/pkgs/test/cc-wrapper/cc-main.c @@ -0,0 +1,7 @@ +#include + +int main(int argc, char **argv) +{ + fprintf(stderr, "ok\n"); + return 0; +} diff --git a/pkgs/test/cc-wrapper/cflags-main.c b/pkgs/test/cc-wrapper/cflags-main.c new file mode 100644 index 0000000000000..9491232b53878 --- /dev/null +++ b/pkgs/test/cc-wrapper/cflags-main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(int argc, char **argv) +{ + if (foo() != 42) + return 1; + fprintf(stderr, "ok\n"); + return 0; +} diff --git a/pkgs/test/cc-wrapper/core-foundation-main.c b/pkgs/test/cc-wrapper/core-foundation-main.c new file mode 100644 index 0000000000000..fb3bd31261912 --- /dev/null +++ b/pkgs/test/cc-wrapper/core-foundation-main.c @@ -0,0 +1,7 @@ +#include + +int main(int argc, char** argv) +{ + CFShow(CFSTR("ok")); + return 0; +} diff --git a/pkgs/test/cc-wrapper/cxx-main.cc b/pkgs/test/cc-wrapper/cxx-main.cc new file mode 100644 index 0000000000000..83f704617a46f --- /dev/null +++ b/pkgs/test/cc-wrapper/cxx-main.cc @@ -0,0 +1,7 @@ +#include + +int main(int argc, char **argv) +{ + std::cerr << "ok" << std::endl; + return 0; +} diff --git a/pkgs/test/cc-wrapper/default.nix b/pkgs/test/cc-wrapper/default.nix new file mode 100644 index 0000000000000..d8a5e13558152 --- /dev/null +++ b/pkgs/test/cc-wrapper/default.nix @@ -0,0 +1,45 @@ +{ stdenv }: + +let + shlib = if stdenv.isDarwin then "dylib" else "so"; +in + +stdenv.mkDerivation { + name = "cc-wrapper-test"; + + buildCommand = '' + NIX_DEBUG=1 $CC -v + NIX_DEBUG=1 $CXX -v + + printf "checking whether compiler builds valid C binaries... " >&2 + $CC -o cc-check ${./cc-main.c} + ./cc-check + + printf "checking whether compiler builds valid C++ binaries... " >&2 + $CXX -o cxx-check ${./cxx-main.cc} + ./cxx-check + + ${stdenv.lib.optionalString (stdenv.isDarwin && stdenv.cc.isClang) '' + printf "checking whether compiler can build with CoreFoundation.framework... " >&2 + mkdir -p foo/lib + $CC -framework CoreFoundation -o core-foundation-check ${./core-foundation-main.c} + ./core-foundation-check + ''} + + printf "checking whether compiler uses NIX_CFLAGS_COMPILE... " >&2 + mkdir -p foo/include + cp ${./foo.c} foo/include/foo.h + NIX_CFLAGS_COMPILE="-Ifoo/include -DVALUE=42" $CC -o cflags-check ${./cflags-main.c} + ./cflags-check + + printf "checking whether compiler uses NIX_LDFLAGS... " >&2 + mkdir -p foo/lib + $CC -shared ${stdenv.lib.optionalString stdenv.isDarwin "-Wl,-install_name,@rpath/libfoo.dylib"} -DVALUE=42 -o foo/lib/libfoo.${shlib} ${./foo.c} + NIX_LDFLAGS="-L$NIX_BUILD_TOP/foo/lib -rpath $NIX_BUILD_TOP/foo/lib" $CC -lfoo -o ldflags-check ${./ldflags-main.c} + ./ldflags-check + + touch $out + ''; + + meta.platforms = stdenv.lib.platforms.all; +} diff --git a/pkgs/test/cc-wrapper/foo.c b/pkgs/test/cc-wrapper/foo.c new file mode 100644 index 0000000000000..8be674be3103f --- /dev/null +++ b/pkgs/test/cc-wrapper/foo.c @@ -0,0 +1,4 @@ +unsigned int foo(void) +{ + return VALUE; +} diff --git a/pkgs/test/cc-wrapper/ldflags-main.c b/pkgs/test/cc-wrapper/ldflags-main.c new file mode 100644 index 0000000000000..89832b3bbad2d --- /dev/null +++ b/pkgs/test/cc-wrapper/ldflags-main.c @@ -0,0 +1,12 @@ +#include + +extern unsigned int foo(void); + +int main(int argc, char **argv) +{ + if (foo() != 42) { + return 1; + } + fprintf(stderr, "ok\n"); + return 0; +} -- cgit 1.4.1