1 |
#!/bin/sh |
2 |
# |
3 |
# Configuration script for Services. |
4 |
# |
5 |
# IRC Services is copyright (c) 1996-2009 Andrew Church. |
6 |
# E-mail: <achurch@achurch.org> |
7 |
# Parts written by Andrew Kempe and others. |
8 |
# This program is free but copyrighted software; see the file GPL.txt for |
9 |
# details. |
10 |
|
11 |
########################################################################### |
12 |
|
13 |
# Temporary directory to use for various things. |
14 |
CONFTMP=conf-tmp |
15 |
|
16 |
########################################################################### |
17 |
|
18 |
# Nifty handy functions. |
19 |
|
20 |
# Echo something and stay on the same line. |
21 |
echo2 () { |
22 |
$ECHO2 "$*$ECHO2SUF" # these are defined below |
23 |
} |
24 |
|
25 |
# Write a line to the log file, including the current test mode. |
26 |
log () { |
27 |
echo >&3 "$MODE: $*" |
28 |
} |
29 |
|
30 |
# Run a command, writing the command, output, and exit status (if nonzero) |
31 |
# to the log. |
32 |
run () { |
33 |
echo >&3 "$MODE: >>> $*" |
34 |
("$@") >&3 2>&3 </dev/null |
35 |
xxres=$? |
36 |
if [ $xxres -ne 0 ] ; then |
37 |
echo >&3 "$MODE: *** Command failed (exit code $xxres)" |
38 |
fi |
39 |
return $xxres |
40 |
} |
41 |
|
42 |
# Test whether a file exists (some shells don't have "test -e"). |
43 |
exists () { |
44 |
if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then |
45 |
return 0 |
46 |
else |
47 |
return 1 |
48 |
fi |
49 |
} |
50 |
|
51 |
# Run grep without any output. |
52 |
grep_q () { |
53 |
grep >/dev/null 2>&1 "$@" |
54 |
} |
55 |
|
56 |
########################################################################### |
57 |
|
58 |
# How can we echo something without going to the next line? |
59 |
|
60 |
ECHO2SUF='' |
61 |
if [ "`echo -n a ; echo -n b`" = "ab" ] ; then |
62 |
ECHO2='echo -n' |
63 |
elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then |
64 |
ECHO2='echo' ; ECHO2SUF='\c' |
65 |
elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then |
66 |
ECHO2='printf "%s"' |
67 |
else |
68 |
# oh well... |
69 |
ECHO2='echo' |
70 |
fi |
71 |
export ECHO2 ECHO2SUF |
72 |
|
73 |
########################################################################### |
74 |
|
75 |
# Kludge around GNU coreutils stuffiness. (Some versions of `head' refused |
76 |
# to recognize the standard "head -1" syntax, insisting on "head -n 1".) |
77 |
|
78 |
head_is_broken="" |
79 |
if [ x`echo test | head -1 2>/dev/null` != xtest ] ; then |
80 |
head_is_broken=broken |
81 |
elif [ "x`echo test | head -1 2>&1 >/dev/null`" != x ] ; then |
82 |
head_is_broken=broken |
83 |
fi |
84 |
HEAD () { |
85 |
if test "$head_is_broken" ; then |
86 |
count=$1; shift |
87 |
head -n`echo x$count | cut -c3-` "$@" |
88 |
else |
89 |
head "$@" |
90 |
fi |
91 |
} |
92 |
|
93 |
########################################################################### |
94 |
|
95 |
# Return the default flags for the given C compiler. |
96 |
|
97 |
def_cc_flags () { |
98 |
GCC=no |
99 |
a=`echo "x$1" | cut -c1-4` |
100 |
if [ "$a" = "xgcc" -o "x$1" = "xkgc" ] ; then |
101 |
GCC=yes |
102 |
elif "$1" --version 2>/dev/null | grep_q '(GCC)' ; then |
103 |
GCC=yes |
104 |
fi |
105 |
if [ $GCC = yes ] ; then |
106 |
echo "-O2 -fno-strict-aliasing" |
107 |
elif [ "X$1" = "Xicc" ] ; then |
108 |
echo "-O0 -wd144,167,556" |
109 |
fi |
110 |
} |
111 |
|
112 |
########################################################################### |
113 |
|
114 |
# Test for the presence of a given include file or function. If the |
115 |
# variable TEST is non-empty, it contains code to be placed at the end of |
116 |
# main(), and should return 0 if everything is okay, else 1. |
117 |
# |
118 |
# For includes: Pass the include filename as an argument. The variable |
119 |
# HAVE_include_name, where "include_name" is the name of the include file |
120 |
# with letters uppercased and non-alphanumerics replaced by underscores, is |
121 |
# set to 1 if the include file is present, else 0. |
122 |
# |
123 |
# For functions: Pass the return type, function name, and prototype as |
124 |
# arguments. The variable HAVE_function, where "function" is the name |
125 |
# of the function with letters uppercased, is set to 1 if the function is |
126 |
# available, else 0. |
127 |
# |
128 |
# For both: The result code of the function will be 0 (true) if the entity |
129 |
# is present, else 1 (false). |
130 |
|
131 |
test_include () { |
132 |
include="$1" |
133 |
inc2="`echo $include | sed 'y+abcdefghijklmnopqrstuvwxyz/.-+ABCDEFGHIJKLMNOPQRSTUVWXYZ___+'`" |
134 |
if [ -f "/usr/include/$include" ] ; then |
135 |
eval "HAVE_${inc2}=1" |
136 |
log "found $include in /usr/include" |
137 |
return 0 |
138 |
fi |
139 |
cat >$CONFTMP/test.c <<EOT |
140 |
#include <$include> |
141 |
int main() { return 0; } |
142 |
EOT |
143 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
144 |
eval "HAVE_${inc2}=1" |
145 |
log "found $include" |
146 |
return 0 |
147 |
else |
148 |
eval "HAVE_${inc2}=0" |
149 |
log "didn't find $include" |
150 |
return 1 |
151 |
fi |
152 |
} |
153 |
|
154 |
|
155 |
test_function () { |
156 |
rettype="$1" |
157 |
func="$2" |
158 |
proto="$3" |
159 |
if [ ! "$rettype" -o ! "$func" ] ; then |
160 |
log "test_function: missing parameter(s)" |
161 |
return 1 |
162 |
fi |
163 |
if [ ! "$proto" ] ; then |
164 |
proto="(...)" |
165 |
fi |
166 |
func2=`echo $func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` |
167 |
if [ ! "$TEST" ] ; then |
168 |
TEST="return 0;" |
169 |
fi |
170 |
cat >$CONFTMP/test.c <<EOT |
171 |
int main() { |
172 |
extern $rettype $func$proto; |
173 |
$TEST |
174 |
} |
175 |
EOT |
176 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test && (run $CONFTMP/test) 2>&1 ; then |
177 |
eval "HAVE_${func2}=1" |
178 |
log "found $func" |
179 |
return 0 |
180 |
else |
181 |
eval "HAVE_${func2}=0" |
182 |
log "didn't find $func" |
183 |
return 1 |
184 |
fi |
185 |
} |
186 |
|
187 |
########################################################################### |
188 |
|
189 |
# If something happens that really shouldn't: |
190 |
|
191 |
whoa_there () { |
192 |
cat <<EOT |
193 |
|
194 |
*** WHOA THERE! *** |
195 |
|
196 |
We suddenly couldn't compile using the C compiler we already tested! |
197 |
The command line we used was: |
198 |
$CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test |
199 |
Please try to fix this; if you can't, mail achurch@achurch.org |
200 |
with information about your system, the output from this script, |
201 |
and the \`configure.log' file generated by this script. |
202 |
|
203 |
Configuration aborted. |
204 |
|
205 |
EOT |
206 |
exit 4 |
207 |
} |
208 |
|
209 |
########################################################################### |
210 |
########################################################################### |
211 |
|
212 |
# Start of actual script. |
213 |
|
214 |
########################################################################### |
215 |
|
216 |
# Create a temporary directory for our use. |
217 |
|
218 |
if exists $CONFTMP ; then |
219 |
rm -rf $CONFTMP |
220 |
fi |
221 |
if mkdir $CONFTMP ; then : ; else |
222 |
echo "Failed to create temporary directory! Exiting." |
223 |
exit 2 |
224 |
fi |
225 |
if chmod u+rwx $CONFTMP ; then : ; else |
226 |
echo "Cannot write to temporary directory! Exiting." |
227 |
exit 2 |
228 |
fi |
229 |
|
230 |
########################################################################### |
231 |
|
232 |
# Variable initialization. |
233 |
|
234 |
MY_CONFIG_VERSION=105 |
235 |
CONFIG_VERSION= |
236 |
|
237 |
PROGRAM=ircservices |
238 |
PREFIX= |
239 |
BINDEST=/usr/local/sbin |
240 |
DATDEST=/usr/local/lib/ircservices |
241 |
|
242 |
TEST_NT= |
243 |
INSTALL= |
244 |
MKDIR= |
245 |
CP_ALL= |
246 |
|
247 |
CC= |
248 |
CC_FLAGS=bonkle |
249 |
CC_LFLAGS=bonkle |
250 |
CC_LIBS=bonkle |
251 |
EXE_SUFFIX=bonkle |
252 |
NEED_GCC3_HACK=0 |
253 |
SYMS_NEED_UNDERSCORES=0 |
254 |
|
255 |
SORTED_LISTS=1 |
256 |
CLEAN_COMPILE=1 |
257 |
DUMPCORE=0 |
258 |
MEMCHECKS=0 |
259 |
SHOWALLOCS=0 |
260 |
|
261 |
STATIC_MODULES= |
262 |
CC_SHARED= |
263 |
CC_DYN_LFLAGS= |
264 |
CC_DYN_LIBS= |
265 |
RANLIB= |
266 |
|
267 |
TYPE_INT8= |
268 |
TYPE_INT16= |
269 |
TYPE_INT32= |
270 |
TYPE_INT64= |
271 |
SIZEOF_INT= |
272 |
SIZEOF_LONG= |
273 |
SIZEOF_PTR= |
274 |
SIZEOF_TIME_T= |
275 |
MAX_TIME_T= |
276 |
SIZEOF_GID_T=bonkle |
277 |
HAVE_SOCKLEN_T= |
278 |
|
279 |
HAVE_STDINT_H= |
280 |
HAVE_STRINGS_H= |
281 |
HAVE_SYS_SELECT_H= |
282 |
HAVE_SYS_SYSPROTO_H= |
283 |
|
284 |
HAVE_STRERROR= |
285 |
HAVE_SYS_ERRLIST=0 |
286 |
HAVE_HSTRERROR= |
287 |
|
288 |
HAVE_SNPRINTF= |
289 |
BAD_SNPRINTF= |
290 |
HAVE_STRTOK= |
291 |
HAVE_STRICMP= |
292 |
HAVE_STRCASECMP= |
293 |
HAVE_STRDUP= |
294 |
HAVE_STRSPN= |
295 |
HAVE_STRSIGNAL= |
296 |
HAVE_GETTIMEOFDAY= |
297 |
HAVE_SETGRENT= |
298 |
HAVE_SETREGID= |
299 |
HAVE_UMASK= |
300 |
HAVE_FORK= |
301 |
HAVE_GETHOSTBYNAME= |
302 |
HAVE_GETSETRLIMIT= |
303 |
HAVE_CRYPT= |
304 |
MISSING=bonkle |
305 |
|
306 |
########################################################################### |
307 |
|
308 |
# Command-line parsing. |
309 |
|
310 |
OPT_OS2= |
311 |
OPT_BINDEST= |
312 |
OPT_DATDEST= |
313 |
OPT_SORTED_LISTS=bonkle |
314 |
OPT_CLEAN_COMPILE=bonkle |
315 |
OPT_MEMCHECKS=bonkle |
316 |
OPT_SHOWALLOCS=bonkle |
317 |
OPT_DUMPCORE=bonkle |
318 |
IGNORE_CACHE= |
319 |
USE_LOCAL_FUNCS= |
320 |
NO_USE_LOCAL_FUNCS= |
321 |
USE_STATIC_MODULES= |
322 |
USE_DYNAMIC_MODULES= |
323 |
|
324 |
USER_CC= |
325 |
USER_CC_FLAGS=bonkle |
326 |
USER_CC_LFLAGS=bonkle |
327 |
USER_CC_LIBS= |
328 |
|
329 |
export OPT_OS2 OPT_BINDEST OPT_DATDEST IGNORE_CACHE |
330 |
export USE_LOCAL_FUNCS NO_USE_LOCAL_FUNCS USE_STATIC_MODULES |
331 |
export USE_DYNAMIC_MODULES OPT_SORTED_LISTS OPT_CLEAN_COMPILE |
332 |
export OPT_DUMPCORE OPT_MEMCHECKS OPT_SHOWALLOCS |
333 |
export USER_CC USER_CC_FLAGS USER_CC_LFLAGS USER_CC_LIBS |
334 |
|
335 |
while [ $# -gt 0 ] ; do |
336 |
if echo "$1" | grep_q '^-' ; then |
337 |
option=`echo "$1" | cut -c2-` |
338 |
shift |
339 |
if echo "$option" | grep_q '^-' ; then |
340 |
option=`echo "$option" | cut -c2-` |
341 |
if echo "$option" | grep_q '=' ; then |
342 |
value=`echo "$option" | sed 's/^[^=]*=//'` |
343 |
option=`echo "$option" | sed 's/=.*$//'` |
344 |
set -- "$value" "$@" |
345 |
fi |
346 |
fi |
347 |
if [ "$option" = "check" ] ; then |
348 |
rm -rf $CONFTMP |
349 |
if [ -f config.cache ] ; then |
350 |
CACHEVER=`grep '^CONFIG_VERSION=' config.cache | cut -d= -f2` |
351 |
if [ "x$CACHEVER" = "x$MY_CONFIG_VERSION" ] ; then |
352 |
exit 0 |
353 |
else |
354 |
exit 1 |
355 |
fi |
356 |
else |
357 |
exit 1 |
358 |
fi |
359 |
elif [ "$option" = "ignore-cache" ] ; then |
360 |
IGNORE_CACHE=bonkle |
361 |
elif [ "$option" = "cc" ] ; then |
362 |
USER_CC="$1" |
363 |
shift |
364 |
elif [ "$option" = "cflags" ] ; then |
365 |
USER_CC_FLAGS="$1" |
366 |
shift |
367 |
elif [ "$option" = "lflags" ] ; then |
368 |
USER_CC_LFLAGS="$1" |
369 |
shift |
370 |
elif [ "$option" = "libs" ] ; then |
371 |
USER_CC_LIBS="$1" |
372 |
shift |
373 |
elif [ "$option" = "os2" ] ; then |
374 |
OPT_OS2=1 |
375 |
elif [ "$option" = "program" ] ; then |
376 |
if echo "x$1" | grep_q / ; then |
377 |
echo >&2 "Error: -program parameter must not contain a slash" |
378 |
exit 1 |
379 |
elif [ "$1" = "modules" ] ; then |
380 |
echo >&2 'Error: "modules" cannot be used as the program name' |
381 |
exit 1 |
382 |
else |
383 |
PROGRAM="$1" |
384 |
fi |
385 |
shift |
386 |
elif [ "$option" = "bindest" ] ; then |
387 |
OPT_BINDEST="$1" |
388 |
shift |
389 |
elif [ "$option" = "datdest" ] ; then |
390 |
OPT_DATDEST="$1" |
391 |
shift |
392 |
elif [ "$option" = "prefix" ] ; then |
393 |
PREFIX="$1" |
394 |
shift |
395 |
elif [ "$option" = "use-local-funcs" ] ; then |
396 |
USE_LOCAL_FUNCS=bonkle |
397 |
NO_USE_LOCAL_FUNCS= |
398 |
elif [ "$option" = "no-use-local-funcs" ] ; then |
399 |
USE_LOCAL_FUNCS= |
400 |
NO_USE_LOCAL_FUNCS=bonkle |
401 |
elif [ "$option" = "use-static-modules" ] ; then |
402 |
USE_DYNAMIC_MODULES= |
403 |
USE_STATIC_MODULES=bonkle |
404 |
elif [ "$option" = "no-use-static-modules" ] ; then |
405 |
USE_DYNAMIC_MODULES=bonkle |
406 |
USE_STATIC_MODULES= |
407 |
elif [ "$option" = "sorted-lists" ] ; then |
408 |
OPT_SORTED_LISTS=1 |
409 |
elif [ "$option" = "no-sorted-lists" ] ; then |
410 |
OPT_SORTED_LISTS=0 |
411 |
elif [ "$option" = "clean-compile" ] ; then |
412 |
OPT_CLEAN_COMPILE=y |
413 |
elif [ "$option" = "no-clean-compile" ] ; then |
414 |
OPT_CLEAN_COMPILE= |
415 |
elif [ "$option" = "memchecks" ] ; then |
416 |
OPT_MEMCHECKS=y |
417 |
elif [ "$option" = "no-memchecks" ] ; then |
418 |
OPT_MEMCHECKS= |
419 |
elif [ "$option" = "showallocs" ] ; then |
420 |
OPT_SHOWALLOCS=y |
421 |
elif [ "$option" = "no-showallocs" ] ; then |
422 |
OPT_SHOWALLOCS= |
423 |
elif [ "$option" = "dumpcore" ] ; then |
424 |
OPT_DUMPCORE=y |
425 |
elif [ "$option" = "no-dumpcore" ] ; then |
426 |
OPT_DUMPCORE= |
427 |
else |
428 |
if [ "$option" != "help" -a "$option" != "h" ]; then |
429 |
echo >&2 "Unknown option/parameter: $option" |
430 |
exitval=1 |
431 |
else |
432 |
exitval=0 |
433 |
fi |
434 |
cat >&2 <<EOT |
435 |
|
436 |
Available options: |
437 |
|
438 |
*** Controlling the configure script *** |
439 |
|
440 |
-help Display list of command-line options |
441 |
-ignore-cache Don't use cache file if it exists |
442 |
|
443 |
*** Controlling compilation *** |
444 |
|
445 |
-cc PROGRAM Specify C compiler to use (overrides cache and |
446 |
check; also clears cached CFLAGS/LFLAGS values) |
447 |
-cflags FLAGS Specify compilation flags (overrides cache/check) |
448 |
-lflags FLAGS Specify link flags for C compiler (default: none) |
449 |
-libs LIBS Specify extra libraries to use (default: none) |
450 |
-os2 Indicate that this is an OS/2 system |
451 |
|
452 |
*** Controlling installation *** |
453 |
|
454 |
-program NAME Specify name to use for executable file (default |
455 |
"ircservices"); "ircservices-chk" script will |
456 |
also be renamed to "NAME-chk" |
457 |
-bindest DIR Specify directory for program file installation |
458 |
-datdest DIR Specify directory for data file installation |
459 |
-prefix DIR Specify GNU-style installation prefix (program |
460 |
will be installed in DIR/sbin, data in |
461 |
DIR/lib/<program>); overrides -bindest/-datdest |
462 |
|
463 |
*** Controlling Services features *** |
464 |
|
465 |
Note that the following functions can be disabled by adding "no-" before |
466 |
the option name; for example, "-no-use-local-funcs". For options with a |
467 |
* before the option name, the option is on by default, and you must |
468 |
explicitly give -no-option-name to disable it. |
469 |
|
470 |
-use-local-funcs Force the use of compatibility functions over |
471 |
system library functions (for debugging) |
472 |
-use-static-modules Force modules to be compiled statically, even if |
473 |
dynamic modules could be used |
474 |
* -sorted-lists Keep nickname/channel lists sorted (causes a |
475 |
performance penalty on large networks) |
476 |
* -clean-compile Attempt to compile with no warnings (causes a |
477 |
slight performance penalty) |
478 |
-memchecks Perform extra checks on memory allocation (for |
479 |
debugging only; causes a significant |
480 |
performance penalty) |
481 |
-showallocs Log all memory allocation activity (for |
482 |
debugging only; ignored unless -memchecks |
483 |
is enabled) |
484 |
-dumpcore Causes Services to attempt to write a core |
485 |
file if it crashes (for debugging) |
486 |
|
487 |
*** Other options *** |
488 |
|
489 |
-check Check whether this script has already been run |
490 |
and whether the cache is up-to-date. Exits |
491 |
with status 0 if up-to-date, 1 if not. |
492 |
|
493 |
|
494 |
GNU-style long options (--option[=value]) may also be used. |
495 |
|
496 |
Note that environment variables such as CC and CFLAGS are ignored; use |
497 |
the corresponding command-line options (-cc, -cflags, etc.) instead. |
498 |
EOT |
499 |
exit $exitval |
500 |
fi |
501 |
fi |
502 |
done |
503 |
|
504 |
########################################################################### |
505 |
|
506 |
echo "" |
507 |
echo "Beginning IRC Services configuration." |
508 |
echo "" |
509 |
|
510 |
########################################################################### |
511 |
|
512 |
# First, test for the presence of a config.cache file. If found, either |
513 |
# don't use it (-ignore-cache), or let the user know how to not use it and |
514 |
# then use it. |
515 |
|
516 |
if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then |
517 |
cat <<EOT |
518 |
Using defaults from config.cache. To ignore, either remove config.cache or |
519 |
give the command-line option "-ignore-cache". |
520 |
|
521 |
EOT |
522 |
. ./config.cache |
523 |
# Clear list of missing functions if either a relevant HAVE_* variable |
524 |
# is missing or -no-use-local-funcs was specified. |
525 |
if [ "$NO_USE_LOCAL_FUNCS" \ |
526 |
-o ! "$HAVE_SNPRINTF" \ |
527 |
-o ! "$BAD_SNPRINTF" \ |
528 |
-o ! "$HAVE_STRTOK" \ |
529 |
-o ! "$HAVE_STRICMP" \ |
530 |
-o ! "$HAVE_STRCASECMP" \ |
531 |
-o ! "$HAVE_STRDUP" \ |
532 |
-o ! "$HAVE_STRSPN" \ |
533 |
-o ! "$HAVE_STRSIGNAL" \ |
534 |
-o ! "$HAVE_GETTIMEOFDAY" \ |
535 |
-o ! "$HAVE_SETGRENT" \ |
536 |
-o ! "$HAVE_SETREGID" \ |
537 |
-o ! "$HAVE_UMASK" \ |
538 |
-o ! "$HAVE_FORK" \ |
539 |
-o ! "$HAVE_GETHOSTBYNAME" \ |
540 |
-o ! "$HAVE_GETSETRLIMIT" \ |
541 |
-o ! "$HAVE_CRYPT" \ |
542 |
] ; then |
543 |
MISSING=bonkle |
544 |
fi |
545 |
if [ ! "$CONFIG_VERSION" ] ; then |
546 |
CONFIG_VERSION=0 |
547 |
CC_LFLAGS=bonkle |
548 |
CC_LIBS=bonkle |
549 |
fi |
550 |
if [ $CONFIG_VERSION -lt 2 ] ; then |
551 |
# missing -fno-strict-aliasing |
552 |
CC= |
553 |
CC_FLAGS=bonkle |
554 |
fi |
555 |
if [ $CONFIG_VERSION -lt 4 ] ; then |
556 |
# socklen_t test broken on FreeBSD |
557 |
HAVE_SOCKLEN_T= |
558 |
fi |
559 |
if [ $CONFIG_VERSION -lt 6 ] ; then |
560 |
# deprecated GCC < 3.2, so recheck compiler |
561 |
CC= |
562 |
fi |
563 |
if [ $CONFIG_VERSION -lt 7 ] ; then |
564 |
# Added -fstack-protector avoidance, so recheck compiler flags |
565 |
CC= |
566 |
fi |
567 |
if [ $CONFIG_VERSION -lt 8 ] ; then |
568 |
# Added __builtin_xxx() bug check and fixed -fstack-protector |
569 |
# avoidance, so recheck compiler and flags |
570 |
CC= |
571 |
fi |
572 |
if [ $CONFIG_VERSION -lt 100 ] ; then |
573 |
# Initial 5.1 version: remove support for pre-C99 compilers; |
574 |
# use 0/1 instead of y/"" for compilation options |
575 |
CC= |
576 |
if [ "x$SORTED_LISTS" = "xy" ] ; then |
577 |
SORTED_LISTS=1 |
578 |
else |
579 |
SORTED_LISTS=0 |
580 |
fi |
581 |
if [ "x$CLEAN_COMPILE" = "xy" ] ; then |
582 |
CLEAN_COMPILE=1 |
583 |
else |
584 |
CLEAN_COMPILE=0 |
585 |
fi |
586 |
if [ "x$DUMPCORE" = "xy" ] ; then |
587 |
DUMPCORE=1 |
588 |
else |
589 |
DUMPCORE=0 |
590 |
fi |
591 |
if [ "x$MEMCHECKS" = "xy" ] ; then |
592 |
MEMCHECKS=1 |
593 |
else |
594 |
MEMCHECKS=0 |
595 |
fi |
596 |
if [ "x$SHOWALLOCS" = "xy" ] ; then |
597 |
SHOWALLOCS=1 |
598 |
else |
599 |
SHOWALLOCS=0 |
600 |
fi |
601 |
fi |
602 |
if [ $CONFIG_VERSION -lt 101 ] ; then |
603 |
# Add checks for -lcrypt and crypt() |
604 |
CC_LIBS=bonkle |
605 |
MISSING=bonkle |
606 |
fi |
607 |
if [ $CONFIG_VERSION -lt 102 ] ; then |
608 |
# Add check for -lm |
609 |
CC_LIBS=bonkle |
610 |
fi |
611 |
if [ $CONFIG_VERSION -lt 103 ] ; then |
612 |
# Modify checks for int8/int16/etc |
613 |
TYPE_INT8= |
614 |
TYPE_INT16= |
615 |
TYPE_INT32= |
616 |
TYPE_INT64= # not present in this version, but clear it anyway |
617 |
fi |
618 |
if [ $CONFIG_VERSION -lt 104 ] ; then |
619 |
# Add symbol resolution test to dynamic module check |
620 |
STATIC_MODULES= |
621 |
fi |
622 |
if [ "$USE_DYNAMIC_MODULES" ] ; then |
623 |
STATIC_MODULES= |
624 |
RANLIB= |
625 |
fi |
626 |
if [ "$USE_STATIC_MODULES" ] ; then |
627 |
RANLIB= |
628 |
fi |
629 |
if [ "x$USER_CC" != "x" -o "x$CC" = "x" ] ; then |
630 |
# don't mix old flags and new compiler |
631 |
CC_FLAGS=bonkle |
632 |
CC_LFLAGS=bonkle |
633 |
fi |
634 |
fi |
635 |
|
636 |
if [ "$OPT_SORTED_LISTS" != bonkle ] ; then |
637 |
if [ "$OPT_SORTED_LISTS" = y ] ; then |
638 |
SORTED_LISTS=1 |
639 |
else |
640 |
SORTED_LISTS=0 |
641 |
fi |
642 |
fi |
643 |
if [ "$OPT_CLEAN_COMPILE" != bonkle ] ; then |
644 |
if [ "$OPT_CLEAN_COMPILE" = y ] ; then |
645 |
CLEAN_COMPILE=1 |
646 |
else |
647 |
CLEAN_COMPILE=0 |
648 |
fi |
649 |
fi |
650 |
if [ "$OPT_DUMPCORE" != bonkle ] ; then |
651 |
if [ "$OPT_DUMPCORE" = y ] ; then |
652 |
DUMPCORE=1 |
653 |
else |
654 |
DUMPCORE=0 |
655 |
fi |
656 |
fi |
657 |
if [ "$OPT_MEMCHECKS" != bonkle ] ; then |
658 |
if [ "$OPT_MEMCHECKS" = y ] ; then |
659 |
MEMCHECKS=1 |
660 |
else |
661 |
MEMCHECKS=0 |
662 |
fi |
663 |
fi |
664 |
if [ "$OPT_SHOWALLOCS" != bonkle ] ; then |
665 |
if [ "$OPT_SHOWALLOCS" = y ] ; then |
666 |
SHOWALLOCS=1 |
667 |
else |
668 |
SHOWALLOCS=0 |
669 |
fi |
670 |
fi |
671 |
|
672 |
########################################################################### |
673 |
|
674 |
# Determine installation directories. |
675 |
|
676 |
default="" |
677 |
|
678 |
if [ "$PREFIX" ] ; then |
679 |
OPT_BINDEST="$PREFIX/sbin" |
680 |
OPT_DATDEST="$PREFIX/lib/$PROGRAM" |
681 |
else |
682 |
if [ ! "$OPT_BINDEST" ] ; then |
683 |
OPT_BINDEST="$BINDEST" |
684 |
default=1 |
685 |
fi |
686 |
if [ ! "$OPT_DATDEST" ] ; then |
687 |
if [ "$default" ] ; then |
688 |
OPT_DATDEST="$DATDEST" |
689 |
else |
690 |
if [ x`echo "$OPT_BINDEST" | grep -c '/\(sbin\|bin\)$'` = x1 ] ; then |
691 |
OPT_DATDEST=`echo "$OPT_BINDEST" | sed 's,\(sbin\|bin\)$,lib/$PROGRAM,'` |
692 |
else |
693 |
OPT_DATDEST=`echo "$OPT_BINDEST" | sed s,/*$,,`/lib |
694 |
fi |
695 |
fi |
696 |
fi |
697 |
fi |
698 |
|
699 |
|
700 |
BINDEST="$OPT_BINDEST" |
701 |
echo "Executable (program) files will be installed in $BINDEST" |
702 |
if exists "$BINDEST/services.h" ; then |
703 |
echo "$BINDEST appears to contain a Services source code distribution; aborting." |
704 |
exit 1 |
705 |
fi |
706 |
|
707 |
|
708 |
DATDEST="$OPT_DATDEST" |
709 |
echo "Data files will be installed in $DATDEST" |
710 |
if exists "$DATDEST/services.h" ; then |
711 |
echo "$DATDEST appears to contain a Services source code distribution; aborting." |
712 |
exit 1 |
713 |
fi |
714 |
|
715 |
########################################################################### |
716 |
|
717 |
# Set up log file for automated tests, so we have a clue what's going on if |
718 |
# something dies. |
719 |
|
720 |
exec 3>configure.log |
721 |
|
722 |
MODE=" " |
723 |
TEST="" |
724 |
export MODE TEST |
725 |
|
726 |
########################################################################### |
727 |
|
728 |
# Check whether we have a working "test FILE_A -nt FILE_B". |
729 |
|
730 |
MODE="check_test_nt " |
731 |
if [ "$TEST_NT" ] ; then |
732 |
log "cache says $TEST_NT" |
733 |
else |
734 |
echo2 "Checking sanity of /bin/sh... " |
735 |
touch $CONFTMP/file1 |
736 |
sleep 2 # just in case sleep 1 really does a sleep 0.997 or some such |
737 |
touch $CONFTMP/file2 |
738 |
if run /bin/sh -c "test $CONFTMP/file2 -nt $CONFTMP/file1" ; then |
739 |
TEST_NT=test |
740 |
log "test works" |
741 |
echo "high." |
742 |
elif run /bin/test $CONFTMP/file2 -nt $CONFTMP/file1 ; then |
743 |
TEST_NT=/bin/test |
744 |
log "/bin/test works" |
745 |
echo "medium." |
746 |
elif run /usr/bin/test $CONFTMP/file2 -nt $CONFTMP/file1 ; then |
747 |
TEST_NT=/usr/bin/test |
748 |
log "/usr/bin/test works" |
749 |
echo "medium." |
750 |
else |
751 |
log "neither test nor /bin/test nor /usr/bin/test work!" |
752 |
echo "low." |
753 |
echo " Warning: Compilation may fail unless you pass a saner shell to make:" |
754 |
echo " make [or gmake] SHELL=/usr/local/bin/bash ..." |
755 |
fi |
756 |
fi |
757 |
|
758 |
########################################################################### |
759 |
|
760 |
# Search for a compiler. |
761 |
|
762 |
MODE="find_cc " |
763 |
# Don't use the cached flags unless we use the cached compiler as well |
764 |
CACHED_CC_FLAGS=$CC_FLAGS |
765 |
CC_FLAGS=bonkle |
766 |
echo2 "Searching for a suitable compiler... " |
767 |
if [ "$USER_CC" ] ; then |
768 |
CC="$USER_CC" |
769 |
echo "(supplied) using $CC." |
770 |
log user supplied \`"$CC'" |
771 |
elif [ "$CC" ] ; then |
772 |
echo "(cached) using $CC." |
773 |
log cache supplied \`"$CC'" |
774 |
CC_FLAGS=$CACHED_CC_FLAGS |
775 |
elif run gcc --version ; then |
776 |
version=`gcc --version 2>&1 | HEAD -1 | sed 's/[^0-9]*[^0-9.]\([0-9][0-9.]*\).*/\1/'` |
777 |
vmajor=`echo "x.$version.0" | cut -d. -f2` |
778 |
vminor=`echo "x.$version.0" | cut -d. -f3` |
779 |
if test "x$version" = x || (echo "x$vmajor" | cut -c2- | grep '[^0-9]' >/dev/null 2>&1) || (echo "x$vminor" | cut -c2- | grep '[^0-9]' >/dev/null 2>&1) ; then |
780 |
log "unparseable version string: $version" |
781 |
cat <<EOT |
782 |
|
783 |
|
784 |
*** WHOA THERE! *** |
785 |
|
786 |
Unable to determine the version of GCC installed on your system. Please |
787 |
make certain you are using an official GCC distribution. If you are |
788 |
certain \`gcc' is the correct compiler on your system and it is a recent |
789 |
version of GCC, re-run this script with the option \`-cc gcc' (or |
790 |
\`--cc=gcc'). |
791 |
|
792 |
Configuration aborted. |
793 |
|
794 |
EOT |
795 |
exit 1 |
796 |
elif test $vmajor -lt 3 || test $vmajor = 3 -a $vminor -lt 2 ; then |
797 |
cat <<EOT |
798 |
|
799 |
|
800 |
*** WHOA THERE! *** |
801 |
|
802 |
Your version of GCC was detected as \`$version'. As of Services 5.1, |
803 |
versions of GCC earlier than 3.2 are no longer supported, as they do not |
804 |
understand certain features of the C99 standard used by Services. Please |
805 |
upgrade your compiler to GCC 3.2 or later. |
806 |
|
807 |
Configuration aborted. |
808 |
|
809 |
EOT |
810 |
log "found \`gcc', but bad version: $version" |
811 |
exit 1 |
812 |
else # version okay |
813 |
echo "great, found gcc!" |
814 |
log using \`gcc\' |
815 |
CC=gcc |
816 |
fi |
817 |
else |
818 |
echo "gcc not found." |
819 |
echo2 " Looking for alternatives... " |
820 |
echo >$CONFTMP/test.c "int main(){return 1;}" |
821 |
if run icc $CONFTMP/test.c -o $CONFTMP/test ; then |
822 |
CC=icc |
823 |
elif run cc $CONFTMP/test.c -o $CONFTMP/test ; then |
824 |
CC=cc |
825 |
else |
826 |
echo "no C compiler found!" |
827 |
echo " Use the -cc command line option to specify your C compiler." |
828 |
log "automatic tests failed" |
829 |
exit 1 |
830 |
fi |
831 |
# See if it handles ANSI. |
832 |
cat >$CONFTMP/test.c <<EOT |
833 |
int main(int argc, char **argv) { |
834 |
extern void foo(int bar); |
835 |
} |
836 |
EOT |
837 |
log "test for ANSI..." |
838 |
if run $CC $CONFTMP/test.c -o $CONFTMP/test ; then |
839 |
echo "using $CC." |
840 |
if [ "x`def_cc_flags $CC`" = "x" -a "x$USER_CC_FLAGS" = "x" ] ; then |
841 |
echo " Defaulting to no compiler flags. Use the -cflags option" |
842 |
echo " if you need to specify any." |
843 |
fi |
844 |
log using \`"$CC'" |
845 |
else |
846 |
echo "found $CC, but it's not ANSI-compliant!" |
847 |
echo " Use the -cc command line option to specify your C compiler." |
848 |
log \`"$CC' not ANSI-compliant" |
849 |
exit 1 |
850 |
fi |
851 |
fi |
852 |
|
853 |
|
854 |
# See whether compiler supports various C99 features. |
855 |
|
856 |
log "test vararg macros..." |
857 |
cat >$CONFTMP/test.c <<EOT |
858 |
#define foo(a,...) int a() {printf("hello %s\n" , ##__VA_ARGS__); return 69;} |
859 |
foo(main,"world") |
860 |
EOT |
861 |
if run $CC $CONFTMP/test.c -o $CONFTMP/test && (run $CONFTMP/test; test $? = 69) ; then |
862 |
log "vararg macros ok." |
863 |
else |
864 |
log "vararg macros NG! Aborting." |
865 |
cat <<EOT |
866 |
|
867 |
*** WHOA THERE! *** |
868 |
|
869 |
Your C compiler is not compliant with modern C standards. Services 5.1 |
870 |
requires a C compiler that understands the C99 standard, such as GCC |
871 |
(version 3.2 or later). |
872 |
|
873 |
Configuration aborted. |
874 |
|
875 |
EOT |
876 |
exit 1 |
877 |
fi |
878 |
|
879 |
log "test va_copy..." |
880 |
cat >$CONFTMP/test.c <<EOT |
881 |
#include <stdarg.h> |
882 |
void foo(int a,...) { |
883 |
va_list args, args2; |
884 |
va_start(args,a); |
885 |
va_copy(args2, args); |
886 |
va_end(args); |
887 |
va_end(args2); |
888 |
} |
889 |
int main() { |
890 |
foo(1,2); |
891 |
return 0; |
892 |
} |
893 |
EOT |
894 |
if run $CC $CONFTMP/test.c -o $CONFTMP/test && run $CONFTMP/test ; then |
895 |
log "va_copy ok." |
896 |
else |
897 |
log "va_copy NG! Aborting." |
898 |
cat <<EOT |
899 |
|
900 |
*** WHOA THERE! *** |
901 |
|
902 |
Your C compiler is not compliant with modern C standards. Services 5.1 |
903 |
requires a C compiler that understands the C99 standard, such as GCC |
904 |
(version 3.2 or later). |
905 |
|
906 |
Configuration aborted. |
907 |
|
908 |
EOT |
909 |
exit 1 |
910 |
fi |
911 |
|
912 |
|
913 |
# Test compiler options. |
914 |
|
915 |
MODE="find_ccopts " |
916 |
if [ "$USER_CC_FLAGS" != bonkle ] ; then |
917 |
CC_FLAGS="$USER_CC_FLAGS" |
918 |
echo "Compiler flags supplied: $CC_FLAGS" |
919 |
log user supplied flags: \`"$CC_FLAGS'" |
920 |
elif [ "$CC_FLAGS" != bonkle ] ; then |
921 |
echo "Compiler flags: (cached) $CC_FLAGS" |
922 |
log cache supplied flags: \`"$CC_FLAGS'" |
923 |
else |
924 |
|
925 |
CC_FLAGS=`def_cc_flags $CC` |
926 |
|
927 |
# Test for GCC stack-protector patch (generates broken code). |
928 |
log "check for SSP" |
929 |
cat >$CONFTMP/test.c <<EOT |
930 |
void bar(int hogehoge) { printf("%d", hogehoge); } |
931 |
void foo(int xyzzy) { __builtin_apply(bar,__builtin_apply_args(),64); } |
932 |
int main(int ac, char **av) { foo(ac>1 ? 24 : 42); return 0; } |
933 |
EOT |
934 |
if run $CC $CC_FLAGS -fstack-protector $CONFTMP/test.c -o $CONFTMP/test |
935 |
then |
936 |
log "SSP present" |
937 |
# See if the bug exists; if so, disable stack protection. Test |
938 |
# twice just in case the bug exists but the stack happens to |
939 |
# randomly contain 42. |
940 |
a=`$CONFTMP/test` |
941 |
b=`$CONFTMP/test x` |
942 |
log "test results: a=[$a] b=[$b]" |
943 |
if [ "$a" != 42 -o "$b" != 24 ] ; then |
944 |
CC_FLAGS="$CC_FLAGS -fno-stack-protector" |
945 |
log "SSP bug found, disabling" |
946 |
else |
947 |
log "SSP bug not detected" |
948 |
fi |
949 |
else |
950 |
log "SSP not present" |
951 |
fi |
952 |
|
953 |
echo2 "Testing default compiler flags ($CC_FLAGS)... " |
954 |
cat >$CONFTMP/test.c <<EOT |
955 |
int main(int argc, char **argv) { |
956 |
extern void foo(int bar); |
957 |
} |
958 |
EOT |
959 |
if run $CC $CC_FLAGS -c $CONFTMP/test.c -o $CONFTMP/test.o ; then |
960 |
echo "looks good." |
961 |
else |
962 |
echo "no luck! Using no flags." |
963 |
echo " If you know what flags you want, use the -cflags option to configure." |
964 |
CC_FLAGS= |
965 |
fi |
966 |
log using flags: \`"$CC_FLAGS'" |
967 |
fi |
968 |
# If -fstack-protector isn't disabled, test once more to make sure |
969 |
# __builtin_apply() is working--but watch out for the __builtin_apply() |
970 |
# bugs below, as well as http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20076 |
971 |
if ! echo "$CC_FLAGS" | grep_q fno-stack-protector ; then |
972 |
log "-fstack-protector check" |
973 |
cat >$CONFTMP/test.c <<EOT |
974 |
#include <stdio.h> |
975 |
#if defined(__sparc__) |
976 |
# define APPLY __builtin_apply((void *)bar,__builtin_apply_args(),64); asm("ld [%sp-128],%i0") |
977 |
#elif defined(__POWERPC__) |
978 |
# define APPLY __builtin_apply((void *)bar,__builtin_apply_args(),64); asm("mr r0,r3") |
979 |
#else |
980 |
# define APPLY __builtin_return(__builtin_apply((void *)bar,__builtin_apply_args(),64)) |
981 |
#endif |
982 |
int bar(int hogehoge) { return printf("%d", hogehoge); } |
983 |
int foo(int xyzzy) { APPLY; } |
984 |
int main(int ac, char **av) { printf(" %d",foo(ac>1?9:42)); return 0; } |
985 |
EOT |
986 |
if run $CC $CC_FLAGS -fno-inline-functions $CONFTMP/test.c -o $CONFTMP/test |
987 |
then |
988 |
run $CONFTMP/test # to get the output into the log file |
989 |
a=`$CONFTMP/test` |
990 |
b=`$CONFTMP/test x` |
991 |
log "test results: a=[$a] b=[$b]" |
992 |
if [ "$a" != "42 2" -o "$b" != "9 1" ] ; then |
993 |
log "-fstack-protector check failed!" |
994 |
cat <<EOT |
995 |
|
996 |
*** WHOA THERE! *** |
997 |
|
998 |
Your compiler is not compiling certain code correctly; this will result in |
999 |
crashes when running Services. If you have specified compiler flags, please |
1000 |
add "-fno-stack-protector" to the flags, or remove "-fstack-protector" if it |
1001 |
is present. If this does not help, please reinstall or upgrade your |
1002 |
compiler. See section 2-1 of the manual for details. |
1003 |
|
1004 |
Configuration aborted. |
1005 |
|
1006 |
EOT |
1007 |
exit 1 |
1008 |
fi |
1009 |
else |
1010 |
# For whatever reason, the compilation failed; maybe the compiler |
1011 |
# isn't a GCC flavor and doesn't understand -fno-inline-functions |
1012 |
# or __builtin_apply(). Assume things are okay. |
1013 |
log "-fstack-protector check compilation failed, ignoring" |
1014 |
fi |
1015 |
fi |
1016 |
|
1017 |
########################################################################### |
1018 |
|
1019 |
# Check for the GCC __builtin_apply() and __builtin_return() bugs: |
1020 |
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8028 |
1021 |
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11151 |
1022 |
|
1023 |
MODE="check_gcc_builtin " |
1024 |
|
1025 |
# Check whether this is actually GCC--if it doesn't understand |
1026 |
# __builtin_apply, then probably not. |
1027 |
cat >$CONFTMP/test.c <<EOT |
1028 |
int foo(int n) |
1029 |
{ |
1030 |
return n; |
1031 |
} |
1032 |
|
1033 |
int bar(int n) |
1034 |
{ |
1035 |
return n*n+1; |
1036 |
} |
1037 |
|
1038 |
int quux(int n) |
1039 |
{ |
1040 |
foo(0); |
1041 |
__builtin_return(__builtin_apply((void *)bar, __builtin_apply_args(), 64)); |
1042 |
} |
1043 |
|
1044 |
int main(int argc, char **argv) |
1045 |
{ |
1046 |
return quux(2)==5 && quux(3)==10 ? 0 : 1; |
1047 |
} |
1048 |
EOT |
1049 |
# As with the SSP check, avoid Bugzilla bug 20076 with -fno-inline-functions |
1050 |
if run $CC $CC_FLAGS -fno-inline-functions $CONFTMP/test.c -o $CONFTMP/test ; then |
1051 |
log "checking for __builtin_apply()/__builtin_return() bugs" |
1052 |
# This is GCC--see if it runs correctly. |
1053 |
if run $CONFTMP/test ; then |
1054 |
log "bugs not detected" |
1055 |
else |
1056 |
case `uname -m` in |
1057 |
i?86|sparc|powerpc|"Power Macintosh") |
1058 |
log "bugs detected, applying workaround" |
1059 |
NEED_GCC3_HACK=1 |
1060 |
;; |
1061 |
*) |
1062 |
cat <<EOT |
1063 |
|
1064 |
*** WHOA THERE! *** |
1065 |
|
1066 |
Your C compiler has a bug which causes Services to be compiled incorrectly, |
1067 |
and no workaround is available for your hardware. Please try upgrading |
1068 |
your compiler to the most recent version available (if you are using GCC, |
1069 |
check http://gcc.gnu.org/ for the latest version). See FAQ B.1.5 for |
1070 |
details. |
1071 |
|
1072 |
Configuration aborted. |
1073 |
|
1074 |
EOT |
1075 |
exit 1 |
1076 |
;; |
1077 |
esac |
1078 |
fi # if bug detected |
1079 |
fi # if GCC |
1080 |
|
1081 |
########################################################################### |
1082 |
|
1083 |
# Set linker flags. |
1084 |
|
1085 |
MODE="find_lflags " |
1086 |
if [ "$USER_CC_LFLAGS" != "bonkle" ] ; then |
1087 |
CC_LFLAGS=$USER_CC_LFLAGS |
1088 |
log user supplied \`"$CC_LFLAGS'" |
1089 |
elif [ "$CC_LFLAGS" != "bonkle" ] ; then |
1090 |
log cache supplied \`"$CC_LFLAGS'" |
1091 |
else |
1092 |
log using none |
1093 |
CC_LFLAGS="" |
1094 |
fi |
1095 |
|
1096 |
########################################################################### |
1097 |
|
1098 |
# Find executable suffix. |
1099 |
|
1100 |
MODE="find_exe_suffix " |
1101 |
if [ "$OPT_OS2" ] ; then |
1102 |
log "-os2 option given, using \`.exe'" |
1103 |
EXE_SUFFIX=.exe |
1104 |
else |
1105 |
rm -f $CONFTMP/test $CONFTMP/test.exe |
1106 |
echo >$CONFTMP/test.c "int main(){return 1;}" |
1107 |
if run $CC $CC_FLAGS $CC_LFLAGS $CONFTMP/test.c -o $CONFTMP/test ; then |
1108 |
if [ -f $CONFTMP/test.exe ] ; then |
1109 |
log using .exe |
1110 |
EXE_SUFFIX=.exe |
1111 |
elif [ -f $CONFTMP/test ] ; then |
1112 |
log using nothing |
1113 |
EXE_SUFFIX="" |
1114 |
else |
1115 |
log "can't find executable, assuming nothing" |
1116 |
EXE_SUFFIX= |
1117 |
fi |
1118 |
else |
1119 |
log "can't link test program, assuming nothing" |
1120 |
EXE_SUFFIX= |
1121 |
fi |
1122 |
fi |
1123 |
|
1124 |
########################################################################### |
1125 |
|
1126 |
# See what libraries we have that we might need. |
1127 |
|
1128 |
MODE="find_libs " |
1129 |
echo2 "Let's see what libraries we need..." |
1130 |
if [ "$CC_LIBS" != bonkle ] ; then |
1131 |
if [ "$CC_LIBS" ] ; then |
1132 |
echo " (cached) $CC_LIBS" |
1133 |
else |
1134 |
echo " (cached) none" |
1135 |
fi |
1136 |
log cache supplied \`"$CC_LIBS'" |
1137 |
else |
1138 |
CC_LIBS= |
1139 |
HAVE_RESOLV=0 |
1140 |
cat >$CONFTMP/test.c <<EOT |
1141 |
int main(int argc, char **argv) { |
1142 |
extern void foo(int bar); |
1143 |
} |
1144 |
EOT |
1145 |
cat >$CONFTMP/test-pow.c <<EOT |
1146 |
int main(int argc, char **argv) { |
1147 |
extern double pow(double, double); |
1148 |
return pow(argc,argc); |
1149 |
} |
1150 |
EOT |
1151 |
cat >$CONFTMP/test-socket.c <<EOT |
1152 |
int main(int argc, char **argv) { |
1153 |
extern void socket(); |
1154 |
socket(); |
1155 |
} |
1156 |
EOT |
1157 |
cat >$CONFTMP/test-gethost.c <<EOT |
1158 |
int main(int argc, char **argv) { |
1159 |
extern void gethostbyname(); |
1160 |
gethostbyname(); |
1161 |
} |
1162 |
EOT |
1163 |
cat >$CONFTMP/test-hstrerror.c <<EOT |
1164 |
int main(int argc, char **argv) { |
1165 |
extern void hstrerror(); |
1166 |
hstrerror(); |
1167 |
} |
1168 |
EOT |
1169 |
cat >$CONFTMP/test-crypt.c <<EOT |
1170 |
int main(int argc, char **argv) { |
1171 |
extern void crypt(); |
1172 |
crypt(); |
1173 |
} |
1174 |
EOT |
1175 |
if run $CC $CC_FLAGS $CONFTMP/test-pow.c $CC_LIBS -o $CONFTMP/test ; then |
1176 |
: |
1177 |
elif run $CC $CC_FLAGS $CONFTMP/test-pow.c $CC_LIBS -lm -o $CONFTMP/test ; then |
1178 |
CC_LIBS="$CC_LIBS -lm" |
1179 |
echo2 " -lm" |
1180 |
fi |
1181 |
if run $CC $CC_FLAGS $CONFTMP/test-socket.c $CC_LIBS -o $CONFTMP/test ; then |
1182 |
: |
1183 |
elif run $CC $CC_FLAGS $CONFTMP/test-socket.c $CC_LIBS -lsocket -o $CONFTMP/test ; then |
1184 |
CC_LIBS="$CC_LIBS -lsocket" |
1185 |
echo2 " -lsocket" |
1186 |
fi |
1187 |
if run $CC $CC_FLAGS $CONFTMP/test-gethost.c $CC_LIBS -o $CONFTMP/test ; then |
1188 |
: |
1189 |
elif run $CC $CC_FLAGS $CONFTMP/test-gethost.c $CC_LIBS -lresolv -o $CONFTMP/test ; then |
1190 |
CC_LIBS="$CC_LIBS -lresolv" |
1191 |
HAVE_RESOLV=1 |
1192 |
echo2 " -lresolv" |
1193 |
elif run $CC $CC_FLAGS $CONFTMP/test-gethost.c $CC_LIBS -lnsl -o $CONFTMP/test ; then |
1194 |
CC_LIBS="$CC_LIBS -lnsl" |
1195 |
echo2 " -lnsl" |
1196 |
elif run $CC $CC_FLAGS $CONFTMP/test-gethost.c $CC_LIBS -lnsl -lresolv -o $CONFTMP/test ; then |
1197 |
CC_LIBS="$CC_LIBS -lnsl -lresolv" |
1198 |
HAVE_RESOLV=1 |
1199 |
echo2 " -lnsl -lresolv" |
1200 |
fi |
1201 |
if [ $HAVE_RESOLV = 0 ] ; then |
1202 |
if run $CC $CC_FLAGS $CONFTMP/test-hstrerror.c $CC_LIBS -o $CONFTMP/test ; then |
1203 |
: |
1204 |
elif run $CC $CC_FLAGS $CONFTMP/test-hstrerror.c $CC_LIBS -lresolv -o $CONFTMP/test ; then |
1205 |
CC_LIBS="$CC_LIBS -lresolv" |
1206 |
HAVE_RESOLV=1 |
1207 |
echo2 " -lresolv" |
1208 |
fi |
1209 |
fi |
1210 |
if run $CC $CC_FLAGS $CONFTMP/test-crypt.c $CC_LIBS -o $CONFTMP/test ; then |
1211 |
: |
1212 |
elif run $CC $CC_FLAGS $CONFTMP/test-crypt.c $CC_LIBS -lcrypt -o $CONFTMP/test ; then |
1213 |
CC_LIBS="$CC_LIBS -lcrypt" |
1214 |
echo2 " -lcrypt" |
1215 |
fi |
1216 |
echo "" |
1217 |
CC_LIBS="`echo $CC_LIBS | sed 's/^ *//'`" |
1218 |
fi |
1219 |
if [ "$USER_CC_LIBS" ] ; then |
1220 |
CC_LIBS="$CC_LIBS $USER_CC_LIBS" |
1221 |
echo "Additional user-supplied libraries: $USER_CC_LIBS" |
1222 |
log user added \`"$USER_CC_LIBS'" |
1223 |
fi |
1224 |
|
1225 |
########################################################################### |
1226 |
|
1227 |
MODE="check_shared " |
1228 |
if [ "$USE_STATIC_MODULES" ] ; then |
1229 |
echo "Modules will be compiled statically (-use-static-modules option)." |
1230 |
STATIC_MODULES=1 |
1231 |
CC_SHARED= |
1232 |
CC_DYN_LFLAGS= |
1233 |
CC_DYN_LIBS= |
1234 |
log "static modules selected (-use-static-modules)" |
1235 |
else |
1236 |
echo2 "Checking whether we can use dynamic modules... " |
1237 |
if [ "$STATIC_MODULES" = 0 ] ; then |
1238 |
echo "(cached) yes." |
1239 |
log "dynamic modules selected (cache)" |
1240 |
elif [ "$STATIC_MODULES" = 1 ] ; then |
1241 |
echo "(cached) no." |
1242 |
log "static modules selected (cache)" |
1243 |
else |
1244 |
OK= |
1245 |
dlfcn_ok=0 |
1246 |
if test_include dlfcn.h ; then |
1247 |
dlfcn_ok=1 |
1248 |
else |
1249 |
log "dlfcn.h not found, skipping dlfcn test" |
1250 |
fi |
1251 |
if [ $dlfcn_ok = 1 ] ; then |
1252 |
log "testing dlfcn method" |
1253 |
OK=ok |
1254 |
cat >$CONFTMP/test-dlopen.c <<EOT |
1255 |
#include <dlfcn.h> |
1256 |
int main(int argc, char **argv) { |
1257 |
void *lib1 = dlopen("$CONFTMP/test-lib.so", |
1258 |
RTLD_NOW | RTLD_GLOBAL); |
1259 |
void *lib2 = dlopen("$CONFTMP/test-lib2.so", |
1260 |
RTLD_NOW | RTLD_GLOBAL); |
1261 |
printf("%d %d %d\n", lib1 ? 1 : 0, |
1262 |
lib2 ? (dlsym(lib2,"foo") ? 1 : 2) : 0, |
1263 |
lib2 ? (dlsym(0,"foo") ? 1 : 2) : 0); |
1264 |
if (lib1) |
1265 |
dlclose(lib1); |
1266 |
if (lib2) |
1267 |
dlclose(lib2); |
1268 |
return 0; |
1269 |
} |
1270 |
EOT |
1271 |
cat >$CONFTMP/test-lib.c <<EOT |
1272 |
int foo() {no_such_symbol();} |
1273 |
EOT |
1274 |
cat >$CONFTMP/test-lib2.c <<EOT |
1275 |
int foo() {return 1;} |
1276 |
EOT |
1277 |
if run $CC $CC_FLAGS $CC_LIBS $CONFTMP/test-dlopen.c -o $CONFTMP/test ; then |
1278 |
CC_DYN_LIBS="" |
1279 |
log "dlopen() found (no libs)" |
1280 |
elif run $CC $CC_FLAGS $CC_LIBS $CONFTMP/test-dlopen.c -ldl -o $CONFTMP/test |
1281 |
then |
1282 |
CC_DYN_LIBS=" -ldl" |
1283 |
log "dlopen() found (libdl)" |
1284 |
else |
1285 |
log "dlopen() not found" |
1286 |
OK= |
1287 |
fi |
1288 |
if [ "$OK" ] ; then |
1289 |
if run $CC -rdynamic $CC_FLAGS $CC_LIBS $CC_DYN_LIBS $CONFTMP/test-dlopen.c -o $CONFTMP/test ; then |
1290 |
log "-rdynamic works" |
1291 |
CC_DYN_LFLAGS=" -rdynamic" |
1292 |
else |
1293 |
log "no -rdynamic, aborting dlfcn test" |
1294 |
OK= |
1295 |
fi |
1296 |
fi |
1297 |
if [ "$OK" ] ; then |
1298 |
if [ "x`uname -s`" = "xOSF1" ] ; then |
1299 |
CC_SHARED="$CC -shared -Wl,-expect_unresolved" |
1300 |
else |
1301 |
CC_SHARED="$CC -shared" |
1302 |
fi |
1303 |
if run $CC_SHARED $CC_FLAGS $CC_LIBS $CONFTMP/test-lib.c -o $CONFTMP/test-lib.so && run $CC_SHARED $CC_FLAGS $CC_LIBS $CONFTMP/test-lib2.c -o $CONFTMP/test-lib2.so ; then |
1304 |
log "-shared works" |
1305 |
else |
1306 |
log "no -shared, aborting dlfcn test" |
1307 |
CC_SHARED= |
1308 |
OK= |
1309 |
fi |
1310 |
fi |
1311 |
if [ "$OK" ] ; then |
1312 |
if run $CONFTMP/test ; then |
1313 |
a=`$CONFTMP/test 2>/dev/null` |
1314 |
log "symbol resolution test: $CONFTMP/test => $a" |
1315 |
if [ "x$a" = "x0 1 1" ] ; then |
1316 |
log "symbol resolution test succeeded" |
1317 |
else |
1318 |
log "symbol resolution test failed" |
1319 |
OK= |
1320 |
fi |
1321 |
else |
1322 |
log "couldn't run symbol resolution test program" |
1323 |
OK= |
1324 |
fi |
1325 |
fi |
1326 |
if [ "$OK" ] ; then |
1327 |
cat >$CONFTMP/test-dynamic2.c <<EOT |
1328 |
#include <stdio.h> |
1329 |
int main(int argc, char **argv) { |
1330 |
printf("%d\n", foo(atoi(argv[1]))); |
1331 |
} |
1332 |
int quux(int xyzzy) { |
1333 |
return xyzzy+1; |
1334 |
} |
1335 |
EOT |
1336 |
cat >$CONFTMP/test-dynamic.c <<EOT |
1337 |
int foo(int bar) { |
1338 |
return quux(bar)*2; |
1339 |
} |
1340 |
EOT |
1341 |
if run $CC_SHARED $CC_FLAGS $CC_LIBS $CONFTMP/test-dynamic.c -o $CONFTMP/test.so \ |
1342 |
&& run $CC $CC_FLAGS $CC_DYN_LFLAGS $CC_LIBS $CC_DYN_LIBS $CONFTMP/test-dynamic2.c $CONFTMP/test.so -o $CONFTMP/test |
1343 |
then |
1344 |
a=`$CONFTMP/test 1` |
1345 |
log "symbol resolution test: $CONFTMP/test 1 => $a" |
1346 |
if [ "x$a" = "x4" ] ; then |
1347 |
log "symbol resolution test: succeeded => using dynamic modules (dlfcn)" |
1348 |
else |
1349 |
log "symbol resolution test: bad output (expected 4)" |
1350 |
OK= |
1351 |
fi |
1352 |
else |
1353 |
log "symbol resolution test: dynamic compile failed" |
1354 |
OK= |
1355 |
fi |
1356 |
fi |
1357 |
fi # dlfcn test |
1358 |
if [ "$OK" ] ; then |
1359 |
log "checking for underscores in symbols" |
1360 |
cat >$CONFTMP/test-dynamic2.c <<EOT |
1361 |
#include <stdio.h> |
1362 |
#include <dlfcn.h> |
1363 |
int main(int argc, char **argv) { |
1364 |
void *handle = dlopen(NULL, 0); |
1365 |
printf("%d%d\n", dlsym(handle,"foo")!=NULL ? 1 : 0, |
1366 |
dlsym(handle,"_foo")!=NULL ? 1 : 0); |
1367 |
return 0; |
1368 |
} |
1369 |
int quux(int x) {return x;} |
1370 |
EOT |
1371 |
if run $CC $CC_FLAGS $CC_DYN_LFLAGS $CC_LIBS $CC_DYN_LIBS $CONFTMP/test-dynamic2.c $CONFTMP/test.so -o $CONFTMP/test |
1372 |
then |
1373 |
a=`$CONFTMP/test` |
1374 |
log "underscore test: $CONFTMP/test => $a" |
1375 |
with_underscore=`echo "$a" | cut -c2` |
1376 |
without_underscore=`echo "$a" | cut -c1` |
1377 |
if [ "x$with_underscore" = "x1" ] ; then |
1378 |
log "underscore test: succeeded with preceding underscore" |
1379 |
SYMS_NEED_UNDERSCORES=1 |
1380 |
elif [ "x$without_underscore" = "x1" ] ; then |
1381 |
log "underscore test: succeeded with no preceding underscore" |
1382 |
SYMS_NEED_UNDERSCORES=0 |
1383 |
else |
1384 |
log "underscore test: failed?! (bizarre output)" |
1385 |
OK= |
1386 |
fi |
1387 |
else |
1388 |
log "underscore test: dynamic compile failed" |
1389 |
OK= |
1390 |
fi |
1391 |
fi # underscore test |
1392 |
if [ "$OK" ] ; then |
1393 |
echo "yes." |
1394 |
STATIC_MODULES=0 |
1395 |
else |
1396 |
log "static modules selected" |
1397 |
echo "no." |
1398 |
STATIC_MODULES=1 |
1399 |
CC_SHARED= |
1400 |
CC_DYN_LFLAGS= |
1401 |
CC_DYN_LIBS= |
1402 |
SYMS_NEED_UNDERSCORES= |
1403 |
fi |
1404 |
fi |
1405 |
fi |
1406 |
|
1407 |
# Also check for ranlib, and use it if found. |
1408 |
MODE="check_ranlib " |
1409 |
echo2 "Checking whether ranlib exists... " |
1410 |
if [ "$RANLIB" ] ; then |
1411 |
if [ "x$RANLIB" = xranlib ] ; then |
1412 |
log "cache says yes" |
1413 |
echo "(cached) yes." |
1414 |
else |
1415 |
log "cache says no" |
1416 |
echo "(cached) no." |
1417 |
fi |
1418 |
else |
1419 |
if run echo test >$CONFTMP/testfile ; then : ; else |
1420 |
log "couldn't create temp file!" |
1421 |
echo "" |
1422 |
echo "" |
1423 |
echo "*** WHOA THERE! ***" |
1424 |
echo "" |
1425 |
echo "Unable to create a temporary file!" |
1426 |
echo "Are you out of disk space?" |
1427 |
exit 4 |
1428 |
fi |
1429 |
if run ar -rc $CONFTMP/test.a $CONFTMP/testfile ; then |
1430 |
if run ranlib $CONFTMP/test.a ; then |
1431 |
log "ranlib found" |
1432 |
RANLIB=ranlib |
1433 |
echo "yes." |
1434 |
else |
1435 |
log "ranlib not found" |
1436 |
RANLIB='echo >/dev/null' |
1437 |
echo "no." |
1438 |
fi |
1439 |
else # no ar |
1440 |
log "couldn't run ar!" |
1441 |
if [ $STATIC_MODULES = 1 ] ; then |
1442 |
echo "" |
1443 |
cat <<EOT |
1444 |
|
1445 |
*** WHOA THERE! *** |
1446 |
|
1447 |
The \`ar' program could not be executed. This program is needed to |
1448 |
compile Services, and is installed on most systems by default; make |
1449 |
certain it is in your executable search path (for example, Solaris users |
1450 |
may need to add /usr/ccs/bin to the search path) and re-run this script. |
1451 |
|
1452 |
Configuration aborted. |
1453 |
|
1454 |
EOT |
1455 |
exit 4 |
1456 |
else |
1457 |
log "ar not found, assuming no ranlib" |
1458 |
RANLIB='echo >/dev/null' |
1459 |
echo "no." |
1460 |
cat <<EOT |
1461 |
|
1462 |
NOTICE: The \`ar' command was not found on your system. This is not an |
1463 |
immediate problem, but it will prevent you from compiling |
1464 |
Services using static modules. Please check and make certain |
1465 |
your executable search path is correct. |
1466 |
|
1467 |
EOT |
1468 |
fi |
1469 |
fi |
1470 |
fi |
1471 |
|
1472 |
########################################################################### |
1473 |
|
1474 |
# Look for include files that might or might not be here. |
1475 |
echo "Checking for presence of include files (it's okay if some aren't there):" |
1476 |
|
1477 |
MODE="check_stdint " |
1478 |
echo2 " stdint.h... " |
1479 |
if [ "$HAVE_STDINT_H" ] ; then |
1480 |
if [ "$HAVE_STDINT_H" = 1 ] ; then |
1481 |
echo "(cached) present" |
1482 |
log "cache says present" |
1483 |
else |
1484 |
echo "(cached) not present" |
1485 |
log "cache says not present" |
1486 |
fi |
1487 |
else |
1488 |
if test_include stdint.h ; then |
1489 |
echo "present" |
1490 |
else |
1491 |
echo "not present" |
1492 |
fi |
1493 |
fi |
1494 |
|
1495 |
MODE="check_strings " |
1496 |
echo2 " strings.h... " |
1497 |
if [ "$HAVE_STRINGS_H" ] ; then |
1498 |
if [ "$HAVE_STRINGS_H" = 1 ] ; then |
1499 |
echo "(cached) present" |
1500 |
log "cache says present" |
1501 |
else |
1502 |
echo "(cached) not present" |
1503 |
log "cache says not present" |
1504 |
fi |
1505 |
else |
1506 |
if test_include strings.h ; then |
1507 |
echo "present" |
1508 |
else |
1509 |
echo "not present" |
1510 |
fi |
1511 |
fi |
1512 |
|
1513 |
MODE="check_sysselect " |
1514 |
echo2 " sys/select.h... " |
1515 |
if [ "$HAVE_SYS_SELECT_H" ] ; then |
1516 |
if [ "$HAVE_SYS_SELECT_H" = 1 ] ; then |
1517 |
echo "(cached) present" |
1518 |
log "cache says present" |
1519 |
else |
1520 |
echo "(cached) not present" |
1521 |
log "cache says not present" |
1522 |
fi |
1523 |
else |
1524 |
if test_include sys/select.h ; then |
1525 |
echo "present" |
1526 |
else |
1527 |
echo "not present" |
1528 |
fi |
1529 |
fi |
1530 |
|
1531 |
MODE="check_sysproto " |
1532 |
echo2 " sys/sysproto.h... " |
1533 |
if [ "$HAVE_SYS_SYSPROTO_H" ] ; then |
1534 |
if [ "$HAVE_SYS_SYSPROTO_H" = 1 ] ; then |
1535 |
echo "(cached) present" |
1536 |
log "cache says present" |
1537 |
else |
1538 |
echo "(cached) not present" |
1539 |
log "cache says not present" |
1540 |
fi |
1541 |
else |
1542 |
if test_include sys/sysproto.h ; then |
1543 |
echo "present" |
1544 |
else |
1545 |
echo "not present" |
1546 |
fi |
1547 |
fi |
1548 |
|
1549 |
########################################################################### |
1550 |
|
1551 |
# See what sizes various types are. |
1552 |
|
1553 |
MODE="check_int8 " |
1554 |
echo2 "Looking for an 8-bit integer type... " |
1555 |
if [ "$TYPE_INT8" ] ; then |
1556 |
echo "(cached) $TYPE_INT8" |
1557 |
log "cache supplied $TYPE_INT8" |
1558 |
else |
1559 |
if [ "$HAVE_STDINT_H" = 1 ] ; then |
1560 |
cat >$CONFTMP/test.c <<EOT |
1561 |
#include <stdint.h> |
1562 |
#include <stdio.h> |
1563 |
int main() { |
1564 |
char a; |
1565 |
int8_t b; |
1566 |
printf("%d,%d", sizeof(a), sizeof(b)); |
1567 |
return 0; |
1568 |
} |
1569 |
EOT |
1570 |
else |
1571 |
cat >$CONFTMP/test.c <<EOT |
1572 |
#include <stdio.h> |
1573 |
int main() { |
1574 |
char a; |
1575 |
printf("%d,0", sizeof(a)); |
1576 |
return 0; |
1577 |
} |
1578 |
EOT |
1579 |
fi |
1580 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1581 |
a="`$CONFTMP/test`" |
1582 |
log "test program output (sizeof(char),sizeof(int8_t)): $a" |
1583 |
b=`echo "$a" | cut -d, -f1` |
1584 |
c=`echo "$a" | cut -d, -f2` |
1585 |
if [ ! "$a" ] ; then |
1586 |
echo "test program failed! Assuming char." |
1587 |
log "assuming char" |
1588 |
TYPE_INT8=char |
1589 |
elif [ "$c" = 1 ] ; then |
1590 |
echo int8_t |
1591 |
log "int8_t is 8 bits" |
1592 |
TYPE_INT8=int8_t |
1593 |
elif [ "$b" = 1 ] ; then |
1594 |
echo char |
1595 |
log "char is 8 bits" |
1596 |
TYPE_INT8=char |
1597 |
else |
1598 |
cat >$CONFTMP/test.c <<EOT |
1599 |
#include <stdio.h> |
1600 |
int main() { |
1601 |
byte a; |
1602 |
printf("%d", sizeof(a)); |
1603 |
return 0; |
1604 |
} |
1605 |
EOT |
1606 |
if run $CC $CC_FLAGS $CONFTMP/tset.c $CC_LIBS -o $CONFTMP/test ; then |
1607 |
a="`$CONFTMP/test`" |
1608 |
log "test program 2 output (sizeof(byte)): $a" |
1609 |
if [ "$a" = 1 ] ; then |
1610 |
echo byte |
1611 |
log "byte is 8 bits" |
1612 |
TYPE_INT8=byte |
1613 |
fi |
1614 |
else |
1615 |
log "couldn't compile test program 2, assuming no byte type" |
1616 |
fi |
1617 |
if [ ! "$TYPE_INT8" ] ; then |
1618 |
echo "none found?!" |
1619 |
cat <<EOF |
1620 |
Services requires an 8-bit integer type. Please check your system |
1621 |
configuration. |
1622 |
|
1623 |
Configuration aborted. |
1624 |
|
1625 |
EOF |
1626 |
exit 1 |
1627 |
fi |
1628 |
fi |
1629 |
else |
1630 |
whoa_there |
1631 |
fi |
1632 |
fi |
1633 |
|
1634 |
MODE="check_int16 " |
1635 |
echo2 "Looking for a 16-bit integer type... " |
1636 |
if [ "$TYPE_INT16" ] ; then |
1637 |
echo "(cached) $TYPE_INT16" |
1638 |
log "cache supplied $TYPE_INT16" |
1639 |
else |
1640 |
if [ "$HAVE_STDINT_H" = 1 ] ; then |
1641 |
cat >$CONFTMP/test.c <<EOT |
1642 |
#include <stdint.h> |
1643 |
#include <stdio.h> |
1644 |
int main() { |
1645 |
int a; |
1646 |
short b; |
1647 |
int16_t c; |
1648 |
printf("%d,%d,%d", sizeof(a), sizeof(b), sizeof(c)); |
1649 |
return 0; |
1650 |
} |
1651 |
EOT |
1652 |
else |
1653 |
cat >$CONFTMP/test.c <<EOT |
1654 |
#include <stdio.h> |
1655 |
int main() { |
1656 |
int a; |
1657 |
short b; |
1658 |
printf("%d,%d,0", sizeof(a), sizeof(b)); |
1659 |
return 0; |
1660 |
} |
1661 |
EOT |
1662 |
fi |
1663 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1664 |
a="`$CONFTMP/test`" |
1665 |
log "test program output (sizeof(int),sizeof(short),sizeof(int16_t)): $a" |
1666 |
if [ ! "$a" ] ; then |
1667 |
echo "test program failed! Assuming short." |
1668 |
log "assuming short" |
1669 |
TYPE_INT16=short |
1670 |
else |
1671 |
size_int=`echo $a | cut -d, -f1` |
1672 |
size_short=`echo $a | cut -d, -f2` |
1673 |
size_int16_t=`echo $a | cut -d, -f3` |
1674 |
if [ "$size_int16_t" = 2 ] ; then |
1675 |
echo int16_t |
1676 |
log "int16_t is 16 bits" |
1677 |
TYPE_INT16=int16_t |
1678 |
elif [ $size_int = 2 ] ; then |
1679 |
echo int |
1680 |
log "int is 16 bits" |
1681 |
TYPE_INT16=int |
1682 |
elif [ $size_short = 2 ] ; then |
1683 |
echo short |
1684 |
log "short is 16 bits" |
1685 |
TYPE_INT16=short |
1686 |
else |
1687 |
echo "none found?!" |
1688 |
cat <<EOF |
1689 |
Services requires a 16-bit integer type. Please check your system |
1690 |
configuration. |
1691 |
|
1692 |
Configuration aborted. |
1693 |
|
1694 |
EOF |
1695 |
exit 1 |
1696 |
fi |
1697 |
fi |
1698 |
else |
1699 |
whoa_there |
1700 |
fi |
1701 |
fi |
1702 |
|
1703 |
MODE="check_int32 " |
1704 |
echo2 "Looking for a 32-bit integer type... " |
1705 |
if [ "$TYPE_INT32" ] ; then |
1706 |
echo "(cached) $TYPE_INT32" |
1707 |
log "cache supplied $TYPE_INT32" |
1708 |
else |
1709 |
if [ "$HAVE_STDINT_H" = 1 ] ; then |
1710 |
cat >$CONFTMP/test.c <<EOT |
1711 |
#include <stdint.h> |
1712 |
#include <stdio.h> |
1713 |
int main() { |
1714 |
int a; |
1715 |
long b; |
1716 |
int32_t c; |
1717 |
printf("%d,%d,%d", sizeof(a), sizeof(b), sizeof(c)); |
1718 |
return 0; |
1719 |
} |
1720 |
EOT |
1721 |
else |
1722 |
cat >$CONFTMP/test.c <<EOT |
1723 |
#include <stdio.h> |
1724 |
int main() { |
1725 |
int a; |
1726 |
long b; |
1727 |
printf("%d,%d,0", sizeof(a), sizeof(b)); |
1728 |
return 0; |
1729 |
} |
1730 |
EOT |
1731 |
fi |
1732 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1733 |
a="`$CONFTMP/test`" |
1734 |
log "test program output (sizeof(int),sizeof(long),sizeof(int32_t)): $a" |
1735 |
if [ ! "$a" ] ; then |
1736 |
echo "test program failed! Assuming long." |
1737 |
log "assuming long" |
1738 |
TYPE_INT32=long |
1739 |
else |
1740 |
size_int=`echo $a | cut -d, -f1` |
1741 |
size_long=`echo $a | cut -d, -f2` |
1742 |
size_int32_t=`echo $a | cut -d, -f3` |
1743 |
if [ "$size_int32_t" = 4 ] ; then |
1744 |
echo int32_t |
1745 |
log "int32_t is 32 bits" |
1746 |
TYPE_INT32=int32_t |
1747 |
elif [ $size_int = 4 ] ; then |
1748 |
echo int |
1749 |
log "int is 32 bits" |
1750 |
TYPE_INT32=int |
1751 |
elif [ $size_long = 4 ] ; then |
1752 |
echo long |
1753 |
log "long is 32 bits" |
1754 |
TYPE_INT32=long |
1755 |
else |
1756 |
echo "none found?!" |
1757 |
cat <<EOF |
1758 |
Services requires a 32-bit integer type. Please check your system |
1759 |
configuration. |
1760 |
|
1761 |
Configuration aborted. |
1762 |
|
1763 |
EOF |
1764 |
exit 1 |
1765 |
fi |
1766 |
fi |
1767 |
else |
1768 |
whoa_there |
1769 |
fi |
1770 |
fi |
1771 |
|
1772 |
MODE="check_int64 " |
1773 |
echo2 "Looking for a 64-bit integer type... " |
1774 |
if [ "$TYPE_INT64" ] ; then |
1775 |
echo "(cached) $TYPE_INT64" |
1776 |
log "cache supplied $TYPE_INT64" |
1777 |
else |
1778 |
ran=0 |
1779 |
if [ "$HAVE_STDINT_H" = 1 ] ; then |
1780 |
cat >$CONFTMP/test.c <<EOT |
1781 |
#include <stdint.h> |
1782 |
#include <stdio.h> |
1783 |
int main() { |
1784 |
long a; |
1785 |
long long b; |
1786 |
int64_t c; |
1787 |
printf("%d,%d,%d", sizeof(a), sizeof(b), sizeof(c)); |
1788 |
return 0; |
1789 |
} |
1790 |
EOT |
1791 |
else |
1792 |
cat >$CONFTMP/test.c <<EOT |
1793 |
#include <stdio.h> |
1794 |
int main() { |
1795 |
long a; |
1796 |
long long b; |
1797 |
printf("%d,%d,0", sizeof(a), sizeof(b)); |
1798 |
return 0; |
1799 |
} |
1800 |
EOT |
1801 |
fi |
1802 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1803 |
ran=1 |
1804 |
else |
1805 |
if [ "$HAVE_STDINT_H" = 1 ] ; then |
1806 |
cat >$CONFTMP/test.c <<EOT |
1807 |
#include <stdint.h> |
1808 |
#include <stdio.h> |
1809 |
int main() { |
1810 |
long a; |
1811 |
int64_t c; |
1812 |
printf("%d,0,%d", sizeof(a), sizeof(c)); |
1813 |
return 0; |
1814 |
} |
1815 |
EOT |
1816 |
else |
1817 |
cat >$CONFTMP/test.c <<EOT |
1818 |
#include <stdio.h> |
1819 |
int main() { |
1820 |
long a; |
1821 |
printf("%d,0,0", sizeof(a)); |
1822 |
return 0; |
1823 |
} |
1824 |
EOT |
1825 |
fi |
1826 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1827 |
ran=1 |
1828 |
fi |
1829 |
fi |
1830 |
if test $ran = 1 ; then |
1831 |
a="`$CONFTMP/test`" |
1832 |
log "test program output (sizeof(long),sizeof(long long),sizeof(int64_t)): $a" |
1833 |
if [ ! "$a" ] ; then |
1834 |
echo "test program failed! Assuming long long." |
1835 |
log "assuming long long" |
1836 |
TYPE_INT64="long long" |
1837 |
else |
1838 |
size_long=`echo $a | cut -d, -f1` |
1839 |
size_long_long=`echo $a | cut -d, -f2` |
1840 |
size_int64_t=`echo $a | cut -d, -f3` |
1841 |
if [ "$size_int64_t" = 8 ] ; then |
1842 |
echo int64_t |
1843 |
log "int64_t is 64 bits" |
1844 |
TYPE_INT64=int64_t |
1845 |
elif [ $size_long = 8 ] ; then |
1846 |
echo long |
1847 |
log "long is 64 bits" |
1848 |
TYPE_INT64=long |
1849 |
elif [ $size_long_long = 8 ] ; then |
1850 |
echo "long long" |
1851 |
log "long long is 64 bits" |
1852 |
TYPE_INT64="long long" |
1853 |
else |
1854 |
echo "none found?!" |
1855 |
cat <<EOF |
1856 |
Services requires a 64-bit integer type. Please check your system |
1857 |
configuration. |
1858 |
|
1859 |
Configuration aborted. |
1860 |
|
1861 |
EOF |
1862 |
exit 1 |
1863 |
fi |
1864 |
fi |
1865 |
else |
1866 |
whoa_there |
1867 |
fi |
1868 |
fi |
1869 |
|
1870 |
MODE="check_int_size " |
1871 |
echo2 "Checking the size of int... " |
1872 |
if [ "$SIZEOF_INT" ] ; then |
1873 |
echo "(cached) `expr $SIZEOF_INT \* 8` bits" |
1874 |
log "cache supplied `expr $SIZEOF_INT \* 8` bits" |
1875 |
else |
1876 |
cat >$CONFTMP/test.c <<EOT |
1877 |
#include <stdio.h> |
1878 |
int main() { |
1879 |
int a = 0; |
1880 |
printf("%d", sizeof(a)); |
1881 |
return 0; |
1882 |
} |
1883 |
EOT |
1884 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1885 |
a="`$CONFTMP/test`" |
1886 |
log "test program output (sizeof(int)): $a" |
1887 |
if [ ! "$a" ] ; then |
1888 |
echo "test program failed! Assuming 16 bits." |
1889 |
log "assuming 16 bits" |
1890 |
SIZEOF_INT=2 |
1891 |
else |
1892 |
SIZEOF_INT="$a" |
1893 |
if [ $SIZEOF_INT -lt 2 ] ; then |
1894 |
echo "`expr $SIZEOF_INT \* 8` bits... huh?" |
1895 |
cat <<EOF |
1896 |
\`int' must be at least 16 bits. Please check your compiler |
1897 |
settings. |
1898 |
|
1899 |
Configuration aborted. |
1900 |
|
1901 |
EOF |
1902 |
exit 1 |
1903 |
else |
1904 |
echo `expr $SIZEOF_INT \* 8` bits |
1905 |
log "`expr $SIZEOF_INT \* 8` bits" |
1906 |
fi |
1907 |
fi |
1908 |
else |
1909 |
whoa_there |
1910 |
fi |
1911 |
fi |
1912 |
|
1913 |
MODE="check_long_size " |
1914 |
echo2 "Checking the size of long... " |
1915 |
if [ "$SIZEOF_LONG" ] ; then |
1916 |
echo "(cached) `expr $SIZEOF_LONG \* 8` bits" |
1917 |
log "cache supplied `expr $SIZEOF_LONG \* 8` bits" |
1918 |
else |
1919 |
cat >$CONFTMP/test.c <<EOT |
1920 |
#include <stdio.h> |
1921 |
int main() { |
1922 |
long a = 0; |
1923 |
printf("%d", sizeof(a)); |
1924 |
return 0; |
1925 |
} |
1926 |
EOT |
1927 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1928 |
a="`$CONFTMP/test`" |
1929 |
log "test program output (sizeof(long)): $a" |
1930 |
if [ ! "$a" ] ; then |
1931 |
echo "test program failed! Assuming 32 bits." |
1932 |
log "assuming 32 bits" |
1933 |
SIZEOF_LONG=4 |
1934 |
else |
1935 |
SIZEOF_LONG="$a" |
1936 |
if [ $SIZEOF_LONG -lt 4 ] ; then |
1937 |
echo "`expr $SIZEOF_LONG \* 8` bits... huh?" |
1938 |
cat <<EOF |
1939 |
\`long' must be at least 32 bits. Please check your compiler |
1940 |
settings. |
1941 |
|
1942 |
Configuration aborted. |
1943 |
|
1944 |
EOF |
1945 |
exit 1 |
1946 |
else |
1947 |
echo `expr $SIZEOF_LONG \* 8` bits |
1948 |
log "`expr $SIZEOF_LONG \* 8` bits" |
1949 |
fi |
1950 |
fi |
1951 |
else |
1952 |
whoa_there |
1953 |
fi |
1954 |
fi |
1955 |
|
1956 |
MODE="check_ptr_size " |
1957 |
echo2 "Checking the size of pointers... " |
1958 |
if [ "$SIZEOF_PTR" ] ; then |
1959 |
echo "(cached) `expr $SIZEOF_PTR \* 8` bits" |
1960 |
log "cache supplied `expr $SIZEOF_PTR \* 8` bits" |
1961 |
else |
1962 |
cat >$CONFTMP/test.c <<EOT |
1963 |
#include <stdio.h> |
1964 |
int main() { |
1965 |
void *a = 0; |
1966 |
printf("%d", sizeof(a)); |
1967 |
return 0; |
1968 |
} |
1969 |
EOT |
1970 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
1971 |
a="`$CONFTMP/test`" |
1972 |
log "test program output (sizeof(void *)): $a" |
1973 |
if [ ! "$a" ] ; then |
1974 |
echo "test program failed! Assuming 32 bits." |
1975 |
log "assuming 32 bits" |
1976 |
SIZEOF_PTR=4 |
1977 |
else |
1978 |
SIZEOF_PTR="$a" |
1979 |
if [ $SIZEOF_PTR -lt $SIZEOF_INT ] ; then |
1980 |
echo "`expr $SIZEOF_PTR \* 8` bits... oops!" |
1981 |
cat <<EOF |
1982 |
Your compiler has a pointer type smaller than its integer type! |
1983 |
This may cause problems compiling or running Services. Please check |
1984 |
your compiler settings. |
1985 |
|
1986 |
Configuration aborted. |
1987 |
|
1988 |
EOF |
1989 |
exit 1 |
1990 |
else |
1991 |
echo `expr $SIZEOF_PTR \* 8` bits |
1992 |
log "`expr $SIZEOF_PTR \* 8` bits" |
1993 |
fi |
1994 |
fi |
1995 |
else |
1996 |
whoa_there |
1997 |
fi |
1998 |
fi |
1999 |
|
2000 |
MODE="check_time_t " |
2001 |
echo2 "Checking the size of time_t... " |
2002 |
if [ "$SIZEOF_TIME_T" -a "$MAX_TIME_T" ] ; then |
2003 |
echo "(cached) `expr $SIZEOF_TIME_T \* 8` bits" |
2004 |
log "cache supplied `expr $SIZEOF_TIME_T \* 8` bits, max $MAX_TIME_T" |
2005 |
else |
2006 |
cat >$CONFTMP/test.c <<EOT |
2007 |
#include <stdio.h> |
2008 |
#include <time.h> |
2009 |
int main() { |
2010 |
time_t a = 0; |
2011 |
printf("%d ", sizeof(a)); |
2012 |
if (a-1 > 0) |
2013 |
printf("(~(time_t)0)"); |
2014 |
else |
2015 |
printf("(((time_t)1<<(sizeof(time_t)*8-2))+(((time_t)1<<(sizeof(time_t)*8-2))-1))"); |
2016 |
return 0; |
2017 |
} |
2018 |
EOT |
2019 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
2020 |
a="`$CONFTMP/test`" |
2021 |
log "test program output (sizeof(time_t) MAX_TIME_T): $a" |
2022 |
if [ ! "$a" ] ; then |
2023 |
echo "test program failed! Assuming 32 bits." |
2024 |
log "assuming 32 bits" |
2025 |
SIZEOF_TIME_T=4 |
2026 |
else |
2027 |
SIZEOF_TIME_T=`echo "$a" | cut -d\ -f1` |
2028 |
MAX_TIME_T=`echo "$a" | cut -d\ -f2` |
2029 |
if [ $SIZEOF_TIME_T = 4 ] ; then |
2030 |
echo 32 bits |
2031 |
log "32 bits" |
2032 |
elif [ $SIZEOF_TIME_T = 8 ] ; then |
2033 |
echo "64 bits (nifty!)" |
2034 |
log "64 bits" |
2035 |
elif [ $SIZEOF_TIME_T -gt 4 ] ; then |
2036 |
echo "`expr $SIZEOF_TIME_T \* 8` bits... huh?" |
2037 |
echo " If you experience any problems compiling or running Services, please" |
2038 |
echo " report this." |
2039 |
log "`expr $SIZEOF_TIME_T \* 8` bits" |
2040 |
else |
2041 |
echo "`expr $SIZEOF_TIME_T \* 8` bits... huh?" |
2042 |
cat <<EOT |
2043 |
Services requires a \`time_t' of at least 32 bits. Please check your |
2044 |
system configuration. |
2045 |
|
2046 |
Configuration aborted. |
2047 |
|
2048 |
EOT |
2049 |
log "`expr $SIZEOF_TIME_T \* 8` bits -- too small, aborting" |
2050 |
exit 1 |
2051 |
fi |
2052 |
fi |
2053 |
else |
2054 |
whoa_there |
2055 |
fi |
2056 |
fi |
2057 |
|
2058 |
MODE="check_gid_t " |
2059 |
echo2 "Checking the size of gid_t... " |
2060 |
if [ "$SIZEOF_GID_T" != bonkle ] ; then |
2061 |
if [ "$SIZEOF_GID_T" ] ; then |
2062 |
echo "(cached) `expr $SIZEOF_GID_T \* 8` bits" |
2063 |
log "cache supplied `expr $SIZEOF_GID_T \* 8` bits" |
2064 |
else |
2065 |
echo "(cached) no gid_t" |
2066 |
log "cache said no gid_t" |
2067 |
fi |
2068 |
else |
2069 |
cat >$CONFTMP/test.c <<EOT |
2070 |
#include <stdio.h> |
2071 |
#include <sys/types.h> |
2072 |
int main() { |
2073 |
gid_t a; |
2074 |
printf("%d", sizeof(a)); |
2075 |
return 0; |
2076 |
} |
2077 |
EOT |
2078 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
2079 |
a="`$CONFTMP/test`" |
2080 |
log "test program output (sizeof(gid_t)): $a" |
2081 |
if [ ! "$a" ] ; then |
2082 |
echo "test program failed! Assuming 16 bits." |
2083 |
log "assuming 16 bits" |
2084 |
SIZEOF_GID_T=2 |
2085 |
else |
2086 |
SIZEOF_GID_T=$a |
2087 |
if [ $SIZEOF_GID_T = 4 ] ; then |
2088 |
echo 32 bits |
2089 |
log "32 bits" |
2090 |
elif [ $SIZEOF_GID_T = 2 ] ; then |
2091 |
echo "16 bits" |
2092 |
log "16 bits" |
2093 |
else |
2094 |
echo "`expr $SIZEOF_GID_T \* 8` bits... huh?" |
2095 |
echo " If you experience any problems compiling or running Services, please" |
2096 |
echo " report this." |
2097 |
log "`expr $SIZEOF_GID_T \* 8` bits" |
2098 |
fi |
2099 |
fi |
2100 |
else |
2101 |
echo "no gid_t found." |
2102 |
log "couldn't compile test program, assuming no gid_t" |
2103 |
SIZEOF_GID_T= |
2104 |
HAVE_SETREGID=0 |
2105 |
fi |
2106 |
fi |
2107 |
|
2108 |
MODE="check_socklen_t " |
2109 |
echo2 "Checking for socklen_t... " |
2110 |
if [ "$HAVE_SOCKLEN_T" ] ; then |
2111 |
if [ $HAVE_SOCKLEN_T = 1 ] ; then |
2112 |
echo "(cached) present." |
2113 |
log "cache said present" |
2114 |
else |
2115 |
echo "(cached) not present." |
2116 |
log "cache said not present" |
2117 |
fi |
2118 |
else |
2119 |
cat >$CONFTMP/test.c <<EOT |
2120 |
#include <unistd.h> |
2121 |
#include <sys/socket.h> |
2122 |
int main() { |
2123 |
socklen_t a; |
2124 |
return 0; |
2125 |
} |
2126 |
EOT |
2127 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
2128 |
log "socklen_t found" |
2129 |
echo "present." |
2130 |
HAVE_SOCKLEN_T=1 |
2131 |
else |
2132 |
log "socklen_t not found" |
2133 |
echo "not present." |
2134 |
HAVE_SOCKLEN_T=0 |
2135 |
fi |
2136 |
fi |
2137 |
|
2138 |
########################################################################### |
2139 |
|
2140 |
# AIX workaround. |
2141 |
|
2142 |
MODE="check_aix_intNN " |
2143 |
echo2 "Seeing if your system defines int16/int32... " |
2144 |
res="`run egrep int16\|int32 /usr/include/sys/systypes.h`" |
2145 |
if [ "$res" ] ; then |
2146 |
echo "found." |
2147 |
echo " (This is bad, but we can work around it.)" |
2148 |
log "int16/int32 types found, enabling workaround" |
2149 |
INTTYPE_WORKAROUND=1 |
2150 |
else |
2151 |
echo "not found (this is good)." |
2152 |
log "int16/int32 types not found" |
2153 |
INTTYPE_WORKAROUND=0 |
2154 |
fi |
2155 |
|
2156 |
########################################################################### |
2157 |
|
2158 |
# Look for missing/broken built-in routines, and similar compatibility |
2159 |
# stuff. |
2160 |
|
2161 |
MODE="check_strerror " |
2162 |
if [ "$USE_LOCAL_FUNCS" ] ; then |
2163 |
log "not checking (-use-local-funcs)" |
2164 |
echo "Not checking for presence of strerror (-use-local-funcs specified)." |
2165 |
HAVE_STRERROR=0 |
2166 |
HAVE_SYS_ERRLIST=0 |
2167 |
else |
2168 |
echo2 "How to complain when something goes wrong... " |
2169 |
if [ "$HAVE_STRERROR" ] ; then |
2170 |
if [ "$HAVE_STRERROR" = 1 ] ; then |
2171 |
echo "(cached) strerror()." |
2172 |
log "cache supplied strerror()" |
2173 |
elif [ "$HAVE_SYS_ERRLIST" = 1 ] ; then |
2174 |
echo "(cached) sys_errlist." |
2175 |
log "cache supplied sys_errlist" |
2176 |
else |
2177 |
HAVE_SYS_ERRLIST=0 # just in case... you never know. |
2178 |
echo "(cached) pseudo sys_errlist." |
2179 |
log "cache supplied pseudo sys_errlist" |
2180 |
fi |
2181 |
else |
2182 |
cat >$CONFTMP/test.c <<EOT |
2183 |
int main() { |
2184 |
extern void strerror(void); |
2185 |
strerror(); |
2186 |
} |
2187 |
EOT |
2188 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
2189 |
HAVE_STRERROR=1 |
2190 |
echo "ah, strerror() is here." |
2191 |
log "using strerror()" |
2192 |
else |
2193 |
HAVE_STRERROR=0 |
2194 |
echo "no strerror()." |
2195 |
cat >$CONFTMP/test.c <<EOT |
2196 |
int main() { |
2197 |
extern char *sys_errlist[]; |
2198 |
char *s; |
2199 |
s = sys_errlist[0]; |
2200 |
} |
2201 |
EOT |
2202 |
log "trying sys_errlist..." |
2203 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
2204 |
HAVE_SYS_ERRLIST=1 |
2205 |
echo " But you have sys_errlist, which will do nicely." |
2206 |
log "using sys_errlist" |
2207 |
else |
2208 |
HAVE_SYS_ERRLIST=0 |
2209 |
echo " You don't have sys_errlist either, so we'll have to make do." |
2210 |
log "using pseudo sys_errlist" |
2211 |
fi |
2212 |
fi |
2213 |
fi |
2214 |
fi # -use-local-funcs |
2215 |
|
2216 |
|
2217 |
MODE="check_compat " |
2218 |
|
2219 |
if [ "$USE_LOCAL_FUNCS" ] ; then |
2220 |
echo "Enabling compatibility functions: hstrerror snprintf strtok str[n]icmp strdup str[c]spn strsignal" |
2221 |
HAVE_HSTRERROR=0 |
2222 |
HAVE_SNPRINTF=0 |
2223 |
BAD_SNPRINTF=0 |
2224 |
HAVE_STRTOK=0 |
2225 |
HAVE_STRICMP=0 |
2226 |
HAVE_STRCASECMP=0 |
2227 |
HAVE_STRDUP=0 |
2228 |
HAVE_STRSPN=0 |
2229 |
HAVE_STRSIGNAL=0 |
2230 |
fi |
2231 |
|
2232 |
echo2 "Looking for other functions we want that you don't have... " |
2233 |
|
2234 |
if [ "$MISSING" != bonkle -a ! "$USE_LOCAL_FUNCS" ] ; then |
2235 |
if [ ! "$MISSING" ] ; then |
2236 |
echo "(cached) none" |
2237 |
log "cache supplied: (none)" |
2238 |
else |
2239 |
echo "(cached)$MISSING" |
2240 |
log "cache supplied:$MISSING" |
2241 |
fi |
2242 |
else |
2243 |
|
2244 |
if [ "$USE_LOCAL_FUNCS" ] ; then |
2245 |
|
2246 |
MISSING=" hstrerror snprintf strtok str[n]icmp strdup str[c]spn strsignal" |
2247 |
|
2248 |
else |
2249 |
|
2250 |
MISSING= |
2251 |
|
2252 |
MODE="check_hstrerror " |
2253 |
TEST="(void) hstrerror(1); return 0;" |
2254 |
if test_function "const char *" hstrerror "(int)" ; then : ; else |
2255 |
MISSING="$MISSING hstrerror" |
2256 |
echo2 "hstrerror " |
2257 |
fi |
2258 |
|
2259 |
MODE="check_snprintf " |
2260 |
TEST=' extern int printf(const char *, ...); |
2261 |
extern unsigned int strlen(const char *); |
2262 |
char buf[16]; |
2263 |
int res; |
2264 |
buf[0] = 0; |
2265 |
res = snprintf(buf, 8, "%d", 123456789); |
2266 |
if (strcmp(buf, "1234567") != 0) { |
2267 |
printf("test: snprintf broken (bad result in buffer: wanted 1234567, got \"%s\")\n", buf); |
2268 |
if (strlen(buf) > 7) |
2269 |
printf("test: your snprintf does not check buffer size!\n"); |
2270 |
return 1; |
2271 |
} else if (res != 7) { |
2272 |
printf("test: snprintf broken (wrong return value: wanted 7, got %d)\n", res); |
2273 |
return 1; |
2274 |
} else |
2275 |
return 0;' |
2276 |
if test_function int snprintf "(char *, int, const char *, ...)" ; then |
2277 |
BAD_SNPRINTF=0 |
2278 |
else |
2279 |
tmp="`$CONFTMP/test 2>&1`" |
2280 |
res="`echo $tmp | cut -d\ -f10 2>&1`" |
2281 |
if [ "$res" = "-1)" ] ; then |
2282 |
BAD_SNPRINTF=1 |
2283 |
log "found, but returns -1 if string too long" |
2284 |
elif [ "$res" = "9)" ] ; then |
2285 |
BAD_SNPRINTF=2 |
2286 |
log "found, but returns large value if string too long" |
2287 |
else |
2288 |
BAD_SNPRINTF=0 |
2289 |
MISSING="$MISSING snprintf" |
2290 |
echo2 "snprintf " |
2291 |
fi |
2292 |
fi |
2293 |
|
2294 |
# Common failings with strtok() implementations: |
2295 |
# - strtok(NULL, ...) crashes after a NULL is returned |
2296 |
# - strtok(NULL, " ") returns NULL but a subsequent |
2297 |
# strtok(NULL, "") doesn't |
2298 |
MODE="check_strtok " |
2299 |
TEST=' char buf1[1]; |
2300 |
char buf2[] = "1 2 3"; |
2301 |
char buf3[] = "4 5 6"; |
2302 |
char buf4[] = " "; |
2303 |
buf1[0] = 0; |
2304 |
buf3[0] = 0; |
2305 |
if (strtok(buf1, " ") != (char *)0) |
2306 |
return 1; |
2307 |
if (strtok((char *)0, " ") != (char *)0) |
2308 |
return 2; |
2309 |
if (strtok(buf2, " ") != buf2) |
2310 |
return 3; |
2311 |
if (strtok((char *)0, " ") != buf2+2) |
2312 |
return 4; |
2313 |
if (strtok(buf3, " ") != (char *)0) |
2314 |
return 5; |
2315 |
if (strtok((char *)0, " ") != (char *)0) |
2316 |
return 6; |
2317 |
if (strtok(buf4, " ") != (char *)0) |
2318 |
return 7; |
2319 |
if (strtok((char *)0, "") != (char *)0) |
2320 |
return 8; |
2321 |
return 0;' |
2322 |
if test_function "char *" strtok "(char *, const char *)" ; then : ; else |
2323 |
MISSING="$MISSING strtok" |
2324 |
echo2 "strtok " |
2325 |
fi |
2326 |
|
2327 |
# stricmp() (STRing case-Insensitive CoMPare) is another name, used |
2328 |
# by at least the Amiga DICE C compiler, for what POSIX calls |
2329 |
# strcasecmp(). I prefer the former because the latter (1) is |
2330 |
# unnecessarily long and (2) implies a case-sensitive compare when |
2331 |
# it's really a case-INsensitive compare. If this system doesn't |
2332 |
# have stricmp() but does have strcasecmp(), we use a #define in |
2333 |
# defs.h to rename the latter to the former. |
2334 |
MODE="check_stricmp " |
2335 |
TEST='extern int strnicmp(const char *, const char *, int); return stricmp("ABC","abc")==0 && strnicmp("ABC","abd",2)==0 ? 0 : 1;' |
2336 |
if test_function int stricmp "(const char *, const char *)" ; then |
2337 |
HAVE_STRCASECMP=0 # doesn't really matter |
2338 |
else |
2339 |
TEST='extern int strncasecmp(const char *, const char *, int); return strcasecmp("ABC","abc")==0 && strncasecmp("ABC","abd",2)==0 ? 0 : 1;' |
2340 |
if test_function int strcasecmp "(const char *, const char *)" ; then : ; else |
2341 |
MISSING="$MISSING str[n]icmp" |
2342 |
echo2 "str[n]icmp " |
2343 |
fi |
2344 |
fi |
2345 |
|
2346 |
MODE="check_strdup " |
2347 |
TEST=' char *s, *t; |
2348 |
s = "ABC"; |
2349 |
t = strdup(s);'" |
2350 |
return (t != (char *)0 && t[0]=='A' && t[1]=='B' && t[2]=='C' && t[3]==0) ? 0 : 1;" |
2351 |
if test_function "char *" strdup "(const char *)" ; then : ; else |
2352 |
MISSING="$MISSING strdup" |
2353 |
echo2 "strdup " |
2354 |
fi |
2355 |
|
2356 |
MODE="check_strspn " |
2357 |
TEST=' extern int strcspn(const char *, const char *); |
2358 |
return (strspn("ABCBA","BA")==2 && strspn("123","123")==3 |
2359 |
&& strcspn("ABCBA","C")==2 && strcspn("123","4")==3) ? 0 : 1;' |
2360 |
if test_function int strspn "(const char *, const char *)" ; then : ; else |
2361 |
MISSING="$MISSING str[c]spn" |
2362 |
echo2 "str[c]spn " |
2363 |
fi |
2364 |
|
2365 |
MODE="check_strsignal " |
2366 |
TEST="(void) strsignal(1); return 0;" |
2367 |
if test_function "char *" strsignal "(int)" ; then : ; else |
2368 |
MISSING="$MISSING strsignal" |
2369 |
echo2 "strsignal " |
2370 |
fi |
2371 |
|
2372 |
fi # -use-local-funcs |
2373 |
|
2374 |
MODE="check_gettimeofday " |
2375 |
TEST="char buf[256]; (void) gettimeofday((void *)buf, (void *)buf); return 0;" |
2376 |
if test_function "char *" gettimeofday "(void *, void *)" ; then : ; else |
2377 |
MISSING="$MISSING gettimeofday" |
2378 |
echo2 "gettimeofday " |
2379 |
fi |
2380 |
|
2381 |
MODE="check_setgrent " |
2382 |
if [ "$SIZEOF_GID_T" ] ; then |
2383 |
TEST="(void) setgrent(); return 0;" |
2384 |
if test_function int setgrent "(void)" ; then : ; else |
2385 |
MISSING="$MISSING setgrent" |
2386 |
echo2 "setgrent " |
2387 |
fi |
2388 |
else |
2389 |
log "skipped (no gid_t)" |
2390 |
HAVE_SETGRENT=0 |
2391 |
fi |
2392 |
|
2393 |
MODE="check_setregid " |
2394 |
if [ "$SIZEOF_GID_T" ] ; then |
2395 |
TEST="(void) setregid(-1,-1); return 0;" |
2396 |
if test_function int setregid "(int,int)" ; then : ; else |
2397 |
MISSING="$MISSING setregid" |
2398 |
echo2 "setregid " |
2399 |
fi |
2400 |
else |
2401 |
log "skipped (no gid_t)" |
2402 |
HAVE_SETREGID=0 |
2403 |
fi |
2404 |
|
2405 |
MODE="check_umask " |
2406 |
TEST="(void) umask(1); return 0;" |
2407 |
if test_function int umask "(int)" ; then : ; else |
2408 |
MISSING="$MISSING umask" |
2409 |
echo2 "umask " |
2410 |
fi |
2411 |
|
2412 |
MODE="check_fork " |
2413 |
TEST="(void) fork(); return 0;" |
2414 |
if test_function int fork "(void)" ; then : ; else |
2415 |
MISSING="$MISSING fork" |
2416 |
echo2 "fork " |
2417 |
fi |
2418 |
|
2419 |
MODE="check_gethostbyname" |
2420 |
TEST='(void) gethostbyname("localhost"); return 0;' |
2421 |
if test_function "struct hostent *" gethostbyname "(const char *)" ; then : ; else |
2422 |
MISSING="$MISSING gethostbyname" |
2423 |
echo2 "gethostbyname " |
2424 |
fi |
2425 |
|
2426 |
MODE="check_getsetrlimit " |
2427 |
cat >$CONFTMP/test.c <<EOT |
2428 |
int main() { |
2429 |
extern void getrlimit(), setrlimit(); |
2430 |
getrlimit(); |
2431 |
setrlimit(); |
2432 |
} |
2433 |
EOT |
2434 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then |
2435 |
log "found getrlimit/setrlimit" |
2436 |
HAVE_GETSETRLIMIT=1 |
2437 |
else |
2438 |
log "didn't find getrlimit/setrlimit" |
2439 |
HAVE_GETSETRLIMIT=0 |
2440 |
MISSING="$MISSING get/setrlimit" |
2441 |
echo2 "get/setrlimit " |
2442 |
fi |
2443 |
|
2444 |
MODE="check_crypt " |
2445 |
TEST="(void) crypt(\"a\",\"bb\"); return 0;" |
2446 |
if test_function "char *" crypt "(char *, char *)" ; then : ; else |
2447 |
MISSING="$MISSING crypt" |
2448 |
echo2 "crypt " |
2449 |
fi |
2450 |
|
2451 |
echo "" |
2452 |
fi |
2453 |
|
2454 |
if [ "$MISSING" -a "$MISSING" != " gethostbyname" ] ; then |
2455 |
echo " Services will use its own versions of the functions listed above." |
2456 |
fi |
2457 |
|
2458 |
if [ "$HAVE_GETHOSTBYNAME" = 0 ] ; then |
2459 |
cat <<EOT |
2460 |
|
2461 |
NOTICE: Your system does not seem to have the gethostbyname() function. |
2462 |
This function is used to translate hostnames into IP addresses. |
2463 |
Since you don't have it (or we can't find it), you will need to |
2464 |
use IP addresses instead of hostnames when setting server addresses |
2465 |
in the configuration files (ircservices.conf and modules.conf). |
2466 |
|
2467 |
EOT |
2468 |
fi |
2469 |
|
2470 |
########################################################################### |
2471 |
|
2472 |
MODE="check_install " |
2473 |
echo2 "Checking how to install files... " |
2474 |
|
2475 |
if [ "$INSTALL" ] ; then |
2476 |
if [ "`echo $INSTALL | cut -c1`" = "$" ] ; then |
2477 |
echo '(cached) using our own "install".' |
2478 |
log "cache says use our own" |
2479 |
else |
2480 |
echo '(cached) this system'\''s "install" works.' |
2481 |
log "cache says use regular "\`"install'" |
2482 |
fi |
2483 |
else |
2484 |
cat >$CONFTMP/test.c <<EOT |
2485 |
int main() { return 0; } |
2486 |
EOT |
2487 |
if run $CC $CC_FLAGS $CONFTMP/test.c $CC_LIBS -o $CONFTMP/test ; then : ; else |
2488 |
whoa_there |
2489 |
fi |
2490 |
if run cp -p $CONFTMP/test$EXE_SUFFIX $CONFTMP/test3$EXE_SUFFIX ; then : ; else |
2491 |
echo "" |
2492 |
echo "" |
2493 |
echo "*** WHOA THERE! ***" |
2494 |
echo "" |
2495 |
echo "A simple "\`"cp -p' failed!" |
2496 |
echo "Are you out of disk space?" |
2497 |
exit 4 |
2498 |
fi |
2499 |
|
2500 |
if run install -m 500 $CONFTMP/test$EXE_SUFFIX $CONFTMP/test2$EXE_SUFFIX && test -f $CONFTMP/test$EXE_SUFFIX && run cmp $CONFTMP/test$EXE_SUFFIX $CONFTMP/test2$EXE_SUFFIX ; then |
2501 |
echo 'looks like "install" will work.' |
2502 |
INSTALL="install" |
2503 |
elif run cp -p $CONFTMP/test3$EXE_SUFFIX $CONFTMP/test$EXE_SUFFIX ; run install -c -m 500 $CONFTMP/test$EXE_SUFFIX $CONFTMP/test2$EXE_SUFFIX && test -f $CONFTMP/test$EXE_SUFFIX && run cmp $CONFTMP/test$EXE_SUFFIX $CONFTMP/test2$EXE_SUFFIX ; then |
2504 |
echo 'looks like "install -c" will work.' |
2505 |
INSTALL="install -c" |
2506 |
elif run cp -p $CONFTMP/test3$EXE_SUFFIX $CONFTMP/test$EXE_SUFFIX ; run ginstall -m 500 $CONFTMP/test$EXE_SUFFIX $CONFTMP/test2$EXE_SUFFIX && test -f $CONFTMP/test$EXE_SUFFIX && run cmp $CONFTMP/test$EXE_SUFFIX $CONFTMP/test2$EXE_SUFFIX ; then |
2507 |
echo 'looks like "ginstall" will work.' |
2508 |
INSTALL="ginstall" |
2509 |
else |
2510 |
echo \"install\"" doesn't seem to work." |
2511 |
echo " But we can still use cp and friends, so we'll roll our own "\"install\". |
2512 |
INSTALL='$(TOPDIR)/install-script' |
2513 |
fi |
2514 |
log "using: $INSTALL" |
2515 |
fi |
2516 |
|
2517 |
########################################################################### |
2518 |
|
2519 |
MODE="check_install-d " |
2520 |
|
2521 |
if [ "$INSTALL" = '$(TOPDIR)/install-script' ] ; then |
2522 |
MKDIR='$(INSTALL) -d' |
2523 |
else |
2524 |
tmp=`echo $INSTALL | cut -d\ -f1` |
2525 |
echo2 "Seeing if \"$tmp\" will create directories... " |
2526 |
if [ "$MKDIR" ] ; then |
2527 |
if [ "$MKDIR" = '$(TOPDIR)/install-script' ] ; then |
2528 |
echo "(cached) no" |
2529 |
log "cache says no" |
2530 |
else |
2531 |
echo "(cached) yes" |
2532 |
log "cache says yes" |
2533 |
fi |
2534 |
else |
2535 |
MKDIR=$tmp |
2536 |
log "trying $MKDIR" |
2537 |
if run $MKDIR -d -m 700 $CONFTMP/testdir && test -d $CONFTMP/testdir ; then |
2538 |
echo "OK." |
2539 |
log "successful" |
2540 |
else |
2541 |
echo "nope, using workaround." |
2542 |
log "failed" |
2543 |
MKDIR='$(TOPDIR)/install-script' |
2544 |
fi |
2545 |
fi |
2546 |
fi |
2547 |
|
2548 |
########################################################################### |
2549 |
|
2550 |
MODE="check_copy_recurse " |
2551 |
echo2 "Checking how to copy directories... " |
2552 |
|
2553 |
if [ "$CP_ALL" ] ; then |
2554 |
echo "(cached) $CP_ALL" |
2555 |
log "cache supplied $CP_ALL" |
2556 |
else |
2557 |
sysname=`/bin/uname -s 2>&1` |
2558 |
log "sysname: $sysname" |
2559 |
case $sysname in |
2560 |
*Linux) CP_ALL="/bin/cp -dpr"; |
2561 |
log "guessing: cp -dpr";; |
2562 |
CYGWIN) CP_ALL="/bin/cp -dpr"; |
2563 |
log "guessing: cp -dpr";; |
2564 |
*) CP_ALL="/bin/cp -pr"; |
2565 |
log "guessing: cp -pr";; |
2566 |
esac |
2567 |
run rm -rf $CONFTMP/test* |
2568 |
run echo test >$CONFTMP/test |
2569 |
run cp $CONFTMP/test $CONFTMP/test2 |
2570 |
if run /bin/mkdir $CONFTMP/testA && run /bin/mkdir $CONFTMP/testB && run /bin/mv $CONFTMP/test2 $CONFTMP/testA ; then |
2571 |
: |
2572 |
else |
2573 |
echo "" |
2574 |
echo "" |
2575 |
echo "*** WHOA THERE! ***" |
2576 |
echo "" |
2577 |
echo "A few simple mkdir's and mv's failed!" |
2578 |
echo "Are you out of disk space?" |
2579 |
exit 4 |
2580 |
fi |
2581 |
if run $CP_ALL $CONFTMP/testA $CONFTMP/testB/testC && run cmp $CONFTMP/testA/test2 $CONFTMP/testB/testC/test2 ; then |
2582 |
echo "$CP_ALL" |
2583 |
log \`"$CP_ALL' works" |
2584 |
else |
2585 |
log \`"$CP_ALL' doesn't work" |
2586 |
run /bin/rm -rf $CONFTMP/testB/* |
2587 |
if run sh -c '/bin/tar Ccf $CONFTMP/testA - . | /bin/tar Cxf $CONFTMP/testB -' |
2588 |
then |
2589 |
echo "tar (yuck)" |
2590 |
CP_ALL='$(TOPDIR)/cp-recursive -t' |
2591 |
log "using tar" |
2592 |
else |
2593 |
log "tar failed(!)" |
2594 |
echo "" |
2595 |
echo " Neither cp nor tar work! I give up." |
2596 |
exit 2 |
2597 |
fi |
2598 |
fi |
2599 |
fi |
2600 |
|
2601 |
########################################################################### |
2602 |
|
2603 |
# Create files. |
2604 |
|
2605 |
echo2 "Creating config.h... " |
2606 |
rm -f config.h.new |
2607 |
cat >config.h.new <<EOT |
2608 |
/* |
2609 |
* This file is generated automatically by "configure". Any changes made |
2610 |
* to it will be erased next time "configure" is run. |
2611 |
*/ |
2612 |
|
2613 |
#define PROGRAM "$PROGRAM" |
2614 |
#define SERVICES_BIN "$BINDEST/$PROGRAM" |
2615 |
#define SERVICES_DIR "$DATDEST" |
2616 |
|
2617 |
#define GCC3_HACK $NEED_GCC3_HACK |
2618 |
#define HASH_SORTED $SORTED_LISTS |
2619 |
#define CLEAN_COMPILE $CLEAN_COMPILE |
2620 |
#define DUMPCORE $DUMPCORE |
2621 |
#ifndef CONVERT_DB |
2622 |
# define MEMCHECKS $MEMCHECKS |
2623 |
# define SHOWALLOCS $SHOWALLOCS |
2624 |
#endif |
2625 |
|
2626 |
#define STATIC_MODULES $STATIC_MODULES |
2627 |
EOT |
2628 |
if [ "$SYMS_NEED_UNDERSCORES" ] ; then cat >>config.h.new <<EOT ; fi |
2629 |
#define SYMS_NEED_UNDERSCORES $SYMS_NEED_UNDERSCORES |
2630 |
EOT |
2631 |
cat >>config.h.new <<EOT |
2632 |
|
2633 |
#define HAVE_STDINT_H $HAVE_STDINT_H |
2634 |
#define HAVE_STRINGS_H $HAVE_STRINGS_H |
2635 |
#define HAVE_SYS_SELECT_H $HAVE_SYS_SELECT_H |
2636 |
#define HAVE_SYS_SYSPROTO_H $HAVE_SYS_SYSPROTO_H |
2637 |
|
2638 |
EOT |
2639 |
if [ "$TYPE_INT8" = int8_t ] ; then |
2640 |
cat >>config.h.new <<EOT |
2641 |
#define int8 int8_t |
2642 |
#define uint8 uint8_t |
2643 |
EOT |
2644 |
else |
2645 |
cat >>config.h.new <<EOT |
2646 |
typedef signed $TYPE_INT8 int8; |
2647 |
typedef unsigned $TYPE_INT8 uint8; |
2648 |
EOT |
2649 |
fi |
2650 |
if [ "$TYPE_INT16" = int16_t ] ; then |
2651 |
cat >>config.h.new <<EOT |
2652 |
#define int16 int16_t |
2653 |
#define uint16 uint16_t |
2654 |
EOT |
2655 |
else |
2656 |
cat >>config.h.new <<EOT |
2657 |
typedef signed $TYPE_INT16 int16; |
2658 |
typedef unsigned $TYPE_INT16 uint16; |
2659 |
EOT |
2660 |
fi |
2661 |
if [ "$TYPE_INT32" = int32_t ] ; then |
2662 |
cat >>config.h.new <<EOT |
2663 |
#define int32 int32_t |
2664 |
#define uint32 uint32_t |
2665 |
EOT |
2666 |
else |
2667 |
cat >>config.h.new <<EOT |
2668 |
typedef signed $TYPE_INT32 int32; |
2669 |
typedef unsigned $TYPE_INT32 uint32; |
2670 |
EOT |
2671 |
fi |
2672 |
if [ "$TYPE_INT64" = int64_t ] ; then |
2673 |
cat >>config.h.new <<EOT |
2674 |
#define int64 int64_t |
2675 |
#define uint64 uint64_t |
2676 |
EOT |
2677 |
else |
2678 |
cat >>config.h.new <<EOT |
2679 |
typedef signed $TYPE_INT64 int64; |
2680 |
typedef unsigned $TYPE_INT64 uint64; |
2681 |
EOT |
2682 |
fi |
2683 |
cat >>config.h.new <<EOT |
2684 |
|
2685 |
#define SIZEOF_INT $SIZEOF_INT |
2686 |
#define SIZEOF_LONG $SIZEOF_LONG |
2687 |
#define SIZEOF_PTR $SIZEOF_PTR |
2688 |
#define SIZEOF_TIME_T $SIZEOF_TIME_T |
2689 |
#define MAX_TIME_T $MAX_TIME_T |
2690 |
EOT |
2691 |
if [ "$SIZEOF_GID_T" ] ; then cat >>config.h.new <<EOT ; fi |
2692 |
#define SIZEOF_GID_T $SIZEOF_GID_T |
2693 |
EOT |
2694 |
cat >>config.h.new <<EOT |
2695 |
#define HAVE_SOCKLEN_T $HAVE_SOCKLEN_T |
2696 |
|
2697 |
#define HAVE_STRERROR $HAVE_STRERROR |
2698 |
#define HAVE_SYS_ERRLIST $HAVE_SYS_ERRLIST |
2699 |
#define HAVE_HSTRERROR $HAVE_HSTRERROR |
2700 |
#define HAVE_SNPRINTF $HAVE_SNPRINTF |
2701 |
#define BAD_SNPRINTF $BAD_SNPRINTF |
2702 |
#define HAVE_STRTOK $HAVE_STRTOK |
2703 |
#define HAVE_STRICMP $HAVE_STRICMP |
2704 |
#define HAVE_STRCASECMP $HAVE_STRCASECMP |
2705 |
#define HAVE_STRDUP $HAVE_STRDUP |
2706 |
#define HAVE_STRSPN $HAVE_STRSPN |
2707 |
#define HAVE_STRSIGNAL $HAVE_STRSIGNAL |
2708 |
#define HAVE_GETTIMEOFDAY $HAVE_GETTIMEOFDAY |
2709 |
#define HAVE_SETGRENT $HAVE_SETGRENT |
2710 |
#define HAVE_SETREGID $HAVE_SETREGID |
2711 |
#define HAVE_UMASK $HAVE_UMASK |
2712 |
#define HAVE_FORK $HAVE_FORK |
2713 |
#define HAVE_GETHOSTBYNAME $HAVE_GETHOSTBYNAME |
2714 |
#define HAVE_GETSETRLIMIT $HAVE_GETSETRLIMIT |
2715 |
#define HAVE_CRYPT $HAVE_CRYPT |
2716 |
EOT |
2717 |
|
2718 |
if cmp config.h config.h.new >/dev/null 2>&1 ; then |
2719 |
rm -f config.h.new |
2720 |
echo "done (unchanged)." |
2721 |
else |
2722 |
mv -f config.h.new config.h |
2723 |
echo "done." |
2724 |
fi |
2725 |
|
2726 |
########################################################################### |
2727 |
|
2728 |
INSTEXEFLAGS="-m 750" |
2729 |
INSTDATFLAGS="-m 640" |
2730 |
MKDIRFLAGS="-m 750" |
2731 |
|
2732 |
echo2 "Creating Makefile.inc... " |
2733 |
rm -f Makefile.inc.new |
2734 |
cat >Makefile.inc.new <<EOT |
2735 |
# This file is generated automatically by "configure". Any changes made |
2736 |
# to it will be erased next time "configure" is run. |
2737 |
|
2738 |
CC=$CC |
2739 |
BASE_CFLAGS=$CC_FLAGS |
2740 |
CDEFS=$CDEFS |
2741 |
LFLAGS=$CC_LFLAGS$CC_DYN_LFLAGS |
2742 |
LIBS=$CC_LIBS$CC_DYN_LIBS |
2743 |
EXE_SUFFIX=$EXE_SUFFIX |
2744 |
EOT |
2745 |
if [ $STATIC_MODULES = 1 ] ; then |
2746 |
cat >>Makefile.inc.new <<EOT |
2747 |
STATIC_MODULES=1 |
2748 |
EOT |
2749 |
else |
2750 |
cat >>Makefile.inc.new <<EOT |
2751 |
CC_SHARED=$CC_SHARED |
2752 |
EOT |
2753 |
fi |
2754 |
if [ $HAVE_SNPRINTF = 0 -a $BAD_SNPRINTF = 0 ] ; then |
2755 |
cat >>Makefile.inc.new <<EOT |
2756 |
|
2757 |
VSNPRINTF_O=vsnprintf.o |
2758 |
EOT |
2759 |
fi |
2760 |
cat >>Makefile.inc.new <<EOT |
2761 |
RANLIB=$RANLIB |
2762 |
|
2763 |
PROGRAM=$PROGRAM |
2764 |
BINDEST=$BINDEST |
2765 |
DATDEST=$DATDEST |
2766 |
|
2767 |
TEST_NT=$TEST_NT |
2768 |
INSTALL_EXE=$INSTALL $INSTEXEFLAGS |
2769 |
INSTALL_DAT=$INSTALL $INSTDATFLAGS |
2770 |
MKDIR=$MKDIR -d $MKDIRFLAGS |
2771 |
CP_ALL=$CP_ALL |
2772 |
EOT |
2773 |
|
2774 |
if cmp Makefile.inc Makefile.inc.new >/dev/null 2>&1 ; then |
2775 |
rm -f Makefile.inc.new |
2776 |
echo "done (unchanged)." |
2777 |
else |
2778 |
mv -f Makefile.inc.new Makefile.inc |
2779 |
echo "done." |
2780 |
fi |
2781 |
|
2782 |
########################################################################### |
2783 |
|
2784 |
# Save results in cache for next time around. |
2785 |
|
2786 |
echo2 "Saving configuration results in config.cache... " |
2787 |
|
2788 |
cat <<EOT >config.cache |
2789 |
CONFIG_VERSION=$MY_CONFIG_VERSION |
2790 |
|
2791 |
BINDEST='$BINDEST' |
2792 |
DATDEST='$DATDEST' |
2793 |
|
2794 |
TEST_NT='$TEST_NT' |
2795 |
INSTALL='$INSTALL' |
2796 |
MKDIR='$MKDIR' |
2797 |
CP_ALL='$CP_ALL' |
2798 |
|
2799 |
CC='$CC' |
2800 |
CC_FLAGS='$CC_FLAGS' |
2801 |
CC_LFLAGS='$CC_LFLAGS' |
2802 |
CC_LIBS='$CC_LIBS' |
2803 |
|
2804 |
SORTED_LISTS=$SORTED_LISTS |
2805 |
CLEAN_COMPILE=$CLEAN_COMPILE |
2806 |
MEMCHECKS=$MEMCHECKS |
2807 |
SHOWALLOCS=$SHOWALLOCS |
2808 |
DUMPCORE=$DUMPCORE |
2809 |
|
2810 |
STATIC_MODULES=$STATIC_MODULES |
2811 |
CC_SHARED='$CC_SHARED' |
2812 |
CC_DYN_LFLAGS='$CC_DYN_LFLAGS' |
2813 |
CC_DYN_LIBS='$CC_DYN_LIBS' |
2814 |
SYMS_NEED_UNDERSCORES=$SYMS_NEED_UNDERSCORES |
2815 |
RANLIB='$RANLIB' |
2816 |
|
2817 |
TYPE_INT8=$TYPE_INT8 |
2818 |
TYPE_INT16=$TYPE_INT16 |
2819 |
TYPE_INT32=$TYPE_INT32 |
2820 |
TYPE_INT64=$TYPE_INT64 |
2821 |
SIZEOF_INT=$SIZEOF_INT |
2822 |
SIZEOF_LONG=$SIZEOF_LONG |
2823 |
SIZEOF_PTR=$SIZEOF_PTR |
2824 |
SIZEOF_TIME_T=$SIZEOF_TIME_T |
2825 |
MAX_TIME_T='$MAX_TIME_T' |
2826 |
SIZEOF_GID_T=$SIZEOF_GID_T |
2827 |
HAVE_SOCKLEN_T=$HAVE_SOCKLEN_T |
2828 |
|
2829 |
HAVE_STDINT_H=$HAVE_STDINT_H |
2830 |
HAVE_STRINGS_H=$HAVE_STRINGS_H |
2831 |
HAVE_SYS_SELECT_H=$HAVE_SYS_SELECT_H |
2832 |
HAVE_SYS_SYSPROTO_H=$HAVE_SYS_SYSPROTO_H |
2833 |
|
2834 |
HAVE_STRERROR=$HAVE_STRERROR |
2835 |
HAVE_SYS_ERRLIST=$HAVE_SYS_ERRLIST |
2836 |
|
2837 |
HAVE_SNPRINTF=$HAVE_SNPRINTF |
2838 |
BAD_SNPRINTF=$BAD_SNPRINTF |
2839 |
HAVE_HSTRERROR=$HAVE_HSTRERROR |
2840 |
HAVE_STRTOK=$HAVE_STRTOK |
2841 |
HAVE_STRICMP=$HAVE_STRICMP |
2842 |
HAVE_STRCASECMP=$HAVE_STRCASECMP |
2843 |
HAVE_STRDUP=$HAVE_STRDUP |
2844 |
HAVE_STRSPN=$HAVE_STRSPN |
2845 |
HAVE_STRSIGNAL=$HAVE_STRSIGNAL |
2846 |
HAVE_GETTIMEOFDAY=$HAVE_GETTIMEOFDAY |
2847 |
HAVE_SETGRENT=$HAVE_SETGRENT |
2848 |
HAVE_SETREGID=$HAVE_SETREGID |
2849 |
HAVE_UMASK=$HAVE_UMASK |
2850 |
HAVE_FORK=$HAVE_FORK |
2851 |
HAVE_GETHOSTBYNAME=$HAVE_GETHOSTBYNAME |
2852 |
HAVE_GETSETRLIMIT=$HAVE_GETSETRLIMIT |
2853 |
HAVE_CRYPT=$HAVE_CRYPT |
2854 |
MISSING='$MISSING' |
2855 |
EOT |
2856 |
|
2857 |
echo "done." |
2858 |
|
2859 |
########################################################################### |
2860 |
|
2861 |
# Delete the temporary directory we created. |
2862 |
|
2863 |
rm -rf $CONFTMP |
2864 |
|
2865 |
########################################################################### |
2866 |
|
2867 |
# All done! |
2868 |
|
2869 |
cat <<EOT |
2870 |
|
2871 |
All done! Now edit defs.h as needed, and run "make" (or possibly "gmake") |
2872 |
to compile Services. See the README and FAQ if you have any problems. |
2873 |
|
2874 |
EOT |
2875 |
|
2876 |
exit 0 |
2877 |
|
2878 |
########################################################################### |
2879 |
|
2880 |
# Local variables: |
2881 |
# indent-tabs-mode: nil |
2882 |
# End: |
2883 |
# |
2884 |
# vim: expandtab shiftwidth=4: |