Mercurial > repos > rliterman > csp2
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 ]) |