OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [config/] [tcl.m4] - Blame information for rev 722

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 722 jeremybenn
#------------------------------------------------------------------------
2
# SC_PATH_TCLCONFIG --
3
#
4
#       Locate the tclConfig.sh file and perform a sanity check on
5
#       the Tcl compile flags
6
#
7
# Arguments:
8
#       none
9
#
10
# Results:
11
#
12
#       Adds the following arguments to configure:
13
#               --with-tcl=...
14
#
15
#       Defines the following vars:
16
#               TCL_BIN_DIR     Full path to the directory containing
17
#                               the tclConfig.sh file
18
#------------------------------------------------------------------------
19
 
20
AC_DEFUN([SC_PATH_TCLCONFIG], [
21
    #
22
    # Ok, lets find the tcl configuration
23
    # First, look for one uninstalled.
24
    # the alternative search directory is invoked by --with-tcl
25
    #
26
 
27
    if test x"${no_tcl}" = x ; then
28
        # we reset no_tcl in case something fails here
29
        no_tcl=true
30
        AC_ARG_WITH(tcl, [  --with-tcl              directory containing tcl configuration (tclConfig.sh)], with_tclconfig=${withval})
31
        AC_MSG_CHECKING([for Tcl configuration])
32
        AC_CACHE_VAL(ac_cv_c_tclconfig,[
33
 
34
            # First check to see if --with-tcl was specified.
35
            case "${host}" in
36
                *-*-cygwin*) platDir="win" ;;
37
                *) platDir="unix" ;;
38
            esac
39
            if test x"${with_tclconfig}" != x ; then
40
                if test -f "${with_tclconfig}/tclConfig.sh" ; then
41
                    ac_cv_c_tclconfig=`(cd ${with_tclconfig}; pwd)`
42
                else
43
                    AC_MSG_ERROR([${with_tclconfig} directory doesn't contain tclConfig.sh])
44
                fi
45
            fi
46
 
47
            # then check for a private Tcl installation
48
            if test x"${ac_cv_c_tclconfig}" = x ; then
49
                for i in \
50
                        ../tcl \
51
                        `ls -dr ../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
52
                        `ls -dr ../tcl[[8-9]].[[0-9]] 2>/dev/null` \
53
                        `ls -dr ../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
54
                        ../../tcl \
55
                        `ls -dr ../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
56
                        `ls -dr ../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
57
                        `ls -dr ../../tcl[[8-9]].[[0-9]]* 2>/dev/null` \
58
                        ../../../tcl \
59
                        `ls -dr ../../../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
60
                        `ls -dr ../../../tcl[[8-9]].[[0-9]] 2>/dev/null` \
61
                        `ls -dr ../../../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
62
                    if test -f "$i/$platDir/tclConfig.sh" ; then
63
                        ac_cv_c_tclconfig=`(cd $i/$platDir; pwd)`
64
                        break
65
                    fi
66
                done
67
            fi
68
 
69
            # on Darwin, check in Framework installation locations
70
            if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tclconfig}" = x ; then
71
                for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
72
                        `ls -d /Library/Frameworks 2>/dev/null` \
73
                        `ls -d /Network/Library/Frameworks 2>/dev/null` \
74
                        `ls -d /System/Library/Frameworks 2>/dev/null` \
75
                        ; do
76
                    if test -f "$i/Tcl.framework/tclConfig.sh" ; then
77
                        ac_cv_c_tclconfig=`(cd $i/Tcl.framework; pwd)`
78
                        break
79
                    fi
80
                done
81
            fi
82
 
83
            # check in a few common install locations
84
            if test x"${ac_cv_c_tclconfig}" = x ; then
85
                for i in `ls -d ${libdir} 2>/dev/null` \
86
                        `ls -d ${exec_prefix}/lib 2>/dev/null` \
87
                        `ls -d ${prefix}/lib 2>/dev/null` \
88
                        `ls -d /usr/local/lib 2>/dev/null` \
89
                        `ls -d /usr/contrib/lib 2>/dev/null` \
90
                        `ls -d /usr/lib 2>/dev/null` \
91
                        ; do
92
                    if test -f "$i/tclConfig.sh" ; then
93
                        ac_cv_c_tclconfig=`(cd $i; pwd)`
94
                        break
95
                    fi
96
                done
97
            fi
98
 
99
            # check in a few other private locations
100
            if test x"${ac_cv_c_tclconfig}" = x ; then
101
                for i in \
102
                        ${srcdir}/../tcl \
103
                        `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
104
                        `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]] 2>/dev/null` \
105
                        `ls -dr ${srcdir}/../tcl[[8-9]].[[0-9]]* 2>/dev/null` ; do
106
                    if test -f "$i/$platDir/tclConfig.sh" ; then
107
                    ac_cv_c_tclconfig=`(cd $i/$platDir; pwd)`
108
                    break
109
                fi
110
                done
111
            fi
112
        ])
113
 
114
        if test x"${ac_cv_c_tclconfig}" = x ; then
115
            TCL_BIN_DIR="# no Tcl configs found"
116
            AC_MSG_WARN([Can't find Tcl configuration definitions])
117
        else
118
            no_tcl=
119
            TCL_BIN_DIR=${ac_cv_c_tclconfig}
120
            AC_MSG_RESULT([found ${TCL_BIN_DIR}/tclConfig.sh])
121
        fi
122
    fi
123
])
124
 
125
#------------------------------------------------------------------------
126
# SC_PATH_TKCONFIG --
127
#
128
#       Locate the tkConfig.sh file
129
#
130
# Arguments:
131
#       none
132
#
133
# Results:
134
#
135
#       Adds the following arguments to configure:
136
#               --with-tk=...
137
#
138
#       Defines the following vars:
139
#               TK_BIN_DIR      Full path to the directory containing
140
#                               the tkConfig.sh file
141
#------------------------------------------------------------------------
142
 
143
AC_DEFUN([SC_PATH_TKCONFIG], [
144
    #
145
    # Ok, lets find the tk configuration
146
    # First, look for one uninstalled.
147
    # the alternative search directory is invoked by --with-tk
148
    #
149
 
150
    if test x"${no_tk}" = x ; then
151
        # we reset no_tk in case something fails here
152
        no_tk=true
153
        AC_ARG_WITH(tk, [  --with-tk               directory containing tk configuration (tkConfig.sh)], with_tkconfig=${withval})
154
        AC_MSG_CHECKING([for Tk configuration])
155
        AC_CACHE_VAL(ac_cv_c_tkconfig,[
156
 
157
            # First check to see if --with-tkconfig was specified.
158
            if test x"${with_tkconfig}" != x ; then
159
                if test -f "${with_tkconfig}/tkConfig.sh" ; then
160
                    ac_cv_c_tkconfig=`(cd ${with_tkconfig}; pwd)`
161
                else
162
                    AC_MSG_ERROR([${with_tkconfig} directory doesn't contain tkConfig.sh])
163
                fi
164
            fi
165
 
166
            # then check for a private Tk library
167
            case "${host}" in
168
                *-*-cygwin*) platDir="win" ;;
169
                *) platDir="unix" ;;
170
            esac
171
            if test x"${ac_cv_c_tkconfig}" = x ; then
172
                for i in \
173
                        ../tk \
174
                        `ls -dr ../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
175
                        `ls -dr ../tk[[8-9]].[[0-9]] 2>/dev/null` \
176
                        `ls -dr ../tk[[8-9]].[[0-9]]* 2>/dev/null` \
177
                        ../../tk \
178
                        `ls -dr ../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
179
                        `ls -dr ../../tk[[8-9]].[[0-9]] 2>/dev/null` \
180
                        `ls -dr ../../tk[[8-9]].[[0-9]]* 2>/dev/null` \
181
                        ../../../tk \
182
                        `ls -dr ../../../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
183
                        `ls -dr ../../../tk[[8-9]].[[0-9]] 2>/dev/null` \
184
                        `ls -dr ../../../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
185
                    if test -f "$i/$platDir/tkConfig.sh" ; then
186
                        ac_cv_c_tkconfig=`(cd $i/$platDir; pwd)`
187
                        break
188
                    fi
189
                done
190
            fi
191
 
192
            # on Darwin, check in Framework installation locations
193
            if test "`uname -s`" = "Darwin" -a x"${ac_cv_c_tkconfig}" = x ; then
194
                for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
195
                        `ls -d /Library/Frameworks 2>/dev/null` \
196
                        `ls -d /Network/Library/Frameworks 2>/dev/null` \
197
                        `ls -d /System/Library/Frameworks 2>/dev/null` \
198
                        ; do
199
                    if test -f "$i/Tk.framework/tkConfig.sh" ; then
200
                        ac_cv_c_tkconfig=`(cd $i/Tk.framework; pwd)`
201
                        break
202
                    fi
203
                done
204
            fi
205
 
206
            # check in a few common install locations
207
            if test x"${ac_cv_c_tkconfig}" = x ; then
208
                for i in `ls -d ${libdir} 2>/dev/null` \
209
                        `ls -d ${exec_prefix}/lib 2>/dev/null` \
210
                        `ls -d ${prefix}/lib 2>/dev/null` \
211
                        `ls -d /usr/local/lib 2>/dev/null` \
212
                        `ls -d /usr/contrib/lib 2>/dev/null` \
213
                        `ls -d /usr/lib 2>/dev/null` \
214
                        ; do
215
                    if test -f "$i/tkConfig.sh" ; then
216
                        ac_cv_c_tkconfig=`(cd $i; pwd)`
217
                        break
218
                    fi
219
                done
220
            fi
221
            # check in a few other private locations
222
            if test x"${ac_cv_c_tkconfig}" = x ; then
223
                for i in \
224
                        ${srcdir}/../tk \
225
                        `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]].[[0-9]]* 2>/dev/null` \
226
                        `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]] 2>/dev/null` \
227
                        `ls -dr ${srcdir}/../tk[[8-9]].[[0-9]]* 2>/dev/null` ; do
228
                    if test -f "$i/$platDir/tkConfig.sh" ; then
229
                        ac_cv_c_tkconfig=`(cd $i/$platDir; pwd)`
230
                        break
231
                    fi
232
                done
233
            fi
234
        ])
235
 
236
        if test x"${ac_cv_c_tkconfig}" = x ; then
237
            TK_BIN_DIR="# no Tk configs found"
238
            AC_MSG_WARN([Can't find Tk configuration definitions])
239
        else
240
            no_tk=
241
            TK_BIN_DIR=${ac_cv_c_tkconfig}
242
            AC_MSG_RESULT([found ${TK_BIN_DIR}/tkConfig.sh])
243
        fi
244
    fi
245
])
246
 
247
#------------------------------------------------------------------------
248
# SC_LOAD_TCLCONFIG --
249
#
250
#       Load the tclConfig.sh file
251
#
252
# Arguments:
253
#
254
#       Requires the following vars to be set:
255
#               TCL_BIN_DIR
256
#
257
# Results:
258
#
259
#       Subst the following vars:
260
#               TCL_BIN_DIR
261
#               TCL_SRC_DIR
262
#               TCL_LIB_FILE
263
#
264
#------------------------------------------------------------------------
265
 
266
AC_DEFUN([SC_LOAD_TCLCONFIG], [
267
    AC_MSG_CHECKING([for existence of ${TCL_BIN_DIR}/tclConfig.sh])
268
 
269
    if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then
270
        AC_MSG_RESULT([loading])
271
        . ${TCL_BIN_DIR}/tclConfig.sh
272
    else
273
        AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
274
    fi
275
 
276
    # eval is required to do the TCL_DBGX substitution
277
    eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
278
    eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
279
 
280
    # If the TCL_BIN_DIR is the build directory (not the install directory),
281
    # then set the common variable name to the value of the build variables.
282
    # For example, the variable TCL_LIB_SPEC will be set to the value
283
    # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
284
    # instead of TCL_BUILD_LIB_SPEC since it will work with both an
285
    # installed and uninstalled version of Tcl.
286
    if test -f "${TCL_BIN_DIR}/Makefile" ; then
287
        TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
288
        TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
289
        TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
290
    elif test "`uname -s`" = "Darwin"; then
291
        # If Tcl was built as a framework, attempt to use the libraries
292
        # from the framework at the given location so that linking works
293
        # against Tcl.framework installed in an arbitary location.
294
        case ${TCL_DEFS} in
295
            *TCL_FRAMEWORK*)
296
                if test -f "${TCL_BIN_DIR}/${TCL_LIB_FILE}"; then
297
                    for i in "`cd ${TCL_BIN_DIR}; pwd`" \
298
                             "`cd ${TCL_BIN_DIR}/../..; pwd`"; do
299
                        if test "`basename "$i"`" = "${TCL_LIB_FILE}.framework"; then
300
                            TCL_LIB_SPEC="-F`dirname "$i"` -framework ${TCL_LIB_FILE}"
301
                            break
302
                        fi
303
                    done
304
                fi
305
                if test -f "${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"; then
306
                    TCL_STUB_LIB_SPEC="-L${TCL_BIN_DIR} ${TCL_STUB_LIB_FLAG}"
307
                    TCL_STUB_LIB_PATH="${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}"
308
                fi
309
                ;;
310
        esac
311
    fi
312
 
313
    # eval is required to do the TCL_DBGX substitution
314
    eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
315
    eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
316
    eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
317
    eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
318
 
319
    AC_SUBST(TCL_VERSION)
320
    AC_SUBST(TCL_PATCH_LEVEL)
321
    AC_SUBST(TCL_BIN_DIR)
322
    AC_SUBST(TCL_SRC_DIR)
323
 
324
    AC_SUBST(TCL_LIB_FILE)
325
    AC_SUBST(TCL_LIB_FLAG)
326
    AC_SUBST(TCL_LIB_SPEC)
327
 
328
    AC_SUBST(TCL_STUB_LIB_FILE)
329
    AC_SUBST(TCL_STUB_LIB_FLAG)
330
    AC_SUBST(TCL_STUB_LIB_SPEC)
331
])
332
 
333
#------------------------------------------------------------------------
334
# SC_LOAD_TKCONFIG --
335
#
336
#       Load the tkConfig.sh file
337
#
338
# Arguments:
339
#
340
#       Requires the following vars to be set:
341
#               TK_BIN_DIR
342
#
343
# Results:
344
#
345
#       Sets the following vars that should be in tkConfig.sh:
346
#               TK_BIN_DIR
347
#------------------------------------------------------------------------
348
 
349
AC_DEFUN([SC_LOAD_TKCONFIG], [
350
    AC_MSG_CHECKING([for existence of ${TK_BIN_DIR}/tkConfig.sh])
351
 
352
    if test -f "${TK_BIN_DIR}/tkConfig.sh" ; then
353
        AC_MSG_RESULT([loading])
354
        . ${TK_BIN_DIR}/tkConfig.sh
355
    else
356
        AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
357
    fi
358
 
359
    # eval is required to do the TK_DBGX substitution
360
    eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
361
    eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
362
 
363
    # If the TK_BIN_DIR is the build directory (not the install directory),
364
    # then set the common variable name to the value of the build variables.
365
    # For example, the variable TK_LIB_SPEC will be set to the value
366
    # of TK_BUILD_LIB_SPEC. An extension should make use of TK_LIB_SPEC
367
    # instead of TK_BUILD_LIB_SPEC since it will work with both an
368
    # installed and uninstalled version of Tcl.
369
    if test -f "${TK_BIN_DIR}/Makefile" ; then
370
        TK_LIB_SPEC=${TK_BUILD_LIB_SPEC}
371
        TK_STUB_LIB_SPEC=${TK_BUILD_STUB_LIB_SPEC}
372
        TK_STUB_LIB_PATH=${TK_BUILD_STUB_LIB_PATH}
373
    elif test "`uname -s`" = "Darwin"; then
374
        # If Tk was built as a framework, attempt to use the libraries
375
        # from the framework at the given location so that linking works
376
        # against Tk.framework installed in an arbitary location.
377
        case ${TK_DEFS} in
378
            *TK_FRAMEWORK*)
379
                if test -f "${TK_BIN_DIR}/${TK_LIB_FILE}"; then
380
                    for i in "`cd ${TK_BIN_DIR}; pwd`" \
381
                             "`cd ${TK_BIN_DIR}/../..; pwd`"; do
382
                        if test "`basename "$i"`" = "${TK_LIB_FILE}.framework"; then
383
                            TK_LIB_SPEC="-F`dirname "$i"` -framework ${TK_LIB_FILE}"
384
                            break
385
                        fi
386
                    done
387
                fi
388
                if test -f "${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"; then
389
                    TK_STUB_LIB_SPEC="-L${TK_BIN_DIR} ${TK_STUB_LIB_FLAG}"
390
                    TK_STUB_LIB_PATH="${TK_BIN_DIR}/${TK_STUB_LIB_FILE}"
391
                fi
392
                ;;
393
        esac
394
    fi
395
 
396
    # eval is required to do the TK_DBGX substitution
397
    eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
398
    eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
399
    eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
400
    eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
401
 
402
    AC_SUBST(TK_VERSION)
403
    AC_SUBST(TK_BIN_DIR)
404
    AC_SUBST(TK_SRC_DIR)
405
 
406
    AC_SUBST(TK_LIB_FILE)
407
    AC_SUBST(TK_LIB_FLAG)
408
    AC_SUBST(TK_LIB_SPEC)
409
 
410
    AC_SUBST(TK_STUB_LIB_FILE)
411
    AC_SUBST(TK_STUB_LIB_FLAG)
412
    AC_SUBST(TK_STUB_LIB_SPEC)
413
])
414
 
415
#------------------------------------------------------------------------
416
# SC_PROG_TCLSH
417
#       Locate a tclsh shell installed on the system path. This macro
418
#       will only find a Tcl shell that already exists on the system.
419
#       It will not find a Tcl shell in the Tcl build directory or
420
#       a Tcl shell that has been installed from the Tcl build directory.
421
#       If a Tcl shell can't be located on the PATH, then TCLSH_PROG will
422
#       be set to "". Extensions should take care not to create Makefile
423
#       rules that are run by default and depend on TCLSH_PROG. An
424
#       extension can't assume that an executable Tcl shell exists at
425
#       build time.
426
#
427
# Arguments
428
#       none
429
#
430
# Results
431
#       Subst's the following values:
432
#               TCLSH_PROG
433
#------------------------------------------------------------------------
434
 
435
AC_DEFUN([SC_PROG_TCLSH], [
436
    AC_MSG_CHECKING([for tclsh])
437
    AC_CACHE_VAL(ac_cv_path_tclsh, [
438
        search_path=`echo ${PATH} | sed -e 's/:/ /g'`
439
        for dir in $search_path ; do
440
            for j in `ls -r $dir/tclsh[[8-9]]* 2> /dev/null` \
441
                    `ls -r $dir/tclsh* 2> /dev/null` ; do
442
                if test x"$ac_cv_path_tclsh" = x ; then
443
                    if test -f "$j" ; then
444
                        ac_cv_path_tclsh=$j
445
                        break
446
                    fi
447
                fi
448
            done
449
        done
450
    ])
451
 
452
    if test -f "$ac_cv_path_tclsh" ; then
453
        TCLSH_PROG="$ac_cv_path_tclsh"
454
        AC_MSG_RESULT([$TCLSH_PROG])
455
    else
456
        # It is not an error if an installed version of Tcl can't be located.
457
        TCLSH_PROG=""
458
        AC_MSG_RESULT([No tclsh found on PATH])
459
    fi
460
    AC_SUBST(TCLSH_PROG)
461
])
462
 
463
#------------------------------------------------------------------------
464
# SC_BUILD_TCLSH
465
#       Determine the fully qualified path name of the tclsh executable
466
#       in the Tcl build directory. This macro will correctly determine
467
#       the name of the tclsh executable even if tclsh has not yet
468
#       been built in the build directory. The build tclsh must be used
469
#       when running tests from an extension build directory. It is not
470
#       correct to use the TCLSH_PROG in cases like this.
471
#
472
# Arguments
473
#       none
474
#
475
# Results
476
#       Subst's the following values:
477
#               BUILD_TCLSH
478
#------------------------------------------------------------------------
479
 
480
AC_DEFUN([SC_BUILD_TCLSH], [
481
    AC_MSG_CHECKING([for tclsh in Tcl build directory])
482
    BUILD_TCLSH=${TCL_BIN_DIR}/tclsh
483
    AC_MSG_RESULT([$BUILD_TCLSH])
484
    AC_SUBST(BUILD_TCLSH)
485
])
486
 
487
#------------------------------------------------------------------------
488
# SC_ENABLE_SHARED --
489
#
490
#       Allows the building of shared libraries
491
#
492
# Arguments:
493
#       none
494
#
495
# Results:
496
#
497
#       Adds the following arguments to configure:
498
#               --enable-shared=yes|no
499
#
500
#       Defines the following vars:
501
#               STATIC_BUILD    Used for building import/export libraries
502
#                               on Windows.
503
#
504
#       Sets the following vars:
505
#               SHARED_BUILD    Value of 1 or 0
506
#------------------------------------------------------------------------
507
 
508
AC_DEFUN([SC_ENABLE_SHARED], [
509
    AC_MSG_CHECKING([how to build libraries])
510
    AC_ARG_ENABLE(shared,
511
        [  --enable-shared         build and link with shared libraries [--enable-shared]],
512
        [tcl_ok=$enableval], [tcl_ok=yes])
513
 
514
    if test "${enable_shared+set}" = set; then
515
        enableval="$enable_shared"
516
        tcl_ok=$enableval
517
    else
518
        tcl_ok=yes
519
    fi
520
 
521
    if test "$tcl_ok" = "yes" ; then
522
        AC_MSG_RESULT([shared])
523
        SHARED_BUILD=1
524
    else
525
        AC_MSG_RESULT([static])
526
        SHARED_BUILD=0
527
        AC_DEFINE(STATIC_BUILD)
528
    fi
529
])
530
 
531
#------------------------------------------------------------------------
532
# SC_ENABLE_FRAMEWORK --
533
#
534
#       Allows the building of shared libraries into frameworks
535
#
536
# Arguments:
537
#       none
538
#
539
# Results:
540
#
541
#       Adds the following arguments to configure:
542
#               --enable-framework=yes|no
543
#
544
#       Sets the following vars:
545
#               FRAMEWORK_BUILD Value of 1 or 0
546
#------------------------------------------------------------------------
547
 
548
AC_DEFUN([SC_ENABLE_FRAMEWORK], [
549
    if test "`uname -s`" = "Darwin" ; then
550
        AC_MSG_CHECKING([how to package libraries])
551
        AC_ARG_ENABLE(framework,
552
            [  --enable-framework      package shared libraries in MacOSX frameworks [--disable-framework]],
553
            [enable_framework=$enableval], [enable_framework=no])
554
        if test $enable_framework = yes; then
555
            if test $SHARED_BUILD = 0; then
556
                AC_MSG_WARN([Frameworks can only be built if --enable-shared is yes])
557
                enable_framework=no
558
            fi
559
            if test $tcl_corefoundation = no; then
560
                AC_MSG_WARN([Frameworks can only be used when CoreFoundation is available])
561
                enable_framework=no
562
            fi
563
        fi
564
        if test $enable_framework = yes; then
565
            AC_MSG_RESULT([framework])
566
            FRAMEWORK_BUILD=1
567
        else
568
            if test $SHARED_BUILD = 1; then
569
                AC_MSG_RESULT([shared library])
570
            else
571
                AC_MSG_RESULT([static library])
572
            fi
573
            FRAMEWORK_BUILD=0
574
        fi
575
    fi
576
])
577
 
578
#------------------------------------------------------------------------
579
# SC_ENABLE_THREADS --
580
#
581
#       Specify if thread support should be enabled.  TCL_THREADS is
582
#       checked so that if you are compiling an extension against a
583
#       threaded core, your extension must be compiled threaded as well.
584
#
585
# Arguments:
586
#       none
587
#
588
# Results:
589
#
590
#       Adds the following arguments to configure:
591
#               --enable-threads
592
#
593
#       Sets the following vars:
594
#               THREADS_LIBS    Thread library(s)
595
#
596
#       Defines the following vars:
597
#               TCL_THREADS
598
#               _REENTRANT
599
#               _THREAD_SAFE
600
#
601
#------------------------------------------------------------------------
602
 
603
AC_DEFUN([SC_ENABLE_THREADS], [
604
    AC_ARG_ENABLE(threads, [  --enable-threads        build with threads],
605
        [tcl_ok=$enableval], [tcl_ok=no])
606
 
607
    if test "${TCL_THREADS}" = 1; then
608
        tcl_threaded_core=1;
609
    fi
610
 
611
    if test "$tcl_ok" = "yes" -o "${TCL_THREADS}" = 1; then
612
        TCL_THREADS=1
613
        # USE_THREAD_ALLOC tells us to try the special thread-based
614
        # allocator that significantly reduces lock contention
615
        AC_DEFINE(USE_THREAD_ALLOC)
616
        AC_DEFINE(_REENTRANT)
617
        if test "`uname -s`" = "SunOS" ; then
618
            AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
619
        fi
620
        AC_DEFINE(_THREAD_SAFE)
621
        AC_CHECK_LIB(pthread,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
622
        if test "$tcl_ok" = "no"; then
623
            # Check a little harder for __pthread_mutex_init in the same
624
            # library, as some systems hide it there until pthread.h is
625
            # defined.  We could alternatively do an AC_TRY_COMPILE with
626
            # pthread.h, but that will work with libpthread really doesn't
627
            # exist, like AIX 4.2.  [Bug: 4359]
628
            AC_CHECK_LIB(pthread, __pthread_mutex_init,
629
                tcl_ok=yes, tcl_ok=no)
630
        fi
631
 
632
        if test "$tcl_ok" = "yes"; then
633
            # The space is needed
634
            THREADS_LIBS=" -lpthread"
635
        else
636
            AC_CHECK_LIB(pthreads, pthread_mutex_init,
637
                tcl_ok=yes, tcl_ok=no)
638
            if test "$tcl_ok" = "yes"; then
639
                # The space is needed
640
                THREADS_LIBS=" -lpthreads"
641
            else
642
                AC_CHECK_LIB(c, pthread_mutex_init,
643
                    tcl_ok=yes, tcl_ok=no)
644
                if test "$tcl_ok" = "no"; then
645
                    AC_CHECK_LIB(c_r, pthread_mutex_init,
646
                        tcl_ok=yes, tcl_ok=no)
647
                    if test "$tcl_ok" = "yes"; then
648
                        # The space is needed
649
                        THREADS_LIBS=" -pthread"
650
                    else
651
                        TCL_THREADS=0
652
                        AC_MSG_WARN([Don't know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...])
653
                    fi
654
                fi
655
            fi
656
        fi
657
 
658
        # Does the pthread-implementation provide
659
        # 'pthread_attr_setstacksize' ?
660
 
661
        ac_saved_libs=$LIBS
662
        LIBS="$LIBS $THREADS_LIBS"
663
        AC_CHECK_FUNCS(pthread_attr_setstacksize)
664
        AC_CHECK_FUNCS(pthread_atfork)
665
        LIBS=$ac_saved_libs
666
    else
667
        TCL_THREADS=0
668
    fi
669
    # Do checking message here to not mess up interleaved configure output
670
    AC_MSG_CHECKING([for building with threads])
671
    if test "${TCL_THREADS}" = 1; then
672
        AC_DEFINE(TCL_THREADS, 1, [Are we building with threads enabled?])
673
        if test "${tcl_threaded_core}" = 1; then
674
            AC_MSG_RESULT([yes (threaded core)])
675
        else
676
            AC_MSG_RESULT([yes])
677
        fi
678
    else
679
        AC_MSG_RESULT([no (default)])
680
    fi
681
 
682
    AC_SUBST(TCL_THREADS)
683
])
684
 
685
#------------------------------------------------------------------------
686
# SC_ENABLE_SYMBOLS --
687
#
688
#       Specify if debugging symbols should be used.
689
#       Memory (TCL_MEM_DEBUG) and compile (TCL_COMPILE_DEBUG) debugging
690
#       can also be enabled.
691
#
692
# Arguments:
693
#       none
694
#
695
#       Requires the following vars to be set in the Makefile:
696
#               CFLAGS_DEBUG
697
#               CFLAGS_OPTIMIZE
698
#               LDFLAGS_DEBUG
699
#               LDFLAGS_OPTIMIZE
700
#
701
# Results:
702
#
703
#       Adds the following arguments to configure:
704
#               --enable-symbols
705
#
706
#       Defines the following vars:
707
#               CFLAGS_DEFAULT  Sets to $(CFLAGS_DEBUG) if true
708
#                               Sets to $(CFLAGS_OPTIMIZE) if false
709
#               LDFLAGS_DEFAULT Sets to $(LDFLAGS_DEBUG) if true
710
#                               Sets to $(LDFLAGS_OPTIMIZE) if false
711
#               DBGX            Debug library extension
712
#
713
#------------------------------------------------------------------------
714
 
715
AC_DEFUN([SC_ENABLE_SYMBOLS], [
716
    AC_MSG_CHECKING([for build with symbols])
717
    AC_ARG_ENABLE(symbols, [  --enable-symbols        build with debugging symbols [--disable-symbols]],    [tcl_ok=$enableval], [tcl_ok=no])
718
# FIXME: Currently, LDFLAGS_DEFAULT is not used, it should work like CFLAGS_DEFAULT.
719
    if test "$tcl_ok" = "no"; then
720
        CFLAGS_DEFAULT='$(CFLAGS_OPTIMIZE)'
721
        LDFLAGS_DEFAULT='$(LDFLAGS_OPTIMIZE)'
722
        DBGX=""
723
        AC_MSG_RESULT([no])
724
    else
725
        CFLAGS_DEFAULT='$(CFLAGS_DEBUG)'
726
        LDFLAGS_DEFAULT='$(LDFLAGS_DEBUG)'
727
        DBGX=g
728
        if test "$tcl_ok" = "yes"; then
729
            AC_MSG_RESULT([yes (standard debugging)])
730
        fi
731
    fi
732
    AC_SUBST(CFLAGS_DEFAULT)
733
    AC_SUBST(LDFLAGS_DEFAULT)
734
 
735
    if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
736
        AC_DEFINE(TCL_MEM_DEBUG)
737
    fi
738
 
739
    if test "$tcl_ok" = "compile" -o "$tcl_ok" = "all"; then
740
        AC_DEFINE(TCL_COMPILE_DEBUG)
741
        AC_DEFINE(TCL_COMPILE_STATS)
742
    fi
743
 
744
    if test "$tcl_ok" != "yes" -a "$tcl_ok" != "no"; then
745
        if test "$tcl_ok" = "all"; then
746
            AC_MSG_RESULT([enabled symbols mem compile debugging])
747
        else
748
            AC_MSG_RESULT([enabled $tcl_ok debugging])
749
        fi
750
    fi
751
])
752
 
753
#------------------------------------------------------------------------
754
# SC_ENABLE_LANGINFO --
755
#
756
#       Allows use of modern nl_langinfo check for better l10n.
757
#       This is only relevant for Unix.
758
#
759
# Arguments:
760
#       none
761
#
762
# Results:
763
#
764
#       Adds the following arguments to configure:
765
#               --enable-langinfo=yes|no (default is yes)
766
#
767
#       Defines the following vars:
768
#               HAVE_LANGINFO   Triggers use of nl_langinfo if defined.
769
#
770
#------------------------------------------------------------------------
771
 
772
AC_DEFUN([SC_ENABLE_LANGINFO], [
773
    AC_ARG_ENABLE(langinfo,
774
        [  --enable-langinfo      use nl_langinfo if possible to determine
775
                          encoding at startup, otherwise use old heuristic],
776
        [langinfo_ok=$enableval], [langinfo_ok=yes])
777
 
778
    HAVE_LANGINFO=0
779
    if test "$langinfo_ok" = "yes"; then
780
        AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
781
    fi
782
    AC_MSG_CHECKING([whether to use nl_langinfo])
783
    if test "$langinfo_ok" = "yes"; then
784
        AC_CACHE_VAL(tcl_cv_langinfo_h, [
785
            AC_TRY_COMPILE([#include <langinfo.h>], [nl_langinfo(CODESET);],
786
                    [tcl_cv_langinfo_h=yes],[tcl_cv_langinfo_h=no])])
787
        AC_MSG_RESULT([$tcl_cv_langinfo_h])
788
        if test $tcl_cv_langinfo_h = yes; then
789
            AC_DEFINE(HAVE_LANGINFO)
790
        fi
791
    else
792
        AC_MSG_RESULT([$langinfo_ok])
793
    fi
794
])
795
 
796
#--------------------------------------------------------------------
797
# SC_CONFIG_MANPAGES
798
#
799
#       Decide whether to use symlinks for linking the manpages,
800
#       whether to compress the manpages after installation, and
801
#       whether to add a package name suffix to the installed
802
#       manpages to avoidfile name clashes.
803
#       If compression is enabled also find out what file name suffix
804
#       the given compression program is using.
805
#
806
# Arguments:
807
#       none
808
#
809
# Results:
810
#
811
#       Adds the following arguments to configure:
812
#               --enable-man-symlinks
813
#               --enable-man-compression=PROG
814
#               --enable-man-suffix[=STRING]
815
#
816
#       Defines the following variable:
817
#
818
#       MAN_FLAGS -     The apropriate flags for installManPage
819
#                       according to the user's selection.
820
#
821
#--------------------------------------------------------------------
822
 
823
AC_DEFUN([SC_CONFIG_MANPAGES], [
824
    AC_MSG_CHECKING([whether to use symlinks for manpages])
825
    AC_ARG_ENABLE(man-symlinks,
826
            [  --enable-man-symlinks   use symlinks for the manpages],
827
        test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks",
828
        enableval="no")
829
    AC_MSG_RESULT([$enableval])
830
 
831
    AC_MSG_CHECKING([whether to compress the manpages])
832
    AC_ARG_ENABLE(man-compression,
833
            [  --enable-man-compression=PROG
834
                      compress the manpages with PROG],
835
        [case $enableval in
836
            yes) AC_MSG_ERROR([missing argument to --enable-man-compression]);;
837
            no)  ;;
838
            *)   MAN_FLAGS="$MAN_FLAGS --compress $enableval";;
839
        esac],
840
        enableval="no")
841
    AC_MSG_RESULT([$enableval])
842
    if test "$enableval" != "no"; then
843
        AC_MSG_CHECKING([for compressed file suffix])
844
        touch TeST
845
        $enableval TeST
846
        Z=`ls TeST* | sed 's/^....//'`
847
        rm -f TeST*
848
        MAN_FLAGS="$MAN_FLAGS --extension $Z"
849
        AC_MSG_RESULT([$Z])
850
    fi
851
 
852
    AC_MSG_CHECKING([whether to add a package name suffix for the manpages])
853
    AC_ARG_ENABLE(man-suffix,
854
            [  --enable-man-suffix=STRING
855
                      use STRING as a suffix to manpage file names
856
                      (default: $1)],
857
        [case $enableval in
858
            yes) enableval="$1" MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
859
            no)  ;;
860
            *)   MAN_FLAGS="$MAN_FLAGS --suffix $enableval";;
861
        esac],
862
        enableval="no")
863
    AC_MSG_RESULT([$enableval])
864
 
865
    AC_SUBST(MAN_FLAGS)
866
])
867
 
868
#--------------------------------------------------------------------
869
# SC_CONFIG_SYSTEM
870
#
871
#       Determine what the system is (some things cannot be easily checked
872
#       on a feature-driven basis, alas). This can usually be done via the
873
#       "uname" command, but there are a few systems, like Next, where
874
#       this doesn't work.
875
#
876
# Arguments:
877
#       none
878
#
879
# Results:
880
#       Defines the following var:
881
#
882
#       system -        System/platform/version identification code.
883
#
884
#--------------------------------------------------------------------
885
 
886
AC_DEFUN([SC_CONFIG_SYSTEM], [
887
    AC_CACHE_CHECK([system version], tcl_cv_sys_version, [
888
        if test -f /usr/lib/NextStep/software_version; then
889
            tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
890
        else
891
            tcl_cv_sys_version=`uname -s`-`uname -r`
892
            if test "$?" -ne 0 ; then
893
                AC_MSG_WARN([can't find uname command])
894
                tcl_cv_sys_version=unknown
895
            else
896
                # Special check for weird MP-RAS system (uname returns weird
897
                # results, and the version is kept in special file).
898
 
899
                if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
900
                    tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid`
901
                fi
902
                if test "`uname -s`" = "AIX" ; then
903
                    tcl_cv_sys_version=AIX-`uname -v`.`uname -r`
904
                fi
905
            fi
906
        fi
907
    ])
908
    system=$tcl_cv_sys_version
909
])
910
 
911
#--------------------------------------------------------------------
912
# SC_CONFIG_CFLAGS
913
#
914
#       Try to determine the proper flags to pass to the compiler
915
#       for building shared libraries and other such nonsense.
916
#
917
# Arguments:
918
#       none
919
#
920
# Results:
921
#
922
#       Defines and substitutes the following vars:
923
#
924
#       DL_OBJS -       Name of the object file that implements dynamic
925
#                       loading for Tcl on this system.
926
#       DL_LIBS -       Library file(s) to include in tclsh and other base
927
#                       applications in order for the "load" command to work.
928
#       LDFLAGS -      Flags to pass to the compiler when linking object
929
#                       files into an executable application binary such
930
#                       as tclsh.
931
#       LD_SEARCH_FLAGS-Flags to pass to ld, such as "-R /usr/local/tcl/lib",
932
#                       that tell the run-time dynamic linker where to look
933
#                       for shared libraries such as libtcl.so.  Depends on
934
#                       the variable LIB_RUNTIME_DIR in the Makefile. Could
935
#                       be the same as CC_SEARCH_FLAGS if ${CC} is used to link.
936
#       CC_SEARCH_FLAGS-Flags to pass to ${CC}, such as "-Wl,-rpath,/usr/local/tcl/lib",
937
#                       that tell the run-time dynamic linker where to look
938
#                       for shared libraries such as libtcl.so.  Depends on
939
#                       the variable LIB_RUNTIME_DIR in the Makefile.
940
#       MAKE_LIB -      Command to execute to build the a library;
941
#                       differs when building shared or static.
942
#       MAKE_STUB_LIB -
943
#                       Command to execute to build a stub library.
944
#       INSTALL_LIB -   Command to execute to install a library;
945
#                       differs when building shared or static.
946
#       INSTALL_STUB_LIB -
947
#                       Command to execute to install a stub library.
948
#       STLIB_LD -      Base command to use for combining object files
949
#                       into a static library.
950
#       SHLIB_CFLAGS -  Flags to pass to cc when compiling the components
951
#                       of a shared library (may request position-independent
952
#                       code, among other things).
953
#       SHLIB_LD -      Base command to use for combining object files
954
#                       into a shared library.
955
#       SHLIB_LD_LIBS - Dependent libraries for the linker to scan when
956
#                       creating shared libraries.  This symbol typically
957
#                       goes at the end of the "ld" commands that build
958
#                       shared libraries. The value of the symbol is
959
#                       "${LIBS}" if all of the dependent libraries should
960
#                       be specified when creating a shared library.  If
961
#                       dependent libraries should not be specified (as on
962
#                       SunOS 4.x, where they cause the link to fail, or in
963
#                       general if Tcl and Tk aren't themselves shared
964
#                       libraries), then this symbol has an empty string
965
#                       as its value.
966
#       SHLIB_SUFFIX -  Suffix to use for the names of dynamically loadable
967
#                       extensions.  An empty string means we don't know how
968
#                       to use shared libraries on this platform.
969
# TCL_SHLIB_LD_EXTRAS - Additional element which are added to SHLIB_LD_LIBS
970
#  TK_SHLIB_LD_EXTRAS   for the build of Tcl and Tk, but not recorded in the
971
#                       tclConfig.sh, since they are only used for the build
972
#                       of Tcl and Tk.
973
#                       Examples: MacOS X records the library version and
974
#                       compatibility version in the shared library.  But
975
#                       of course the Tcl version of this is only used for Tcl.
976
#       LIB_SUFFIX -    Specifies everything that comes after the "libfoo"
977
#                       in a static or shared library name, using the $VERSION variable
978
#                       to put the version in the right place.  This is used
979
#                       by platforms that need non-standard library names.
980
#                       Examples:  ${VERSION}.so.1.1 on NetBSD, since it needs
981
#                       to have a version after the .so, and ${VERSION}.a
982
#                       on AIX, since a shared library needs to have
983
#                       a .a extension whereas shared objects for loadable
984
#                       extensions have a .so extension.  Defaults to
985
#                       ${VERSION}${SHLIB_SUFFIX}.
986
#       TCL_NEEDS_EXP_FILE -
987
#                       1 means that an export file is needed to link to a
988
#                       shared library.
989
#       TCL_EXP_FILE -  The name of the installed export / import file which
990
#                       should be used to link to the Tcl shared library.
991
#                       Empty if Tcl is unshared.
992
#       TCL_BUILD_EXP_FILE -
993
#                       The name of the built export / import file which
994
#                       should be used to link to the Tcl shared library.
995
#                       Empty if Tcl is unshared.
996
#       CFLAGS_DEBUG -
997
#                       Flags used when running the compiler in debug mode
998
#       CFLAGS_OPTIMIZE -
999
#                       Flags used when running the compiler in optimize mode
1000
#       CFLAGS -        Additional CFLAGS added as necessary (usually 64-bit)
1001
#
1002
#--------------------------------------------------------------------
1003
 
1004
AC_DEFUN([SC_CONFIG_CFLAGS], [
1005
 
1006
    # Step 0.a: Enable 64 bit support?
1007
 
1008
    AC_MSG_CHECKING([if 64bit support is requested])
1009
    AC_ARG_ENABLE(64bit,[  --enable-64bit          enable 64bit support (where applicable)],
1010
        [do64bit=$enableval], [do64bit=no])
1011
    AC_MSG_RESULT([$do64bit])
1012
 
1013
    # Step 0.b: Enable Solaris 64 bit VIS support?
1014
 
1015
    AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
1016
    AC_ARG_ENABLE(64bit-vis,[  --enable-64bit-vis      enable 64bit Sparc VIS support],
1017
        [do64bitVIS=$enableval], [do64bitVIS=no])
1018
    AC_MSG_RESULT([$do64bitVIS])
1019
 
1020
    if test "$do64bitVIS" = "yes"; then
1021
        # Force 64bit on with VIS
1022
        do64bit=yes
1023
    fi
1024
 
1025
    # Step 1: set the variable "system" to hold the name and version number
1026
    # for the system.
1027
 
1028
    SC_CONFIG_SYSTEM
1029
 
1030
    # Step 2: check for existence of -ldl library.  This is needed because
1031
    # Linux can use either -ldl or -ldld for dynamic loading.
1032
 
1033
    AC_CHECK_LIB(dl, dlopen, have_dl=yes, have_dl=no)
1034
 
1035
    # Require ranlib early so we can override it in special cases below.
1036
 
1037
    AC_REQUIRE([AC_PROG_RANLIB])
1038
 
1039
    # Step 3: set configuration options based on system name and version.
1040
 
1041
    do64bit_ok=no
1042
    LDFLAGS_ORIG="$LDFLAGS"
1043
    TCL_EXPORT_FILE_SUFFIX=""
1044
    UNSHARED_LIB_SUFFIX=""
1045
    TCL_TRIM_DOTS='`echo ${VERSION} | tr -d .`'
1046
    ECHO_VERSION='`echo ${VERSION}`'
1047
    TCL_LIB_VERSIONS_OK=ok
1048
    CFLAGS_DEBUG=-g
1049
    CFLAGS_OPTIMIZE=-O
1050
    if test "$GCC" = "yes" ; then
1051
        CFLAGS_WARNING="-Wall -Wno-implicit-int -fno-strict-aliasing"
1052
    else
1053
        CFLAGS_WARNING=""
1054
    fi
1055
    TCL_NEEDS_EXP_FILE=0
1056
    TCL_BUILD_EXP_FILE=""
1057
    TCL_EXP_FILE=""
1058
dnl FIXME: Replace AC_CHECK_PROG with AC_CHECK_TOOL once cross compiling is fixed.
1059
dnl AC_CHECK_TOOL(AR, ar)
1060
    AC_CHECK_PROG(AR, ar, ar)
1061
    if test "${AR}" = "" ; then
1062
        AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.])
1063
    fi
1064
    STLIB_LD='${AR} cr'
1065
    LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
1066
    PLAT_OBJS=""
1067
    PLAT_SRCS=""
1068
    case $system in
1069
        AIX-*)
1070
            if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
1071
                # AIX requires the _r compiler when gcc isn't being used
1072
                case "${CC}" in
1073
                    *_r)
1074
                        # ok ...
1075
                        ;;
1076
                    *)
1077
                        CC=${CC}_r
1078
                        ;;
1079
                esac
1080
                AC_MSG_RESULT([Using $CC for compiling with threads])
1081
            fi
1082
            LIBS="$LIBS -lc"
1083
            SHLIB_CFLAGS=""
1084
            # Note: need the LIBS below, otherwise Tk won't find Tcl's
1085
            # symbols when dynamically loaded into tclsh.
1086
            SHLIB_LD_LIBS='${LIBS}'
1087
            SHLIB_SUFFIX=".so"
1088
 
1089
            DL_OBJS="tclLoadDl.o"
1090
            LD_LIBRARY_PATH_VAR="LIBPATH"
1091
 
1092
            # Check to enable 64-bit flags for compiler/linker on AIX 4+
1093
            if test "$do64bit" = "yes" -a "`uname -v`" -gt "3" ; then
1094
                if test "$GCC" = "yes" ; then
1095
                    AC_MSG_WARN([64bit mode not supported with GCC on $system])
1096
                else
1097
                    do64bit_ok=yes
1098
                    CFLAGS="$CFLAGS -q64"
1099
                    LDFLAGS="$LDFLAGS -q64"
1100
                    RANLIB="${RANLIB} -X64"
1101
                    AR="${AR} -X64"
1102
                    SHLIB_LD_FLAGS="-b64"
1103
                fi
1104
            fi
1105
 
1106
            if test "`uname -m`" = "ia64" ; then
1107
                # AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
1108
                SHLIB_LD="/usr/ccs/bin/ld -G -z text"
1109
                # AIX-5 has dl* in libc.so
1110
                DL_LIBS=""
1111
                if test "$GCC" = "yes" ; then
1112
                    CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1113
                else
1114
                    CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
1115
                fi
1116
                LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
1117
            else
1118
                if test "$GCC" = "yes" ; then
1119
                    SHLIB_LD="gcc -shared"
1120
                else
1121
                    SHLIB_LD="/bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
1122
                fi
1123
                SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix ${SHLIB_LD} ${SHLIB_LD_FLAGS}"
1124
                DL_LIBS="-ldl"
1125
                CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1126
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1127
                TCL_NEEDS_EXP_FILE=1
1128
                TCL_EXPORT_FILE_SUFFIX='${VERSION}\$\{DBGX\}.exp'
1129
            fi
1130
 
1131
            # AIX v<=4.1 has some different flags than 4.2+
1132
            if test "$system" = "AIX-4.1" -o "`uname -v`" -lt "4" ; then
1133
                LIBOBJS="$LIBOBJS tclLoadAix.o"
1134
                DL_LIBS="-lld"
1135
            fi
1136
 
1137
            # On AIX <=v4 systems, libbsd.a has to be linked in to support
1138
            # non-blocking file IO.  This library has to be linked in after
1139
            # the MATH_LIBS or it breaks the pow() function.  The way to
1140
            # insure proper sequencing, is to add it to the tail of MATH_LIBS.
1141
            # This library also supplies gettimeofday.
1142
            #
1143
            # AIX does not have a timezone field in struct tm. When the AIX
1144
            # bsd library is used, the timezone global and the gettimeofday
1145
            # methods are to be avoided for timezone deduction instead, we
1146
            # deduce the timezone by comparing the localtime result on a
1147
            # known GMT value.
1148
 
1149
            AC_CHECK_LIB(bsd, gettimeofday, libbsd=yes, libbsd=no)
1150
            if test $libbsd = yes; then
1151
                MATH_LIBS="$MATH_LIBS -lbsd"
1152
                AC_DEFINE(USE_DELTA_FOR_TZ)
1153
            fi
1154
            ;;
1155
        BeOS*)
1156
            SHLIB_CFLAGS="-fPIC"
1157
            SHLIB_LD="${CC} -nostart"
1158
            SHLIB_LD_LIBS='${LIBS}'
1159
            SHLIB_SUFFIX=".so"
1160
            DL_OBJS="tclLoadDl.o"
1161
            DL_LIBS="-ldl"
1162
 
1163
            #-----------------------------------------------------------
1164
            # Check for inet_ntoa in -lbind, for BeOS (which also needs
1165
            # -lsocket, even if the network functions are in -lnet which
1166
            # is always linked to, for compatibility.
1167
            #-----------------------------------------------------------
1168
            AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"])
1169
            ;;
1170
        BSD/OS-2.1*|BSD/OS-3*)
1171
            SHLIB_CFLAGS=""
1172
            SHLIB_LD="shlicc -r"
1173
            SHLIB_LD_LIBS='${LIBS}'
1174
            SHLIB_SUFFIX=".so"
1175
            DL_OBJS="tclLoadDl.o"
1176
            DL_LIBS="-ldl"
1177
            CC_SEARCH_FLAGS=""
1178
            LD_SEARCH_FLAGS=""
1179
            ;;
1180
        BSD/OS-4.*)
1181
            SHLIB_CFLAGS="-export-dynamic -fPIC"
1182
            SHLIB_LD="cc -shared"
1183
            SHLIB_LD_LIBS='${LIBS}'
1184
            SHLIB_SUFFIX=".so"
1185
            DL_OBJS="tclLoadDl.o"
1186
            DL_LIBS="-ldl"
1187
            LDFLAGS="$LDFLAGS -export-dynamic"
1188
            CC_SEARCH_FLAGS=""
1189
            LD_SEARCH_FLAGS=""
1190
            ;;
1191
        dgux*)
1192
            SHLIB_CFLAGS="-K PIC"
1193
            SHLIB_LD="cc -G"
1194
            SHLIB_LD_LIBS=""
1195
            SHLIB_SUFFIX=".so"
1196
            DL_OBJS="tclLoadDl.o"
1197
            DL_LIBS="-ldl"
1198
            CC_SEARCH_FLAGS=""
1199
            LD_SEARCH_FLAGS=""
1200
            ;;
1201
        HP-UX-*.11.*)
1202
            # Use updated header definitions where possible
1203
            AC_DEFINE(_XOPEN_SOURCE)          # Use the XOPEN network library
1204
            AC_DEFINE(_XOPEN_SOURCE_EXTENDED) # Use the XOPEN network library
1205
            LIBS="$LIBS -lxnet"               # Use the XOPEN network library
1206
 
1207
            if test "`uname -m`" = "ia64" ; then
1208
                SHLIB_SUFFIX=".so"
1209
            else
1210
                SHLIB_SUFFIX=".sl"
1211
            fi
1212
            AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
1213
            if test "$tcl_ok" = yes; then
1214
                SHLIB_CFLAGS="+z"
1215
                SHLIB_LD="ld -b"
1216
                SHLIB_LD_LIBS='${LIBS}'
1217
                DL_OBJS="tclLoadShl.o"
1218
                DL_LIBS="-ldld"
1219
                LDFLAGS="$LDFLAGS -Wl,-E"
1220
                CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
1221
                LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
1222
                LD_LIBRARY_PATH_VAR="SHLIB_PATH"
1223
            fi
1224
            if test "$GCC" = "yes" ; then
1225
                SHLIB_LD="gcc -shared"
1226
                SHLIB_LD_LIBS='${LIBS}'
1227
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1228
            fi
1229
 
1230
            # Users may want PA-RISC 1.1/2.0 portable code - needs HP cc
1231
            #CFLAGS="$CFLAGS +DAportable"
1232
 
1233
            # Check to enable 64-bit flags for compiler/linker
1234
            if test "$do64bit" = "yes" ; then
1235
                if test "$GCC" = "yes" ; then
1236
                    hpux_arch=`${CC} -dumpmachine`
1237
                    case $hpux_arch in
1238
                        hppa64*)
1239
                            # 64-bit gcc in use.  Fix flags for GNU ld.
1240
                            do64bit_ok=yes
1241
                            SHLIB_LD="${CC} -shared"
1242
                            SHLIB_LD_LIBS='${LIBS}'
1243
                            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1244
                            LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1245
                            ;;
1246
                        *)
1247
                            AC_MSG_WARN([64bit mode not supported with GCC on $system])
1248
                            ;;
1249
                    esac
1250
                else
1251
                    do64bit_ok=yes
1252
                    CFLAGS="$CFLAGS +DD64"
1253
                    LDFLAGS="$LDFLAGS +DD64"
1254
                fi
1255
            fi
1256
            ;;
1257
        HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
1258
            SHLIB_SUFFIX=".sl"
1259
            AC_CHECK_LIB(dld, shl_load, tcl_ok=yes, tcl_ok=no)
1260
            if test "$tcl_ok" = yes; then
1261
                SHLIB_CFLAGS="+z"
1262
                SHLIB_LD="ld -b"
1263
                SHLIB_LD_LIBS=""
1264
                DL_OBJS="tclLoadShl.o"
1265
                DL_LIBS="-ldld"
1266
                LDFLAGS="$LDFLAGS -Wl,-E"
1267
                CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
1268
                LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
1269
                LD_LIBRARY_PATH_VAR="SHLIB_PATH"
1270
            fi
1271
            ;;
1272
        IRIX-4.*)
1273
            SHLIB_CFLAGS="-G 0"
1274
            SHLIB_SUFFIX=".a"
1275
            SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
1276
            SHLIB_LD_LIBS='${LIBS}'
1277
            DL_OBJS="tclLoadAout.o"
1278
            DL_LIBS=""
1279
            LDFLAGS="$LDFLAGS -Wl,-D,08000000"
1280
            CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1281
            LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1282
            SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
1283
            ;;
1284
        IRIX-5.*)
1285
            SHLIB_CFLAGS=""
1286
            SHLIB_LD="ld -shared -rdata_shared"
1287
            SHLIB_LD_LIBS='${LIBS}'
1288
            SHLIB_SUFFIX=".so"
1289
            DL_OBJS="tclLoadDl.o"
1290
            DL_LIBS=""
1291
            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1292
            LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
1293
            ;;
1294
        IRIX-6.*)
1295
            SHLIB_CFLAGS=""
1296
            SHLIB_LD="ld -n32 -shared -rdata_shared"
1297
            SHLIB_LD_LIBS='${LIBS}'
1298
            SHLIB_SUFFIX=".so"
1299
            DL_OBJS="tclLoadDl.o"
1300
            DL_LIBS=""
1301
            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1302
            LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
1303
            if test "$GCC" = "yes" ; then
1304
                CFLAGS="$CFLAGS -mabi=n32"
1305
                LDFLAGS="$LDFLAGS -mabi=n32"
1306
            else
1307
                case $system in
1308
                    IRIX-6.3)
1309
                        # Use to build 6.2 compatible binaries on 6.3.
1310
                        CFLAGS="$CFLAGS -n32 -D_OLD_TERMIOS"
1311
                        ;;
1312
                    *)
1313
                        CFLAGS="$CFLAGS -n32"
1314
                        ;;
1315
                esac
1316
                LDFLAGS="$LDFLAGS -n32"
1317
            fi
1318
            ;;
1319
        IRIX64-6.*)
1320
            SHLIB_CFLAGS=""
1321
            SHLIB_LD="ld -n32 -shared -rdata_shared"
1322
            SHLIB_LD_LIBS='${LIBS}'
1323
            SHLIB_SUFFIX=".so"
1324
            DL_OBJS="tclLoadDl.o"
1325
            DL_LIBS=""
1326
            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1327
            LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
1328
 
1329
            # Check to enable 64-bit flags for compiler/linker
1330
 
1331
            if test "$do64bit" = "yes" ; then
1332
                if test "$GCC" = "yes" ; then
1333
                    AC_MSG_WARN([64bit mode not supported by gcc])
1334
                else
1335
                    do64bit_ok=yes
1336
                    SHLIB_LD="ld -64 -shared -rdata_shared"
1337
                    CFLAGS="$CFLAGS -64"
1338
                    LDFLAGS="$LDFLAGS -64"
1339
                fi
1340
            fi
1341
            ;;
1342
        Linux*)
1343
            SHLIB_CFLAGS="-fPIC"
1344
            SHLIB_LD_LIBS='${LIBS}'
1345
            SHLIB_SUFFIX=".so"
1346
 
1347
            CFLAGS_OPTIMIZE=-O2
1348
            # egcs-2.91.66 on Redhat Linux 6.0 generates lots of warnings
1349
            # when you inline the string and math operations.  Turn this off to
1350
            # get rid of the warnings.
1351
            #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
1352
 
1353
            if test "$have_dl" = yes; then
1354
                SHLIB_LD='${CC} -shared ${CFLAGS} ${LDFLAGS}'
1355
                DL_OBJS="tclLoadDl.o"
1356
                DL_LIBS="-ldl"
1357
                LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
1358
                CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1359
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1360
            else
1361
                AC_CHECK_HEADER(dld.h, [
1362
                    SHLIB_LD="ld -shared"
1363
                    DL_OBJS="tclLoadDld.o"
1364
                    DL_LIBS="-ldld"
1365
                    CC_SEARCH_FLAGS=""
1366
                    LD_SEARCH_FLAGS=""])
1367
            fi
1368
            if test "`uname -m`" = "alpha" ; then
1369
                CFLAGS="$CFLAGS -mieee"
1370
            fi
1371
            if test $do64bit = yes; then
1372
                AC_CACHE_CHECK([if compiler accepts -m64 flag], tcl_cv_cc_m64, [
1373
                    hold_cflags=$CFLAGS
1374
                    CFLAGS="$CFLAGS -m64"
1375
                    AC_TRY_LINK(,, tcl_cv_cc_m64=yes, tcl_cv_cc_m64=no)
1376
                    CFLAGS=$hold_cflags])
1377
                if test $tcl_cv_cc_m64 = yes; then
1378
                    CFLAGS="$CFLAGS -m64"
1379
                    do64bit_ok=yes
1380
                fi
1381
            fi
1382
 
1383
            # The combo of gcc + glibc has a bug related
1384
            # to inlining of functions like strtod(). The
1385
            # -fno-builtin flag should address this problem
1386
            # but it does not work. The -fno-inline flag
1387
            # is kind of overkill but it works.
1388
            # Disable inlining only when one of the
1389
            # files in compat/*.c is being linked in.
1390
            if test x"${LIBOBJS}" != x ; then
1391
                CFLAGS="$CFLAGS -fno-inline"
1392
            fi
1393
 
1394
            # XIM peeking works under XFree86.
1395
            AC_DEFINE(PEEK_XCLOSEIM)
1396
 
1397
            ;;
1398
        GNU*)
1399
            SHLIB_CFLAGS="-fPIC"
1400
            SHLIB_LD_LIBS='${LIBS}'
1401
            SHLIB_SUFFIX=".so"
1402
 
1403
            if test "$have_dl" = yes; then
1404
                SHLIB_LD="${CC} -shared"
1405
                DL_OBJS=""
1406
                DL_LIBS="-ldl"
1407
                LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
1408
                CC_SEARCH_FLAGS=""
1409
                LD_SEARCH_FLAGS=""
1410
            else
1411
                AC_CHECK_HEADER(dld.h, [
1412
                    SHLIB_LD="ld -shared"
1413
                    DL_OBJS=""
1414
                    DL_LIBS="-ldld"
1415
                    CC_SEARCH_FLAGS=""
1416
                    LD_SEARCH_FLAGS=""])
1417
            fi
1418
            if test "`uname -m`" = "alpha" ; then
1419
                CFLAGS="$CFLAGS -mieee"
1420
            fi
1421
            ;;
1422
        Lynx*)
1423
            SHLIB_CFLAGS="-fPIC"
1424
            SHLIB_LD_LIBS='${LIBS}'
1425
            SHLIB_SUFFIX=".so"
1426
            CFLAGS_OPTIMIZE=-02
1427
            SHLIB_LD="${CC} -shared "
1428
            DL_OBJS="tclLoadDl.o"
1429
            DL_LIBS="-mshared -ldl"
1430
            LD_FLAGS="-Wl,--export-dynamic"
1431
            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1432
            LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1433
            ;;
1434
        MP-RAS-02*)
1435
            SHLIB_CFLAGS="-K PIC"
1436
            SHLIB_LD="cc -G"
1437
            SHLIB_LD_LIBS=""
1438
            SHLIB_SUFFIX=".so"
1439
            DL_OBJS="tclLoadDl.o"
1440
            DL_LIBS="-ldl"
1441
            CC_SEARCH_FLAGS=""
1442
            LD_SEARCH_FLAGS=""
1443
            ;;
1444
        MP-RAS-*)
1445
            SHLIB_CFLAGS="-K PIC"
1446
            SHLIB_LD="cc -G"
1447
            SHLIB_LD_LIBS=""
1448
            SHLIB_SUFFIX=".so"
1449
            DL_OBJS="tclLoadDl.o"
1450
            DL_LIBS="-ldl"
1451
            LDFLAGS="$LDFLAGS -Wl,-Bexport"
1452
            CC_SEARCH_FLAGS=""
1453
            LD_SEARCH_FLAGS=""
1454
            ;;
1455
        NetBSD-*|FreeBSD-[[1-2]].*)
1456
            # Not available on all versions:  check for include file.
1457
            AC_CHECK_HEADER(dlfcn.h, [
1458
                # NetBSD/SPARC needs -fPIC, -fpic will not do.
1459
                SHLIB_CFLAGS="-fPIC"
1460
                SHLIB_LD="ld -Bshareable -x"
1461
                SHLIB_LD_LIBS='${LIBS}'
1462
                SHLIB_SUFFIX=".so"
1463
                DL_OBJS="tclLoadDl.o"
1464
                DL_LIBS=""
1465
                CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1466
                LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
1467
                AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
1468
                    AC_EGREP_CPP(yes, [
1469
#ifdef __ELF__
1470
        yes
1471
#endif
1472
                    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
1473
                if test $tcl_cv_ld_elf = yes; then
1474
                    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
1475
                else
1476
                    SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
1477
                fi
1478
            ], [
1479
                SHLIB_CFLAGS=""
1480
                SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
1481
                SHLIB_LD_LIBS='${LIBS}'
1482
                SHLIB_SUFFIX=".a"
1483
                DL_OBJS="tclLoadAout.o"
1484
                DL_LIBS=""
1485
                CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1486
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1487
                SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
1488
            ])
1489
 
1490
            # FreeBSD doesn't handle version numbers with dots.
1491
 
1492
            UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
1493
            TCL_LIB_VERSIONS_OK=nodots
1494
            ;;
1495
        OpenBSD-*)
1496
            case `arch -s` in
1497
            m88k|vax)
1498
                SHLIB_CFLAGS=""
1499
                SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r"
1500
                SHLIB_LD_LIBS='${LIBS}'
1501
                SHLIB_SUFFIX=".a"
1502
                DL_OBJS="tclLoadAout.o"
1503
                DL_LIBS=""
1504
                LDFLAGS=""
1505
                CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1506
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1507
                SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
1508
                ;;
1509
            *)
1510
                # OpenBSD/SPARC[64] needs -fPIC, -fpic will not do.
1511
                case `machine` in
1512
                sparc|sparc64)
1513
                    SHLIB_CFLAGS="-fPIC";;
1514
                *)
1515
                    SHLIB_CFLAGS="-fpic";;
1516
                esac
1517
                SHLIB_LD="${CC} -shared ${SHLIB_CFLAGS}"
1518
                SHLIB_LD_LIBS='${LIBS}'
1519
                SHLIB_SUFFIX=".so"
1520
                DL_OBJS="tclLoadDl.o"
1521
                DL_LIBS=""
1522
                CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1523
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1524
                SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
1525
                AC_CACHE_CHECK([for ELF], tcl_cv_ld_elf, [
1526
                    AC_EGREP_CPP(yes, [
1527
#ifdef __ELF__
1528
        yes
1529
#endif
1530
                    ], tcl_cv_ld_elf=yes, tcl_cv_ld_elf=no)])
1531
                if test $tcl_cv_ld_elf = yes; then
1532
                    LDFLAGS=-Wl,-export-dynamic
1533
                else
1534
                    LDFLAGS=""
1535
                fi
1536
                ;;
1537
            esac
1538
 
1539
            # OpenBSD doesn't do version numbers with dots.
1540
            UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
1541
            TCL_LIB_VERSIONS_OK=nodots
1542
            ;;
1543
        FreeBSD-*)
1544
            # FreeBSD 3.* and greater have ELF.
1545
            SHLIB_CFLAGS="-fPIC"
1546
            SHLIB_LD="ld -Bshareable -x"
1547
            SHLIB_LD_LIBS='${LIBS}'
1548
            SHLIB_SUFFIX=".so"
1549
            DL_OBJS="tclLoadDl.o"
1550
            DL_LIBS=""
1551
            LDFLAGS="$LDFLAGS -export-dynamic"
1552
            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1553
            LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
1554
            if test "${TCL_THREADS}" = "1" ; then
1555
                # The -pthread needs to go in the CFLAGS, not LIBS
1556
                LIBS=`echo $LIBS | sed s/-pthread//`
1557
                CFLAGS="$CFLAGS -pthread"
1558
                LDFLAGS="$LDFLAGS -pthread"
1559
            fi
1560
            case $system in
1561
            FreeBSD-3.*)
1562
                # FreeBSD-3 doesn't handle version numbers with dots.
1563
                UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
1564
                SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
1565
                TCL_LIB_VERSIONS_OK=nodots
1566
                ;;
1567
            esac
1568
            ;;
1569
        Darwin-*)
1570
            CFLAGS_OPTIMIZE="-Os"
1571
            SHLIB_CFLAGS="-fno-common"
1572
            # To avoid discrepancies between what headers configure sees during
1573
            # preprocessing tests and compiling tests, move any -isysroot and
1574
            # -mmacosx-version-min flags from CFLAGS to CPPFLAGS:
1575
            CPPFLAGS="${CPPFLAGS} `echo " ${CFLAGS}" | \
1576
                awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
1577
                if ([$]i~/^(isysroot|mmacosx-version-min)/) print "-"[$]i}'`"
1578
            CFLAGS="`echo " ${CFLAGS}" | \
1579
                awk 'BEGIN {FS=" +-";ORS=" "}; {for (i=2;i<=NF;i++) \
1580
                if (!([$]i~/^(isysroot|mmacosx-version-min)/)) print "-"[$]i}'`"
1581
            if test $do64bit = yes; then
1582
                case `arch` in
1583
                    ppc)
1584
                        AC_CACHE_CHECK([if compiler accepts -arch ppc64 flag],
1585
                                tcl_cv_cc_arch_ppc64, [
1586
                            hold_cflags=$CFLAGS
1587
                            CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
1588
                            AC_TRY_LINK(,, tcl_cv_cc_arch_ppc64=yes,
1589
                                    tcl_cv_cc_arch_ppc64=no)
1590
                            CFLAGS=$hold_cflags])
1591
                        if test $tcl_cv_cc_arch_ppc64 = yes; then
1592
                            CFLAGS="$CFLAGS -arch ppc64 -mpowerpc64 -mcpu=G5"
1593
                            do64bit_ok=yes
1594
                        fi;;
1595
                    i386)
1596
                        AC_CACHE_CHECK([if compiler accepts -arch x86_64 flag],
1597
                                tcl_cv_cc_arch_x86_64, [
1598
                            hold_cflags=$CFLAGS
1599
                            CFLAGS="$CFLAGS -arch x86_64"
1600
                            AC_TRY_LINK(,, tcl_cv_cc_arch_x86_64=yes,
1601
                                    tcl_cv_cc_arch_x86_64=no)
1602
                            CFLAGS=$hold_cflags])
1603
                        if test $tcl_cv_cc_arch_x86_64 = yes; then
1604
                            CFLAGS="$CFLAGS -arch x86_64"
1605
                            do64bit_ok=yes
1606
                        fi;;
1607
                    *)
1608
                        AC_MSG_WARN([Don't know how enable 64-bit on architecture `arch`]);;
1609
                esac
1610
            else
1611
                # Check for combined 32-bit and 64-bit fat build
1612
                echo "$CFLAGS " | grep -E -q -- '-arch (ppc64|x86_64) ' && \
1613
                    echo "$CFLAGS " | grep -E -q -- '-arch (ppc|i386) ' && \
1614
                    fat_32_64=yes
1615
            fi
1616
            SHLIB_LD='${CC} -dynamiclib ${CFLAGS} ${LDFLAGS}'
1617
            AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
1618
                hold_ldflags=$LDFLAGS
1619
                LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
1620
                AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
1621
                LDFLAGS=$hold_ldflags])
1622
            if test $tcl_cv_ld_single_module = yes; then
1623
                SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
1624
            fi
1625
            SHLIB_LD_LIBS='${LIBS}'
1626
            SHLIB_SUFFIX=".dylib"
1627
            DL_OBJS="tclLoadDyld.o"
1628
            DL_LIBS=""
1629
            # Don't use -prebind when building for Mac OS X 10.4 or later only:
1630
            test "`echo "${MACOSX_DEPLOYMENT_TARGET}" | awk -F '10\\.' '{print int([$]2)}'`" -lt 4 -a \
1631
                "`echo "${CPPFLAGS}" | awk -F '-mmacosx-version-min=10\\.' '{print int([$]2)}'`" -lt 4 && \
1632
                LDFLAGS="$LDFLAGS -prebind"
1633
            LDFLAGS="$LDFLAGS -headerpad_max_install_names"
1634
            AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
1635
                hold_ldflags=$LDFLAGS
1636
                LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
1637
                AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
1638
                LDFLAGS=$hold_ldflags])
1639
            if test $tcl_cv_ld_search_paths_first = yes; then
1640
                LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
1641
            fi
1642
            CC_SEARCH_FLAGS=""
1643
            LD_SEARCH_FLAGS=""
1644
            LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
1645
            PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
1646
            PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
1647
            AC_MSG_CHECKING([whether to use CoreFoundation])
1648
            AC_ARG_ENABLE(corefoundation, [  --enable-corefoundation use CoreFoundation API [--enable-corefoundation]],
1649
                [tcl_corefoundation=$enableval], [tcl_corefoundation=yes])
1650
            AC_MSG_RESULT([$tcl_corefoundation])
1651
            if test $tcl_corefoundation = yes; then
1652
                AC_CACHE_CHECK([for CoreFoundation.framework], tcl_cv_lib_corefoundation, [
1653
                    hold_libs=$LIBS
1654
                    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
1655
                        # On Tiger there is no 64-bit CF, so remove 64-bit archs
1656
                        # from CFLAGS et al. while testing for presence of CF.
1657
                        # 64-bit CF is disabled in tclUnixPort.h if necessary.
1658
                        eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc64 / /g" -e "s/-arch x86_64 / /g"`"'
1659
                    done; fi
1660
                    LIBS="$LIBS -framework CoreFoundation"
1661
                    AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>],
1662
                        [CFBundleRef b = CFBundleGetMainBundle();],
1663
                        tcl_cv_lib_corefoundation=yes, tcl_cv_lib_corefoundation=no)
1664
                    if test "$fat_32_64" = yes; then for v in CFLAGS CPPFLAGS LDFLAGS; do
1665
                        eval $v'="$hold_'$v'"'
1666
                    done; fi; LIBS=$hold_libs])
1667
                if test $tcl_cv_lib_corefoundation = yes; then
1668
                    LIBS="$LIBS -framework CoreFoundation"
1669
                    AC_DEFINE(HAVE_COREFOUNDATION)
1670
                else
1671
                    tcl_corefoundation=no
1672
                fi
1673
                if test "$fat_32_64" = yes -a $tcl_corefoundation = yes; then
1674
                    AC_CACHE_CHECK([for 64-bit CoreFoundation], tcl_cv_lib_corefoundation_64, [
1675
                        for v in CFLAGS CPPFLAGS LDFLAGS; do
1676
                            eval 'hold_'$v'="$'$v'";'$v'="`echo "$'$v' "|sed -e "s/-arch ppc / /g" -e "s/-arch i386 / /g"`"'
1677
                        done
1678
                        AC_TRY_LINK([#include <CoreFoundation/CoreFoundation.h>],
1679
                            [CFBundleRef b = CFBundleGetMainBundle();],
1680
                            tcl_cv_lib_corefoundation_64=yes, tcl_cv_lib_corefoundation_64=no)
1681
                        for v in CFLAGS CPPFLAGS LDFLAGS; do
1682
                            eval $v'="$hold_'$v'"'
1683
                        done])
1684
                    if test $tcl_cv_lib_corefoundation_64 = no; then
1685
                        AC_DEFINE(NO_COREFOUNDATION_64)
1686
                    fi
1687
                fi
1688
            fi
1689
            AC_DEFINE(MAC_OSX_TCL)
1690
            ;;
1691
        NEXTSTEP-*)
1692
            SHLIB_CFLAGS=""
1693
            SHLIB_LD="cc -nostdlib -r"
1694
            SHLIB_LD_LIBS=""
1695
            SHLIB_SUFFIX=".so"
1696
            DL_OBJS="tclLoadNext.o"
1697
            DL_LIBS=""
1698
            CC_SEARCH_FLAGS=""
1699
            LD_SEARCH_FLAGS=""
1700
            ;;
1701
        OS/390-*)
1702
            CFLAGS_OPTIMIZE=""          # Optimizer is buggy
1703
            AC_DEFINE(_OE_SOCKETS)      # needed in sys/socket.h
1704
            ;;
1705
        OSF1-1.0|OSF1-1.1|OSF1-1.2)
1706
            # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
1707
            SHLIB_CFLAGS=""
1708
            # Hack: make package name same as library name
1709
            SHLIB_LD='ld -R -export $@:'
1710
            SHLIB_LD_LIBS=""
1711
            SHLIB_SUFFIX=".so"
1712
            DL_OBJS="tclLoadOSF.o"
1713
            DL_LIBS=""
1714
            CC_SEARCH_FLAGS=""
1715
            LD_SEARCH_FLAGS=""
1716
            ;;
1717
        OSF1-1.*)
1718
            # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
1719
            SHLIB_CFLAGS="-fPIC"
1720
            if test "$SHARED_BUILD" = "1" ; then
1721
                SHLIB_LD="ld -shared"
1722
            else
1723
                SHLIB_LD="ld -non_shared"
1724
            fi
1725
            SHLIB_LD_LIBS=""
1726
            SHLIB_SUFFIX=".so"
1727
            DL_OBJS="tclLoadDl.o"
1728
            DL_LIBS=""
1729
            CC_SEARCH_FLAGS=""
1730
            LD_SEARCH_FLAGS=""
1731
            ;;
1732
        OSF1-V*)
1733
            # Digital OSF/1
1734
            SHLIB_CFLAGS=""
1735
            if test "$SHARED_BUILD" = "1" ; then
1736
                SHLIB_LD='ld -shared -expect_unresolved "*"'
1737
            else
1738
                SHLIB_LD='ld -non_shared -expect_unresolved "*"'
1739
            fi
1740
            SHLIB_LD_LIBS=""
1741
            SHLIB_SUFFIX=".so"
1742
            DL_OBJS="tclLoadDl.o"
1743
            DL_LIBS=""
1744
            CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
1745
            LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
1746
            if test "$GCC" = "yes" ; then
1747
                CFLAGS="$CFLAGS -mieee"
1748
            else
1749
                CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"
1750
            fi
1751
            # see pthread_intro(3) for pthread support on osf1, k.furukawa
1752
            if test "${TCL_THREADS}" = "1" ; then
1753
                CFLAGS="$CFLAGS -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
1754
                CFLAGS="$CFLAGS -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
1755
                LIBS=`echo $LIBS | sed s/-lpthreads//`
1756
                if test "$GCC" = "yes" ; then
1757
                    LIBS="$LIBS -lpthread -lmach -lexc"
1758
                else
1759
                    CFLAGS="$CFLAGS -pthread"
1760
                    LDFLAGS="$LDFLAGS -pthread"
1761
                fi
1762
            fi
1763
 
1764
            ;;
1765
        QNX-6*)
1766
            # QNX RTP
1767
            # This may work for all QNX, but it was only reported for v6.
1768
            SHLIB_CFLAGS="-fPIC"
1769
            SHLIB_LD="ld -Bshareable -x"
1770
            SHLIB_LD_LIBS=""
1771
            SHLIB_SUFFIX=".so"
1772
            DL_OBJS="tclLoadDl.o"
1773
            # dlopen is in -lc on QNX
1774
            DL_LIBS=""
1775
            CC_SEARCH_FLAGS=""
1776
            LD_SEARCH_FLAGS=""
1777
            ;;
1778
        RISCos-*)
1779
            SHLIB_CFLAGS="-G 0"
1780
            SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
1781
            SHLIB_LD_LIBS='${LIBS}'
1782
            SHLIB_SUFFIX=".a"
1783
            DL_OBJS="tclLoadAout.o"
1784
            DL_LIBS=""
1785
            LDFLAGS="$LDFLAGS -Wl,-D,08000000"
1786
            CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1787
            LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1788
            ;;
1789
        SCO_SV-3.2*)
1790
            # Note, dlopen is available only on SCO 3.2.5 and greater. However,
1791
            # this test works, since "uname -s" was non-standard in 3.2.4 and
1792
            # below.
1793
            if test "$GCC" = "yes" ; then
1794
                SHLIB_CFLAGS="-fPIC -melf"
1795
                LDFLAGS="$LDFLAGS -melf -Wl,-Bexport"
1796
            else
1797
                SHLIB_CFLAGS="-Kpic -belf"
1798
                LDFLAGS="$LDFLAGS -belf -Wl,-Bexport"
1799
            fi
1800
            SHLIB_LD="ld -G"
1801
            SHLIB_LD_LIBS=""
1802
            SHLIB_SUFFIX=".so"
1803
            DL_OBJS="tclLoadDl.o"
1804
            DL_LIBS=""
1805
            CC_SEARCH_FLAGS=""
1806
            LD_SEARCH_FLAGS=""
1807
            ;;
1808
        SINIX*5.4*)
1809
            SHLIB_CFLAGS="-K PIC"
1810
            SHLIB_LD="cc -G"
1811
            SHLIB_LD_LIBS=""
1812
            SHLIB_SUFFIX=".so"
1813
            DL_OBJS="tclLoadDl.o"
1814
            DL_LIBS="-ldl"
1815
            CC_SEARCH_FLAGS=""
1816
            LD_SEARCH_FLAGS=""
1817
            ;;
1818
        SunOS-4*)
1819
            SHLIB_CFLAGS="-PIC"
1820
            SHLIB_LD="ld"
1821
            SHLIB_LD_LIBS=""
1822
            SHLIB_SUFFIX=".so"
1823
            DL_OBJS="tclLoadDl.o"
1824
            DL_LIBS="-ldl"
1825
            CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1826
            LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1827
 
1828
            # SunOS can't handle version numbers with dots in them in library
1829
            # specs, like -ltcl7.5, so use -ltcl75 instead.  Also, it
1830
            # requires an extra version number at the end of .so file names.
1831
            # So, the library has to have a name like libtcl75.so.1.0
1832
 
1833
            SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
1834
            UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.a'
1835
            TCL_LIB_VERSIONS_OK=nodots
1836
            ;;
1837
        SunOS-5.[[0-6]])
1838
            # Careful to not let 5.10+ fall into this case
1839
 
1840
            # Note: If _REENTRANT isn't defined, then Solaris
1841
            # won't define thread-safe library routines.
1842
 
1843
            AC_DEFINE(_REENTRANT)
1844
            AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
1845
 
1846
            SHLIB_CFLAGS="-KPIC"
1847
 
1848
            # Note: need the LIBS below, otherwise Tk won't find Tcl's
1849
            # symbols when dynamically loaded into tclsh.
1850
 
1851
            SHLIB_LD_LIBS='${LIBS}'
1852
            SHLIB_SUFFIX=".so"
1853
            DL_OBJS="tclLoadDl.o"
1854
            DL_LIBS="-ldl"
1855
            if test "$GCC" = "yes" ; then
1856
                SHLIB_LD="$CC -shared"
1857
                CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1858
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1859
            else
1860
                SHLIB_LD="/usr/ccs/bin/ld -G -z text"
1861
                CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
1862
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1863
            fi
1864
            ;;
1865
        SunOS-5*)
1866
            # Note: If _REENTRANT isn't defined, then Solaris
1867
            # won't define thread-safe library routines.
1868
 
1869
            AC_DEFINE(_REENTRANT)
1870
            AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
1871
 
1872
            SHLIB_CFLAGS="-KPIC"
1873
 
1874
            # Check to enable 64-bit flags for compiler/linker
1875
            if test "$do64bit" = "yes" ; then
1876
                arch=`isainfo`
1877
                if test "$arch" = "sparcv9 sparc" ; then
1878
                        if test "$GCC" = "yes" ; then
1879
                            if test "`gcc -dumpversion | awk -F. '{print [$]1}'`" -lt "3" ; then
1880
                                AC_MSG_WARN([64bit mode not supported with GCC < 3.2 on $system])
1881
                            else
1882
                                do64bit_ok=yes
1883
                                CFLAGS="$CFLAGS -m64 -mcpu=v9"
1884
                                LDFLAGS="$LDFLAGS -m64 -mcpu=v9"
1885
                                SHLIB_CFLAGS="-fPIC"
1886
                            fi
1887
                        else
1888
                            do64bit_ok=yes
1889
                            if test "$do64bitVIS" = "yes" ; then
1890
                                CFLAGS="$CFLAGS -xarch=v9a"
1891
                                LDFLAGS="$LDFLAGS -xarch=v9a"
1892
                            else
1893
                                CFLAGS="$CFLAGS -xarch=v9"
1894
                                LDFLAGS="$LDFLAGS -xarch=v9"
1895
                            fi
1896
                            # Solaris 64 uses this as well
1897
                            #LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH_64"
1898
                        fi
1899
                elif test "$arch" = "amd64 i386" ; then
1900
                    if test "$GCC" = "yes" ; then
1901
                        AC_MSG_WARN([64bit mode not supported with GCC on $system])
1902
                    else
1903
                        do64bit_ok=yes
1904
                        CFLAGS="$CFLAGS -xarch=amd64"
1905
                        LDFLAGS="$LDFLAGS -xarch=amd64"
1906
                    fi
1907
                else
1908
                    AC_MSG_WARN([64bit mode not supported for $arch])
1909
                fi
1910
            fi
1911
 
1912
            # Note: need the LIBS below, otherwise Tk won't find Tcl's
1913
            # symbols when dynamically loaded into tclsh.
1914
 
1915
            SHLIB_LD_LIBS='${LIBS}'
1916
            SHLIB_SUFFIX=".so"
1917
            DL_OBJS="tclLoadDl.o"
1918
            DL_LIBS="-ldl"
1919
            if test "$GCC" = "yes" ; then
1920
                SHLIB_LD="$CC -shared"
1921
                CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1922
                LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1923
                if test "$do64bit_ok" = "yes" ; then
1924
                    # We need to specify -static-libgcc or we need to
1925
                    # add the path to the sparv9 libgcc.
1926
                    SHLIB_LD="$SHLIB_LD -m64 -mcpu=v9 -static-libgcc"
1927
                    # for finding sparcv9 libgcc, get the regular libgcc
1928
                    # path, remove so name and append 'sparcv9'
1929
                    #v9gcclibdir="`gcc -print-file-name=libgcc_s.so` | ..."
1930
                    #CC_SEARCH_FLAGS="${CC_SEARCH_FLAGS},-R,$v9gcclibdir"
1931
                fi
1932
            else
1933
                case $system in
1934
                    SunOS-5.[[1-9]][[0-9]]*)
1935
                        SHLIB_LD='${CC} -G -z text';;
1936
                    *)
1937
                        SHLIB_LD="/usr/ccs/bin/ld -G -z text";;
1938
                esac
1939
                CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
1940
                LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
1941
            fi
1942
            ;;
1943
        ULTRIX-4.*)
1944
            SHLIB_CFLAGS="-G 0"
1945
            SHLIB_SUFFIX=".a"
1946
            SHLIB_LD="echo tclLdAout $CC \{$SHLIB_CFLAGS\} | `pwd`/tclsh -r -G 0"
1947
            SHLIB_LD_LIBS='${LIBS}'
1948
            DL_OBJS="tclLoadAout.o"
1949
            DL_LIBS=""
1950
            LDFLAGS="$LDFLAGS -Wl,-D,08000000"
1951
            CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
1952
            LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
1953
            if test "$GCC" != "yes" ; then
1954
                CFLAGS="$CFLAGS -DHAVE_TZSET -std1"
1955
            fi
1956
            ;;
1957
        UNIX_SV* | UnixWare-5*)
1958
            SHLIB_CFLAGS="-KPIC"
1959
            SHLIB_LD="cc -G"
1960
            SHLIB_LD_LIBS=""
1961
            SHLIB_SUFFIX=".so"
1962
            DL_OBJS="tclLoadDl.o"
1963
            DL_LIBS="-ldl"
1964
            # Some UNIX_SV* systems (unixware 1.1.2 for example) have linkers
1965
            # that don't grok the -Bexport option.  Test that it does.
1966
            AC_CACHE_CHECK([for ld accepts -Bexport flag], tcl_cv_ld_Bexport, [
1967
                hold_ldflags=$LDFLAGS
1968
                LDFLAGS="$LDFLAGS -Wl,-Bexport"
1969
                AC_TRY_LINK(, [int i;], tcl_cv_ld_Bexport=yes, tcl_cv_ld_Bexport=no)
1970
                LDFLAGS=$hold_ldflags])
1971
            if test $tcl_cv_ld_Bexport = yes; then
1972
                LDFLAGS="$LDFLAGS -Wl,-Bexport"
1973
            fi
1974
            CC_SEARCH_FLAGS=""
1975
            LD_SEARCH_FLAGS=""
1976
            ;;
1977
    esac
1978
 
1979
    if test "$do64bit" = "yes" -a "$do64bit_ok" = "no" ; then
1980
        AC_MSG_WARN([64bit support being disabled -- don't know magic for this platform])
1981
    fi
1982
 
1983
dnl # Add any CPPFLAGS set in the environment to our CFLAGS, but delay doing so
1984
dnl # until the end of configure, as configure's compile and link tests use
1985
dnl # both CPPFLAGS and CFLAGS (unlike our compile and link) but configure's
1986
dnl # preprocessing tests use only CPPFLAGS.
1987
    SC_CONFIG_COMMANDS_PRE([CFLAGS="${CFLAGS} ${CPPFLAGS}"; CPPFLAGS=""])
1988
 
1989
    # Step 4: If pseudo-static linking is in use (see K. B. Kenny, "Dynamic
1990
    # Loading for Tcl -- What Became of It?".  Proc. 2nd Tcl/Tk Workshop,
1991
    # New Orleans, LA, Computerized Processes Unlimited, 1994), then we need
1992
    # to determine which of several header files defines the a.out file
1993
    # format (a.out.h, sys/exec.h, or sys/exec_aout.h).  At present, we
1994
    # support only a file format that is more or less version-7-compatible.
1995
    # In particular,
1996
    #   - a.out files must begin with `struct exec'.
1997
    #   - the N_TXTOFF on the `struct exec' must compute the seek address
1998
    #     of the text segment
1999
    #   - The `struct exec' must contain a_magic, a_text, a_data, a_bss
2000
    #     and a_entry fields.
2001
    # The following compilation should succeed if and only if either sys/exec.h
2002
    # or a.out.h is usable for the purpose.
2003
    #
2004
    # Note that the modified COFF format used on MIPS Ultrix 4.x is usable; the
2005
    # `struct exec' includes a second header that contains information that
2006
    # duplicates the v7 fields that are needed.
2007
 
2008
    if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
2009
        AC_CACHE_CHECK([sys/exec.h], tcl_cv_sysexec_h, [
2010
        AC_TRY_COMPILE([#include <sys/exec.h>],[
2011
            struct exec foo;
2012
            unsigned long seek;
2013
            int flag;
2014
#if defined(__mips) || defined(mips)
2015
            seek = N_TXTOFF (foo.ex_f, foo.ex_o);
2016
#else
2017
            seek = N_TXTOFF (foo);
2018
#endif
2019
            flag = (foo.a_magic == OMAGIC);
2020
            return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
2021
    ], tcl_cv_sysexec_h=usable, tcl_cv_sysexec_h=unusable)])
2022
        if test $tcl_cv_sysexec_h = usable; then
2023
            AC_DEFINE(USE_SYS_EXEC_H)
2024
        else
2025
            AC_CACHE_CHECK([a.out.h], tcl_cv_aout_h, [
2026
            AC_TRY_COMPILE([#include <a.out.h>],[
2027
                struct exec foo;
2028
                unsigned long seek;
2029
                int flag;
2030
#if defined(__mips) || defined(mips)
2031
                seek = N_TXTOFF (foo.ex_f, foo.ex_o);
2032
#else
2033
                seek = N_TXTOFF (foo);
2034
#endif
2035
                flag = (foo.a_magic == OMAGIC);
2036
                return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
2037
            ], tcl_cv_aout_h=usable, tcl_cv_aout_h=unusable)])
2038
            if test $tcl_cv_aout_h = usable; then
2039
                AC_DEFINE(USE_A_OUT_H)
2040
            else
2041
                AC_CACHE_CHECK([sys/exec_aout.h], tcl_cv_sysexecaout_h, [
2042
                AC_TRY_COMPILE([#include <sys/exec_aout.h>],[
2043
                    struct exec foo;
2044
                    unsigned long seek;
2045
                    int flag;
2046
#if defined(__mips) || defined(mips)
2047
                    seek = N_TXTOFF (foo.ex_f, foo.ex_o);
2048
#else
2049
                    seek = N_TXTOFF (foo);
2050
#endif
2051
                    flag = (foo.a_midmag == OMAGIC);
2052
                    return foo.a_text + foo.a_data + foo.a_bss + foo.a_entry;
2053
                ], tcl_cv_sysexecaout_h=usable, tcl_cv_sysexecaout_h=unusable)])
2054
                if test $tcl_cv_sysexecaout_h = usable; then
2055
                    AC_DEFINE(USE_SYS_EXEC_AOUT_H)
2056
                else
2057
                    DL_OBJS=""
2058
                fi
2059
            fi
2060
        fi
2061
    fi
2062
 
2063
    # Step 5: disable dynamic loading if requested via a command-line switch.
2064
 
2065
    AC_ARG_ENABLE(load, [  --disable-load          disallow dynamic loading and "load" command],
2066
        [tcl_ok=$enableval], [tcl_ok=yes])
2067
    if test "$tcl_ok" = "no"; then
2068
        DL_OBJS=""
2069
    fi
2070
 
2071
    if test "x$DL_OBJS" != "x" ; then
2072
        BUILD_DLTEST="\$(DLTEST_TARGETS)"
2073
    else
2074
        echo "Can't figure out how to do dynamic loading or shared libraries"
2075
        echo "on this system."
2076
        SHLIB_CFLAGS=""
2077
        SHLIB_LD=""
2078
        SHLIB_SUFFIX=""
2079
        DL_OBJS="tclLoadNone.o"
2080
        DL_LIBS=""
2081
        LDFLAGS="$LDFLAGS_ORIG"
2082
        CC_SEARCH_FLAGS=""
2083
        LD_SEARCH_FLAGS=""
2084
        BUILD_DLTEST=""
2085
    fi
2086
 
2087
    # If we're running gcc, then change the C flags for compiling shared
2088
    # libraries to the right flags for gcc, instead of those for the
2089
    # standard manufacturer compiler.
2090
 
2091
    if test "$DL_OBJS" != "tclLoadNone.o" ; then
2092
        if test "$GCC" = "yes" ; then
2093
            case $system in
2094
                AIX-*)
2095
                    ;;
2096
                BSD/OS*)
2097
                    ;;
2098
                IRIX*)
2099
                    ;;
2100
                NetBSD-*|FreeBSD-*|OpenBSD-*)
2101
                    ;;
2102
                Darwin-*)
2103
                    ;;
2104
                RISCos-*)
2105
                    ;;
2106
                SCO_SV-3.2*)
2107
                    ;;
2108
                ULTRIX-4.*)
2109
                    ;;
2110
                *)
2111
                    SHLIB_CFLAGS="-fPIC"
2112
                    ;;
2113
            esac
2114
        fi
2115
    fi
2116
 
2117
    if test "$SHARED_LIB_SUFFIX" = "" ; then
2118
        SHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}${SHLIB_SUFFIX}'
2119
    fi
2120
    if test "$UNSHARED_LIB_SUFFIX" = "" ; then
2121
        UNSHARED_LIB_SUFFIX='${VERSION}\$\{DBGX\}.a'
2122
    fi
2123
 
2124
    if test "${SHARED_BUILD}" = "1" && test "${SHLIB_SUFFIX}" != "" ; then
2125
        LIB_SUFFIX=${SHARED_LIB_SUFFIX}
2126
        MAKE_LIB='${SHLIB_LD} -o [$]@ ${OBJS} ${SHLIB_LD_LIBS} ${TCL_SHLIB_LD_EXTRAS} ${TK_SHLIB_LD_EXTRAS} ${LD_SEARCH_FLAGS}'
2127
        INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
2128
    else
2129
        LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}
2130
 
2131
        if test "$RANLIB" = "" ; then
2132
            MAKE_LIB='$(STLIB_LD) [$]@ ${OBJS}'
2133
            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE)'
2134
        else
2135
            MAKE_LIB='${STLIB_LD} [$]@ ${OBJS} ; ${RANLIB} [$]@'
2136
            INSTALL_LIB='$(INSTALL_LIBRARY) $(LIB_FILE) $(LIB_INSTALL_DIR)/$(LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(LIB_FILE))'
2137
        fi
2138
 
2139
dnl        Not at all clear what this was doing in Tcl's configure.in
2140
dnl        or why it was needed was needed. In any event, this sort of
2141
dnl        things needs to be done in the big loop above.
2142
dnl        REMOVE THIS BLOCK LATER! (mdejong)
2143
dnl        case $system in
2144
dnl            BSD/OS*)
2145
dnl                ;;
2146
dnl            AIX-[[1-4]].*)
2147
dnl                ;;
2148
dnl            *)
2149
dnl                SHLIB_LD_LIBS=""
2150
dnl                ;;
2151
dnl        esac
2152
    fi
2153
 
2154
 
2155
    # Stub lib does not depend on shared/static configuration
2156
    if test "$RANLIB" = "" ; then
2157
        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS}'
2158
        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE)'
2159
    else
2160
        MAKE_STUB_LIB='${STLIB_LD} [$]@ ${STUB_LIB_OBJS} ; ${RANLIB} [$]@'
2161
        INSTALL_STUB_LIB='$(INSTALL_LIBRARY) $(STUB_LIB_FILE) $(LIB_INSTALL_DIR)/$(STUB_LIB_FILE) ; (cd $(LIB_INSTALL_DIR) ; $(RANLIB) $(STUB_LIB_FILE))'
2162
    fi
2163
 
2164
 
2165
    AC_SUBST(DL_LIBS)
2166
 
2167
    AC_SUBST(DL_OBJS)
2168
    AC_SUBST(PLAT_OBJS)
2169
    AC_SUBST(PLAT_SRCS)
2170
    AC_SUBST(CFLAGS)
2171
    AC_SUBST(CFLAGS_DEBUG)
2172
    AC_SUBST(CFLAGS_OPTIMIZE)
2173
    AC_SUBST(CFLAGS_WARNING)
2174
 
2175
    AC_SUBST(LDFLAGS)
2176
    AC_SUBST(LDFLAGS_DEBUG)
2177
    AC_SUBST(LDFLAGS_OPTIMIZE)
2178
    AC_SUBST(CC_SEARCH_FLAGS)
2179
    AC_SUBST(LD_SEARCH_FLAGS)
2180
 
2181
    AC_SUBST(STLIB_LD)
2182
    AC_SUBST(SHLIB_LD)
2183
    AC_SUBST(TCL_SHLIB_LD_EXTRAS)
2184
    AC_SUBST(TK_SHLIB_LD_EXTRAS)
2185
    AC_SUBST(SHLIB_LD_LIBS)
2186
    AC_SUBST(SHLIB_CFLAGS)
2187
    AC_SUBST(SHLIB_SUFFIX)
2188
 
2189
    AC_SUBST(MAKE_LIB)
2190
    AC_SUBST(MAKE_STUB_LIB)
2191
    AC_SUBST(INSTALL_LIB)
2192
    AC_SUBST(INSTALL_STUB_LIB)
2193
    AC_SUBST(RANLIB)
2194
])
2195
 
2196
#--------------------------------------------------------------------
2197
# SC_SERIAL_PORT
2198
#
2199
#       Determine which interface to use to talk to the serial port.
2200
#       Note that #include lines must begin in leftmost column for
2201
#       some compilers to recognize them as preprocessor directives,
2202
#       and some build environments have stdin not pointing at a
2203
#       pseudo-terminal (usually /dev/null instead.)
2204
#
2205
# Arguments:
2206
#       none
2207
#
2208
# Results:
2209
#
2210
#       Defines only one of the following vars:
2211
#               HAVE_SYS_MODEM_H
2212
#               USE_TERMIOS
2213
#               USE_TERMIO
2214
#               USE_SGTTY
2215
#
2216
#--------------------------------------------------------------------
2217
 
2218
AC_DEFUN([SC_SERIAL_PORT], [
2219
    AC_CHECK_HEADERS(sys/modem.h)
2220
    AC_CACHE_CHECK([termios vs. termio vs. sgtty], tcl_cv_api_serial, [
2221
    AC_TRY_RUN([
2222
#include <termios.h>
2223
 
2224
int main() {
2225
    struct termios t;
2226
    if (tcgetattr(0, &t) == 0) {
2227
        cfsetospeed(&t, 0);
2228
        t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
2229
        return 0;
2230
    }
2231
    return 1;
2232
}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2233
    if test $tcl_cv_api_serial = no ; then
2234
        AC_TRY_RUN([
2235
#include <termio.h>
2236
 
2237
int main() {
2238
    struct termio t;
2239
    if (ioctl(0, TCGETA, &t) == 0) {
2240
        t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
2241
        return 0;
2242
    }
2243
    return 1;
2244
}], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2245
    fi
2246
    if test $tcl_cv_api_serial = no ; then
2247
        AC_TRY_RUN([
2248
#include <sgtty.h>
2249
 
2250
int main() {
2251
    struct sgttyb t;
2252
    if (ioctl(0, TIOCGETP, &t) == 0) {
2253
        t.sg_ospeed = 0;
2254
        t.sg_flags |= ODDP | EVENP | RAW;
2255
        return 0;
2256
    }
2257
    return 1;
2258
}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2259
    fi
2260
    if test $tcl_cv_api_serial = no ; then
2261
        AC_TRY_RUN([
2262
#include <termios.h>
2263
#include <errno.h>
2264
 
2265
int main() {
2266
    struct termios t;
2267
    if (tcgetattr(0, &t) == 0
2268
        || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2269
        cfsetospeed(&t, 0);
2270
        t.c_cflag |= PARENB | PARODD | CSIZE | CSTOPB;
2271
        return 0;
2272
    }
2273
    return 1;
2274
}], tcl_cv_api_serial=termios, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2275
    fi
2276
    if test $tcl_cv_api_serial = no; then
2277
        AC_TRY_RUN([
2278
#include <termio.h>
2279
#include <errno.h>
2280
 
2281
int main() {
2282
    struct termio t;
2283
    if (ioctl(0, TCGETA, &t) == 0
2284
        || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2285
        t.c_cflag |= CBAUD | PARENB | PARODD | CSIZE | CSTOPB;
2286
        return 0;
2287
    }
2288
    return 1;
2289
    }], tcl_cv_api_serial=termio, tcl_cv_api_serial=no, tcl_cv_api_serial=no)
2290
    fi
2291
    if test $tcl_cv_api_serial = no; then
2292
        AC_TRY_RUN([
2293
#include <sgtty.h>
2294
#include <errno.h>
2295
 
2296
int main() {
2297
    struct sgttyb t;
2298
    if (ioctl(0, TIOCGETP, &t) == 0
2299
        || errno == ENOTTY || errno == ENXIO || errno == EINVAL) {
2300
        t.sg_ospeed = 0;
2301
        t.sg_flags |= ODDP | EVENP | RAW;
2302
        return 0;
2303
    }
2304
    return 1;
2305
}], tcl_cv_api_serial=sgtty, tcl_cv_api_serial=none, tcl_cv_api_serial=none)
2306
    fi])
2307
    case $tcl_cv_api_serial in
2308
        termios) AC_DEFINE(USE_TERMIOS);;
2309
        termio)  AC_DEFINE(USE_TERMIO);;
2310
        sgtty)   AC_DEFINE(USE_SGTTY);;
2311
    esac
2312
])
2313
 
2314
#--------------------------------------------------------------------
2315
# SC_MISSING_POSIX_HEADERS
2316
#
2317
#       Supply substitutes for missing POSIX header files.  Special
2318
#       notes:
2319
#           - stdlib.h doesn't define strtol, strtoul, or
2320
#             strtod insome versions of SunOS
2321
#           - some versions of string.h don't declare procedures such
2322
#             as strstr
2323
#
2324
# Arguments:
2325
#       none
2326
#
2327
# Results:
2328
#
2329
#       Defines some of the following vars:
2330
#               NO_DIRENT_H
2331
#               NO_ERRNO_H
2332
#               NO_VALUES_H
2333
#               HAVE_LIMITS_H or NO_LIMITS_H
2334
#               NO_STDLIB_H
2335
#               NO_STRING_H
2336
#               NO_SYS_WAIT_H
2337
#               NO_DLFCN_H
2338
#               HAVE_UNISTD_H
2339
#               HAVE_SYS_PARAM_H
2340
#
2341
#               HAVE_STRING_H ?
2342
#
2343
#--------------------------------------------------------------------
2344
 
2345
AC_DEFUN([SC_MISSING_POSIX_HEADERS], [
2346
    AC_CACHE_CHECK([dirent.h], tcl_cv_dirent_h, [
2347
    AC_TRY_LINK([#include <sys/types.h>
2348
#include <dirent.h>], [
2349
#ifndef _POSIX_SOURCE
2350
#   ifdef __Lynx__
2351
        /*
2352
         * Generate compilation error to make the test fail:  Lynx headers
2353
         * are only valid if really in the POSIX environment.
2354
         */
2355
 
2356
        missing_procedure();
2357
#   endif
2358
#endif
2359
DIR *d;
2360
struct dirent *entryPtr;
2361
char *p;
2362
d = opendir("foobar");
2363
entryPtr = readdir(d);
2364
p = entryPtr->d_name;
2365
closedir(d);
2366
], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no)])
2367
 
2368
    if test $tcl_cv_dirent_h = no; then
2369
        AC_DEFINE(NO_DIRENT_H)
2370
    fi
2371
 
2372
    AC_CHECK_HEADER(errno.h, , [AC_DEFINE(NO_ERRNO_H)])
2373
    AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H)])
2374
    AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H)])
2375
    AC_CHECK_HEADER(limits.h,
2376
        [AC_DEFINE(HAVE_LIMITS_H)], [AC_DEFINE(NO_LIMITS_H)])
2377
    AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
2378
    AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
2379
    AC_EGREP_HEADER(strtoul, stdlib.h, , tcl_ok=0)
2380
    AC_EGREP_HEADER(strtod, stdlib.h, , tcl_ok=0)
2381
    if test $tcl_ok = 0; then
2382
        AC_DEFINE(NO_STDLIB_H)
2383
    fi
2384
    AC_CHECK_HEADER(string.h, tcl_ok=1, tcl_ok=0)
2385
    AC_EGREP_HEADER(strstr, string.h, , tcl_ok=0)
2386
    AC_EGREP_HEADER(strerror, string.h, , tcl_ok=0)
2387
 
2388
    # See also memmove check below for a place where NO_STRING_H can be
2389
    # set and why.
2390
 
2391
    if test $tcl_ok = 0; then
2392
        AC_DEFINE(NO_STRING_H)
2393
    fi
2394
 
2395
    AC_CHECK_HEADER(sys/wait.h, , [AC_DEFINE(NO_SYS_WAIT_H)])
2396
    AC_CHECK_HEADER(dlfcn.h, , [AC_DEFINE(NO_DLFCN_H)])
2397
 
2398
    # OS/390 lacks sys/param.h (and doesn't need it, by chance).
2399
    AC_HAVE_HEADERS(unistd.h sys/param.h)
2400
])
2401
 
2402
#--------------------------------------------------------------------
2403
# SC_PATH_X
2404
#
2405
#       Locate the X11 header files and the X11 library archive.  Try
2406
#       the ac_path_x macro first, but if it doesn't find the X stuff
2407
#       (e.g. because there's no xmkmf program) then check through
2408
#       a list of possible directories.  Under some conditions the
2409
#       autoconf macro will return an include directory that contains
2410
#       no include files, so double-check its result just to be safe.
2411
#
2412
# Arguments:
2413
#       none
2414
#
2415
# Results:
2416
#
2417
#       Sets the the following vars:
2418
#               XINCLUDES
2419
#               XLIBSW
2420
#
2421
#--------------------------------------------------------------------
2422
 
2423
AC_DEFUN([SC_PATH_X], [
2424
    AC_PATH_X
2425
    not_really_there=""
2426
    if test "$no_x" = ""; then
2427
        if test "$x_includes" = ""; then
2428
            AC_TRY_CPP([#include <X11/XIntrinsic.h>], , not_really_there="yes")
2429
        else
2430
            if test ! -r $x_includes/X11/Intrinsic.h; then
2431
                not_really_there="yes"
2432
            fi
2433
        fi
2434
    fi
2435
    if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
2436
        AC_MSG_CHECKING([for X11 header files])
2437
        found_xincludes="no"
2438
        AC_TRY_CPP([#include <X11/Intrinsic.h>], found_xincludes="yes", found_xincludes="no")
2439
        if test "$found_xincludes" = "no"; then
2440
            dirs="/usr/unsupported/include /usr/local/include /usr/X386/include /usr/X11R6/include /usr/X11R5/include /usr/include/X11R5 /usr/include/X11R4 /usr/openwin/include /usr/X11/include /usr/sww/include"
2441
            for i in $dirs ; do
2442
                if test -r $i/X11/Intrinsic.h; then
2443
                    AC_MSG_RESULT([$i])
2444
                    XINCLUDES=" -I$i"
2445
                    found_xincludes="yes"
2446
                    break
2447
                fi
2448
            done
2449
        fi
2450
    else
2451
        if test "$x_includes" != ""; then
2452
            XINCLUDES="-I$x_includes"
2453
            found_xincludes="yes"
2454
        fi
2455
    fi
2456
    if test found_xincludes = "no"; then
2457
        AC_MSG_RESULT([couldn't find any!])
2458
    fi
2459
 
2460
    if test "$no_x" = yes; then
2461
        AC_MSG_CHECKING([for X11 libraries])
2462
        XLIBSW=nope
2463
        dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
2464
        for i in $dirs ; do
2465
            if test -r $i/libX11.a -o -r $i/libX11.so -o -r $i/libX11.sl; then
2466
                AC_MSG_RESULT([$i])
2467
                XLIBSW="-L$i -lX11"
2468
                x_libraries="$i"
2469
                break
2470
            fi
2471
        done
2472
    else
2473
        if test "$x_libraries" = ""; then
2474
            XLIBSW=-lX11
2475
        else
2476
            XLIBSW="-L$x_libraries -lX11"
2477
        fi
2478
    fi
2479
    if test "$XLIBSW" = nope ; then
2480
        AC_CHECK_LIB(Xwindow, XCreateWindow, XLIBSW=-lXwindow)
2481
    fi
2482
    if test "$XLIBSW" = nope ; then
2483
        AC_MSG_RESULT([could not find any!  Using -lX11.])
2484
        XLIBSW=-lX11
2485
    fi
2486
])
2487
 
2488
#--------------------------------------------------------------------
2489
# SC_BLOCKING_STYLE
2490
#
2491
#       The statements below check for systems where POSIX-style
2492
#       non-blocking I/O (O_NONBLOCK) doesn't work or is unimplemented.
2493
#       On these systems (mostly older ones), use the old BSD-style
2494
#       FIONBIO approach instead.
2495
#
2496
# Arguments:
2497
#       none
2498
#
2499
# Results:
2500
#
2501
#       Defines some of the following vars:
2502
#               HAVE_SYS_IOCTL_H
2503
#               HAVE_SYS_FILIO_H
2504
#               USE_FIONBIO
2505
#               O_NONBLOCK
2506
#
2507
#--------------------------------------------------------------------
2508
 
2509
AC_DEFUN([SC_BLOCKING_STYLE], [
2510
    AC_CHECK_HEADERS(sys/ioctl.h)
2511
    AC_CHECK_HEADERS(sys/filio.h)
2512
    SC_CONFIG_SYSTEM
2513
    AC_MSG_CHECKING([FIONBIO vs. O_NONBLOCK for nonblocking I/O])
2514
    case $system in
2515
        # There used to be code here to use FIONBIO under AIX.  However, it
2516
        # was reported that FIONBIO doesn't work under AIX 3.2.5.  Since
2517
        # using O_NONBLOCK seems fine under AIX 4.*, I removed the FIONBIO
2518
        # code (JO, 5/31/97).
2519
 
2520
        OSF*)
2521
            AC_DEFINE(USE_FIONBIO)
2522
            AC_MSG_RESULT([FIONBIO])
2523
            ;;
2524
        SunOS-4*)
2525
            AC_DEFINE(USE_FIONBIO)
2526
            AC_MSG_RESULT([FIONBIO])
2527
            ;;
2528
        ULTRIX-4.*)
2529
            AC_DEFINE(USE_FIONBIO)
2530
            AC_MSG_RESULT([FIONBIO])
2531
            ;;
2532
        *)
2533
            AC_MSG_RESULT([O_NONBLOCK])
2534
            ;;
2535
    esac
2536
])
2537
 
2538
#--------------------------------------------------------------------
2539
# SC_TIME_HANLDER
2540
#
2541
#       Checks how the system deals with time.h, what time structures
2542
#       are used on the system, and what fields the structures have.
2543
#
2544
# Arguments:
2545
#       none
2546
#
2547
# Results:
2548
#
2549
#       Defines some of the following vars:
2550
#               USE_DELTA_FOR_TZ
2551
#               HAVE_TM_GMTOFF
2552
#               HAVE_TM_TZADJ
2553
#               HAVE_TIMEZONE_VAR
2554
#
2555
#--------------------------------------------------------------------
2556
 
2557
AC_DEFUN([SC_TIME_HANDLER], [
2558
    AC_CHECK_HEADERS(sys/time.h)
2559
    AC_HEADER_TIME
2560
    AC_STRUCT_TIMEZONE
2561
 
2562
    AC_CHECK_FUNCS(gmtime_r localtime_r)
2563
 
2564
    AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
2565
        AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
2566
            tcl_cv_member_tm_tzadj=yes, tcl_cv_member_tm_tzadj=no)])
2567
    if test $tcl_cv_member_tm_tzadj = yes ; then
2568
        AC_DEFINE(HAVE_TM_TZADJ)
2569
    fi
2570
 
2571
    AC_CACHE_CHECK([tm_gmtoff in struct tm], tcl_cv_member_tm_gmtoff, [
2572
        AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_gmtoff;],
2573
            tcl_cv_member_tm_gmtoff=yes, tcl_cv_member_tm_gmtoff=no)])
2574
    if test $tcl_cv_member_tm_gmtoff = yes ; then
2575
        AC_DEFINE(HAVE_TM_GMTOFF)
2576
    fi
2577
 
2578
    #
2579
    # Its important to include time.h in this check, as some systems
2580
    # (like convex) have timezone functions, etc.
2581
    #
2582
    AC_CACHE_CHECK([long timezone variable], tcl_cv_timezone_long, [
2583
        AC_TRY_COMPILE([#include <time.h>],
2584
            [extern long timezone;
2585
            timezone += 1;
2586
            exit (0);],
2587
            tcl_cv_timezone_long=yes, tcl_cv_timezone_long=no)])
2588
    if test $tcl_cv_timezone_long = yes ; then
2589
        AC_DEFINE(HAVE_TIMEZONE_VAR)
2590
    else
2591
        #
2592
        # On some systems (eg IRIX 6.2), timezone is a time_t and not a long.
2593
        #
2594
        AC_CACHE_CHECK([time_t timezone variable], tcl_cv_timezone_time, [
2595
            AC_TRY_COMPILE([#include <time.h>],
2596
                [extern time_t timezone;
2597
                timezone += 1;
2598
                exit (0);],
2599
                tcl_cv_timezone_time=yes, tcl_cv_timezone_time=no)])
2600
        if test $tcl_cv_timezone_time = yes ; then
2601
            AC_DEFINE(HAVE_TIMEZONE_VAR)
2602
        fi
2603
    fi
2604
])
2605
 
2606
#--------------------------------------------------------------------
2607
# SC_BUGGY_STRTOD
2608
#
2609
#       Under Solaris 2.4, strtod returns the wrong value for the
2610
#       terminating character under some conditions.  Check for this
2611
#       and if the problem exists use a substitute procedure
2612
#       "fixstrtod" (provided by Tcl) that corrects the error.
2613
#       Also, on Compaq's Tru64 Unix 5.0,
2614
#       strtod(" ") returns 0.0 instead of a failure to convert.
2615
#
2616
# Arguments:
2617
#       none
2618
#
2619
# Results:
2620
#
2621
#       Might defines some of the following vars:
2622
#               strtod (=fixstrtod)
2623
#
2624
#--------------------------------------------------------------------
2625
 
2626
AC_DEFUN([SC_BUGGY_STRTOD], [
2627
    AC_CHECK_FUNC(strtod, tcl_strtod=1, tcl_strtod=0)
2628
    if test "$tcl_strtod" = 1; then
2629
        AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
2630
            AC_TRY_RUN([
2631
                extern double strtod();
2632
                int main() {
2633
                    char *infString="Inf", *nanString="NaN", *spaceString=" ";
2634
                    char *term;
2635
                    double value;
2636
                    value = strtod(infString, &term);
2637
                    if ((term != infString) && (term[-1] == 0)) {
2638
                        exit(1);
2639
                    }
2640
                    value = strtod(nanString, &term);
2641
                    if ((term != nanString) && (term[-1] == 0)) {
2642
                        exit(1);
2643
                    }
2644
                    value = strtod(spaceString, &term);
2645
                    if (term == (spaceString+1)) {
2646
                        exit(1);
2647
                    }
2648
                    exit(0);
2649
                }], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy,
2650
                    tcl_cv_strtod_buggy=buggy)])
2651
        if test "$tcl_cv_strtod_buggy" = buggy; then
2652
            LIBOBJS="$LIBOBJS fixstrtod.o"
2653
            AC_DEFINE(strtod, fixstrtod)
2654
        fi
2655
    fi
2656
])
2657
 
2658
#--------------------------------------------------------------------
2659
# SC_TCL_LINK_LIBS
2660
#
2661
#       Search for the libraries needed to link the Tcl shell.
2662
#       Things like the math library (-lm) and socket stuff (-lsocket vs.
2663
#       -lnsl) are dealt with here.
2664
#
2665
# Arguments:
2666
#       Requires the following vars to be set in the Makefile:
2667
#               DL_LIBS
2668
#               LIBS
2669
#               MATH_LIBS
2670
#
2671
# Results:
2672
#
2673
#       Subst's the following var:
2674
#               TCL_LIBS
2675
#               MATH_LIBS
2676
#
2677
#       Might append to the following vars:
2678
#               LIBS
2679
#
2680
#       Might define the following vars:
2681
#               HAVE_NET_ERRNO_H
2682
#
2683
#--------------------------------------------------------------------
2684
 
2685
AC_DEFUN([SC_TCL_LINK_LIBS], [
2686
    #--------------------------------------------------------------------
2687
    # On a few very rare systems, all of the libm.a stuff is
2688
    # already in libc.a.  Set compiler flags accordingly.
2689
    # Also, Linux requires the "ieee" library for math to work
2690
    # right (and it must appear before "-lm").
2691
    #--------------------------------------------------------------------
2692
 
2693
    AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
2694
    AC_CHECK_LIB(ieee, main, [MATH_LIBS="-lieee $MATH_LIBS"])
2695
 
2696
    #--------------------------------------------------------------------
2697
    # Interactive UNIX requires -linet instead of -lsocket, plus it
2698
    # needs net/errno.h to define the socket-related error codes.
2699
    #--------------------------------------------------------------------
2700
 
2701
    AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
2702
    AC_CHECK_HEADER(net/errno.h, [AC_DEFINE(HAVE_NET_ERRNO_H)])
2703
 
2704
    #--------------------------------------------------------------------
2705
    #   Check for the existence of the -lsocket and -lnsl libraries.
2706
    #   The order here is important, so that they end up in the right
2707
    #   order in the command line generated by make.  Here are some
2708
    #   special considerations:
2709
    #   1. Use "connect" and "accept" to check for -lsocket, and
2710
    #      "gethostbyname" to check for -lnsl.
2711
    #   2. Use each function name only once:  can't redo a check because
2712
    #      autoconf caches the results of the last check and won't redo it.
2713
    #   3. Use -lnsl and -lsocket only if they supply procedures that
2714
    #      aren't already present in the normal libraries.  This is because
2715
    #      IRIX 5.2 has libraries, but they aren't needed and they're
2716
    #      bogus:  they goof up name resolution if used.
2717
    #   4. On some SVR4 systems, can't use -lsocket without -lnsl too.
2718
    #      To get around this problem, check for both libraries together
2719
    #      if -lsocket doesn't work by itself.
2720
    #--------------------------------------------------------------------
2721
 
2722
    tcl_checkBoth=0
2723
    AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
2724
    if test "$tcl_checkSocket" = 1; then
2725
        AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
2726
            LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
2727
    fi
2728
    if test "$tcl_checkBoth" = 1; then
2729
        tk_oldLibs=$LIBS
2730
        LIBS="$LIBS -lsocket -lnsl"
2731
        AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
2732
    fi
2733
    AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
2734
            [LIBS="$LIBS -lnsl"])])
2735
 
2736
    # Don't perform the eval of the libraries here because DL_LIBS
2737
    # won't be set until we call SC_CONFIG_CFLAGS
2738
 
2739
    TCL_LIBS='${DL_LIBS} ${LIBS} ${MATH_LIBS}'
2740
    AC_SUBST(TCL_LIBS)
2741
    AC_SUBST(MATH_LIBS)
2742
])
2743
 
2744
#--------------------------------------------------------------------
2745
# SC_TCL_EARLY_FLAGS
2746
#
2747
#       Check for what flags are needed to be passed so the correct OS
2748
#       features are available.
2749
#
2750
# Arguments:
2751
#       None
2752
#
2753
# Results:
2754
#
2755
#       Might define the following vars:
2756
#               _ISOC99_SOURCE
2757
#               _LARGEFILE64_SOURCE
2758
#               _LARGEFILE_SOURCE64
2759
#
2760
#--------------------------------------------------------------------
2761
 
2762
AC_DEFUN([SC_TCL_EARLY_FLAG],[
2763
    AC_CACHE_VAL([tcl_cv_flag_]translit($1,[A-Z],[a-z]),
2764
        AC_TRY_COMPILE([$2], $3, [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no,
2765
            AC_TRY_COMPILE([[#define ]$1[ 1
2766
]$2], $3,
2767
                [tcl_cv_flag_]translit($1,[A-Z],[a-z])=yes,
2768
                [tcl_cv_flag_]translit($1,[A-Z],[a-z])=no)))
2769
    if test ["x${tcl_cv_flag_]translit($1,[A-Z],[a-z])[}" = "xyes"] ; then
2770
        AC_DEFINE($1)
2771
        tcl_flags="$tcl_flags $1"
2772
    fi
2773
])
2774
 
2775
AC_DEFUN([SC_TCL_EARLY_FLAGS],[
2776
    AC_MSG_CHECKING([for required early compiler flags])
2777
    tcl_flags=""
2778
    SC_TCL_EARLY_FLAG(_ISOC99_SOURCE,[#include <stdlib.h>],
2779
        [char *p = (char *)strtoll; char *q = (char *)strtoull;])
2780
    SC_TCL_EARLY_FLAG(_LARGEFILE64_SOURCE,[#include <sys/stat.h>],
2781
        [struct stat64 buf; int i = stat64("/", &buf);])
2782
    SC_TCL_EARLY_FLAG(_LARGEFILE_SOURCE64,[#include <sys/stat.h>],
2783
        [char *p = (char *)open64;])
2784
    if test "x${tcl_flags}" = "x" ; then
2785
        AC_MSG_RESULT([none])
2786
    else
2787
        AC_MSG_RESULT([${tcl_flags}])
2788
    fi
2789
])
2790
 
2791
#--------------------------------------------------------------------
2792
# SC_TCL_64BIT_FLAGS
2793
#
2794
#       Check for what is defined in the way of 64-bit features.
2795
#
2796
# Arguments:
2797
#       None
2798
#
2799
# Results:
2800
#
2801
#       Might define the following vars:
2802
#               TCL_WIDE_INT_IS_LONG
2803
#               TCL_WIDE_INT_TYPE
2804
#               HAVE_STRUCT_DIRENT64
2805
#               HAVE_STRUCT_STAT64
2806
#               HAVE_TYPE_OFF64_T
2807
#
2808
#--------------------------------------------------------------------
2809
 
2810
AC_DEFUN([SC_TCL_64BIT_FLAGS], [
2811
    AC_MSG_CHECKING([for 64-bit integer type])
2812
    AC_CACHE_VAL(tcl_cv_type_64bit,[
2813
        tcl_cv_type_64bit=none
2814
        # See if the compiler knows natively about __int64
2815
        AC_TRY_COMPILE(,[__int64 value = (__int64) 0;],
2816
            tcl_type_64bit=__int64, tcl_type_64bit="long long")
2817
        # See if we should use long anyway  Note that we substitute in the
2818
        # type that is our current guess for a 64-bit type inside this check
2819
        # program, so it should be modified only carefully...
2820
        AC_TRY_COMPILE(,[switch (0) {
2821
            case 1: case (sizeof(]${tcl_type_64bit}[)==sizeof(long)): ;
2822
        }],tcl_cv_type_64bit=${tcl_type_64bit})])
2823
    if test "${tcl_cv_type_64bit}" = none ; then
2824
        AC_DEFINE(TCL_WIDE_INT_IS_LONG)
2825
        AC_MSG_RESULT([using long])
2826
    else
2827
        AC_DEFINE_UNQUOTED(TCL_WIDE_INT_TYPE,${tcl_cv_type_64bit})
2828
        AC_MSG_RESULT([${tcl_cv_type_64bit}])
2829
 
2830
        # Now check for auxiliary declarations
2831
        AC_CACHE_CHECK([for struct dirent64], tcl_cv_struct_dirent64,[
2832
            AC_TRY_COMPILE([#include <sys/types.h>
2833
#include <sys/dirent.h>],[struct dirent64 p;],
2834
                tcl_cv_struct_dirent64=yes,tcl_cv_struct_dirent64=no)])
2835
        if test "x${tcl_cv_struct_dirent64}" = "xyes" ; then
2836
            AC_DEFINE(HAVE_STRUCT_DIRENT64)
2837
        fi
2838
 
2839
        AC_CACHE_CHECK([for struct stat64], tcl_cv_struct_stat64,[
2840
            AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 p;
2841
],
2842
                tcl_cv_struct_stat64=yes,tcl_cv_struct_stat64=no)])
2843
        if test "x${tcl_cv_struct_stat64}" = "xyes" ; then
2844
            AC_DEFINE(HAVE_STRUCT_STAT64)
2845
        fi
2846
 
2847
        AC_CHECK_FUNCS(open64 lseek64)
2848
        AC_MSG_CHECKING([for off64_t])
2849
        AC_CACHE_VAL(tcl_cv_type_off64_t,[
2850
            AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
2851
],
2852
                tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
2853
        dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
2854
        dnl functions lseek64 and open64 are defined.
2855
        if test "x${tcl_cv_type_off64_t}" = "xyes" && \
2856
                test "x${ac_cv_func_lseek64}" = "xyes" && \
2857
                test "x${ac_cv_func_open64}" = "xyes" ; then
2858
            AC_DEFINE(HAVE_TYPE_OFF64_T)
2859
            AC_MSG_RESULT([yes])
2860
        else
2861
            AC_MSG_RESULT([no])
2862
        fi
2863
    fi
2864
])
2865
 
2866
#--------------------------------------------------------------------
2867
# SC_TCL_GETHOSTBYADDR_R
2868
#
2869
#       Check if we have MT-safe variant of gethostbyaddr().
2870
#
2871
# Arguments:
2872
#       None
2873
#
2874
# Results:
2875
#
2876
#       Might define the following vars:
2877
#               HAVE_GETHOSTBYADDR_R
2878
#               HAVE_GETHOSTBYADDR_R_7
2879
#               HAVE_GETHOSTBYADDR_R_8
2880
#
2881
#--------------------------------------------------------------------
2882
 
2883
AC_DEFUN([SC_TCL_GETHOSTBYADDR_R], [AC_CHECK_FUNC(gethostbyaddr_r, [
2884
    AC_CACHE_CHECK([for gethostbyaddr_r with 7 args], tcl_cv_api_gethostbyaddr_r_7, [
2885
    AC_TRY_COMPILE([
2886
        #include <netdb.h>
2887
    ], [
2888
        char *addr;
2889
        int length;
2890
        int type;
2891
        struct hostent *result;
2892
        char buffer[2048];
2893
        int buflen = 2048;
2894
        int h_errnop;
2895
 
2896
        (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
2897
                               &h_errnop);
2898
    ], tcl_cv_api_gethostbyaddr_r_7=yes, tcl_cv_api_gethostbyaddr_r_7=no)])
2899
    tcl_ok=$tcl_cv_api_gethostbyaddr_r_7
2900
    if test "$tcl_ok" = yes; then
2901
        AC_DEFINE(HAVE_GETHOSTBYADDR_R_7)
2902
    else
2903
        AC_CACHE_CHECK([for gethostbyaddr_r with 8 args], tcl_cv_api_gethostbyaddr_r_8, [
2904
        AC_TRY_COMPILE([
2905
            #include <netdb.h>
2906
        ], [
2907
            char *addr;
2908
            int length;
2909
            int type;
2910
            struct hostent *result, *resultp;
2911
            char buffer[2048];
2912
            int buflen = 2048;
2913
            int h_errnop;
2914
 
2915
            (void) gethostbyaddr_r(addr, length, type, result, buffer, buflen,
2916
                                   &resultp, &h_errnop);
2917
        ], tcl_cv_api_gethostbyaddr_r_8=yes, tcl_cv_api_gethostbyaddr_r_8=no)])
2918
        tcl_ok=$tcl_cv_api_gethostbyaddr_r_8
2919
        if test "$tcl_ok" = yes; then
2920
            AC_DEFINE(HAVE_GETHOSTBYADDR_R_8)
2921
        fi
2922
    fi
2923
    if test "$tcl_ok" = yes; then
2924
        AC_DEFINE(HAVE_GETHOSTBYADDR_R)
2925
    fi
2926
])])
2927
 
2928
#--------------------------------------------------------------------
2929
# SC_TCL_GETHOSTBYNAME_R
2930
#
2931
#       Check to see what variant of gethostbyname_r() we have.
2932
#       Based on David Arnold's example from the comp.programming.threads
2933
#       FAQ Q213
2934
#
2935
# Arguments:
2936
#       None
2937
#
2938
# Results:
2939
#
2940
#       Might define the following vars:
2941
#               HAVE_GETHOSTBYADDR_R
2942
#               HAVE_GETHOSTBYADDR_R_3
2943
#               HAVE_GETHOSTBYADDR_R_5
2944
#               HAVE_GETHOSTBYADDR_R_6
2945
#
2946
#--------------------------------------------------------------------
2947
 
2948
AC_DEFUN([SC_TCL_GETHOSTBYNAME_R], [AC_CHECK_FUNC(gethostbyname_r, [
2949
    AC_CACHE_CHECK([for gethostbyname_r with 6 args], tcl_cv_api_gethostbyname_r_6, [
2950
    AC_TRY_COMPILE([
2951
        #include <netdb.h>
2952
    ], [
2953
        char *name;
2954
        struct hostent *he, *res;
2955
        char buffer[2048];
2956
        int buflen = 2048;
2957
        int h_errnop;
2958
 
2959
        (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop);
2960
    ], tcl_cv_api_gethostbyname_r_6=yes, tcl_cv_api_gethostbyname_r_6=no)])
2961
    tcl_ok=$tcl_cv_api_gethostbyname_r_6
2962
    if test "$tcl_ok" = yes; then
2963
        AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
2964
    else
2965
        AC_CACHE_CHECK([for gethostbyname_r with 5 args], tcl_cv_api_gethostbyname_r_5, [
2966
        AC_TRY_COMPILE([
2967
            #include <netdb.h>
2968
        ], [
2969
            char *name;
2970
            struct hostent *he;
2971
            char buffer[2048];
2972
            int buflen = 2048;
2973
            int h_errnop;
2974
 
2975
            (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop);
2976
        ], tcl_cv_api_gethostbyname_r_5=yes, tcl_cv_api_gethostbyname_r_5=no)])
2977
        tcl_ok=$tcl_cv_api_gethostbyname_r_5
2978
        if test "$tcl_ok" = yes; then
2979
            AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
2980
        else
2981
            AC_CACHE_CHECK([for gethostbyname_r with 3 args], tcl_cv_api_gethostbyname_r_3, [
2982
            AC_TRY_COMPILE([
2983
                #include <netdb.h>
2984
            ], [
2985
                char *name;
2986
                struct hostent *he;
2987
                struct hostent_data data;
2988
 
2989
                (void) gethostbyname_r(name, he, &data);
2990
            ], tcl_cv_api_gethostbyname_r_3=yes, tcl_cv_api_gethostbyname_r_3=no)])
2991
            tcl_ok=$tcl_cv_api_gethostbyname_r_3
2992
            if test "$tcl_ok" = yes; then
2993
                AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
2994
            fi
2995
        fi
2996
    fi
2997
    if test "$tcl_ok" = yes; then
2998
        AC_DEFINE(HAVE_GETHOSTBYNAME_R)
2999
    fi
3000
])])
3001
 
3002
#--------------------------------------------------------------------
3003
# SC_TCL_GETPWUID_R
3004
#
3005
#       Check if we have MT-safe variant of getpwuid() and if yes,
3006
#       which one exactly.
3007
#
3008
# Arguments:
3009
#       None
3010
#
3011
# Results:
3012
#
3013
#       Might define the following vars:
3014
#               HAVE_GETPWUID_R
3015
#               HAVE_GETPWUID_R_4
3016
#               HAVE_GETPWUID_R_5
3017
#
3018
#--------------------------------------------------------------------
3019
 
3020
AC_DEFUN([SC_TCL_GETPWUID_R], [AC_CHECK_FUNC(getpwuid_r, [
3021
    AC_CACHE_CHECK([for getpwuid_r with 5 args], tcl_cv_api_getpwuid_r_5, [
3022
    AC_TRY_COMPILE([
3023
        #include <sys/types.h>
3024
        #include <pwd.h>
3025
    ], [
3026
        uid_t uid;
3027
        struct passwd pw, *pwp;
3028
        char buf[512];
3029
        int buflen = 512;
3030
 
3031
        (void) getpwuid_r(uid, &pw, buf, buflen, &pwp);
3032
    ], tcl_cv_api_getpwuid_r_5=yes, tcl_cv_api_getpwuid_r_5=no)])
3033
    tcl_ok=$tcl_cv_api_getpwuid_r_5
3034
    if test "$tcl_ok" = yes; then
3035
        AC_DEFINE(HAVE_GETPWUID_R_5)
3036
    else
3037
        AC_CACHE_CHECK([for getpwuid_r with 4 args], tcl_cv_api_getpwuid_r_4, [
3038
        AC_TRY_COMPILE([
3039
            #include <sys/types.h>
3040
            #include <pwd.h>
3041
        ], [
3042
            uid_t uid;
3043
            struct passwd pw;
3044
            char buf[512];
3045
            int buflen = 512;
3046
 
3047
            (void)getpwnam_r(uid, &pw, buf, buflen);
3048
        ], tcl_cv_api_getpwuid_r_4=yes, tcl_cv_api_getpwuid_r_4=no)])
3049
        tcl_ok=$tcl_cv_api_getpwuid_r_4
3050
        if test "$tcl_ok" = yes; then
3051
            AC_DEFINE(HAVE_GETPWUID_R_4)
3052
        fi
3053
    fi
3054
    if test "$tcl_ok" = yes; then
3055
        AC_DEFINE(HAVE_GETPWUID_R)
3056
    fi
3057
])])
3058
 
3059
#--------------------------------------------------------------------
3060
# SC_TCL_GETPWNAM_R
3061
#
3062
#       Check if we have MT-safe variant of getpwnam() and if yes,
3063
#       which one exactly.
3064
#
3065
# Arguments:
3066
#       None
3067
#
3068
# Results:
3069
#
3070
#       Might define the following vars:
3071
#               HAVE_GETPWNAM_R
3072
#               HAVE_GETPWNAM_R_4
3073
#               HAVE_GETPWNAM_R_5
3074
#
3075
#--------------------------------------------------------------------
3076
 
3077
AC_DEFUN([SC_TCL_GETPWNAM_R], [AC_CHECK_FUNC(getpwnam_r, [
3078
    AC_CACHE_CHECK([for getpwnam_r with 5 args], tcl_cv_api_getpwnam_r_5, [
3079
    AC_TRY_COMPILE([
3080
        #include <sys/types.h>
3081
        #include <pwd.h>
3082
    ], [
3083
        char *name;
3084
        struct passwd pw, *pwp;
3085
        char buf[512];
3086
        int buflen = 512;
3087
 
3088
        (void) getpwnam_r(name, &pw, buf, buflen, &pwp);
3089
    ], tcl_cv_api_getpwnam_r_5=yes, tcl_cv_api_getpwnam_r_5=no)])
3090
    tcl_ok=$tcl_cv_api_getpwnam_r_5
3091
    if test "$tcl_ok" = yes; then
3092
        AC_DEFINE(HAVE_GETPWNAM_R_5)
3093
    else
3094
        AC_CACHE_CHECK([for getpwnam_r with 4 args], tcl_cv_api_getpwnam_r_4, [
3095
        AC_TRY_COMPILE([
3096
            #include <sys/types.h>
3097
            #include <pwd.h>
3098
        ], [
3099
            char *name;
3100
            struct passwd pw;
3101
            char buf[512];
3102
            int buflen = 512;
3103
 
3104
            (void)getpwnam_r(name, &pw, buf, buflen);
3105
        ], tcl_cv_api_getpwnam_r_4=yes, tcl_cv_api_getpwnam_r_4=no)])
3106
        tcl_ok=$tcl_cv_api_getpwnam_r_4
3107
        if test "$tcl_ok" = yes; then
3108
            AC_DEFINE(HAVE_GETPWNAM_R_4)
3109
        fi
3110
    fi
3111
    if test "$tcl_ok" = yes; then
3112
        AC_DEFINE(HAVE_GETPWNAM_R)
3113
    fi
3114
])])
3115
 
3116
#--------------------------------------------------------------------
3117
# SC_TCL_GETGRGID_R
3118
#
3119
#       Check if we have MT-safe variant of getgrgid() and if yes,
3120
#       which one exactly.
3121
#
3122
# Arguments:
3123
#       None
3124
#
3125
# Results:
3126
#
3127
#       Might define the following vars:
3128
#               HAVE_GETGRGID_R
3129
#               HAVE_GETGRGID_R_4
3130
#               HAVE_GETGRGID_R_5
3131
#
3132
#--------------------------------------------------------------------
3133
 
3134
AC_DEFUN([SC_TCL_GETGRGID_R], [AC_CHECK_FUNC(getgrgid_r, [
3135
    AC_CACHE_CHECK([for getgrgid_r with 5 args], tcl_cv_api_getgrgid_r_5, [
3136
    AC_TRY_COMPILE([
3137
        #include <sys/types.h>
3138
        #include <grp.h>
3139
    ], [
3140
        gid_t gid;
3141
        struct group gr, *grp;
3142
        char buf[512];
3143
        int buflen = 512;
3144
 
3145
        (void) getgrgid_r(gid, &gr, buf, buflen, &grp);
3146
    ], tcl_cv_api_getgrgid_r_5=yes, tcl_cv_api_getgrgid_r_5=no)])
3147
    tcl_ok=$tcl_cv_api_getgrgid_r_5
3148
    if test "$tcl_ok" = yes; then
3149
        AC_DEFINE(HAVE_GETGRGID_R_5)
3150
    else
3151
        AC_CACHE_CHECK([for getgrgid_r with 4 args], tcl_cv_api_getgrgid_r_4, [
3152
        AC_TRY_COMPILE([
3153
            #include <sys/types.h>
3154
            #include <grp.h>
3155
        ], [
3156
            gid_t gid;
3157
            struct group gr;
3158
            char buf[512];
3159
            int buflen = 512;
3160
 
3161
            (void)getgrgid_r(gid, &gr, buf, buflen);
3162
        ], tcl_cv_api_getgrgid_r_4=yes, tcl_cv_api_getgrgid_r_4=no)])
3163
        tcl_ok=$tcl_cv_api_getgrgid_r_4
3164
        if test "$tcl_ok" = yes; then
3165
            AC_DEFINE(HAVE_GETGRGID_R_4)
3166
        fi
3167
    fi
3168
    if test "$tcl_ok" = yes; then
3169
        AC_DEFINE(HAVE_GETGRGID_R)
3170
    fi
3171
])])
3172
 
3173
#--------------------------------------------------------------------
3174
# SC_TCL_GETGRNAM_R
3175
#
3176
#       Check if we have MT-safe variant of getgrnam() and if yes,
3177
#       which one exactly.
3178
#
3179
# Arguments:
3180
#       None
3181
#
3182
# Results:
3183
#
3184
#       Might define the following vars:
3185
#               HAVE_GETGRNAM_R
3186
#               HAVE_GETGRNAM_R_4
3187
#               HAVE_GETGRNAM_R_5
3188
#
3189
#--------------------------------------------------------------------
3190
 
3191
AC_DEFUN([SC_TCL_GETGRNAM_R], [AC_CHECK_FUNC(getgrnam_r, [
3192
    AC_CACHE_CHECK([for getgrnam_r with 5 args], tcl_cv_api_getgrnam_r_5, [
3193
    AC_TRY_COMPILE([
3194
        #include <sys/types.h>
3195
        #include <grp.h>
3196
    ], [
3197
        char *name;
3198
        struct group gr, *grp;
3199
        char buf[512];
3200
        int buflen = 512;
3201
 
3202
        (void) getgrnam_r(name, &gr, buf, buflen, &grp);
3203
    ], tcl_cv_api_getgrnam_r_5=yes, tcl_cv_api_getgrnam_r_5=no)])
3204
    tcl_ok=$tcl_cv_api_getgrnam_r_5
3205
    if test "$tcl_ok" = yes; then
3206
        AC_DEFINE(HAVE_GETGRNAM_R_5)
3207
    else
3208
        AC_CACHE_CHECK([for getgrnam_r with 4 args], tcl_cv_api_getgrnam_r_4, [
3209
        AC_TRY_COMPILE([
3210
            #include <sys/types.h>
3211
            #include <grp.h>
3212
        ], [
3213
            char *name;
3214
            struct group gr;
3215
            char buf[512];
3216
            int buflen = 512;
3217
 
3218
            (void)getgrnam_r(name, &gr, buf, buflen);
3219
        ], tcl_cv_api_getgrnam_r_4=yes, tcl_cv_api_getgrnam_r_4=no)])
3220
        tcl_ok=$tcl_cv_api_getgrnam_r_4
3221
        if test "$tcl_ok" = yes; then
3222
            AC_DEFINE(HAVE_GETGRNAM_R_4)
3223
        fi
3224
    fi
3225
    if test "$tcl_ok" = yes; then
3226
        AC_DEFINE(HAVE_GETGRNAM_R)
3227
    fi
3228
])])
3229
 
3230
#--------------------------------------------------------------------
3231
# SC_CONFIG_COMMANDS_PRE(CMDS)
3232
#
3233
#       Replacement for autoconf 2.5x AC_COMMANDS_PRE:
3234
#               Commands to run right before config.status is
3235
#               created. Accumulates.
3236
#
3237
#       Requires presence of SC_OUTPUT_COMMANDS_PRE at the end
3238
#       of configure.in (right before AC_OUTPUT).
3239
#
3240
#--------------------------------------------------------------------
3241
 
3242
AC_DEFUN([SC_CONFIG_COMMANDS_PRE], [
3243
    define([SC_OUTPUT_COMMANDS_PRE], defn([SC_OUTPUT_COMMANDS_PRE])[$1
3244
])])
3245
AC_DEFUN([SC_OUTPUT_COMMANDS_PRE])
3246
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.