* Some trivial Nix Make examples.

This commit is contained in:
Eelco Dolstra 2004-07-06 11:43:37 +00:00
parent a2e33d200e
commit 15646244ba
5 changed files with 45 additions and 0 deletions

View file

@ -0,0 +1,8 @@
let {
inherit (import ../../lib) compileC link;
hello = link {objects = compileC {main = ./hello.c;};};
body = [hello];
}

7
examples/trivial/hello.c Normal file
View file

@ -0,0 +1,7 @@
#include <stdio.h>
int main(int argc, char * * argv)
{
printf("Hello World\n");
return 0;
}

3
lib/compile-c.sh Normal file
View file

@ -0,0 +1,3 @@
. $stdenv/setup
mkdir $out
gcc -Wall -c $main -o $out/$(basename $main).o

17
lib/default.nix Normal file
View file

@ -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;
};
}

10
lib/link.sh Normal file
View file

@ -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