Update at Wed Aug 9 09:04:41 EDT 2017 by tim
[xcircuit.git] / configure.in
blob1a0cf8dcdc242c339d0f9f533bdc9cf310185f13
1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT(xcircuit.c,, xcircuit-dev@lists.sourceforge.net)
4 AC_PREREQ(2.52)
5 AC_CONFIG_SRCDIR(xcircuit.c)
7 AC_CANONICAL_SYSTEM
9 dnl this call will define PACKAGE and VERSION
10 dnl please use this as the primary reference for the version number
11 PACKAGE=xcircuit
13 VERSION=`cat ./VERSION | cut -d. -f1-2`
14 AM_INIT_AUTOMAKE(${PACKAGE}, ${VERSION})
16 dnl Initialize some variables
17 SUBDIRS=
18 SUBLIB=
19 STDLIBS=
20 XCIRCUIT_TARGET=
21 ALL_TARGET="undefined-target"
22 INSTALL_TARGET="undefined-install-target"
23 REVISION=`cat ./VERSION | cut -d. -f3`
24 INTERPRETER=NOINTERP
25 HAVE_LGF=NOFORMATS
27 LIB_SPECS=""
28 WISH_EXE=""
29 SHLIB_CFLAGS=""
31 dnl Default is to use Tcl; if it can't be found, then flag a warning
32 dnl and revert to the non-Tcl version.
34 dnl pass the version string on the the makefiles
35 AC_SUBST(PACKAGE)
36 AC_SUBST(VERSION)
37 AC_SUBST(REVISION)
39 dnl Setup for automake in subdirectories
40 AC_PROG_MAKE_SET
42 dnl Checks for programs.
43 AC_PROG_CC
44 AC_ISC_POSIX
45 dnl AM_C_PROTOTYPES
46 if test "x$U" != "x"; then
47   AC_MSG_ERROR(Compiler not ANSI compliant)
49 AC_PROG_INSTALL
50 AC_PROG_RANLIB
52 dnl GNU M4 is preferred due to some of the option switches.
53 AC_PATH_PROGS([M4], [gm4 gnum4 m4],)
55 case "$target_os" in
56         *cygwin*)
57                 ;;
58         *)
59                 AC_CHECK_LIB(m, sin)
60                 ;;              
61 esac    
63 dnl check size of pointer for correct behavior on 64-bit systems
64 AC_CHECK_SIZEOF([void *], 4)
65 AC_CHECK_SIZEOF([unsigned int], 4)
66 AC_CHECK_SIZEOF([unsigned long], 8)
67 AC_CHECK_SIZEOF([unsigned long long], 16)
69 dnl check for X libraries and include files
70 AC_PATH_XTRA
71 CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}"
72 LDFLAGS="${LDFLAGS} ${X_LIBS}"
73 LIBS="${X_PRE_LIBS} ${LIBS} -lX11"
74 AC_CHECK_LIB(Xt, XtToolkitInitialize,,[
75 AC_CHECK_LIB(Xt, XtDisplayInitialize,,,-lSM -lICE -lXpm -lX11)])
77 dnl Check for required header files
78 AC_HEADER_STDC
80 dnl Need either setenv or putenv
81 AC_CHECK_FUNCS(setenv putenv)
83 dnl Check for vfork
84 AC_CHECK_FUNC(vfork)
86 dnl Check for <dirent.h>
87 AC_CHECK_HEADERS(dirent.h)
89 dnl Check for lib64.  This is a quick hack for Fedora Core on the
90 dnl AMD Opteron;  don't know if it works with others.
91 case $target in
92   x86_64-*)
93     AC_MSG_CHECKING([for 64-bit X11 libraries])
94     AC_CHECK_FILE([/usr/X11R6/lib64], [
95         LDFLAGS="-L/usr/X11R6/lib64 ${LDFLAGS}"
96     ], )
97   ;;
98 esac
100 dnl Check for valid cflag "-Wno-pointer-sign"
101 AC_MSG_CHECKING(if -Wno-pointer-sign accepted in CFLAGS)
102 ac_save_CFLAGS="$CFLAGS"
103 CFLAGS="$CFLAGS -Wno-pointer-sign"
104 AC_TRY_COMPILE(,[
105 int foo;
106 foo = 0],[
107   AC_MSG_RESULT(yes)],[
108   CFLAGS="$ac_save_CFLAGS"
109   AC_MSG_RESULT(no)])
111 dnl Check for Flate compression routines
112 AC_CHECK_LIB(z, deflate,,,-lz)
114 dnl Check for va_copy
115 AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
116  AC_TRY_LINK(
117    [#include <stdarg.h>],
118    [va_list ap1, ap2;
119     va_copy(ap1,ap2);
120    ],
121    [ac_cv_c_va_copy="yes"],
122    [ac_cv_c_va_copy="no"])
124 if test "$ac_cv_c_va_copy" = "yes"
125 then
126     AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
128 AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
129  AC_TRY_LINK(
130    [#include <stdarg.h>],
131    [va_list ap1, ap2;
132     __va_copy(ap1,ap2);
133    ],
134    [ac_cv_c___va_copy="yes"],
135    [ac_cv_c___va_copy="no"])
137 if test "$ac_cv_c___va_copy" = "yes"
138 then
139     AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
142 AC_MSG_CHECKING(if u_char defined)
143 AC_TRY_COMPILE([#include <sys/types.h>],[
144 u_char foo;
145 foo = 0],[
146   AC_DEFINE(HAVE_U_CHAR)
147   AC_MSG_RESULT(yes)],
148   AC_MSG_RESULT(no))
150 dnl Enable compile-time Optimization?  Disable by default for debugging
151 AC_ARG_ENABLE(optimize,
152 [  --enable-optimize enable compile-time optimizer flag -O2], , [
153    CFLAGS=`echo $CFLAGS | sed -e "s/ -O2//"`
156 dnl check for Xpm library
157 AC_ARG_WITH(xpm,
158 [  --with-xpm=DIR          use Xpm include/library files in DIR], [
159   if test "$withval" != "no" -a "$withval" != "yes"; then
160     CPPFLAGS="${CPPFLAGS} -I$withval/include"
161     LDFLAGS="${LDFLAGS} -L$withval/lib"
162   fi
165 AC_CHECK_HEADERS(X11/xpm.h,
166   AC_CHECK_LIB(Xpm, XpmCreateImageFromData, [
167     LIBS="${LIBS} -lXpm"
168     AC_DEFINE(HAVE_XPM)], [
169     AC_MSG_WARN(Xpm library not found)], -lX11),
170   AC_MSG_WARN(Xpm header not found))
172 dnl Check for GNU ld.  This needs to be qualified for Solaris, which
173 dnl may use gcc for the C compiler but not for the linker.
175 dnl check if the linker is a GNU linker
177 #------------------------------------------------------------
178 # AC_PROG_LD - find the path to the GNU or non-GNU linker
179 # (This stuff ripped from libtool)
180 #------------------------------------------------------------
181 AC_DEFUN([AC_PROG_LD],
182 [AC_ARG_WITH(gnu-ld,
183 [  --with-gnu-ld           assume the C compiler uses GNU ld [[default=no]]],
184 test "$withval" = no || xc_with_gnu_ld=yes, xc_with_gnu_ld=no)
185 AC_REQUIRE([AC_PROG_CC])dnl
186 AC_REQUIRE([AC_CANONICAL_HOST])dnl
187 dnl ###not for PostgreSQL### AC_REQUIRE([AC_CANONICAL_BUILD])dnl
188 ac_prog=ld
189 if test "$GCC" = yes; then
190   # Check if gcc -print-prog-name=ld gives a path.
191   AC_MSG_CHECKING([for ld used by GCC])
192   case $host in
193   *-*-mingw*)
194     # gcc leaves a trailing carriage return which upsets mingw
195     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
196   *)
197     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
198   esac
199   case "$ac_prog" in
200     # Accept absolute paths.
201 changequote(,)dnl
202     [\\/]* | [A-Za-z]:[\\/]*)
203       re_direlt='/[^/][^/]*/\.\./'
204 changequote([,])dnl
205       # Canonicalize the path of ld
206       ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
207       while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
208         ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
209       done
210       test -z "$LD" && LD="$ac_prog"
211       ;;
212   "")
213     # If it fails, then pretend we aren't using GCC.
214     ac_prog=ld
215     ;;
216   *)
217     # If it is relative, then search for the first ld in PATH.
218     xc_with_gnu_ld=unknown
219     ;;
220   esac
221 elif test "$xc_with_gnu_ld" = yes; then
222   AC_MSG_CHECKING([for GNU ld])
223 else
224   AC_MSG_CHECKING([for non-GNU ld])
226 AC_CACHE_VAL(ac_cv_path_LD,
227 [if test -z "$LD"; then
228   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
229   for ac_dir in $PATH; do
230     test -z "$ac_dir" && ac_dir=.
231     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
232       ac_cv_path_LD="$ac_dir/$ac_prog"
233       # Check to see if the program is GNU ld.  I'd rather use --version,
234       # but apparently some GNU ld's only accept -v.
235       # Break only if it was the GNU/non-GNU ld that we prefer.
236       if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
237         test "$xc_with_gnu_ld" != no && break
238       else
239         test "$xc_with_gnu_ld" != yes && break
240       fi
241     fi
242   done
243   IFS="$ac_save_ifs"
244 else
245   ac_cv_path_LD="$LD" # Let the user override the test with a path.
246 fi])
247 LD="$ac_cv_path_LD"
248 if test -n "$LD"; then
249   AC_MSG_RESULT($LD)
250 else
251   AC_MSG_RESULT(no)
253 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
254 AC_PROG_LD_GNU
257 AC_DEFUN([AC_PROG_LD_GNU],
258 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
259 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
260 if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
261   ac_cv_prog_gnu_ld=yes
262 else
263   ac_cv_prog_gnu_ld=no
264 fi])
265 xc_with_gnu_ld=$ac_cv_prog_gnu_ld
268 AC_PROG_LD
270 dnl --- Enable TCL by default
272 xc_with_tcl="yes"
273 xc_with_tk="yes"
274 xc_with_tcl_includes=""
275 xc_with_tk_includes=""
276 xc_with_tcl_libraries=""
277 xc_with_tk_libraries=""
278 xc_with_cairo="yes"
280 dnl -----------------------------------------------------------------------
281 dnl --- Cairo library
282 dnl -----------------------------------------------------------------------
284 AC_ARG_WITH([cairo],
285   [AS_HELP_STRING([--with-cairo],
286     [Use cairo graphics library @<:@default=yes@:>@])],
287   [
288     xc_with_cairo=$withval
289     if test "$withval" == "no" -o "$withval" == "NO"; then
290         xc_with_cairo=""
291     fi
292   ], ) 
294 if test "x$xc_with_cairo" != "x" ; then
295   AC_DEFINE([HAVE_CAIRO])
296   PKG_CHECK_MODULES([cairo], [cairo])
297   PKG_CHECK_MODULES([fontconfig], [fontconfig])
298   AC_CHECK_HEADERS([ghostscript/gdevdsp.h],
299     [
300         GS_LIBS=-lgs
301         AC_DEFINE([HAVE_GS])
302     ],
303     [
304         AC_MSG_WARN([Building xcircuit without ghostscript rendering])
305         AC_MSG_WARN([Install the ghostscript-devel package to solve this])
306     ]
307   )
310 dnl -----------------------------------------------------------------------
311 dnl --- Tcl/Tk support
312 dnl -----------------------------------------------------------------------
313           
314 AC_ARG_WITH(tcl,
315 [  --with-tcl=DIR          Find tclConfig.sh in DIR], [
316   xc_with_tcl=$withval
317   if test "$withval" == "no" -o "$withval" == "NO"; then
318       xc_with_tcl=""
319   fi
320 ], ) 
322 dnl -----------------------------------------------------------------------
323 dnl If TCL is not disabled, do our best to find it
324 dnl -----------------------------------------------------------------------
326 AC_ARG_WITH(tk,         [  --with-tk=DIR           Find tkConfig.sh in DIR],
327   xc_with_tk=$withval)
328 AC_ARG_WITH(tclincls,   [  --with-tclincls=DIR     Find tcl.h in DIR],
329   xc_with_tcl_includes=$withval)
330 AC_ARG_WITH(tkincls,    [  --with-tkincls=DIR      Find tk.h in DIR],
331   xc_with_tk_includes=$withval)
332 AC_ARG_WITH(tcllibs,    [  --with-tcllibs=DIR      Find Tcl library in DIR],
333   xc_with_tcl_libraries=$withval)
334 AC_ARG_WITH(tklibs,     [  --with-tklibs=DIR       Find Tk library in DIR],
335   xc_with_tk_libraries=$withval)
337 # -----------------------------------------------------------------------
339 #       Find the Tcl build configuration file "tclConfig.sh"
341 # -----------------------------------------------------------------------
343 if test "x$xc_with_tcl" != "x" ; then
345   TCL_INC_DIR="."
346   TK_INC_DIR="."
348   AC_MSG_CHECKING([for tclConfig.sh])
349   tcl_config_sh=""
351   if test "$xc_with_tcl" = "no" ; then
352     xc_with_tcl=""
353   elif test "$xc_with_tcl" != "yes" ; then
354     #
355     # Verify that a tclConfig.sh file exists in the directory specified 
356     # by --with-tcl. 
357     #
358     for dir in \
359      $xc_with_tcl 
360     do
361       if test -r "$dir/tclConfig.sh" ; then
362         tcl_config_sh="$dir/tclConfig.sh"
363         break
364       elif test -r "$dir/lib/tclConfig.sh" ; then
365         tcl_config_sh="$dir/lib/tclConfig.sh"
366         break
367       fi
368     done
369   else 
370     #
371     # Otherwise, search for Tcl configuration file.  
372     #
374     #  1. Search previously named locations.
376     for dir in \
377      $prefix \
378      $exec_prefix
379     do
380       if test -r "$dir/tclConfig.sh" ; then
381         tcl_config_sh="$dir/tclConfig.sh"
382         break
383       elif test -r "$dir/lib/tclConfig.sh" ; then
384         tcl_config_sh="$dir/lib/tclConfig.sh"
385         break
386       fi
387     done
389     #  2. Search standard locations.
391     if test "x$tcl_config_sh" = "x" ; then
392       for dir in \
393        `ls -dr /usr/local/tcl/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
394        /usr/local/tcl \
395        /usr/local/lib \
396        /usr/local \
397        `ls -dr /usr/share/tcltk/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
398        /sw/lib \
399        /usr/lib \
400        /usr/lib64 \
401        /usr
402       do
403         if test -r "$dir/tclConfig.sh" ; then
404           tcl_config_sh="$dir/tclConfig.sh"
405           break
406         elif test -r "$dir/lib/tclConfig.sh" ; then
407           tcl_config_sh="$dir/lib/tclConfig.sh"
408           break
409         fi
410       done
411     fi
412   fi
414   AC_MSG_RESULT([${tcl_config_sh}])
416   if test "x$tcl_config_sh" = "x" ; then
417     echo "can't find Tcl configuration script \"tclConfig.sh\""
418     echo "Reverting to non-Tcl compilation"
419     xc_with_tcl=""
420   fi
423 # -----------------------------------------------------------------------
425 #       Find the Tk build configuration file "tkConfig.sh"
427 # -----------------------------------------------------------------------
429 if test "x$xc_with_tcl" != "x" ; then
430   AC_MSG_CHECKING([for tkConfig.sh])
431   tk_config_sh=""
432   if test "$xc_with_tk" != "yes"; then
433     #
434     # Verify that a tkConfig.sh file exists in the directory specified 
435     # by --with-tcl or --with-tk. 
436     #
437     for dir in \
438      $xc_with_tk \
439      $xc_with_tcl 
440     do
441       if test -r "$dir/tkConfig.sh" ; then
442         tk_config_sh="$dir/tkConfig.sh"
443         break
444       elif test -r "$dir/lib/tkConfig.sh" ; then
445         tk_config_sh="$dir/lib/tkConfig.sh"
446         break
447       fi
448     done
449   else 
450     #
451     # Search for Tk configuration file.  
452     #
454     #
455     #  1. Search previously named locations.
456     # 
457     for dir in \
458      $prefix \
459      $exec_prefix
460     do
461       if test -r "$dir/tkConfig.sh" ; then
462         tk_config_sh="$dir/tkConfig.sh"
463         break
464       elif test -r "$dir/lib/tkConfig.sh" ; then
465         tk_config_sh="$dir/lib/tkConfig.sh"
466         break
467       fi
468     done
469     #
470     #  2. Search standard locations.
471     # 
472     if test "x$tk_config_sh" = "x" ; then
473       for dir in \
474        /usr/local \
475        /usr \
476        `ls -dr /usr/local/lib/tk[[7-9]].[[0-9]]* 2>/dev/null` \
477        `ls -dr /usr/lib/tk[[7-9]].[[0-9]]* 2>/dev/null` \
478        `ls -dr /usr/local/tk/tk[[7-9]].[[0-9]]* 2>/dev/null` \
479        `ls -dr /usr/local/tk[[7-9]].[[0-9]]* 2>/dev/null` \
480        /usr/local/tk \
481        `ls -dr /usr/local/lib/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
482        `ls -dr /usr/lib/tcl/tk[[7-9]].[[0-9]]* 2>/dev/null` \
483        `ls -dr /usr/local/tcl/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
484        `ls -dr /usr/share/tcltk/tk[[7-9]].[[0-9]]* 2>/dev/null` \
485        /sw/lib \
486        /usr/lib \
487        /usr/lib64 \
488        ${x_libraries}
489       do
490         if test -r "$dir/tkConfig.sh" ; then
491           tk_config_sh="$dir/tkConfig.sh"
492           break
493         elif test -r "$dir/lib/tkConfig.sh" ; then
494           tk_config_sh="$dir/lib/tkConfig.sh"
495           break
496         fi
497       done
498     fi
499   fi
500   AC_MSG_RESULT([${tk_config_sh}])
502   if test "x$tk_config_sh" = "x" ; then
503     echo "can't find Tk configuration script \"tkConfig.sh\""
504     echo "Reverting to non-Tcl compilation"
505     xc_with_tcl=""
506   fi
509 # -----------------------------------------------------------------------
511 #       Source in the Tcl/Tk configuration scripts.  
513 #       This didn't work so well in the pre-8.5 days, but
514 #       seems to be okay now.
516 # -----------------------------------------------------------------------
518 if test "x$xc_with_tcl" != "x" ; then
519   . $tcl_config_sh
520   . $tk_config_sh
522   # Should probably trust the config file contents, but this configure
523   # file checks the Tcl and Tk include and lib directories.  Since
524   # the config file doesn't separate out the libraries from the strings
525   # passed to the compiler/linker, do it manually here.
526   #
527   # Extract TCL_LIB_DIR from TCL_LIB_SPEC
528   # Extract TK_LIB_DIR from TK_LIB_SPEC
529   # Extract TCL_INC_DIR from TCL_INCLUDE_SPEC
530   # Extract TK_INC_DIR from TK_INCLUDE_SPEC
531   #
532   # These will be the defaults unless overridden by configure command line
534   tmpstr=${TCL_LIB_SPEC#*-L}
535   TCL_LIB_DIR=${tmpstr% -l*}
536   tmpstr=${TK_LIB_SPEC#*-L}
537   TK_LIB_DIR=${tmpstr% -l*}
538   TCL_INC_DIR=${TCL_INCLUDE_SPEC#*-I}
539   TK_INC_DIR=${TK_INCLUDE_SPEC#*-I}
541   LIBS="${TCL_LIBS} ${LIBS}"
543   if test "$TCL_VERSION" = "$TK_VERSION" ; then
544     :
545   else
546     echo "Mismatched Tcl/Tk versions ($TCL_VERSION != $TK_VERSION)"
547     echo "Reverting to non-Tcl compilation"
548     xc_with_tcl=""
549   fi
552 # -----------------------------------------------------------------------
553 # Rely on TCL_INCLUDE_SPEC from tclConfig.sh unless "--with-tclincls"
554 # overrides.  With TCL_INCLUDE_SPEC, pull out TCL_INC_DIR
555 # -----------------------------------------------------------------------
557 if test "x$xc_with_tcl" != "x" ; then
558   if test "x${xc_with_tcl_includes}" != "x" ; then
559     if test -r "${xc_with_tcl_includes}/tcl.h" ; then
560       TCL_INC_DIR=${xc_with_tcl_includes}
561     elif test "x${TCL_INCLUDE_SPEC}" == "x" ; then
562       echo "Can't find tcl.h in \"${xc_with_tcl_includes}\""
563       echo "Reverting to non-Tcl compilation"
564       xc_with_tcl=""
565     fi
566   elif test "x${TCL_INCLUDE_SPEC}" == "x" ; then
567     for dir in \
568      ${TCL_PREFIX}/include/tcl${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION} \
569      ${TCL_PREFIX}/include \
570      ${TCL_SRC_DIR}/generic \
571      ${TCL_INC_DIR}
572     do
573       if test -r "$dir/tcl.h" ; then
574         TCL_INC_DIR=$dir
575         TCL_INCLUDE_SPEC="-I${TCL_INC_DIR}"
576         break
577       fi
578     done
579     if test "x${TCL_INC_DIR}" = "x" ; then
580       echo "Can't find tcl.h header file"
581       echo "Reverting to non-Tcl compilation"
582       xc_with_tcl=""
583     fi
584   else
585     TCL_INC_DIR=`echo ${TCL_INCLUDE_SPEC} | sed -e '/-I/s/-I//'`
586   fi
589 # -----------------------------------------------------------------------
590 # Rely on TK_INCLUDE_SPEC from tkConfig.sh unless "--with-tkincls"
591 # overrides.  With TK_INCLUDE_SPEC, pull out TK_INC_DIR
592 # -----------------------------------------------------------------------
594 if test "x$xc_with_tcl" != "x" ; then
595   if test "x${xc_with_tk_includes}" != "x" ; then
596     if test -r "${xc_with_tk_includes}/tk.h" ; then
597       TK_INC_DIR=${xc_with_tk_includes}
598     elif test "x${TK_INCLUDE_SPEC}" == "x" ; then
599       echo "Can't find tk.h in \"${xc_with_tk_includes}\""
600       echo "Reverting to non-Tcl compilation"
601       xc_with_tcl=""
602     fi
603   elif test "x${TK_INCLUDE_SPEC}" == "x" ; then
604     for dir in \
605      ${TK_PREFIX}/include/tcl${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION} \
606      ${TK_PREFIX}/include/tk${TK_MAJOR_VERSION}.${TK_MINOR_VERSION} \
607      ${TK_PREFIX}/include \
608      ${TK_SRC_DIR}/generic \
609      ${TK_INC_DIR}
610     do
611       if test -r "$dir/tk.h" ; then
612         TK_INC_DIR=$dir
613         TK_INCLUDE_SPEC="-I${TK_INC_DIR}"
614         break
615       fi
616     done
617     if test "x${TK_INC_DIR}" = "x" ; then
618       echo "Can't find tk.h header file"
619       echo "Reverting to non-Tcl compilation"
620       xc_with_tcl=""
621     fi
622   else
623     TK_INC_DIR=`echo ${TK_INCLUDE_SPEC} | sed -e '/-I/s/-I//'`
624   fi
627 # --------------------------------------------------------------
628 # Rely on TCL_LIB_SPEC from tclConfig.sh unless "--with-tcllibs"
629 # overrides.  With TCL_LIB_SPEC, pull out TCL_LIB_DIR
630 # --------------------------------------------------------------
632 if test "x$xc_with_tcl" != "x" ; then
633   if test "x${xc_with_tcl_libraries}" != "x" ; then
634     TCL_LIB_SPEC=""
635     for libname in \
636      "${xc_with_tcl_libraries}/lib${TCL_LIB_NAME}${SHDLIB_EXT}"
637     do
638       if test -r "$libname" ; then
639         TCL_LIB_DIR="${xc_with_tcl_libraries}"
640         break
641       fi
642     done
643     if test "x${TCL_LIB_DIR}" == "x" ; then
644       echo "Can't find tcl library in \"${xc_with_tcl_libraries}\""
645       echo "Reverting to non-Tcl compile"
646       xc_with_tcl=""
647     fi
648   elif test "x${TCL_LIB_SPEC}" == "x" ; then
649     for libpfix in "lib64" "lib"
650     do
651       libname="${TCL_EXEC_PREFIX}/${libpfix}/lib${TCL_LIB_NAME}${SHDLIB_EXT}"
652       if test -r "$libname" ; then
653         TCL_LIB_DIR="${TCL_EXEC_PREFIX}/${libpfix}"
654         break
655       fi
656     done
657     if test "x${TCL_LIB_DIR}" = "x" ; then
658       echo "Can't find tcl library"
659       echo "Reverting to non-Tcl compile"
660       xc_with_tcl=""
661     fi
662   else
663     TCL_LIB_DIR=`echo ${TCL_LIB_SPEC} | sed -e '/-L/s/-L//' -e '/-l/s/-l.*//'`
664   fi
667 # --------------------------------------------------------------
668 # Rely on TK_LIB_SPEC from tkConfig.sh unless "--with-tklibs"
669 # overrides.  With TK_LIB_SPEC, pull out TK_LIB_DIR
670 # --------------------------------------------------------------
672 if test "x$xc_with_tcl" != "x" ; then
673   if test "x${xc_with_tk_libraries}" != "x" ; then
674     TK_LIB_SPEC=""
675     for libname in \
676      "${xc_with_tk_libraries}/lib${TK_LIB_NAME}${SHDLIB_EXT}"
677     do
678       if test -r "$libname" ; then
679         TK_LIB_DIR="${xc_with_tk_libraries}"
680         break
681       fi
682     done
683     if test "x${TK_LIB_DIR}" == "x" ; then
684       echo "Can't find tk library in \"${xc_with_tk_libraries}\""
685       echo "Reverting to non-Tcl compile"
686       xc_with_tcl=""
687     fi
688   elif test "x${TK_LIB_SPEC}" == "x" ; then
689     for libpfix in "lib64" "lib"
690     do
691       libname="${TK_EXEC_PREFIX}/${libpfix}/lib${TK_LIB_NAME}${SHDLIB_EXT}"
692       if test -r "$libname" ; then
693         TK_LIB_DIR="${TK_EXEC_PREFIX}/${libpfix}"
694         break
695       fi
696     done
697     if test "x${TK_LIB_DIR}" = "x" ; then
698       echo "Can't find tk library"
699       echo "Reverting to non-Tcl compile"
700       xc_with_tcl=""
701     fi
702   else
703     TK_LIB_DIR=`echo ${TCL_LIB_SPEC} | sed -e '/-L/s/-L//' -e '/-l/s/-l.*//'`
704   fi
707 #--------------------------------------------------------------------
708 # If TCL_LIB_SPEC and/or TK_LIB_SPEC do not exist, construct them
709 #--------------------------------------------------------------------
711 if test "x$xc_with_tcl" != "x" ; then
712   if test "x${TCL_LIB_SPEC}" == "x" ; then
713     case $target in
714       *-sunos4*|*-*-netbsd|NetBSD-*|FreeBSD-*|*-*-openbsd*|OpenBSD-*)
715         TCL_LIB_NAME="tcl${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}"
716         ;;
717       *)
718         TCL_LIB_NAME="tcl${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}"
719         ;;
720     esac
721     TCL_LIB_SPEC="-L${TCL_LIB_DIR} -l${TCL_LIB_NAME}"
722   fi
724   if test "x${TK_LIB_SPEC}" == "x" ; then
725     case $target in
726       *-sunos4*|*-*-netbsd|NetBSD-*|FreeBSD-*|*-*-openbsd*|OpenBSD-*)
727         TK_LIB_NAME="tk${TK_MAJOR_VERSION}${TK_MINOR_VERSION}"
728         ;;
729       *)
730         TK_LIB_NAME="tk${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}"
731         ;;
732     esac
733     TK_LIB_SPEC="-L${TK_LIB_DIR} -l${TK_LIB_NAME}"
734   fi
736   # Find the version of "wish" that corresponds to TCL_EXEC_PREFIX
737   # We really ought to run "ldd" to confirm that the linked libraries match.
739   AC_MSG_CHECKING([for wish executable])
740   for dir in \
741    ${TK_EXEC_PREFIX}/bin \
742    ${TK_EXEC_PREFIX}
743   do
744     for wishexe in \
745       wish \
746       wish${TK_VERSION} \
747       wish.exe \
748       wish${TK_VERSION}.exe
749     do
750       if test -r "$dir/$wishexe" ; then
751         WISH_EXE=$dir/$wishexe
752         break
753       fi
754     done  
755     if test "x${WISH_EXE}" != "x" ; then
756       break  
757     fi
758   done
759   if test "x${WISH_EXE}" = "x" ; then
760     echo "Warning: Can't find executable for \"wish\".  You may have to"
761     echo "manually set the value for WISH_EXE in the xcircuit startup script."
762     AC_MSG_RESULT(no)
763   else
764     AC_MSG_RESULT([${WISH_EXE}])
765   fi
767   # Have to define SHDLIB_EXT here even though we have to do it below, too.
768   case $target in
769      *-hpux*)
770         SHDLIB_EXT=".sl"
771         ;;
772      *cygwin*)
773         SHDLIB_EXT=".dll.a"
774         ;;
775      *-darwin*)
776         SHDLIB_EXT=".dylib"
777         ;;
778      *-openbsd*)
779         SHDLIB_EXT=".so.${TCL_LIB_FILE##*.so.}"
780         ;;
781      *)
782         SHDLIB_EXT=".so"
783         ;;
784   esac
787 dnl End of Tcl/Tk search
788 dnl --------------------------------
790 # -----------------------------------------------------------------------
792 # Tk libraries and header files
794 # -----------------------------------------------------------------------
796 if test "x$xc_with_tcl" != "x" ; then
797   INC_SPECS="${INC_SPECS} ${TCL_INCLUDE_SPEC} ${TK_INCLUDE_SPEC}"
798   LIB_SPECS="${LIB_SPECS} ${TCL_LIB_SPEC} ${TK_LIB_SPEC}"
800   if test "x${loader_run_path}" = "x" ; then
801     loader_run_path="${TCL_LIB_DIR}"
802   else
803     loader_run_path="${TCL_LIB_DIR}:${loader_run_path}"
804   fi
806   #--------------------------------------------------------------------
807   #
808   # Check if we can generate shared libraries on this system.  Set flags 
809   # to generate shared libraries for systems that we know about.  Start 
810   # with the values found in tclConfig.sh, make changes as we know about 
811   # the different systems.
812   #
813   #--------------------------------------------------------------------
815   # Initialize shared library build variables
817   if test "x${TCL_SHLIB_SUFFIX}" == "x" ; then
818     SHDLIB_EXT=".so"
819   else
820     SHDLIB_EXT="${TCL_SHLIB_SUFFIX}"
821   fi
823   if test "x${TCL_SHLIB_LD}" == "x" ; then
825     # Construct shared library build arguments the painful way
826     # This is not expected to be necessary, so the number of
827     # supported systems has been pared down to a minimum.
829     LDDL_FLAGS="-shared"
830     LD_RUN_PATH=""
831     SHLIB_LD="${CC}"
832     EXTRA_LIB_SPECS=""
834     case $target in
835       *-darwin*)
836         SHDLIB_EXT=".dylib"
837         SHLIB_LIB_SPECS="${LIB_SPECS}"
838         if test "${xc_with_gnu_ld}" = "yes" ; then
839            LDDL_FLAGS="-dynamiclib -bind_at_load"
840         else
841            LDDL_FLAGS="-single_module -dynamiclib -flat_namespace"
842            LDDL_FLAGS="${LDDL_FLAGS} -undefined suppress -noprebind"
843            SHLIB_CFLAGS="-I/sw/include -fno-common"
844         fi
845         ;;
847       *cygwin*)
848         AC_DEFINE(CYGWIN)
849         SHDLIB_EXT=".dll.a"
850         LDDL_FLAGS="-shared -Wl,--enable-auto-image-base -Wl,-rpath,${loader_run_path}"
851         SHLIB_LIB_SPECS="${LIB_SPECS}"
852         ;;
854       *-linux*)
855         SHLIB_CFLAGS="-fPIC"
856         LDDL_FLAGS='-shared -Wl,-soname,$@'
857         LD_RUN_PATH="-Wl,-rpath,${loader_run_path}"
858     
859         EXTRA_LIB_SPECS="-ldl"
861         case $target in
862            x86_64-*)
863               # AMD 64-bit archictecture
864               # Add -fPIC to standard compile switch
865               CFLAGS="${CFLAGS} -fPIC"
866               ;;
867         esac
868         ;;
869   
870       *-netbsd*|*-freebsd*|*-openbsd*)
871         # Not available on all versions:  check for include file.
872         AC_CHECK_HEADER(dlfcn.h, test_ok=yes, test_ok=no)
873         if test "$test_ok" = yes; then
874           SHLIB_CFLAGS="-fpic"
875           SHLIB_LD="ld"
876           LDDL_FLAGS="-shared"
877         fi
878         ;;
879     esac
881     if test "$GCC" = "yes" ; then
882        CFLAGS="-fPIC ${CFLAGS}"
883     fi
885   else
887     # Rely on shared lib arguments in tclConfig.sh
889     SHLIB_LD="${TCL_SHLIB_LD}"
890     EXTRA_LIB_FLAGS=""
891     LDDL_FLAGS="${TCL_LD_FLAGS}"
892     LD_RUN_PATH=""
894     case $target in
895       *-linux*)
896         LD_RUN_PATH="-Wl,-rpath,${loader_run_path}"
897         ;;
898     esac
899   fi
901   # If we're running gcc, then set SHLIB_CFLAGS flags for compiling
902   # shared libraries for gcc, instead of those of the vendor's
903   # compiler.
905   if test "$GCC" = "yes" ; then
906     if test "x${TCL_SHLIB_CFLAGS}" = "x" ; then
907        SHLIB_CFLAGS="-fPIC ${SHLIB_CFLAGS}"
908     else
909        SHLIB_CFLAGS="${TCL_SHLIB_CFLAGS} ${SHLIB_CFLAGS}"
910     fi
911   fi
912   CFLAGS="${CFLAGS} ${SHLIB_CFLAGS}"
914   if test "${xc_with_gnu_ld}" = "yes" ; then
915     LDDL_FLAGS="${LDDL_FLAGS} -Wl,--version-script=symbol.map"
916   fi
918   AC_SUBST(SHDLIB_EXT)
919   AC_SUBST(SHLIB_LD)
920   AC_SUBST(LDDL_FLAGS)
921   AC_SUBST(SHLIB_LIB_SPECS)
922   AC_SUBST(EXTRA_LIB_SPECS)
923   AC_SUBST(LD_RUN_PATH)
924   AC_SUBST(LDFLAGS)
925   AC_SUBST(INC_SPECS)
926   AC_SUBST(LIB_SPECS)
927   AC_SUBST(TCL_LIB_DIR)
928   AC_SUBST(WISH_EXE)
932 dnl Disable the ASG (automatic schematic generation) package.  Disabled by default.
933 AC_ARG_ENABLE(asg,
934 [ --enable-asg          enable support for Automatic Schematic Generation], [
935   AC_DEFINE(ASG)
936   AC_DEFINE(CONFIGURED)
937   SUBDIRS="asg spiceparser"
938   dnl Object files to link into the final executable or shared object
939   dnl These must be in the correct order!
940      SUBLIB="asg/libasg.a spiceparser/libspiceparser.a"
943 dnl Disable LGF (analog/diglog) file support.  Enabled by default.
944 AC_ARG_ENABLE(lgf,
945 [  --disable-lgf           disable support for reading Caltech tools
946                           analog simulator .lgf files], , [
947   HAVE_LGF=LGF
948   AC_DEFINE(LGF)
951 dnl Disable fix for input focus on some window managers.  Enabled by default.
952 AC_ARG_ENABLE(focus-fix,
953 [  --disable-focus-fix     disable focus fix for some window managers], , [
954   AC_DEFINE(INPUT_FOCUS)
957 dnl Path to Ghostscript
958 AC_ARG_WITH(gs,
959 [  --with-gs=DIR           path to ghostscript], [
960   if test -f "$withval"; then
961     GS_EXEC=$withval
962   else
963     GS_EXEC=gs
964   fi
965 ], [
966   AC_CHECK_PROG(GS_EXEC, gs, , gs)])
967 AC_DEFINE_UNQUOTED(GS_EXEC, "$GS_EXEC")
969 dnl Path to ngspice
970 AC_ARG_WITH(ngspice,
971 [  --with-ngspice=DIR           path to ngspice], [
972   if test -f "$withval"; then
973     SPICE_EXEC=$withval
974   else
975     SPICE_EXEC=ngspice
976   fi
977 ], [
978   AC_CHECK_PROG(SPICE_EXEC, ngspice, , ngspice)])
979 AC_DEFINE_UNQUOTED(SPICE_EXEC, "$SPICE_EXEC")
981 dnl Path to Python
983 xc_with_python=""
984 PYTHON=
986 AC_ARG_WITH(python,
987 [  --with-python=DIR       path to python interpreter],
988   xc_with_python=$withval) 
990 if test "x$xc_with_tcl" != "x" ; then
991   xc_with_python=""
992 elif test "$xc_with_python" = "no" ; then
993   xc_with_python=""
994 elif test "$xc_with_python" = "yes" ; then
995   AC_PATH_PROG(PYTHON,python)
996 elif test "x$xc_with_python" != x; then
997   test -f "$xc_with_python" && PYTHON=$xc_with_python
1000 if test "x$PYTHON" != x; then
1001   _py_version=`$PYTHON -c 'import sys; print sys.version[[0:3]]'`
1002   _py_prefix=`$PYTHON -c 'import sys; print sys.prefix'`
1003   _py_exec_prefix=`$PYTHON -c 'import sys; print sys.exec_prefix'`
1005   _py_include="$_py_prefix/include/python$_py_version"
1006   _py_lib="$_py_exec_prefix/lib/python$_py_version/config"
1007   _py_makefile="$_py_lib/Makefile"
1009   if test $_py_version = 1.5; then
1010     echo
1011     echo "*** WARNING:" 
1012     echo "*** Python version 1.5 detected:  This version of Python has a known fatal"
1013     echo "*** bug.  Disabling Python interface.  If you want the embedded Python"
1014     echo "*** interface, you will need to get an updated version of Python."
1015     echo
1016     PYTHON=""
1017   fi
1020 if test "x$PYTHON" != x; then
1021   if test -f $_py_makefile; then
1022     _py_libs=`sed -n -e 's/^LIBS=\(.*\)/\1/p' $_py_makefile`
1023     _py_libm=`sed -n -e 's/^LIBM=\(.*\)/\1/p' $_py_makefile`
1024   else
1025     _py_libs='-lpthread -ldl -lutil -ldb'
1026     _py_libm='-lm'
1027   fi
1028       
1029   # Now that we think we know where the python include and
1030   # library files are, make sure we can build a small
1031   # program against them.
1032   _save_CPPFLAGS=${CPPFLAGS}
1033   _save_LDFLAGS=${LDFLAGS}
1034   _save_LIBS=${LIBS}
1036   CPPFLAGS="$CPPFLAGS -I$_py_include"
1037   LDFLAGS="$LDFLAGS -L$_py_lib"
1038     
1039   case "$target_os" in
1040         *cygwin*)
1041                 PYLIB="-lpython$_py_version"
1042                 LIBS="$PYLIB.dll $LIBS $X_PRE_LIBS $_py_libs"
1043                 ;;
1044         *)
1045                 LIBS="$LIBS -lpython$_py_version $_py_libs $_py_libm"
1046                 ;;              
1047   esac    
1048     
1050   HAVE_PYTHON=0
1051   AC_CHECK_HEADER(Python.h,[
1052       AC_MSG_CHECKING([for Py_Initialize in -lpython$_py_version])
1053       AC_TRY_LINK([#include "Python.h"],[Py_Initialize();],[
1054         HAVE_PYTHON=1
1055         INTERPRETER=PYTHON
1056         AC_MSG_RESULT(yes)
1057         AC_DEFINE(HAVE_PYTHON)],
1058         AC_MSG_RESULT(no))])
1060   if test "x$HAVE_PYTHON" = x0; then
1061     CPPFLAGS=$_save_CPPFLAGS
1062     LDFLAGS=$_save_LDFLAGS
1063     LIBS=$_save_LIBS
1064     PYTHON=""
1065   fi
1068 if test "x$PYTHON" != x; then
1069   STARTUP_FILE="xcstartup.py"
1070   INTERP_PATH="python"
1071   WRAPPER_SCRIPT=""
1072   SUBDIRS="${SUBDIRS} Xw"
1073   SUBLIB="${SUBLIB} Xw/libxcXw.a"
1074   XCIRCUIT_TARGET="xcircuit"
1075 elif test "x$xc_with_tcl" != "x" ; then
1076   INTERPRETER=TCL
1077   STARTUP_FILE="xcstartup.tcl"
1078   INTERP_PATH="tcl"
1079   WRAPPER_SCRIPT="wrapper.tcl"
1080   AC_DEFINE(TCL_WRAPPER)
1081   XCIRCUIT_TARGET="tcl"
1082   ALL_TARGET="all-recursive"
1083   INSTALL_TARGET="install-recursive"
1084 else
1085   STARTUP_FILE="startup.script"
1086   INTERP_PATH="."
1087   WRAPPER_SCRIPT=""
1088   SUBDIRS="${SUBDIRS} Xw"
1089   SUBLIB="${SUBLIB} Xw/libxcXw.a"
1090   XCIRCUIT_TARGET="xcircuit"
1093 # Add -lm last to LDFLAGS, or Tcl/Tk's addition of -lieee can cause
1094 # an error.
1095 EXTRA_LIB_SPECS="$EXTRA_LIB_SPECS -lm"
1097 dnl Memory debugging:
1098 dnl The non-Tcl version uses (links to) ElectricFence.
1099 dnl Tcl must use the Tcl memory debugger.
1100 dnl Caveats:
1101 dnl We should try to ensure that ElectricFence is available, or that
1102 dnl the Tcl version used has memory debugging compiled in
1104 AC_ARG_ENABLE(memdebug,
1105 [  --enable-memdebug            enable memory debugging], [
1106    if test "x$xc_with_tcl" = "x" ; then
1107       LIBS="${LIBS} -lefence"
1108    else
1109       AC_DEFINE(TCL_MEM_DEBUG)
1110    fi
1113 AC_SUBST(SUBDIRS)
1114 AC_SUBST(SUBLIB)
1115 AC_SUBST(STDLIBS)
1116 AC_SUBST(GS_LIBS)
1117 AC_SUBST(STARTUP_FILE)
1118 AC_SUBST(INTERP_PATH)
1119 AC_SUBST(WRAPPER_SCRIPT)
1120 AC_SUBST(XCIRCUIT_TARGET)
1121 AC_SUBST(CFLAGS)
1122 AC_SUBST(LD)
1123 AC_SUBST(LDFLAGS)
1125 AC_SUBST(INTERPRETER)
1126 AC_SUBST(HAVE_LGF)
1128 AC_SUBST(ALL_TARGET)
1129 AC_SUBST(INSTALL_TARGET)
1131 dnl Automake requires these
1132 AC_SUBST(ACLOCAL)
1133 AC_SUBST(AUTOCONF)
1134 AC_SUBST(AUTOMAKE)
1135 AC_SUBST(AUTOHEADER)
1137 AC_OUTPUT(Makefile Xw/Makefile asg/Makefile spiceparser/Makefile)
1139 echo ""
1140 echo "Configuration results:"
1141 echo "----------------------------------------------------"
1142 echo ""
1144 if test "x$xc_with_tcl" == "x" ; then
1145    if test "x$PYTHON" != x; then
1146       echo "Using Python interface (not recommended)"
1147    else
1148       echo "No Tcl/Tk, using standard Xlib/Xt interface."
1149       echo "If that is not what you wanted, then make sure"
1150       echo "you have Tcl/Tk development packages installed?"
1151    fi
1152 else
1153    echo "Using Tcl/Tk interface"
1155 echo ""
1157 if test "x$xc_with_cairo" == "x" ; then
1158    echo "No Cairo graphics."
1159    echo "If that is not what you wanted, then make sure"
1160    echo "you have libcairo and fontconfig installed."
1161    echo "Try installing package cairo-devel."
1162 else
1163    echo "Using Cairo graphics"
1165 echo ""
1166 echo "CFLAGS=${CFLAGS}"