builtin(include,tclconfig/tcl.m4) #------------------------------------------------------------------------ # TLS_SSL_DIR -- # # Locate the installed ssl files # # Arguments: # None. # # Requires: # CYGPATH must be set # # Results: # # Adds a --with-ss-dir switch to configure. # Result is cached. # # Substs the following vars: # SSL_DIR #------------------------------------------------------------------------ AC_DEFUN(TLS_CHECK_SSL, [ #-------------------------------------------------------------------- # If the variable OPENSSL is set, we will build with the OpenSSL # libraries. If it is not set, then we will use RSA BSAFE SSL-C # libraries instead of the default OpenSSL libaries. #-------------------------------------------------------------------- AC_ARG_ENABLE(bsafe, [ --enable-bsafe Use RSA BSAFE SSL-C libs. Default is to use OpenSSL libs], OPENSSL="", OPENSSL="1") #-------------------------------------------------------------------- # Establish the location of the root directory for OpenSSL. # If we're not using OpenSSL, set the root for BSAFE SSL-C. # If we're using BSAFE, define the BSAFE compiler flag. # The "FLAT_INC" flag is used in the BSAFE ssl.h header file and # doesn't seem to be referenced anywhere else. #-------------------------------------------------------------------- if test -n "${OPENSSL}"; then SSL_DIR='/usr/local/ssl' AC_DEFINE(NO_IDEA) AC_DEFINE(NO_RC5) else SSL_DIR='/use/local/sslc' AC_DEFINE(BSAFE) AC_DEFINE(FLAT_INC) fi AC_MSG_CHECKING([for SSL directory]) AC_ARG_WITH(ssl-dir, [ --with-ssl-dir=DIR SSL root directory], with_ssldir=${withval}) AC_CACHE_VAL(ac_cv_c_ssldir, [ # Use the value from --with-ssl-dir, if it was given if test x"${with_ssldir}" != x ; then if test -d "${with_ssldir}" ; then ac_cv_c_ssldir=${with_ssldir} else AC_MSG_ERROR([${with_ssldir} is not a valid directory]) fi else list="`ls -d ${SSL_DIR} 2>/dev/null`" for i in $list ; do if test -d "$i" ; then ac_cv_c_ssldir=$i break fi done fi ]) # Print a message based on how we determined the include path if test x"${ac_cv_c_ssldir}" = x ; then AC_MSG_ERROR([Could not find SSL directory. Please specify its location with --with-ssl-dir]) else SSL_DIR=${ac_cv_c_ssldir} AC_MSG_RESULT([${SSL_DIR}]) fi #-------------------------------------------------------------------- # If we're using RSA BSAFE SSL-C, we need to establish what platform # we're running on before we can figure out some paths. # This step isn't necessary if we're using OpenSSL. #-------------------------------------------------------------------- if test -z "${OPENSSL}"; then AC_MSG_CHECKING(host type) case "`uname -s`" in *win32* | *WIN32* | *CYGWIN_NT*|*CYGWIN_98*|*CYGWIN_95*) PLATFORM=WIN32 ;; *SunOS*) PLATFORM=SOLARIS ;; HP-UX) PLATFORM=HPUX ;; *) PLATFORM=LINUX ;; esac AC_MSG_RESULT(${PLATFORM}) fi #-------------------------------------------------------------------- # The OpenSSL and BSAFE SSL-C directory structures differ. #-------------------------------------------------------------------- if test -n "${OPENSSL}"; then SSL_LIB_DIR=${SSL_DIR}/lib SSL_INCLUDE_DIR=${SSL_DIR}/include if test ! -f "${SSL_INCLUDE_DIR}/openssl/opensslv.h"; then AC_ERROR([bad ssl-dir: cannot find openssl/opensslv.h under ${SSL_INCLUDE_DIR}]) fi else SSL_LIB_DIR=${SSL_DIR}/${PLATFORM}/library/lib SSL_INCLUDE_DIR=${SSL_DIR}/${PLATFORM}/library/include if test ! -f "${SSL_INCLUDE_DIR}/crypto.h"; then AC_ERROR([bad ssl-dir: cannot find crypto.h under ${SSL_INCLUDE_DIR}]) fi fi AC_SUBST(SSL_DIR) AC_SUBST(SSL_LIB_DIR) AC_SUBST(SSL_INCLUDE_DIR) if test "$GCC" = "yes"; then SSL_INCLUDE_DIR_NATIVE=\"`${CYGPATH} ${SSL_INCLUDE_DIR}`\" SSL_LIB_DIR_NATIVE=\"`${CYGPATH} ${SSL_LIB_DIR}`\" else SSL_INCLUDE_DIR_NATIVE=\"`echo ${SSL_INCLUDE_DIR}|sed 's%/%\\\\%g'`\" SSL_LIB_DIR_NATIVE=\"`echo ${SSL_LIB_DIR}|sed 's%/%\\\\%g'`\" fi AC_SUBST(SSL_INCLUDE_DIR_NATIVE) AC_SUBST(SSL_LIB_DIR_NATIVE) #-------------------------------------------------------------------- # If OpenSSL was built with gcc then there may be some symbols that need # resolving before we can load it into tclsh (__udivd3i on solaris. # Let the user specify if we need to add libgcc to the link line to # resolve these symbols. # # This doesn't seem to be necessary if the RSA BSAFE SSL-C libraries # are used instead of OpenSSL. #-------------------------------------------------------------------- if test -n "${OPENSSL}"; then AC_MSG_CHECKING(if libgcc is needed to resolve openssl symbols) AC_ARG_WITH(gcclib, [ --with-gcclib link with libgcc to resolve symbols in a gcc-built openssl library], GCCLIB="-lgcc", GCCLIB="") if test "x${GCCLIB}" = "x" ; then AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) AC_MSG_CHECKING(for gcc library location) GCCPATH=`${CC} -print-libgcc-file-name | sed -e 's#[^/]*$##'` GCCPATH="-L${GCCPATH}" AC_MSG_RESULT(${GCCPATH}) fi fi ])