Mercurial > hg > xemacs-beta
annotate aclocal.m4 @ 5724:ede80ef92a74
Make soft links in src for module source files, if built in to the executable.
This ensures that those files are built with the same compiler flags as all
other source files.
See these xemacs-beta messages:
<CAHCOHQn+q=Xuwq+y68dvqi7afAP9f-TdB7=8YiZ8VYO816sjHg@mail.gmail.com>
<f5by5ejqiyk.fsf@calexico.inf.ed.ac.uk>
author | Jerry James <james@xemacs.org> |
---|---|
date | Sat, 02 Mar 2013 14:32:37 -0700 |
parents | 4dee0387b9de |
children |
rev | line source |
---|---|
265 | 1 dnl aclocal.m4 --- Dynamically linked library support for XEmacs |
388 | 2 dnl Copyright (C) 1998, 1999 J. Kean Johnston. |
3 dnl Author: J. Kean Johnston <jkj@sco.com>, based on work in libtool. | |
4 dnl This file is part of XEmacs. | |
5290
e6508b64ee08
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4932
diff
changeset
|
5 dnl |
5410
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
6 dnl XEmacs is free software: you can redistribute it and/or modify it |
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
7 dnl under the terms of the GNU General Public License as published by the |
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
8 dnl Free Software Foundation, either version 3 of the License, or (at your |
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
9 dnl option) any later version. |
5290
e6508b64ee08
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4932
diff
changeset
|
10 dnl |
5410
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
11 dnl XEmacs is distributed in the hope that it will be useful, but WITHOUT |
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
12 dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
13 dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
14 dnl for more details. |
5290
e6508b64ee08
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4932
diff
changeset
|
15 dnl |
e6508b64ee08
More permission consistency.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
4932
diff
changeset
|
16 dnl You should have received a copy of the GNU General Public License |
5410
ff554e6a2d29
Convert aclocal.m4 to GPLv3 as it was GPLv2 by the author.
Mats Lidell <matsl@xemacs.org>
parents:
4932
diff
changeset
|
17 dnl along with XEmacs. If not, see <http://www.gnu.org/licenses/>. |
388 | 18 dnl |
19 dnl There are several things we care about here. First, we need to find | |
20 dnl out how we create an executable that has its symbols exported, so | |
21 dnl that dynamically loaded modules have access to the internal XEmacs | |
22 dnl symbols. This is stored in ``ld_dynamic_link_flags'' and is used | |
23 dnl in the main Makefile. | |
24 dnl Next, we need to know how we compile actual shared libraries, and | |
25 dnl the objects in them. For these purposes, we need to determine the | |
26 dnl C compiler flags used to produce shared objects (``dll_cflags''), | |
27 dnl what linker to use to create the final shared object that will be | |
28 dnl loaded (``dll_ld'') and the flags to pass to that linker | |
29 dnl (``dll_ldflags''). This information is used by ellcc to build up | |
30 dnl the command line when compiling modules. We build up two other commands | |
31 dnl for extremely weird systems where special things need to be done. | |
32 dnl The first is ``dll_ldo'', which is the flag used to specify the output | |
33 dnl file name, and the second is ``dll_post'' which is inserted after the | |
34 dnl list of objects. | |
35 dnl After all of this, we should be able to: | |
36 dnl $(CC) $(CFLAGS) $(dll_cflags) -c module.c | |
37 dnl to produce a single shared object | |
38 dnl And then: | |
39 dnl $(dll_ld) $(dll_ldflags) $(dll_ldo) module.ell module.o $(dll_post) | |
40 dnl to create the loadable shared library. | |
41 dnl | |
42 dnl NOTE: In the code below, where I have modified things to work with | |
43 dnl XEmacs, we use $canonical instead of libtool's $host, and we use | |
44 dnl $internal_configuration instead of $host_alias. To make typing | |
45 dnl shorter we assign these to $xehost and $xealias | |
46 | |
47 AC_DEFUN(XE_SHLIB_STUFF,[ | |
48 dll_ld= | |
49 dll_ldflags= | |
50 dll_cflags= | |
51 dll_post= | |
52 dll_ldo="-o" | |
53 ld_dynamic_link_flags= | |
2651 | 54 xehost=$ac_cv_build |
55 xealias=$ac_cv_build_alias | |
388 | 56 |
3312 | 57 AC_MSG_CHECKING([how to build dynamic libraries for ${xehost}]) |
58 AC_MSG_RESULT() | |
388 | 59 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. |
60 case "$xehost" in | |
61 *-*-linux-gnu*) ;; | |
62 *-*-linux*) xehost=`echo $xehost | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` | |
63 esac | |
64 | |
2651 | 65 xehost_cpu=`echo $xehost | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'` |
66 xehost_vendor=`echo $xehost | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'` | |
67 xehost_os=`echo $xehost | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'` | |
388 | 68 |
69 # Now see if the compiler is really GCC. | |
70 if test "$GCC" = "yes"; then | |
71 XEGCC=yes | |
72 else | |
2651 | 73 AC_MSG_CHECKING([whether we are using GNU C]) |
388 | 74 AC_EGREP_CPP(yes,[ |
75 #ifdef __GNUC__ | |
76 yes; | |
77 #endif | |
78 ],XEGCC=yes, XEGCC=no) | |
79 AC_MSG_RESULT([${XEGCC}]) | |
80 fi | |
81 | |
2651 | 82 AC_MSG_CHECKING([how to produce PIC code]) |
388 | 83 wl= |
84 | |
85 can_build_shared=yes | |
1756 | 86 if test "$XEGCC" = yes -o "$__ICC" = yes; then |
388 | 87 wl='-Wl,' |
88 | |
89 case "$xehost_os" in | |
4759
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
90 aix[[4-9]]* | irix[[5-9]]* | osf[[3-9]]) |
388 | 91 # PIC is the default for these OSes. |
92 ;; | |
93 | |
1678 | 94 *darwin*) dll_cflags='-dynamic' |
95 ;; | |
96 | |
460 | 97 os2*) |
388 | 98 # We can build DLLs from non-PIC. |
99 ;; | |
100 amigaos*) | |
101 # FIXME: we need at least 68020 code to build shared libraries, but | |
102 # adding the `-m68020' flag to GCC prevents building anything better, | |
103 # like `-m68040'. | |
104 dll_cflags='-m68020 -resident32 -malways-restore-a4' | |
105 ;; | |
442 | 106 *cygwin* | *mingw* ) |
107 # PIC is the default | |
108 ;; | |
388 | 109 *) |
110 dll_cflags='-fPIC' | |
111 ;; | |
112 esac | |
113 else | |
114 # PORTME Check for PIC flags for the system compiler. | |
115 case "$xehost_os" in | |
4759
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
116 hpux1[[0-9]]*) |
388 | 117 # Is there a better link_static_flag that works with the bundled CC? |
118 wl='-Wl,' | |
119 dll_cflags='+Z' | |
120 ;; | |
121 | |
460 | 122 irix[[5-9]]*) |
388 | 123 wl='-Wl,' |
124 # PIC (with -KPIC) is the default. | |
125 ;; | |
126 | |
127 os2*) | |
128 # We can build DLLs from non-PIC. | |
129 ;; | |
130 | |
460 | 131 osf[[3-9]]*) |
388 | 132 # All OSF/1 code is PIC. |
133 wl='-Wl,' | |
134 ;; | |
135 | |
4759
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
136 aix[[4-9]]*) |
460 | 137 # All AIX code is PIC. |
138 wl='-Wl,' | |
139 ;; | |
140 | |
388 | 141 sco3.2v5*) |
142 dll_cflags='-belf -Kpic' | |
143 wl='-Wl,' | |
144 ;; | |
265 | 145 |
388 | 146 unixware*) |
147 dll_cflags="-KPIC" | |
148 wl="-Wl," | |
149 ;; | |
150 | |
151 sysv4*) | |
152 dll_cflags="-KPIC" | |
153 wl="-Wl," | |
154 ;; | |
155 | |
156 sysv5*) | |
157 dll_cflags="-KPIC" | |
158 wl="-Wl," | |
159 ;; | |
160 | |
161 solaris2*) | |
162 dll_cflags='-KPIC' | |
163 wl='-Wl,' | |
164 ;; | |
165 | |
166 uts4*) | |
167 dll_cflags='-pic' | |
168 ;; | |
169 | |
170 *) | |
171 can_build_shared=no | |
172 ;; | |
173 esac | |
174 fi | |
175 | |
176 if test -n "$dll_cflags"; then | |
177 AC_MSG_RESULT([${dll_cflags}]) | |
442 | 178 |
388 | 179 # Check to make sure the dll_cflags actually works. |
180 AC_MSG_CHECKING([if PIC flag ${dll_cflags} really works]) | |
181 save_CFLAGS="$CFLAGS" | |
182 CFLAGS="$CFLAGS $dll_cflags -DPIC" | |
3312 | 183 AC_COMPILE_IFELSE([AC_LANG_SOURCE([int x=0;])],[ |
388 | 184 # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also |
185 # reports no error. So, we need to grep stderr for (Bundled). | |
186 if grep '(Bundled)' config.log >/dev/null; then | |
187 AC_MSG_RESULT(no) | |
188 can_build_shared=no | |
189 dll_cflags= | |
190 else | |
191 AC_MSG_RESULT(yes) | |
192 fi], [AC_MSG_RESULT(no) | |
193 can_build_shared=no | |
194 dll_cflags=]) | |
195 CFLAGS="$save_CFLAGS" | |
196 else | |
197 AC_MSG_RESULT(none) | |
198 fi | |
199 | |
200 dnl | |
201 dnl Now comes the LD trickery. We do things differently to libtool here. | |
202 dnl I believe that libtool is incorrect in trying to drive the linker | |
203 dnl directly. This can cause considerable problems if the module you are | |
204 dnl compiling has C++ or other static initializers. If we use ld directly, | |
442 | 205 dnl we don't end up with the crt stuff being linked in, and we don't end up |
388 | 206 dnl with any .init or .fini sections (or the moral equivalent thereof). |
442 | 207 dnl gcc takes great care to do this properly when invoked in -shared |
208 dnl mode, and we really do want this behavior. Perhaps the libtool folks | |
388 | 209 dnl are not aware that any SVR4 based dynamic loader will automatically |
210 dnl execute code in the .init section before dlopen() returns. This is | |
442 | 211 dnl vital, as the module may have been compiled to rely on that behavior. |
388 | 212 dnl |
213 dnl So, having said all of that, we diverge from libtool significantly | |
214 dnl here. We want to try and use the C compiler as much as possible. Only | |
2079 | 215 dnl if the C compiler itself cannot create shared libraries do we try to |
388 | 216 dnl find the linker. |
217 dnl | |
5384
3889ef128488
Fix misspelled words, and some grammar, across the entire source tree.
Jerry James <james@xemacs.org>
parents:
5290
diff
changeset
|
218 dnl The other advantage to my scheme is that it removes the dependency |
388 | 219 dnl on a given compiler version remaining static with relation to the |
220 dnl version of XEmacs. With the libtool way, it picks up the linker that | |
221 dnl gcc uses, which can be the internal collect2 that comes with gcc. | |
222 dnl If the user ever changes their compiler version, the paths will no | |
223 dnl longer be correct, and ellcc will break. This is clearly unacceptable. | |
442 | 224 dnl By using the compiler driver on the path, we don't have this problem. |
388 | 225 dnl If that is not clear, consider that gcc -print-prog-name=ld can |
226 dnl produce something along the lines of: | |
227 dnl /usr/local/lib/gcc-lib/OS-NAME/GCC-VERSION/ld | |
228 dnl If you ever change GCC versions, then that path no longer exists. | |
229 dnl | |
230 dnl So, we change the check order here. We first check to see if we are | |
231 dnl using GCC, and if so, we see if -shared works. If it does, great. | |
232 dnl If we are not using gcc, but the system C compiler can produce | |
233 dnl shared objects, we try that. Only if all of that fails do we revert | |
234 dnl back to the libtool ld trickery. | |
235 dnl | |
442 | 236 dnl We don't do ANY of this if we can't produce shared objects. |
388 | 237 dnl |
238 if test "$can_build_shared" = "yes"; then | |
239 cc_produces_so=no | |
240 xldf= | |
241 xcldf= | |
2651 | 242 AC_MSG_CHECKING([if C compiler can produce shared libraries]) |
1756 | 243 if test "$XEGCC" = yes -o "$__ICC" = yes; then |
1678 | 244 case "$xehost_os" in |
245 *darwin*) | |
246 xcldf='-bundle' | |
247 xldf='-bundle -bundle_loader ../../src/xemacs' | |
248 ;; | |
249 *) | |
250 xcldf="-shared" | |
251 xldf="-shared" | |
252 ;; | |
253 esac | |
388 | 254 else # Not using GCC |
255 case "$xehost_os" in | |
4759
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
256 aix[[4-9]]*) |
388 | 257 xldf="-bE:ELLSONAME.exp -H512 -T512 -bhalt:4 -bM:SRE -bnoentry -lc" |
258 xcldf="${wl}-bE:ELLSONAME.exp ${wl}-H512 ${wl}-T512 ${wl}-bhalt:4 ${wl}-bM:SRE ${wl}-bnoentry ${wl}-lc" | |
259 ;; | |
260 | |
261 freebsd2* | netbsd* | openbsd*) | |
262 xldf="-Bshareable" | |
263 xcldf="${wl}-Bshareable" | |
264 ;; | |
265 | |
266 freebsd3*) | |
267 xcldf="-shared" | |
268 ;; | |
269 | |
270 hpux*) | |
271 xldf="-b +s" | |
272 xcldf="${wl}-b ${wl}+s" | |
273 ;; | |
274 | |
460 | 275 irix[[5-9]]* | osf[[3-9]]*) |
388 | 276 xcldf="${wl}-shared" |
277 xldf="-shared" | |
278 ;; | |
279 | |
280 sco3.2v5* | unixware* | sysv5* | sysv4* | solaris2* | solaris7* | uts4*) | |
281 xcldf="-G" | |
282 xldf="-G" | |
283 ;; | |
284 esac | |
285 fi # End if if we are using gcc | |
265 | 286 |
388 | 287 if test -n "$xcldf"; then |
288 save_LDFLAGS=$LDFLAGS | |
289 save_LIBS=$LIBS | |
290 save_xe_libs=$xe_libs | |
291 LDFLAGS="$xcldf $LDFLAGS" | |
292 LIBS= | |
293 xe_libs= | |
3312 | 294 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AS_MESSAGE_LOG_FD' |
295 AC_LINK_IFELSE([AC_LANG_SOURCE([int x=0;])], | |
296 [cc_produces_so=yes],[cc_produces_so=no]) | |
388 | 297 LDFLAGS=$save_LDFLAGS |
298 LIBS=$save_LIBS | |
299 xe_libs=$save_xe_libs | |
3312 | 300 ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&AS_MESSAGE_LOG_FD' |
388 | 301 else |
302 cc_produces_so=no | |
303 fi | |
304 AC_MSG_RESULT([${cc_produces_so}]) | |
305 | |
306 LTLD=$LD | |
307 if test -z "$LTLD"; then | |
308 ac_prog=ld | |
309 if test "$XEGCC" = yes; then | |
310 # Check if gcc -print-prog-name=ld gives a path. | |
2651 | 311 AC_MSG_CHECKING([for ld used by GCC]) |
388 | 312 ac_prog=`($CC -print-prog-name=ld) 2>&5` |
313 case "$ac_prog" in | |
314 # Accept absolute paths. | |
315 /*) | |
316 if test -z "$LTLD"; then | |
724 | 317 # case "$ac_prog" in |
318 # *gcc-lib*) LTLD="$CC" | |
319 # ;; | |
320 # *) | |
321 LTLD="$ac_prog" | |
322 # ;; | |
323 # esac | |
388 | 324 fi |
325 ;; | |
326 "") | |
327 # If it fails, then pretend we aren't using GCC. | |
328 ac_prog=ld | |
329 ;; | |
330 *) | |
331 # If it is relative, then search for the first ld in PATH. | |
332 with_gnu_ld=unknown | |
333 ;; | |
334 esac | |
335 else | |
2651 | 336 AC_MSG_CHECKING([for GNU ld]) |
388 | 337 fi |
338 | |
339 if test -z "$LTLD"; then | |
340 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" | |
341 for ac_dir in $PATH; do | |
342 test -z "$ac_dir" && ac_dir=. | |
343 if test -f "$ac_dir/$ac_prog"; then | |
344 LTLD="$ac_dir/$ac_prog" | |
345 # Check to see if the program is GNU ld. I'd rather use --version, | |
346 # but apparently some GNU ld's only accept -v. | |
347 # Break only if it was the GNU/non-GNU ld that we prefer. | |
3773 | 348 if "$LTLD" -v 2>&1 < /dev/null | $EGREP '(GNU|with BFD)' > /dev/null; then |
388 | 349 xe_gnu_ld=yes |
350 else | |
351 xe_gnu_ld=no | |
352 fi | |
353 fi | |
354 done | |
355 IFS="$ac_save_ifs" | |
356 fi | |
357 | |
358 if test -n "$LTLD"; then | |
359 AC_MSG_RESULT([${LTLD}]) | |
360 else | |
361 AC_MSG_RESULT(no) | |
362 fi | |
363 | |
364 if test -z "$LTLD" -a "$cc_produces_so" = no; then | |
365 AC_MSG_ERROR(no acceptable linker found in \$PATH) | |
366 exit 1 | |
367 fi | |
368 fi | |
369 | |
370 dnl | |
371 dnl Order of the tests changed somewhat to prevent repetition | |
372 dnl | |
373 ld_dynamic_link_flags= | |
374 | |
375 # Check to see if it really is or isn't GNU ld. | |
2651 | 376 AC_MSG_CHECKING([if the linker is GNU ld]) |
388 | 377 # I'd rather use --version here, but apparently some GNU ld's only accept -v. |
3773 | 378 if $LTLD -v 2>&1 </dev/null | $EGREP '(GNU|with BFD)' 1>&5; then |
388 | 379 xe_gnu_ld=yes |
380 else | |
381 xe_gnu_ld=no | |
382 fi | |
383 AC_MSG_RESULT([${xe_gnu_ld}]) | |
384 | |
385 case "$xehost_os" in | |
4759
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
386 amigaos*) |
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
387 # On this operating system, we should treat GNU ld like the system ld. |
388 | 388 gnu_ld_acts_native=yes |
389 ;; | |
390 *) | |
391 gnu_ld_acts_native=no | |
392 ;; | |
393 esac | |
394 | |
395 if test "$cc_produces_so" = "yes"; then | |
396 dll_ld=$CC | |
1678 | 397 case "$xehost_os" in |
398 *darwin*) | |
399 dnl On Darwin, we test with xcldf, but we use xldf | |
400 dll_ldflags=$xldf | |
401 ;; | |
402 *) | |
403 dll_ldflags=$xcldf | |
404 ;; | |
405 esac | |
388 | 406 can_build_shared=yes |
442 | 407 ld_shlibs=yes |
388 | 408 else |
409 # OK - only NOW do we futz about with ld. | |
410 # See if the linker supports building shared libraries. | |
2651 | 411 AC_MSG_CHECKING([whether the linker supports shared libraries]) |
388 | 412 dll_ld=$CC |
413 dll_ldflags=$LDFLAGS | |
414 ld_shlibs=yes | |
415 can_build_shared=yes | |
416 if test "$xe_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then | |
417 # See if GNU ld supports shared libraries. | |
3773 | 418 if $LTLD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null; then |
388 | 419 dll_ld=$CC |
420 dll_ldflags="-shared" | |
421 ld_shlibs=yes | |
422 else | |
423 ld_shlibs=no | |
424 fi | |
425 else | |
426 # PORTME fill in a description of your system's linker (not GNU ld) | |
427 case "$xehost_os" in | |
460 | 428 aix[[4-9]]*) |
388 | 429 dll_ldflags=$xcldf |
430 ;; | |
431 | |
432 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor | |
433 # support. Future versions do this automatically, but an explicit c++rt0.o | |
434 # doesn't break anything, and helps significantly (at the cost of a little | |
435 # extra space). | |
436 freebsd2.2*) | |
437 dll_ld=$LTLD | |
438 dll_ldflags=$xldf | |
439 dll_post="/usr/lib/c++rt0.o" | |
440 ;; | |
441 | |
442 # Unfortunately, older versions of FreeBSD 2 don't have this feature. | |
443 freebsd2*) | |
444 dll_ld=$LTLD | |
445 dll_ldflags="-Bshareable" | |
446 ;; | |
265 | 447 |
388 | 448 # FreeBSD 3, at last, uses gcc -shared to do shared libraries. |
449 freebsd3*) | |
450 dll_ldflags="-shared" | |
451 ;; | |
452 | |
453 hpux*) | |
454 dll_ld=$LTLD | |
455 dll_ldflags=$xldf | |
456 ;; | |
457 | |
460 | 458 irix[[5-9]]*) |
388 | 459 dll_ld=$LTLD |
460 dll_ldflags=$xldf | |
461 ;; | |
462 | |
463 netbsd*) | |
464 # Tested with NetBSD 1.2 ld | |
465 dll_ld=$LTLD | |
466 dll_ldflags=$xldf | |
467 ;; | |
468 | |
469 openbsd*) | |
470 dll_ld=$LTLD | |
471 dll_ldflags=$xldf | |
472 ;; | |
473 | |
474 osf3* | osf4*) | |
475 dll_ld=$LTLD | |
476 dll_ldflags=$xldf | |
477 ;; | |
478 | |
479 # For both SCO and Solaris we MAY want to have LDFLAGS include -z text | |
480 sco3.2v5* | unixware* | sysv5* | sysv4* | solaris2* | solaris7*) | |
481 dll_ld=$LTLD | |
482 case "$dll_ld" in | |
483 *gcc*) dll_ldflags="-shared" | |
484 dll_ld=$CC | |
485 ;; | |
486 *) dll_ldflags="-G" | |
487 ;; | |
488 esac | |
489 ;; | |
490 | |
491 uts4*) | |
492 dll_ld=$LTLD | |
493 dll_ldflags="-G" | |
494 ;; | |
495 | |
496 bsdi*) | |
497 dll_ldflags="-r" | |
498 dll_ld="shlicc2" | |
499 ;; | |
1470 | 500 |
388 | 501 *) |
502 ld_shlibs=no | |
503 can_build_shared=no | |
504 ;; | |
505 esac | |
506 fi | |
507 AC_MSG_RESULT([${ld_shlibs}]) | |
508 if test "$ld_shlibs" = "no"; then | |
509 can_build_shared=no | |
510 fi | |
511 fi # End of if cc_produces_so = no | |
265 | 512 |
388 | 513 dnl |
514 dnl Last thing, check how to get a linked executable to have its symbols | |
515 dnl exported, so that the modules have access to them. | |
516 dnl | |
442 | 517 dnl XEmacs FIXME - we need to set ld_dynamic_link_flags properly for |
388 | 518 dnl most of these systems, which was missing from libtool. I know they |
519 dnl all have a way of doing this, but someone needs to look at this | |
520 dnl for each OS and make sure it is correct. Remember that the arguments | |
521 dnl are passed when temacs is linked, this is NOT for modules. The sole | |
522 dnl purpose of the argument is to get the internal XEmacs symbols exposed | |
523 dnl for modules to use. This means that the COMPILER (and NOT the linker) | |
524 dnl is most often used to create temacs, so arguments to the linker will | |
525 dnl usually need to be prefix with ${wl} or some other such thing. | |
526 dnl | |
527 | |
4932 | 528 if test "$xe_gnu_ld" = yes -a "$ld_shlibs" = yes; then |
529 case "$xehost_os" in | |
530 *cygwin* | *mingw* ) | |
531 # -export-all-symbols is the PE equivalent of ELF-specific -export-dynamic | |
532 ld_dynamic_link_flags="${wl}-export-all-symbols" | |
533 ;; | |
534 | |
535 *) | |
388 | 536 ld_dynamic_link_flags="${wl}-export-dynamic" |
4932 | 537 ;; |
538 esac | |
388 | 539 fi |
540 | |
541 if test -z "$ld_dynamic_link_flags"; then | |
542 case "$xehost_os" in | |
460 | 543 aix[[3-9]]*) |
388 | 544 ld_dynamic_link_flags= |
545 ;; | |
546 | |
1678 | 547 *darwin*) |
548 ld_dynamic_link_flags= | |
549 ;; | |
550 | |
388 | 551 freebsd2.2*) |
552 ld_dynamic_link_flags= | |
553 ;; | |
554 | |
555 freebsd2*) | |
556 ld_dynamic_link_flags= | |
557 ;; | |
558 | |
559 freebsd3*) | |
560 ld_dynamic_link_flags= | |
561 ;; | |
562 | |
563 hpux*) | |
564 ld_dynamic_link_flags="${wl}-E" | |
565 ;; | |
566 | |
460 | 567 irix[[5-9]]*) |
388 | 568 ld_dynamic_link_flags= |
569 ;; | |
570 | |
571 netbsd*) | |
572 ld_dynamic_link_flags= | |
573 ;; | |
574 | |
575 openbsd*) | |
576 ld_dynamic_link_flags= | |
577 ;; | |
578 | |
579 osf3* | osf4*) | |
580 ld_dynamic_link_flags= | |
581 ;; | |
582 | |
398 | 583 solaris2* | solaris7*) |
426 | 584 ld_dynamic_link_flags= |
398 | 585 ;; |
586 | |
4759
aa5ed11f473b
Remove support for obsolete systems. See xemacs-patches message with ID
Jerry James <james@xemacs.org>
parents:
3773
diff
changeset
|
587 unixware* | sysv5* | sysv4*) |
388 | 588 ld_dynamic_link_flags="${wl}-Bexport" |
589 ;; | |
590 | |
591 uts4*) | |
592 ld_dynamic_link_flags= | |
593 ;; | |
594 | |
595 esac | |
596 fi # End of if -z ld_dynamic_link_flags | |
597 fi # End of if test "$can_build_shared" = "yes" | |
598 | |
265 | 599 AC_SUBST(dll_ld) |
600 AC_SUBST(dll_cflags) | |
388 | 601 AC_SUBST(dll_ldflags) |
602 AC_SUBST(dll_post) | |
603 AC_SUBST(dll_ldo) | |
604 AC_SUBST(ld_dynamic_link_flags) | |
265 | 605 ])dnl |
388 | 606 |