comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/share/aclocal/lib-prefix.m4 @ 68:5028fdace37b

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 16:23:26 -0400
parents
children
comparison
equal deleted inserted replaced
67:0e9998148a16 68:5028fdace37b
1 # lib-prefix.m4 serial 22
2 dnl Copyright (C) 2001-2005, 2008-2024 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 dnl From Bruno Haible.
8
9 dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
10 dnl to access previously installed libraries. The basic assumption is that
11 dnl a user will want packages to use other packages he previously installed
12 dnl with the same --prefix option.
13 dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
14 dnl libraries, but is otherwise very convenient.
15 AC_DEFUN([AC_LIB_PREFIX],
16 [
17 AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
18 AC_REQUIRE([AC_PROG_CC])
19 AC_REQUIRE([AC_CANONICAL_HOST])
20 AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
21 AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
22 dnl By default, look in $includedir and $libdir.
23 use_additional=yes
24 AC_LIB_WITH_FINAL_PREFIX([
25 eval additional_includedir=\"$includedir\"
26 eval additional_libdir=\"$libdir\"
27 ])
28 AC_ARG_WITH([lib-prefix],
29 [[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
30 --without-lib-prefix don't search for libraries in includedir and libdir]],
31 [
32 if test "X$withval" = "Xno"; then
33 use_additional=no
34 else
35 if test "X$withval" = "X"; then
36 AC_LIB_WITH_FINAL_PREFIX([
37 eval additional_includedir=\"$includedir\"
38 eval additional_libdir=\"$libdir\"
39 ])
40 else
41 additional_includedir="$withval/include"
42 additional_libdir="$withval/$acl_libdirstem"
43 fi
44 fi
45 ])
46 if test $use_additional = yes; then
47 dnl Potentially add $additional_includedir to $CPPFLAGS.
48 dnl But don't add it
49 dnl 1. if it's the standard /usr/include,
50 dnl 2. if it's already present in $CPPFLAGS,
51 dnl 3. if it's /usr/local/include and we are using GCC on Linux,
52 dnl 4. if it doesn't exist as a directory.
53 if test "X$additional_includedir" != "X/usr/include"; then
54 haveit=
55 for x in $CPPFLAGS; do
56 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
57 if test "X$x" = "X-I$additional_includedir"; then
58 haveit=yes
59 break
60 fi
61 done
62 if test -z "$haveit"; then
63 if test "X$additional_includedir" = "X/usr/local/include"; then
64 if test -n "$GCC"; then
65 case $host_os in
66 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
67 esac
68 fi
69 fi
70 if test -z "$haveit"; then
71 if test -d "$additional_includedir"; then
72 dnl Really add $additional_includedir to $CPPFLAGS.
73 CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
74 fi
75 fi
76 fi
77 fi
78 dnl Potentially add $additional_libdir to $LDFLAGS.
79 dnl But don't add it
80 dnl 1. if it's the standard /usr/lib,
81 dnl 2. if it's already present in $LDFLAGS,
82 dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
83 dnl 4. if it doesn't exist as a directory.
84 if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
85 haveit=
86 for x in $LDFLAGS; do
87 AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
88 if test "X$x" = "X-L$additional_libdir"; then
89 haveit=yes
90 break
91 fi
92 done
93 if test -z "$haveit"; then
94 if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
95 if test -n "$GCC"; then
96 case $host_os in
97 linux*) haveit=yes;;
98 esac
99 fi
100 fi
101 if test -z "$haveit"; then
102 if test -d "$additional_libdir"; then
103 dnl Really add $additional_libdir to $LDFLAGS.
104 LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
105 fi
106 fi
107 fi
108 fi
109 fi
110 ])
111
112 dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
113 dnl acl_final_exec_prefix, containing the values to which $prefix and
114 dnl $exec_prefix will expand at the end of the configure script.
115 AC_DEFUN([AC_LIB_PREPARE_PREFIX],
116 [
117 dnl Unfortunately, prefix and exec_prefix get only finally determined
118 dnl at the end of configure.
119 if test "X$prefix" = "XNONE"; then
120 acl_final_prefix="$ac_default_prefix"
121 else
122 acl_final_prefix="$prefix"
123 fi
124 if test "X$exec_prefix" = "XNONE"; then
125 acl_final_exec_prefix='${prefix}'
126 else
127 acl_final_exec_prefix="$exec_prefix"
128 fi
129 acl_saved_prefix="$prefix"
130 prefix="$acl_final_prefix"
131 eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
132 prefix="$acl_saved_prefix"
133 ])
134
135 dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
136 dnl variables prefix and exec_prefix bound to the values they will have
137 dnl at the end of the configure script.
138 AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
139 [
140 acl_saved_prefix="$prefix"
141 prefix="$acl_final_prefix"
142 acl_saved_exec_prefix="$exec_prefix"
143 exec_prefix="$acl_final_exec_prefix"
144 $1
145 exec_prefix="$acl_saved_exec_prefix"
146 prefix="$acl_saved_prefix"
147 ])
148
149 dnl AC_LIB_PREPARE_MULTILIB creates
150 dnl - a function acl_is_expected_elfclass, that tests whether standard input
151 dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI,
152 dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing
153 dnl the basename of the libdir to try in turn, either "lib" or "lib64" or
154 dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar.
155 AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
156 [
157 dnl There is no formal standard regarding lib, lib32, and lib64.
158 dnl On most glibc systems, the current practice is that on a system supporting
159 dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
160 dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on
161 dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go
162 dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib.
163 dnl We determine the compiler's default mode by looking at the compiler's
164 dnl library search path. If at least one of its elements ends in /lib64 or
165 dnl points to a directory whose absolute pathname ends in /lib64, we use that
166 dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default,
167 dnl namely "lib".
168 dnl On Solaris systems, the current practice is that on a system supporting
169 dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
170 dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
171 dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
172 AC_REQUIRE([AC_CANONICAL_HOST])
173 AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
174
175 AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf],
176 [AC_EGREP_CPP([Extensible Linking Format],
177 [#if defined __ELF__ || (defined __linux__ && defined __EDG__)
178 Extensible Linking Format
179 #endif
180 ],
181 [gl_cv_elf=yes],
182 [gl_cv_elf=no])
183 ])
184 if test $gl_cv_elf = yes; then
185 # Extract the ELF class of a file (5th byte) in decimal.
186 # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
187 if od -A x < /dev/null >/dev/null 2>/dev/null; then
188 # Use POSIX od.
189 func_elfclass ()
190 {
191 od -A n -t d1 -j 4 -N 1
192 }
193 else
194 # Use BSD hexdump.
195 func_elfclass ()
196 {
197 dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "'
198 echo
199 }
200 fi
201 # Use 'expr', not 'test', to compare the values of func_elfclass, because on
202 # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002,
203 # not 1 or 2.
204 changequote(,)dnl
205 case $HOST_CPU_C_ABI_32BIT in
206 yes)
207 # 32-bit ABI.
208 acl_is_expected_elfclass ()
209 {
210 expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null
211 }
212 ;;
213 no)
214 # 64-bit ABI.
215 acl_is_expected_elfclass ()
216 {
217 expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null
218 }
219 ;;
220 *)
221 # Unknown.
222 acl_is_expected_elfclass ()
223 {
224 :
225 }
226 ;;
227 esac
228 changequote([,])dnl
229 else
230 acl_is_expected_elfclass ()
231 {
232 :
233 }
234 fi
235
236 dnl Allow the user to override the result by setting acl_cv_libdirstems.
237 AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
238 [acl_cv_libdirstems],
239 [dnl Try 'lib' first, because that's the default for libdir in GNU, see
240 dnl <https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>.
241 acl_libdirstem=lib
242 acl_libdirstem2=
243 acl_libdirstem3=
244 case "$host_os" in
245 solaris*)
246 dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
247 dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
248 dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
249 dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
250 dnl symlink is missing, so we set acl_libdirstem2 too.
251 if test $HOST_CPU_C_ABI_32BIT = no; then
252 acl_libdirstem2=lib/64
253 case "$host_cpu" in
254 sparc*) acl_libdirstem3=lib/sparcv9 ;;
255 i*86 | x86_64) acl_libdirstem3=lib/amd64 ;;
256 esac
257 fi
258 ;;
259 netbsd*)
260 dnl On NetBSD/sparc64, there is a 'sparc' subdirectory that contains
261 dnl 32-bit libraries.
262 if test $HOST_CPU_C_ABI_32BIT != no; then
263 case "$host_cpu" in
264 sparc*) acl_libdirstem2=lib/sparc ;;
265 esac
266 fi
267 ;;
268 *)
269 dnl If $CC generates code for a 32-bit ABI, the libraries are
270 dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64.
271 dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries
272 dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32.
273 dnl Find the compiler's search path. However, non-system compilers
274 dnl sometimes have odd library search paths. But we can't simply invoke
275 dnl '/usr/bin/gcc -print-search-dirs' because that would not take into
276 dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS.
277 searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \
278 | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
279 if test $HOST_CPU_C_ABI_32BIT != no; then
280 # 32-bit or unknown ABI.
281 if test -d /usr/lib32; then
282 acl_libdirstem2=lib32
283 fi
284 fi
285 if test $HOST_CPU_C_ABI_32BIT != yes; then
286 # 64-bit or unknown ABI.
287 if test -d /usr/lib64; then
288 acl_libdirstem3=lib64
289 fi
290 fi
291 if test -n "$searchpath"; then
292 acl_saved_IFS="${IFS= }"; IFS=":"
293 for searchdir in $searchpath; do
294 if test -d "$searchdir"; then
295 case "$searchdir" in
296 */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;;
297 */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;;
298 */../ | */.. )
299 # Better ignore directories of this form. They are misleading.
300 ;;
301 *) searchdir=`cd "$searchdir" && pwd`
302 case "$searchdir" in
303 */lib32 ) acl_libdirstem2=lib32 ;;
304 */lib64 ) acl_libdirstem3=lib64 ;;
305 esac ;;
306 esac
307 fi
308 done
309 IFS="$acl_saved_IFS"
310 if test $HOST_CPU_C_ABI_32BIT = yes; then
311 # 32-bit ABI.
312 acl_libdirstem3=
313 fi
314 if test $HOST_CPU_C_ABI_32BIT = no; then
315 # 64-bit ABI.
316 acl_libdirstem2=
317 fi
318 fi
319 ;;
320 esac
321 test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
322 test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem"
323 acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3"
324 ])
325 dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and
326 dnl acl_libdirstem3.
327 changequote(,)dnl
328 acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
329 acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'`
330 acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'`
331 changequote([,])dnl
332 ])