]> Joshua Wise's Git repositories - tdl.git/blame - configure
Sort list by a priority function in 'tdll'.
[tdl.git] / configure
CommitLineData
7024e37b
JW
1#!/bin/sh
2#########################################################################
3#
4# $Id: configure,v 1.5.2.2 2004/01/07 00:09:05 richard Exp $
5#
6# =======================================================================
7#
8# tdl - A console program for managing to-do lists
9#
10# Copyright (C) Richard P. Curnow 2003-2004
11#
12# This program is free software; you can redistribute it and/or modify
13# it under the terms of version 2 of the GNU General Public License as
14# published by the Free Software Foundation.
15#
16# This program is distributed in the hope that it will be useful, but
17# WITHOUT ANY WARRANTY; without even the implied warranty of
18# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19# General Public License for more details.
20#
21# You should have received a copy of the GNU General Public License along
22# with this program; if not, write to the Free Software Foundation, Inc.,
23# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
24#
25# =======================================================================
26
27if [ -f config.log ]; then rm -f config.log ; fi
28exec 5>config.log
29
30if [ "x${CC}" = "x" ]; then
31 MYCC="gcc"
32else
33 MYCC="${CC}"
34fi
35
36if [ "x${CFLAGS}" = "x" ]; then
37 MYCFLAGS="-O2 -Wall"
38else
39 MYCFLAGS="${CFLAGS}"
40fi
41
42# =======================================================================
43# Functions
44
45#{{{ cleanup
46cleanup () {
47 if [ -f docheck.c ]; then rm -f docheck.c ; fi
48 if [ -f docheck.o ]; then rm -f docheck.o ; fi
49 if [ -f docheck ]; then rm -f docheck ; fi
50 rm -rf docheck.c docheck.o docheck
51}
52#}}}
53
54#{{{ test_cc : basic compiler sanity check
55test_cc () {
56 printf "Testing whether your compiler \"$MYCC $MYCFLAGS\" works : "
57 cat >docheck.c <<EOF;
58#include <stdio.h>
59int main (int argc, char **argv)
60{
61 return 0;
62}
63EOF
64 ${MYCC} ${MYCFLAGS} -o docheck docheck.c 1>&5 2>&5
65 if [ $? -eq 0 ]
66 then
67 printf "it works\n"
68 else
69 printf "it doesn't work\n"
70 printf "Failed program was\n" 1>&5
71 cat docheck.c 1>&5
72 rm -f docheck.c docheck
73 exit 1
74 fi
75 cleanup
76}
77#}}}
78#{{{ test_readline_include
79test_readline_include () {
80 # Objective : test whether we can compile and link a program using
81 # readline, and if so how.
82
83 # As for includes, is it <readline.h> or <readline/readline.h>
84
85 # As for linking, do we need -ltermcap, -lncurses etc
86
87 printf "Testing what to include for readline : "
88 cat >docheck.c <<EOF;
89#include <stdio.h>
90#include <readline.h>
91int main (int argc, char **argv) {
92 printf("%s\n", rl_library_version);
93 return 0;
94}
95EOF
96 ${MYCC} ${MYCFLAGS} ${readline_inc_arg} -c -o docheck.o docheck.c 1>&5 2>&5
97 if [ $? -eq 0 ]; then
98 printf "<readline.h>\n"
99 READLINE_DEFINE="-DBARE_READLINE_H=1"
100 else
101 rm -f docheck.c
102 cat >docheck.c <<EOF;
103#include <stdio.h>
104#include <readline/readline.h>
105int main (int argc, char **argv) {
106 printf("%s\n", rl_library_version);
107 return 0;
108}
109EOF
110 ${MYCC} ${MYCFLAGS} ${readline_inc_arg} -c -o docheck.o docheck.c 1>&5 2>&5
111 if [ $? -eq 0 ]; then
112 printf "<readline/readline.h>\n"
113 READLINE_DEFINE="-DBARE_READLINE_H=0"
114 else
115 printf "FAILED\n"
116 printf "Can't include readline.h, giving up on readline"
117 use_readline="no"
118 fi
119 fi
120
121 cleanup
122 return
123}
124
125#}}}
126#{{{ test_readline_lib
127test_readline_lib () {
128
129 printf "Testing extra libraries to link with readline : "
130 cat >docheck.c <<EOF;
131#include <stdio.h>
132#if BARE_READLINE_H
133#include <readline.h>
134#else
135#include <readline/readline.h>
136#endif
137
138int main (int argc, char **argv) {
139 printf("%s\n", rl_library_version);
140 return 0;
141}
142EOF
143 ${MYCC} ${MYCFLAGS} ${readline_inc_arg} ${READLINE_DEFINE} -c -o docheck.o docheck.c 1>&5 2>&5
144 if [ $? -ne 0 ]; then
145 printf "unexpected compile failure, giving up on readline\n"
146 use_readline="no"
147 cleanup
148 return
149 fi
150
151 # Now try to link it
152 ${MYCC} ${MYCFLAGS} -o docheck docheck.o ${readline_lib_arg} -lreadline 1>&5 2>&5
153 if [ $? -eq 0 ]; then
154 extra_readline_libs=""
155 printf "(none)\n"
156 cleanup
157 return
158 fi
159
160 ${MYCC} ${MYCFLAGS} -o docheck docheck.o ${readline_lib_arg} -lreadline -ltermcap 1>&5 2>&5
161 if [ $? -eq 0 ]; then
162 extra_readline_libs="-ltermcap"
163 printf -- "-ltermcap\n"
164 cleanup
165 return
166 fi
167
168 ${MYCC} ${MYCFLAGS} -o docheck docheck.o ${readline_lib_arg} -lreadline -lncurses 1>&5 2>&5
169 if [ $? -eq 0 ]; then
170 extra_readline_libs="-lncurses"
171 printf -- "-lncurses\n"
172 cleanup
173 return
174 fi
175
176 printf "can't link a readline program\n"
177 use_readline="no"
178 return
179
180}
181#}}}
182#{{{ test_completion_matches
183test_completion_matches () {
184 # See if the readline library has completion_matches()
185
186 printf "Testing for completion_matches in readline : "
187 cat >docheck.c <<EOF;
188#include <stdio.h>
189#if BARE_READLINE_H
190#include <readline.h>
191#else
192#include <readline/readline.h>
193#endif
194
195int main (int argc, char **argv) {
196 void *x = &completion_matches;
197 printf("%p\n", x);
198 return 0;
199}
200EOF
201 ${MYCC} ${MYCFLAGS} ${readline_inc_arg} ${READLINE_DEFINE} -c -o docheck.o docheck.c 1>&5 2>&5
202 if [ $? -ne 0 ]; then
203 printf "no\n";
204 has_completion_matches=no
205 cleanup
206 return
207 fi
208
209 ${MYCC} ${MYCFLAGS} -o docheck docheck.o ${readline_lib_arg} -lreadline ${extra_readline_libs} 1>&5 2>&5
210 if [ $? -eq 0 ]; then
211 printf "yes\n"
212 has_completion_matches=yes
213 else
214 printf "no\n"
215 has_completion_matches=no
216 fi
217 cleanup
218}
219#}}}
220#{{{ test_rl_completion_matches
221test_rl_completion_matches () {
222 # See if the readline library has completion_matches()
223
224 printf "Testing for rl_completion_matches in readline : "
225 cat >docheck.c <<EOF;
226#include <stdio.h>
227#if BARE_READLINE_H
228#include <readline.h>
229#else
230#include <readline/readline.h>
231#endif
232
233int main (int argc, char **argv) {
234 void *x = &rl_completion_matches;
235 printf("%p\n", x);
236 return 0;
237}
238EOF
239 ${MYCC} ${MYCFLAGS} ${readline_inc_arg} ${READLINE_DEFINE} -c -o docheck.o docheck.c 1>&5 2>&5
240 if [ $? -ne 0 ]; then
241 printf "no\n"
242 has_rl_completion_matches=no
243 cleanup
244 return
245 fi
246
247 ${MYCC} ${MYCFLAGS} -o docheck docheck.o ${readline_lib_arg} -lreadline ${extra_readline_libs} 1>&5 2>&5
248 if [ $? -eq 0 ]; then
249 printf "yes\n"
250 has_rl_completion_matches=yes
251 else
252 printf "no\n"
253 has_rl_completion_matches=no
254 fi
255 cleanup
256}
257#}}}
258
259#{{{ usage
260usage () {
261 cat <<EOF;
262\`configure' configures tdl to adapt to many kinds of systems.
263
264Usage: ./configure [OPTION]...
265
266Defaults for the options are specified in brackets.
267
268Configuration:
269 -h, --help display this help and exit
270
271Installation directories:
272 --prefix=PREFIX install architecture-independent files in PREFIX
273 [/usr/local]
274
275By default, \`make install' will install all the files in
276\`/usr/local/bin', \`/usr/local/lib' etc. You can specify
277an installation prefix other than \`/usr/local' using \`--prefix',
278for instance \`--prefix=$HOME'.
279
280For better control, use the options below.
281 --without-readline Don't try to use GNU readline
282 --readline-dir=DIR Specify parent of readline include and lib directories
283 --readline-inc-dir=DIR Specify where readline include directory is
284 --readline-lib-dir=DIR Specify where readline lib directory is
285
286Fine tuning of the installation directories:
287 --bindir=DIR user executables [EPREFIX/bin]
288 --infodir=DIR info documentation [PREFIX/info]
289 --mandir=DIR man documentation [PREFIX/man]
290
291Some influential environment variables:
292 CC C compiler command
293 CFLAGS C compiler flags
294 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
295 nonstandard directory <lib dir>
296
297Use these variables to override the choices made by \`configure' or to help
298it to find libraries and programs with nonstandard names/locations.
299
300Report bugs to <rc@rc0.org.uk>.
301EOF
302}
303#}}}
304# =======================================================================
305
306# Defaults for variables
307PREFIX=/usr/local
308
309use_readline=yes
310bad_options=no
311use_dotlock=yes
312
313# Parse options to configure
314for option
315do
316 case "$option" in
317
318 --prefix=* | --install-prefix=* )
319 PREFIX=`echo $option | sed -e 's/[^=]*=//;'`
320 ;;
321 --bindir=* )
322 BINDIR=`echo $option | sed -e 's/[^=]*=//;'`
323 ;;
324 --mandir=* )
325 MANDIR=`echo $option | sed -e 's/[^=]*=//;'`
326 ;;
327 --infodir=* )
328 INFODIR=`echo $option | sed -e 's/[^=]*=//;'`
329 ;;
330 --without-readline )
331 use_readline=no
332 ;;
333 --readline-dir=* )
334 readline_dir=`echo $option | sed -e 's/[^=]*=//;'`
335 ;;
336 --readline-inc-dir=* )
337 readline_inc_dir=`echo $option | sed -e 's/[^=]*=//;'`
338 ;;
339 --readline-lib-dir=* )
340 readline_lib_dir=`echo $option | sed -e 's/[^=]*=//;'`
341 ;;
342 --disable-dotlock )
343 use_dotlock=no
344 ;;
345 -h | --help )
346 usage
347 exit 1
348 ;;
349 * )
350 printf "Unrecognized option : $option\n"
351 bad_options=yes
352 ;;
353 esac
354done
355
356if [ ${bad_options} = yes ]; then
357 exit 1
358fi
359
360#{{{ process readline-related arguments
361if [ "$use_readline" = "yes" ]; then
362 if [ "x$readline_dir" != "x" ]; then
363 if [ "x$readline_inc_dir" = "x" ]; then
364 readline_inc_dir="${readline_dir}/include"
365 fi
366 if [ "x$readline_lib_dir" = "x" ]; then
367 readline_lib_dir="${readline_dir}/lib"
368 fi
369 fi
370
371 if [ "x$readline_inc_dir" != "x" ]; then
372 readline_inc_arg="-I${readline_inc_dir}"
373 else
374 readline_inc_arg=""
375 fi
376
377 if [ "x$readline_lib_dir" != "x" ]; then
378 readline_lib_arg="-L${readline_lib_dir} -R${readline_lib_dir}"
379 else
380 readline_lib_arg=""
381 fi
382fi
383#}}}
384
385test_cc
386if [ "${use_readline}" = "yes" ]; then test_readline_include ; fi
387if [ "${use_readline}" = "yes" ]; then test_readline_lib ; fi
388if [ "${use_readline}" = "yes" ]; then test_completion_matches ; fi
389if [ "${use_readline}" = "yes" ]; then test_rl_completion_matches ; fi
390
391case "${use_readline}-${has_rl_completion_matches}-${has_completion_matches}" in
392 yes-yes-* )
393 READLINE_DEFINE="-DUSE_READLINE=1 ${READLINE_DEFINE} -DUSE_RL_COMPLETION_MATCHES=1"
394 ;;
395 yes-*-yes )
396 READLINE_DEFINE="-DUSE_READLINE=1 ${READLINE_DEFINE} -DUSE_RL_COMPLETION_MATCHES=0"
397 ;;
398 yes-* )
399 printf "Can't find a completion function in readline\n"
400 exit 1
401 ;;
402 no-* )
403 READLINE_DEFINE="-UUSE_READLINE"
404 printf "Not using readline\n";
405esac
406
407case "${use_dotlock}" in
408 yes )
409 DOTLOCK_DEFINE="-DUSE_DOTLOCK=1"
410 ;;
411 no )
412 DOTLOCK_DEFINE=""
413 ;;
414esac
415
416DEFINES=${DOTLOCK_DEFINE}
417
418if [ "x" = "x${BINDIR}" ]; then BINDIR=${PREFIX}/bin ; fi
419if [ "x" = "x${MANDIR}" ]; then MANDIR=${PREFIX}/man ; fi
420if [ "x" = "x${INFODIR}" ]; then INFODIR=${PREFIX}/info ; fi
421
422if [ "x${use_readline}" = "xno" ]; then
423 lib_readline=""
424else
425 lib_readline="${readline_lib_arg} -lreadline ${extra_readline_libs}"
426fi
427
428echo "Generating Makefile"
429
430rm -f Makefile
431sed -e "s%@cc@%${MYCC}%; \
432 s%@cflags@%${MYCFLAGS}%; \
433 s%@prefix@%${PREFIX}%; \
434 s%@bindir@%${BINDIR}%; \
435 s%@mandir@%${MANDIR}%; \
436 s%@infodir@%${INFODIR}%; \
437 s%@readline_define@%${READLINE_DEFINE}%; \
438 s%@defines@%${DEFINES}%; \
439 s%@inc_readline@%${readline_inc_arg}%; \
440 s%@lib_readline@%${lib_readline}%; \
441 " < Makefile.in > Makefile
442
443# =======================================================================
444# vim:et:sw=2:ht=2:sts=2:fdm=marker:cms=#%s
445
This page took 0.055477 seconds and 4 git commands to generate.