1#! /bin/sh
2# $Id: config.sh,v 1.4 2006-10-06 05:28:42 dhmunro Exp $
3
4debug=no
5
6echo ""
7echo "  ============= begin play/unix configuration ============="
8echo ""
9
10rm -f cfg* config.h
11
12curdate=`date`
13cursystem=`uname -a`
14fatality=0
15cat >config.h <<EOF
16/* config.h used during config.sh script */
17#ifndef CONFIG_SCRIPT
18# error destroy this config.h and rerun configure script
19#endif
20EOF
21cat >config.0h <<EOF
22/* config.h from config.sh script $curdate
23 * $cursystem
24 * always empty -- see D_... defines in Make.cfg
25 */
26EOF
27# should LD_LIBRARY_PATH, LIBPATH (AIX), LPATH, SHLIB_PATH (HPUX) be saved?
28
29commonargs="-DCONFIG_SCRIPT $CFLAGS -I. -I.. $LDFLAGS -o cfg config.c"
30
31# find CPU time function (getrusage is best if present)
32args="-DTEST_UTIME $commonargs"
33if $CC -DUSE_GETRUSAGE $args >cfg.01a 2>&1; then
34  echo "using getrusage() (CPU timer)"
35  echo "D_TIMEU=-DUSE_GETRUSAGE" >>../../Make.cfg
36elif $CC -DUSE_TIMES $args >cfg.01b 2>&1; then
37  echo "using times() (CPU timer)"
38  echo "D_TIMEU=-DUSE_TIMES" >>../../Make.cfg
39  if test $debug = no; then rm -f cfg.01a; fi
40elif $CC $args >cfg.01c 2>&1; then
41  echo "fallback to clock(), getrusage() and times() missing (CPU timer)"
42  echo "D_TIMEU=" >>../../Make.cfg
43else
44  echo "FATAL getrusage(), times(), and clock() all missing (timeu.c)"
45  fatality=1
46fi
47
48# find wall time function (gettimeofday is best if present)
49args="-DTEST_WTIME $commonargs"
50if $CC -DUSE_GETTIMEOFDAY $args >cfg.02a 2>&1; then
51  echo "using gettimeofday() (wall timer)"
52  echo "D_TIMEW=-DUSE_GETTIMEOFDAY" >>../../Make.cfg
53elif $CC $args >cfg.02b 2>&1; then
54  echo "fallback to time()+difftime(), gettimeofday() missing (wall timer)"
55  echo "D_TIMEW=" >>../../Make.cfg
56else
57  echo "FATAL gettimeofday(), and time() or difftime() missing (timew.c)"
58  fatality=1
59fi
60
61# find function to get user name
62if test -z "$NO_PASSWD"; then
63  args="-DTEST_USERNM $commonargs"
64  if $CC $args >cfg.03a 2>&1; then
65    echo "using POSIX getlogin(), getpwuid(), getuid() functions"
66    echo "D_USERNM=" >>../../Make.cfg
67  elif $CC -DNO_PASSWD $args >cfg.03b 2>&1; then
68    echo "fallback to cuserid(), POSIX getlogin() family missing"
69    echo "D_USERNM=-DNO_PASSWD" >>../../Make.cfg
70  else
71    echo "FATAL cuserid(), POSIX getlogin() family both missing (usernm.c)"
72    fatality=1
73  fi
74else
75  if test -z "$NO_CUSERID"; then
76    echo "using cuserid(), POSIX getlogin() family missing"
77    echo "D_USERNM=-DNO_PASSWD" >>../../Make.cfg
78  else
79    echo "using getenv(LOGNAME), cuserid(), POSIX getlogin() family missing"
80    echo "D_USERNM=-DNO_PASSWD -DNO_CUSERID" >>../../Make.cfg
81  fi
82fi
83
84# find function to get controlling terminal process group
85if test -z "$NO_PROCS"; then
86args="-DTEST_TIOCGPGRP $commonargs"
87cargs="-DTEST_TIOCGPGRP -DCONFIG_SCRIPT $CFLAGS -I. -I.. $LDFLAGS -c config.c"
88if $CC $cargs >cfg.04a 2>&1; then
89  :
90  echo "D_UINBG1=" >>../../Make.cfg
91elif $CC -DUSE_POSIX_GETPGRP $cargs >cfg.04a 2>&1; then
92  echo "using strict POSIX getpgrp prototype"
93  args="-DUSE_POSIX_GETPGRP -DTEST_TIOCGPGRP $commonargs"
94  echo "D_UINBG1=-DUSE_POSIX_GETPGRP" >>../../Make.cfg
95fi
96if $CC $args >cfg.04a 2>&1; then
97  echo "using POSIX tcgetpgrp() function"
98  echo "D_UINBG2=" >>../../Make.cfg
99elif $CC '-DUSE_TIOCGPGRP_IOCTL=<sys/termios.h>' $args >cfg.04b 2>&1; then
100  echo "fallback to TIOCGPGRP in sys/termios.h, POSIX tcgetpgrp() missing"
101  echo "D_UINBG2=-DUSE_TIOCGPGRP_IOCTL=<sys/termios.h>" >>../../Make.cfg
102elif $CC '-DUSE_TIOCGPGRP_IOCTL=<sgtty.h>' $args >cfg.04c 2>&1; then
103  echo "fallback to TIOCGPGRP in sgtty.h, POSIX tcgetpgrp() missing"
104  echo "D_UINBG2=-DUSE_TIOCGPGRP_IOCTL='<sgtty.h>'" >>../../Make.cfg
105  if test $debug = no; then rm -f cfg.04b; fi
106else
107  echo "FATAL unable to find TIOCGPGRP ioctl header (uinbg.c)"
108  fatality=1
109fi
110  echo "D_NO_PROCS=" >>../../Make.cfg
111else
112  echo "using no processes, tcgetpgrp(), popen(), system() missing"
113  echo "D_UINBG1=-DNO_PROCS" >>../../Make.cfg
114  echo "D_UINBG2=" >>../../Make.cfg
115  echo "D_NO_PROCS=-DNO_PROCS" >>../../Make.cfg
116fi
117
118# find function to get current working directory
119args="-DTEST_GETCWD $commonargs"
120if $CC $args >cfg.05a 2>&1; then
121  echo "using POSIX getcwd() function"
122  echo "D_DIR1=" >>../../Make.cfg
123elif $CC -DUSE_GETWD $args >cfg.05b 2>&1; then
124  echo "fallback to getwd(), POSIX getcwd() missing"
125  echo "D_DIR1=-DUSE_GETWD" >>../../Make.cfg
126else
127  echo "FATAL getcwd(), getwd() both missing (dir.c)"
128  fatality=1
129fi
130
131# find headers required to read directories
132args="-DTEST_DIRENT $commonargs"
133if $CC $args >cfg.06a 2>&1; then
134  echo "using POSIX dirent.h header for directory ops"
135  echo "D_DIR2=" >>../../Make.cfg
136elif $CC '-DDIRENT_HEADER=<sys/dir.h>' $args >cfg.06b 2>&1; then
137  echo "using sys/dir.h header for directory ops"
138  echo "D_DIR2=-DDIRENT_HEADER=<sys/dir.h>" >>../../Make.cfg
139  if test $debug = no; then rm -f cfg.06a; fi
140elif $CC '-DDIRENT_HEADER=<sys/ndir.h>' $args >cfg.06c 2>&1; then
141  echo "using sys/ndir.h header for directory ops"
142  echo "D_DIR2=-DDIRENT_HEADER=<sys/ndir.h>" >>../../Make.cfg
143  if test $debug = no; then rm -f cfg.06a cfg.06b; fi
144elif $CC '-DDIRENT_HEADER=<ndir.h>' $args >cfg.06d 2>&1; then
145  echo "using ndir.h header for directory ops"
146  echo "D_DIR2=-DDIRENT_HEADER=<ndir.h>" >>../../Make.cfg
147  if test $debug = no; then rm -f cfg.06a cfg.06b cfg.06c; fi
148else
149  echo "FATAL dirent.h, sys/dir.h, sys/ndir.h, ndir.h all missing (dir.c)"
150  fatality=1
151fi
152
153# find headers and functions required for poll/select functionality
154# NO_PROCS=yes  produces crippled yorick that blocks waiting for stdin
155# NO_POLL=yes   forces use of select(), otherwise poll() used if found
156if test -z "$NO_PROCS"; then
157  if test -x /usr/bin/sw_vers; then
158    # Mac OS X 10.4 poll() is broken, but select() works
159    swv="`/usr/bin/sw_vers -productVersion`"
160    case "$swv" in
161      # 10.4*) NO_POLL=yes ;;
162      # even though poll works before 10.4, want yorick built on
163      # 10.3 system to be able to run on a 10.4 system!
164      10.*) NO_POLL=yes ;;
165    esac
166  fi
167  if test -z "$NO_POLL"; then
168    args="-DTEST_POLL $commonargs"
169    if $CC $args >cfg.07a 2>&1; then
170      echo "using poll(), poll.h header"
171      echo "D_UEVENT=" >>../../Make.cfg
172    elif $CC -DUSE_SYS_POLL_H $args >cfg.07b 2>&1; then
173      echo "using poll(), sys/poll.h header"
174      echo "D_UEVENT=-DUSE_SYS_POLL_H" >>../../Make.cfg
175      if test $debug = no; then rm -f cfg.07a; fi
176    else
177      NO_POLL=yes
178    fi
179  fi
180  if test -n "$NO_POLL"; then
181    maxdefs="-DUSE_SELECT -DNO_SYS_TIME_H -DNEED_SELECT_PROTO"
182    if $CC -DUSE_SELECT -DHAVE_SYS_SELECT_H $args >cfg.07c 2>&1; then
183      echo "using select(), sys/select.h header"
184      echo "D_UEVENT=-DUSE_SELECT -DHAVE_SYS_SELECT_H" >>../../Make.cfg
185      if test $debug = no; then rm -f cfg.07a cfg.07b; fi
186    elif $CC -DUSE_SELECT -DNEED_SELECT_PROTO $args >cfg.07d 2>&1; then
187      echo "using select(), sys/time.h, sys/types.h headers"
188      echo "D_UEVENT=-DUSE_SELECT -DNEED_SELECT_PROTO" >>../../Make.cfg
189      if test $debug = no; then rm -f cfg.07[a-c]; fi
190    elif $CC $maxdefs $args >cfg.07e 2>&1; then
191      echo "using select(), time.h, sys/types.h headers"
192      echo "D_UEVENT=$maxdefs" >>../../Make.cfg
193      if test $debug = no; then rm -f cfg.07[a-d]; fi
194    elif $CC -DUSE_SELECT $args >cfg.07f 2>&1; then
195      echo "using select(), sys/time.h header"
196      echo "D_UEVENT=-DUSE_SELECT" >>../../Make.cfg
197      if test $debug = no; then rm -f cfg.07[a-e]; fi
198    elif $CC -DUSE_SELECT -DNO_SYS_TIME_H $args >cfg.07g 2>&1; then
199      echo "using select(), time.h header"
200      echo "D_UEVENT=-DUSE_SELECT -DNO_SYS_TIME_H" >>../../Make.cfg
201      if test $debug = no; then rm -f cfg.07[a-f]; fi
202    else
203      echo "FATAL neither poll() nor select() usable? (uevent.c, upoll.c)"
204      fatality=1
205    fi
206  fi
207else
208# NO_PROCS is not really related to NO_POLLING, but is intended for
209# the catamount parallel kernel, which is missing both process
210# fork and select/poll
211  echo "missing poll() and select(), using blocking stdin"
212  echo "D_UEVENT=-DUSE_SELECT -DNO_POLLING" >>../../Make.cfg
213fi
214
215if test -z "$NO_SOCKETS"; then
216  args="-DTEST_SOCKETS $commonargs"
217  if $CC $args >cfg.10 2>&1; then
218    echo "using BSD sockets"
219    echo "D_NO_SOCKETS=" >>../../Make.cfg
220    if test $debug = no; then rm -f cfg.10; fi
221  else
222    echo "missing BSD sockets, socket interface disabled"
223    echo "D_NO_SOCKETS=-DNO_SOCKETS" >>../../Make.cfg
224  fi
225else
226  echo "skipping sockets, socket interface disabled"
227  echo "D_NO_SOCKETS=-DNO_SOCKETS" >>../../Make.cfg
228fi
229
230#----------------------------------------------------------------------
231# try to figure out how to get SIGFPE delivered
232#----------------------------------------------------------------------
233args="-DCONFIG_SCRIPT $CFLAGS -I. -I.. $LDFLAGS -o fputest fputest.c"
234fpedef=
235fpelib=
236fpelibm=
237if test -n "$FPU_IGNORE"; then
238  fpedef=
239elif $CC -DFPU_DIGITAL $args >cfg.08 2>&1; then
240  echo "using FPU_DIGITAL (SIGFPE delivery)"
241  fpedef=-DFPU_DIGITAL
242elif $CC -DFPU_AIX $args >cfg.08 2>&1; then
243  echo "using FPU_AIX (SIGFPE delivery)"
244  fpedef=-DFPU_AIX
245elif $CC -DFPU_HPUX $args $MATHLIB >cfg.08 2>&1; then
246  echo "using FPU_HPUX (SIGFPE delivery)"
247  fpedef=-DFPU_HPUX
248  fpelibm=$MATHLIB
249elif $CC -DFPU_SOLARIS $args >cfg.08 2>&1; then
250  echo "using FPU_SOLARIS (SIGFPE delivery)"
251  fpedef=-DFPU_SOLARIS
252  # note this works under IRIX 6.3, while FPU_IRIX does not??
253elif $CC -DFPU_SUN4 $args $MATHLIB >cfg.08 2>&1; then
254  echo "using FPU_SUN4 (-lm) (SIGFPE delivery)"
255  fpedef=-DFPU_SUN4
256  fpelibm=$MATHLIB
257elif $CC -DFPU_SUN4 $args -lsunmath >cfg.08 2>&1; then
258  echo "using FPU_SUN4 (-lsunmath) (SIGFPE delivery)"
259  fpedef=-DFPU_SUN4
260  fpelib=-lsunmath
261elif $CC -DFPU_IRIX $args -lfpe >cfg.08 2>&1; then
262  # FPU_SOLARIS seems to work better??
263  echo "using FPU_IRIX (SIGFPE delivery)"
264  fpedef=-DFPU_IRIX
265  fpelib=-lfpe
266elif $CC -DFPU_IRIX $args >cfg.08 2>&1; then
267  echo "using FPU_IRIX (SIGFPE delivery), but no libfpe??"
268  fpedef=-DFPU_IRIX
269elif $CC -DFPU_GCC_X86_64 $args >cfg.08 2>&1; then
270  echo "using FPU_GCC_X86_64 (SIGFPE delivery)"
271  fpedef=-DFPU_GCC_X86_64
272elif $CC -DFPU_GCC_X86 $args >cfg.08 2>&1; then
273  echo "using FPU_GCC_X86 (SIGFPE delivery)"
274  fpedef=-DFPU_GCC_X86
275elif $CC -DFPU_MACOSX $args >cfg.08 2>&1; then
276  echo "using FPU_MACOSX (SIGFPE delivery)"
277  fpedef=-DFPU_MACOSX
278elif $CC -DFPU_GNU_FENV $args $MATHLIB >cfg.08 2>&1; then
279  echo "using FPU_GNU_FENV (SIGFPE delivery)"
280  fpedef=-DFPU_GNU_FENV
281  fpelibm=$MATHLIB
282elif $CC -DFPU_UNICOS $args $MATHLIB >cfg.08 2>&1; then
283  echo "using FPU_UNICOS (SIGFPE delivery)"
284  fpedef=-DFPU_UNICOS
285  fpelibm=$MATHLIB
286elif $CC -DTEST_GCC $commonargs >cfg.08 2>&1; then
287  if $CC -DFPU_ALPHA_LINUX $args >cfg.08 2>&1; then
288    echo "using FPU_ALPHA_LINUX (SIGFPE delivery)"
289    fpedef=-DFPU_ALPHA_LINUX
290    echo "...libm may be broken -- read play/unix/README.fpu for more"
291    echo "...fputest failure may not mean that yorick itself is broken"
292    # CC="$CC -mfp-trap-mode=su -mtrap-precision=i"
293  elif $CC -DFPU_GCC_I86 $args >cfg.08 2>&1; then
294    echo "using FPU_GCC_I86 (SIGFPE delivery)"
295    fpedef=-DFPU_GCC_I86
296  elif $CC -DFPU_GCC_SPARC $args >cfg.08 2>&1; then
297    echo "using FPU_GCC_SPARC (SIGFPE delivery)"
298    fpedef=-DFPU_GCC_SPARC
299  elif $CC -DFPU_GCC_M68K $args >cfg.08 2>&1; then
300    echo "using FPU_GCC_M68K (SIGFPE delivery)"
301    fpedef=-DFPU_GCC_M68K
302  elif $CC -DFPU_GCC_POWERPC $args >cfg.08 2>&1; then
303    echo "using FPU_GCC_POWERPC (SIGFPE delivery)"
304    fpedef=-DFPU_GCC_POWERPC
305  elif $CC -DFPU_GCC_ARM $args >cfg.08 2>&1; then
306    echo "using FPU_GCC_ARM (SIGFPE delivery)"
307    fpedef=-DFPU_GCC_ARM
308  fi
309fi
310if test -z "$fpedef"; then
311  if $CC -DFPU_IGNORE $args $MATHLIB >cfg.08 2>&1; then
312    echo "using FPU_IGNORE (SIGFPE delivery)"
313    fpedef=-DFPU_IGNORE
314  else
315    echo "FATAL unable to build SIGFPE fputest? (fputest.c, fpuset.c)"
316    fatality=1
317  fi
318fi
319echo "D_FPUSET=$fpedef" >>../../Make.cfg
320if test -z "$fpelib"; then
321  echo "FPELIB=" >>../../Make.cfg
322else
323  echo "FPELIB=$fpelib" >>../../Make.cfg
324fi
325if test -z "$fpelibm"; then
326  echo "FPELIBM=" >>../../Make.cfg
327else
328  echo "FPELIBM=$fpelibm" >>../../Make.cfg
329fi
330if test -n "$fpedef"; then
331  # on IRIX be sure that TRAP_FPE environment variable is turned off
332  unset TRAP_FPE
333  if ./fputest; then
334    :
335  else
336    echo ""
337    echo "*************************WARNING***************************"
338    echo "*** play/unix configuration failed to get SIGFPE delivered"
339    echo "*** read the notes in play/unix/README.fpu"
340    echo "*************************WARNING***************************"
341    echo ""
342  fi
343fi
344rm -f fputest
345
346# check if fenv.h present
347softfpe=
348args="-DTEST_FENV_H $commonargs"
349if $CC $args $MATHLIB >cfg.11 2>&1; then
350  echo "found fenv.h header"
351  echo "D_HAS_FENV_H=-DHAS_FENV_H" >>../../Make.cfg
352  if test "$fpedef" = "-DFPU_IGNORE"; then
353    echo "...activating software SIGFPE support"
354    softfpe=-DUSE_SOFTFPE
355  fi
356  if test $debug = no; then rm -f cfg.11; fi
357else
358  echo "WARNING fenv.h missing, no floating point environment control"
359  echo "D_HAS_FENV_H=" >>../../Make.cfg
360fi
361echo "D_USE_SOFTFPE=$softfpe" >>../../Make.cfg
362
363#----------------------------------------------------------------------
364# try to figure out how dynamic linking for plugins works
365#----------------------------------------------------------------------
366
367PLUG_DEF=""
368os_name=`(uname -s) 2>/dev/null` || os_name=unknown
369case "$os_name" in
370  AIX)        # IBM RS/6000 (powerpc) architecture
371              # no such thing as non-PIC so no PLUG_PIC flag
372              # -bexpall fails for symbols beginning with _   <--WARNING
373    PLUG_UDL=-DPLUG_LIBDL
374    PLUG_EXPORT='-Wl,-bexpall,-brtl'
375    PLUG_LIB=
376    PLUG_PIC=
377    PLUG_SHARED=-G
378    PLUG_SFX=.so
379  ;;
380  IRIX*)       # SGI MIPS architecture
381               # PLUG_EXPORT with -Wl,-hidden_symbol ??
382    PLUG_UDL=-DPLUG_LIBDL
383    PLUG_EXPORT=
384    PLUG_LIB=
385    PLUG_PIC=
386    PLUG_SHARED=-shared
387    PLUG_SFX=.so
388  ;;
389  SunOS)      # Sun SPARC architecture
390    PLUG_UDL=-DPLUG_LIBDL
391    PLUG_EXPORT=
392    PLUG_LIB=
393    PLUG_PIC=-KPIC
394    PLUG_SHARED="-KPIC -G"
395    PLUG_SFX=.so
396  ;;
397  OSF1)       # DEC/Compaq/HP alpha architecture
398              # PLUG_EXPORT with -Wl,-non_hidden ??
399    PLUG_UDL=-DPLUG_LIBDL
400    PLUG_EXPORT=
401    PLUG_LIB=
402    PLUG_PIC=
403    PLUG_SHARED="-shared -Wl,-expect_unresolved,*"
404    PLUG_SFX=.so
405  ;;
406  HP-UX)      # HP PA-RISC architecture
407    PLUG_UDL=-DPLUG_HPUX
408    PLUG_EXPORT=-Wl,-E
409    PLUG_LIB=-ldld
410    PLUG_PIC=+Z
411    PLUG_SHARED=-n
412    PLUG_SFX=.sl
413  ;;
414  Darwin)     # Apple MacOS X powerpc architecture (ignore i86 versions?)
415    # for Mac OS X 10.3 and earlier, use -DPLUG_MACOSX
416    # see https://developer.apple.com/library/mac/#qa/qa1180/_index.html
417    PLUG_UDL=-DPLUG_LIBDL
418    PLUG_EXPORT=
419    PLUG_LIB=
420    PLUG_PIC=
421    PLUG_SHARED="-bundle -bundle_loader ./cfg"
422    PLUG_SFX=.so
423  ;;
424  CYGWIN*)    # CygWin i86 UNIX environment for MS Windows
425    PLUG_UDL=-DPLUG_LIBDL
426    PLUG_EXPORT=
427    PLUG_LIB=
428    PLUG_PIC=-DPLUG_IN
429    PLUG_SHARED=-shared
430    PLUG_SFX=.dll
431    PLUG_DEF=cygyor.def
432  ;;
433  *)          # Linux, Free/Net/OpenBSD i86 architecture
434              # these are generic GNU/gcc values, also work for Intel/icc
435    PLUG_UDL=-DPLUG_LIBDL
436    PLUG_EXPORT=-Wl,-E
437    PLUG_LIB=
438    PLUG_PIC=-fPIC
439    PLUG_SHARED="-fPIC -shared"
440    PLUG_SFX=.so
441  ;;
442esac
443
444# command to link plugin
445LD_PLUGIN="$CC $CFLAGS $LDFLAGS $PLUG_SHARED"
446
447# no compiler switch to make Mac OS X .dylib
448# need special env var to be able to call things in loading program
449# none of this is necessary with -bundle instead of .dylib
450# Makefile needs two lines to link with either CC or libtool
451#PLUG_UNIX=""
452#PLUG_OSX=":"
453#  export MACOSX_DEPLOYMENT_TARGET
454#  MACOSX_DEPLOYMENT_TARGET=10.3
455#  LD_PLUGIN="libtool -dynamic $PLUG_SHARED"
456#  PLUG_UNIX=":"
457#  PLUG_OSX='MACOSX_DEPLOYMENT_TARGET=10.3 libtool -dynamic $(PLUG_SHARED)'
458
459# find functions to do dynamic linking for plugins
460# first check that TEST_PLUG branch of config.c/udltest.c compiles and loads
461#   this checks PLUG_UDL, PLUG_EXPORT, and PLUG_LIB settings
462dl_works=no
463if test -z "$NO_PLUGINS"; then
464args="$CFLAGS $PLUG_EXPORT $PLUG_UDL -I. $LDFLAGS -o cfg config.c"
465if $CC -DTEST_PLUG $args $PLUG_LIB >cfg.09 2>&1; then
466  # next check that PLUG_PIC flag works, so can build shareable object code
467  args="$CFLAGS $PLUG_PIC"
468  if $CC -DTEST_SHARED $args -c udltest.c >cfg.09a 2>&1; then
469    # next check that PLUG_SHARED flag works, so can build dynamic libraries
470    if $LD_PLUGIN -o udltest$PLUG_SFX $PLUG_DEF udltest.o >cfg.09b 2>&1; then
471      # finally check that dynamically linked main program runs
472      if ./cfg; then
473        echo "configured plugins for $os_name"
474        dl_works=yes
475      else
476        echo "*** WARNING *** no plugins - shared lib run failed"
477      fi
478    else
479      echo "*** WARNING *** no plugins - shared lib link failed"
480    fi
481    rm -f udltest$PLUG_SFX
482  else
483    echo "*** WARNING *** no plugins - shared object compile failed"
484  fi
485  rm -f udltest.o
486
487else
488  echo "*** WARNING *** no plugins - dynamic linking main failed to build"
489fi
490fi
491
492ALT_LIBS=
493IF_TGT='$(IF_DLL)'
494if test $dl_works = no; then
495  PLUG_UDL=-DPLUG_UNSUPPORTED
496  PLUG_EXPORT=
497  PLUG_LIB=
498  PLUG_PIC=
499  PLUG_SHARED=
500  PLUG_DEF=
501  echo "DEFAULT_TGT=exe" >>../../Make.cfg
502  ALT_LIBS='$(DIST_LIBS)'
503  IF_TGT='$(IF_EXE)'
504else
505  case "$os_name" in
506    AIX)
507      PLUG_EXPORT='-Wl,-bE:$(Y_LIBEXE)/yorapi.def,-brtl'
508    ;;
509    OSF1)
510      # fix quoting to account for difference between make and sh variable
511      PLUG_SHARED="-shared -Wl,-expect_unresolved,'*'"
512      rm -f so_locations
513    ;;
514    Darwin)
515      # fix exe name for Makefiles
516      PLUG_SHARED='-bundle -bundle_loader $(Y_EXE)'
517    ;;
518  esac
519  echo "DEFAULT_TGT=dll" >>../../Make.cfg
520fi
521if test "$LD_STATIC" = yes; then
522  ALT_LIBS='$(DIST_LIBS)'
523  IF_TGT='$(IF_EXE)'
524  echo "DISTRIB_TGT=exe" >>../../Make.cfg
525else
526  echo 'DISTRIB_TGT=$(DEFAULT_TGT)' >>../../Make.cfg
527fi
528echo "ALT_LIBS=$ALT_LIBS" >>../../Make.cfg
529echo "IF_TGT=$IF_TGT" >>../../Make.cfg
530
531echo "PLUG_UDL=$PLUG_UDL" >>../../Make.cfg
532echo "PLUG_EXPORT=$PLUG_EXPORT" >>../../Make.cfg
533echo "PLUG_LIB=$PLUG_LIB" >>../../Make.cfg
534echo "PLUG_PIC=$PLUG_PIC" >>../../Make.cfg
535echo "PLUG_SHARED=$PLUG_SHARED" >>../../Make.cfg
536echo "PLUG_SFX=$PLUG_SFX" >>../../Make.cfg
537echo "PLUG_DEF=$PLUG_DEF" >>../../Make.cfg
538
539#----------------------------------------------------------------------
540
541# clean up, issue warning if compiler gave fishy output
542rm -f config.h config.o cfg cfg.c cfg.o
543for f in cfg.[0-9]*; do
544  if grep ... $f >/dev/null 2>&1; then   # or use test -s $f ?
545    echo "WARNING - check compiler message in $f"
546  else # remove empty files
547    rm -f $f
548  fi
549done
550
551if test $fatality = 1; then
552  echo "*** at least one play/unix component could not be configured"
553  echo "*** see configuration notes in play/unix/README.cfg"
554else
555  mv config.0h config.h
556  echo "wrote config.h, ../../Make.cfg"
557fi
558
559echo ""
560echo "  ============== end play/unix configuration =============="
561exit $fatality
562