about summary refs log tree commit diff
path: root/pkgs/tools/system/plan9port/builder.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/system/plan9port/builder.sh')
-rw-r--r--pkgs/tools/system/plan9port/builder.sh59
1 files changed, 51 insertions, 8 deletions
diff --git a/pkgs/tools/system/plan9port/builder.sh b/pkgs/tools/system/plan9port/builder.sh
index c0d7134bcc59..77f6632ff533 100644
--- a/pkgs/tools/system/plan9port/builder.sh
+++ b/pkgs/tools/system/plan9port/builder.sh
@@ -3,11 +3,40 @@ source $stdenv/setup
 export PLAN9=$out/plan9
 export PLAN9_TARGET=$PLAN9
 
+plan9portLinkFlags()
+{
+    local -a linkFlags=()
+    eval set -- "$NIX_LDFLAGS"
+    while (( $# > 0 )); do
+        if [[ $1 = -rpath ]]; then
+            linkFlags+=( "-Wl,-rpath,$2" )
+            shift 2
+        else
+            linkFlags+=( "$1" )
+            shift
+        fi
+    done
+    echo "${linkFlags[*]}"
+}
+
 configurePhase()
 {
-    echo CFLAGS=\"-I${fontconfig_dev}/include -I${xorgproto_exp}/include -I${libX11_dev}/include -I${libXt_dev}/include -I${libXext_dev}/include -I${freetype_dev}/include -I${zlib_dev}/include\" > LOCAL.config
-    echo LDFLAGS=\"-L${fontconfig_lib}/lib -L${xorgproto_exp}/lib -L${libX11_exp}/lib -L${libXt_exp}/lib -L${libXext_exp}/lib -L${freetype_exp}/lib -L${zlib_exp}/lib\" >> LOCAL.config    
-    echo X11=\"${libXt_dev}/include\" >> LOCAL.config
+    (
+        echo CC9=\"$(which $CC)\"
+        echo CFLAGS=\"$NIX_CFLAGS_COMPILE\"
+        echo LDFLAGS=\"$(plan9portLinkFlags)\"
+        echo X11=\"${libXt_dev}/include\"
+        case "$system" in
+          x86_64-*) echo OBJTYPE=x86_64;;
+          i?86-*)   echo OBJTYPE=386;;
+          *power*)  echo OBJTYPE=power;;
+          *sparc*)  echo OBJTYPE=sparc;;
+          *) exit 12
+        esac
+        if [[ $system =~ .*linux.* ]]; then
+          echo SYSVERSION=2.6.x
+        fi
+    ) >config
 
     for f in `grep -l -r /usr/local/plan9`; do
         sed "s,/usr/local/plan9,${PLAN9},g" -i $f
@@ -17,15 +46,29 @@ configurePhase()
 buildPhase()
 {
     mkdir -p $PLAN9
-    ./INSTALL -b
+
+    # Copy sources, some necessary bin scripts
+    cp -R * $PLAN9
+
+    local originalPath="$PATH"
+    export PATH="$PLAN9/bin:$PATH"
+    export NPROC=$NIX_BUILD_CORES
+    pushd src
+    ../dist/buildmk
+    mk clean
+    mk libs-nuke
+    mk all
+    mk -k install
+    if [[ -f $PLAN9/bin/quote1 ]]; then
+        cp $PLAN9/bin/quote1 $PLAN9/bin/'"'
+        cp $PLAN9/bin/quote2 $PLAN9/bin/'""'
+    fi
+    popd
+    export PATH="$originalPath"
 }
 
 installPhase()
 {
-    ./INSTALL -c
-    # Copy sources
-    cp -R * $PLAN9
-
     # Copy the `9' utility. This way you can use
     # $ 9 awk
     # to use the plan 9 awk