Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

root/tags/releases/0.99.8/lib/install-gdc.sh

Revision 4137, 4.1 kB (checked in by larsivi, 3 years ago)

Check for set prefix

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1 #!/usr/bin/env bash
2
3 # A simple script to install Tango for GDC
4 # Copyright (C) 2006-2008  Gregor Richards
5 # Permission is granted to do anything you please with this software.
6 # This software is provided with no warranty, express or implied, within the
7 # bounds of applicable law.
8
9 CROSS=""
10
11 die() {
12     echo "$1"
13     exit $2
14 }
15
16 usage() {
17     echo 'Usage: install-gdc.sh [--inplace] [--prefix <install prefix>]
18 Options:
19   --inplace: Don'\''t install anywhere, just keep the installation in-place.
20              (Not recommended, doesn'\''t work without -I)
21   --prefix: Install to the specified prefix.
22   --uninstall: Uninstall tango, switch back to standard phobos.'
23     exit 0
24 } #'
25
26 cd "`dirname $0`"
27
28 # 0) Parse arguments
29 INPLACE=0
30 SETPREFIX=0
31 UNINSTALL=0
32
33 while [ "$#" != "0" ]
34 do
35     if [ "$1" = "--inplace" ]
36     then
37         INPLACE=1
38     elif [ "$1" = "--prefix" ]
39     then
40         SETPREFIX=1
41         shift
42
43         PREFIX="$1"
44     elif [ "$1" = "--uninstall" ]
45     then
46         UNINSTALL=1
47     elif [ "$1" = "--cross" ]
48     then
49         shift
50         CROSS="$1-"
51     else
52         usage
53     fi
54     shift
55 done
56
57 ${CROSS}gdc --help >& /dev/null || die "gdc not found on your \$PATH!" 1
58
59 GPHOBOS_DIR="`${CROSS}gdc -print-file-name=libgphobos.a`"
60 GPHOBOS_DIR="`dirname $GPHOBOS_DIR`"
61
62 GPHOBOS_64=0
63
64 if [ "$SETPREFIX" = "0" ]
65 then
66     # If we have which, use it to get the prefix
67     which gdc >& /dev/null
68     if [ "$?" = "0" ]
69     then
70         PREFIX="`which ${CROSS}gdc`"
71         PREFIX="`dirname $PREFIX`/.."
72     else
73         PREFIX="$GPHOBOS_DIR/.."
74     fi
75 fi
76
77 # If libgphobos.a isn't installed, make it up
78 if [ -n "$GPHOBOS_DIR" -o "$GPHOBOS_DIR" = "." ]
79 then
80     GPHOBOS_DIR="$PREFIX/lib"
81 fi
82
83 if [ -e "$GPHOBOS_DIR/../lib64" ]
84 then
85     GPHOBOS_64=1
86 fi
87
88 GDC_VER="`${CROSS}gdc -dumpversion`"
89 GDC_MCH="`${CROSS}gdc -dumpmachine`"
90
91 if [ "$INPLACE" = "1" -a \
92      "$SETPREFIX" = "1" ]
93 then
94     die "Cannot both set a prefix and do an in-place install." 2
95 fi
96
97 # If uninstalling, do that now
98 if [ "$UNINSTALL" = "1" ]
99 then
100     if [ "$INPLACE" = "0" ]
101     then
102         rm -rf $GPHOBOS_DIR/libgphobos.a $PREFIX/include/d/$GDC_VER/object.d
103         if [ "$GPHOBOS_64" = "1" ]
104         then
105             rm -rf $GPHOBOS_DIR/../lib64/libgphobos.a
106             if [ -e "$GPHOBOS_DIR/../lib64/libgphobos.a.phobos" ]
107             then
108                 mv $GPHOBOS_DIR/../lib64/libgphobos.a.phobos $GPHOBOS_DIR/../lib64/libgphobos.a
109             fi
110         fi
111         if [ -e "$GPHOBOS_DIR/libgphobos.a.phobos" ]
112         then
113             mv $PREFIX/include/d/$GDC_VER/object.d.phobos $PREFIX/include/d/$GDC_VER/object.d
114             mv $GPHOBOS_DIR/libgphobos.a.phobos $GPHOBOS_DIR/libgphobos.a
115         fi
116     fi
117     die "Done!" 0
118 fi
119
120 # Sanity check
121 if [ ! -e libgphobos.a ]
122 then
123     die "You must run build-gdc.sh before running install-gdc.sh" 4
124 fi
125
126 # Back up the original files
127 if [ -e "$GPHOBOS_DIR/libgphobos.a" -a \
128      ! -e "$GPHOBOS_DIR/libgphobos.a.phobos" ]
129 then
130     mv -f $GPHOBOS_DIR/libgphobos.a $GPHOBOS_DIR/libgphobos.a.phobos
131     mv -f $PREFIX/include/d/$GDC_VER/object.d $PREFIX/include/d/$GDC_VER/object.d.phobos
132     if [ "$GPHOBOS_64" = "1" ]
133     then
134         if [ -e "$GPHOBOS_DIR/../lib64/libgphobos.a" ]
135         then
136             mv -f $GPHOBOS_DIR7../lib64/libgphobos.a $GPHOBOS_DIR/../lib64/libgphobos.a.phobos
137         fi
138     fi
139 fi
140
141 # Install ...
142 if [ "$INPLACE" = "0" ]
143 then
144     echo 'Copying files...'
145     mkdir -p $PREFIX/include/d/$GDC_VER || die "Failed to create include/d/$GDC_VER (maybe you need root privileges?)" 5
146     cp -pRvf libgphobos.a $GPHOBOS_DIR || die "Failed to copy libraries" 7
147     if [ "$GPHOBOS_64" = "1" ]
148     then
149         cp -pRvf libgphobos.a $GPHOBOS_DIR/../lib64 || die "Failed to copy libraries" 7
150     fi
151
152     cp -pRvf ../object.di $PREFIX/include/d/$GDC_VER/object.d || die "Failed to copy source" 8
153     if [ ! -e $PREFIX/include/d/$GDC_VER/gcc ]
154     then
155         mkdir $PREFIX/include/d/$GDC_VER/gcc || die "Failed to create $PREFIX/include/d/$GDC_VER/gcc" 9
156         cp -pRvf compiler/gdc/gcc/builtins.di $PREFIX/include/d/$GDC_VER/gcc/builtins.di || die "Failed to install gcc internals." 10
157     fi
158 fi
159
160 die "Done!" 0
Note: See TracBrowser for help on using the browser.