1dnl 2dnl Process this file with autoconf to produce a configure script. 3dnl 4AC_REVISION($Id: configure.in,v 1.15 2004/06/03 23:39:13 patthoyts Exp $) 5dnl 6AC_INIT(Makefile.in) 7 8MEMCHAN_VERSION=2.2.0 9MEMCHAN_MAJOR_VERSION=2 10MEMCHAN_MINOR_VERSION=2 11VERSION=${MEMCHAN_VERSION} 12 13TCL_REQ_MAJOR_VERSION=8 14TCL_REQ_MINOR_VERSION=0 15 16 17dnl 18dnl use location of tclsh (wish?) as default for prefix, exec-prefix 19dnl 20 21AC_PREFIX_PROGRAM(tclsh) 22 23if test "x${prefix}" = "xNONE" 24then 25 prefix=/usr/local 26fi 27if test "x${exec_prefix}" = "xNONE" 28then 29 exec_prefix="${prefix}" 30fi 31 32# ------------------------------------------------------------------- 33 34BUILD_DIR=`pwd` 35cd ${srcdir} 36TOP_DIR=`pwd` 37cd ${BUILD_DIR} 38 39AC_SUBST(TOP_DIR) 40AC_SUBST(BUILD_DIR) 41 42dnl 43dnl ---------------------------------------------------------------- 44dnl let configure understand more options. they allow the caller to 45dnl specify library- and include-directory for Tcl more explicitly. 46dnl 47dnl '--with-tcl=DIR' is a shorthand to 48dnl '-with-tcl-include-dir=DIR/include --with-tcl-lib-dir=DIR/lib' 49dnl 50 51AC_ARG_WITH(tcl, 52 [ --with-tcl=DIR tcl.h resides in DIR/include, libtcl resides in DIR/lib], 53 [TCL_LIB_DIR=$withval/lib; TCL_INCLUDE_DIR=$withval/include], 54 []) 55dnl 56AC_ARG_WITH(tcl-include-dir, 57 [ --with-tcl-include-dir=DIR tcl.h resides in DIR], 58 [TCL_INCLUDE_DIR=$withval], 59 []) 60dnl 61AC_ARG_WITH(tcl-lib-dir, 62 [ --with-tcl-lib-dir=DIR libtcl resides in DIR], 63 [TCL_LIB_DIR=$withval], 64 []) 65 66AC_ARG_ENABLE(shared, 67 [ --disable-shared don't build memchan as a shared library], 68 [ok=$enableval], [ok=yes]) 69 70dnl ---------------------------------------------------------------- 71dnl 72dnl Crossover between --with-tcl-include-dir and --with-tcl-lib-dir 73dnl Setting one, but not the other will cause automatic definition 74dnl of the missing part. 75 76if test "X" = "X$TCL_LIB_DIR" -a "X" != "X$TCL_INCLUDE_DIR" 77then 78 TCL_LIB_DIR="$TCL_INCLUDE_DIR/../lib" 79fi 80 81if test "X" = "X$TCL_INCLUDE_DIR" -a "X" != "X$TCL_LIB_DIR" 82then 83 TCL_INCLUDE_DIR="$TCL_LIB_DIR/../include" 84fi 85 86dnl ---------------------------------------------------------------- 87dnl 88dnl checks for alternative programs: 89dnl GNU cc, cpp, install, ranlib, makeinfo 90dnl 91AC_PROG_CC 92AC_PROG_CPP 93AC_PROG_RANLIB 94dnl 95dnl ---------------------------------------------------------------- 96dnl 97dnl checks for typedefs 98dnl checks for library functions 99dnl checks for compiler characteristics 100dnl ANSI 'const' available, correct ? 101dnl 102dnl 103dnl ---------------------------------------------------------------- 104dnl 105dnl Locate tcl.h 106dnl Searches: 107dnl TCL_INCLUDE_DIR (--with-tcl, --with-tcl-include-dir) 108dnl ../../tcl8.2*/generic (assume tcl source in sibling directory) 109dnl ../../tcl8.1*/generic (assume tcl source in sibling directory) 110dnl ../../tcl8.0/generic (assume tcl source in sibling directory) 111dnl ../../tcl/generic (see above) 112dnl ../../tcl (should be old version) 113dnl $prefix/include (--prefix) 114dnl /usr/local/include 115dnl /usr/include 116dnl 117 118AC_CACHE_CHECK(for directory with tcl.h, 119 memchan_cv_path_TCL_INCLUDE_DIR, 120 [memchan_cv_path_TCL_INCLUDE_DIR="" 121 places="$TCL_INCLUDE_DIR \ 122 ../../tcl8.3.*/generic \ 123 ../../tcl8.3/generic \ 124 ../../tcl8.2.*/generic \ 125 ../../tcl8.2/generic \ 126 ../../tcl8.2b*/generic \ 127 ../../tcl8.2a*/generic \ 128 ../../tcl8.2.*/generic \ 129 ../../tcl8.1/generic \ 130 ../../tcl8.1b*/generic \ 131 ../../tcl8.1a*/generic \ 132 ../../tcl8.0.*/generic \ 133 ../../tcl8.0/generic \ 134 ../../tcl/generic \ 135 ../../tcl \ 136 $prefix/include \ 137 /usr/local/include \ 138 /usr/include" 139 for dir in $places; do 140 if test -r $dir/tcl.h ; then 141 memchan_cv_path_TCL_INCLUDE_DIR=$dir 142 break 143 fi 144 done]) 145dnl 146dnl verify success of search 147dnl 148TCL_INCLUDE_DIR=$memchan_cv_path_TCL_INCLUDE_DIR 149if test -z "$TCL_INCLUDE_DIR" ; then 150 AC_MSG_ERROR(not found; use --with-tcl=DIR or --with-tcl-include-dir=DIR) 151fi 152dnl 153dnl tcl.h found, now check for acceptable version of Tcl 154dnl 155AC_CACHE_CHECK(for up-to-date version of Tcl, 156 memchan_cv_vers_good_tcl_version, 157[AC_REQUIRE_CPP() 158 ac_save_cppflags="$CPPFLAGS" 159 CPPFLAGS="-I$TCL_INCLUDE_DIR $CPPFLAGS" 160 AC_EGREP_CPP(good_tcl_version, 161[#include <tcl.h> 162#if ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 0)) 163 good_tcl_version 164#endif 165#if (TCL_MAJOR_VERSION > 8) 166 good_tcl_version 167#endif],memchan_cv_vers_good_tcl_version=yes,memchan_cv_vers_good_tcl_version=no) 168 CPPFLAGS=$ac_save_cppflags]) 169 170if test "$memchan_cv_vers_good_tcl_version" = "no"; then 171 AC_MSG_ERROR(Your Tcl must be at least version 8.0) 172fi 173 174AC_SUBST(TCL_INCLUDE_DIR) 175dnl 176dnl ---------------------------------------------------------------- 177dnl 178dnl Locate tcl library 179dnl Searches: 180dnl TCL_LIB_DIR (--with-tcl, --with-tcl-lib-dir) 181dnl ../../tcl8.2*/unix (assume tcl source in sibling directory) 182dnl ../../tcl8.1*/unix (assume tcl source in sibling directory) 183dnl ../../tcl8.0/unix (assume tcl source in sibling directory) 184dnl ../../tcl/unix (see above) 185dnl ../../tcl (should be old version) 186dnl $exec_prefix/lib (--exec-prefix) 187dnl $prefix/lib (--prefix) 188dnl /usr/local/lib 189dnl /usr/lib 190dnl 191AC_CACHE_CHECK(for tcl library, 192 memchan_cv_lib_TCL_LIB, 193 [memchan_cv_lib_TCL_LIB="" 194 places="$TCL_LIB_DIR \ 195 ../../tcl8.2.*/unix \ 196 ../../tcl8.2/unix \ 197 ../../tcl8.3.*/unix \ 198 ../../tcl8.3/unix \ 199 ../../tcl8.2b*/unix \ 200 ../../tcl8.2a*/unix \ 201 ../../tcl8.1.*/unix \ 202 ../../tcl8.1/unix \ 203 ../../tcl8.1b*/unix \ 204 ../../tcl8.1a*/unix \ 205 ../../tcl8.0.*/unix \ 206 ../../tcl8.0/unix \ 207 ../../tcl/unix \ 208 ../../tcl \ 209 $exec_prefix/lib \ 210 $prefix/lib \ 211 /usr/local/lib \ 212 /usr/lib" 213 for dir in $places; do 214 if test -n "$memchan_cv_lib_TCL_LIB"; then 215 break 216 fi 217 for version in 8.3 8.2 8.1.1 8.1 8.0.5 8.0.4 8.0.3 8.0 83 82 811 81 805 804 803 80 ""; do 218 if test -n "$memchan_cv_lib_TCL_LIB"; then 219 break 220 fi 221 for libsuff in .so ".so.*" .sl .a; do 222 if test -n "$memchan_cv_lib_TCL_LIB"; then 223 break 224 fi 225 if test -f $dir/libtcl$version$libsuff; then 226 memchan_cv_lib_TCL_LIB="-L$dir -ltcl$version" 227 TCL_LIB_DIR="$dir" 228 fi 229 done 230 done 231 done]) 232 233TCL_LIB="$memchan_cv_lib_TCL_LIB" 234if test -z "$TCL_LIB" ; then 235 AC_MSG_ERROR(not found; use --with-tcl-lib-dir=path) 236fi 237 238AC_SUBST(TCL_LIB) 239 240AC_CACHE_VAL(memchan_cv_TCL_LIB_DIR, [memchan_cv_TCL_LIB_DIR="$TCL_LIB_DIR"]) 241TCL_LIB_DIR="$memchan_cv_TCL_LIB_DIR" 242 243dnl 244dnl ---------------------------------------------------------------- 245dnl 246dnl load 'tclConfig.sh' and integrate its information 247dnl 248 249#-------------------------------------------------------------------- 250# Read in configuration information generated by Tcl for shared 251# libraries, and arrange for it to be substituted into our 252# Makefile. 253#-------------------------------------------------------------------- 254 255file=$TCL_LIB_DIR/tclConfig.sh 256. $file 257CC=$TCL_CC 258SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS 259SHLIB_LD=$TCL_SHLIB_LD 260SHLIB_LD_LIBS=$TCL_SHLIB_LD_LIBS 261SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX 262SHLIB_VERSION=$TCL_SHLIB_VERSION 263DL_LIBS=$TCL_DL_LIBS 264LD_FLAGS=$TCL_LD_FLAGS 265 266eval "MEMCHAN_CC_SEARCH_FLAGS=\"$TCL_LD_SEARCH_FLAGS\"" 267 268case $SHLIB_LD in 269*ld*) 270 MEMCHAN_LD_SEARCH_FLAGS=`echo ${MEMCHAN_CC_SEARCH_FLAGS} |sed -e "s|-Wl,||g" -e "s|,| |g"` 271 ;; 272*) 273 MEMCHAN_LD_SEARCH_FLAGS="${MEMCHAN_CC_SEARCH_FLAGS}" 274 ;; 275esac 276 277 278TCL_BASE=`echo ${TCL_LIB_SPEC} |sed -e "s|^.*-l||"` 279TCL_STUB_BASE=`echo ${TCL_STUB_LIB_SPEC} |sed -e "s|^.*-l||"` 280 281 282TCL_LIB_SPEC="-L${TCL_LIB_DIR} -l${TCL_BASE}" 283TCL_STUB_LIB_SPEC="-L${TCL_LIB_DIR} -l${TCL_STUB_BASE}" 284VERSION="" 285eval "TCL_UNSHARED_LIB_FILE=lib${TCL_BASE}${TCL_UNSHARED_LIB_SUFFIX}" 286eval "TCL_SHARED_LIB_FILE=lib${TCL_BASE}${TCL_SHARED_LIB_SUFFIX}" 287 288 289#-------------------------------------------------------------------- 290# The statements below define a collection of symbols related to 291# building libmemchan as a shared library instead of a static library. 292#-------------------------------------------------------------------- 293 294TCL_SHARED_LIBS="" 295#-------------------------------------------------------------------- 296 297# Use stubs <=> (((major == 8) && (minor > 0)) || (major > 8)) && 'memchan as shared library' 298 299AC_MSG_CHECKING(for stubs) 300 301if test \( \( $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -gt 0 \) -o $TCL_MAJOR_VERSION -gt 8 \) -a "x$ok" = "xyes" 302then 303 AC_MSG_RESULT(yes) 304 MC_USING_STUBS=1 305 # Stubs 306 TCL_DEFS="$TCL_DEFS -DUSE_TCL_STUBS" 307 TCL_SHARED_LIBS="${TCL_STUB_LIB_SPEC}" 308else 309 AC_MSG_RESULT(no) 310 MC_USING_STUBS=0 311 # No stubs 312 case "$SHLIB_LD" in 313 *ldAix*) 314 TCL_SHARED_LIBS='${TCL_LIB_SPEC}' 315 ;; 316 esac 317fi 318 319case "$SHLIB_LD" in 320 *ldAix*) 321 TCL_SHARED_LIBS="${TCL_SHARED_LIBS}" 322 ;; 323esac 324 325if test "x$ok" = "xyes" -a "x${SHLIB_SUFFIX}" != "x"; then 326 MEMCHAN_SHLIB_CFLAGS="${SHLIB_CFLAGS}" 327 eval "MEMCHAN_LIB_FILE=libmemchan${TCL_SHARED_LIB_SUFFIX}" 328 MAKE_LIB="\${SHLIB_LD} -o ${MEMCHAN_LIB_FILE} \${OBJECTS} ${TCL_SHARED_LIBS} ${SHLIB_LD_LIBS}" 329 RANLIB=":" 330 331 install_other='' 332else 333 MEMCHAN_SHLIB_CFLAGS="" 334 eval "MEMCHAN_LIB_FILE=libmemchan${TCL_UNSHARED_LIB_SUFFIX}" 335 MAKE_LIB="ar cr ${MEMCHAN_LIB_FILE} \${OBJECTS}" 336 337 install_other='install-bin' 338fi 339 340# Note: in the following variable, it's important to use the absolute 341# path name of the Tcl directory rather than "..": this is because 342# AIX remembers this path and will attempt to use it at run-time to look 343# up the Tcl library. 344 345if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then 346 MEMCHAN_BUILD_LIB_SPEC="-L`pwd` -lmemchan${VERSION}" 347 MEMCHAN_LIB_SPEC="-L${exec_prefix}/lib -lmemchan${VERSION}" 348else 349 MEMCHAN_BUILD_LIB_SPEC="-L`pwd` -lmemchan`echo ${VERSION} | tr -d .`" 350 MEMCHAN_LIB_SPEC="-L${exec_prefix}/lib -lmemchan`echo ${VERSION} | tr -d .`" 351fi 352 353if test "x$exec_prefix" = "xNONE" ; then 354 MEMCHAN_LIB_DIR=${prefix}/lib 355else 356 MEMCHAN_LIB_DIR=${exec_prefix}/lib 357fi 358 359dnl 360dnl 361dnl Check for some libraries we need for the tclsh application 362dnl 363dnl AC_CHECK_LIB(socket, main, [LIBS="$LIBS -lsocket"]) 364dnl AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"]) 365dnl AC_SUBST(LIBS) 366 367AC_CHECK_FUNCS(ltoa) 368 369dnl ---------------------------------------------------------------- 370dnl non-standard substitutions 371dnl 372 373dnl don't bother with -ltclX.Y if not running under AIX 374if test "x${TCL_SHARED_LIB_SUFFIX}" != 'x${VERSION}.a' -o "x${SHLIB_SUFFIX}" != "x.so"; then 375 TCL_LIB_SPEC="" 376fi 377 378 379AC_SUBST(CC) 380AC_SUBST(DL_LIBS) 381AC_SUBST(LD_FLAGS) 382AC_SUBST(TCL_LIBS) 383AC_SUBST(MAKE_LIB) 384AC_SUBST(SHLIB_CFLAGS) 385AC_SUBST(SHLIB_LD) 386AC_SUBST(SHLIB_LD_LIBS) 387AC_SUBST(SHLIB_SUFFIX) 388AC_SUBST(SHLIB_VERSION) 389AC_SUBST(TCL_BUILD_LIB_SPEC) 390AC_SUBST(TCL_LIB_SPEC) 391AC_SUBST(TCL_SRC_DIR) 392AC_SUBST(TCL_LIB_DIR) 393AC_SUBST(TCL_INCLUDE_DIR) 394AC_SUBST(TCL_VERSION) 395AC_SUBST(TCL_DEFS) 396AC_SUBST(MC_USING_STUBS) 397AC_SUBST(MEMCHAN_BUILD_LIB_SPEC) 398AC_SUBST(MEMCHAN_LD_SEARCH_FLAGS) 399AC_SUBST(MEMCHAN_LIB_FILE) 400AC_SUBST(MEMCHAN_LIB_SPEC) 401AC_SUBST(MEMCHAN_LIB_DIR) 402AC_SUBST(MEMCHAN_SHLIB_CFLAGS) 403AC_SUBST(MEMCHAN_VERSION) 404AC_SUBST(MEMCHAN_MAJOR_VERSION) 405AC_SUBST(MEMCHAN_MINOR_VERSION) 406AC_SUBST(install_other) 407 408dnl for GCC activate -Wall 409if test ! -z "$GCC"; then 410 CC="$CC -Wall" 411fi 412 413 414dnl 415AC_OUTPUT(Makefile pkgIndex.tcl) 416 417