From 15646244ba8bc59fdeafae5248b6e4529bcb7d13 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 6 Jul 2004 11:43:37 +0000 Subject: [PATCH] * Some trivial Nix Make examples. --- examples/trivial/default.nix | 8 ++++++++ examples/trivial/hello.c | 7 +++++++ lib/compile-c.sh | 3 +++ lib/default.nix | 17 +++++++++++++++++ lib/link.sh | 10 ++++++++++ 5 files changed, 45 insertions(+) create mode 100644 examples/trivial/default.nix create mode 100644 examples/trivial/hello.c create mode 100644 lib/compile-c.sh create mode 100644 lib/default.nix create mode 100644 lib/link.sh diff --git a/examples/trivial/default.nix b/examples/trivial/default.nix new file mode 100644 index 000000000..3ee30ecb6 --- /dev/null +++ b/examples/trivial/default.nix @@ -0,0 +1,8 @@ +let { + + inherit (import ../../lib) compileC link; + + hello = link {objects = compileC {main = ./hello.c;};}; + + body = [hello]; +} \ No newline at end of file diff --git a/examples/trivial/hello.c b/examples/trivial/hello.c new file mode 100644 index 000000000..237ad8ffe --- /dev/null +++ b/examples/trivial/hello.c @@ -0,0 +1,7 @@ +#include + +int main(int argc, char * * argv) +{ + printf("Hello World\n"); + return 0; +} diff --git a/lib/compile-c.sh b/lib/compile-c.sh new file mode 100644 index 000000000..0b7ffaad5 --- /dev/null +++ b/lib/compile-c.sh @@ -0,0 +1,3 @@ +. $stdenv/setup +mkdir $out +gcc -Wall -c $main -o $out/$(basename $main).o diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 000000000..0cbe0367e --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,17 @@ +rec { + + inherit (import /home/eelco/nixpkgs/pkgs/system/i686-linux.nix) stdenv; + + compileC = {main}: stdenv.mkDerivation { + name = "compile-c"; + builder = ./compile-c.sh; + inherit main; + }; + + link = {objects}: stdenv.mkDerivation { + name = "link"; + builder = ./link.sh; + inherit objects; + }; + +} diff --git a/lib/link.sh b/lib/link.sh new file mode 100644 index 000000000..6dc762ad4 --- /dev/null +++ b/lib/link.sh @@ -0,0 +1,10 @@ +. $stdenv/setup + +objs= +for i in "$objects"; do + obj=$i/*.o + objs="$objs $obj" +done + +mkdir $out +gcc -o $out/program $objs