magic/scripts/configure.in

2062 lines
54 KiB
Plaintext

dnl Process this file with autoconf to produce a configure script.
dnl Use autoconf 2.52 or newer.
AC_INIT(magic,, magic-hackers@csl.cornell.edu)
AC_PREREQ(2.52)
AC_CONFIG_SRCDIR(rules.mak)
AC_CONFIG_AUX_DIR(.)
AC_CANONICAL_SYSTEM
dnl pass the version string on the the makefiles
PACKAGE=magic
dnl Override default target when compiling under TCL
ALL_TARGET="standard"
INSTALL_TARGET="install-magic"
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CPP
AC_PROG_CXX
AC_ISC_POSIX
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_PROG_SED
AC_PATH_PROG(PERL, perl, no)
AC_SUBST(PERL)
dnl check if the linker is a GNU linker
#------------------------------------------------------------
# AC_PROG_LD - find the path to the GNU or non-GNU linker
# (This stuff ripped from libtool)
#------------------------------------------------------------
AC_DEFUN([AC_PROG_LD],
[AC_ARG_WITH(gnu-ld,
[ --with-gnu-ld assume the C compiler uses GNU ld [[default=no]]],
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
dnl ###not for PostgreSQL### AC_REQUIRE([AC_CANONICAL_BUILD])dnl
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by GCC])
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
esac
case "$ac_prog" in
# Accept absolute paths.
changequote(,)dnl
[\\/]* | [A-Za-z]:[\\/]*)
re_direlt='/[^/][^/]*/\.\./'
changequote([,])dnl
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
done
test -z "$LD" && LD="$ac_prog"
;;
"")
# If it fails, then pretend we aren't using GCC.
ac_prog=ld
;;
*)
# If it is relative, then search for the first ld in PATH.
with_gnu_ld=unknown
;;
esac
elif test "$with_gnu_ld" = yes; then
AC_MSG_CHECKING([for GNU ld])
else
AC_MSG_CHECKING([for non-GNU ld])
fi
AC_CACHE_VAL(ac_cv_path_LD,
[if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
ac_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some GNU ld's only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
test "$with_gnu_ld" != no && break
else
test "$with_gnu_ld" != yes && break
fi
fi
done
IFS="$ac_save_ifs"
else
ac_cv_path_LD="$LD" # Let the user override the test with a path.
fi])
LD="$ac_cv_path_LD"
if test -n "$LD"; then
AC_MSG_RESULT($LD)
else
AC_MSG_RESULT(no)
fi
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_PROG_LD_GNU
])
AC_DEFUN([AC_PROG_LD_GNU],
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
ac_cv_prog_gnu_ld=yes
else
ac_cv_prog_gnu_ld=no
fi])
with_gnu_ld=$ac_cv_prog_gnu_ld
])
AC_PROG_LD
AC_CHECK_SIZEOF([void *], 4)
AC_CHECK_SIZEOF([unsigned int], 4)
AC_CHECK_SIZEOF([unsigned long], 4)
AC_CHECK_SIZEOF([unsigned long long], 8)
dnl Check byte arrangement for doubleint routines
AC_C_BIGENDIAN
AC_C_INLINE
AC_C_RESTRICT
dnl Check for required header files
AC_HEADER_STDC
dnl Check for compiler bool support
AC_HEADER_STDBOOL
AC_FUNC_ALLOCA
dnl Need either setenv or putenv
AC_CHECK_FUNCS(setenv putenv)
dnl Check for getrlimit
AC_CHECK_FUNCS(getrlimit)
dnl Check for setrlimit
AC_CHECK_FUNCS(setrlimit)
dnl Check for vfork
AC_CHECK_FUNC(vfork)
dnl Check for <sys/mman.h>
AC_CHECK_HEADERS(sys/mman.h)
dnl Check for <dirent.h>
AC_CHECK_HEADERS(dirent.h)
dnl Check for <limits.h>
AC_CHECK_HEADERS(limits.h)
dnl Check for <param.h>
AC_CHECK_HEADERS(param.h)
dnl Check for <paths.h>
AC_CHECK_HEADERS(paths.h)
dnl Check for <sys/resource.h>
AC_CHECK_HEADERS(sys/resource.h)
dnl Check for <sys/time.h>
AC_CHECK_HEADERS(sys/time.h)
AC_HEADER_TIME
dnl Check for <termio.h>
AC_CHECK_HEADERS(termio.h)
dnl Check for <termios.h>
AC_CHECK_HEADERS(termios.h)
dnl Check for <sys/ioctl.h>
AC_CHECK_HEADERS(sys/ioctl.h)
dnl Check for <sys/ioctl_compat.h>
AC_CHECK_HEADERS(sys/ioctl_compat.h)
dnl Check for <sgtty.h>
AC_CHECK_HEADERS(sgtty.h)
AC_STRUCT_DIRENT_D_TYPE
dnl Check for va_copy
AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
AC_TRY_LINK(
[#include <stdarg.h>],
[va_list ap1, ap2;
va_copy(ap1,ap2);
],
[ac_cv_c_va_copy="yes"],
[ac_cv_c_va_copy="no"])
)
if test "$ac_cv_c_va_copy" = "yes"
then
AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy])
fi
AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
AC_TRY_LINK(
[#include <stdarg.h>],
[va_list ap1, ap2;
__va_copy(ap1,ap2);
],
[ac_cv_c___va_copy="yes"],
[ac_cv_c___va_copy="no"])
)
if test "$ac_cv_c___va_copy" = "yes"
then
AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy])
fi
dnl Control assertions in codebase from configure
AC_ARG_ENABLE(assertions,
[ --enable-assertions build with fatal assertions enabled],
[],
[enable_assertions=no])
NDEBUG_defs="-DNDEBUG"
if test "x$enable_assertions" = "xyes" ; then
NDEBUG_defs=""
fi
dnl Control assertions in codebase from configure
AC_ARG_ENABLE(debug,
[ --enable-debug build with fatal debug enabled],
[],
[enable_debug=no])
DEBUG_defs=""
if test "x$enable_debug" = "xyes" ; then
DEBUG_defs="-DDEBUG"
fi
dnl Allow file compression (zlib) to be disabled
AC_ARG_ENABLE(compression,
[ --disable-compression disable file compression],
[],
[enable_compression=yes])
dnl Check for zlib
ZLIB_FLAG=""
if test "x$enable_compression" = "xyes" ; then
AC_CHECK_LIB([z],[gzopen],[
AC_DEFINE([HAVE_ZLIB],[1],["zlib compression"])
ZLIB_FLAG=" -lz"
])
fi
dnl Check for some C99 functions
dnl Built-in round/roundf require CFLAGS -std=c99, but this also
dnl requires that all functions be declared explicitly! For now,
dnl built-in functions are disabled, with macros used instead.
dnl NOTE---Bug in the x86_64 math library; round() and roundf() are incorrect.
case $target in
*x86_64*) ;;
*)
AC_CACHE_CHECK([for built-in roundf], ac_cv_c_roundf,
AC_TRY_LINK(
[#include <math.h>],
[float f;
f = roundf(1.5);
],
[ac_cv_c_roundf="yes"],
[ac_cv_c_roundf="no"])
)
if test "$ac_cv_c_roundf" = "no"
then
# Check fo C99 function from libm
AC_CHECK_LIB([m],[roundf],[AC_DEFINE([HAVE_ROUNDF],[1],["c99 function"])])
fi
AC_CACHE_CHECK([for built-in round], ac_cv_c_round,
AC_TRY_LINK(
[#include <math.h>],
[double d;
d = round(1.5);
],
[ac_cv_c_round="yes"],
[ac_cv_c_round="no"])
)
if test "$ac_cv_c_round" = "no"
then
# Check fo C99 function from libm
AC_CHECK_LIB([m],[round],[AC_DEFINE([HAVE_ROUND],[1],["c99 function"])])
fi
;;
esac
stub_defs=""
extra_defs="$extra_defs -DCAD_DIR=\\\"\${LIBDIR}\\\" -DBIN_DIR=\\\"\${BINDIR}\\\""
X_LIBS=
X_CFLAGS=
INC_SPECS=
DEPEND_FLAG=
SHLIB_CFLAGS=""
LD_RUN_PATH=""
WISH_EXE=""
TCLSH_EXE=""
modules=""
unused=""
cadinstall=""
extra_libs=""
top_extra_libs=""
sub_extra_libs=""
ld_extra_libs=""
ld_extra_objs=""
programs=""
rl_defs=
rl_libs=
gr_cflags=
gr_dflags=
gr_libs=
gr_srcs=
gr_hsrcs=
gr_hprog=
magic_with_tcl="yes"
magic_with_tk="yes"
magic_with_tcl_includes=""
magic_with_tk_includes=""
magic_with_tcl_libraries=""
magic_with_tk_libraries=""
dnl We will attempt to configure with Tcl/Tk and OpenGL. However,
dnl if checks for the appropriate header and library files fail,
dnl we will revert to non-Tcl and/or non-OpenGL compilation.
dnl Compilation for Tcl/Tk may be explicitly prohibited by using
dnl --with-tcl=no or --with-interpreter=no, and OpenGL may be
dnl disabled with --with-opengl=no
usingOGL=1
usingTcl=1
usingOA=0
usingCairo=1
usingPython3=1
dnl Check for gcore, used by niceabort.c
AC_PATH_PROG(GCORE, gcore, [no])
dnl Python3 is preferred for running the preprocessor script
dnl but CPP can be used instead.
AC_PATH_PROG([PYTHON3], [python3], [no])
if test "x${PYTHON3}" == "xno"; then
dnl check size of pointer for correct behavior on 64-bit systems
dnl If the C preprocessor is GCC, we need to force the flag to
dnl assert that input files are of type C, or else the preprocessing
dnl stage will not execute correctly on the ".in" files in the scmos
dnl directory.
usingPython3=
if test "$CPP" = "$CC -E" ; then
MCPP="$CPP -x c"
MSED="sed -e 's/\\\\/\\\\\\\\/'"
else
MCPP="$CPP"
MSED="sed -e 's/\\\\/\\\\\\\\/'"
fi
else
MCPP="${PYTHON3} \${MAGICDIR}/scripts/preproc.py -ccomm"
MSED="cat"
usingPython3=1
fi
dnl Check for X enabled/disabled
AC_PATH_XTRA
if test "x$no_x" = "x"; then
usingX11=1
else
echo Unable to find X11 or X11 disabled---compiling without graphics.
echo Graphics options will be NULL only!
if test $usingOGL ; then
echo "Cannot use OpenGL/GLX without X11, disabling."
usingOGL=
fi
if test $usingCairo ; then
echo "Cannot use Cairo without X11, disabling."
usingCairo=
fi
# if test $usingTcl ; then
# echo "Cannot compile TCL version without X11, disabling."
# usingTcl=
# fi
fi
# For distributed installs, where the run-time files are installed in a
# place that is a temporary staging area, like DESTDIR, but unlike DESTDIR,
# the prefix is replaced by the destination directory, rather than appended
# to it.
DIST_DIR="\${exec_prefix}"
AC_ARG_WITH(distdir,
[ --with-distdir=DIR install into location DIR for distribution], [
if test "$withval" = "no" -o "$withval" = "NO" ; then
DIST_DIR="\${exec_prefix}"
else
DIST_DIR=${withval}
fi
], )
# Check for libXi, which is required on some systems but not available on
# others.
use_libxi=""
use_libxmu=""
use_libxext=""
AC_CHECK_LIB([Xi], [XOpenDevice], use_libxi="-lXi")
AC_CHECK_LIB([Xmu], [XmuInternAtom], use_libxmu="-lXmu")
AC_CHECK_LIB([Xext], [XextFindDisplay], use_libxext="-lXext")
AC_ARG_WITH(interpreter,
[ --with-interpreter=[arg] enable interpreter (tcl, scheme, or no)], [
if test "$withval" = "no" -o "$withval" = "NO"; then
usingTcl=
elif test "$withval" = "scheme" -o "$withval" = "SCHEME"; then
usingScheme=1
usingTcl=
elif test "$withval" != "tcl" -a "$withval" != "TCL"; then
echo "Unknown option to --with-interpreter: Must be scheme, tcl, or no."
exit 1
fi
], )
AC_ARG_WITH(tcl,
[ --with-tcl=DIR Find tclConfig.sh in DIR], [
magic_with_tcl=$withval
if test "$withval" = "no" -o "$withval" = "NO"; then
usingTcl=
elif test $usingScheme ; then
echo Attempt to enable both Tcl and Scheme interpreters.
echo Disabling Tcl, and using Scheme instead.
usingTcl=
fi
], )
dnl ----------------------------------------------------------------
dnl Do our best to find Tcl/Tk. If we can't, then flag a warning
dnl and don't set the usingTcl variable.
dnl
dnl This has been broken up into a number of sections, each of which
dnl depends independently on the setting of usingTcl.
dnl ----------------------------------------------------------------
AC_ARG_WITH(tk, [ --with-tk=DIR Find tkConfig.sh in DIR],
magic_with_tk=$withval)
AC_ARG_WITH(tclincls, [ --with-tclincls=DIR Find tcl.h in DIR],
magic_with_tcl_includes=$withval)
AC_ARG_WITH(tkincls, [ --with-tkincls=DIR Find tk.h in DIR],
magic_with_tk_includes=$withval)
AC_ARG_WITH(tcllibs, [ --with-tcllibs=DIR Find Tcl library in DIR],
magic_with_tcl_libraries=$withval)
AC_ARG_WITH(tklibs, [ --with-tklibs=DIR Find Tk library in DIR],
magic_with_tk_libraries=$withval)
AC_ARG_WITH(wish, [ --with-wish=EXE Use wish binary at EXE],
magic_with_wish_binary=$withval)
# -----------------------------------------------------------------------
# Find the Tcl build configuration file "tclConfig.sh"
# -----------------------------------------------------------------------
if test $usingTcl ; then
TCL_INC_DIR="."
TK_INC_DIR="."
AC_MSG_CHECKING([for tclConfig.sh])
tcl_config_sh=""
if test "$magic_with_tcl" = "no" ; then
magic_with_tcl=""
elif test "$magic_with_tcl" != "yes" ; then
#
# Verify that a tclConfig.sh file exists in the directory specified
# by --with-tcl.
#
for dir in \
$magic_with_tcl
do
if test -r "$dir/tclConfig.sh" ; then
tcl_config_sh="$dir/tclConfig.sh"
break
elif test -r "$dir/lib/tclConfig.sh" ; then
tcl_config_sh="$dir/lib/tclConfig.sh"
break
elif test -r "$dir/unix/tclConfig.sh" ; then
tcl_config_sh="$dir/unix/tclConfig.sh"
break
fi
done
else
#
# Otherwise, search for Tcl configuration file.
#
# 1. Search previously named locations.
for dir in \
$prefix \
$exec_prefix
do
if test -r "$dir/tclConfig.sh" ; then
tcl_config_sh="$dir/tclConfig.sh"
break
elif test -r "$dir/lib/tclConfig.sh" ; then
tcl_config_sh="$dir/lib/tclConfig.sh"
break
elif test -r "$dir/unix/tclConfig.sh" ; then
tcl_config_sh="$dir/unix/tclConfig.sh"
break
fi
done
# 2. Search standard locations.
# (1/25/05---/usr/lib added for Ubuntu Linux)
# (6/19/06---/usr/lib64 added for 64-bit architectures
if test "x$tcl_config_sh" = "x" ; then
for dir in \
`ls -dr /usr/local/tcl/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
/usr/local/tcl \
/usr/local/lib \
/usr/lib64 \
/usr/local \
`ls -dr /usr/lib/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
/sw/lib \
/usr
do
if test -r "$dir/tclConfig.sh" ; then
tcl_config_sh="$dir/tclConfig.sh"
break
elif test -r "$dir/lib/tclConfig.sh" ; then
tcl_config_sh="$dir/lib/tclConfig.sh"
break
fi
done
fi
fi
AC_MSG_RESULT([${tcl_config_sh}])
if test "x$tcl_config_sh" = "x" ; then
echo "Can't find Tcl configuration script \"tclConfig.sh\""
echo "Reverting to non-Tcl compilation"
usingTcl=
fi
fi
# -----------------------------------------------------------------------
# Find the Tk build configuration file "tkConfig.sh"
# -----------------------------------------------------------------------
if test $usingTcl ; then
AC_MSG_CHECKING([for tkConfig.sh])
tk_config_sh=""
if test "$magic_with_tk" != "yes"; then
#
# Verify that a tkConfig.sh file exists in the directory specified
# by --with-tcl or --with-tk.
#
for dir in \
$magic_with_tk \
$magic_with_tcl
do
if test -r "$dir/tkConfig.sh" ; then
tk_config_sh="$dir/tkConfig.sh"
break
elif test -r "$dir/lib/tkConfig.sh" ; then
tk_config_sh="$dir/lib/tkConfig.sh"
break
elif test -r "$dir/unix/tkConfig.sh" ; then
tk_config_sh="$dir/unix/tkConfig.sh"
break
fi
done
else
#
# Search for Tk configuration file.
#
#
# 1. Search previously named locations.
#
for dir in \
$prefix \
$exec_prefix
do
if test -r "$dir/tkConfig.sh" ; then
tk_config_sh="$dir/tkConfig.sh"
break
elif test -r "$dir/lib/tkConfig.sh" ; then
tk_config_sh="$dir/lib/tkConfig.sh"
break
elif test -r "$dir/unix/tkConfig.sh" ; then
tk_config_sh="$dir/unix/tkConfig.sh"
break
fi
done
#
# 2. Search standard locations.
#
if test "x$tk_config_sh" = "x" ; then
for dir in \
`ls -dr /usr/local/tcl/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
`ls -dr /usr/local/tk/tk[[7-9]].[[0-9]]* 2>/dev/null` \
/usr/local/tcl \
/usr/local/lib \
/usr/lib64 \
/usr/local \
`ls -dr /usr/lib/tcl[[7-9]].[[0-9]]* 2>/dev/null` \
`ls -dr /usr/lib/tk[[7-9]].[[0-9]]* 2>/dev/null` \
/sw/lib \
${x_libraries} \
/usr
do
if test -r "$dir/tkConfig.sh" ; then
tk_config_sh="$dir/tkConfig.sh"
break
elif test -r "$dir/lib/tkConfig.sh" ; then
tk_config_sh="$dir/lib/tkConfig.sh"
break
fi
done
fi
fi
AC_MSG_RESULT([${tk_config_sh}])
if test "x$tk_config_sh" = "x" ; then
echo "can't find Tk configuration script \"tkConfig.sh\""
echo "Reverting to non-Tcl compilation"
usingTcl=
fi
fi
# -----------------------------------------------------------------------
# Source in the Tcl/Tk configuration scripts.
# -----------------------------------------------------------------------
if test $usingTcl ; then
. $tcl_config_sh
. $tk_config_sh
# Should probably trust the config file contents, but this configure
# file checks the Tcl and Tk include and lib directories. Since
# the config file doesn't separate out the libraries from the strings
# passed to the compiler/linker, do it manually here.
#
# Extract TCL_LIB_DIR from TCL_LIB_SPEC
# Extract TK_LIB_DIR from TK_LIB_SPEC
# Extract TCL_INC_DIR from TCL_INCLUDE_SPEC
# Extract TK_INC_DIR from TK_INCLUDE_SPEC
#
# These will be the defaults unless overridden by configure command line
tmpstr=${TCL_LIB_SPEC#*-L}
TCL_LIB_DIR=${tmpstr% -l*}
tmpstr=${TK_LIB_SPEC#*-L}
TK_LIB_DIR=${tmpstr% -l*}
TCL_INC_DIR=${TCL_INCLUDE_SPEC#*-I}
TK_INC_DIR=${TK_INCLUDE_SPEC#*-I}
if test "$TCL_VERSION" = "7.6" -a "$TK_VERSION" = "4.2" ; then
:
elif test "$TCL_VERSION" = "7.5" -a "$TK_VERSION" = "4.1" ; then
:
elif test "$TCL_VERSION" = "$TK_VERSION" ; then
:
else
echo "Mismatched Tcl/Tk versions ($TCL_VERSION != $TK_VERSION)"
echo "Reverting to non-Tcl compile"
usingTcl=
fi
fi
if test $usingTcl ; then
if test "x${magic_with_tcl_includes}" != "x" ; then
if test -r "${magic_with_tcl_includes}/tcl.h" ; then
TCL_INC_DIR=${magic_with_tcl_includes}
else
echo "Can't find tcl.h in \"${magic_with_tcl_includes}\""
echo "Reverting to non-Tcl compile"
usingTcl=
fi
else
for dir in \
${TCL_PREFIX}/include/tcl${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION} \
${TCL_PREFIX}/include \
${TCL_SRC_DIR}/generic \
${TCL_INC_DIR}
do
if test -r "$dir/tcl.h" ; then
TCL_INC_DIR=$dir
break
fi
done
if test "x${TCL_INC_DIR}" = "x" ; then
echo "Can't find tcl.h header file"
echo "Reverting to non-Tcl compile"
usingTcl=
fi
fi
fi
if test $usingTcl ; then
if test "x${magic_with_tk_includes}" != "x" ; then
if test -r "${magic_with_tk_includes}/tk.h" ; then
TK_INC_DIR=${magic_with_tk_includes}
else
echo "Can't find tk.h in \"${magic_with_tk_includes}\""
echo "Reverting to non-Tcl compile"
usingTcl=
fi
else
for dir in \
${TK_PREFIX}/include/tk${TK_MAJOR_VERSION}.${TK_MINOR_VERSION} \
${TK_PREFIX}/include \
${TK_SRC_DIR}/generic \
${TK_INC_DIR} \
${TCL_INC_DIR}
do
if test -r "$dir/tk.h" ; then
TK_INC_DIR=$dir
break
fi
done
if test "x${TK_INC_DIR}" = "x" ; then
echo "Can't find tk.h header file"
echo "Reverting to non-Tcl compile"
usingTcl=
fi
fi
fi
# FIXME -- why are we not using TCL_LIB_FILE FROM tclConfig.sh?
if test $usingTcl ; then
case $target in
*-sunos4*|*-*-netbsd*|NetBSD-*|FreeBSD-*|OpenBSD-*)
TCL_LIB_NAME="tcl${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}"
TK_LIB_NAME="tk${TK_MAJOR_VERSION}${TK_MINOR_VERSION}"
;;
*)
TCL_LIB_NAME="tcl${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}"
TK_LIB_NAME="tk${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}"
;;
esac
loclib=`echo ${TCL_LIB_SPEC} | sed -e 's/.*-L//' -e 's/ .*//'`
if test "x${TCL_LIB_SPEC}" = "x" ; then
TCL_LIB_SPEC="-l${TCL_LIB_NAME}"
fi
if test "x${TK_LIB_SPEC}" = "x" ; then
TK_LIB_SPEC="-l${TK_LIB_NAME}"
fi
# Find the version of "wish" that corresponds to TCL_EXEC_PREFIX
# We really ought to run "ldd" to confirm that the linked libraries match.
if test "x${magic_with_wish_binary}" = "x" ; then
AC_MSG_CHECKING([for wish executable])
for dir in \
${TK_EXEC_PREFIX}/bin \
${TK_EXEC_PREFIX}
do
for wishexe in \
wish-X11 \
wish \
wish${TK_VERSION} \
wish.exe \
wish${TK_VERSION}.exe
do
if test -r "$dir/$wishexe" ; then
WISH_EXE=$dir/$wishexe
break
fi
done
if test "x${WISH_EXE}" != "x" ; then
break
fi
done
if test "x${WISH_EXE}" = "x" ; then
echo "Warning: Can't find executable for \"wish\". You may have to"
echo "manually set the value for WISH_EXE in the magic startup script."
AC_MSG_RESULT(no)
else
AC_MSG_RESULT([${WISH_EXE}])
fi
else
WISH_EXE=${magic_with_wish_binary}
fi
# Find the version of "tclsh" that corresponds to TCL_EXEC_PREFIX
AC_MSG_CHECKING([for tclsh executable])
for dir in \
${TK_EXEC_PREFIX}/bin \
${TK_EXEC_PREFIX}
do
for tclshexe in \
tclsh \
tclsh${TK_VERSION} \
tclsh.exe \
tclsh${TK_VERSION}.exe
do
if test -r "$dir/$tclshexe" ; then
TCLSH_EXE=$dir/$tclshexe
break
fi
done
if test "x${TCLSH_EXE}" != "x" ; then
break
fi
done
if test "x${TCLSH_EXE}" = "x" ; then
echo "Warning: Can't find executable for \"tclsh\"."
AC_MSG_RESULT(no)
else
AC_MSG_RESULT([${TCLSH_EXE}])
fi
# Have to define SHDLIB_EXT here even though we have to do it below, too.
case $target in
*-hpux*)
SHDLIB_EXT=".sl"
SHDLIB_EXT_ALT=".sl"
;;
*cygwin*)
SHDLIB_EXT=".dll"
SHDLIB_EXT_ALT=".dll.a"
;;
*darwin*)
SHDLIB_EXT=".dylib"
SHDLIB_EXT_ALT=".dylib"
;;
*)
SHDLIB_EXT=".so"
SHDLIB_EXT_ALT=".so"
;;
esac
if test "x${magic_with_tcl_libraries}" != "x" ; then
for libname in \
"${magic_with_tcl_libraries}/${TCL_LIB_FILE}" \
"${magic_with_tcl_libraries}/lib${TCL_LIB_FILE}" \
"${magic_with_tcl_libraries}/lib${TCL_LIB_NAME}${SHDLIB_EXT}" \
"${magic_with_tcl_libraries}/lib${TCL_LIB_NAME}${SHDLIB_EXT_ALT}"
do
if test -r "$libname" ; then
TCL_LIB_DIR="${magic_with_tcl_libraries}"
break
fi
done
if test "x${TCL_LIB_DIR}" = "x" ; then
echo "Can't find tcl library in \"${magic_with_tcl_libraries}\""
echo "Reverting to non-Tcl compile"
usingTcl=
fi
else
for libname in \
"${loclib:=${TCL_EXEC_PREFIX}/lib}/lib${TCL_LIB_NAME}${SHDLIB_EXT}" \
"${loclib:=${TCL_EXEC_PREFIX}/lib}/lib${TCL_LIB_NAME}${SHDLIB_EXT_ALT}" \
"${loclib:=${TCL_EXEC_PREFIX}/lib64}/lib${TCL_LIB_NAME}${SHDLIB_EXT}"
do
if test -r "$libname" ; then
TCL_LIB_DIR="${TCL_EXEC_PREFIX}/lib"
break
fi
done
if test "x${TCL_LIB_DIR}" = "x" ; then
echo "Can't find tcl library"
echo "Reverting to non-Tcl compile"
usingTcl=
fi
fi
fi
if test $usingTcl ; then
if test "x${magic_with_tk_libraries}" != "x" ; then
for libname in \
"${magic_with_tk_libraries}/${TCL_LIB_FILE}" \
"${magic_with_tk_libraries}/lib${TCL_LIB_FILE}" \
"${magic_with_tk_libraries}/lib${TK_LIB_NAME}${SHDLIB_EXT}" \
"${magic_with_tk_libraries}/lib${TK_LIB_NAME}${SHDLIB_EXT_ALT}"
do
if test -r "$libname" ; then
TK_LIB_DIR="${magic_with_tk_libraries}"
break
fi
done
if test "x${TK_LIB_DIR}" = "x" ; then
echo "Can't find tk library in \"${magic_with_tk_libraries}\""
echo "Reverting to non-Tcl compile"
usingTcl=
fi
else
for libname in \
"${loclib:=${TK_EXEC_PREFIX}/lib}/lib${TK_LIB_NAME}${SHDLIB_EXT}" \
"${loclib:=${TK_EXEC_PREFIX}/lib}/lib${TK_LIB_NAME}${SHDLIB_EXT_ALT}" \
"${loclib:=${TK_EXEC_PREFIX}/lib64}/lib${TK_LIB_NAME}${SHDLIB_EXT}"
do
if test -r "$libname" ; then
TK_LIB_DIR="${TK_EXEC_PREFIX}/lib"
break
fi
done
if test "x${TK_LIB_DIR}" = "x" ; then
echo "Can't find tk library"
echo "Reverting to non-Tcl compile"
usingTcl=
fi
fi
fi
dnl ----------------------------------------------------
dnl End of Tcl/Tk search
dnl ----------------------------------------------------
dnl OpenAccess database support.
dnl There should be some checks here to confirm that the libraries
dnl are there, and usable.
dnl There is no default search path here. Is there a default
dnl installation location for the OpenAccess libraries and include
dnl files?
AC_ARG_WITH(openaccess,
[ --with-openaccess=DIR use OpenAccess libraries in DIR], [
if test "$withval" = "no" -o "$withval" = "NO" ; then
OA=
OA_LIBS=
unused="$unused oa"
elif test "$withval" = "yes"; then
AC_MSG_ERROR([path to OpenAccess libraries is required])
OA=
OA_LIBS=
unused="$unused oa"
else
usingOA=1
OA=${withval}
OA_LIBS="-L\${OA}/lib -loaDB -loaDD -loaTC -loaBase"
OA_LIBS="${OA_LIBS} -lclalite_sh -lcls_sh -lcdsCommon_sh"
AC_DEFINE(OPENACCESS)
LD_RUN_PATH="-Wl,-rpath=\${OA}/lib"
modules="$modules oa"
extra_libs="$extra_libs \${MAGICDIR}/oa/liboa.o"
fi
])
AC_ARG_ENABLE(memdebug,
[ --enable-memdebug enable memory debugging],
[],
[enable_memdebug=no])
if test "x$enable_memdebug" = "xyes" ; then
if test "x$magic_with_tcl" = "x" ; then
LIBS="${LIBS} -lefence"
else
AC_DEFINE(TCL_MEM_DEBUG)
fi
fi
AC_ARG_ENABLE(modular,
[ --enable-modular embed ext2sim and ext2spice packages],
[],
[enable_modular=no])
if test "x$enable_modular" = "xyes" ; then
AC_DEFINE(EXT2SPICE_AUTO)
AC_DEFINE(EXT2SIM_AUTO)
else
modules="$modules ext2sim ext2spice"
extra_libs="$extra_libs \${MAGICDIR}/ext2sim/libext2sim.o"
extra_libs="$extra_libs \${MAGICDIR}/ext2spice/libext2spice.o"
fi
AC_ARG_ENABLE(locking,
[ --disable-locking disable file locking],
[],
[enable_locking=yes])
if test "x$enable_locking" = "xyes" ; then
case $target in
*cygwin*)
;;
*)
AC_DEFINE(FILE_LOCKS)
;;
esac
fi
AC_ARG_ENABLE(calma,
[ --disable-calma disable calma package],
[],
[enable_calma=yes])
if test "x$enable_calma" = "xyes" ; then
AC_DEFINE(CALMA_MODULE)
modules="$modules calma"
extra_libs="$extra_libs \${MAGICDIR}/calma/libcalma.o"
else
unused="$unused calma"
fi
AC_ARG_ENABLE(cif,
[ --disable-cif disable cif package],
[],
[enable_cif=yes])
if test "x$enable_cif" = "xyes" ; then
AC_DEFINE(CIF_MODULE)
modules="$modules cif"
extra_libs="$extra_libs \${MAGICDIR}/cif/libcif.o"
else
unused="$unused cif"
fi
AC_ARG_ENABLE(client-render,
[ --disable-client-render disable OpenGL client-side rendering],
[],
[enable_client_render=yes])
if test "x$enable_client_render" = "xno" ; then
AC_DEFINE(OGL_SERVER_SIDE_ONLY)
fi
AC_ARG_ENABLE(invert-y,
[ --enable-invert-y invert screen top to bottom in OpenGL],
[],
[enable_invert_y=no])
if test "x$enable_invert_y" = "xyes" ; then
AC_DEFINE(OGL_INVERT_Y)
fi
AC_ARG_ENABLE(framebuffer-backing-store,
[ --disable-framebuffer-backing-store disable OpenGL framebuffer backing store],
[],
[enable_framebuffer_backing_store=yes])
if test "x$enable_framebuffer_backing_store" != "xyes" ; then
AC_DEFINE(X11_BACKING_STORE)
fi
AC_ARG_ENABLE(plot,
[ --disable-plot disable plot package],
[],
[enable_plot=yes])
if test "x$enable_plot" = "xyes" ; then
AC_DEFINE(PLOT_MODULE)
modules="$modules plot"
extra_libs="$extra_libs \${MAGICDIR}/plot/libplot.o"
else
unused="$unused plot"
fi
AC_ARG_ENABLE(lef,
[ --disable-lef disable LEF package],
[],
[enable_lef=yes])
if test "x$enable_lef" = "xyes" ; then
AC_DEFINE(LEF_MODULE)
modules="$modules lef"
extra_libs="$extra_libs \${MAGICDIR}/lef/liblef.o \${MAGICDIR}/extflat/libextflat.o"
else
unused="$unused lef"
fi
dnl The readline code is incompatible with Tcl/Tk, which has its own
dnl readline-like interface, so regardless of the setting of this
dnl option, if Tcl/Tk support is enabled, it will always be disabled.
AC_ARG_ENABLE(readline,
[ --disable-readline disable readline package],
[ if test $usingTcl ; then
enable_readline=no
fi
],
[ if test $usingTcl ; then
enable_readline=no
else
enable_readline=yes
fi
])
use_system_readline=yes
use_bundled_readline=auto
AC_ARG_ENABLE(readline-bundled,
[ --enable-readline-bundled enable readline bundled package],
[ use_bundled_readline=yes
], [
use_bundled_readline=no
])
if test "x$enable_readline" = "xyes" ; then
AC_DEFINE(USE_READLINE)
if test $use_bundled_readline != yes ; then
AC_CHECK_LIB(readline, rl_pre_input_hook,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no)
AC_CHECK_LIB(readline, rl_username_completion_function,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no)
AC_CHECK_LIB(readline, rl_filename_completion_function,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no)
AC_CHECK_LIB(readline, rl_attempted_completion_over,[
dnl noop, prevent default action LIBS+=-lreadline
],
use_system_readline=no)
fi
if test $use_system_readline = yes && test $use_bundled_readline != yes; then
AC_DEFINE(HAVE_READLINE)
rl_libs="-lreadline"
use_bundled_readline=
else
echo "Using bundled readline"
AC_DEFINE(NEED_READLINE)
# not readline/libhistory.a (seems subset of libreadline.a)
rl_libs="\${MAGICDIR}/readline/libreadline.a"
CPPFLAGS="$CPPFLAGS -I\${MAGICDIR}/readline"
use_bundled_readline=1
AC_CHECK_LIB(termcap, tgetent, [
rl_libs="$rl_libs -ltermcap"
], [
AC_CHECK_LIB(ncurses, tgetent, [
rl_libs="$rl_libs -lncurses"
], )
], )
modules="$modules readline"
fi
else
unused="$unused readline"
fi
AC_ARG_ENABLE(threads,
[ --disable-threads disable threaded graphics],
[ if test $usingTcl ; then
enable_threads=no
fi
],
[ if test $usingTcl ; then
enable_threads=no
else
enable_threads=yes
fi
])
if test "x$enable_threads" = "xyes" ; then
if test $usingX11 ; then
usingThreads=1
AC_DEFINE(HAVE_PTHREADS)
gr_libs="$gr_libs -lpthread"
gr_srcs="$gr_srcs \${X11THREAD_SRCS}"
gr_hsrcs=""
gr_hprog=""
fi
fi
AC_ARG_ENABLE(route,
[ --disable-route disable routing package],
[],
[enable_route=yes])
if test "x$enable_route" = "xyes" ; then
AC_DEFINE(ROUTE_MODULE)
modules="$modules garouter grouter irouter mzrouter router gcr"
programs="$programs net2ir"
extra_libs="$extra_libs \${MAGICDIR}/garouter/libgarouter.o \
\${MAGICDIR}/mzrouter/libmzrouter.o \${MAGICDIR}/router/librouter.o \
\${MAGICDIR}/irouter/libirouter.o \${MAGICDIR}/grouter/libgrouter.o \
\${MAGICDIR}/gcr/libgcr.o"
else
unused="$unused garouter grouter irouter mzrouter router gcr"
fi
AC_ARG_ENABLE(rsim,
[ --disable-rsim disable IRSIM tool],
[ if test $usingTcl ; then
enable_rsim=no
fi
],
[ if test $usingTcl ; then
enable_rsim=no
else
enable_rsim=yes
fi
])
if test "x$enable_rsim" = "xyes" ; then
AC_DEFINE(RSIM_MODULE)
fi
AC_ARG_ENABLE(new-macros,
[ --disable-new-macros disable new macro set],
[],
[enable_new_macros=yes])
if test "x$enable_new_macros" = "xyes" ; then
AC_DEFINE(USE_NEW_MACROS)
fi
AC_ARG_WITH(opengl,
[ --with-opengl=DIR use OpenGL include files in DIR], [
if test "$withval" = "no" -o "$withval" = "NO" ; then
usingOGL=
elif test "$withval" != "no" -a "$withval" != "yes"; then
OGL_INCLUDE_DIR=${withval}
fi
])
dnl ----------------------------------------------------------------
dnl Check for OpenGL headers and libraries, if OpenGL was specified.
dnl If they cannot be found, then disable OpenGL and flag a warning.
dnl ----------------------------------------------------------------
if test $usingOGL ; then
ac_save_CPPFLAGS="$CPPFLAGS"
if test $OGL_INCLUDE_DIR ; then
CPPFLAGS="$CPPFLAGS -I$OGL_INCLUDE_DIR"
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
AC_CHECK_HEADER(GL/gl.h, , [
echo "GL header files not found, disabling OpenGL"
usingOGL=
],)
CPPFLAGS="$ac_save_CPPFLAGS"
fi
if test $usingOGL ; then
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS -lm"
AC_CHECK_LIB(GL, glXCreateContext, , [
echo "GL library files not found, disabling OpenGL"
usingOGL=
],)
AC_CHECK_LIB(GLU, gluNewTess, [
usingGLU=1
use_libglu="-lGLU"
], [
echo "GLU library files not found; disabling font rendering"
use_libglu=""
],)
CPPFLAGS="$ac_save_CPPFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
fi
if test "x$use_libglu" != "x" ; then
AC_DEFINE(VECTOR_FONTS)
usingGLU=1
fi
if test $usingOGL ; then
if test $OGL_INCLUDE_DIR ; then
gr_cflags="${gr_cflags} -I${OGL_INCLUDE_DIR}"
fi
fi
dnl ----------------------------------------------------------------
dnl Check for cairo graphics headers and libraries
dnl ----------------------------------------------------------------
AC_ARG_WITH(cairo,
[ --with-cairo=DIR use Cairo include files in DIR], [
if test "$withval" = "no" -o "$withval" = "NO" ; then
usingCairo=
elif test "$withval" != "no" -a "$withval" != "yes"; then
CAIRO_INCLUDE_DIR=${withval}
fi
])
if test $usingCairo ; then
ac_save_CPPFLAGS="$CPPFLAGS"
if test $CAIRO_INCLUDE_DIR ; then
CPPFLAGS="$CPPFLAGS -I$CAIRO_INCLUDE_DIR"
fi
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
AC_CHECK_HEADER(cairo/cairo.h, , [
echo "Cairo header files not found, disabling Cairo"
usingCairo=
],)
CPPFLAGS="$ac_save_CPPFLAGS"
fi
if test $usingCairo ; then
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS -lm"
AC_CHECK_LIB(cairo, cairo_user_to_device, , [
echo "Cairo library files not found, disabling Cairo"
usingCairo=
],)
CPPFLAGS="$ac_save_CPPFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
fi
if test $usingCairo ; then
if test $CAIRO_INCLUDE_DIR ; then
gr_cflags="${gr_cflags} -I${CAIRO_INCLUDE_DIR}"
fi
fi
dnl
AC_ARG_ENABLE(cairo-offscreen,
[ --enable-cairo-offscreen Use Cairo for off-screen rendering],
[enable_cairo_offscreen=yes],
[])
if test "x$enable_cairo_offscreen" = "xyes" ; then
if test $usingCairo ; then
AC_DEFINE(CAIRO_OFFSCREEN_RENDER)
else
echo "Cairo not being compiled in, can't use for offscreen rendering."
fi
fi
dnl ----------------------------------------------------------------
dnl Once we're sure what, if any, interpreter is being compiled,
dnl set all the appropriate definitions. For Tcl/Tk, override
dnl the default install targets: allows compiling tcl version with
dnl "make" instead of requiring "make tcl"
dnl ----------------------------------------------------------------
if test $usingTcl ; then
cadinstall="$cadinstall graphics tcltk"
modules="$modules tcltk"
unused="$unused lisp"
programs="$programs tcltk"
ALL_TARGET="tcl"
INSTALL_TARGET="install-tcl"
AC_DEFINE(MAGIC_WRAPPER)
extra_libs="$extra_libs \${MAGICDIR}/tcltk/libtcltk.o"
extra_defs="$extra_defs -DTCL_DIR=\\\"\${TCLDIR}\\\""
stub_defs="$stub_defs -DUSE_TCL_STUBS -DUSE_TK_STUBS"
elif test $usingScheme ; then
modules="$modules lisp"
unused="$unused tcltk"
cadinstall="$cadinstall lisp"
extra_libs="$extra_libs \${MAGICDIR}/lisp/liblisp.o"
programs="$programs graphics"
AC_DEFINE(SCHEME_INTERPRETER)
else
unused="$unused lisp tcltk"
programs="$programs graphics"
fi
dnl ----------------------------------------------------------------
dnl Handle graphics based on the setting of "usingTcl", "usingX11",
dnl and "usingOGL"
dnl ----------------------------------------------------------------
if test $usingTcl ; then
if test $usingX11 ; then
gr_dflags="$gr_dflags -DX11 -DXLIB"
gr_libs="$gr_libs -lX11"
gr_srcs="$gr_srcs \${TK_SRCS}"
fi
if test $usingOGL ; then
AC_DEFINE(THREE_D)
gr_dflags="$gr_dflags -DOGL"
gr_libs="$gr_libs -lGL ${use_libglu} ${use_libxi} ${use_libxmu} ${use_libxext} -lm"
gr_srcs="$gr_srcs \${TOGL_GL_SRCS} \${TOGL_GLU_SRCS} \${THREE_D_GL_SRCS}"
if ! test $usingX11 ; then
usingX11=1
gr_dflags="$gr_dflags -DXLIB"
gr_libs="$gr_libs -lX11"
fi
fi
if test $usingCairo ; then
gr_dflags="$gr_dflags -DCAIRO"
gr_libs="$gr_libs -lcairo -lfontconfig -lfreetype"
gr_srcs="$gr_srcs \${TCAIRO_SRCS}"
if ! test $usingX11 ; then
usingX11=1
gr_dflags="$gr_dflags -DXLIB"
gr_libs="$gr_libs -lX11"
fi
fi
gr_srcs="$gr_srcs \${TKCOMMON_SRCS}"
else
if test $usingX11 ; then
gr_dflags="$gr_dflags -DX11 -DXLIB"
gr_libs="$gr_libs -lX11"
gr_srcs="$gr_srcs \${X11_SRCS}"
fi
if test $usingOGL ; then
gr_dflags="$gr_dflags -DOGL"
gr_libs="$gr_libs -lGL ${use_libglu} ${use_libxi} ${use_libxmu} ${use_libxext} -lm"
gr_srcs="$gr_srcs \${OGL_GL_SRCS} \${OGL_GLU_SRCS}"
if ! test $usingX11 ; then
usingX11=1
gr_libs="$gr_libs -lX11"
gr_dflags="$gr_dflags -DXLIB"
fi
fi
if test $usingX11 ; then
if ! test $usingThreads; then
gr_dflags="$gr_dflags -DX11HELP_PROG=\\\"\${X11HELP_PROG}\\\""
gr_hsrcs="$gr_hsrcs \${X11HELPER_SRCS}"
gr_hprog="$gr_hprog \${X11HELP_PROG}"
fi
fi
fi
if test $usingX11 ; then
gr_libs="$gr_libs \${X11_LDFLAGS}"
fi
dnl We use GR_LIBS for graphics but some autoconf helpers might edit LIBS
dnl remove "-lcairo" from LIBS if present in GR_LIBS
for find in \
cairo X11 GL GLU fontconfig freetype
do
if echo "$gr_libs" | grep -q -- "\-l${find}" ; then
dnl Not all sed support wildcard '\?'
LIBS=`echo "$LIBS" | sed -e "s/\-l${find} \?//" | tr -d '\n'`
LIBS=`echo "$LIBS" | sed -e "s/\-l${find} //" | tr -d '\n'`
LIBS=`echo "$LIBS" | sed -e "s/\-l${find}//" | tr -d '\n'`
fi
done
dnl ----------------------------------------------------------------
dnl Define system-specific settings
dnl ----------------------------------------------------------------
case $target in
*-linux*)
AC_DEFINE(linux)
AC_DEFINE(SYSV)
dnl Defining "ISC" prevents compiler failure on redefinition of "wchar_t"
AC_DEFINE(ISC)
dnl 64-bit support for AMD Opteron
case $target in
*x86_64*)
CFLAGS="${CFLAGS} -m64 -fPIC -Werror=implicit-function-declaration"
;;
esac
if test $usingOGL ; then
gr_libs="$gr_libs -lstdc++"
fi
if test -f /usr/lib/libbsd-compat.a ; then
gr_libs="$gr_libs -lbsd-compat"
elif test -f /usr/lib/libbsd.a ; then
gr_libs="$gr_libs -lbsd"
fi
;;
*-emscripten*)
AC_DEFINE(linux)
CFLAGS="${CFLAGS} -fPIC -Werror=implicit-function-declaration -Wno-int-conversion -Wno-implicit-int"
;;
*solaris*)
AC_DEFINE(SYSV)
;;
*irix*)
AC_DEFINE(SYSV)
AC_DEFINE(IRIX)
AC_DEFINE(_BSD_SIGNALS)
;;
*sysv*)
AC_DEFINE(SYSV)
;;
*cygwin*)
AC_DEFINE(CYGWIN)
AC_DEFINE(i386)
;;
*darwin*)
if test "$CPP" = "cc -E" ; then
CPPFLAGS="$CPPFLAGS -no-cpp-precomp"
fi
AC_DEFINE(_FORTIFY_SOURCE, 0, [Avoid checks on string overruns])
;;
esac
# -----------------------------------------------------------------------
# Tcl/Tk configuration
# -----------------------------------------------------------------------
if test $usingTcl ; then
LIB_SPECS_NOSTUB="${LIB_SPECS}"
LIB_SPECS_GRNULL="${LIB_SPECS}"
# -----------------------------------------------------------------------
#
# Tk libraries and header files
#
# -----------------------------------------------------------------------
if test "${TK_INC_DIR}" != "/usr/include" ; then
INC_SPECS="${INC_SPECS} -I${TK_INC_DIR}"
fi
if test "${TK_LIB_DIR}" = "/usr/lib" -o \
"${TK_LIB_DIR}" = "/usr/lib64" ; then
LIB_SPECS_NOSTUB="${LIB_SPECS_NOSTUB} ${TK_LIB_SPEC}"
LIB_SPECS="${LIB_SPECS} ${TK_STUB_LIB_SPEC}"
else
LIB_SPECS_NOSTUB="${LIB_SPECS_NOSTUB} -L${TK_LIB_DIR} ${TK_LIB_SPEC}"
LIB_SPECS="${LIB_SPECS} -L${TK_LIB_DIR} ${TK_STUB_LIB_SPEC}"
if test "x${loader_run_path}" = "x" ; then
loader_run_path="${TK_LIB_DIR}"
else
loader_run_path="${TK_LIB_DIR}:${loader_run_path}"
fi
fi
# -----------------------------------------------------------------------
#
# Tcl libraries and header files
#
# Add a header file directory specification only if the Tcl headers reside
# in a different directory from Tk's.
#
#
# -----------------------------------------------------------------------
if test "${TCL_INC_DIR}" != "/usr/include" -a \
"${TCL_INC_DIR}" != "${TK_INC_DIR}" ; then
INC_SPECS="${INC_SPECS} -I${TCL_INC_DIR}"
fi
if test "${TCL_LIB_DIR}" = "/usr/lib" -o \
"${TCL_LIB_DIR}" = "/usr/lib64" -o \
"${TCL_LIB_DIR}" = "${TK_LIB_DIR}" ; then
LIB_SPECS_NOSTUB="${LIB_SPECS_NOSTUB} ${TCL_LIB_SPEC}"
LIB_SPECS_GRNULL="${LIB_SPECS_GRNULL} ${TCL_LIB_SPEC}"
LIB_SPECS="${LIB_SPECS} ${TCL_STUB_LIB_SPEC}"
else
LIB_SPECS_NOSTUB="${LIB_SPECS_NOSTUB} -L${TCL_LIB_DIR} ${TCL_LIB_SPEC}"
LIB_SPECS_GRNULL="${LIB_SPECS_GRNULL} -L${TCL_LIB_DIR} ${TCL_LIB_SPEC}"
LIB_SPECS="${LIB_SPECS} -L${TCL_LIB_DIR} ${TCL_STUB_LIB_SPEC}"
if test "x${loader_run_path}" = "x" ; then
loader_run_path="${TCL_LIB_DIR}"
else
loader_run_path="${TCL_LIB_DIR}:${loader_run_path}"
fi
fi
#--------------------------------------------------------------------
#
# Check if we can generate shared libraries on this system. Set flags
# to generate shared libraries for systems that we know about. Start
# with the values found in tclConfig.sh, make changes as we know about
# the different systems.
#
#--------------------------------------------------------------------
# Initialize shared library build variables
SHLIB_LD=""
LDDL_FLAGS="-shared"
SHDLIB_EXT=".so"
EXTRA_LIB_SPECS=""
build_shared="yes"
case $target in
*-aix4.[[2-9]]*)
# No Position-Independent flags needed
# Use the installed export file or the one found in the source directory.
if test -r "${TCL_LIB_DIR}/lib${TCL_LIB_NAME}.exp" ; then
tcl_exp="${TCL_LIB_DIR}/lib${TCL_LIB_NAME}.exp"
else
tcl_exp="${TCL_SRC_DIR}/unix/lib.exp"
fi
if test -r "${TK_LIB_DIR}/lib${TK_LIB_NAME}.exp" ; then
tk_exp="${TK_LIB_DIR}/lib${TK_LIB_NAME}.exp"
else
tk_exp="${TK_SRC_DIR}/unix/lib.exp"
fi
full_src_path=`cd ${srcdir}; pwd`
# Use shell-script to link shared library
LD="${full_src_path}/cf/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry -bI:${tk_exp} -bI:${tcl_exp}"
SHLIB_LIB_SPECS="${aix_lib_specs} -lc"
LDFLAGS="-L${loader_run_path}"
EXTRA_LIB_SPECS="-ldl"
;;
*-aix*)
# No Position-Independent flags needed
# Use the installed export file or the one found in the source directory.
if test -r "${TCL_LIB_DIR}/lib${TCL_LIB_NAME}.exp" ; then
tcl_exp="${TCL_LIB_DIR}/lib${TCL_LIB_NAME}.exp"
else
tcl_exp="${TCL_SRC_DIR}/unix/lib.exp"
fi
if test -r "${TK_LIB_DIR}/lib${TK_LIB_NAME}.exp" ; then
tk_exp="${TK_LIB_DIR}/lib${TK_LIB_NAME}.exp"
else
tk_exp="${TK_SRC_DIR}/unix/lib.exp"
fi
full_src_path=`cd ${srcdir}/cf; pwd`
# Use shell-script to link shared library
LD="${full_src_path}/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry -bI:${tk_exp} -bI:${tcl_exp}"
SHLIB_LIB_SPECS="${aix_lib_specs} -lc"
LDFLAGS="-L${loader_run_path}"
EXTRA_LIB_SPECS="-lld"
;;
*-bsdi2*|*-bsdi3*)
LD="shlicc"
LDDL_FLAGS="-r"
EXTRA_LIB_SPECS="-ldl"
;;
*darwin*)
SHDLIB_EXT=".dylib"
LDDL_FLAGS="-dynamiclib -undefined dynamic_lookup"
LDFLAGS="${LDFLAGS} ${LIB_SPECS}"
CFLAGS="${CFLAGS} ${X_CFLAGS} ${INC_SPECS}"
;;
*cygwin*)
SHDLIB_EXT=".dll"
AC_DEFINE(USE_DL_IMPORT)
LDDL_FLAGS='-shared -Wl,--enable-auto-image-base'
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -Wl,-rpath,${loader_run_path}"
fi
ld_extra_libs=${LIB_SPECS}
sub_extra_libs='-L${MAGICDIR}/magic -ltclmagic'
;;
*-bsdi4*)
SHLIB_CFLAGS="-export-dynamic -fPIC"
LDDL_FLAGS='-shared -Wl,-E -Wl,-soname,$@'
;;
*-dgux*)
SHLIB_CFLAGS="-K PIC"
LDDL_FLAGS="-G"
EXTRA_LIB_SPECS="-ldl"
;;
*-hpux*)
if test "$GCC" = "no" ; then
AC_DEFINE(_HPUX_SOURCE)
fi
AC_CHECK_LIB(dld, shl_load, [found=yes], [found=no])
if test "${found}" = "yes" ; then
SHLIB_CFLAGS="+z"
LDDL_FLAGS="-b -E -n +s +b,${loader_run_path}:."
SHDLIB_EXT=".sl"
# The run path is included in both LDFLAGS and LDDL_FLAGS
# because SHLIB_LD is ld and LD is cc/gcc.
LDFLAGS="-Wl,-E -Wl,+s,+b,${loader_run_path}:."
EXTRA_LIB_SPECS="-ldld"
fi
;;
*-irix64-6.5*)
LDDL_FLAGS="-32 -shared -rdata_shared"
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -Wl,-rpath,${loader_run_path}"
fi
;;
*-irix-[56].*|*-irix64-*)
LDDL_FLAGS="-shared -rdata_shared"
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -Wl,-rpath,${loader_run_path}"
fi
LDFLAGS=""
if test "$GCC" = "yes" ; then
SHLIB_CFLAGS="-mabi=n32 $SHLIB_CFLAGS"
LDDL_FLAGS="-mabi=n32 $LDDL_FLAGS"
LDFLAGS="-mabi=n32 $LDFLAGS"
else
CFLAGS="-n32 $CFLAGS"
LDFLAGS="-n32 $LDFLAGS"
fi
;;
*-linux*)
LDDL_FLAGS='-shared -Wl,-soname,$@'
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -Wl,-rpath,${loader_run_path}"
fi
LDFLAGS=""
EXTRA_LIB_SPECS="-ldl"
;;
*-mp-ras-02*)
SHLIB_CFLAGS="-G -K PIC"
LDDL_FLAGS=""
;;
*-mp-ras-*)
SHLIB_CFLAGS="-G -K PIC"
LDDL_FLAGS="-Wl,-Bexport"
;;
*-ncr-sysv4-*2*)
SHLIB_CFLAGS="-K PIC"
LDDL_FLAGS="-G"
EXTRA_LIB_SPECS="-ldl"
;;
*-ncr-sysv4*)
SHLIB_CFLAGS="-K PIC"
LDDL_FLAGS="-G -Wl,-Bexport"
LDFLAGS="-Wl,-Bexport"
EXTRA_LIB_SPECS="-ldl"
;;
*-freebsd*)
# Not available on all versions: check for include file.
SHLIB_CFLAGS="-fpic"
LDDL_FLAGS="-shared ${LIB_SPECS}"
;;
*-netbsd*)
# Not available on all versions: check for include file.
AC_CHECK_HEADER(dlfcn.h, test_ok=yes, test_ok=no)
if test "$test_ok" = yes; then
SHLIB_CFLAGS="-fPIC"
LDDL_FLAGS="-shared ${LIB_SPEC}"
fi
;;
*-openbsd*)
SHLIB_CFLAGS="-fPIC"
LDDL_FLAGS="-shared ${LIB_SPEC}"
;;
*-nextstep*)
LDDL_FLAGS="-nostdlib -r"
;;
*-osf1-1.[012]*)
# OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1
# Warning: Ugly Makefile Hack
# Make package name same as library name
SHLIB_LD='ld -R -export $@:'
;;
*-osf1-1.*)
# OSF/1 1.3 from OSF using ELF, and derivatives, including AD2
SHLIB_CFLAGS="-fpic"
SHLIB_LD="ld -shared"
;;
*-osf1V*)
# Digital OSF/1
LDDL_FLAGS='-shared -expect_unresolved "*"'
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -Wl,-rpath,${loader_run_path}"
fi
LDFLAGS=""
;;
*-sco*)
# Note, dlopen is available only on SCO 3.2.5 and greater. However,
# this test works, since "uname -s" was non-standard in 3.2.4 and
# below.
SHLIB_CFLAGS="-Kpic -belf"
LDDL_FLAGS="-G"
LDFLAGS="-belf -Wl,-Bexport"
;;
*-sni-sysv*)
SHLIB_CFLAGS="-K PIC"
LDDL_FLAGS="-G"
EXTRA_LIB_SPECS="-ldl"
;;
*-sunos4*)
SHLIB_CFLAGS="-PIC"
LDDL_FLAGS="-assert pure-text"
EXTRA_LIB_SPECS="-ldl"
;;
*-solaris2*)
if test "$with_gnu_ld" = "yes" ; then
LDDL_FLAGS='-shared -Wl,-E -Wl,-soname,$@ ${LIB_SPEC}'
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -Wl,-rpath,${loader_run_path}"
fi
else
LDDL_FLAGS="-shared -mimpure-text"
if test "x${loader_run_path}" != "x" ; then
LD_RUN_PATH="${LD_RUN_PATH} -R ${loader_run_path}"
fi
fi
EXTRA_LIB_SPECS="-ldl"
;;
*-mips-dde-sysv*)
SHLIB_CFLAGS="-KPIC"
LDDL_FLAGS="-G"
EXTRA_LIB_SPECS="-ldl"
;;
*-pc-sysv4* | *-unixware-5*)
SHLIB_CFLAGS="-G -KPIC"
LDDL_FLAGS=" -Wl,-Bexport"
;;
esac
# If we're running gcc, then set SHLIB_CFLAGS flags for compiling
# shared libraries for gcc, instead of those of the vendor's compiler.
if test "$GCC" = "yes" ; then
case $target in
*cygwin*)
;;
*)
SHLIB_CFLAGS="-Wimplicit-int -fPIC"
;;
esac
fi
if test "$with_gnu_ld" = "yes" ; then
LDDL_FLAGS="${LDDL_FLAGS} -Wl,--version-script=\${MAGICDIR}/magic/symbol.map"
fi
AC_SUBST(SHDLIB_EXT)
AC_SUBST(SHLIB_LD)
AC_SUBST(LD)
AC_SUBST(LDDL_FLAGS)
AC_SUBST(SHLIB_LIB_SPECS)
AC_SUBST(EXTRA_LIB_SPECS)
AC_SUBST(LDFLAGS)
AC_SUBST(ZLIB_FLAG)
AC_SUBST(INC_SPECS)
AC_SUBST(LIB_SPECS)
AC_SUBST(LIB_SPECS_NOSTUB)
AC_SUBST(LIB_SPECS_GRNULL)
AC_SUBST(WISH_EXE)
AC_SUBST(TCLSH_EXE)
AC_SUBST(TCL_LIB_DIR)
fi
if test "$GCC" = "yes" ; then
DEPEND_FLAG="-MM"
fi
dnl Substitute all variables
AC_SUBST(gr_libs)
AC_SUBST(PACKAGE)
AC_SUBST(SCRIPTS)
AC_SUBST(extra_libs)
AC_SUBST(extra_defs)
AC_SUBST(stub_defs)
AC_SUBST(DEBUG_defs)
AC_SUBST(NDEBUG_defs)
AC_SUBST(ld_extra_libs)
AC_SUBST(ld_extra_objs)
AC_SUBST(top_extra_libs)
AC_SUBST(sub_extra_libs)
AC_SUBST(modules)
AC_SUBST(unused)
AC_SUBST(programs)
AC_SUBST(cadinstall)
AC_SUBST(DIST_DIR)
AC_SUBST(rl_defs)
AC_SUBST(rl_libs)
AC_SUBST(gr_cflags)
AC_SUBST(gr_dflags)
AC_SUBST(gr_libs)
AC_SUBST(gr_srcs)
AC_SUBST(gr_hsrcs)
AC_SUBST(gr_hprog)
AC_SUBST(X_CFLAGS)
AC_SUBST(X_EXTRA_LIBS)
AC_SUBST(X_LIBS)
AC_SUBST(X_PRE_LIBS)
AC_SUBST(CPPFLAGS)
AC_SUBST(CFLAGS)
AC_SUBST(DEPEND_FLAG)
AC_SUBST(SHLIB_CFLAGS)
AC_SUBST(LD_RUN_PATH)
AC_SUBST(MCPP)
AC_SUBST(MSED)
AC_SUBST(OA)
AC_SUBST(OA_LIBS)
AC_SUBST(ALL_TARGET)
AC_SUBST(INSTALL_TARGET)
AC_SUBST(MAKE_TCL, [$usingTcl])
AC_SUBST(MAKE_X11, [$usingX11])
AC_SUBST(MAKE_GL, [$usingOGL])
AC_SUBST(MAKE_GLU, [$usingGLU])
AC_SUBST(MAKE_CAIRO, [$usingCairo])
AC_SUBST(MAKE_READLINE, [$use_bundled_readline])
AC_CONFIG_FILES([defs.mak])
AC_CONFIG_FILES([makedbh], [chmod +x makedbh])
AC_OUTPUT
dnl
dnl Print configuration and report problems
ECHO_N=printf
echo
echo "-----------------------------------------------------------"
echo "Configuration Summary (principle requirements):"
echo
${ECHO_N} "X11: "
if test $usingX11 ; then
echo "yes"
else
echo "no"
echo
echo " Magic requires X11 for all graphics operations. Without it,"
echo " magic can only be run in batch mode using option '-dnull'."
echo " Generally, not finding X11 means that paths to header files"
echo " and/or libraries are missing or in an unexpected place. Try"
echo " using configure options --x-includes=<DIR> and --x-libraries=<DIR>."
echo
fi
${ECHO_N} "Python3: "
if test $usingPython3 ; then
echo "yes"
else
echo "no"
echo
echo " Magic installation will use the gcc preprocessor for forming"
echo " the default SCMOS technology files and the macro definitions."
echo " This usually works, but in case of preprocessor failure, you"
echo " may need python3 installed."
echo
fi
${ECHO_N} "OpenGL: "
if test $usingOGL ; then
echo "yes"
${ECHO_N} "Vector fonts: "
if test "x$use_libglu" != "x" ; then
echo "yes"
else
echo "no"
fi
else
echo "no"
echo
if test $usingCairo ; then
echo " Cairo graphics are available so OpenGL is purely optional."
else
echo " OpenGL graphics are considerably better than the standard 8-bit"
echo " and 24-bit X11 graphics, provided that you have a video card and"
echo " driver supporting accelerated OpenGL graphics. If you get this"
echo " message, you may need to download OpenGL libraries and header"
echo " files, which are usually available from the video card manufacturer."
echo " Magic with un-accelerated OpenGL, such as using Mesa GL without"
echo " a supported graphics card, is usually a very bad combination."
echo
fi
fi
${ECHO_N} "Cairo: "
if test $usingCairo ; then
echo "yes"
else
echo "no"
echo
if test $usingOGL ; then
echo " OpenGL graphics are available so Cairo is purely optional"
echo " unless there are issues with the video card driver's"
echo " implementation of OpenGL."
else
echo " Cairo graphics are considerably better than the standard 8-bit"
echo " and 24-bit X11 graphics, provided that you have a video card and"
echo " driver supporting hardware-accelerated graphics. If you get this"
echo " message, you may need to download Cairo and fontconfig libraries"
echo " and header files, which are usually found in package cairo-devel."
echo
fi
fi
if test $usingTcl ; then
${ECHO_N} "Tcl/Tk: "
echo "yes"
else
if test $usingScheme ; then
${ECHO_N} "Scheme: "
echo "yes"
else
${ECHO_N} "Tcl/Tk: "
echo "no"
echo
echo " Without Tcl/Tk, you cannot run the enhanced version of magic"
echo " with the toolbar and menus, and a number of other functions"
echo " are disabled. If you did not specifically disable Tcl/Tk on"
echo " the configure command line, then getting this message means"
echo " that you do not have Tcl/Tk headers and or libraries installed,"
echo " or they are not in a standard path. Try using configure options"
echo " --with-tcl=<DIR> and --with-tk=<DIR>."
echo
fi
fi
echo "-----------------------------------------------------------"
echo
echo "Use 'make' to compile and 'make install' to install."
echo
echo "-----------------------------------------------------------"
echo
dnl Put "defs.mak" in the top-level directory
cp defs.mak ..