Merge backout
[prosody.git] / configure
1 #!/bin/sh
2
3 # Defaults
4
5 PREFIX=/usr/local
6 SYSCONFDIR="$PREFIX/etc/prosody"
7 DATADIR="$PREFIX/var/lib/prosody"
8 LUA_SUFFIX=""
9 LUA_DIR="/usr"
10 LUA_BINDIR="/usr/bin"
11 LUA_INCDIR="/usr/include"
12 LUA_LIBDIR="/usr/lib"
13 IDN_LIB=idn
14 OPENSSL_LIB=crypto
15 CC=gcc
16 LD=gcc
17
18 CFLAGS="-fPIC -Wall"
19 LDFLAGS="-shared"
20
21 # Help
22
23 show_help() {
24 cat <<EOF
25 Configure Prosody prior to building.
26
27 --help                      This help.
28 --ostype=OS                 Use one of the OS presets.
29                             May be one of: debian, macosx, linux
30 --prefix=DIR                Prefix where Prosody should be installed.
31                             Default is $PREFIX
32 --sysconfdir=DIR            Location where the config file should be installed.
33                             Default is \$PREFIX/etc/prosody
34 --datadir=DIR               Location where the server data should be stored.
35                             Default is \$PREFIX/var/lib/prosody
36 --lua-suffix=SUFFIX         Versioning suffix to use in Lua filenames.
37                             Default is "$LUA_SUFFIX" (lua$LUA_SUFFIX...)
38 --with-lua=PREFIX           Use Lua from given prefix.
39                             Default is $LUA_DIR
40 --with-lua-include=DIR      You can also specify Lua's includes dir.
41                             Default is \$LUA_DIR/include
42 --with-lua-lib=DIR          You can also specify Lua's libraries dir.
43                             Default is \$LUA_DIR/lib
44 --with-idn=LIB              The name of the IDN library to link with.
45                             Default is $IDN_LIB
46 --with-ssl=LIB              The name of the SSL to link with.
47                             Default is $OPENSSL_LIB
48 --cflags=FLAGS              Flags to pass to the compiler
49                             Default is $CFLAGS
50 --ldflags=FLAGS             Flags to pass to the linker
51                             Default is $LDFLAGS
52 --c-compiler=CC             The C compiler to use when building modules.
53                             Default is $CC
54 --linker=CC                 The linker to use when building modules.
55                             Default is $LD
56 --require-config            Will cause Prosody to refuse to run when
57                             it fails to find a configuration file
58 EOF
59 }
60
61
62 while [ "$1" ]
63 do
64    value="`echo $1 | sed 's/[^=]*=\(.*\)/\1/'`"
65    if echo "$value" | grep -q "~"
66    then
67       echo
68       echo '*WARNING*: the "~" sign is not expanded in flags.'
69       echo 'If you mean the home directory, use $HOME instead.'
70       echo
71    fi
72    case "$1" in
73    --help)
74       show_help
75       exit 0
76       ;;
77    --prefix=*)
78       PREFIX="$value"
79       PREFIX_SET=yes
80       ;;
81    --sysconfdir=*)
82       SYSCONFDIR="$value"
83       SYSCONFDIR_SET=yes
84       ;;
85    --ostype=*)
86       OSTYPE="$value"
87       OSTYPE_SET=yes
88       ;;
89    --datadir=*)
90         DATADIR="$value"
91         DATADIR_SET=yes
92       ;;
93    --require-config)
94       REQUIRE_CONFIG=yes
95       ;;
96    --lua-suffix=*)
97       LUA_SUFFIX="$value"
98       LUA_SUFFIX_SET=yes
99       ;;
100    --with-lua=*)
101       LUA_DIR="$value"
102       LUA_DIR_SET=yes
103       ;;
104    --with-lua-include=*)
105       LUA_INCDIR="$value"
106       LUA_INCDIR_SET=yes
107       ;;
108    --with-lua-lib=*)
109       LUA_LIBDIR="$value" LUA_LIBDIR_SET=yes
110       ;;
111    --with-idn=*)
112       IDN_LIB="$value"
113       ;;
114    --with-ssl=*)
115       OPENSSL_LIB="$value"
116       ;;
117    --cflags=*)
118       CFLAGS="$value"
119       ;;
120    --ldflags=*)
121       LDFLAGS="$value"
122       ;;
123    --c-compiler=*)
124       CC="$value"
125       ;;
126    --linker=*)
127       LD="$value"
128       ;;
129    *)
130       echo "Error: Unknown flag: $1"
131       exit 1
132       ;;
133    esac
134    shift
135 done
136
137 if [ "$OSTYPE_SET" = "yes" ]
138 then
139         if [ "$OSTYPE" = "debian" ]
140         then LUA_SUFFIX="5.1";
141         LUA_SUFFIX_SET=yes
142         LUA_INCDIR=/usr/include/lua5.1;
143         LUA_INCDIR_SET=yes
144         fi
145         if [ "$OSTYPE" = "macosx" ]
146         then LUA_INCDIR=/usr/local/include;
147         LUA_INCDIR_SET=yes
148         LUA_LIBDIR=/usr/local/lib
149         LUA_LIBDIR_SET=yes
150         CFLAGS="-Wall"
151         LDFLAGS="-bundle -undefined dynamic_lookup"
152         fi
153         if [ "$OSTYPE" = "linux" ]
154         then LUA_INCDIR=/usr/local/include;
155         LUA_INCDIR_SET=yes
156         LUA_LIBDIR=/usr/local/lib
157         LUA_LIBDIR_SET=yes
158         CFLAGS="-Wall -fPIC"
159         LDFLAGS="-shared"
160         fi
161 fi
162
163 if [ "$PREFIX_SET" = "yes" -a ! "$SYSCONFDIR_SET" = "yes" ]
164 then
165    if [ "$PREFIX" = "/usr" ]
166    then SYSCONFDIR=/etc/prosody
167    else SYSCONFDIR=$PREFIX/etc/prosody
168    fi
169 fi
170
171 if [ "$PREFIX_SET" = "yes" -a ! "$DATADIR_SET" = "yes" ]
172 then
173    if [ "$PREFIX" = "/usr" ]
174    then DATADIR=/var/lib/prosody
175    else DATADIR=$PREFIX/var/lib/prosody
176    fi
177 fi
178
179 find_program() {
180    path="$PATH"
181    item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
182    path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
183    found="no"
184    while [ "$item" ]
185    do
186       if [ -e "$item/$1" ]
187       then
188          found="yes"
189          break
190       fi
191       item="`echo "$path" | sed 's/\([^:]*\):.*/\1/'`"
192       path="`echo "$path" | sed -n 's/[^:]*::*\(.*\)/\1/p'`"
193    done
194    if [ "$found" = "yes" ]
195    then
196       echo "$item"
197    else
198       echo ""
199    fi
200 }
201
202 if [ "$LUA_SUFFIX_SET" != "yes" ]
203 then
204    for suffix in "5.1" "51" ""
205    do
206       LUA_SUFFIX="$suffix"
207       if [ "$LUA_DIR_SET" = "yes" ]
208       then
209          if [ -e "$LUA_DIR/bin/lua$suffix" ]
210          then
211             find_lua="$LUA_DIR"
212          fi
213       else
214          find_lua=`find_program lua$suffix`
215       fi
216       if [ "$find_lua" ]
217       then
218          echo "Lua interpreter found: $find_lua/lua$suffix..."
219          break
220       fi
221    done
222 fi
223
224 if ! [ "$LUA_DIR_SET" = "yes" ]
225 then
226    echo -n "Looking for Lua... "
227    if [ ! "$find_lua" ]
228    then
229       find_lua=`find_program lua$LUA_SUFFIX`
230       echo "lua$LUA_SUFFIX found in \$PATH: $find_lua"
231    fi
232    if [ "$find_lua" ]
233    then
234       LUA_DIR=`dirname $find_lua`
235       LUA_BINDIR="$find_lua"
236    else
237       echo "lua$LUA_SUFFIX not found in \$PATH."
238       echo "You may want to use the flags --with-lua and/or --lua-suffix. See --help."
239       exit 1
240    fi
241 fi
242
243 if ! [ "$LUA_INCDIR_SET" = "yes" ]
244 then
245    LUA_INCDIR="$LUA_DIR/include"
246 fi
247
248 if ! [ "$LUA_LIBDIR_SET" = "yes" ]
249 then
250    LUA_LIBDIR="$LUA_DIR/lib"
251 fi
252
253 if [ "$LUA_DIR_SET" = "yes" ]
254 then
255    LUA_BINDIR="$LUA_DIR/bin"
256 fi
257
258 echo -n "Checking Lua includes... "
259 lua_h="$LUA_INCDIR/lua.h"
260 if [ -e "$lua_h" ]
261 then
262    echo "lua.h found in $lua_h"
263 else
264    echo "lua.h not found (looked in $lua_h)"
265    echo "You may want to use the flag --with-lua-include. See --help."
266    exit 1
267 fi
268
269 find_helper() {
270    explanation="$1"
271    shift
272    tried="$*"
273    while [ "$1" ]
274    do
275       found=`find_program "$1"`
276       if [ "$found" ]
277       then
278          echo "$1 found at $found"
279          HELPER=$1
280          return
281       fi
282       shift
283    done
284    echo "Could not find a $explanation. Tried: $tried."
285    echo "Make sure one of them is installed and available in your PATH."
286    exit 1
287 }
288
289 # Write config
290
291 echo "Writing configuration..."
292 echo
293
294 cat <<EOF > config.unix
295 # This file was automatically generated by the configure script.
296 # Run "./configure --help" for details.
297
298 PREFIX=$PREFIX
299 SYSCONFDIR=$SYSCONFDIR
300 DATADIR=$DATADIR
301 LUA_SUFFIX=$LUA_SUFFIX
302 LUA_DIR=$LUA_DIR
303 LUA_INCDIR=$LUA_INCDIR
304 LUA_LIBDIR=$LUA_LIBDIR
305 LUA_BINDIR=$LUA_BINDIR
306 REQUIRE_CONFIG=$REQUIRE_CONFIG
307 IDN_LIB=$IDN_LIB
308 OPENSSL_LIB=$OPENSSL_LIB
309 CFLAGS=$CFLAGS
310 LDFLAGS=$LDFLAGS
311 CC=$CC
312 LD=$LD
313
314 EOF
315
316 echo "Installation prefix: $PREFIX"
317 echo "Prosody configuration directory: $SYSCONFDIR"
318 echo "Using Lua from: $LUA_DIR"
319
320 make clean > /dev/null 2> /dev/null
321
322 echo
323 echo "Done. You can now run 'make' to build."
324 echo