blob: 6fe1f946e7e6a9ee195ff4f25ca0eb4387ed29db [file] [log] [blame]
Steve Kondikae271bc2015-11-15 02:50:53 +01001dnl***************************************************************************
micky3879b9f5e72025-07-08 18:04:53 -04002dnl Copyright 2018-2023,2024 Thomas E. Dickey *
3dnl Copyright 2010-2017,2018 Free Software Foundation, Inc. *
Steve Kondikae271bc2015-11-15 02:50:53 +01004dnl *
5dnl Permission is hereby granted, free of charge, to any person obtaining a *
6dnl copy of this software and associated documentation files (the *
7dnl "Software"), to deal in the Software without restriction, including *
8dnl without limitation the rights to use, copy, modify, merge, publish, *
9dnl distribute, distribute with modifications, sublicense, and/or sell *
10dnl copies of the Software, and to permit persons to whom the Software is *
11dnl furnished to do so, subject to the following conditions: *
12dnl *
13dnl The above copyright notice and this permission notice shall be included *
14dnl in all copies or substantial portions of the Software. *
15dnl *
16dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
17dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
18dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
19dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
20dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
21dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
22dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
23dnl *
24dnl Except as contained in this notice, the name(s) of the above copyright *
25dnl holders shall not be used in advertising or otherwise to promote the *
26dnl sale, use or other dealings in this Software without prior written *
27dnl authorization. *
28dnl***************************************************************************
29dnl
30dnl Author: Thomas E. Dickey
31dnl
micky3879b9f5e72025-07-08 18:04:53 -040032dnl $Id: aclocal.m4,v 1.210 2024/03/30 22:17:13 tom Exp $
Steve Kondikae271bc2015-11-15 02:50:53 +010033dnl Macros used in NCURSES Ada95 auto-configuration script.
34dnl
35dnl These macros are maintained separately from NCURSES. The copyright on
36dnl this file applies to the aggregation of macros and does not affect use of
37dnl these macros in other applications.
38dnl
micky3879b9f5e72025-07-08 18:04:53 -040039dnl See these pages for additional information:
40dnl https://invisible-island.net/autoconf/
41dnl https://invisible-island.net/autoconf/my-autoconf.html
Steve Kondikae271bc2015-11-15 02:50:53 +010042dnl
43dnl ---------------------------------------------------------------------------
44dnl ---------------------------------------------------------------------------
45dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
46dnl ------------------
47dnl Conditionally generate script according to whether we're using a given autoconf.
48dnl
49dnl $1 = version to compare against
50dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
51dnl $3 = code to use if AC_ACVERSION is older than $1.
52define([CF_ACVERSION_CHECK],
53[
54ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
55ifdef([m4_version_compare],
56[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
57[CF_ACVERSION_COMPARE(
58AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
59AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
60dnl ---------------------------------------------------------------------------
61dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
62dnl --------------------
63dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
64dnl MAJOR2, MINOR2, TERNARY2,
65dnl PRINTABLE2, not FOUND, FOUND)
66define([CF_ACVERSION_COMPARE],
67[ifelse(builtin([eval], [$2 < $5]), 1,
68[ifelse([$8], , ,[$8])],
69[ifelse([$9], , ,[$9])])])dnl
70dnl ---------------------------------------------------------------------------
71dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07
72dnl -------------------
73dnl Construct the list of include-options for the C programs in the Ada95
74dnl binding.
75AC_DEFUN([CF_ADA_INCLUDE_DIRS],
76[
77ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
78if test "$srcdir" != "."; then
79 ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
80fi
81if test "$GCC" != yes; then
82 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
83elif test "$includedir" != "/usr/include"; then
84 if test "$includedir" = '${prefix}/include' ; then
85 if test x$prefix != x/usr ; then
86 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
87 fi
88 else
89 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
90 fi
91fi
92AC_SUBST(ACPPFLAGS)
93])dnl
94dnl ---------------------------------------------------------------------------
95dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18
96dnl ---------------
97dnl Add to $ADAFLAGS, which is substituted into makefile and scripts.
98AC_DEFUN([CF_ADD_ADAFLAGS],[
99 ADAFLAGS="$ADAFLAGS $1"
100 AC_SUBST(ADAFLAGS)
101])dnl
102dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400103dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15
Steve Kondikae271bc2015-11-15 02:50:53 +0100104dnl -------------
105dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
micky3879b9f5e72025-07-08 18:04:53 -0400106dnl $1 = flags to add
107dnl $2 = if given makes this macro verbose.
Steve Kondikae271bc2015-11-15 02:50:53 +0100108dnl
109dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
110dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
111dnl confused by the quotes (which require backslashes to keep them usable).
112AC_DEFUN([CF_ADD_CFLAGS],
113[
114cf_fix_cppflags=no
115cf_new_cflags=
116cf_new_cppflags=
117cf_new_extra_cppflags=
118
119for cf_add_cflags in $1
120do
micky3879b9f5e72025-07-08 18:04:53 -0400121case "$cf_fix_cppflags" in
Steve Kondikae271bc2015-11-15 02:50:53 +0100122(no)
micky3879b9f5e72025-07-08 18:04:53 -0400123 case "$cf_add_cflags" in
Steve Kondikae271bc2015-11-15 02:50:53 +0100124 (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
micky3879b9f5e72025-07-08 18:04:53 -0400125 case "$cf_add_cflags" in
Steve Kondikae271bc2015-11-15 02:50:53 +0100126 (-D*)
micky3879b9f5e72025-07-08 18:04:53 -0400127 cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
Steve Kondikae271bc2015-11-15 02:50:53 +0100128
129 test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
130 && test -z "${cf_tst_cflags}" \
131 && cf_fix_cppflags=yes
132
micky3879b9f5e72025-07-08 18:04:53 -0400133 if test "$cf_fix_cppflags" = yes ; then
134 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100135 continue
136 elif test "${cf_tst_cflags}" = "\"'" ; then
micky3879b9f5e72025-07-08 18:04:53 -0400137 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100138 continue
139 fi
140 ;;
141 esac
142 case "$CPPFLAGS" in
143 (*$cf_add_cflags)
144 ;;
145 (*)
micky3879b9f5e72025-07-08 18:04:53 -0400146 case "$cf_add_cflags" in
Steve Kondikae271bc2015-11-15 02:50:53 +0100147 (-D*)
148 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
149 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
150 ;;
151 esac
micky3879b9f5e72025-07-08 18:04:53 -0400152 CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100153 ;;
154 esac
155 ;;
156 (*)
micky3879b9f5e72025-07-08 18:04:53 -0400157 CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100158 ;;
159 esac
160 ;;
161(yes)
micky3879b9f5e72025-07-08 18:04:53 -0400162 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100163
micky3879b9f5e72025-07-08 18:04:53 -0400164 cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
Steve Kondikae271bc2015-11-15 02:50:53 +0100165
166 test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
167 && test -z "${cf_tst_cflags}" \
168 && cf_fix_cppflags=no
169 ;;
170esac
171done
172
173if test -n "$cf_new_cflags" ; then
174 ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
micky3879b9f5e72025-07-08 18:04:53 -0400175 CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100176fi
177
178if test -n "$cf_new_cppflags" ; then
179 ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
micky3879b9f5e72025-07-08 18:04:53 -0400180 CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100181fi
182
183if test -n "$cf_new_extra_cppflags" ; then
184 ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
micky3879b9f5e72025-07-08 18:04:53 -0400185 CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
Steve Kondikae271bc2015-11-15 02:50:53 +0100186fi
187
188AC_SUBST(EXTRA_CPPFLAGS)
189
190])dnl
191dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400192dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04
Steve Kondikae271bc2015-11-15 02:50:53 +0100193dnl -------------
micky3879b9f5e72025-07-08 18:04:53 -0400194dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it is
Steve Kondikae271bc2015-11-15 02:50:53 +0100195dnl redundant. We don't normally need to add -I/usr/local/include for gcc,
196dnl but old versions (and some misinstalled ones) need that. To make things
197dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
198dnl the include-path).
199AC_DEFUN([CF_ADD_INCDIR],
200[
201if test -n "$1" ; then
202 for cf_add_incdir in $1
203 do
micky3879b9f5e72025-07-08 18:04:53 -0400204 while test "$cf_add_incdir" != /usr/include
Steve Kondikae271bc2015-11-15 02:50:53 +0100205 do
micky3879b9f5e72025-07-08 18:04:53 -0400206 if test -d "$cf_add_incdir"
Steve Kondikae271bc2015-11-15 02:50:53 +0100207 then
208 cf_have_incdir=no
209 if test -n "$CFLAGS$CPPFLAGS" ; then
210 # a loop is needed to ensure we can add subdirs of existing dirs
211 for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
212 if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
213 cf_have_incdir=yes; break
214 fi
215 done
216 fi
217
218 if test "$cf_have_incdir" = no ; then
219 if test "$cf_add_incdir" = /usr/local/include ; then
220 if test "$GCC" = yes
221 then
222 cf_save_CPPFLAGS=$CPPFLAGS
micky3879b9f5e72025-07-08 18:04:53 -0400223 CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
Steve Kondikae271bc2015-11-15 02:50:53 +0100224 AC_TRY_COMPILE([#include <stdio.h>],
225 [printf("Hello")],
226 [],
227 [cf_have_incdir=yes])
228 CPPFLAGS=$cf_save_CPPFLAGS
229 fi
230 fi
231 fi
232
233 if test "$cf_have_incdir" = no ; then
234 CF_VERBOSE(adding $cf_add_incdir to include-path)
235 ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir"
236
micky3879b9f5e72025-07-08 18:04:53 -0400237 cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'`
Steve Kondikae271bc2015-11-15 02:50:53 +0100238 test "$cf_top_incdir" = "$cf_add_incdir" && break
239 cf_add_incdir="$cf_top_incdir"
240 else
241 break
242 fi
243 else
244 break
245 fi
246 done
247 done
248fi
249])dnl
250dnl ---------------------------------------------------------------------------
251dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
252dnl ----------
253dnl Add a library, used to enforce consistency.
254dnl
255dnl $1 = library to add, without the "-l"
256dnl $2 = variable to update (default $LIBS)
257AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
258dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400259dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42
Steve Kondikae271bc2015-11-15 02:50:53 +0100260dnl -------------
261dnl Adds to the library-path
262dnl
263dnl Some machines have trouble with multiple -L options.
264dnl
265dnl $1 is the (list of) directory(s) to add
266dnl $2 is the optional name of the variable to update (default LDFLAGS)
267dnl
268AC_DEFUN([CF_ADD_LIBDIR],
269[
270if test -n "$1" ; then
271 for cf_add_libdir in $1
272 do
micky3879b9f5e72025-07-08 18:04:53 -0400273 if test "$cf_add_libdir" = /usr/lib ; then
Steve Kondikae271bc2015-11-15 02:50:53 +0100274 :
micky3879b9f5e72025-07-08 18:04:53 -0400275 elif test -d "$cf_add_libdir"
Steve Kondikae271bc2015-11-15 02:50:53 +0100276 then
277 cf_have_libdir=no
278 if test -n "$LDFLAGS$LIBS" ; then
279 # a loop is needed to ensure we can add subdirs of existing dirs
280 for cf_test_libdir in $LDFLAGS $LIBS ; do
281 if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
282 cf_have_libdir=yes; break
283 fi
284 done
285 fi
286 if test "$cf_have_libdir" = no ; then
287 CF_VERBOSE(adding $cf_add_libdir to library-path)
288 ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
289 fi
290 fi
291 done
292fi
293])dnl
294dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400295dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
Steve Kondikae271bc2015-11-15 02:50:53 +0100296dnl -----------
297dnl Add one or more libraries, used to enforce consistency. Libraries are
298dnl prepended to an existing list, since their dependencies are assumed to
299dnl already exist in the list.
300dnl
301dnl $1 = libraries to add, with the "-l", etc.
302dnl $2 = variable to update (default $LIBS)
303AC_DEFUN([CF_ADD_LIBS],[
micky3879b9f5e72025-07-08 18:04:53 -0400304cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
305# reverse order
306cf_add_0lib=
307for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
308# filter duplicates
309for cf_add_1lib in $cf_add_0lib; do
310 for cf_add_2lib in $cf_add_libs; do
311 if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
Steve Kondikae271bc2015-11-15 02:50:53 +0100312 cf_add_1lib=
313 break
314 fi
315 done
micky3879b9f5e72025-07-08 18:04:53 -0400316 test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
Steve Kondikae271bc2015-11-15 02:50:53 +0100317done
318ifelse($2,,LIBS,[$2])="$cf_add_libs"
319])dnl
320dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400321dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42
Steve Kondikae271bc2015-11-15 02:50:53 +0100322dnl ------------------
323dnl Append to a search-list for a nonstandard header/lib-file
324dnl $1 = the variable to return as result
325dnl $2 = the package name
326dnl $3 = the subdirectory, e.g., bin, include or lib
327dnl $4 = the directory under which we will test for subdirectories
328dnl $5 = a directory that we do not want $4 to match
329AC_DEFUN([CF_ADD_SUBDIR_PATH],
330[
331test "x$4" != "x$5" && \
332test -d "$4" && \
micky3879b9f5e72025-07-08 18:04:53 -0400333ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) {
Steve Kondikae271bc2015-11-15 02:50:53 +0100334 test -n "$verbose" && echo " ... testing for $3-directories under $4"
micky3879b9f5e72025-07-08 18:04:53 -0400335 test -d "$4/$3" && $1="[$]$1 $4/$3"
336 test -d "$4/$3/$2" && $1="[$]$1 $4/$3/$2"
337 test -d "$4/$3/$2/$3" && $1="[$]$1 $4/$3/$2/$3"
338 test -d "$4/$2/$3" && $1="[$]$1 $4/$2/$3"
339 test -d "$4/$2/$3/$2" && $1="[$]$1 $4/$2/$3/$2"
Steve Kondikae271bc2015-11-15 02:50:53 +0100340}
341])dnl
342dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400343dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
344dnl ----------------
345dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
346dnl $1 = flags to add
347dnl $2 = if given makes this macro verbose.
348define([CF_APPEND_CFLAGS],
349[
350for cf_add_cflags in $1
351do
352 case "x$cf_add_cflags" in
353 (x-[[DU]]*)
354 CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
355 CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
356 ;;
357 esac
358 CF_ADD_CFLAGS([$cf_add_cflags],[$2])
359done
360])dnl
361dnl ---------------------------------------------------------------------------
362dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
363dnl --------------
364dnl use this macro for appending text without introducing an extra blank at
365dnl the beginning
366define([CF_APPEND_TEXT],
367[
368 test -n "[$]$1" && $1="[$]$1 "
369 $1="[$]{$1}$2"
370])dnl
371dnl ---------------------------------------------------------------------------
Steve Kondikae271bc2015-11-15 02:50:53 +0100372dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
373dnl --------------
374dnl Allow user to disable a normally-on option.
375AC_DEFUN([CF_ARG_DISABLE],
376[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
377dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400378dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
379dnl -------------
380dnl Allow user to enable a normally-off option.
381AC_DEFUN([CF_ARG_ENABLE],
382[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
383dnl ---------------------------------------------------------------------------
Steve Kondikae271bc2015-11-15 02:50:53 +0100384dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
385dnl -------------
386dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
387dnl values.
388dnl
389dnl Parameters:
390dnl $1 = option name
391dnl $2 = help-string
392dnl $3 = action to perform if option is not default
393dnl $4 = action if perform if option is default
394dnl $5 = default option value (either 'yes' or 'no')
395AC_DEFUN([CF_ARG_OPTION],
396[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
397 if test "$enableval" != "$5" ; then
398ifelse([$3],,[ :]dnl
399,[ $3]) ifelse([$4],,,[
400 else
401 $4])
402 fi],[enableval=$5 ifelse([$4],,,[
403 $4
404])dnl
405])])dnl
406dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400407dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +0100408dnl -----------
409dnl Check for suitable "ar" (archiver) options for updating an archive.
micky3879b9f5e72025-07-08 18:04:53 -0400410dnl
411dnl In particular, handle some obsolete cases where the "-" might be omitted,
412dnl as well as a workaround for breakage of make's archive rules by the GNU
413dnl binutils "ar" program.
Steve Kondikae271bc2015-11-15 02:50:53 +0100414AC_DEFUN([CF_AR_FLAGS],[
415AC_REQUIRE([CF_PROG_AR])
416
417AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[
micky3879b9f5e72025-07-08 18:04:53 -0400418 case "$cf_cv_system_name" in
419 (*-msvc*)
420 cf_cv_ar_flags=''
421 cat >mk_static_lib.sh <<-EOF
422 #!$SHELL
423 MSVC_BIN="[$]AR"
424 out="\[$]1"
425 shift
426 exec \[$]MSVC_BIN -out:"\[$]out" \[$]@
427 EOF
428 chmod +x mk_static_lib.sh
429 AR=`pwd`/mk_static_lib.sh
430 ;;
431 (*)
432 cf_cv_ar_flags=unknown
433 for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
434 do
Steve Kondikae271bc2015-11-15 02:50:53 +0100435
micky3879b9f5e72025-07-08 18:04:53 -0400436 # check if $ARFLAGS already contains this choice
437 if test "x$ARFLAGS" != "x" ; then
438 cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"`
439 if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then
440 cf_cv_ar_flags=
441 break
442 fi
Steve Kondikae271bc2015-11-15 02:50:53 +0100443 fi
Steve Kondikae271bc2015-11-15 02:50:53 +0100444
micky3879b9f5e72025-07-08 18:04:53 -0400445 rm -f "conftest.$ac_cv_objext"
446 rm -f conftest.a
Steve Kondikae271bc2015-11-15 02:50:53 +0100447
micky3879b9f5e72025-07-08 18:04:53 -0400448 cat >"conftest.$ac_ext" <<EOF
Steve Kondikae271bc2015-11-15 02:50:53 +0100449#line __oline__ "configure"
450int testdata[[3]] = { 123, 456, 789 };
451EOF
micky3879b9f5e72025-07-08 18:04:53 -0400452 if AC_TRY_EVAL(ac_compile) ; then
453 echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AC_FD_CC
454 $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null
455 if test -f conftest.a ; then
456 cf_cv_ar_flags="$cf_ar_flags"
457 break
458 fi
459 else
460 CF_VERBOSE(cannot compile test-program)
Steve Kondikae271bc2015-11-15 02:50:53 +0100461 break
462 fi
micky3879b9f5e72025-07-08 18:04:53 -0400463 done
464 rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext"
465 ;;
466 esac
Steve Kondikae271bc2015-11-15 02:50:53 +0100467])
468
469if test -n "$ARFLAGS" ; then
470 if test -n "$cf_cv_ar_flags" ; then
471 ARFLAGS="$ARFLAGS $cf_cv_ar_flags"
472 fi
473else
474 ARFLAGS=$cf_cv_ar_flags
475fi
476
477AC_SUBST(ARFLAGS)
478])
479dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400480dnl CF_BUILD_CC version: 11 updated: 2022/12/04 15:40:08
Steve Kondikae271bc2015-11-15 02:50:53 +0100481dnl -----------
482dnl If we're cross-compiling, allow the user to override the tools and their
483dnl options. The configure script is oriented toward identifying the host
484dnl compiler, etc., but we need a build compiler to generate parts of the
485dnl source.
486dnl
487dnl $1 = default for $CPPFLAGS
488dnl $2 = default for $LIBS
489AC_DEFUN([CF_BUILD_CC],[
490CF_ACVERSION_CHECK(2.52,,
491 [AC_REQUIRE([CF_PROG_EXT])])
492if test "$cross_compiling" = yes ; then
493
494 # defaults that we might want to override
495 : ${BUILD_CFLAGS:=''}
496 : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'}
497 : ${BUILD_LDFLAGS:=''}
498 : ${BUILD_LIBS:='ifelse([$2],,,[$2])'}
499 : ${BUILD_EXEEXT:='$x'}
500 : ${BUILD_OBJEXT:='o'}
501
502 AC_ARG_WITH(build-cc,
503 [ --with-build-cc=XXX the build C compiler ($BUILD_CC)],
504 [BUILD_CC="$withval"],
micky3879b9f5e72025-07-08 18:04:53 -0400505 [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)])
Steve Kondikae271bc2015-11-15 02:50:53 +0100506 AC_MSG_CHECKING(for native build C compiler)
507 AC_MSG_RESULT($BUILD_CC)
508
509 AC_MSG_CHECKING(for native build C preprocessor)
510 AC_ARG_WITH(build-cpp,
511 [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)],
512 [BUILD_CPP="$withval"],
513 [BUILD_CPP='${BUILD_CC} -E'])
514 AC_MSG_RESULT($BUILD_CPP)
515
516 AC_MSG_CHECKING(for native build C flags)
517 AC_ARG_WITH(build-cflags,
518 [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)],
519 [BUILD_CFLAGS="$withval"])
520 AC_MSG_RESULT($BUILD_CFLAGS)
521
522 AC_MSG_CHECKING(for native build C preprocessor-flags)
523 AC_ARG_WITH(build-cppflags,
524 [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)],
525 [BUILD_CPPFLAGS="$withval"])
526 AC_MSG_RESULT($BUILD_CPPFLAGS)
527
528 AC_MSG_CHECKING(for native build linker-flags)
529 AC_ARG_WITH(build-ldflags,
530 [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)],
531 [BUILD_LDFLAGS="$withval"])
532 AC_MSG_RESULT($BUILD_LDFLAGS)
533
534 AC_MSG_CHECKING(for native build linker-libraries)
535 AC_ARG_WITH(build-libs,
536 [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})],
537 [BUILD_LIBS="$withval"])
538 AC_MSG_RESULT($BUILD_LIBS)
539
540 # this assumes we're on Unix.
541 BUILD_EXEEXT=
542 BUILD_OBJEXT=o
543
544 : ${BUILD_CC:='${CC}'}
545
micky3879b9f5e72025-07-08 18:04:53 -0400546 AC_MSG_CHECKING(if the build-compiler "$BUILD_CC" works)
547
548 cf_save_crossed=$cross_compiling
549 cf_save_ac_link=$ac_link
550 cross_compiling=no
551 cf_build_cppflags=$BUILD_CPPFLAGS
552 test "$cf_build_cppflags" = "#" && cf_build_cppflags=
553 ac_link='$BUILD_CC -o "conftest$ac_exeext" $BUILD_CFLAGS $cf_build_cppflags $BUILD_LDFLAGS "conftest.$ac_ext" $BUILD_LIBS >&AS_MESSAGE_LOG_FD'
554
555 AC_TRY_RUN([#include <stdio.h>
556 int main(int argc, char *argv[])
557 {
558 ${cf_cv_main_return:-return}(argc < 0 || argv == 0 || argv[0] == 0);
559 }
560 ],
561 cf_ok_build_cc=yes,
562 cf_ok_build_cc=no,
563 cf_ok_build_cc=unknown)
564
565 cross_compiling=$cf_save_crossed
566 ac_link=$cf_save_ac_link
567
568 AC_MSG_RESULT($cf_ok_build_cc)
569
570 if test "$cf_ok_build_cc" != yes
571 then
Steve Kondikae271bc2015-11-15 02:50:53 +0100572 AC_MSG_ERROR([Cross-build requires two compilers.
573Use --with-build-cc to specify the native compiler.])
574 fi
575
576else
577 : ${BUILD_CC:='${CC}'}
578 : ${BUILD_CPP:='${CPP}'}
579 : ${BUILD_CFLAGS:='${CFLAGS}'}
580 : ${BUILD_CPPFLAGS:='${CPPFLAGS}'}
581 : ${BUILD_LDFLAGS:='${LDFLAGS}'}
582 : ${BUILD_LIBS:='${LIBS}'}
583 : ${BUILD_EXEEXT:='$x'}
584 : ${BUILD_OBJEXT:='o'}
585fi
586
587AC_SUBST(BUILD_CC)
588AC_SUBST(BUILD_CPP)
589AC_SUBST(BUILD_CFLAGS)
590AC_SUBST(BUILD_CPPFLAGS)
591AC_SUBST(BUILD_LDFLAGS)
592AC_SUBST(BUILD_LIBS)
593AC_SUBST(BUILD_EXEEXT)
594AC_SUBST(BUILD_OBJEXT)
595])dnl
596dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400597dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
598dnl ---------------
599AC_DEFUN([CF_C11_NORETURN],
600[
601AC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
602CF_ARG_ENABLE(stdnoreturn,
603 [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics],
604 [enable_stdnoreturn=yes],
605 [enable_stdnoreturn=no])
606AC_MSG_RESULT($enable_stdnoreturn)
607
608if test $enable_stdnoreturn = yes; then
609AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
610 [AC_TRY_COMPILE([
611$ac_includes_default
612#include <stdnoreturn.h>
613static _Noreturn void giveup(void) { exit(0); }
614 ],
615 [if (feof(stdin)) giveup()],
616 cf_cv_c11_noreturn=yes,
617 cf_cv_c11_noreturn=no)
618 ])
619else
620 cf_cv_c11_noreturn=no,
621fi
622
623if test "$cf_cv_c11_noreturn" = yes; then
624 AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
625 AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
626 HAVE_STDNORETURN_H=1
627else
628 HAVE_STDNORETURN_H=0
629fi
630
631AC_SUBST(HAVE_STDNORETURN_H)
632AC_SUBST(STDC_NORETURN)
633])dnl
634dnl ---------------------------------------------------------------------------
635dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
Steve Kondikae271bc2015-11-15 02:50:53 +0100636dnl ---------------
637dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
micky3879b9f5e72025-07-08 18:04:53 -0400638dnl into CC. This will not help with broken scripts that wrap the compiler
639dnl with options, but eliminates a more common category of user confusion.
640dnl
641dnl In particular, it addresses the problem of being able to run the C
642dnl preprocessor in a consistent manner.
643dnl
644dnl Caveat: this also disallows blanks in the pathname for the compiler, but
645dnl the nuisance of having inconsistent settings for compiler and preprocessor
646dnl outweighs that limitation.
Steve Kondikae271bc2015-11-15 02:50:53 +0100647AC_DEFUN([CF_CC_ENV_FLAGS],
648[
649# This should have been defined by AC_PROG_CC
micky3879b9f5e72025-07-08 18:04:53 -0400650: "${CC:=cc}"
651
652AC_MSG_CHECKING(\$CFLAGS variable)
653case "x$CFLAGS" in
654(*-[[IUD]]*)
655 AC_MSG_RESULT(broken)
656 AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
657 cf_flags="$CFLAGS"
658 CFLAGS=
659 for cf_arg in $cf_flags
660 do
661 CF_ADD_CFLAGS($cf_arg)
662 done
663 ;;
664(*)
665 AC_MSG_RESULT(ok)
666 ;;
667esac
Steve Kondikae271bc2015-11-15 02:50:53 +0100668
669AC_MSG_CHECKING(\$CC variable)
670case "$CC" in
micky3879b9f5e72025-07-08 18:04:53 -0400671(*[[\ \ ]]-*)
Steve Kondikae271bc2015-11-15 02:50:53 +0100672 AC_MSG_RESULT(broken)
micky3879b9f5e72025-07-08 18:04:53 -0400673 AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
Steve Kondikae271bc2015-11-15 02:50:53 +0100674 # humor him...
micky3879b9f5e72025-07-08 18:04:53 -0400675 cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
676 cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
677 CC="$cf_prog"
678 for cf_arg in $cf_flags
679 do
680 case "x$cf_arg" in
681 (x-[[IUDfgOW]]*)
682 CF_ADD_CFLAGS($cf_arg)
683 ;;
684 (*)
685 CC="$CC $cf_arg"
686 ;;
687 esac
688 done
689 CF_VERBOSE(resulting CC: '$CC')
690 CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
691 CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
Steve Kondikae271bc2015-11-15 02:50:53 +0100692 ;;
693(*)
694 AC_MSG_RESULT(ok)
695 ;;
696esac
697])dnl
698dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400699dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05
Steve Kondikae271bc2015-11-15 02:50:53 +0100700dnl ---------------
701dnl Determine the default configuration into which we'll install ncurses. This
702dnl can be overridden by the user's command-line options. There's two items to
703dnl look for:
704dnl 1. the prefix (e.g., /usr)
705dnl 2. the header files (e.g., /usr/include/ncurses)
706dnl We'll look for a previous installation of ncurses and use the same defaults.
707dnl
708dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and
709dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's
710dnl programs from a vendor's.
711AC_DEFUN([CF_CFG_DEFAULTS],
micky3879b9f5e72025-07-08 18:04:53 -0400712[AC_REQUIRE([AC_PROG_FGREP])dnl
713
Steve Kondikae271bc2015-11-15 02:50:53 +0100714AC_MSG_CHECKING(for prefix)
715if test "x$prefix" = "xNONE" ; then
716 case "$cf_cv_system_name" in
717 # non-vendor systems don't have a conflict
718 (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
719 prefix=/usr
720 ;;
721 (*) prefix=$ac_default_prefix
722 ;;
723 esac
724fi
725AC_MSG_RESULT($prefix)
726
727if test "x$prefix" = "xNONE" ; then
728AC_MSG_CHECKING(for default include-directory)
729test -n "$verbose" && echo 1>&AC_FD_MSG
730for cf_symbol in \
micky3879b9f5e72025-07-08 18:04:53 -0400731 "$includedir" \
732 "$includedir/ncurses" \
733 "$prefix/include" \
734 "$prefix/include/ncurses" \
Steve Kondikae271bc2015-11-15 02:50:53 +0100735 /usr/local/include \
736 /usr/local/include/ncurses \
737 /usr/include \
738 /usr/include/ncurses
739do
micky3879b9f5e72025-07-08 18:04:53 -0400740 cf_dir=`eval echo "$cf_symbol"`
741 if test -f "$cf_dir/curses.h" ; then
742 if ( ${FGREP-fgrep} NCURSES_VERSION "$cf_dir/curses.h" >/dev/null 2>&1 ) ; then
Steve Kondikae271bc2015-11-15 02:50:53 +0100743 includedir="$cf_symbol"
micky3879b9f5e72025-07-08 18:04:53 -0400744 test -n "$verbose" && echo $ECHO_N " found " 1>&AC_FD_MSG
Steve Kondikae271bc2015-11-15 02:50:53 +0100745 break
746 fi
747 fi
748 test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG
749done
750AC_MSG_RESULT($includedir)
751fi
752])dnl
753dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400754dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
Steve Kondikae271bc2015-11-15 02:50:53 +0100755dnl --------------
756dnl Check if we're accidentally using a cache from a different machine.
757dnl Derive the system name, as a check for reusing the autoconf cache.
758dnl
759dnl If we've packaged config.guess and config.sub, run that (since it does a
760dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
761dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
762dnl which is useful in cross-compiles.
763dnl
764dnl Note: we would use $ac_config_sub, but that is one of the places where
765dnl autoconf 2.5x broke compatibility with autoconf 2.13
766AC_DEFUN([CF_CHECK_CACHE],
767[
micky3879b9f5e72025-07-08 18:04:53 -0400768if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
Steve Kondikae271bc2015-11-15 02:50:53 +0100769 ifelse([$1],,[AC_CANONICAL_HOST],[$1])
770 system_name="$host_os"
771else
772 system_name="`(uname -s -r) 2>/dev/null`"
773 if test -z "$system_name" ; then
774 system_name="`(hostname) 2>/dev/null`"
775 fi
776fi
777test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
778AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
779
780test -z "$system_name" && system_name="$cf_cv_system_name"
781test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
782
783if test ".$system_name" != ".$cf_cv_system_name" ; then
784 AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
785 AC_MSG_ERROR("Please remove config.cache and try again.")
786fi
787])dnl
788dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400789dnl CF_CHECK_GNAT_VERSION version: 4 updated: 2021/01/01 13:31:04
790dnl ---------------------
791AC_DEFUN([CF_CHECK_GNAT_VERSION],
792[
793AC_REQUIRE([CF_GNAT_VERSION])
794case "$cf_cv_gnat_version" in
795(3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
796 cf_cv_prog_gnat_correct=yes
797 ;;
798(*)
799 AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
800 cf_cv_prog_gnat_correct=no
801 ;;
802esac
803])
804dnl ---------------------------------------------------------------------------
805dnl CF_CHECK_LIBSSP version: 1 updated: 2021/10/30 10:40:19
806dnl ---------------
807dnl Check if libssp is needed, e.g., to work around misconfigured libraries
808dnl used in cross-compiling to MinGW.
809AC_DEFUN([CF_CHECK_LIBSSP],[
810AC_CACHE_CHECK(if ssp library is needed,cf_cv_need_libssp,[
811AC_TRY_LINK([
812#include <sys/types.h>
813#include <dirent.h>
814],[
815 DIR *dp = opendir(".");
816],cf_cv_need_libssp=no,[
817 cf_save_LIBS="$LIBS"
818 LIBS="$LIBS -lssp"
819 AC_TRY_LINK([
820#include <sys/types.h>
821#include <dirent.h>
822 ],[
823 DIR *dp = opendir(".");
824 ],cf_cv_need_libssp=yes,
825 cf_cv_need_libssp=maybe)
826 LIBS="$cf_save_LIBS"
827])dnl
828])
829
830if test "x$cf_cv_need_libssp" = xyes
831then
832 CF_ADD_LIB(ssp)
833fi
834])dnl
835dnl ---------------------------------------------------------------------------
836dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
Steve Kondikae271bc2015-11-15 02:50:53 +0100837dnl -----------------
838dnl Check if the given compiler is really clang. clang's C driver defines
839dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
840dnl not ignore some gcc options.
841dnl
842dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
843dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
844dnl the wrappers for gcc and g++ warnings.
845dnl
846dnl $1 = GCC (default) or GXX
847dnl $2 = CLANG_COMPILER (default)
848dnl $3 = CFLAGS (default) or CXXFLAGS
849AC_DEFUN([CF_CLANG_COMPILER],[
850ifelse([$2],,CLANG_COMPILER,[$2])=no
851
852if test "$ifelse([$1],,[$1],GCC)" = yes ; then
853 AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
854 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
Steve Kondikae271bc2015-11-15 02:50:53 +0100855 AC_TRY_COMPILE([],[
856#ifdef __clang__
857#else
micky3879b9f5e72025-07-08 18:04:53 -0400858#error __clang__ is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +0100859#endif
860],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
Steve Kondikae271bc2015-11-15 02:50:53 +0100861],[])
862 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
863 AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
864fi
micky3879b9f5e72025-07-08 18:04:53 -0400865
866CLANG_VERSION=none
867
868if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
869 case "$CC" in
870 (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
871 AC_MSG_WARN(replacing broken compiler alias $CC)
872 CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
873 CC=clang
874 ;;
875 esac
876
877 AC_MSG_CHECKING(version of $CC)
878 CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
879 test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
880 AC_MSG_RESULT($CLANG_VERSION)
881
882 for cf_clang_opt in \
883 -Qunused-arguments \
884 -Wno-error=implicit-function-declaration
885 do
886 AC_MSG_CHECKING(if option $cf_clang_opt works)
887 cf_save_CFLAGS="$CFLAGS"
888 CFLAGS="$CFLAGS $cf_clang_opt"
889 AC_TRY_LINK([
890 #include <stdio.h>],[
891 printf("hello!\\n");],[
892 cf_clang_optok=yes],[
893 cf_clang_optok=no])
894 AC_MSG_RESULT($cf_clang_optok)
895 CFLAGS="$cf_save_CFLAGS"
896 if test "$cf_clang_optok" = yes; then
897 CF_VERBOSE(adding option $cf_clang_opt)
898 CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
899 fi
900 done
901fi
Steve Kondikae271bc2015-11-15 02:50:53 +0100902])
903dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -0400904dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
905dnl -----------------
906dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
907dnl character-strings.
908dnl
909dnl It is ambiguous because the specification accommodated the pre-ANSI
910dnl compilers bundled by more than one vendor in lieu of providing a standard C
911dnl compiler other than by costly add-ons. Because of this, the specification
912dnl did not take into account the use of const for telling the compiler that
913dnl string literals would be in readonly memory.
914dnl
915dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
916dnl let the compiler decide how to represent Xt's strings which were #define'd.
917dnl That does not solve the problem of using the block of Xt's strings which
918dnl are compiled into the library (and is less efficient than one might want).
919dnl
920dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
921dnl when compiling the library and compiling using the library, to tell the
922dnl compiler that String is const.
923AC_DEFUN([CF_CONST_X_STRING],
924[
925AC_REQUIRE([AC_PATH_XTRA])
926
927CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
928
929AC_TRY_COMPILE(
930[
931#include <stdlib.h>
932#include <X11/Intrinsic.h>
933],
934[String foo = malloc(1); free((void*)foo)],[
935
936AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
937 AC_TRY_COMPILE(
938 [
939#undef _CONST_X_STRING
940#define _CONST_X_STRING /* X11R7.8 (perhaps) */
941#undef XTSTRINGDEFINES /* X11R5 and later */
942#include <stdlib.h>
943#include <X11/Intrinsic.h>
944 ],[String foo = malloc(1); *foo = 0],[
945 cf_cv_const_x_string=no
946 ],[
947 cf_cv_const_x_string=yes
948 ])
949])
950
951CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
952
953case "$cf_cv_const_x_string" in
954(no)
955 CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
956 ;;
957(*)
958 CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
959 ;;
960esac
961
962])
963])dnl
964dnl ---------------------------------------------------------------------------
965dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
966dnl -----------------
967dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
968dnl character-strings.
969dnl
970dnl It is ambiguous because the specification accommodated the pre-ANSI
971dnl compilers bundled by more than one vendor in lieu of providing a standard C
972dnl compiler other than by costly add-ons. Because of this, the specification
973dnl did not take into account the use of const for telling the compiler that
974dnl string literals would be in readonly memory.
975dnl
976dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
977dnl let the compiler decide how to represent Xt's strings which were #define'd.
978dnl That does not solve the problem of using the block of Xt's strings which
979dnl are compiled into the library (and is less efficient than one might want).
980dnl
981dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
982dnl when compiling the library and compiling using the library, to tell the
983dnl compiler that String is const.
984AC_DEFUN([CF_CONST_X_STRING],
985[
986AC_REQUIRE([AC_PATH_XTRA])
987
988CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
989
990AC_TRY_COMPILE(
991[
992#include <stdlib.h>
993#include <X11/Intrinsic.h>
994],
995[String foo = malloc(1); free((void*)foo)],[
996
997AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
998 AC_TRY_COMPILE(
999 [
1000#undef _CONST_X_STRING
1001#define _CONST_X_STRING /* X11R7.8 (perhaps) */
1002#undef XTSTRINGDEFINES /* X11R5 and later */
1003#include <stdlib.h>
1004#include <X11/Intrinsic.h>
1005 ],[String foo = malloc(1); *foo = 0],[
1006 cf_cv_const_x_string=no
1007 ],[
1008 cf_cv_const_x_string=yes
1009 ])
1010])
1011
1012CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
1013
1014case "$cf_cv_const_x_string" in
1015(no)
1016 CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
1017 ;;
1018(*)
1019 CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
1020 ;;
1021esac
1022
1023])
1024])dnl
1025dnl ---------------------------------------------------------------------------
1026dnl CF_CURSES_HEADER version: 6 updated: 2022/12/02 20:06:52
Steve Kondikae271bc2015-11-15 02:50:53 +01001027dnl ----------------
1028dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
1029dnl variations of ncurses' installs.
1030dnl
1031dnl $1 = ncurses when looking for ncurses, or is empty
1032AC_DEFUN([CF_CURSES_HEADER],[
1033AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
1034cf_cv_ncurses_header=none
1035for cf_header in \
1036 ncurses.h ifelse($1,,,[$1/ncurses.h]) \
1037 curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
1038do
1039AC_TRY_COMPILE([#include <${cf_header}>],
micky3879b9f5e72025-07-08 18:04:53 -04001040 [initscr(); endwin()],
Steve Kondikae271bc2015-11-15 02:50:53 +01001041 [cf_cv_ncurses_header=$cf_header; break],[])
1042done
1043])
1044
1045if test "$cf_cv_ncurses_header" = none ; then
1046 AC_MSG_ERROR(No curses header-files found)
1047fi
1048
1049# cheat, to get the right #define's for HAVE_NCURSES_H, etc.
1050AC_CHECK_HEADERS($cf_cv_ncurses_header)
1051])dnl
1052dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001053dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
Steve Kondikae271bc2015-11-15 02:50:53 +01001054dnl ----------
1055dnl "dirname" is not portable, so we fake it with a shell script.
micky3879b9f5e72025-07-08 18:04:53 -04001056AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl
Steve Kondikae271bc2015-11-15 02:50:53 +01001057dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001058dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
Steve Kondikae271bc2015-11-15 02:50:53 +01001059dnl ---------------
micky3879b9f5e72025-07-08 18:04:53 -04001060dnl You can always use "make -n" to see the actual options, but it is hard to
Steve Kondikae271bc2015-11-15 02:50:53 +01001061dnl pick out/analyze warning messages when the compile-line is long.
1062dnl
1063dnl Sets:
1064dnl ECHO_LT - symbol to control if libtool is verbose
1065dnl ECHO_LD - symbol to prefix "cc -o" lines
1066dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1067dnl SHOW_CC - symbol to put before explicit "cc -c" lines
1068dnl ECHO_CC - symbol to put before any "cc" line
1069dnl
1070AC_DEFUN([CF_DISABLE_ECHO],[
1071AC_MSG_CHECKING(if you want to see long compiling messages)
1072CF_ARG_DISABLE(echo,
1073 [ --disable-echo do not display "compiling" commands],
1074 [
1075 ECHO_LT='--silent'
1076 ECHO_LD='@echo linking [$]@;'
1077 RULE_CC='@echo compiling [$]<'
1078 SHOW_CC='@echo compiling [$]@'
1079 ECHO_CC='@'
1080],[
1081 ECHO_LT=''
1082 ECHO_LD=''
1083 RULE_CC=''
1084 SHOW_CC=''
1085 ECHO_CC=''
1086])
1087AC_MSG_RESULT($enableval)
1088AC_SUBST(ECHO_LT)
1089AC_SUBST(ECHO_LD)
1090AC_SUBST(RULE_CC)
1091AC_SUBST(SHOW_CC)
1092AC_SUBST(ECHO_CC)
1093])dnl
1094dnl ---------------------------------------------------------------------------
1095dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
1096dnl ------------------------
1097AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
1098AC_MSG_CHECKING(if we want to use GNAT projects)
1099CF_ARG_DISABLE(gnat-projects,
1100 [ --disable-gnat-projects test: disable GNAT projects even if usable],
1101 [enable_gnat_projects=no],
1102 [enable_gnat_projects=yes])
1103AC_MSG_RESULT($enable_gnat_projects)
1104])dnl
1105dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001106dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14
1107dnl -----------------------
1108dnl Some linkers cannot reference a data-only object. Cygwin used to be one.
1109dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need
1110dnl an unconditional feature.
1111AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[
Steve Kondikae271bc2015-11-15 02:50:53 +01001112
micky3879b9f5e72025-07-08 18:04:53 -04001113AC_MSG_CHECKING(if you want broken-linker support code)
1114AC_ARG_ENABLE(broken_linker,
1115 [ --enable-broken_linker compile with broken-linker support code],
1116 [with_broken_linker=$enableval],
1117 [with_broken_linker=no])
1118AC_MSG_RESULT($with_broken_linker)
1119
1120: "${BROKEN_LINKER:=0}"
1121if test "x$with_broken_linker" = xyes ; then
1122 AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
1123 BROKEN_LINKER=1
Steve Kondikae271bc2015-11-15 02:50:53 +01001124fi
micky3879b9f5e72025-07-08 18:04:53 -04001125AC_SUBST(BROKEN_LINKER)
Steve Kondikae271bc2015-11-15 02:50:53 +01001126])dnl
1127dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001128dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
1129dnl ------------------
1130dnl Configure-option to enable gcc warnings
1131dnl
1132dnl $1 = extra options to add, if supported
1133dnl $2 = option for checking attributes. By default, this is done when
1134dnl warnings are enabled. For other values:
1135dnl yes: always do this, e.g., to use in generated library-headers
1136dnl no: never do this
1137AC_DEFUN([CF_ENABLE_WARNINGS],[
1138if test "$GCC" = yes || test "$GXX" = yes
1139then
1140CF_FIX_WARNINGS(CFLAGS)
1141CF_FIX_WARNINGS(CPPFLAGS)
1142CF_FIX_WARNINGS(LDFLAGS)
1143AC_MSG_CHECKING(if you want to turn on gcc warnings)
1144CF_ARG_ENABLE(warnings,
1145 [ --enable-warnings test: turn on gcc compiler warnings],
1146 [enable_warnings=yes],
1147 [enable_warnings=no])
1148AC_MSG_RESULT($enable_warnings)
1149if test "$enable_warnings" = "yes"
1150then
1151 ifelse($2,,[CF_GCC_ATTRIBUTES])
1152 CF_GCC_WARNINGS($1)
1153fi
1154ifelse($2,yes,[CF_GCC_ATTRIBUTES])
1155fi
1156])dnl
1157dnl ---------------------------------------------------------------------------
1158dnl CF_FIND_LIBRARY version: 11 updated: 2021/01/02 09:31:20
Steve Kondikae271bc2015-11-15 02:50:53 +01001159dnl ---------------
1160dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We
1161dnl prefer a standard location, and use -L options only if we do not find the
1162dnl library in the standard library location(s).
1163dnl $1 = library name
1164dnl $2 = library class, usually the same as library name
1165dnl $3 = includes
1166dnl $4 = code fragment to compile/link
1167dnl $5 = corresponding function-name
1168dnl $6 = flag, nonnull if failure should not cause an error-exit
1169dnl
1170dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had
1171dnl to use a -L option.
1172AC_DEFUN([CF_FIND_LIBRARY],
1173[
micky3879b9f5e72025-07-08 18:04:53 -04001174 eval 'cf_cv_have_lib_'"$1"'=no'
Steve Kondikae271bc2015-11-15 02:50:53 +01001175 cf_libdir=""
1176 AC_CHECK_FUNC($5,
micky3879b9f5e72025-07-08 18:04:53 -04001177 eval 'cf_cv_have_lib_'"$1"'=yes',[
Steve Kondikae271bc2015-11-15 02:50:53 +01001178 cf_save_LIBS="$LIBS"
1179 AC_MSG_CHECKING(for $5 in -l$1)
1180 LIBS="-l$1 $LIBS"
1181 AC_TRY_LINK([$3],[$4],
1182 [AC_MSG_RESULT(yes)
micky3879b9f5e72025-07-08 18:04:53 -04001183 eval 'cf_cv_have_lib_'"$1"'=yes'
Steve Kondikae271bc2015-11-15 02:50:53 +01001184 ],
1185 [AC_MSG_RESULT(no)
1186 CF_LIBRARY_PATH(cf_search,$2)
1187 for cf_libdir in $cf_search
1188 do
1189 AC_MSG_CHECKING(for -l$1 in $cf_libdir)
1190 LIBS="-L$cf_libdir -l$1 $cf_save_LIBS"
1191 AC_TRY_LINK([$3],[$4],
1192 [AC_MSG_RESULT(yes)
micky3879b9f5e72025-07-08 18:04:53 -04001193 eval 'cf_cv_have_lib_'"$1"'=yes'
Steve Kondikae271bc2015-11-15 02:50:53 +01001194 break],
1195 [AC_MSG_RESULT(no)
1196 LIBS="$cf_save_LIBS"])
1197 done
1198 ])
1199 ])
micky3879b9f5e72025-07-08 18:04:53 -04001200eval 'cf_found_library="[$]cf_cv_have_lib_'"$1"\"
Steve Kondikae271bc2015-11-15 02:50:53 +01001201ifelse($6,,[
micky3879b9f5e72025-07-08 18:04:53 -04001202if test "$cf_found_library" = no ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01001203 AC_MSG_ERROR(Cannot link $1 library)
1204fi
1205])
1206])dnl
1207dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001208dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
Steve Kondikae271bc2015-11-15 02:50:53 +01001209dnl ---------------
1210dnl Find a library (specifically the linkage used in the code fragment),
1211dnl searching for it if it is not already in the library path.
1212dnl See also CF_ADD_SEARCHPATH.
1213dnl
1214dnl Parameters (4-on are optional):
1215dnl $1 = headers for library entrypoint
1216dnl $2 = code fragment for library entrypoint
1217dnl $3 = the library name without the "-l" option or ".so" suffix.
1218dnl $4 = action to perform if successful (default: update CPPFLAGS, etc)
1219dnl $5 = action to perform if not successful
1220dnl $6 = module name, if not the same as the library name
1221dnl $7 = extra libraries
1222dnl
1223dnl Sets these variables:
1224dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
1225dnl $cf_cv_header_path_$3 - include-directory if needed
1226dnl $cf_cv_library_path_$3 - library-directory if needed
1227dnl $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
1228AC_DEFUN([CF_FIND_LINKAGE],[
1229
1230# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
1231# will be set on completion of the AC_TRY_LINK below.
1232cf_cv_header_path_$3=
1233cf_cv_library_path_$3=
1234
1235CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
1236
1237cf_save_LIBS="$LIBS"
1238
1239AC_TRY_LINK([$1],[$2],[
1240 cf_cv_find_linkage_$3=yes
1241 cf_cv_header_path_$3=/usr/include
1242 cf_cv_library_path_$3=/usr/lib
1243],[
1244
1245LIBS="-l$3 $7 $cf_save_LIBS"
1246
1247AC_TRY_LINK([$1],[$2],[
1248 cf_cv_find_linkage_$3=yes
1249 cf_cv_header_path_$3=/usr/include
1250 cf_cv_library_path_$3=/usr/lib
1251 cf_cv_library_file_$3="-l$3"
1252],[
1253 cf_cv_find_linkage_$3=no
1254 LIBS="$cf_save_LIBS"
1255
1256 CF_VERBOSE(find linkage for $3 library)
1257 CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
1258
1259 cf_save_CPPFLAGS="$CPPFLAGS"
1260 cf_test_CPPFLAGS="$CPPFLAGS"
1261
1262 CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
1263 for cf_cv_header_path_$3 in $cf_search
1264 do
micky3879b9f5e72025-07-08 18:04:53 -04001265 if test -d "$cf_cv_header_path_$3" ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01001266 CF_VERBOSE(... testing $cf_cv_header_path_$3)
micky3879b9f5e72025-07-08 18:04:53 -04001267 CPPFLAGS="$cf_save_CPPFLAGS"
1268 CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
Steve Kondikae271bc2015-11-15 02:50:53 +01001269 AC_TRY_COMPILE([$1],[$2],[
1270 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
1271 cf_cv_find_linkage_$3=maybe
1272 cf_test_CPPFLAGS="$CPPFLAGS"
1273 break],[
1274 CPPFLAGS="$cf_save_CPPFLAGS"
1275 ])
1276 fi
1277 done
1278
1279 if test "$cf_cv_find_linkage_$3" = maybe ; then
1280
1281 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
1282
1283 cf_save_LIBS="$LIBS"
1284 cf_save_LDFLAGS="$LDFLAGS"
1285
1286 ifelse([$6],,,[
1287 CPPFLAGS="$cf_test_CPPFLAGS"
1288 LIBS="-l$3 $7 $cf_save_LIBS"
1289 AC_TRY_LINK([$1],[$2],[
1290 CF_VERBOSE(... found $3 library in system)
1291 cf_cv_find_linkage_$3=yes])
1292 CPPFLAGS="$cf_save_CPPFLAGS"
1293 LIBS="$cf_save_LIBS"
1294 ])
1295
1296 if test "$cf_cv_find_linkage_$3" != yes ; then
1297 CF_LIBRARY_PATH(cf_search,$3)
1298 for cf_cv_library_path_$3 in $cf_search
1299 do
micky3879b9f5e72025-07-08 18:04:53 -04001300 if test -d "$cf_cv_library_path_$3" ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01001301 CF_VERBOSE(... testing $cf_cv_library_path_$3)
1302 CPPFLAGS="$cf_test_CPPFLAGS"
1303 LIBS="-l$3 $7 $cf_save_LIBS"
1304 LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
1305 AC_TRY_LINK([$1],[$2],[
1306 CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
1307 cf_cv_find_linkage_$3=yes
1308 cf_cv_library_file_$3="-l$3"
1309 break],[
1310 CPPFLAGS="$cf_save_CPPFLAGS"
1311 LIBS="$cf_save_LIBS"
1312 LDFLAGS="$cf_save_LDFLAGS"
1313 ])
1314 fi
1315 done
1316 CPPFLAGS="$cf_save_CPPFLAGS"
1317 LDFLAGS="$cf_save_LDFLAGS"
1318 fi
1319
1320 else
1321 cf_cv_find_linkage_$3=no
1322 fi
1323 ],$7)
1324])
1325
1326LIBS="$cf_save_LIBS"
1327
1328if test "$cf_cv_find_linkage_$3" = yes ; then
1329ifelse([$4],,[
1330 CF_ADD_INCDIR($cf_cv_header_path_$3)
1331 CF_ADD_LIBDIR($cf_cv_library_path_$3)
1332 CF_ADD_LIB($3)
1333],[$4])
1334else
1335ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
1336fi
1337])dnl
1338dnl ---------------------------------------------------------------------------
1339dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
1340dnl -----------------
1341dnl make ADAFLAGS consistent with CFLAGS
1342AC_DEFUN([CF_FIXUP_ADAFLAGS],[
1343 AC_MSG_CHECKING(optimization options for ADAFLAGS)
1344 case "$CFLAGS" in
1345 (*-g*)
1346 CF_ADD_ADAFLAGS(-g)
1347 ;;
1348 esac
1349 case "$CFLAGS" in
1350 (*-O*)
1351 cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'`
1352 CF_ADD_ADAFLAGS($cf_O_flag)
1353 ;;
1354 esac
1355 AC_MSG_RESULT($ADAFLAGS)
1356])dnl
1357dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001358dnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31
1359dnl ---------------
1360dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's
1361dnl "-Werror" flags can interfere with configure-checks. Those go into
1362dnl EXTRA_CFLAGS.
1363dnl
1364dnl $1 = variable name to repair
1365define([CF_FIX_WARNINGS],[
1366if test "$GCC" = yes || test "$GXX" = yes
1367then
1368 case [$]$1 in
1369 (*-Werror=*)
1370 cf_temp_flags=
1371 for cf_temp_scan in [$]$1
1372 do
1373 case "x$cf_temp_scan" in
1374 (x-Werror=format*)
1375 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
1376 ;;
1377 (x-Werror=*)
1378 CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
1379 ;;
1380 (*)
1381 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
1382 ;;
1383 esac
1384 done
1385 if test "x[$]$1" != "x$cf_temp_flags"
1386 then
1387 CF_VERBOSE(repairing $1: [$]$1)
1388 $1="$cf_temp_flags"
1389 CF_VERBOSE(... fixed [$]$1)
1390 CF_VERBOSE(... extra $EXTRA_CFLAGS)
1391 fi
1392 ;;
1393 esac
1394fi
1395AC_SUBST(EXTRA_CFLAGS)
1396])dnl
1397dnl ---------------------------------------------------------------------------
1398dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56
1399dnl ---------------
1400dnl Check for gettimeofday or clock_gettime. In 2023, the former is still more
1401dnl widely supported, but "deprecated" (2008), so we will use the latter if it
1402dnl is available, to reduce compiler warnings.
1403AC_DEFUN([CF_FUNC_GETTIME],[
1404AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[
1405 AC_TRY_LINK([#include <time.h>],
1406 [struct timespec ts;
1407 int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts],
1408 [cf_cv_func_clock_gettime=yes],
1409 [cf_cv_func_clock_gettime=no])
1410])
1411
1412if test "$cf_cv_func_clock_gettime" = yes
1413then
1414 AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function])
1415else
1416AC_CHECK_FUNC(gettimeofday,
1417 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
1418
1419AC_CHECK_LIB(bsd, gettimeofday,
1420 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
1421 CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
1422fi
1423])dnl
1424dnl ---------------------------------------------------------------------------
1425dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
Steve Kondikae271bc2015-11-15 02:50:53 +01001426dnl -----------------
1427dnl Test for availability of useful gcc __attribute__ directives to quiet
1428dnl compiler warnings. Though useful, not all are supported -- and contrary
1429dnl to documentation, unrecognized directives cause older compilers to barf.
1430AC_DEFUN([CF_GCC_ATTRIBUTES],
micky3879b9f5e72025-07-08 18:04:53 -04001431[AC_REQUIRE([AC_PROG_FGREP])dnl
1432AC_REQUIRE([CF_C11_NORETURN])dnl
1433
1434if test "$GCC" = yes || test "$GXX" = yes
Steve Kondikae271bc2015-11-15 02:50:53 +01001435then
1436cat > conftest.i <<EOF
1437#ifndef GCC_PRINTF
1438#define GCC_PRINTF 0
1439#endif
1440#ifndef GCC_SCANF
1441#define GCC_SCANF 0
1442#endif
1443#ifndef GCC_NORETURN
1444#define GCC_NORETURN /* nothing */
1445#endif
1446#ifndef GCC_UNUSED
1447#define GCC_UNUSED /* nothing */
1448#endif
1449EOF
1450if test "$GCC" = yes
1451then
1452 AC_CHECKING([for $CC __attribute__ directives])
micky3879b9f5e72025-07-08 18:04:53 -04001453cat > "conftest.$ac_ext" <<EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01001454#line __oline__ "${as_me:-configure}"
micky3879b9f5e72025-07-08 18:04:53 -04001455#include <stdio.h>
Steve Kondikae271bc2015-11-15 02:50:53 +01001456#include "confdefs.h"
1457#include "conftest.h"
1458#include "conftest.i"
1459#if GCC_PRINTF
1460#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
1461#else
1462#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
1463#endif
1464#if GCC_SCANF
1465#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
1466#else
1467#define GCC_SCANFLIKE(fmt,var) /*nothing*/
1468#endif
1469extern void wow(char *,...) GCC_SCANFLIKE(1,2);
micky3879b9f5e72025-07-08 18:04:53 -04001470extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
1471extern GCC_NORETURN void foo(void);
1472int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
Steve Kondikae271bc2015-11-15 02:50:53 +01001473EOF
1474 cf_printf_attribute=no
1475 cf_scanf_attribute=no
1476 for cf_attribute in scanf printf unused noreturn
1477 do
1478 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
1479 cf_directive="__attribute__(($cf_attribute))"
1480 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
1481
micky3879b9f5e72025-07-08 18:04:53 -04001482 case "$cf_attribute" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001483 (printf)
1484 cf_printf_attribute=yes
1485 cat >conftest.h <<EOF
1486#define GCC_$cf_ATTRIBUTE 1
1487EOF
1488 ;;
1489 (scanf)
1490 cf_scanf_attribute=yes
1491 cat >conftest.h <<EOF
1492#define GCC_$cf_ATTRIBUTE 1
1493EOF
1494 ;;
1495 (*)
1496 cat >conftest.h <<EOF
1497#define GCC_$cf_ATTRIBUTE $cf_directive
1498EOF
1499 ;;
1500 esac
1501
1502 if AC_TRY_EVAL(ac_compile); then
1503 test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
1504 cat conftest.h >>confdefs.h
micky3879b9f5e72025-07-08 18:04:53 -04001505 case "$cf_attribute" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001506 (noreturn)
1507 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
1508 ;;
1509 (printf)
1510 cf_value='/* nothing */'
1511 if test "$cf_printf_attribute" != no ; then
1512 cf_value='__attribute__((format(printf,fmt,var)))'
1513 AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
1514 fi
1515 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
1516 ;;
1517 (scanf)
1518 cf_value='/* nothing */'
1519 if test "$cf_scanf_attribute" != no ; then
1520 cf_value='__attribute__((format(scanf,fmt,var)))'
1521 AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
1522 fi
1523 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
1524 ;;
1525 (unused)
1526 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
1527 ;;
1528 esac
1529 fi
1530 done
1531else
micky3879b9f5e72025-07-08 18:04:53 -04001532 ${FGREP-fgrep} define conftest.i >>confdefs.h
Steve Kondikae271bc2015-11-15 02:50:53 +01001533fi
micky3879b9f5e72025-07-08 18:04:53 -04001534rm -rf ./conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001535fi
1536])dnl
1537dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001538dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
Steve Kondikae271bc2015-11-15 02:50:53 +01001539dnl --------------
micky3879b9f5e72025-07-08 18:04:53 -04001540dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
1541dnl compatible), attempt to determine if icc/clang is actually used.
Steve Kondikae271bc2015-11-15 02:50:53 +01001542AC_DEFUN([CF_GCC_VERSION],[
1543AC_REQUIRE([AC_PROG_CC])
1544GCC_VERSION=none
1545if test "$GCC" = yes ; then
1546 AC_MSG_CHECKING(version of $CC)
micky3879b9f5e72025-07-08 18:04:53 -04001547 GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
Steve Kondikae271bc2015-11-15 02:50:53 +01001548 test -z "$GCC_VERSION" && GCC_VERSION=unknown
1549 AC_MSG_RESULT($GCC_VERSION)
1550fi
micky3879b9f5e72025-07-08 18:04:53 -04001551CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
1552CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
Steve Kondikae271bc2015-11-15 02:50:53 +01001553])dnl
1554dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001555dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
Steve Kondikae271bc2015-11-15 02:50:53 +01001556dnl ---------------
1557dnl Check if the compiler supports useful warning options. There's a few that
1558dnl we don't use, simply because they're too noisy:
1559dnl
1560dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
micky3879b9f5e72025-07-08 18:04:53 -04001561dnl -Winline (usually not worthwhile)
Steve Kondikae271bc2015-11-15 02:50:53 +01001562dnl -Wredundant-decls (system headers make this too noisy)
1563dnl -Wtraditional (combines too many unrelated messages, only a few useful)
1564dnl -Wwrite-strings (too noisy, but should review occasionally). This
1565dnl is enabled for ncurses using "--enable-const".
1566dnl -pedantic
1567dnl
1568dnl Parameter:
1569dnl $1 is an optional list of gcc warning flags that a particular
1570dnl application might want to use, e.g., "no-unused" for
1571dnl -Wno-unused
1572dnl Special:
1573dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
1574dnl
1575AC_DEFUN([CF_GCC_WARNINGS],
1576[
1577AC_REQUIRE([CF_GCC_VERSION])
micky3879b9f5e72025-07-08 18:04:53 -04001578if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
1579cat > "conftest.$ac_ext" <<EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01001580#line __oline__ "${as_me:-configure}"
1581int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
1582EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01001583if test "$INTEL_COMPILER" = yes
1584then
1585# The "-wdXXX" options suppress warnings:
1586# remark #1419: external declaration in primary source file
1587# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
1588# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
1589# remark #193: zero used for undefined preprocessing identifier
1590# remark #593: variable "curs_sb_left_arrow" was set but never used
1591# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
1592# remark #869: parameter "tw" was never referenced
1593# remark #981: operands are evaluated in unspecified order
1594# warning #279: controlling expression is constant
1595
1596 AC_CHECKING([for $CC warning options])
1597 cf_save_CFLAGS="$CFLAGS"
micky3879b9f5e72025-07-08 18:04:53 -04001598 EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
Steve Kondikae271bc2015-11-15 02:50:53 +01001599 for cf_opt in \
1600 wd1419 \
1601 wd1683 \
1602 wd1684 \
1603 wd193 \
1604 wd593 \
1605 wd279 \
1606 wd810 \
1607 wd869 \
1608 wd981
1609 do
1610 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1611 if AC_TRY_EVAL(ac_compile); then
1612 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1613 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1614 fi
1615 done
1616 CFLAGS="$cf_save_CFLAGS"
micky3879b9f5e72025-07-08 18:04:53 -04001617elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
Steve Kondikae271bc2015-11-15 02:50:53 +01001618then
1619 AC_CHECKING([for $CC warning options])
1620 cf_save_CFLAGS="$CFLAGS"
Steve Kondikae271bc2015-11-15 02:50:53 +01001621 cf_warn_CONST=""
1622 test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
1623 cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
1624 test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
1625 for cf_opt in W Wall \
1626 Wbad-function-cast \
1627 Wcast-align \
1628 Wcast-qual \
1629 Wdeclaration-after-statement \
1630 Wextra \
1631 Winline \
1632 Wmissing-declarations \
1633 Wmissing-prototypes \
1634 Wnested-externs \
1635 Wpointer-arith \
1636 Wshadow \
1637 Wstrict-prototypes \
micky3879b9f5e72025-07-08 18:04:53 -04001638 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
Steve Kondikae271bc2015-11-15 02:50:53 +01001639 do
1640 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1641 if AC_TRY_EVAL(ac_compile); then
1642 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
micky3879b9f5e72025-07-08 18:04:53 -04001643 case "$cf_opt" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001644 (Winline)
micky3879b9f5e72025-07-08 18:04:53 -04001645 case "$GCC_VERSION" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001646 ([[34]].*)
1647 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1648 continue;;
1649 esac
1650 ;;
1651 (Wpointer-arith)
micky3879b9f5e72025-07-08 18:04:53 -04001652 case "$GCC_VERSION" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001653 ([[12]].*)
1654 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1655 continue;;
1656 esac
1657 ;;
1658 esac
1659 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1660 fi
1661 done
1662 CFLAGS="$cf_save_CFLAGS"
1663fi
micky3879b9f5e72025-07-08 18:04:53 -04001664rm -rf ./conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001665
1666AC_SUBST(EXTRA_CFLAGS)
1667])dnl
1668dnl ---------------------------------------------------------------------------
1669dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
1670dnl -----------------
1671AC_DEFUN([CF_GNATPREP_OPT_T],[
1672AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
1673cf_cv_gnatprep_opt_t=no
1674gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
1675])
1676test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
1677AC_SUBST(GNATPREP_OPTS)
1678])dnl
1679dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001680dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01001681dnl ----------------
1682AC_DEFUN([CF_GNAT_GENERICS],
1683[
1684AC_REQUIRE([CF_GNAT_VERSION])
1685
1686AC_MSG_CHECKING(if GNAT supports generics)
micky3879b9f5e72025-07-08 18:04:53 -04001687case "$cf_cv_gnat_version" in
1688(3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
Steve Kondikae271bc2015-11-15 02:50:53 +01001689 cf_gnat_generics=yes
1690 ;;
1691(*)
1692 cf_gnat_generics=no
1693 ;;
1694esac
1695AC_MSG_RESULT($cf_gnat_generics)
1696
1697if test "$cf_gnat_generics" = yes
1698then
1699 cf_compile_generics=generics
1700 cf_generic_objects="\${GENOBJS}"
1701else
1702 cf_compile_generics=
1703 cf_generic_objects=
1704fi
1705
1706AC_SUBST(cf_compile_generics)
1707AC_SUBST(cf_generic_objects)
1708])dnl
1709dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001710dnl CF_GNAT_PROJECTS version: 13 updated: 2021/01/02 17:09:14
Steve Kondikae271bc2015-11-15 02:50:53 +01001711dnl ----------------
1712dnl GNAT projects are configured with ".gpr" project files.
1713dnl GNAT libraries are a further development, using the project feature.
1714AC_DEFUN([CF_GNAT_PROJECTS],
1715[
1716AC_REQUIRE([CF_GNAT_VERSION])
1717AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
1718
1719cf_gnat_libraries=no
1720cf_gnat_projects=no
1721
1722if test "$enable_gnat_projects" != no ; then
1723AC_MSG_CHECKING(if GNAT supports project files)
micky3879b9f5e72025-07-08 18:04:53 -04001724case "$cf_cv_gnat_version" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001725(3.[[0-9]]*)
1726 ;;
1727(*)
micky3879b9f5e72025-07-08 18:04:53 -04001728 case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01001729 (cygwin*|msys*)
1730 ;;
1731 (*)
micky3879b9f5e72025-07-08 18:04:53 -04001732 rm -rf ./conftest* ./*~conftest*
1733 if mkdir conftest.src conftest.bin conftest.lib
1734 then
1735 cd conftest.src
1736 rm -rf ./conftest* ./*~conftest*
1737 cat >>library.gpr <<CF_EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01001738project Library is
1739 Kind := External ("LIB_KIND");
1740 for Library_Name use "ConfTest";
1741 for Object_Dir use ".";
1742 for Library_ALI_Dir use External("LIBRARY_DIR");
1743 for Library_Version use External ("SONAME");
1744 for Library_Kind use Kind;
1745 for Library_Dir use External("BUILD_DIR");
1746 Source_Dir := External ("SOURCE_DIR");
1747 for Source_Dirs use (Source_Dir);
1748end Library;
1749CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04001750 cat >>confpackage.ads <<CF_EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01001751package ConfPackage is
1752 procedure conftest;
1753end ConfPackage;
1754CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04001755 cat >>confpackage.adb <<CF_EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01001756with Text_IO;
1757package body ConfPackage is
1758 procedure conftest is
1759 begin
1760 Text_IO.Put ("Hello World");
1761 Text_IO.New_Line;
1762 end conftest;
1763end ConfPackage;
1764CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04001765 if ( "$cf_ada_make" $ADAFLAGS \
1766 -Plibrary.gpr \
1767 -XBUILD_DIR="`cd ../conftest.bin;pwd`" \
1768 -XLIBRARY_DIR="`cd ../conftest.lib;pwd`" \
1769 -XSOURCE_DIR="`pwd`" \
1770 -XSONAME=libConfTest.so.1 \
1771 -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
1772 cf_gnat_projects=yes
1773 fi
1774 cd ..
Steve Kondikae271bc2015-11-15 02:50:53 +01001775 fi
Steve Kondikae271bc2015-11-15 02:50:53 +01001776 if test -f conftest.lib/confpackage.ali
1777 then
1778 cf_gnat_libraries=yes
1779 fi
micky3879b9f5e72025-07-08 18:04:53 -04001780 rm -rf ./conftest* ./*~conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001781 ;;
1782 esac
1783 ;;
1784esac
1785AC_MSG_RESULT($cf_gnat_projects)
1786fi # enable_gnat_projects
1787
micky3879b9f5e72025-07-08 18:04:53 -04001788if test "$cf_gnat_projects" = yes
Steve Kondikae271bc2015-11-15 02:50:53 +01001789then
1790 AC_MSG_CHECKING(if GNAT supports libraries)
1791 AC_MSG_RESULT($cf_gnat_libraries)
1792fi
1793
micky3879b9f5e72025-07-08 18:04:53 -04001794USE_OLD_MAKERULES=""
1795USE_GNAT_PROJECTS="#"
1796USE_GNAT_MAKE_GPR="#"
1797USE_GNAT_GPRBUILD="#"
1798
Steve Kondikae271bc2015-11-15 02:50:53 +01001799if test "$cf_gnat_projects" = yes
1800then
1801 USE_OLD_MAKERULES="#"
1802 USE_GNAT_PROJECTS=""
micky3879b9f5e72025-07-08 18:04:53 -04001803 if test "$cf_cv_VERSION_GPRBUILD" != no
1804 then
1805 USE_GNAT_GPRBUILD=""
1806 elif test "$cf_cv_VERSION_GNATMAKE" != no
1807 then
1808 USE_GNAT_MAKE_GPR=""
1809 else
1810 AC_MSG_WARN(use old makefile rules since tools are missing)
1811 fi
Steve Kondikae271bc2015-11-15 02:50:53 +01001812fi
1813
1814if test "$cf_gnat_libraries" = yes
1815then
1816 USE_GNAT_LIBRARIES=""
1817else
1818 USE_GNAT_LIBRARIES="#"
1819fi
1820
1821AC_SUBST(USE_OLD_MAKERULES)
1822AC_SUBST(USE_GNAT_PROJECTS)
1823AC_SUBST(USE_GNAT_LIBRARIES)
micky3879b9f5e72025-07-08 18:04:53 -04001824AC_SUBST(USE_GNAT_MAKE_GPR)
1825AC_SUBST(USE_GNAT_GPRBUILD)
Steve Kondikae271bc2015-11-15 02:50:53 +01001826])dnl
1827dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001828dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01001829dnl --------------
1830dnl Check if gnat supports SIGINT, and presumably tasking. For the latter, it
1831dnl is noted that gnat may compile a tasking unit even for configurations which
1832dnl fail at runtime.
1833AC_DEFUN([CF_GNAT_SIGINT],[
1834AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[
1835CF_GNAT_TRY_LINK([with Ada.Interrupts.Names;
1836
1837package ConfTest is
1838
1839 pragma Warnings (Off); -- the next pragma exists since 3.11p
1840 pragma Unreserve_All_Interrupts;
1841 pragma Warnings (On);
1842
1843 protected Process is
1844 procedure Stop;
1845 function Continue return Boolean;
1846 pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT);
1847 private
1848 Done : Boolean := False;
1849 end Process;
1850
1851end ConfTest;],
1852[package body ConfTest is
1853 protected body Process is
1854 procedure Stop is
1855 begin
1856 Done := True;
1857 end Stop;
1858 function Continue return Boolean is
1859 begin
1860 return not Done;
1861 end Continue;
1862 end Process;
1863end ConfTest;],
1864 [cf_cv_gnat_sigint=yes],
1865 [cf_cv_gnat_sigint=no])])
1866
micky3879b9f5e72025-07-08 18:04:53 -04001867if test "$cf_cv_gnat_sigint" = yes ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01001868 USE_GNAT_SIGINT=""
1869else
1870 USE_GNAT_SIGINT="#"
1871fi
1872AC_SUBST(USE_GNAT_SIGINT)
1873])dnl
1874dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001875dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01001876dnl ----------------
1877dnl Verify that a test program compiles/links with GNAT.
1878dnl $cf_ada_make is set to the program that compiles/links
1879dnl $ADAFLAGS may be set to the GNAT flags.
1880dnl
1881dnl $1 is the text of the spec
1882dnl $2 is the text of the body
1883dnl $3 is the shell command to execute if successful
1884dnl $4 is the shell command to execute if not successful
1885AC_DEFUN([CF_GNAT_TRY_LINK],
1886[
micky3879b9f5e72025-07-08 18:04:53 -04001887rm -rf ./conftest* ./*~conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001888cat >>conftest.ads <<CF_EOF
1889$1
1890CF_EOF
1891cat >>conftest.adb <<CF_EOF
1892$2
1893CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04001894if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01001895ifelse($3,, :,[ $3])
1896ifelse($4,,,[else
1897 $4])
1898fi
micky3879b9f5e72025-07-08 18:04:53 -04001899rm -rf ./conftest* ./*~conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001900])dnl
1901dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001902dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01001903dnl ---------------
1904dnl Verify that a test program compiles and runs with GNAT
1905dnl $cf_ada_make is set to the program that compiles/links
1906dnl $ADAFLAGS may be set to the GNAT flags.
1907dnl
1908dnl $1 is the text of the spec
1909dnl $2 is the text of the body
1910dnl $3 is the shell command to execute if successful
1911dnl $4 is the shell command to execute if not successful
1912AC_DEFUN([CF_GNAT_TRY_RUN],
1913[
micky3879b9f5e72025-07-08 18:04:53 -04001914rm -rf ./conftest* ./*~conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001915cat >>conftest.ads <<CF_EOF
1916$1
1917CF_EOF
1918cat >>conftest.adb <<CF_EOF
1919$2
1920CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04001921if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01001922 if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
1923ifelse($3,, :,[ $3])
1924ifelse($4,,,[ else
1925 $4])
1926 fi
1927ifelse($4,,,[else
1928 $4])
1929fi
micky3879b9f5e72025-07-08 18:04:53 -04001930rm -rf ./conftest* ./*~conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01001931])dnl
1932dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001933dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
Steve Kondikae271bc2015-11-15 02:50:53 +01001934dnl ---------------
micky3879b9f5e72025-07-08 18:04:53 -04001935dnl $1 = cache variable to update
1936dnl $2 = program name
1937dnl Verify version of GNAT or related tool
Steve Kondikae271bc2015-11-15 02:50:53 +01001938AC_DEFUN([CF_GNAT_VERSION],
1939[
micky3879b9f5e72025-07-08 18:04:53 -04001940AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
1941cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
Steve Kondikae271bc2015-11-15 02:50:53 +01001942 grep '[[0-9]].[[0-9]][[0-9]]*' |\
1943 sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
Steve Kondikae271bc2015-11-15 02:50:53 +01001944])
micky3879b9f5e72025-07-08 18:04:53 -04001945test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
1946ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
1947])dnl
Steve Kondikae271bc2015-11-15 02:50:53 +01001948dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04001949dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
Steve Kondikae271bc2015-11-15 02:50:53 +01001950dnl -------------
1951dnl Check if we must define _GNU_SOURCE to get a reasonable value for
1952dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
1953dnl (or misfeature) of glibc2, which breaks portability of many applications,
1954dnl since it is interwoven with GNU extensions.
1955dnl
1956dnl Well, yes we could work around it...
micky3879b9f5e72025-07-08 18:04:53 -04001957dnl
1958dnl Parameters:
1959dnl $1 is the nominal value for _XOPEN_SOURCE
Steve Kondikae271bc2015-11-15 02:50:53 +01001960AC_DEFUN([CF_GNU_SOURCE],
1961[
micky3879b9f5e72025-07-08 18:04:53 -04001962cf_gnu_xopen_source=ifelse($1,,500,$1)
1963
1964AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
Steve Kondikae271bc2015-11-15 02:50:53 +01001965AC_TRY_COMPILE([#include <sys/types.h>],[
micky3879b9f5e72025-07-08 18:04:53 -04001966 #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
1967 return 0;
1968 #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
1969 return 0;
1970 #else
1971 # error not GNU C library
1972 #endif],
1973 [cf_cv_gnu_library=yes],
1974 [cf_cv_gnu_library=no])
Steve Kondikae271bc2015-11-15 02:50:53 +01001975])
micky3879b9f5e72025-07-08 18:04:53 -04001976
1977if test x$cf_cv_gnu_library = xyes; then
1978
1979 # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
1980 # was changed to help a little. newlib incorporated the change about 4
1981 # years later.
1982 AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
1983 cf_save="$CPPFLAGS"
1984 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
1985 AC_TRY_COMPILE([#include <sys/types.h>],[
1986 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
1987 return 0;
1988 #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
1989 return 0;
1990 #else
1991 # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
1992 #endif],
1993 [cf_cv_gnu_library_219=yes],
1994 [cf_cv_gnu_library_219=no])
1995 CPPFLAGS="$cf_save"
1996 ])
1997
1998 if test "x$cf_cv_gnu_library_219" = xyes; then
1999 cf_save="$CPPFLAGS"
2000 AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
2001 CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
2002 AC_TRY_COMPILE([
2003 #include <limits.h>
2004 #include <sys/types.h>
2005 ],[
2006 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
2007 return 0;
2008 #else
2009 # error GNU C library is too old
2010 #endif],
2011 [cf_cv_gnu_dftsrc_219=yes],
2012 [cf_cv_gnu_dftsrc_219=no])
2013 ])
2014 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
2015 else
2016 cf_cv_gnu_dftsrc_219=maybe
2017 fi
2018
2019 if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
2020
2021 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
2022 AC_TRY_COMPILE([#include <sys/types.h>],[
2023 #ifndef _XOPEN_SOURCE
2024 #error expected _XOPEN_SOURCE to be defined
2025 #endif],
2026 [cf_cv_gnu_source=no],
2027 [cf_save="$CPPFLAGS"
2028 CF_ADD_CFLAGS(-D_GNU_SOURCE)
2029 AC_TRY_COMPILE([#include <sys/types.h>],[
2030 #ifdef _XOPEN_SOURCE
2031 #error expected _XOPEN_SOURCE to be undefined
2032 #endif],
2033 [cf_cv_gnu_source=no],
2034 [cf_cv_gnu_source=yes])
2035 CPPFLAGS="$cf_save"
2036 ])
2037 ])
2038
2039 if test "$cf_cv_gnu_source" = yes
2040 then
2041 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
2042 CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
2043 AC_TRY_COMPILE([#include <sys/types.h>],[
2044 #ifdef _DEFAULT_SOURCE
2045 #error expected _DEFAULT_SOURCE to be undefined
2046 #endif],
2047 [cf_cv_default_source=no],
2048 [cf_cv_default_source=yes])
2049 ])
2050 if test "$cf_cv_default_source" = yes
2051 then
2052 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
2053 fi
2054 fi
2055 fi
2056
2057fi
Steve Kondikae271bc2015-11-15 02:50:53 +01002058])dnl
2059dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002060dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01002061dnl --------------
2062dnl Construct a search-list of directories for a nonstandard header-file
2063dnl
2064dnl Parameters
2065dnl $1 = the variable to return as result
2066dnl $2 = the package name
2067AC_DEFUN([CF_HEADER_PATH],
2068[
2069$1=
2070
2071# collect the current set of include-directories from compiler flags
2072cf_header_path_list=""
2073if test -n "${CFLAGS}${CPPFLAGS}" ; then
2074 for cf_header_path in $CPPFLAGS $CFLAGS
2075 do
micky3879b9f5e72025-07-08 18:04:53 -04002076 case "$cf_header_path" in
Steve Kondikae271bc2015-11-15 02:50:53 +01002077 (-I*)
2078 cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
2079 CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
2080 cf_header_path_list="$cf_header_path_list [$]$1"
2081 ;;
2082 esac
2083 done
2084fi
2085
2086# add the variations for the package we are looking for
2087CF_SUBDIR_PATH($1,$2,include)
2088
2089test "$includedir" != NONE && \
2090test "$includedir" != "/usr/include" && \
2091test -d "$includedir" && {
micky3879b9f5e72025-07-08 18:04:53 -04002092 test -d "$includedir" && $1="[$]$1 $includedir"
2093 test -d "$includedir/$2" && $1="[$]$1 $includedir/$2"
Steve Kondikae271bc2015-11-15 02:50:53 +01002094}
2095
2096test "$oldincludedir" != NONE && \
2097test "$oldincludedir" != "/usr/include" && \
2098test -d "$oldincludedir" && {
micky3879b9f5e72025-07-08 18:04:53 -04002099 test -d "$oldincludedir" && $1="[$]$1 $oldincludedir"
2100 test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2"
Steve Kondikae271bc2015-11-15 02:50:53 +01002101}
2102
2103$1="[$]$1 $cf_header_path_list"
2104])dnl
2105dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002106dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
Steve Kondikae271bc2015-11-15 02:50:53 +01002107dnl ---------------
2108dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
2109AC_DEFUN([CF_HELP_MESSAGE],
micky3879b9f5e72025-07-08 18:04:53 -04002110[CF_ACVERSION_CHECK(2.53,[],[
2111AC_DIVERT_HELP($1)])dnl
Steve Kondikae271bc2015-11-15 02:50:53 +01002112])dnl
2113dnl ---------------------------------------------------------------------------
2114dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42
2115dnl ---------------
2116dnl Construct the list of include-options according to whether we're building
2117dnl in the source directory or using '--srcdir=DIR' option.
2118AC_DEFUN([CF_INCLUDE_DIRS],
2119[
2120if test "$srcdir" != "."; then
2121 CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
2122fi
2123CPPFLAGS="-I../include $CPPFLAGS"
2124if test "$srcdir" != "."; then
2125 CPPFLAGS="-I\${srcdir} $CPPFLAGS"
2126fi
2127CPPFLAGS="-I. $CPPFLAGS"
2128AC_SUBST(CPPFLAGS)
2129])dnl
2130dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002131dnl CF_INSTALL_OPTS version: 3 updated: 2023/06/03 15:17:30
2132dnl ---------------
2133dnl prompt for/fill-in useful install-program options
2134AC_DEFUN([CF_INSTALL_OPTS],
2135[
2136CF_INSTALL_OPT_S
2137CF_INSTALL_OPT_P
2138CF_INSTALL_OPT_O
2139CF_INSTALL_OPT_STRIP_PROG
2140])dnl
2141dnl ---------------------------------------------------------------------------
2142dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
2143dnl ----------------
2144dnl Almost all "install" programs default to the current user's ownership.
2145dnl Almost - MINIX is an exception.
2146AC_DEFUN([CF_INSTALL_OPT_O],
2147[
2148AC_MSG_CHECKING(if install needs to be told about ownership)
2149case `$ac_config_guess` in
2150(*minix)
2151 with_install_o=yes
2152 ;;
2153(*)
2154 with_install_o=no
2155 ;;
2156esac
2157
2158AC_MSG_RESULT($with_install_o)
2159if test "x$with_install_o" = xyes
2160then
2161 INSTALL_OPT_O="`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`"
2162else
2163 INSTALL_OPT_O=
2164fi
2165
2166AC_SUBST(INSTALL_OPT_O)
2167])dnl
2168dnl ---------------------------------------------------------------------------
2169dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04
2170dnl ----------------
2171dnl Some install-programs accept a "-p" option to preserve file modification
2172dnl timestamps. That can be useful as an install option, as well as a way to
2173dnl avoid the need for ranlib after copying a static archive.
2174AC_DEFUN([CF_INSTALL_OPT_P],
2175[
2176: "${INSTALL:=install}"
2177AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
2178 rm -rf ./conftest*
2179 date >conftest.in
2180 mkdir conftest.out
2181 sleep 3
2182 if $INSTALL -p conftest.in conftest.out 2>/dev/null
2183 then
2184 if test -f conftest.out/conftest.in
2185 then
2186 test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
2187 test conftest.out/conftest.in -nt conftest.in 2>conftest.err
2188 if test -s conftest.err
2189 then
2190 cf_cv_install_p=no
2191 else
2192 cf_cv_install_p=yes
2193 fi
2194 else
2195 cf_cv_install_p=no
2196 fi
2197 else
2198 cf_cv_install_p=no
2199 fi
2200 rm -rf ./conftest*
2201])
2202])dnl
2203dnl ---------------------------------------------------------------------------
2204dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48
2205dnl ----------------
2206dnl By default, we should strip executables which are installed, but leave the
2207dnl ability to suppress that for unit-testing.
2208AC_DEFUN([CF_INSTALL_OPT_S],
2209[
2210AC_MSG_CHECKING(if you want to install stripped executables)
2211CF_ARG_DISABLE(stripping,
2212 [ --disable-stripping do not strip (debug info) installed executables],
2213 [enable_stripping=no],
2214 [enable_stripping=yes])
2215AC_MSG_RESULT($enable_stripping)
2216
2217if test "$enable_stripping" = yes
2218then
2219 INSTALL_OPT_S="-s"
2220else
2221 INSTALL_OPT_S=
2222fi
2223AC_SUBST(INSTALL_OPT_S)
2224])dnl
2225dnl ---------------------------------------------------------------------------
2226dnl CF_INSTALL_OPT_STRIP_PROG version: 1 updated: 2023/06/03 15:17:30
2227dnl -------------------------
2228dnl Provide an option for overriding the strip program used in install "-s"
2229dnl
2230dnl coreutils install provides a --strip-program option
2231dnl FreeBSD uses STRIPBIN environment variable, while NetBSD and OpenBSD use
2232dnl STRIP environment variable. Other versions of install do not support this.
2233AC_DEFUN([CF_INSTALL_OPT_STRIP_PROG],
2234[
2235AC_REQUIRE([CF_INSTALL_OPT_S])
2236if test -n "$INSTALL_OPT_S"
2237then
2238 AC_MSG_CHECKING(if you want to specify strip-program)
2239 AC_ARG_WITH(strip-program,
2240 [ --with-strip-program=XX specify program to use when stripping in install],
2241 [with_strip_program=$withval],
2242 [with_strip_program=no])
2243 AC_MSG_RESULT($with_strip_program)
2244 if test "$with_strip_program" != no
2245 then
2246 AC_MSG_CHECKING(if strip-program is supported with this installer)
2247 cf_install_program=`echo "$INSTALL" | sed -e 's%[[ ]]*[[ ]]-.%%'`
2248 check_install_strip=no
2249 if test -f "$cf_install_program"
2250 then
2251 check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
2252 if test -n "$check_install_version"
2253 then
2254 check_install_strip="option"
2255 else
2256 for check_strip_variable in STRIPBIN STRIP
2257 do
2258 if strings "$cf_install_program" | grep "^$check_strip_variable[$]" >/dev/null
2259 then
2260 check_install_strip="environ"
2261 break
2262 fi
2263 done
2264 fi
2265 fi
2266 AC_MSG_RESULT($check_install_strip)
2267 case "$check_install_strip" in
2268 (no)
2269 AC_MSG_WARN($cf_install_program does not support strip program option)
2270 with_strip_program=no
2271 ;;
2272 (environ)
2273 cat >install.tmp <<-CF_EOF
2274 #! $SHELL
2275 STRIPBIN="$with_strip_program" \\
2276 STRIP="$with_strip_program" \\
2277 $INSTALL "[$]@"
2278 CF_EOF
2279 INSTALL="`pwd`/install.tmp"
2280 chmod +x "$INSTALL"
2281 CF_VERBOSE(created $INSTALL)
2282 ;;
2283 (option)
2284 INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
2285 ;;
2286 esac
2287 fi
2288fi
2289AC_SUBST(INSTALL_OPT_S)
2290])dnl
2291dnl ---------------------------------------------------------------------------
2292dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
Steve Kondikae271bc2015-11-15 02:50:53 +01002293dnl -----------------
2294dnl Check if the given compiler is really the Intel compiler for Linux. It
2295dnl tries to imitate gcc, but does not return an error when it finds a mismatch
2296dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
2297dnl
2298dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
2299dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
2300dnl the wrappers for gcc and g++ warnings.
2301dnl
2302dnl $1 = GCC (default) or GXX
2303dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
2304dnl $3 = CFLAGS (default) or CXXFLAGS
2305AC_DEFUN([CF_INTEL_COMPILER],[
2306AC_REQUIRE([AC_CANONICAL_HOST])
2307ifelse([$2],,INTEL_COMPILER,[$2])=no
2308
2309if test "$ifelse([$1],,[$1],GCC)" = yes ; then
micky3879b9f5e72025-07-08 18:04:53 -04002310 case "$host_os" in
Steve Kondikae271bc2015-11-15 02:50:53 +01002311 (linux*|gnu*)
2312 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
2313 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
2314 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
2315 AC_TRY_COMPILE([],[
2316#ifdef __INTEL_COMPILER
2317#else
micky3879b9f5e72025-07-08 18:04:53 -04002318#error __INTEL_COMPILER is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +01002319#endif
2320],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
2321cf_save_CFLAGS="$cf_save_CFLAGS -we147"
2322],[])
2323 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
2324 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
2325 ;;
2326 esac
2327fi
2328])dnl
2329dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002330dnl CF_LARGEFILE version: 13 updated: 2023/12/03 19:09:59
Steve Kondikae271bc2015-11-15 02:50:53 +01002331dnl ------------
2332dnl Add checks for large file support.
2333AC_DEFUN([CF_LARGEFILE],[
2334ifdef([AC_FUNC_FSEEKO],[
2335 AC_SYS_LARGEFILE
2336 if test "$enable_largefile" != no ; then
2337 AC_FUNC_FSEEKO
2338
2339 # Normally we would collect these definitions in the config.h,
2340 # but (like _XOPEN_SOURCE), some environments rely on having these
2341 # defined before any of the system headers are included. Another
2342 # case comes up with C++, e.g., on AIX the compiler compiles the
2343 # header files by themselves before looking at the body files it is
2344 # told to compile. For ncurses, those header files do not include
2345 # the config.h
micky3879b9f5e72025-07-08 18:04:53 -04002346 if test "$ac_cv_sys_large_files" != no
2347 then
2348 CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES)
2349 fi
2350 if test "$ac_cv_sys_largefile_source" != no
2351 then
2352 CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE)
2353 fi
2354 if test "$ac_cv_sys_file_offset_bits" != no
2355 then
2356 CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits)
2357 fi
Steve Kondikae271bc2015-11-15 02:50:53 +01002358
2359 AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
2360 AC_TRY_COMPILE([
micky3879b9f5e72025-07-08 18:04:53 -04002361#pragma GCC diagnostic error "-Wincompatible-pointer-types"
Steve Kondikae271bc2015-11-15 02:50:53 +01002362#include <sys/types.h>
2363#include <dirent.h>
micky3879b9f5e72025-07-08 18:04:53 -04002364
2365#ifndef __REDIRECT
2366/* if transitional largefile support is setup, this is true */
2367extern struct dirent64 * readdir(DIR *);
2368#endif
Steve Kondikae271bc2015-11-15 02:50:53 +01002369 ],[
micky3879b9f5e72025-07-08 18:04:53 -04002370 DIR *dp = opendir(".");
2371 struct dirent64 *x = readdir(dp);
2372 struct dirent *y = readdir(dp);
Steve Kondikae271bc2015-11-15 02:50:53 +01002373 int z = x - y;
micky3879b9f5e72025-07-08 18:04:53 -04002374 (void)z;
Steve Kondikae271bc2015-11-15 02:50:53 +01002375 ],
2376 [cf_cv_struct_dirent64=yes],
2377 [cf_cv_struct_dirent64=no])
2378 ])
2379 test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
2380 fi
2381])
2382])
2383dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002384dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01002385dnl ---------------
2386dnl For the given system and compiler, find the compiler flags to pass to the
2387dnl loader to use the "rpath" feature.
2388AC_DEFUN([CF_LD_RPATH_OPT],
2389[
2390AC_REQUIRE([CF_CHECK_CACHE])
2391
2392LD_RPATH_OPT=
micky3879b9f5e72025-07-08 18:04:53 -04002393if test "x$cf_cv_enable_rpath" != xno
2394then
2395 AC_MSG_CHECKING(for an rpath option)
2396 case "$cf_cv_system_name" in
2397 (irix*)
2398 if test "$GCC" = yes; then
2399 LD_RPATH_OPT="-Wl,-rpath,"
2400 else
2401 LD_RPATH_OPT="-rpath "
2402 fi
2403 ;;
2404 (linux*|gnu*|k*bsd*-gnu|freebsd*)
Steve Kondikae271bc2015-11-15 02:50:53 +01002405 LD_RPATH_OPT="-Wl,-rpath,"
micky3879b9f5e72025-07-08 18:04:53 -04002406 ;;
2407 (openbsd[[2-9]].*|mirbsd*)
2408 LD_RPATH_OPT="-Wl,-rpath,"
2409 ;;
2410 (dragonfly*)
Steve Kondikae271bc2015-11-15 02:50:53 +01002411 LD_RPATH_OPT="-rpath "
micky3879b9f5e72025-07-08 18:04:53 -04002412 ;;
2413 (netbsd*)
2414 LD_RPATH_OPT="-Wl,-rpath,"
2415 ;;
2416 (osf*|mls+*)
2417 LD_RPATH_OPT="-rpath "
2418 ;;
2419 (solaris2*)
2420 LD_RPATH_OPT="-R"
2421 ;;
2422 (*)
2423 ;;
2424 esac
2425 AC_MSG_RESULT($LD_RPATH_OPT)
Steve Kondikae271bc2015-11-15 02:50:53 +01002426
micky3879b9f5e72025-07-08 18:04:53 -04002427 case "x$LD_RPATH_OPT" in
2428 (x-R*)
2429 AC_MSG_CHECKING(if we need a space after rpath option)
2430 cf_save_LIBS="$LIBS"
2431 CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
2432 AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
2433 LIBS="$cf_save_LIBS"
2434 AC_MSG_RESULT($cf_rpath_space)
2435 test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
2436 ;;
2437 esac
2438fi
Steve Kondikae271bc2015-11-15 02:50:53 +01002439])dnl
2440dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002441dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01002442dnl ---------------
2443dnl Construct a search-list of directories for a nonstandard library-file
2444dnl
2445dnl Parameters
2446dnl $1 = the variable to return as result
2447dnl $2 = the package name
2448AC_DEFUN([CF_LIBRARY_PATH],
2449[
2450$1=
2451cf_library_path_list=""
2452if test -n "${LDFLAGS}${LIBS}" ; then
2453 for cf_library_path in $LDFLAGS $LIBS
2454 do
micky3879b9f5e72025-07-08 18:04:53 -04002455 case "$cf_library_path" in
Steve Kondikae271bc2015-11-15 02:50:53 +01002456 (-L*)
2457 cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
2458 CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
2459 cf_library_path_list="$cf_library_path_list [$]$1"
2460 ;;
2461 esac
2462 done
2463fi
2464
2465CF_SUBDIR_PATH($1,$2,lib)
2466
2467$1="$cf_library_path_list [$]$1"
2468])dnl
2469dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002470dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01002471dnl -------------
2472dnl Compute the library-prefix for the given host system
2473dnl $1 = variable to set
2474define([CF_LIB_PREFIX],
2475[
micky3879b9f5e72025-07-08 18:04:53 -04002476 case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01002477 (OS/2*|os2*)
micky3879b9f5e72025-07-08 18:04:53 -04002478 if test "$DFT_LWR_MODEL" = libtool; then
2479 LIB_PREFIX='lib'
2480 else
2481 LIB_PREFIX=''
2482 fi
2483 ;;
2484 (*-msvc*)
Steve Kondikae271bc2015-11-15 02:50:53 +01002485 LIB_PREFIX=''
2486 ;;
2487 (*) LIB_PREFIX='lib'
2488 ;;
2489 esac
2490ifelse($1,,,[$1=$LIB_PREFIX])
2491 AC_SUBST(LIB_PREFIX)
2492])dnl
2493dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002494dnl CF_LIB_SUFFIX version: 28 updated: 2021/01/01 16:53:59
Steve Kondikae271bc2015-11-15 02:50:53 +01002495dnl -------------
2496dnl Compute the library file-suffix from the given model name
2497dnl $1 = model name
2498dnl $2 = variable to set (the nominal library suffix)
2499dnl $3 = dependency variable to set (actual filename)
2500dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
2501AC_DEFUN([CF_LIB_SUFFIX],
2502[
2503 case X$1 in
2504 (Xlibtool)
2505 $2='.la'
2506 $3=[$]$2
2507 ;;
2508 (Xdebug)
micky3879b9f5e72025-07-08 18:04:53 -04002509 case "$cf_cv_system_name" in
2510 (*-msvc*)
2511 $2='_g.lib'
2512 ;;
2513 (*)
2514 $2='_g.a'
2515 ;;
2516 esac
Steve Kondikae271bc2015-11-15 02:50:53 +01002517 $3=[$]$2
2518 ;;
2519 (Xprofile)
micky3879b9f5e72025-07-08 18:04:53 -04002520 case "$cf_cv_system_name" in
2521 (*-msvc*)
2522 $2='_p.lib'
2523 ;;
2524 (*)
2525 $2='_p.a'
2526 ;;
2527 esac
Steve Kondikae271bc2015-11-15 02:50:53 +01002528 $3=[$]$2
2529 ;;
2530 (Xshared)
micky3879b9f5e72025-07-08 18:04:53 -04002531 case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01002532 (aix[[5-7]]*)
2533 $2='.so'
2534 $3=[$]$2
2535 ;;
micky3879b9f5e72025-07-08 18:04:53 -04002536 (*-msvc*)
2537 $2='.dll'
2538 $3='.dll.lib'
2539 ;;
Steve Kondikae271bc2015-11-15 02:50:53 +01002540 (cygwin*|msys*|mingw*)
2541 $2='.dll'
2542 $3='.dll.a'
2543 ;;
2544 (darwin*)
2545 $2='.dylib'
2546 $3=[$]$2
2547 ;;
2548 (hpux*)
micky3879b9f5e72025-07-08 18:04:53 -04002549 case "$target" in
Steve Kondikae271bc2015-11-15 02:50:53 +01002550 (ia64*)
2551 $2='.so'
2552 $3=[$]$2
2553 ;;
2554 (*)
2555 $2='.sl'
2556 $3=[$]$2
2557 ;;
2558 esac
2559 ;;
2560 (*)
2561 $2='.so'
2562 $3=[$]$2
2563 ;;
2564 esac
2565 ;;
2566 (*)
micky3879b9f5e72025-07-08 18:04:53 -04002567 case "$target" in
2568 (*-msvc*)
2569 $2='.lib'
2570 ;;
2571 (*)
2572 $2='.a'
2573 ;;
2574 esac
Steve Kondikae271bc2015-11-15 02:50:53 +01002575 $3=[$]$2
2576 ;;
2577 esac
2578 if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
2579 then
2580 $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}"
2581 $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}"
2582 fi
2583])dnl
2584dnl ---------------------------------------------------------------------------
2585dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04
2586dnl -----------
2587dnl Compute the string to append to -library from the given model name
2588dnl $1 = model name
2589dnl $2 = variable to set
2590dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
2591AC_DEFUN([CF_LIB_TYPE],
2592[
2593 case $1 in
2594 (libtool) $2='' ;;
2595 (normal) $2='' ;;
2596 (debug) $2='_g' ;;
2597 (profile) $2='_p' ;;
2598 (shared) $2='' ;;
2599 esac
2600 test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
2601])dnl
2602dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002603dnl CF_LINK_DATAONLY version: 15 updated: 2023/12/03 10:03:10
Steve Kondikae271bc2015-11-15 02:50:53 +01002604dnl ----------------
2605dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
2606dnl only data (i.e., no functions), for example NeXT. On those systems we'll
2607dnl have to provide wrappers for global tables to ensure they're linked
2608dnl properly.
2609AC_DEFUN([CF_LINK_DATAONLY],
2610[
2611AC_MSG_CHECKING([if data-only library module links])
2612AC_CACHE_VAL(cf_cv_link_dataonly,[
2613 rm -f conftest.a
2614 cat >conftest.$ac_ext <<EOF
2615#line __oline__ "configure"
2616int testdata[[3]] = { 123, 456, 789 };
2617EOF
2618 if AC_TRY_EVAL(ac_compile) ; then
2619 mv conftest.o data.o && \
2620 ( $AR $ARFLAGS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null
2621 fi
2622 rm -f conftest.$ac_ext data.o
2623 cat >conftest.$ac_ext <<EOF
2624#line __oline__ "configure"
micky3879b9f5e72025-07-08 18:04:53 -04002625extern int testfunc(void);
Steve Kondikae271bc2015-11-15 02:50:53 +01002626#if defined(NeXT)
micky3879b9f5e72025-07-08 18:04:53 -04002627int testfunc(void)
2628{
Steve Kondikae271bc2015-11-15 02:50:53 +01002629 ${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
micky3879b9f5e72025-07-08 18:04:53 -04002630}
Steve Kondikae271bc2015-11-15 02:50:53 +01002631#else
micky3879b9f5e72025-07-08 18:04:53 -04002632extern int testdata[[3]];
2633int testfunc(void)
2634{
Steve Kondikae271bc2015-11-15 02:50:53 +01002635 return testdata[[0]] == 123
2636 && testdata[[1]] == 456
2637 && testdata[[2]] == 789;
Steve Kondikae271bc2015-11-15 02:50:53 +01002638}
micky3879b9f5e72025-07-08 18:04:53 -04002639#endif
Steve Kondikae271bc2015-11-15 02:50:53 +01002640EOF
2641 if AC_TRY_EVAL(ac_compile); then
2642 mv conftest.o func.o && \
2643 ( $AR $ARFLAGS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null
2644 fi
2645 rm -f conftest.$ac_ext func.o
2646 ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
2647 cf_saveLIBS="$LIBS"
2648 LIBS="conftest.a $LIBS"
2649 AC_TRY_RUN([
micky3879b9f5e72025-07-08 18:04:53 -04002650 extern int testfunc(void);
2651 int main(void)
Steve Kondikae271bc2015-11-15 02:50:53 +01002652 {
Steve Kondikae271bc2015-11-15 02:50:53 +01002653 ${cf_cv_main_return:-return} (!testfunc());
2654 }
2655 ],
2656 [cf_cv_link_dataonly=yes],
2657 [cf_cv_link_dataonly=no],
2658 [cf_cv_link_dataonly=unknown])
2659 LIBS="$cf_saveLIBS"
2660 ])
2661AC_MSG_RESULT($cf_cv_link_dataonly)
2662
2663if test "$cf_cv_link_dataonly" = no ; then
2664 AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link])
2665 BROKEN_LINKER=1
2666fi
micky3879b9f5e72025-07-08 18:04:53 -04002667AC_SUBST(BROKEN_LINKER)
Steve Kondikae271bc2015-11-15 02:50:53 +01002668
2669])dnl
2670dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002671dnl CF_MAKEFLAGS version: 21 updated: 2021/09/04 06:47:34
Steve Kondikae271bc2015-11-15 02:50:53 +01002672dnl ------------
2673dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
micky3879b9f5e72025-07-08 18:04:53 -04002674dnl options to lower-levels. It is very useful for "make -n" -- if we have it.
Steve Kondikae271bc2015-11-15 02:50:53 +01002675dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
2676dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-)
2677AC_DEFUN([CF_MAKEFLAGS],
micky3879b9f5e72025-07-08 18:04:53 -04002678[AC_REQUIRE([AC_PROG_FGREP])dnl
2679
Steve Kondikae271bc2015-11-15 02:50:53 +01002680AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
2681 cf_cv_makeflags=''
2682 for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
2683 do
2684 cat >cf_makeflags.tmp <<CF_EOF
2685SHELL = $SHELL
2686all :
2687 @ echo '.$cf_option'
2688CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04002689 cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | ${FGREP-fgrep} -v "ing directory" | sed -e 's,[[ ]]*$,,'`
Steve Kondikae271bc2015-11-15 02:50:53 +01002690 case "$cf_result" in
2691 (.*k|.*kw)
micky3879b9f5e72025-07-08 18:04:53 -04002692 cf_result="`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`"
Steve Kondikae271bc2015-11-15 02:50:53 +01002693 case "$cf_result" in
2694 (.*CC=*) cf_cv_makeflags=
2695 ;;
2696 (*) cf_cv_makeflags=$cf_option
2697 ;;
2698 esac
2699 break
2700 ;;
micky3879b9f5e72025-07-08 18:04:53 -04002701 (.-)
2702 ;;
2703 (*)
2704 CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\")
Steve Kondikae271bc2015-11-15 02:50:53 +01002705 ;;
2706 esac
2707 done
2708 rm -f cf_makeflags.tmp
2709])
2710
2711AC_SUBST(cf_cv_makeflags)
2712])dnl
2713dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002714dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
2715dnl -------------
2716dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
2717dnl acts as a placeholder.
2718dnl
2719dnl The ".PHONY" feature was proposed in 2011 here
2720dnl https://www.austingroupbugs.net/view.php?id=523
2721dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
2722dnl
2723dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
2724dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
2725dnl
2726dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
2727dnl date unspecified).
2728dnl
2729dnl + It was adopted in NetBSD make in June 1995.
2730dnl
2731dnl + The other BSD make programs are derived from the NetBSD make (and for
2732dnl that reason are not actually different "implementations").
2733dnl
2734dnl + Some features of NetBSD make were actually adapted from pmake, which
2735dnl began as a modified GNU make starting in 1993.
2736dnl
2737dnl + Version 3.8 of the dmake program in January 1992 also implemented this
2738dnl GNU make extension, but is less well known than the BSD make.
2739AC_DEFUN([CF_MAKE_PHONY],[
2740AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
2741 rm -rf conftest*
2742 (
2743 mkdir conftest || exit 1
2744 cd conftest
2745 cat >makefile <<'CF_EOF'
2746.PHONY: always
2747DATA=0
2748always: always.out
2749 @echo "** making [$]@ [$](DATA)"
2750once: once.out
2751 @echo "** making [$]@ [$](DATA)"
2752always.out:
2753 @echo "** making [$]@ [$](DATA)"
2754 echo [$](DATA) > [$]@
2755once.out:
2756 @echo "** making [$]@ [$](DATA)"
2757 echo [$](DATA) > [$]@
2758CF_EOF
2759 for cf_data in 1 2 3
2760 do
2761 ${MAKE:-make} always DATA=$cf_data
2762 ${MAKE:-make} once DATA=$cf_data
2763 ${MAKE:-make} -t always once
2764 if test -f always ; then
2765 echo "no (case 1)" > ../conftest.tmp
2766 elif test ! -f always.out ; then
2767 echo "no (case 2)" > ../conftest.tmp
2768 elif test ! -f once.out ; then
2769 echo "no (case 3)" > ../conftest.tmp
2770 elif ! cmp -s always.out once.out ; then
2771 echo "no (case 4)" > ../conftest.tmp
2772 diff always.out once.out
2773 else
2774 cf_check="`cat always.out`"
2775 if test "x$cf_check" != "x$cf_data" ; then
2776 echo "no (case 5)" > ../conftest.tmp
2777 else
2778 echo yes > ../conftest.tmp
2779 rm -f ./*.out
2780 continue
2781 fi
2782 fi
2783 break
2784 done
2785 ) >&AC_FD_CC 2>&1
2786 cf_cv_make_PHONY="`cat conftest.tmp`"
2787 rm -rf conftest*
2788])
2789MAKE_NO_PHONY="#"
2790MAKE_PHONY="#"
2791test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
2792test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
2793AC_SUBST(MAKE_NO_PHONY)
2794AC_SUBST(MAKE_PHONY)
2795])dnl
2796dnl ---------------------------------------------------------------------------
Steve Kondikae271bc2015-11-15 02:50:53 +01002797dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
2798dnl ------------
2799dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
2800dnl a monocase filesystem.
2801AC_DEFUN([CF_MAKE_TAGS],[
2802AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
2803
2804AC_CHECK_PROGS(CTAGS, exctags ctags)
2805AC_CHECK_PROGS(ETAGS, exetags etags)
2806
2807AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
2808
2809if test "$cf_cv_mixedcase" = yes ; then
2810 AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
2811else
2812 MAKE_UPPER_TAGS=no
2813fi
2814
2815if test "$MAKE_UPPER_TAGS" = yes ; then
2816 MAKE_UPPER_TAGS=
2817else
2818 MAKE_UPPER_TAGS="#"
2819fi
2820
2821if test "$MAKE_LOWER_TAGS" = yes ; then
2822 MAKE_LOWER_TAGS=
2823else
2824 MAKE_LOWER_TAGS="#"
2825fi
2826
2827AC_SUBST(CTAGS)
2828AC_SUBST(ETAGS)
2829
2830AC_SUBST(MAKE_UPPER_TAGS)
2831AC_SUBST(MAKE_LOWER_TAGS)
2832])dnl
2833dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002834dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
Steve Kondikae271bc2015-11-15 02:50:53 +01002835dnl ----------------------
2836dnl Check if the file-system supports mixed-case filenames. If we're able to
2837dnl create a lowercase name and see it as uppercase, it doesn't support that.
2838AC_DEFUN([CF_MIXEDCASE_FILENAMES],
2839[
2840AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
2841if test "$cross_compiling" = yes ; then
micky3879b9f5e72025-07-08 18:04:53 -04002842 case "$target_alias" in
2843 (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
Steve Kondikae271bc2015-11-15 02:50:53 +01002844 cf_cv_mixedcase=no
2845 ;;
2846 (*)
2847 cf_cv_mixedcase=yes
2848 ;;
2849 esac
2850else
2851 rm -f conftest CONFTEST
2852 echo test >conftest
2853 if test -f CONFTEST ; then
2854 cf_cv_mixedcase=no
2855 else
2856 cf_cv_mixedcase=yes
2857 fi
2858 rm -f conftest CONFTEST
2859fi
2860])
2861test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
2862])dnl
2863dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002864dnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50
Steve Kondikae271bc2015-11-15 02:50:53 +01002865dnl ----------
2866dnl Check for a working mkstemp. This creates two files, checks that they are
2867dnl successfully created and distinct (AmigaOS apparently fails on the last).
2868AC_DEFUN([CF_MKSTEMP],[
micky3879b9f5e72025-07-08 18:04:53 -04002869AC_CHECK_HEADERS( \
2870unistd.h \
2871)
Steve Kondikae271bc2015-11-15 02:50:53 +01002872AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
micky3879b9f5e72025-07-08 18:04:53 -04002873rm -rf ./conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01002874AC_TRY_RUN([
micky3879b9f5e72025-07-08 18:04:53 -04002875$ac_includes_default
2876
2877int main(void)
Steve Kondikae271bc2015-11-15 02:50:53 +01002878{
micky3879b9f5e72025-07-08 18:04:53 -04002879 static char tmpl[] = "conftestXXXXXX";
Steve Kondikae271bc2015-11-15 02:50:53 +01002880 char name[2][80];
2881 int n;
2882 int result = 0;
2883 int fd;
2884 struct stat sb;
2885
2886 umask(077);
2887 for (n = 0; n < 2; ++n) {
2888 strcpy(name[n], tmpl);
2889 if ((fd = mkstemp(name[n])) >= 0) {
2890 if (!strcmp(name[n], tmpl)
2891 || stat(name[n], &sb) != 0
2892 || (sb.st_mode & S_IFMT) != S_IFREG
2893 || (sb.st_mode & 077) != 0) {
2894 result = 1;
2895 }
2896 close(fd);
2897 }
2898 }
2899 if (result == 0
2900 && !strcmp(name[0], name[1]))
2901 result = 1;
2902 ${cf_cv_main_return:-return}(result);
2903}
2904],[cf_cv_func_mkstemp=yes
2905],[cf_cv_func_mkstemp=no
2906],[cf_cv_func_mkstemp=maybe])
2907])
2908if test "x$cf_cv_func_mkstemp" = xmaybe ; then
2909 AC_CHECK_FUNC(mkstemp)
2910fi
2911if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
2912 AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
2913fi
2914])dnl
2915dnl ---------------------------------------------------------------------------
2916dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
2917dnl ----------
2918dnl Write a debug message to config.log, along with the line number in the
2919dnl configure script.
2920AC_DEFUN([CF_MSG_LOG],[
2921echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
2922])dnl
2923dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04002924dnl CF_NCURSES_ADDON version: 6 updated: 2021/01/04 19:33:05
Steve Kondikae271bc2015-11-15 02:50:53 +01002925dnl ----------------
2926dnl Configure an ncurses add-on, built outside the ncurses tree.
2927AC_DEFUN([CF_NCURSES_ADDON],[
2928AC_REQUIRE([CF_NCURSES_CONFIG])
2929
2930AC_PROVIDE([CF_SUBST_NCURSES_VERSION])
2931
2932AC_MSG_CHECKING(if you want wide-character code)
2933AC_ARG_ENABLE(widec,
2934 [ --enable-widec compile with wide-char/UTF-8 code],
2935 [with_widec=$enableval],
2936 [with_widec=no])
2937AC_MSG_RESULT($with_widec)
2938if test "$with_widec" = yes ; then
2939 CF_UTF8_LIB
2940 CF_NCURSES_CONFIG(ncursesw)
2941else
2942 CF_NCURSES_CONFIG(ncurses)
2943fi
2944
2945if test "$NCURSES_CONFIG_PKG" != none ; then
2946 cf_version=`$PKG_CONFIG --modversion $NCURSES_CONFIG_PKG 2>/dev/null`
2947
2948 NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
2949 NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'`
2950 NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'`
2951
2952 cf_cv_abi_version=`$PKG_CONFIG --variable=abi_version $NCURSES_CONFIG_PKG 2>/dev/null`
2953 if test -z "$cf_cv_abi_version"
2954 then
2955 cf_cv_abi_version=`$PKG_CONFIG --variable=major_version $NCURSES_CONFIG_PKG 2>/dev/null`
2956 fi
2957
2958elif test "$NCURSES_CONFIG" != none ; then
2959
2960 cf_version=`$NCURSES_CONFIG --version 2>/dev/null`
2961
2962 NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'`
2963 NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'`
2964 NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'`
2965
2966 # ABI version is not available from headers
2967 cf_cv_abi_version=`$NCURSES_CONFIG --abi-version 2>/dev/null`
2968
2969else
2970
2971 for cf_name in MAJOR MINOR PATCH
2972 do
2973 cat >conftest.$ac_ext <<CF_EOF
2974 #include <${cf_cv_ncurses_header:-curses.h}>
2975 AUTOCONF_$cf_name NCURSES_VERSION_$cf_name
2976CF_EOF
2977 cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out"
2978 AC_TRY_EVAL(cf_try)
2979 if test -f conftest.out ; then
micky3879b9f5e72025-07-08 18:04:53 -04002980 cf_result=`sed -e "s/^.*AUTOCONF_${cf_name}[[ ]][[ ]]*//" conftest.out`
Steve Kondikae271bc2015-11-15 02:50:53 +01002981 eval NCURSES_$cf_name=\"$cf_result\"
2982 # cat conftest.$ac_ext
2983 # cat conftest.out
2984 fi
2985 done
2986
2987 cf_cv_abi_version=${NCURSES_MAJOR}
2988
2989fi
2990
2991cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
2992
2993dnl Show the computed version, for logging
2994cf_cv_timestamp=`date`
2995
2996AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp))
2997
2998dnl We need these values in the generated headers
2999AC_SUBST(NCURSES_MAJOR)
3000AC_SUBST(NCURSES_MINOR)
3001AC_SUBST(NCURSES_PATCH)
3002
3003dnl We need these values in the generated makefiles
3004AC_SUBST(cf_cv_rel_version)
3005AC_SUBST(cf_cv_abi_version)
3006
3007dnl FIXME - not needed for Ada95
3008AC_SUBST(cf_cv_builtin_bool)
3009AC_SUBST(cf_cv_header_stdbool_h)
3010AC_SUBST(cf_cv_type_of_bool)dnl
3011
3012])
3013dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003014dnl CF_NCURSES_CC_CHECK version: 6 updated: 2023/02/18 17:47:58
Steve Kondikae271bc2015-11-15 02:50:53 +01003015dnl -------------------
3016dnl Check if we can compile with ncurses' header file
3017dnl $1 is the cache variable to set
3018dnl $2 is the header-file to include
3019dnl $3 is the root name (ncurses or ncursesw)
3020AC_DEFUN([CF_NCURSES_CC_CHECK],[
3021 AC_TRY_COMPILE([
3022]ifelse($3,ncursesw,[
3023#define _XOPEN_SOURCE_EXTENDED
3024#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */
3025#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */
3026])[
3027#include <$2>],[
3028#ifdef NCURSES_VERSION
3029]ifelse($3,ncursesw,[
3030#ifndef WACS_BSSB
micky3879b9f5e72025-07-08 18:04:53 -04003031 #error WACS_BSSB is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +01003032#endif
3033])[
micky3879b9f5e72025-07-08 18:04:53 -04003034printf("%s\\n", NCURSES_VERSION);
Steve Kondikae271bc2015-11-15 02:50:53 +01003035#else
3036#ifdef __NCURSES_H
micky3879b9f5e72025-07-08 18:04:53 -04003037printf("old\\n");
Steve Kondikae271bc2015-11-15 02:50:53 +01003038#else
micky3879b9f5e72025-07-08 18:04:53 -04003039 #error __NCURSES_H is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +01003040#endif
3041#endif
3042 ]
3043 ,[$1=$2]
3044 ,[$1=no])
3045])dnl
3046dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003047dnl CF_NCURSES_CONFIG version: 28 updated: 2021/08/28 15:20:37
Steve Kondikae271bc2015-11-15 02:50:53 +01003048dnl -----------------
3049dnl Tie together the configure-script macros for ncurses, preferring these in
3050dnl order:
3051dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
3052dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
3053dnl c) just plain libraries
3054dnl
3055dnl $1 is the root library name (default: "ncurses")
3056AC_DEFUN([CF_NCURSES_CONFIG],[
3057AC_REQUIRE([CF_PKG_CONFIG])
3058cf_ncuconfig_root=ifelse($1,,ncurses,$1)
3059cf_have_ncuconfig=no
3060
3061if test "x${PKG_CONFIG:=none}" != xnone; then
3062 AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
3063 if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
3064 AC_MSG_RESULT(yes)
3065
3066 AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
3067 cf_have_ncuconfig=unknown
3068
micky3879b9f5e72025-07-08 18:04:53 -04003069 cf_save_CFLAGS="$CFLAGS"
Steve Kondikae271bc2015-11-15 02:50:53 +01003070 cf_save_CPPFLAGS="$CPPFLAGS"
3071 cf_save_LIBS="$LIBS"
3072
micky3879b9f5e72025-07-08 18:04:53 -04003073 cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`"
3074 cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`"
3075
3076 # while -W for passing linker flags is prevalent, it is not "standard".
3077 # At least one wrapper for c89/c99 (in Apple's xcode) has its own
3078 # incompatible _and_ non-standard -W option which gives an error. Work
3079 # around that pitfall.
3080 case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in
3081 (x*c[[89]]9@@*-W*)
3082 CF_ADD_CFLAGS($cf_pkg_cflags)
3083 CF_ADD_LIBS($cf_pkg_libs)
3084
3085 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
3086 [initscr(); mousemask(0,0); tigetstr((char *)0);],
3087 [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
3088 int main(void)
3089 { const char *xx = curses_version(); return (xx == 0); }],
3090 [cf_test_ncuconfig=yes],
3091 [cf_test_ncuconfig=no],
3092 [cf_test_ncuconfig=maybe])],
3093 [cf_test_ncuconfig=no])
3094
3095 CFLAGS="$cf_save_CFLAGS"
3096 CPPFLAGS="$cf_save_CPPFLAGS"
3097 LIBS="$cf_save_LIBS"
3098
3099 if test "x$cf_test_ncuconfig" != xyes; then
3100 cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[[^ ]]*//g'`
3101 cf_pkg_cflags="$cf_temp"
3102 cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[[^ ]]*//g'`
3103 cf_pkg_libs="$cf_temp"
3104 fi
3105 ;;
3106 esac
3107
3108 CF_APPEND_CFLAGS($cf_pkg_cflags)
3109 CF_ADD_LIBS($cf_pkg_libs)
Steve Kondikae271bc2015-11-15 02:50:53 +01003110
3111 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
micky3879b9f5e72025-07-08 18:04:53 -04003112 [initscr(); mousemask(0,0); tigetstr((char *)0);],
Steve Kondikae271bc2015-11-15 02:50:53 +01003113 [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
3114 int main(void)
micky3879b9f5e72025-07-08 18:04:53 -04003115 { const char *xx = curses_version(); return (xx == 0); }],
Steve Kondikae271bc2015-11-15 02:50:53 +01003116 [cf_have_ncuconfig=yes],
3117 [cf_have_ncuconfig=no],
3118 [cf_have_ncuconfig=maybe])],
3119 [cf_have_ncuconfig=no])
3120 AC_MSG_RESULT($cf_have_ncuconfig)
3121 test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
3122 if test "$cf_have_ncuconfig" != "yes"
3123 then
3124 CPPFLAGS="$cf_save_CPPFLAGS"
3125 LIBS="$cf_save_LIBS"
3126 NCURSES_CONFIG_PKG=none
3127 else
3128 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
3129 NCURSES_CONFIG_PKG=$cf_ncuconfig_root
micky3879b9f5e72025-07-08 18:04:53 -04003130 CF_TERM_HEADER
Steve Kondikae271bc2015-11-15 02:50:53 +01003131 fi
3132
3133 else
3134 AC_MSG_RESULT(no)
3135 NCURSES_CONFIG_PKG=none
3136 fi
3137else
3138 NCURSES_CONFIG_PKG=none
3139fi
3140
3141if test "x$cf_have_ncuconfig" = "xno"; then
micky3879b9f5e72025-07-08 18:04:53 -04003142 cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
Steve Kondikae271bc2015-11-15 02:50:53 +01003143
3144 CF_ACVERSION_CHECK(2.52,
micky3879b9f5e72025-07-08 18:04:53 -04003145 [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
3146 [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
Steve Kondikae271bc2015-11-15 02:50:53 +01003147
3148 if test "$NCURSES_CONFIG" != none ; then
3149
micky3879b9f5e72025-07-08 18:04:53 -04003150 CF_APPEND_CFLAGS(`$NCURSES_CONFIG --cflags`)
Steve Kondikae271bc2015-11-15 02:50:53 +01003151 CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
3152
3153 # even with config script, some packages use no-override for curses.h
3154 CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
3155
3156 dnl like CF_NCURSES_CPPFLAGS
3157 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
3158
3159 dnl like CF_NCURSES_LIBS
3160 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
3161 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
3162
3163 dnl like CF_NCURSES_VERSION
micky3879b9f5e72025-07-08 18:04:53 -04003164 cf_cv_ncurses_version="`$NCURSES_CONFIG --version`"
Steve Kondikae271bc2015-11-15 02:50:53 +01003165
3166 else
3167
3168 CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
3169 CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
3170
3171 fi
3172else
3173 NCURSES_CONFIG=none
3174fi
3175])dnl
3176dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003177dnl CF_NCURSES_CPPFLAGS version: 22 updated: 2021/01/02 09:31:20
Steve Kondikae271bc2015-11-15 02:50:53 +01003178dnl -------------------
3179dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting
3180dnl the CPPFLAGS variable so we can include its header.
3181dnl
3182dnl The header files may be installed as either curses.h, or ncurses.h (would
3183dnl be obsolete, except that some packagers prefer this name to distinguish it
3184dnl from a "native" curses implementation). If not installed for overwrite,
3185dnl the curses.h file would be in an ncurses subdirectory (e.g.,
3186dnl /usr/include/ncurses), but someone may have installed overwriting the
3187dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd
3188dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in
3189dnl the header.
3190dnl
3191dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header
3192dnl is already in the include-path, don't even bother with this, since we cannot
3193dnl easily determine which file it is. In this case, it has to be <curses.h>.
3194dnl
3195dnl The optional parameter gives the root name of the library, in case it is
3196dnl not installed as the default curses library. That is how the
3197dnl wide-character version of ncurses is installed.
3198AC_DEFUN([CF_NCURSES_CPPFLAGS],
3199[AC_REQUIRE([CF_WITH_CURSES_DIR])
3200
3201AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl
3202cf_ncuhdr_root=ifelse($1,,ncurses,$1)
3203
3204test -n "$cf_cv_curses_dir" && \
3205test "$cf_cv_curses_dir" != "no" && { \
3206 CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root)
3207}
3208
3209AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[
3210 cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
micky3879b9f5e72025-07-08 18:04:53 -04003211 { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h"
Steve Kondikae271bc2015-11-15 02:50:53 +01003212 for cf_header in $cf_header_list
3213 do
3214 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1)
3215 test "$cf_cv_ncurses_h" != no && break
3216 done
3217])
3218
3219CF_NCURSES_HEADER
3220CF_TERM_HEADER
3221
3222# some applications need this, but should check for NCURSES_VERSION
3223AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
3224
3225CF_NCURSES_VERSION
3226])dnl
3227dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003228dnl CF_NCURSES_HEADER version: 7 updated: 2021/01/04 19:33:05
Steve Kondikae271bc2015-11-15 02:50:53 +01003229dnl -----------------
3230dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
3231dnl variations of ncurses' installs.
3232dnl
3233dnl See also CF_CURSES_HEADER, which sets the same cache variable.
3234AC_DEFUN([CF_NCURSES_HEADER],[
3235
3236if test "$cf_cv_ncurses_h" != no ; then
3237 cf_cv_ncurses_header=$cf_cv_ncurses_h
3238else
3239
3240AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[
3241 test -n "$verbose" && echo
3242 CF_HEADER_PATH(cf_search,$cf_ncuhdr_root)
micky3879b9f5e72025-07-08 18:04:53 -04003243 test -n "$verbose" && echo "search path $cf_search"
Steve Kondikae271bc2015-11-15 02:50:53 +01003244 cf_save2_CPPFLAGS="$CPPFLAGS"
3245 for cf_incdir in $cf_search
3246 do
3247 CF_ADD_INCDIR($cf_incdir)
3248 for cf_header in \
3249 ncurses.h \
3250 curses.h
3251 do
3252 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1)
3253 if test "$cf_cv_ncurses_h2" != no ; then
3254 cf_cv_ncurses_h2=$cf_incdir/$cf_header
micky3879b9f5e72025-07-08 18:04:53 -04003255 test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&AC_FD_MSG
Steve Kondikae271bc2015-11-15 02:50:53 +01003256 break
3257 fi
3258 test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG
3259 done
3260 CPPFLAGS="$cf_save2_CPPFLAGS"
3261 test "$cf_cv_ncurses_h2" != no && break
3262 done
3263 test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found)
3264 ])
3265
3266 CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2)
micky3879b9f5e72025-07-08 18:04:53 -04003267 cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`"
3268 if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then
3269 cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header"
Steve Kondikae271bc2015-11-15 02:50:53 +01003270 fi
3271 CF_ADD_INCDIR($cf_1st_incdir)
3272
3273fi
3274
3275# Set definitions to allow ifdef'ing for ncurses.h
3276
micky3879b9f5e72025-07-08 18:04:53 -04003277case "$cf_cv_ncurses_header" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003278(*ncurses.h)
3279 AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
3280 ;;
3281esac
3282
micky3879b9f5e72025-07-08 18:04:53 -04003283case "$cf_cv_ncurses_header" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003284(ncurses/curses.h|ncurses/ncurses.h)
3285 AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
3286 ;;
3287(ncursesw/curses.h|ncursesw/ncurses.h)
3288 AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
3289 ;;
3290esac
3291
3292])dnl
3293dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003294dnl CF_NCURSES_LIBS version: 21 updated: 2021/09/04 06:37:12
Steve Kondikae271bc2015-11-15 02:50:53 +01003295dnl ---------------
3296dnl Look for the ncurses library. This is a little complicated on Linux,
3297dnl because it may be linked with the gpm (general purpose mouse) library.
3298dnl Some distributions have gpm linked with (bsd) curses, which makes it
3299dnl unusable with ncurses. However, we don't want to link with gpm unless
3300dnl ncurses has a dependency, since gpm is normally set up as a shared library,
3301dnl and the linker will record a dependency.
3302dnl
3303dnl The optional parameter gives the root name of the library, in case it is
3304dnl not installed as the default curses library. That is how the
3305dnl wide-character version of ncurses is installed.
3306AC_DEFUN([CF_NCURSES_LIBS],
3307[AC_REQUIRE([CF_NCURSES_CPPFLAGS])
3308
3309cf_nculib_root=ifelse($1,,ncurses,$1)
3310 # This works, except for the special case where we find gpm, but
3311 # ncurses is in a nonstandard location via $LIBS, and we really want
3312 # to link gpm.
3313cf_ncurses_LIBS=""
3314cf_ncurses_SAVE="$LIBS"
3315AC_CHECK_LIB(gpm,Gpm_Open,
3316 [AC_CHECK_LIB(gpm,initscr,
3317 [LIBS="$cf_ncurses_SAVE"],
3318 [cf_ncurses_LIBS="-lgpm"])])
3319
micky3879b9f5e72025-07-08 18:04:53 -04003320case "$host_os" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003321(freebsd*)
3322 # This is only necessary if you are linking against an obsolete
micky3879b9f5e72025-07-08 18:04:53 -04003323 # version of ncurses (but it should do no harm, since it is static).
Steve Kondikae271bc2015-11-15 02:50:53 +01003324 if test "$cf_nculib_root" = ncurses ; then
3325 AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"])
3326 fi
3327 ;;
3328esac
3329
3330CF_ADD_LIBS($cf_ncurses_LIBS)
3331
micky3879b9f5e72025-07-08 18:04:53 -04003332if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
Steve Kondikae271bc2015-11-15 02:50:53 +01003333then
3334 CF_ADD_LIBS(-l$cf_nculib_root)
3335else
3336 CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root,
3337 [#include <${cf_cv_ncurses_header:-curses.h}>],
3338 [initscr()],
3339 initscr)
3340fi
3341
3342if test -n "$cf_ncurses_LIBS" ; then
3343 AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS)
3344 cf_ncurses_SAVE="$LIBS"
3345 for p in $cf_ncurses_LIBS ; do
micky3879b9f5e72025-07-08 18:04:53 -04003346 q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"`
Steve Kondikae271bc2015-11-15 02:50:53 +01003347 if test "$q" != "$LIBS" ; then
3348 LIBS="$q"
3349 fi
3350 done
3351 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
micky3879b9f5e72025-07-08 18:04:53 -04003352 [initscr(); mousemask(0,0); tigetstr((char *)0);],
Steve Kondikae271bc2015-11-15 02:50:53 +01003353 [AC_MSG_RESULT(yes)],
3354 [AC_MSG_RESULT(no)
3355 LIBS="$cf_ncurses_SAVE"])
3356fi
3357
3358CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
3359AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
3360])dnl
3361dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003362dnl CF_NCURSES_VERSION version: 18 updated: 2024/01/07 06:34:16
Steve Kondikae271bc2015-11-15 02:50:53 +01003363dnl ------------------
3364dnl Check for the version of ncurses, to aid in reporting bugs, etc.
3365dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use
3366dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi.
3367AC_DEFUN([CF_NCURSES_VERSION],
3368[
3369AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
3370AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
3371 cf_cv_ncurses_version=no
3372 cf_tempfile=out$$
micky3879b9f5e72025-07-08 18:04:53 -04003373 rm -f "$cf_tempfile"
Steve Kondikae271bc2015-11-15 02:50:53 +01003374 AC_TRY_RUN([
micky3879b9f5e72025-07-08 18:04:53 -04003375$ac_includes_default
3376
Steve Kondikae271bc2015-11-15 02:50:53 +01003377#include <${cf_cv_ncurses_header:-curses.h}>
micky3879b9f5e72025-07-08 18:04:53 -04003378
3379int main(void)
Steve Kondikae271bc2015-11-15 02:50:53 +01003380{
3381 FILE *fp = fopen("$cf_tempfile", "w");
3382#ifdef NCURSES_VERSION
3383# ifdef NCURSES_VERSION_PATCH
micky3879b9f5e72025-07-08 18:04:53 -04003384 fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
Steve Kondikae271bc2015-11-15 02:50:53 +01003385# else
micky3879b9f5e72025-07-08 18:04:53 -04003386 fprintf(fp, "%s\\n", NCURSES_VERSION);
Steve Kondikae271bc2015-11-15 02:50:53 +01003387# endif
3388#else
3389# ifdef __NCURSES_H
micky3879b9f5e72025-07-08 18:04:53 -04003390 fprintf(fp, "old\\n");
Steve Kondikae271bc2015-11-15 02:50:53 +01003391# else
micky3879b9f5e72025-07-08 18:04:53 -04003392 #error expected ncurses header to define __NCURSES_H
Steve Kondikae271bc2015-11-15 02:50:53 +01003393# endif
3394#endif
3395 ${cf_cv_main_return:-return}(0);
3396}],[
3397 cf_cv_ncurses_version=`cat $cf_tempfile`],,[
3398
3399 # This will not work if the preprocessor splits the line after the
3400 # Autoconf token. The 'unproto' program does that.
micky3879b9f5e72025-07-08 18:04:53 -04003401 cat > "conftest.$ac_ext" <<EOF
Steve Kondikae271bc2015-11-15 02:50:53 +01003402#include <${cf_cv_ncurses_header:-curses.h}>
3403#undef Autoconf
3404#ifdef NCURSES_VERSION
3405Autoconf NCURSES_VERSION
3406#else
3407#ifdef __NCURSES_H
3408Autoconf "old"
3409#endif
3410;
3411#endif
3412EOF
3413 cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out"
3414 AC_TRY_EVAL(cf_try)
3415 if test -f conftest.out ; then
micky3879b9f5e72025-07-08 18:04:53 -04003416 cf_out=`sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%' conftest.out`
Steve Kondikae271bc2015-11-15 02:50:53 +01003417 test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
3418 rm -f conftest.out
3419 fi
3420])
micky3879b9f5e72025-07-08 18:04:53 -04003421 rm -f "$cf_tempfile"
Steve Kondikae271bc2015-11-15 02:50:53 +01003422])
3423test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
3424])dnl
3425dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003426dnl CF_OBJ_SUBDIR version: 8 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01003427dnl -------------
3428dnl Compute the object-directory name from the given model name
3429AC_DEFUN([CF_OBJ_SUBDIR],
3430[
3431 case $1 in
3432 (libtool) $2='obj_lo' ;;
3433 (normal) $2='objects' ;;
3434 (debug) $2='obj_g' ;;
3435 (profile) $2='obj_p' ;;
3436 (shared)
micky3879b9f5e72025-07-08 18:04:53 -04003437 case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003438 (cygwin|msys)
3439 $2='objects' ;;
3440 (*)
3441 $2='obj_s' ;;
3442 esac
3443 esac
3444])dnl
3445dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003446dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01003447dnl ----------
3448dnl Provide a value for the $PATH and similar separator (or amend the value
3449dnl as provided in autoconf 2.5x).
3450AC_DEFUN([CF_PATHSEP],
3451[
3452 AC_MSG_CHECKING(for PATH separator)
micky3879b9f5e72025-07-08 18:04:53 -04003453 case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003454 (os2*) PATH_SEPARATOR=';' ;;
3455 (*) ${PATH_SEPARATOR:=':'} ;;
3456 esac
3457ifelse([$1],,,[$1=$PATH_SEPARATOR])
3458 AC_SUBST(PATH_SEPARATOR)
3459 AC_MSG_RESULT($PATH_SEPARATOR)
3460])dnl
3461dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003462dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
Steve Kondikae271bc2015-11-15 02:50:53 +01003463dnl --------------
3464dnl Check the argument to see that it looks like a pathname. Rewrite it if it
3465dnl begins with one of the prefix/exec_prefix variables, and then again if the
3466dnl result begins with 'NONE'. This is necessary to work around autoconf's
3467dnl delayed evaluation of those symbols.
3468AC_DEFUN([CF_PATH_SYNTAX],[
3469if test "x$prefix" != xNONE; then
3470 cf_path_syntax="$prefix"
3471else
3472 cf_path_syntax="$ac_default_prefix"
3473fi
3474
3475case ".[$]$1" in
3476(.\[$]\(*\)*|.\'*\'*)
3477 ;;
3478(..|./*|.\\*)
3479 ;;
3480(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
3481 ;;
micky3879b9f5e72025-07-08 18:04:53 -04003482(.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
Steve Kondikae271bc2015-11-15 02:50:53 +01003483 eval $1="[$]$1"
3484 case ".[$]$1" in
3485 (.NONE/*)
micky3879b9f5e72025-07-08 18:04:53 -04003486 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
Steve Kondikae271bc2015-11-15 02:50:53 +01003487 ;;
3488 esac
3489 ;;
3490(.no|.NONE/*)
micky3879b9f5e72025-07-08 18:04:53 -04003491 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
Steve Kondikae271bc2015-11-15 02:50:53 +01003492 ;;
3493(*)
3494 ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
3495 ;;
3496esac
3497])dnl
3498dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003499dnl CF_PKG_CONFIG version: 13 updated: 2023/10/28 11:59:01
Steve Kondikae271bc2015-11-15 02:50:53 +01003500dnl -------------
3501dnl Check for the package-config program, unless disabled by command-line.
micky3879b9f5e72025-07-08 18:04:53 -04003502dnl
3503dnl Sets $PKG_CONFIG to the pathname of the pkg-config program.
Steve Kondikae271bc2015-11-15 02:50:53 +01003504AC_DEFUN([CF_PKG_CONFIG],
3505[
3506AC_MSG_CHECKING(if you want to use pkg-config)
3507AC_ARG_WITH(pkg-config,
micky3879b9f5e72025-07-08 18:04:53 -04003508 [[ --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD]],
Steve Kondikae271bc2015-11-15 02:50:53 +01003509 [cf_pkg_config=$withval],
3510 [cf_pkg_config=yes])
3511AC_MSG_RESULT($cf_pkg_config)
3512
micky3879b9f5e72025-07-08 18:04:53 -04003513case "$cf_pkg_config" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003514(no)
3515 PKG_CONFIG=none
3516 ;;
3517(yes)
3518 CF_ACVERSION_CHECK(2.52,
3519 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
3520 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
3521 ;;
3522(*)
3523 PKG_CONFIG=$withval
3524 ;;
3525esac
3526
3527test -z "$PKG_CONFIG" && PKG_CONFIG=none
3528if test "$PKG_CONFIG" != none ; then
3529 CF_PATH_SYNTAX(PKG_CONFIG)
3530elif test "x$cf_pkg_config" != xno ; then
3531 AC_MSG_WARN(pkg-config is not installed)
3532fi
3533
3534AC_SUBST(PKG_CONFIG)
3535])dnl
3536dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003537dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
Steve Kondikae271bc2015-11-15 02:50:53 +01003538dnl -----------------
3539dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
3540dnl
3541dnl POSIX.1-1990 _POSIX_SOURCE
3542dnl POSIX.1-1990 and _POSIX_SOURCE and
3543dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
3544dnl Bindings Option
3545dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
3546dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
3547dnl X/Open 2000 _POSIX_C_SOURCE=200112L
3548dnl
3549dnl Parameters:
3550dnl $1 is the nominal value for _POSIX_C_SOURCE
3551AC_DEFUN([CF_POSIX_C_SOURCE],
micky3879b9f5e72025-07-08 18:04:53 -04003552[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
3553
3554if test "$cf_cv_posix_visible" = no; then
3555
Steve Kondikae271bc2015-11-15 02:50:53 +01003556cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
3557
3558cf_save_CFLAGS="$CFLAGS"
3559cf_save_CPPFLAGS="$CPPFLAGS"
3560
3561CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
3562CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
3563
3564AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
3565 CF_MSG_LOG(if the symbol is already defined go no further)
3566 AC_TRY_COMPILE([#include <sys/types.h>],[
3567#ifndef _POSIX_C_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04003568#error _POSIX_C_SOURCE is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +01003569#endif],
3570 [cf_cv_posix_c_source=no],
3571 [cf_want_posix_source=no
3572 case .$cf_POSIX_C_SOURCE in
3573 (.[[12]]??*)
3574 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3575 ;;
3576 (.2)
3577 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3578 cf_want_posix_source=yes
3579 ;;
3580 (.*)
3581 cf_want_posix_source=yes
3582 ;;
3583 esac
3584 if test "$cf_want_posix_source" = yes ; then
3585 AC_TRY_COMPILE([#include <sys/types.h>],[
3586#ifdef _POSIX_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04003587#error _POSIX_SOURCE is defined
Steve Kondikae271bc2015-11-15 02:50:53 +01003588#endif],[],
3589 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
3590 fi
3591 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
3592 CFLAGS="$cf_trim_CFLAGS"
micky3879b9f5e72025-07-08 18:04:53 -04003593 CPPFLAGS="$cf_trim_CPPFLAGS"
3594 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
Steve Kondikae271bc2015-11-15 02:50:53 +01003595 CF_MSG_LOG(if the second compile does not leave our definition intact error)
3596 AC_TRY_COMPILE([#include <sys/types.h>],[
3597#ifndef _POSIX_C_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04003598#error _POSIX_C_SOURCE is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +01003599#endif],,
3600 [cf_cv_posix_c_source=no])
3601 CFLAGS="$cf_save_CFLAGS"
3602 CPPFLAGS="$cf_save_CPPFLAGS"
3603 ])
3604])
3605
3606if test "$cf_cv_posix_c_source" != no ; then
3607 CFLAGS="$cf_trim_CFLAGS"
3608 CPPFLAGS="$cf_trim_CPPFLAGS"
3609 CF_ADD_CFLAGS($cf_cv_posix_c_source)
3610fi
3611
micky3879b9f5e72025-07-08 18:04:53 -04003612fi # cf_cv_posix_visible
3613
3614])dnl
3615dnl ---------------------------------------------------------------------------
3616dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
3617dnl ----------------
3618dnl POSIX documents test-macros which an application may set before any system
3619dnl headers are included to make features available.
3620dnl
3621dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
3622dnl diverged from POSIX in 2002 by setting symbols which make all of the most
3623dnl recent features visible in the system header files unless the application
3624dnl overrides the corresponding test-macros. Doing that introduces portability
3625dnl problems.
3626dnl
3627dnl This macro makes a special check for the symbols used for this, to avoid a
3628dnl conflicting definition.
3629AC_DEFUN([CF_POSIX_VISIBLE],
3630[
3631AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
3632AC_TRY_COMPILE([#include <stdio.h>],[
3633#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
3634 && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
3635 && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
3636 && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
3637#error conflicting symbols found
3638#endif
3639],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
3640])
Steve Kondikae271bc2015-11-15 02:50:53 +01003641])dnl
3642dnl ---------------------------------------------------------------------------
3643dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22
3644dnl ----------
3645dnl Check for archiver "ar".
3646AC_DEFUN([CF_PROG_AR],[
3647AC_CHECK_TOOL(AR, ar, ar)
3648])
3649dnl ---------------------------------------------------------------------------
3650dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
3651dnl -----------
3652dnl Check for awk, ensure that the check found something.
3653AC_DEFUN([CF_PROG_AWK],
3654[
3655AC_PROG_AWK
3656test -z "$AWK" && AC_MSG_ERROR(No awk program found)
3657])dnl
3658dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003659dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
Steve Kondikae271bc2015-11-15 02:50:53 +01003660dnl ----------
3661dnl standard check for CC, plus followup sanity checks
3662dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
3663AC_DEFUN([CF_PROG_CC],[
micky3879b9f5e72025-07-08 18:04:53 -04003664CF_ACVERSION_CHECK(2.53,
3665 [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
3666 AC_REQUIRE([AC_PROG_CC])],
3667 [])
Steve Kondikae271bc2015-11-15 02:50:53 +01003668ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
3669CF_GCC_VERSION
3670CF_ACVERSION_CHECK(2.52,
3671 [AC_PROG_CC_STDC],
3672 [CF_ANSI_CC_REQD])
3673CF_CC_ENV_FLAGS
3674])dnl
3675dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003676dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04
Steve Kondikae271bc2015-11-15 02:50:53 +01003677dnl --------------
3678dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
3679dnl the output file can be renamed, and allows for a shell variable that can
3680dnl be used later. The parameter is either CC or CXX. The result is the
3681dnl cache variable:
3682dnl $cf_cv_prog_CC_c_o
3683dnl $cf_cv_prog_CXX_c_o
micky3879b9f5e72025-07-08 18:04:53 -04003684dnl
3685dnl $1 = compiler
3686dnl $2 = compiler options, if any
Steve Kondikae271bc2015-11-15 02:50:53 +01003687AC_DEFUN([CF_PROG_CC_C_O],
3688[AC_REQUIRE([AC_PROG_CC])dnl
3689AC_MSG_CHECKING([whether [$]$1 understands -c and -o together])
3690AC_CACHE_VAL(cf_cv_prog_$1_c_o,
3691[
3692cat > conftest.$ac_ext <<CF_EOF
micky3879b9f5e72025-07-08 18:04:53 -04003693int main(void)
Steve Kondikae271bc2015-11-15 02:50:53 +01003694{
3695 ${cf_cv_main_return:-return}(0);
3696}
3697CF_EOF
3698# We do the test twice because some compilers refuse to overwrite an
3699# existing .o file with -o, though they will create one.
micky3879b9f5e72025-07-08 18:04:53 -04003700ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
Steve Kondikae271bc2015-11-15 02:50:53 +01003701if AC_TRY_EVAL(ac_try) &&
3702 test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
3703then
3704 eval cf_cv_prog_$1_c_o=yes
3705else
3706 eval cf_cv_prog_$1_c_o=no
3707fi
micky3879b9f5e72025-07-08 18:04:53 -04003708rm -rf ./conftest*
Steve Kondikae271bc2015-11-15 02:50:53 +01003709])dnl
micky3879b9f5e72025-07-08 18:04:53 -04003710if test "$cf_cv_prog_$1_c_o" = yes; then
Steve Kondikae271bc2015-11-15 02:50:53 +01003711 AC_MSG_RESULT([yes])
3712else
3713 AC_MSG_RESULT([no])
3714fi
3715])dnl
3716dnl ---------------------------------------------------------------------------
3717dnl CF_PROG_EGREP version: 2 updated: 2015/04/18 08:56:57
3718dnl -------------
3719dnl AC_PROG_EGREP was introduced in autoconf 2.53.
3720dnl This macro adds a check to ensure the script found something.
3721AC_DEFUN([CF_PROG_EGREP],
3722[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
3723 [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
3724 then ac_cv_prog_egrep='grep -E'
3725 else ac_cv_prog_egrep='egrep'
3726 fi])
3727 EGREP=$ac_cv_prog_egrep
3728 AC_SUBST([EGREP])
3729 test -z "$EGREP" && AC_MSG_ERROR(No egrep program found)
3730])dnl
3731dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003732dnl CF_PROG_EXT version: 15 updated: 2021/01/02 09:31:20
Steve Kondikae271bc2015-11-15 02:50:53 +01003733dnl -----------
3734dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
3735AC_DEFUN([CF_PROG_EXT],
3736[
3737AC_REQUIRE([CF_CHECK_CACHE])
micky3879b9f5e72025-07-08 18:04:53 -04003738case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01003739(os2*)
3740 CFLAGS="$CFLAGS -Zmt"
micky3879b9f5e72025-07-08 18:04:53 -04003741 CF_APPEND_TEXT(CPPFLAGS,-D__ST_MT_ERRNO__)
Steve Kondikae271bc2015-11-15 02:50:53 +01003742 CXXFLAGS="$CXXFLAGS -Zmt"
3743 # autoconf's macro sets -Zexe and suffix both, which conflict:w
3744 LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
3745 ac_cv_exeext=.exe
3746 ;;
3747esac
3748
3749AC_EXEEXT
3750AC_OBJEXT
3751
3752PROG_EXT="$EXEEXT"
3753AC_SUBST(PROG_EXT)
3754test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT",[Define to the program extension (normally blank)])
3755])dnl
3756dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003757dnl CF_PROG_GNAT version: 12 updated: 2021/01/02 17:09:14
Steve Kondikae271bc2015-11-15 02:50:53 +01003758dnl ------------
micky3879b9f5e72025-07-08 18:04:53 -04003759dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete.
Steve Kondikae271bc2015-11-15 02:50:53 +01003760AC_DEFUN([CF_PROG_GNAT],[
micky3879b9f5e72025-07-08 18:04:53 -04003761for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
3762do
3763 CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat})
3764
3765 unset ac_cv_path_cf_TEMP_gnat
3766 unset cf_TEMP_gnat
3767 AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no)
3768 eval "cf_cv_PATH_$cf_upper_prog_gnat=[$]ac_cv_path_cf_TEMP_gnat"
3769
3770 if test "x$cf_TEMP_gnat" != xno; then
3771 unset cf_cv_gnat_version
3772 unset cf_TEMP_gnat
3773 CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat)
3774 fi
3775 eval "cf_cv_VERSION_$cf_upper_prog_gnat=[$]cf_TEMP_gnat"
3776
3777 unset cf_TEMP_gnat
3778 unset cf_cv_gnat_version
3779 unset ac_cv_path_cf_TEMP_gnat
3780done
3781
3782if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
Steve Kondikae271bc2015-11-15 02:50:53 +01003783 cf_ada_make=
3784 cf_cv_prog_gnat_correct=no
3785else
micky3879b9f5e72025-07-08 18:04:53 -04003786 cf_ada_make=gnatmake
3787 if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
3788 # gprconfig is newer than gnatmake; we can continue...
3789 cf_ada_config="##"
3790 else
3791 rm -rf ./conftest* ./*~conftest*
3792 if mkdir conftest.src
3793 then
3794 cf_ada_config=""
3795 cd conftest.src
3796 for cf_gprconfig in Ada C
3797 do
3798 AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig)
3799 if test "$cf_gprconfig" = C
3800 then
3801 for cf_gprconfig_param in \
3802 "$cf_gprconfig,,,,GNATGCC" \
3803 "$cf_gprconfig,,,,GCC" \
3804 "$cf_gprconfig"
3805 do
3806 cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
3807 test -n "$cf_gprconfig_value" && break
3808 done
3809 else
3810 cf_gprconfig_param=$cf_gprconfig
3811 cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
3812 fi
3813 if test -n "$cf_gprconfig_value"
3814 then
3815 eval "cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value"
3816 AC_MSG_RESULT($cf_gprconfig_value)
3817 else
3818 AC_MSG_RESULT(missing)
3819 cf_ada_config="#"
3820 break
3821 fi
3822 done
3823 cd ..
3824 rm -rf ./conftest* ./*~conftest*
3825 fi
Steve Kondikae271bc2015-11-15 02:50:53 +01003826 fi
micky3879b9f5e72025-07-08 18:04:53 -04003827 if test "x$cf_ada_config" != "x#"
3828 then
3829 CF_GNAT_VERSION
3830 CF_CHECK_GNAT_VERSION
3831 AC_CHECK_PROG(M4_exists, m4, yes, no)
3832 if test "$ac_cv_prog_M4_exists" = no; then
3833 cf_cv_prog_gnat_correct=no
3834 AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled)
3835 fi
3836 if test "$cf_cv_prog_gnat_correct" = yes; then
3837 AC_MSG_CHECKING(if GNAT works)
3838 CF_GNAT_TRY_RUN([procedure conftest;],
Steve Kondikae271bc2015-11-15 02:50:53 +01003839[with Text_IO;
3840with GNAT.OS_Lib;
3841procedure conftest is
3842begin
3843 Text_IO.Put ("Hello World");
3844 Text_IO.New_Line;
3845 GNAT.OS_Lib.OS_Exit (0);
micky3879b9f5e72025-07-08 18:04:53 -04003846end conftest;],
3847[cf_cv_prog_gnat_correct=yes],
3848[cf_cv_prog_gnat_correct=no])
3849 AC_MSG_RESULT($cf_cv_prog_gnat_correct)
3850 fi
3851 else
3852 cf_cv_prog_gnat_correct=no
Steve Kondikae271bc2015-11-15 02:50:53 +01003853 fi
3854fi
3855
3856AC_SUBST(cf_ada_make)
micky3879b9f5e72025-07-08 18:04:53 -04003857AC_SUBST(cf_ada_config)
3858AC_SUBST(cf_ada_config_Ada)
3859AC_SUBST(cf_ada_config_C)
3860])dnl
3861dnl ---------------------------------------------------------------------------
3862dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
3863dnl ---------------
3864dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
3865dnl misc/tabset install won't work properly. Usually this happens only when
3866dnl using the fallback mkinstalldirs script
3867AC_DEFUN([CF_PROG_INSTALL],
3868[AC_PROG_INSTALL
3869case $INSTALL in
3870(/*)
3871 ;;
3872(*)
3873 CF_DIRNAME(cf_dir,$INSTALL)
3874 test -z "$cf_dir" && cf_dir=.
3875 INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
3876 ;;
3877esac
Steve Kondikae271bc2015-11-15 02:50:53 +01003878])dnl
3879dnl ---------------------------------------------------------------------------
3880dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37
3881dnl ------------
3882dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f"
3883dnl option if it is supported.
3884AC_DEFUN([CF_PROG_LN_S],[
3885AC_PROG_LN_S
3886AC_MSG_CHECKING(if $LN_S -f options work)
3887
3888rm -f conf$$.src conf$$dst
3889echo >conf$$.dst
3890echo first >conf$$.src
3891if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then
3892 cf_prog_ln_sf=yes
3893else
3894 cf_prog_ln_sf=no
3895fi
3896rm -f conf$$.dst conf$$src
3897AC_MSG_RESULT($cf_prog_ln_sf)
3898
3899test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
3900])dnl
3901dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003902dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
3903dnl ----------------
3904dnl Remove a given option from CFLAGS/CPPFLAGS
3905dnl $1 = option to remove
3906dnl $2 = variable to update
3907dnl $3 = nonempty to allow verbose message
3908define([CF_REMOVE_CFLAGS],
3909[
3910cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
3911while true
3912do
3913 cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'`
3914 test "[$]$2" != "$cf_old_cflag" || break
3915 ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
3916 $2="$cf_old_cflag"
3917done
3918])dnl
3919dnl ---------------------------------------------------------------------------
Steve Kondikae271bc2015-11-15 02:50:53 +01003920dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
3921dnl ----------------
3922dnl Remove all -U and -D options that refer to the given symbol from a list
3923dnl of C compiler options. This works around the problem that not all
3924dnl compilers process -U and -D options from left-to-right, so a -U option
3925dnl cannot be used to cancel the effect of a preceding -D option.
3926dnl
3927dnl $1 = target (which could be the same as the source variable)
3928dnl $2 = source (including '$')
3929dnl $3 = symbol to remove
3930define([CF_REMOVE_DEFINE],
3931[
3932$1=`echo "$2" | \
3933 sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \
3934 -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'`
3935])dnl
3936dnl ---------------------------------------------------------------------------
3937dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52
3938dnl -------------
3939dnl Remove the given library from the symbol
3940dnl
3941dnl $1 = target (which could be the same as the source variable)
3942dnl $2 = source (including '$')
3943dnl $3 = library to remove
3944define([CF_REMOVE_LIB],
3945[
3946# remove $3 library from $2
3947$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
3948])dnl
3949dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04003950dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
3951dnl ---------------------
3952dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
3953dnl $1 = name of current macro
3954define([CF_RESTORE_XTRA_FLAGS],
3955[
3956LIBS="$cf_save_LIBS_$1"
3957CFLAGS="$cf_save_CFLAGS_$1"
3958CPPFLAGS="$cf_save_CPPFLAGS_$1"
3959])dnl
3960dnl ---------------------------------------------------------------------------
3961dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
3962dnl ------------------
3963dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
3964dnl and libraries which do not update those variables.
3965dnl
3966dnl $1 = name of current macro
3967define([CF_SAVE_XTRA_FLAGS],
3968[
3969cf_save_LIBS_$1="$LIBS"
3970cf_save_CFLAGS_$1="$CFLAGS"
3971cf_save_CPPFLAGS_$1="$CPPFLAGS"
3972LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
3973for cf_X_CFLAGS in $X_CFLAGS
3974do
3975 case "x$cf_X_CFLAGS" in
3976 x-[[IUD]]*)
3977 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
3978 ;;
3979 *)
3980 CFLAGS="$CFLAGS $cf_X_CFLAGS"
3981 ;;
3982 esac
3983done
3984])dnl
3985dnl ---------------------------------------------------------------------------
3986dnl CF_SHARED_OPTS version: 111 updated: 2024/03/29 20:08:49
Steve Kondikae271bc2015-11-15 02:50:53 +01003987dnl --------------
3988dnl --------------
3989dnl Attempt to determine the appropriate CC/LD options for creating a shared
3990dnl library.
3991dnl
3992dnl Notes:
3993dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within
3994dnl the build-tree, i.e., by making use of the libraries that are compiled in
3995dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the
3996dnl shared library since that can lead to unexpected results at runtime.
3997dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared
3998dnl libraries are compiled in ../../lib
3999dnl
4000dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
4001dnl to install symbolic links to the rel/abi versions of shared libraries.
4002dnl
4003dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
4004dnl version when making symbolic links.
4005dnl
4006dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
4007dnl version numbers are infix (ex: libncurses.<ver>.dylib) or postfix
4008dnl (ex: libncurses.so.<ver>).
4009dnl
micky3879b9f5e72025-07-08 18:04:53 -04004010dnl Some loaders leave 'so_locations' lying around. It is nice to clean up.
Steve Kondikae271bc2015-11-15 02:50:53 +01004011AC_DEFUN([CF_SHARED_OPTS],
4012[
4013 AC_REQUIRE([CF_LD_RPATH_OPT])
micky3879b9f5e72025-07-08 18:04:53 -04004014
Steve Kondikae271bc2015-11-15 02:50:53 +01004015 RM_SHARED_OPTS=
4016 LOCAL_LDFLAGS=
4017 LOCAL_LDFLAGS2=
4018 LD_SHARED_OPTS=
4019 INSTALL_LIB="-m 644"
4020 : ${rel_builddir:=.}
4021
4022 shlibdir=$libdir
4023 AC_SUBST(shlibdir)
4024
4025 MAKE_DLLS="#"
4026 AC_SUBST(MAKE_DLLS)
4027
4028 cf_cv_do_symlinks=no
4029 cf_ld_rpath_opt=
4030 test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
4031
micky3879b9f5e72025-07-08 18:04:53 -04004032 AC_MSG_CHECKING(whether to use release or ABI version in shared library file names)
Steve Kondikae271bc2015-11-15 02:50:53 +01004033 AC_ARG_WITH(shlib-version,
micky3879b9f5e72025-07-08 18:04:53 -04004034 [[ --with-shlib-version[={rel|abi}] use release or ABI version in shared library file names]],
Steve Kondikae271bc2015-11-15 02:50:53 +01004035 [test -z "$withval" && withval=auto
micky3879b9f5e72025-07-08 18:04:53 -04004036 case "$withval" in
Steve Kondikae271bc2015-11-15 02:50:53 +01004037 (yes)
4038 cf_cv_shlib_version=auto
4039 ;;
micky3879b9f5e72025-07-08 18:04:53 -04004040 (rel|abi|auto)
Steve Kondikae271bc2015-11-15 02:50:53 +01004041 cf_cv_shlib_version=$withval
4042 ;;
4043 (*)
micky3879b9f5e72025-07-08 18:04:53 -04004044 AC_MSG_RESULT($withval)
4045 AC_MSG_ERROR([option value must be one of: rel, abi, or auto])
Steve Kondikae271bc2015-11-15 02:50:53 +01004046 ;;
4047 esac
4048 ],[cf_cv_shlib_version=auto])
4049 AC_MSG_RESULT($cf_cv_shlib_version)
4050
4051 cf_cv_rm_so_locs=no
4052 cf_try_cflags=
4053
4054 # Some less-capable ports of gcc support only -fpic
4055 CC_SHARED_OPTS=
micky3879b9f5e72025-07-08 18:04:53 -04004056
4057 cf_try_fPIC=no
Steve Kondikae271bc2015-11-15 02:50:53 +01004058 if test "$GCC" = yes
4059 then
micky3879b9f5e72025-07-08 18:04:53 -04004060 cf_try_fPIC=yes
4061 else
4062 case "$cf_cv_system_name" in
4063 (*linux*) # e.g., PGI compiler
4064 cf_try_fPIC=yes
4065 ;;
4066 esac
4067 fi
4068
4069 if test "$cf_try_fPIC" = yes
4070 then
Steve Kondikae271bc2015-11-15 02:50:53 +01004071 AC_MSG_CHECKING(which $CC option to use)
4072 cf_save_CFLAGS="$CFLAGS"
4073 for CC_SHARED_OPTS in -fPIC -fpic ''
4074 do
4075 CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
micky3879b9f5e72025-07-08 18:04:53 -04004076 AC_TRY_COMPILE([#include <stdio.h>],[int x = 1; (void)x],[break],[])
Steve Kondikae271bc2015-11-15 02:50:53 +01004077 done
4078 AC_MSG_RESULT($CC_SHARED_OPTS)
4079 CFLAGS="$cf_save_CFLAGS"
4080 fi
4081
4082 cf_cv_shlib_version_infix=no
4083
micky3879b9f5e72025-07-08 18:04:53 -04004084 case "$cf_cv_system_name" in
Steve Kondikae271bc2015-11-15 02:50:53 +01004085 (aix4.[3-9]*|aix[[5-7]]*)
4086 if test "$GCC" = yes; then
4087 CC_SHARED_OPTS='-Wl,-brtl'
micky3879b9f5e72025-07-08 18:04:53 -04004088 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
Steve Kondikae271bc2015-11-15 02:50:53 +01004089 else
4090 CC_SHARED_OPTS='-brtl'
4091 # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
micky3879b9f5e72025-07-08 18:04:53 -04004092 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
Steve Kondikae271bc2015-11-15 02:50:53 +01004093 fi
4094 ;;
4095 (beos*)
micky3879b9f5e72025-07-08 18:04:53 -04004096 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
Steve Kondikae271bc2015-11-15 02:50:53 +01004097 ;;
4098 (cygwin*)
4099 CC_SHARED_OPTS=
4100 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
4101 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
4102 cf_cv_shlib_version=cygdll
4103 cf_cv_shlib_version_infix=cygdll
4104 shlibdir=$bindir
4105 MAKE_DLLS=
4106 cat >mk_shared_lib.sh <<-CF_EOF
4107 #!$SHELL
4108 SHARED_LIB=\[$]1
4109 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
4110 shift
4111 cat <<-EOF
4112 Linking shared library
4113 ** SHARED_LIB \[$]SHARED_LIB
4114 ** IMPORT_LIB \[$]IMPORT_LIB
4115EOF
micky3879b9f5e72025-07-08 18:04:53 -04004116 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
Steve Kondikae271bc2015-11-15 02:50:53 +01004117CF_EOF
4118 chmod +x mk_shared_lib.sh
4119 ;;
4120 (msys*)
4121 CC_SHARED_OPTS=
4122 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
4123 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
4124 cf_cv_shlib_version=msysdll
4125 cf_cv_shlib_version_infix=msysdll
4126 shlibdir=$bindir
4127 MAKE_DLLS=
4128 cat >mk_shared_lib.sh <<-CF_EOF
4129 #!$SHELL
4130 SHARED_LIB=\[$]1
4131 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
4132 shift
4133 cat <<-EOF
4134 Linking shared library
4135 ** SHARED_LIB \[$]SHARED_LIB
4136 ** IMPORT_LIB \[$]IMPORT_LIB
4137EOF
micky3879b9f5e72025-07-08 18:04:53 -04004138 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
Steve Kondikae271bc2015-11-15 02:50:53 +01004139CF_EOF
4140 chmod +x mk_shared_lib.sh
4141 ;;
4142 (darwin*)
4143 cf_try_cflags="no-cpp-precomp"
4144 CC_SHARED_OPTS="-dynamic"
micky3879b9f5e72025-07-08 18:04:53 -04004145 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004146 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
4147 cf_cv_shlib_version_infix=yes
4148 AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [
4149 cf_save_LDFLAGS=$LDFLAGS
4150 LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
4151 AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no)
4152 LDFLAGS=$cf_save_LDFLAGS])
micky3879b9f5e72025-07-08 18:04:53 -04004153 if test "$cf_cv_ldflags_search_paths_first" = yes; then
Steve Kondikae271bc2015-11-15 02:50:53 +01004154 LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
4155 fi
4156 ;;
micky3879b9f5e72025-07-08 18:04:53 -04004157 (haiku*)
4158 CF_SHARED_SONAME
4159 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
4160 ;;
Steve Kondikae271bc2015-11-15 02:50:53 +01004161 (hpux[[7-8]]*)
4162 # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
4163 if test "$GCC" != yes; then
4164 CC_SHARED_OPTS='+Z'
4165 fi
micky3879b9f5e72025-07-08 18:04:53 -04004166 MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004167 INSTALL_LIB="-m 555"
4168 ;;
4169 (hpux*)
4170 # (tested with gcc 2.7.2 -- I don't have c89)
4171 if test "$GCC" = yes; then
4172 LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
4173 else
4174 CC_SHARED_OPTS='+Z'
4175 LD_SHARED_OPTS='-Wl,+b,${libdir}'
4176 fi
micky3879b9f5e72025-07-08 18:04:53 -04004177 MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004178 # HP-UX shared libraries must be executable, and should be
4179 # readonly to exploit a quirk in the memory manager.
4180 INSTALL_LIB="-m 555"
4181 ;;
4182 (interix*)
4183 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
4184 if test "$cf_cv_shlib_version" = rel; then
micky3879b9f5e72025-07-08 18:04:53 -04004185 cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
Steve Kondikae271bc2015-11-15 02:50:53 +01004186 else
micky3879b9f5e72025-07-08 18:04:53 -04004187 cf_shared_soname='`basename $[@]`'
Steve Kondikae271bc2015-11-15 02:50:53 +01004188 fi
4189 CC_SHARED_OPTS=
micky3879b9f5e72025-07-08 18:04:53 -04004190 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004191 ;;
4192 (irix*)
4193 if test "$cf_cv_enable_rpath" = yes ; then
4194 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
4195 fi
4196 # tested with IRIX 5.2 and 'cc'.
4197 if test "$GCC" != yes; then
4198 CC_SHARED_OPTS='-KPIC'
micky3879b9f5e72025-07-08 18:04:53 -04004199 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004200 else
micky3879b9f5e72025-07-08 18:04:53 -04004201 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004202 fi
4203 cf_cv_rm_so_locs=yes
4204 ;;
4205 (linux*|gnu*|k*bsd*-gnu)
micky3879b9f5e72025-07-08 18:04:53 -04004206 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01004207 LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
4208 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4209 fi
4210 if test "$cf_cv_enable_rpath" = yes ; then
4211 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
4212 fi
4213 CF_SHARED_SONAME
micky3879b9f5e72025-07-08 18:04:53 -04004214 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
4215 ;;
4216 (mingw*msvc*)
4217 cf_cv_shlib_version=msvcdll
4218 cf_cv_shlib_version_infix=msvcdll
4219 shlibdir=$bindir
4220 MAKE_DLLS=
4221 if test "$DFT_LWR_MODEL" = "shared" ; then
4222 LOCAL_LDFLAGS="-link -dll"
4223 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4224 EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS"
4225 fi
4226 CC_SHARED_OPTS=
4227 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}'
4228 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib"
4229 cat >mk_shared_lib.sh <<-CF_EOF
4230 #!$SHELL
4231 SHARED_LIB=\[$]1
4232 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\`
4233 shift
4234 my_ld=\[$]1
4235 shift
4236 cat <<-EOF
4237 Linking shared library
4238 ** SHARED LIB \$SHARED_LIB
4239 ** IMPORT_LIB \$IMPORT_LIB
4240EOF
4241 args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g")
4242 exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args
4243 mv "\${IMPORT_LIB}" "\${IMPORT_LIB}"
4244CF_EOF
4245 chmod +x mk_shared_lib.sh
4246 cat >mk_prog.sh <<-CF_EOF
4247 #!$SHELL
4248 shift
4249 # Ignore first argument (compiler) and use LD (link.exe) unconditionally
4250 LD="[$]LD"
4251 clopts=()
4252 ldopts=("/subsystem:console")
4253 libs=()
4254 isdll=0
4255 while test \[$]# -gt 0; do
4256 case "\[$]1" in
4257 -link)
4258 # ignore -link argument
4259 ;;
4260 -M[[TD]] | -M[[TD]]d)
4261 # ignore runtime-library option
4262 ;;
4263 -dll)
4264 isdll=1
4265 ;;
4266 -W* | -w*)
4267 # ignore warnings
4268 ;;
4269 -D*)
4270 clopts+=("\[$]1")
4271 ;;
4272 -I*)
4273 clopts+=("\[$]1")
4274 ;;
4275 -l*)
4276 libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`")
4277 ;;
4278 -L*)
4279 ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`")
4280 ;;
4281 *.obj | *.o)
4282 ldopts+=("\[$]1")
4283 ;;
4284 -Wl,*)
4285 for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do
4286 ldopts+=("\[$]{linkarg}")
4287 done
4288 ;;
4289 *.lib)
4290 ldopts+=("\[$]1")
4291 ;;
4292 -o)
4293 shift
4294 ldopts+=("-out:\[$]1")
4295 ;;
4296 *)
4297 clopts+=("\[$]1")
4298 ldopts+=("\[$]1")
4299 ;;
4300 esac
4301 shift
4302 done
4303 if [[ "\$isdll" -ne 0 ]]; then
4304 for lib in \[$]{libs[[*]]}; do
4305 ldopts+=("\[$]lib.dll.lib")
4306 done
4307 else
4308 for lib in \[$]{libs[[*]]}; do
4309 ldopts+=("\[$]lib.lib")
4310 done
4311 fi
4312 cat <<-EOF
4313 Creating program
4314 ** ld options: "\[$]{ldopts[[@]]}"
4315EOF
4316 exec \[$]LD \[$]{ldopts[[@]]}
4317CF_EOF
4318 chmod +x mk_prog.sh
4319 LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh"
4320 LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh"
Steve Kondikae271bc2015-11-15 02:50:53 +01004321 ;;
4322 (mingw*)
4323 cf_cv_shlib_version=mingw
4324 cf_cv_shlib_version_infix=mingw
4325 shlibdir=$bindir
4326 MAKE_DLLS=
4327 if test "$DFT_LWR_MODEL" = "shared" ; then
4328 LOCAL_LDFLAGS="-Wl,--enable-auto-import"
4329 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4330 EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
4331 fi
4332 CC_SHARED_OPTS=
4333 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
4334 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
4335 cat >mk_shared_lib.sh <<-CF_EOF
4336 #!$SHELL
4337 SHARED_LIB=\[$]1
4338 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
4339 shift
4340 cat <<-EOF
4341 Linking shared library
4342 ** SHARED_LIB \[$]SHARED_LIB
4343 ** IMPORT_LIB \[$]IMPORT_LIB
4344EOF
micky3879b9f5e72025-07-08 18:04:53 -04004345 exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
Steve Kondikae271bc2015-11-15 02:50:53 +01004346CF_EOF
4347 chmod +x mk_shared_lib.sh
4348 ;;
4349 (openbsd[[2-9]].*|mirbsd*)
micky3879b9f5e72025-07-08 18:04:53 -04004350 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01004351 LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
4352 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4353 fi
4354 if test "$cf_cv_enable_rpath" = yes ; then
4355 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
4356 fi
4357 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
4358 CF_SHARED_SONAME
micky3879b9f5e72025-07-08 18:04:53 -04004359 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
4360 ;;
4361 (nskJ*)
4362 CC_SHARED_OPTS=
4363 MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $[@]'
4364 ;;
4365 (nskL*)
4366 CC_SHARED_OPTS=
4367 MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004368 ;;
4369 (nto-qnx*|openbsd*|freebsd[[12]].*)
4370 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
micky3879b9f5e72025-07-08 18:04:53 -04004371 MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004372 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
4373 ;;
4374 (dragonfly*|freebsd*)
4375 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
4376 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
4377 LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
4378 LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
4379 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
4380 fi
4381 CF_SHARED_SONAME
micky3879b9f5e72025-07-08 18:04:53 -04004382 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004383 ;;
4384 (netbsd*)
4385 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
4386 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
4387 LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
4388 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4389 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
4390 if test "$cf_cv_shlib_version" = auto; then
4391 if test -f /usr/libexec/ld.elf_so; then
4392 cf_cv_shlib_version=abi
4393 else
4394 cf_cv_shlib_version=rel
4395 fi
4396 fi
4397 CF_SHARED_SONAME
micky3879b9f5e72025-07-08 18:04:53 -04004398 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004399 else
micky3879b9f5e72025-07-08 18:04:53 -04004400 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004401 fi
4402 ;;
4403 (osf*|mls+*)
4404 # tested with OSF/1 V3.2 and 'cc'
4405 # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
4406 # link with shared libs).
micky3879b9f5e72025-07-08 18:04:53 -04004407 MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
4408 case "$host_os" in
Steve Kondikae271bc2015-11-15 02:50:53 +01004409 (osf4*)
4410 MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
4411 ;;
4412 esac
4413 MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
micky3879b9f5e72025-07-08 18:04:53 -04004414 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
Steve Kondikae271bc2015-11-15 02:50:53 +01004415 LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
4416 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4417 fi
4418 cf_cv_rm_so_locs=yes
4419 ;;
4420 (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98
4421 # tested with osr5.0.5
4422 if test "$GCC" != yes; then
4423 CC_SHARED_OPTS='-belf -KPIC'
4424 fi
micky3879b9f5e72025-07-08 18:04:53 -04004425 MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
Steve Kondikae271bc2015-11-15 02:50:53 +01004426 if test "$cf_cv_enable_rpath" = yes ; then
4427 # only way is to set LD_RUN_PATH but no switch for it
4428 RUN_PATH=$libdir
4429 fi
4430 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
4431 LINK_PROGS='LD_RUN_PATH=${libdir}'
4432 LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
4433 ;;
4434 (sunos4*)
4435 # tested with SunOS 4.1.1 and gcc 2.7.0
4436 if test "$GCC" != yes; then
4437 CC_SHARED_OPTS='-KPIC'
4438 fi
micky3879b9f5e72025-07-08 18:04:53 -04004439 MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004440 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
4441 ;;
4442 (solaris2*)
4443 # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
4444 # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
4445 if test "$DFT_LWR_MODEL" = "shared" ; then
micky3879b9f5e72025-07-08 18:04:53 -04004446 LOCAL_LDFLAGS="-R\$(LOCAL_LIBDIR):\${libdir}"
Steve Kondikae271bc2015-11-15 02:50:53 +01004447 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
4448 fi
4449 if test "$cf_cv_enable_rpath" = yes ; then
micky3879b9f5e72025-07-08 18:04:53 -04004450 EXTRA_LDFLAGS="-R\${libdir} $EXTRA_LDFLAGS"
Steve Kondikae271bc2015-11-15 02:50:53 +01004451 fi
4452 CF_SHARED_SONAME
4453 if test "$GCC" != yes; then
4454 cf_save_CFLAGS="$CFLAGS"
4455 for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O
4456 do
4457 CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
micky3879b9f5e72025-07-08 18:04:53 -04004458 AC_TRY_COMPILE([#include <stdio.h>],[printf("Hello\\n");],[break])
Steve Kondikae271bc2015-11-15 02:50:53 +01004459 done
4460 CFLAGS="$cf_save_CFLAGS"
4461 CC_SHARED_OPTS=$cf_shared_opts
micky3879b9f5e72025-07-08 18:04:53 -04004462 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004463 else
micky3879b9f5e72025-07-08 18:04:53 -04004464 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $[@]'
Steve Kondikae271bc2015-11-15 02:50:53 +01004465 fi
4466 ;;
4467 (sysv5uw7*|unix_sv*)
4468 # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
4469 if test "$GCC" != yes; then
4470 CC_SHARED_OPTS='-KPIC'
4471 fi
micky3879b9f5e72025-07-08 18:04:53 -04004472 MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@'
Steve Kondikae271bc2015-11-15 02:50:53 +01004473 ;;
4474 (*)
4475 CC_SHARED_OPTS='unknown'
4476 MK_SHARED_LIB='echo unknown'
4477 ;;
4478 esac
4479
4480 # This works if the last tokens in $MK_SHARED_LIB are the -o target.
4481 case "$cf_cv_shlib_version" in
4482 (rel|abi)
4483 case "$MK_SHARED_LIB" in
4484 (*'-o $[@]')
4485 test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
4486 ;;
4487 (*)
4488 AC_MSG_WARN(ignored --with-shlib-version)
4489 ;;
4490 esac
4491 ;;
4492 esac
4493
4494 if test -n "$cf_try_cflags"
4495 then
4496cat > conftest.$ac_ext <<EOF
4497#line __oline__ "${as_me:-configure}"
4498#include <stdio.h>
4499int main(int argc, char *argv[[]])
4500{
micky3879b9f5e72025-07-08 18:04:53 -04004501 printf("hello\\n");
Steve Kondikae271bc2015-11-15 02:50:53 +01004502 return (argv[[argc-1]] == 0) ;
4503}
4504EOF
4505 cf_save_CFLAGS="$CFLAGS"
4506 for cf_opt in $cf_try_cflags
4507 do
4508 CFLAGS="$cf_save_CFLAGS -$cf_opt"
4509 AC_MSG_CHECKING(if CFLAGS option -$cf_opt works)
4510 if AC_TRY_EVAL(ac_compile); then
4511 AC_MSG_RESULT(yes)
4512 cf_save_CFLAGS="$CFLAGS"
4513 else
4514 AC_MSG_RESULT(no)
4515 fi
4516 done
4517 CFLAGS="$cf_save_CFLAGS"
4518 fi
4519
4520
4521 # RPATH_LIST is a colon-separated list of directories
4522 test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
4523 test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
4524
micky3879b9f5e72025-07-08 18:04:53 -04004525 test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
Steve Kondikae271bc2015-11-15 02:50:53 +01004526
4527 CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS)
4528 CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
4529
4530 AC_SUBST(CC_SHARED_OPTS)
4531 AC_SUBST(LD_RPATH_OPT)
4532 AC_SUBST(LD_SHARED_OPTS)
4533 AC_SUBST(MK_SHARED_LIB)
4534 AC_SUBST(RM_SHARED_OPTS)
4535
4536 AC_SUBST(LINK_PROGS)
4537 AC_SUBST(LINK_TESTS)
4538
4539 AC_SUBST(EXTRA_LDFLAGS)
4540 AC_SUBST(LOCAL_LDFLAGS)
4541 AC_SUBST(LOCAL_LDFLAGS2)
4542
4543 AC_SUBST(INSTALL_LIB)
4544 AC_SUBST(RPATH_LIST)
4545])dnl
4546dnl ---------------------------------------------------------------------------
4547dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43
4548dnl ----------------
4549dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for
4550dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar)
4551dnl option.
4552dnl
4553dnl $1 is the default that should be used for "$cf_cv_shlib_version".
4554dnl If missing, use "rel".
4555define([CF_SHARED_SONAME],
4556[
4557 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1)
4558 if test "$cf_cv_shlib_version" = rel; then
4559 cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
4560 else
4561 cf_cv_shared_soname='`basename $[@]`'
4562 fi
4563])
4564dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004565dnl CF_STRIP_G_OPT version: 4 updated: 2021/01/02 09:31:20
Steve Kondikae271bc2015-11-15 02:50:53 +01004566dnl --------------
4567dnl Remove "-g" option from the compiler options
4568AC_DEFUN([CF_STRIP_G_OPT],
micky3879b9f5e72025-07-08 18:04:53 -04004569[$1=`echo "${$1}" | CF__SED_TRIMBLANKS(-e 's%-g %%' -e 's%-g$%%')`])dnl
Steve Kondikae271bc2015-11-15 02:50:53 +01004570dnl ---------------------------------------------------------------------------
4571dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
4572dnl --------------
4573dnl Construct a search-list for a nonstandard header/lib-file
4574dnl $1 = the variable to return as result
4575dnl $2 = the package name
4576dnl $3 = the subdirectory, e.g., bin, include or lib
4577AC_DEFUN([CF_SUBDIR_PATH],
4578[
4579$1=
4580
4581CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
4582
4583for cf_subdir_prefix in \
4584 /usr \
4585 /usr/local \
4586 /usr/pkg \
4587 /opt \
4588 /opt/local \
4589 [$]HOME
4590do
4591 CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
4592done
4593])dnl
4594dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004595dnl CF_TERM_HEADER version: 6 updated: 2021/01/02 09:31:20
Steve Kondikae271bc2015-11-15 02:50:53 +01004596dnl --------------
4597dnl Look for term.h, which is part of X/Open curses. It defines the interface
4598dnl to terminfo database. Usually it is in the same include-path as curses.h,
4599dnl but some packagers change this, breaking various applications.
4600AC_DEFUN([CF_TERM_HEADER],[
4601AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
micky3879b9f5e72025-07-08 18:04:53 -04004602case "${cf_cv_ncurses_header}" in
Steve Kondikae271bc2015-11-15 02:50:53 +01004603(*/ncurses.h|*/ncursesw.h)
4604 cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
4605 ;;
4606(*)
4607 cf_term_header=term.h
4608 ;;
4609esac
4610
4611for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
4612do
4613AC_TRY_COMPILE([#include <stdio.h>
4614#include <${cf_cv_ncurses_header:-curses.h}>
4615#include <$cf_test>
micky3879b9f5e72025-07-08 18:04:53 -04004616],[int x = auto_left_margin; (void)x],[
Steve Kondikae271bc2015-11-15 02:50:53 +01004617 cf_cv_term_header="$cf_test"],[
4618 cf_cv_term_header=unknown
4619 ])
4620 test "$cf_cv_term_header" != unknown && break
4621done
4622])
4623
4624# Set definitions to allow ifdef'ing to accommodate subdirectories
4625
micky3879b9f5e72025-07-08 18:04:53 -04004626case "$cf_cv_term_header" in
Steve Kondikae271bc2015-11-15 02:50:53 +01004627(*term.h)
4628 AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
4629 ;;
4630esac
4631
micky3879b9f5e72025-07-08 18:04:53 -04004632case "$cf_cv_term_header" in
Steve Kondikae271bc2015-11-15 02:50:53 +01004633(ncurses/term.h)
4634 AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
4635 ;;
4636(ncursesw/term.h)
4637 AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
4638 ;;
4639esac
4640])dnl
4641dnl ---------------------------------------------------------------------------
4642dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
4643dnl ---------------
4644dnl Define a top_builddir symbol, for applications that need an absolute path.
4645AC_DEFUN([CF_TOP_BUILDDIR],
4646[
4647top_builddir=ifelse($1,,`pwd`,$1)
4648AC_SUBST(top_builddir)
4649])dnl
4650dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004651dnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16
Steve Kondikae271bc2015-11-15 02:50:53 +01004652dnl -------------------
4653dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
4654dnl can define it successfully.
4655AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
4656AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
micky3879b9f5e72025-07-08 18:04:53 -04004657 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
Steve Kondikae271bc2015-11-15 02:50:53 +01004658 [cf_cv_xopen_source=no],
4659 [cf_save="$CPPFLAGS"
micky3879b9f5e72025-07-08 18:04:53 -04004660 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
4661 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
4662 [cf_cv_xopen_source=no],
4663 [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
4664 CPPFLAGS="$cf_save"
Steve Kondikae271bc2015-11-15 02:50:53 +01004665 ])
4666])
4667
4668if test "$cf_cv_xopen_source" != no ; then
4669 CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
4670 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
4671 cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
micky3879b9f5e72025-07-08 18:04:53 -04004672 CF_APPEND_CFLAGS($cf_temp_xopen_source)
Steve Kondikae271bc2015-11-15 02:50:53 +01004673fi
4674])
4675dnl ---------------------------------------------------------------------------
4676dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
4677dnl --------
4678dnl Make an uppercase version of a variable
4679dnl $1=uppercase($2)
4680AC_DEFUN([CF_UPPER],
4681[
4682$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
4683])dnl
4684dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004685dnl CF_UTF8_LIB version: 10 updated: 2023/01/11 04:05:23
Steve Kondikae271bc2015-11-15 02:50:53 +01004686dnl -----------
4687dnl Check for multibyte support, and if not found, utf8 compatibility library
4688AC_DEFUN([CF_UTF8_LIB],
4689[
micky3879b9f5e72025-07-08 18:04:53 -04004690AC_HAVE_HEADERS(wchar.h)
Steve Kondikae271bc2015-11-15 02:50:53 +01004691AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
4692 cf_save_LIBS="$LIBS"
4693 AC_TRY_LINK([
micky3879b9f5e72025-07-08 18:04:53 -04004694$ac_includes_default
4695#ifdef HAVE_WCHAR_H
4696#include <wchar.h>
4697#endif
4698],[putwc(0,0);],
Steve Kondikae271bc2015-11-15 02:50:53 +01004699 [cf_cv_utf8_lib=yes],
4700 [CF_FIND_LINKAGE([
4701#include <libutf8.h>],[putwc(0,0);],utf8,
4702 [cf_cv_utf8_lib=add-on],
4703 [cf_cv_utf8_lib=no])
4704])])
4705
4706# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
4707# ncurses/ncursesw:
4708if test "$cf_cv_utf8_lib" = "add-on" ; then
4709 AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
4710 CF_ADD_INCDIR($cf_cv_header_path_utf8)
4711 CF_ADD_LIBDIR($cf_cv_library_path_utf8)
4712 CF_ADD_LIBS($cf_cv_library_file_utf8)
4713fi
4714])dnl
4715dnl ---------------------------------------------------------------------------
4716dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
4717dnl ----------
4718dnl Use AC_VERBOSE w/o the warnings
4719AC_DEFUN([CF_VERBOSE],
4720[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
4721CF_MSG_LOG([$1])
4722])dnl
4723dnl ---------------------------------------------------------------------------
4724dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06
4725dnl ---------------
4726dnl Check for compiler-support for weak symbols.
4727dnl This works with "recent" gcc.
4728AC_DEFUN([CF_WEAK_SYMBOLS],[
4729AC_CACHE_CHECK(if $CC supports weak symbols,cf_cv_weak_symbols,[
4730
4731AC_TRY_COMPILE([
4732#include <stdio.h>],
4733[
4734#if defined(__GNUC__)
4735# if defined __USE_ISOC99
4736# define _cat_pragma(exp) _Pragma(#exp)
4737# define _weak_pragma(exp) _cat_pragma(weak name)
4738# else
4739# define _weak_pragma(exp)
4740# endif
4741# define _declare(name) __extension__ extern __typeof__(name) name
4742# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak))
4743#endif
4744
4745weak_symbol(fopen);
4746],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no])
4747])
4748])dnl
4749dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004750dnl CF_WITH_ADA_COMPILER version: 3 updated: 2023/10/28 11:59:01
Steve Kondikae271bc2015-11-15 02:50:53 +01004751dnl --------------------
4752dnl Command-line option to specify the Ada95 compiler.
4753AC_DEFUN([CF_WITH_ADA_COMPILER],[
micky3879b9f5e72025-07-08 18:04:53 -04004754AC_MSG_CHECKING(for Ada95 compiler)
Steve Kondikae271bc2015-11-15 02:50:53 +01004755AC_ARG_WITH(ada-compiler,
micky3879b9f5e72025-07-08 18:04:53 -04004756 [[ --with-ada-compiler[=CMD] use CMD as Ada95 compiler (default: gnatmake)]],
Steve Kondikae271bc2015-11-15 02:50:53 +01004757 [cf_ada_compiler=$withval],
4758 [cf_ada_compiler=gnatmake])
4759AC_SUBST(cf_ada_compiler)
4760AC_MSG_RESULT($cf_ada_compiler)
4761])dnl
4762dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004763dnl CF_WITH_ADA_INCLUDE version: 3 updated: 2023/10/28 11:59:01
Steve Kondikae271bc2015-11-15 02:50:53 +01004764dnl -------------------
4765dnl Command-line option to specify where Ada includes will install.
4766AC_DEFUN([CF_WITH_ADA_INCLUDE],[
micky3879b9f5e72025-07-08 18:04:53 -04004767AC_MSG_CHECKING(for Ada95 include directory)
Steve Kondikae271bc2015-11-15 02:50:53 +01004768CF_WITH_PATH(ada-include,
micky3879b9f5e72025-07-08 18:04:53 -04004769 [ --with-ada-include=DIR find Ada95 includes in DIR],
Steve Kondikae271bc2015-11-15 02:50:53 +01004770 ADA_INCLUDE,
4771 PREFIX/share/ada/adainclude,
4772 [$]prefix/share/ada/adainclude)
4773AC_SUBST(ADA_INCLUDE)
4774AC_MSG_RESULT($ADA_INCLUDE)
4775])dnl
4776dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004777dnl CF_WITH_ADA_LIBNAME version: 3 updated: 2023/11/22 20:48:30
4778dnl -------------------
4779dnl CF_WITH_ADA_LIBNAME
4780dnl -------------------
4781dnl Command-line option to specify how to name the resulting Ada library.
4782dnl $1 = default value
4783AC_DEFUN([CF_WITH_ADA_LIBNAME],[
4784AC_MSG_CHECKING(for Ada95 curses library name)
4785AC_ARG_WITH(ada-libname,
4786 [[ --with-ada-libname[=XXX] use XXX as Ada95 library name]],
4787 ADA_LIBNAME=[$]withval,
4788 ADA_LIBNAME=$1)
4789case "x$ADA_LIBNAME" in
4790(x|xyes|xno)
4791 ADA_LIBNAME=$1
4792 ;;
4793esac
4794AC_SUBST(ADA_LIBNAME)
4795AC_MSG_RESULT($ADA_LIBNAME)
4796])dnl
4797dnl ---------------------------------------------------------------------------
4798dnl CF_WITH_ADA_OBJECTS version: 3 updated: 2023/10/28 11:59:01
Steve Kondikae271bc2015-11-15 02:50:53 +01004799dnl -------------------
4800dnl Command-line option to specify where Ada objects will install.
4801AC_DEFUN([CF_WITH_ADA_OBJECTS],[
micky3879b9f5e72025-07-08 18:04:53 -04004802AC_MSG_CHECKING(for Ada95 object directory)
Steve Kondikae271bc2015-11-15 02:50:53 +01004803CF_WITH_PATH(ada-objects,
micky3879b9f5e72025-07-08 18:04:53 -04004804 [ --with-ada-objects=DIR find Ada95 objects in DIR],
Steve Kondikae271bc2015-11-15 02:50:53 +01004805 ADA_OBJECTS,
4806 PREFIX/lib/ada/adalib,
4807 [$]prefix/lib/ada/adalib)
4808AC_SUBST(ADA_OBJECTS)
4809AC_MSG_RESULT($ADA_OBJECTS)
4810])dnl
4811dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004812dnl CF_WITH_ADA_SHAREDLIB version: 6 updated: 2023/10/28 11:59:01
Steve Kondikae271bc2015-11-15 02:50:53 +01004813dnl ---------------------
micky3879b9f5e72025-07-08 18:04:53 -04004814dnl Command-line option to specify if an Ada95 shared library should be built,
Steve Kondikae271bc2015-11-15 02:50:53 +01004815dnl and optionally what its soname should be.
4816AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
micky3879b9f5e72025-07-08 18:04:53 -04004817AC_REQUIRE([CF_GNAT_PROJECTS])
4818AC_MSG_CHECKING(whether to build an Ada95 shared library)
Steve Kondikae271bc2015-11-15 02:50:53 +01004819AC_ARG_WITH(ada-sharedlib,
micky3879b9f5e72025-07-08 18:04:53 -04004820 [ --with-ada-sharedlib build Ada95 shared library; requires GNAT project support],
Steve Kondikae271bc2015-11-15 02:50:53 +01004821 [with_ada_sharedlib=$withval],
4822 [with_ada_sharedlib=no])
micky3879b9f5e72025-07-08 18:04:53 -04004823cf_ada_sharedlib_warn=no
4824
4825if test "x$with_ada_sharedlib" != xno
4826then
4827 if test "x$cf_gnat_projects" != xyes
4828 then
4829 with_ada_sharedlib=no
4830 cf_ada_sharedlib_warn=yes
4831 fi
4832fi
4833
Steve Kondikae271bc2015-11-15 02:50:53 +01004834AC_MSG_RESULT($with_ada_sharedlib)
micky3879b9f5e72025-07-08 18:04:53 -04004835if test "x$cf_ada_sharedlib_warn" != xno
4836then
4837 AC_MSG_WARN(disabling Ada95 shared library since GNAT projects are not supported)
4838fi
Steve Kondikae271bc2015-11-15 02:50:53 +01004839
4840ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
4841MAKE_ADA_SHAREDLIB="#"
4842
4843if test "x$with_ada_sharedlib" != xno
4844then
4845 MAKE_ADA_SHAREDLIB=
4846 if test "x$with_ada_sharedlib" != xyes
4847 then
4848 ADA_SHAREDLIB="$with_ada_sharedlib"
4849 fi
4850fi
4851
4852AC_SUBST(ADA_SHAREDLIB)
4853AC_SUBST(MAKE_ADA_SHAREDLIB)
4854])dnl
4855dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004856dnl CF_WITH_CURSES_DIR version: 4 updated: 2021/01/02 19:22:58
Steve Kondikae271bc2015-11-15 02:50:53 +01004857dnl ------------------
4858dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
4859dnl libraries.
4860AC_DEFUN([CF_WITH_CURSES_DIR],[
4861
4862AC_MSG_CHECKING(for specific curses-directory)
4863AC_ARG_WITH(curses-dir,
4864 [ --with-curses-dir=DIR directory in which (n)curses is installed],
4865 [cf_cv_curses_dir=$withval],
4866 [cf_cv_curses_dir=no])
4867AC_MSG_RESULT($cf_cv_curses_dir)
4868
micky3879b9f5e72025-07-08 18:04:53 -04004869if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
Steve Kondikae271bc2015-11-15 02:50:53 +01004870then
4871 CF_PATH_SYNTAX(withval)
4872 if test -d "$cf_cv_curses_dir"
4873 then
4874 CF_ADD_INCDIR($cf_cv_curses_dir/include)
4875 CF_ADD_LIBDIR($cf_cv_curses_dir/lib)
4876 fi
4877fi
4878])dnl
4879dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004880dnl CF_WITH_LIB_PREFIX version: 2 updated: 2021/01/01 16:53:59
Steve Kondikae271bc2015-11-15 02:50:53 +01004881dnl ------------------
4882dnl Allow the library-prefix to be overridden. OS/2 EMX originally had no
4883dnl "lib" prefix, e.g., because it used the dll naming convention.
4884dnl
4885dnl $1 = variable to set
4886AC_DEFUN([CF_WITH_LIB_PREFIX],
4887[
4888AC_MSG_CHECKING(if you want to have a library-prefix)
4889AC_ARG_WITH(lib-prefix,
4890 [ --with-lib-prefix override library-prefix],
4891 [with_lib_prefix=$withval],
4892 [with_lib_prefix=auto])
4893AC_MSG_RESULT($with_lib_prefix)
4894
micky3879b9f5e72025-07-08 18:04:53 -04004895if test "$with_lib_prefix" = auto
Steve Kondikae271bc2015-11-15 02:50:53 +01004896then
4897 CF_LIB_PREFIX($1)
micky3879b9f5e72025-07-08 18:04:53 -04004898elif test "$with_lib_prefix" = no
Steve Kondikae271bc2015-11-15 02:50:53 +01004899then
4900 LIB_PREFIX=
4901else
4902 LIB_PREFIX=$with_lib_prefix
4903fi
4904])dnl
4905dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004906dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04
Steve Kondikae271bc2015-11-15 02:50:53 +01004907dnl ------------
4908dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
4909dnl defaulting to yes/no.
4910dnl
4911dnl $1 = option name
4912dnl $2 = help-text
4913dnl $3 = environment variable to set
4914dnl $4 = default value, shown in the help-message, must be a constant
micky3879b9f5e72025-07-08 18:04:53 -04004915dnl $5 = default value, if it is an expression & cannot be in the help-message
Steve Kondikae271bc2015-11-15 02:50:53 +01004916dnl
4917AC_DEFUN([CF_WITH_PATH],
4918[AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),,
4919ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl
4920if ifelse([$5],,true,[test -n "$5"]) ; then
4921CF_PATH_SYNTAX(withval)
4922fi
4923eval $3="$withval"
4924AC_SUBST($3)dnl
4925])dnl
4926dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04004927dnl CF_WITH_PKG_CONFIG_LIBDIR version: 23 updated: 2023/11/22 20:48:30
Steve Kondikae271bc2015-11-15 02:50:53 +01004928dnl -------------------------
4929dnl Allow the choice of the pkg-config library directory to be overridden.
micky3879b9f5e72025-07-08 18:04:53 -04004930dnl
4931dnl pkg-config uses a search-list built from these colon-separated lists of
4932dnl directories:
4933dnl a) $PKG_CONFIG_PATH (tested first, added if set)
4934dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set)
4935dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set)
4936dnl
4937dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config)
4938dnl optionally ignores $PKG_CONFIG_LIBDIR. Very old versions of pkg-config,
4939dnl e.g., Solaris 10 also do not recognize $PKG_CONFIG_LIBDIR.
Steve Kondikae271bc2015-11-15 02:50:53 +01004940AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
Steve Kondikae271bc2015-11-15 02:50:53 +01004941
micky3879b9f5e72025-07-08 18:04:53 -04004942case "$PKG_CONFIG" in
4943(no|none|yes)
4944 AC_MSG_CHECKING(for pkg-config library directory)
Steve Kondikae271bc2015-11-15 02:50:53 +01004945 ;;
4946(*)
micky3879b9f5e72025-07-08 18:04:53 -04004947 AC_MSG_CHECKING(for $PKG_CONFIG library directory)
Steve Kondikae271bc2015-11-15 02:50:53 +01004948 ;;
4949esac
4950
micky3879b9f5e72025-07-08 18:04:53 -04004951# if $PKG_CONFIG_LIBDIR is set, try to use that
4952if test -n "$PKG_CONFIG_PATH"; then
4953 cf_search_path=`echo "$PKG_CONFIG_PATH" | sed -e 's/:/ /g' -e 's,^[[ ]]*,,' -e 's,[[ ]]*$,,'`
4954elif test -n "$PKG_CONFIG_LIBDIR"; then
4955 cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[ ]]*,,' -e 's,[[ ]]*$,,'`
4956else
4957 cf_search_path=auto
4958fi
4959
4960# if the option is used, let that override. otherwise default to "libdir"
4961AC_ARG_WITH(pkg-config-libdir,
4962 [[ --with-pkg-config-libdir[=XXX] use given directory for installing pc-files]],
4963 [cf_search_path=$withval],
4964 [test "x$PKG_CONFIG" != xnone && test -z "$cf_search_path" && cf_search_path=libdir])
4965
4966case "x$cf_search_path" in
4967(xlibdir)
4968 PKG_CONFIG_LIBDIR='${libdir}/pkgconfig'
Steve Kondikae271bc2015-11-15 02:50:53 +01004969 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
micky3879b9f5e72025-07-08 18:04:53 -04004970 cf_search_path=
4971 ;;
4972(x)
4973 ;;
4974(x/*\ *)
4975 PKG_CONFIG_LIBDIR=
4976 ;;
4977(x/*)
4978 PKG_CONFIG_LIBDIR="$cf_search_path"
4979 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
4980 cf_search_path=
4981 ;;
4982(xyes|xauto)
4983 AC_MSG_RESULT(auto)
4984 cf_search_path=
4985 # Look for the library directory using the same prefix as the executable
4986 AC_MSG_CHECKING(for search-list)
4987 if test "x$PKG_CONFIG" != xnone
4988 then
4989 # works for pkg-config since version 0.24 (2009)
4990 # works for pkgconf since version 0.8.3 (2012)
4991 for cf_pkg_program in \
4992 `echo "$PKG_CONFIG" | sed -e 's,^.*/,,'` \
4993 pkg-config \
4994 pkgconf
4995 do
4996 cf_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null | tr : ' '`
4997 test -n "$cf_search_path" && break
4998 done
4999
5000 # works for pkg-config since import in 2005 of original 2001 HP code.
5001 test -z "$cf_search_path" && \
5002 cf_search_path=`
5003 "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | $AWK "\
5004/^Scanning directory (#[1-9][0-9]* )?'.*'$/{ \
5005 sub(\"^[[^']]*'\",\"\"); \
5006 sub(\"'.*\",\"\"); \
5007 printf \" %s\", \\[$]0; } \
5008{ next; } \
5009"`
5010 fi
5011
5012 AC_MSG_RESULT($cf_search_path)
5013 ;;
5014(*)
5015 AC_MSG_ERROR(Unexpected option value: $cf_search_path)
5016 ;;
5017esac
5018
5019if test -n "$cf_search_path"
5020then
5021 AC_MSG_CHECKING(for first directory)
5022 cf_pkg_config_path=none
5023 for cf_config in $cf_search_path
5024 do
5025 if test -d "$cf_config"
5026 then
5027 cf_pkg_config_path=$cf_config
5028 break
5029 fi
5030 done
5031 AC_MSG_RESULT($cf_pkg_config_path)
5032
5033 if test "x$cf_pkg_config_path" != xnone ; then
5034 # limit this to the first directory found
5035 PKG_CONFIG_LIBDIR="$cf_pkg_config_path"
5036 fi
5037
5038 if test -z "$PKG_CONFIG_LIBDIR" && test -n "$cf_search_path"
5039 then
5040 AC_MSG_CHECKING(for workaround)
5041 if test "$prefix" = "NONE" ; then
5042 cf_prefix="$ac_default_prefix"
5043 else
5044 cf_prefix="$prefix"
5045 fi
5046 eval cf_libdir=$libdir
5047 cf_libdir=`echo "$cf_libdir" | sed -e "s,^NONE,$cf_prefix,"`
5048 cf_backup=
5049 for cf_config in $cf_search_path
5050 do
5051 case $cf_config in
5052 $cf_libdir/pkgconfig)
5053 PKG_CONFIG_LIBDIR=$cf_libdir/pkgconfig
5054 break
5055 ;;
5056 *)
5057 test -z "$cf_backup" && cf_backup=$cf_config
5058 ;;
5059 esac
5060 done
5061 test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=$cf_backup
5062 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
5063 fi
Steve Kondikae271bc2015-11-15 02:50:53 +01005064fi
5065
5066AC_SUBST(PKG_CONFIG_LIBDIR)
5067])dnl
5068dnl ---------------------------------------------------------------------------
5069dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57
5070dnl ---------------
5071dnl Check for POSIX thread library.
5072AC_DEFUN([CF_WITH_PTHREAD],
5073[
5074AC_MSG_CHECKING(if you want to link with the pthread library)
5075AC_ARG_WITH(pthread,
5076 [ --with-pthread use POSIX thread library],
5077 [with_pthread=$withval],
5078 [with_pthread=no])
5079AC_MSG_RESULT($with_pthread)
5080
5081if test "$with_pthread" != no ; then
5082 AC_CHECK_HEADER(pthread.h,[
5083 AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
5084
5085 for cf_lib_pthread in pthread c_r
5086 do
5087 AC_MSG_CHECKING(if we can link with the $cf_lib_pthread library)
5088 cf_save_LIBS="$LIBS"
5089 CF_ADD_LIB($cf_lib_pthread)
5090 AC_TRY_LINK([
5091#include <pthread.h>
5092],[
5093 int rc = pthread_create(0,0,0,0);
5094 int r2 = pthread_mutexattr_settype(0, 0);
5095],[with_pthread=yes],[with_pthread=no])
5096 LIBS="$cf_save_LIBS"
5097 AC_MSG_RESULT($with_pthread)
5098 test "$with_pthread" = yes && break
5099 done
5100
5101 if test "$with_pthread" = yes ; then
5102 CF_ADD_LIB($cf_lib_pthread)
5103 AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library])
5104 else
5105 AC_MSG_ERROR(Cannot link with pthread library)
5106 fi
5107 ])
5108fi
5109])
5110dnl ---------------------------------------------------------------------------
5111dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12
5112dnl ---------------
5113dnl For testing, override the derived host system-type which is used to decide
5114dnl things such as the linker commands used to build shared libraries. This is
5115dnl normally chosen automatically based on the type of system which you are
5116dnl building on. We use it for testing the configure script.
5117dnl
5118dnl This is different from the --host option: it is used only for testing parts
5119dnl of the configure script which would not be reachable with --host since that
5120dnl relies on the build environment being real, rather than mocked up.
5121AC_DEFUN([CF_WITH_SYSTYPE],[
5122CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
5123AC_ARG_WITH(system-type,
5124 [ --with-system-type=XXX test: override derived host system-type],
5125[AC_MSG_WARN(overriding system type to $withval)
5126 cf_cv_system_name=$withval
5127 host_os=$withval
5128])
5129])dnl
5130dnl ---------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -04005131dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
Steve Kondikae271bc2015-11-15 02:50:53 +01005132dnl ---------------
5133dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
5134dnl or adapt to the vendor's definitions to get equivalent functionality,
5135dnl without losing the common non-POSIX features.
5136dnl
5137dnl Parameters:
5138dnl $1 is the nominal value for _XOPEN_SOURCE
5139dnl $2 is the nominal value for _POSIX_C_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04005140dnl
5141dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
5142dnl implementation predefines it, because X/Open and most implementations agree
5143dnl that the latter is a legacy or "aligned" value.
5144dnl
5145dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
5146dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
5147dnl
5148dnl References:
5149dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
5150dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
5151dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
Steve Kondikae271bc2015-11-15 02:50:53 +01005152AC_DEFUN([CF_XOPEN_SOURCE],[
5153AC_REQUIRE([AC_CANONICAL_HOST])
micky3879b9f5e72025-07-08 18:04:53 -04005154AC_REQUIRE([CF_POSIX_VISIBLE])
5155
5156if test "$cf_cv_posix_visible" = no; then
Steve Kondikae271bc2015-11-15 02:50:53 +01005157
5158cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
5159cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
5160cf_xopen_source=
5161
micky3879b9f5e72025-07-08 18:04:53 -04005162case "$host_os" in
Steve Kondikae271bc2015-11-15 02:50:53 +01005163(aix[[4-7]]*)
5164 cf_xopen_source="-D_ALL_SOURCE"
5165 ;;
Steve Kondikae271bc2015-11-15 02:50:53 +01005166(darwin[[0-8]].*)
5167 cf_xopen_source="-D_APPLE_C_SOURCE"
5168 ;;
5169(darwin*)
5170 cf_xopen_source="-D_DARWIN_C_SOURCE"
5171 cf_XOPEN_SOURCE=
5172 ;;
micky3879b9f5e72025-07-08 18:04:53 -04005173(freebsd*|dragonfly*|midnightbsd*)
Steve Kondikae271bc2015-11-15 02:50:53 +01005174 # 5.x headers associate
5175 # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
5176 # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
5177 cf_POSIX_C_SOURCE=200112L
5178 cf_XOPEN_SOURCE=600
5179 cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
5180 ;;
5181(hpux11*)
5182 cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
5183 ;;
5184(hpux*)
5185 cf_xopen_source="-D_HPUX_SOURCE"
5186 ;;
5187(irix[[56]].*)
5188 cf_xopen_source="-D_SGI_SOURCE"
5189 cf_XOPEN_SOURCE=
5190 ;;
micky3879b9f5e72025-07-08 18:04:53 -04005191(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
5192 CF_GNU_SOURCE($cf_XOPEN_SOURCE)
Steve Kondikae271bc2015-11-15 02:50:53 +01005193 ;;
5194(minix*)
5195 cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
5196 ;;
5197(mirbsd*)
5198 # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
5199 cf_XOPEN_SOURCE=
5200 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
5201 ;;
5202(netbsd*)
5203 cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
5204 ;;
micky3879b9f5e72025-07-08 18:04:53 -04005205(openbsd[[6-9]]*)
5206 # OpenBSD 6.x has broken locale support, both compile-time and runtime.
5207 # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
5208 # Abusing the conformance level is a workaround.
5209 AC_MSG_WARN(this system does not provide usable locale support)
5210 cf_xopen_source="-D_BSD_SOURCE"
5211 cf_XOPEN_SOURCE=700
5212 ;;
5213(openbsd[[4-5]]*)
Steve Kondikae271bc2015-11-15 02:50:53 +01005214 # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
5215 cf_xopen_source="-D_BSD_SOURCE"
5216 cf_XOPEN_SOURCE=600
5217 ;;
5218(openbsd*)
5219 # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
5220 ;;
5221(osf[[45]]*)
5222 cf_xopen_source="-D_OSF_SOURCE"
5223 ;;
5224(nto-qnx*)
5225 cf_xopen_source="-D_QNX_SOURCE"
5226 ;;
5227(sco*)
5228 # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
5229 ;;
5230(solaris2.*)
5231 cf_xopen_source="-D__EXTENSIONS__"
5232 cf_cv_xopen_source=broken
5233 ;;
5234(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
5235 cf_XOPEN_SOURCE=
5236 cf_POSIX_C_SOURCE=
5237 ;;
5238(*)
5239 CF_TRY_XOPEN_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04005240 cf_save_xopen_cppflags="$CPPFLAGS"
Steve Kondikae271bc2015-11-15 02:50:53 +01005241 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
micky3879b9f5e72025-07-08 18:04:53 -04005242 # Some of these niche implementations use copy/paste, double-check...
5243 if test "$cf_cv_xopen_source" = no ; then
5244 CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
5245 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
5246 AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
5247 CPPFLAGS="$cf_save_xopen_cppflags"])
5248 fi
Steve Kondikae271bc2015-11-15 02:50:53 +01005249 ;;
5250esac
5251
5252if test -n "$cf_xopen_source" ; then
micky3879b9f5e72025-07-08 18:04:53 -04005253 CF_APPEND_CFLAGS($cf_xopen_source,true)
Steve Kondikae271bc2015-11-15 02:50:53 +01005254fi
5255
5256dnl In anything but the default case, we may have system-specific setting
5257dnl which is still not guaranteed to provide all of the entrypoints that
5258dnl _XOPEN_SOURCE would yield.
5259if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
5260 AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
5261 AC_TRY_COMPILE([#include <stdlib.h>],[
5262#ifndef _XOPEN_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04005263#error _XOPEN_SOURCE is not defined
Steve Kondikae271bc2015-11-15 02:50:53 +01005264#endif],
5265 [cf_XOPEN_SOURCE_set=yes],
5266 [cf_XOPEN_SOURCE_set=no])
5267 AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
micky3879b9f5e72025-07-08 18:04:53 -04005268 if test "$cf_XOPEN_SOURCE_set" = yes
Steve Kondikae271bc2015-11-15 02:50:53 +01005269 then
5270 AC_TRY_COMPILE([#include <stdlib.h>],[
5271#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
micky3879b9f5e72025-07-08 18:04:53 -04005272#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
Steve Kondikae271bc2015-11-15 02:50:53 +01005273#endif],
5274 [cf_XOPEN_SOURCE_set_ok=yes],
5275 [cf_XOPEN_SOURCE_set_ok=no])
micky3879b9f5e72025-07-08 18:04:53 -04005276 if test "$cf_XOPEN_SOURCE_set_ok" = no
Steve Kondikae271bc2015-11-15 02:50:53 +01005277 then
5278 AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
5279 fi
5280 else
5281 CF_TRY_XOPEN_SOURCE
5282 fi
5283fi
micky3879b9f5e72025-07-08 18:04:53 -04005284fi # cf_cv_posix_visible
5285])
5286dnl ---------------------------------------------------------------------------
5287dnl CF__SED_TRIMBLANKS version: 1 updated: 2021/01/02 09:31:20
5288dnl ------------------
5289dnl Trim something using sed, then trim extra whitespace
5290dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT
5291define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[ ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl
5292dnl ---------------------------------------------------------------------------
5293dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
5294dnl ---------------------
5295dnl body of test when test-compiling for _XOPEN_SOURCE check
5296define([CF__XOPEN_SOURCE_BODY],
5297[
5298#ifndef _XOPEN_SOURCE
5299#error _XOPEN_SOURCE is not defined
5300#endif
5301])
5302dnl ---------------------------------------------------------------------------
5303dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
5304dnl ---------------------
5305dnl headers to include when test-compiling for _XOPEN_SOURCE check
5306define([CF__XOPEN_SOURCE_HEAD],
5307[
5308$ac_includes_default
Steve Kondikae271bc2015-11-15 02:50:53 +01005309])