about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-01-16 21:32:44 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-01-16 21:32:44 +0000
commite72908036f98bfae531affc34cc39397b554390d (patch)
treeaf14e324676942aa902a140b6e333c12321c84ad /pkgs/build-support
parent20e75e0cf019a5a3775ba443daf9a9a3ff30cbf6 (diff)
Merging the gnat-wrapper and gcc-wrapper into a single gcc-wrapper.
(I will remove the gnat-wrapper files if this works, later)


svn path=/nixpkgs/branches/stdenv-updates/; revision=19492
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/gcc-wrapper/add-flags4
-rw-r--r--pkgs/build-support/gcc-wrapper/builder.sh43
-rw-r--r--pkgs/build-support/gcc-wrapper/default.nix3
3 files changed, 50 insertions, 0 deletions
diff --git a/pkgs/build-support/gcc-wrapper/add-flags b/pkgs/build-support/gcc-wrapper/add-flags
index 02755e4454148..26e536f6d575f 100644
--- a/pkgs/build-support/gcc-wrapper/add-flags
+++ b/pkgs/build-support/gcc-wrapper/add-flags
@@ -9,6 +9,10 @@ if test -e @out@/nix-support/gcc-cflags; then
     export NIX_CFLAGS_COMPILE="$(cat @out@/nix-support/gcc-cflags) $NIX_CFLAGS_COMPILE"
 fi
 
+if test -e @out@/nix-support/gnat-cflags; then
+    export NIX_GNATFLAGS_COMPILE="$(cat @out@/nix-support/gnat-cflags) $NIX_GNATFLAGS_COMPILE"
+fi
+
 if test -e @out@/nix-support/libc-ldflags; then
     export NIX_LDFLAGS="$NIX_LDFLAGS $(cat @out@/nix-support/libc-ldflags)"
 fi
diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh
index dd64987ade2bc..70e8498da7bba 100644
--- a/pkgs/build-support/gcc-wrapper/builder.sh
+++ b/pkgs/build-support/gcc-wrapper/builder.sh
@@ -51,6 +51,15 @@ else
     if test -e "$gcc/lib64"; then
         gccCFlags="$gccCFlags -B$gcc/lib64"
     fi
+
+    # Find the gcc libraries path (may work only without multilib)
+    if [ -n "$langAda" ]; then
+        basePath=`echo $gcc/lib/*/*/*`
+        gccCFlags="$gccCFlags -B$basePath -I$basePath/adainclude"
+
+        gnatCFlags="-aI$basePath/adainclude -aO$basePath/adalib"
+        echo "$gnatCFlags" > $out/nix-support/gnat-cflags
+    fi
     echo "$gccCFlags" > $out/nix-support/gcc-cflags
     
     gccPath="$gcc/bin"
@@ -68,6 +77,8 @@ doSubstitute() {
         -e "s^@shell@^$shell^g" \
         -e "s^@gcc@^$gcc^g" \
         -e "s^@gccProg@^$gccProg^g" \
+        -e "s^@gnatProg@^$gnatProg^g" \
+        -e "s^@gnatlinkProg@^$gnatlinkProg^g" \
         -e "s^@binutils@^$binutils^g" \
         -e "s^@coreutils@^$coreutils^g" \
         -e "s^@libc@^$libc^g" \
@@ -92,6 +103,34 @@ mkGccWrapper() {
     chmod +x "$dst"
 }
 
+mkGnatWrapper() {
+    local dst=$1
+    local src=$2
+
+    if ! test -f "$src"; then
+        echo "$src does not exist (skipping)"
+        return 1
+    fi
+
+    gnatProg="$src"
+    doSubstitute "$gnatWrapper" "$dst"
+    chmod +x "$dst"
+}
+
+mkGnatLinkWrapper() {
+    local dst=$1
+    local src=$2
+
+    if ! test -f "$src"; then
+        echo "$src does not exist (skipping)"
+        return 1
+    fi
+
+    gnatlinkProg="$src"
+    doSubstitute "$gnatlinkWrapper" "$dst"
+    chmod +x "$dst"
+}
+
 if mkGccWrapper $out/bin/gcc $gccPath/gcc
 then
     ln -sv gcc $out/bin/cc
@@ -110,6 +149,10 @@ fi
 
 mkGccWrapper $out/bin/gcj $gccPath/gcj || true
 
+mkGccWrapper $out/bin/gnatgcc $gccPath/gnatgcc || true
+mkGnatWrapper $out/bin/gnatmake $gccPath/gnatmake || true
+mkGnatWrapper $out/bin/gnatbind $gccPath/gnatbind || true
+mkGnatLinkWrapper $out/bin/gnatlink $gccPath/gnatlink || true
 
 # Create a symlink to as (the assembler).  This is useful when a
 # gcc-wrapper is installed in a user environment, as it ensures that
diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix
index 339aba74288ef..700de9d20f49b 100644
--- a/pkgs/build-support/gcc-wrapper/default.nix
+++ b/pkgs/build-support/gcc-wrapper/default.nix
@@ -28,6 +28,8 @@ stdenv.mkDerivation {
   builder = ./builder.sh;
   setupHook = ./setup-hook.sh;
   gccWrapper = ./gcc-wrapper.sh;
+  gnatWrapper = ./gnat-wrapper.sh;
+  gnatlinkWrapper = ./gnatlink-wrapper.sh;
   ldWrapper = ./ld-wrapper.sh;
   utils = ./utils.sh;
   addFlags = ./add-flags;
@@ -41,6 +43,7 @@ stdenv.mkDerivation {
   langC = if nativeTools then true else gcc.langC;
   langCC = if nativeTools then true else gcc.langCC;
   langFortran = if nativeTools then false else gcc ? langFortran;
+  langAda = if nativeTools then false else gcc ? langAda;
   shell = if shell == "" then stdenv.shell else shell;
   
   meta =