mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 17:16:25 +00:00
588 lines
16 KiB
Text
Executable file
588 lines
16 KiB
Text
Executable file
##########
|
|
# Setup
|
|
#
|
|
AC_INIT(sqliteodbc.h)
|
|
AM_PROG_LIBTOOL
|
|
AC_PROG_INSTALL
|
|
CC=${CC:-cc}
|
|
AC_SUBST(CC)
|
|
AC_SUBST(CFLAGS)
|
|
VER_INFO=`cat VERSION`
|
|
|
|
##########
|
|
# Find SQLite header file and library
|
|
#
|
|
AC_ARG_WITH(sqlite, [ --with-sqlite=DIR use SQLite header/lib from DIR],
|
|
SQLITE_DIR=$withval)
|
|
if test -n "$SQLITE_DIR" ; then
|
|
if test ! -d "$SQLITE_DIR" ; then
|
|
AC_MSG_ERROR(SQLite directory $SQLITE_DIR does not exist)
|
|
fi
|
|
fi
|
|
|
|
SQLITE_INC=UNKNOWN
|
|
SQLITE_LIB=UNKNOWN
|
|
|
|
if test -z "$SQLITE_DIR" ; then
|
|
if test -r "$includedir/sqlite.h" -a -r "$libdir/libsqlite.la" ; then
|
|
SQLITE_INC="$includedir"
|
|
SQLITE_LIB="$libdir/libsqlite.la"
|
|
SQLITE_LIBDIR="$libdir"
|
|
SQLITE_DIR=""
|
|
else
|
|
SQLITE_DIR="../sqlite /usr /usr/local /opt"
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for SQLite header and library])
|
|
for i in $SQLITE_DIR ; do
|
|
if test -r "$i/sqlite.h" ; then
|
|
if test -r "$i/libsqlite.la" ; then
|
|
SQLITE_INC="$i"
|
|
SQLITE_LIB="$i/libsqlite.la"
|
|
SQLITE_LIBDIR=$i
|
|
break
|
|
fi
|
|
elif test -r "$i/include/sqlite.h" ; then
|
|
SQLITE_INC="$i/include"
|
|
if test -r "$i/lib/libsqlite.la" ; then
|
|
SQLITE_LIB="$i/lib/libsqlite.la"
|
|
SQLITE_LIBDIR="$i/lib"
|
|
break
|
|
elif test -d "$i/lib" ; then
|
|
SQLITE_LIB="-lsqlite"
|
|
SQLITE_LIBDIR="$i/lib"
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
if test "$SQLITE_INC" = "UNKNOWN" -o "$SQLITE_LIB" = "UNKNOWN" ; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_WARN(SQLite header files and/or library not found)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
|
|
AC_SUBST(SQLITE_INC)
|
|
AC_SUBST(SQLITE_LIB)
|
|
|
|
# test for availability of sqlite_libversion() et.al.
|
|
|
|
if test -n "$SQLITE_LIBDIR" ; then
|
|
SQLITE_LIBDIR="-L$SQLITE_LIBDIR"
|
|
fi
|
|
|
|
saved_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS -I$SQLITE_INC"
|
|
saved_LIBS=$LIBS
|
|
LIBS="$LIBS $SQLITE_LIBDIR"
|
|
AC_CHECK_LIB(sqlite,sqlite_libversion,SQLITE_LIBVERSION=1,SQLITE_LIBVERSION=0)
|
|
AC_CHECK_LIB(sqlite,sqlite_compile,SQLITE_COMPILE=1,SQLITE_COMPILE=0)
|
|
AC_CHECK_LIB(sqlite,sqlite_encode_binary,SQLITE_ENCDEC=1,SQLITE_ENCDEC=0)
|
|
AC_CHECK_LIB(sqlite,sqliteAtoF,SQLITE_ATOF=1,SQLITE_ATOF=0)
|
|
AC_CHECK_LIB(sqlite,sqlite_mprintf,SQLITE_MPRINTF=1,SQLITE_MPRINTF=0)
|
|
AC_CHECK_LIB(sqlite,sqlite_trace,SQLITE_TRACE=1,SQLITE_TRACE=0)
|
|
LIBS=$saved_LIBS
|
|
CFLAGS=$saved_CFLAGS
|
|
AC_SUBST(SQLITE_LIBVERSION)
|
|
AC_SUBST(SQLITE_ENCDEC)
|
|
AC_SUBST(SQLITE_ATOF)
|
|
AC_SUBST(SQLITE_MPRINTF)
|
|
AC_SUBST(SQLITE_TRACE)
|
|
if test "$SQLITE_COMPILE" = "0" ; then
|
|
AC_MSG_WARN(SQLite library too old, need 2.8.0 or later)
|
|
else
|
|
LIB_TARGETS="$LIB_TARGETS libsqliteodbc.la"
|
|
INST_TARGETS="$INST_TARGETS install-2"
|
|
UNINST_TARGETS="$UNINST_TARGETS uninstall-2"
|
|
DRVINST_TARGETS="$DRVINST_TARGETS drvinst-2"
|
|
DRVUNINST_TARGETS="$DRVUNINST_TARGETS drvuninst-2"
|
|
fi
|
|
|
|
##########
|
|
# Find SQLite3 header file and library
|
|
#
|
|
AC_ARG_WITH(sqlite3,[ --with-sqlite3=DIR use SQLite3 hdr/lib from DIR],
|
|
SQLITE3_DIR=$withval)
|
|
if test -n "$SQLITE3_DIR" ; then
|
|
if test ! -d "$SQLITE3_DIR" ; then
|
|
AC_MSG_WARN(SQLite3 directory $SQLITE3_DIR does not exist)
|
|
fi
|
|
fi
|
|
|
|
SQLITE3_INC=UNKNOWN
|
|
SQLITE3_LIB=UNKNOWN
|
|
|
|
if test -z "$SQLITE3_DIR" ; then
|
|
if test -r "$includedir/sqlite3.h" -a -r "$libdir/libsqlite3.la" ; then
|
|
SQLITE3_INC="$includedir"
|
|
SQLITE3_LIB="$libdir/libsqlite3.la"
|
|
SQLITE3_LIBDIR="$libdir"
|
|
SQLITE3_DIR=""
|
|
else
|
|
SQLITE3_DIR="../sqlite /usr /usr/local /opt"
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for SQLite3 header and library])
|
|
for i in $SQLITE3_DIR ; do
|
|
if test -r "$i/sqlite3.h" ; then
|
|
if test -r "$i/sqlite3.c" ; then
|
|
SQLITE3_INC="$i"
|
|
SQLITE3_LIB="unknown"
|
|
SQLITE3_LIBDIR=""
|
|
SQLITE3_A10N_C="$i/sqlite3.c"
|
|
SQLITE3_A10N_O="sqlite3.lo"
|
|
break
|
|
elif test -r "$i/libsqlite3.la" ; then
|
|
SQLITE3_INC="$i"
|
|
SQLITE3_LIB="$i/libsqlite3.la"
|
|
SQLITE3_LIBDIR=$i
|
|
break
|
|
fi
|
|
elif test -r "$i/include/sqlite3.h" ; then
|
|
SQLITE3_INC="$i/include"
|
|
if test -r "$i/lib/libsqlite3.la" ; then
|
|
SQLITE3_LIB="$i/lib/libsqlite3.la"
|
|
SQLITE3_LIBDIR="$i/lib"
|
|
break
|
|
elif test -d "$i/lib" ; then
|
|
SQLITE3_LIB="-lsqlite3"
|
|
SQLITE3_LIBDIR="$i/lib"
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
if test "$SQLITE3_INC" = "UNKNOWN" -o "$SQLITE3_LIB" = "UNKNOWN" ; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_WARN(SQLite3 header files and/or library not found)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
LIB_TARGETS="$LIB_TARGETS libsqlite3odbc.la"
|
|
INST_TARGETS="$INST_TARGETS install-3"
|
|
UNINST_TARGETS="$UNINST_TARGETS uninstall-3"
|
|
DRVINST_TARGETS="$DRVINST_TARGETS drvinst-3"
|
|
DRVUNINST_TARGETS="$DRVUNINST_TARGETS drvuninst-3"
|
|
if test -n "$SQLITE3_A10N_C" ; then
|
|
SQLITE3_LIB=""
|
|
SQLITE3_A10N_FLAGS="$SQLITE3_A10N_FLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1"
|
|
SQLITE3_A10N_FLAGS="$SQLITE3_A10N_FLAGS -DSQLITE_DLL=1 -DSQLITE_SOUNDEX=1"
|
|
SQLITE3_A10N_FLAGS="$SQLITE3_A10N_FLAGS -DSQLITE_THREADSAFE=1"
|
|
fi
|
|
fi
|
|
AC_SUBST(SQLITE3_INC)
|
|
AC_SUBST(SQLITE3_LIB)
|
|
AC_SUBST(SQLITE3_A10N_C)
|
|
AC_SUBST(SQLITE3_A10N_O)
|
|
AC_SUBST(SQLITE3_A10N_FLAGS)
|
|
|
|
# test for availability of some sqlite3_*() funcs
|
|
|
|
if test -n "$SQLITE3_LIBDIR" ; then
|
|
SQLITE3_LIBDIR="-L$SQLITE3_LIBDIR"
|
|
fi
|
|
|
|
if test -n "$SQLITE3_A10N_C" ; then
|
|
SQLITE3_LOADEXTENSTION=1
|
|
SQLITE3_COLUMNTABLENAME=1
|
|
SQLITE3_OVERLOADFUNCTION=1
|
|
SQLITE3_PREPARE_V2=1
|
|
SQLITE3_CLEARBINDINGS=1
|
|
SQLITE3_CREATEMODULE_V2=1
|
|
SQLITE3_LOADEXTENSION=1
|
|
SQLITE3_TABLECOLUMNMETADATA=1
|
|
SQLITE3_VFS=1
|
|
else
|
|
saved_CFLAGS=$CFLAGS
|
|
CFLAGS="$CFLAGS -I$SQLITE3_INC"
|
|
saved_LIBS=$LIBS
|
|
LIBS="$LIBS $SQLITE3_LIBDIR"
|
|
AC_CHECK_LIB(sqlite3,sqlite3_load_extension,
|
|
SQLITE3_LOADEXTENSION=1,
|
|
SQLITE3_LOADEXTENSION=0)
|
|
if test "$SQLITE3_LOADEXTENSION" = "0" ; then
|
|
unset ac_cv_lib_sqlite3_sqlite3_load_extension
|
|
# try again with -ldl
|
|
LIBS="$LIBS -ldl $SQLITE3_LIBDIR"
|
|
AC_CHECK_LIB(sqlite3,sqlite3_load_extension,
|
|
SQLITE3_LOADEXTENSION=1,
|
|
SQLITE3_LOADEXTENSION=0)
|
|
if test "$SQLITE3_LOADEXTENSION" = "1" ; then
|
|
SQLITE3_LIB="$SQLITE3_LIB -ldl"
|
|
fi
|
|
fi
|
|
AC_CHECK_LIB(sqlite3,sqlite3_column_table_name,
|
|
SQLITE3_COLUMNTABLENAME=1,
|
|
SQLITE3_COLUMNTABLENAME=0)
|
|
AC_CHECK_LIB(sqlite3,sqlite3_overload_function,
|
|
SQLITE3_OVERLOADFUNCTION=1,
|
|
SQLITE3_OVERLOADFUNCTION=0)
|
|
AC_CHECK_LIB(sqlite3,sqlite3_prepare_v2,
|
|
SQLITE3_PREPARE_V2=1,
|
|
SQLITE3_PREPARE_V2=0)
|
|
AC_CHECK_LIB(sqlite3,sqlite3_clear_bindings,
|
|
SQLITE3_CLEARBINDINGS=1,
|
|
SQLITE3_CLEARBINDINGS=0)
|
|
AC_CHECK_LIB(sqlite3,sqlite3_create_module_v2,
|
|
SQLITE3_CREATEMODULE_V2=1,
|
|
SQLITE3_CREATEMODULE_V2=0)
|
|
AC_CHECK_LIB(sqlite3,sqlite3_vfs_register,
|
|
SQLITE3_VFS=1,
|
|
SQLITE3_VFS=0)
|
|
AC_CHECK_LIB(sqlite3,sqlite3_table_column_metadata,
|
|
SQLITE3_TABLECOLUMNMETADATA=1,
|
|
SQLITE3_TABLECOLUMNMETADATA=0)
|
|
LIBS=$saved_LIBS
|
|
CFLAGS=$saved_CFLAGS
|
|
fi
|
|
|
|
if test "$SQLITE3_LOADEXTENSION" = "1" ; then
|
|
EXT_BLOBTOXY=libsqlite3_mod_blobtoxy.la
|
|
EXT_IMPEXP=libsqlite3_mod_impexp.la
|
|
LIB_TARGETS="$LIB_TARGETS $EXT_BLOBTOXY $EXT_IMPEXP"
|
|
else
|
|
EXT_BLOBTOXY=""
|
|
EXT_IMPEXP=""
|
|
fi
|
|
|
|
AC_SUBST(SQLITE3_COLUMNTABLENAME)
|
|
AC_SUBST(SQLITE3_OVERLOADFUNCTION)
|
|
AC_SUBST(SQLITE3_PREPARE_V2)
|
|
AC_SUBST(SQLITE3_CLEARBINDINGS)
|
|
AC_SUBST(SQLITE3_CREATEMODULE_V2)
|
|
AC_SUBST(SQLITE3_LOADEXTENSION)
|
|
AC_SUBST(SQLITE3_TABLECOLUMNMETADATA)
|
|
AC_SUBST(SQLITE3_VFS)
|
|
AC_SUBST(EXT_BLOBTOXY)
|
|
AC_SUBST(EXT_IMPEXP)
|
|
|
|
#########
|
|
# Any SQLite to be done ?
|
|
|
|
if test "X$LIB_TARGETS" = "X" ; then
|
|
AC_MSG_ERROR(No usable SQLite header/library on this system)
|
|
fi
|
|
AC_SUBST(LIB_TARGETS)
|
|
AC_SUBST(INST_TARGETS)
|
|
AC_SUBST(UNINST_TARGETS)
|
|
AC_SUBST(DRVINST_TARGETS)
|
|
AC_SUBST(DRVUNINST_TARGETS)
|
|
|
|
#########
|
|
# Find ODBC headers and libraries
|
|
#
|
|
AC_ARG_WITH(odbc, [ --with-odbc=DIR use ODBC header/libs from DIR],
|
|
ODBC_DIR=$withval)
|
|
if test -n "$ODBC_DIR" ; then
|
|
if test ! -d "$ODBC_DIR" ; then
|
|
AC_MSG_ERROR(ODBC directory $ODBC_DIR does not exist)
|
|
fi
|
|
fi
|
|
|
|
ODBC_FLAGS=UNKNOWN
|
|
ODBC_LIB=UNKNOWN
|
|
|
|
if test -z "$ODBC_DIR" ; then
|
|
if test -r "$includedir/sql.h" -a -r "$includedir/iodbcinst.h" -a -r "$libdir/libiodbcinst.la" ; then
|
|
ODBC_FLAGS="-DHAVE_IODBC=1 -I$includedir"
|
|
ODBC_LIB="$libdir/libiodbcinst.la"
|
|
ODBC_DIR=""
|
|
elif test -r "$includedir/iodbc/sql.h" -a -r "$includedir/iodbc/iodbcinst.h" -a -r "$libdir/libiodbcinst.la" ; then
|
|
ODBC_FLAGS="-DHAVE_IODBC=1 -I$includedir/iodbc"
|
|
ODBC_LIB="$libdir/libiodbcinst.la"
|
|
ODBC_DIR=""
|
|
elif test -r "$includedir/sql.h" -a -r "$includedir/odbcinst.h" -a -r "$libdir/libodbcinst.la" ; then
|
|
ODBC_FLAGS="-DHAVE_UNIXODBC=1 -I$includedir"
|
|
ODBC_LIB="$libdir/libodbcinst.la"
|
|
if test -r "$includedir/odbcinstext.h" ; then
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_ODBCINSTEXT_H=1 -Imissing"
|
|
fi
|
|
else
|
|
ODBC_DIR="/usr /usr/local /opt"
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for ODBC headers and libraries])
|
|
for i in $ODBC_DIR ; do
|
|
if test -r "$i/include/iodbc/sql.h" -o -r "$i/include/sql.h" ; then
|
|
if test -r "$i/include/iodbc/iodbcinst.h" ; then
|
|
ODBC_FLAGS="-DHAVE_IODBC=1 -I$i/include/iodbc"
|
|
if test -r "$i/lib/libiodbcinst.la" ; then
|
|
ODBC_LIB="$i/lib/libiodbcinst.la"
|
|
else
|
|
ODBC_LIB=-liodbcinst
|
|
fi
|
|
break
|
|
elif test -r "$i/include/iodbcinst.h" ; then
|
|
ODBC_FLAGS="-DHAVE_IODBC=1 -I$i/include"
|
|
if test -r "$i/lib/libiodbcinst.la" ; then
|
|
ODBC_LIB="$i/lib/libiodbcinst.la"
|
|
else
|
|
ODBC_LIB=-liodbcinst
|
|
fi
|
|
break
|
|
elif test -r "$i/include/odbcinst.h" ; then
|
|
ODBC_FLAGS="-DHAVE_UNIXODBC=1 -I$i/include"
|
|
if test -r "$i/lib/libodbcinst.la" ; then
|
|
ODBC_LIB="$i/lib/libodbcinst.la"
|
|
else
|
|
ODBC_LIB=-lodbcinst
|
|
fi
|
|
if test -r "$i/include/odbcinstext.h" ; then
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_ODBCINSTEXT_H=1"
|
|
if test -r "$i/include/log.h" -a -r "$i/include/ini.h" ; then
|
|
: no need for replacements
|
|
else
|
|
ODBC_FLAGS="$ODBC_FLAGS -Imissing"
|
|
fi
|
|
fi
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
if test "$ODBC_FLAGS" = "UNKNOWN" -o "$ODBC_LIB" = "UNKNOWN" ; then
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR(ODBC header files and/or libraries not found)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
|
|
##########
|
|
# Test ODBC features.
|
|
#
|
|
|
|
SAVED_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS $ODBC_FLAGS"
|
|
|
|
AC_MSG_CHECKING([for SQLLEN availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLLEN len = 1;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_SQLLEN=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLULEN availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLULEN len = 1;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_SQLULEN=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLROWCOUNT availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLROWCOUNT rc = 1;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_SQLROWCOUNT=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLSETPOSIROW availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLSETPOSIROW rc = 1;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_SQLSETPOSIROW=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLROWOFFSET availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLROWOFFSET rc = 1;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_SQLROWOFFSET=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLROWSETSIZE availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLROWSETSIZE rc = 1;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_SQLROWSETSIZE=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLColAttribute signature has SQLLEN])
|
|
AC_TRY_COMPILE([
|
|
#include <stdio.h>
|
|
#define ODBCVER 0x0300
|
|
#include <sql.h>
|
|
#include <sqlext.h>
|
|
#include <sqltypes.h>
|
|
],[
|
|
SQLHSTMT stmt = SQL_NULL_HSTMT;
|
|
SQLSMALLINT valLen;
|
|
SQLLEN val2;
|
|
extern SQLRETURN SQLColAttribute(SQLHSTMT hstmt,
|
|
SQLUSMALLINT col,
|
|
SQLUSMALLINT id,
|
|
SQLPOINTER charattr,
|
|
SQLSMALLINT buflen,
|
|
SQLSMALLINT *slen,
|
|
SQLLEN *numattr);
|
|
SQLColAttribute(stmt, 1, 0, NULL, 0, &valLen, &val2);
|
|
],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DCOLATTRIBUTE_LAST_ARG_TYPE=SQLLEN_PTR"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLSetStmtOption signature has SQLULEN])
|
|
AC_TRY_COMPILE([
|
|
#include <stdio.h>
|
|
#define ODBCVER 0x0300
|
|
#include <sql.h>
|
|
#include <sqlext.h>
|
|
#include <sqltypes.h>
|
|
],[
|
|
SQLHSTMT stmt = SQL_NULL_HSTMT;
|
|
extern SQLRETURN SQLSetStmtOption(SQLHSTMT hstmt,
|
|
SQLUSMALLINT option,
|
|
SQLULEN value);
|
|
SQLSetStmtOption(stmt, 1, 2);
|
|
],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DSETSTMTOPTION_LAST_ARG_TYPE=SQLULEN"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for SQLBIGINT availability])
|
|
AC_TRY_COMPILE([
|
|
#include <sql.h>
|
|
#include <sqltypes.h>
|
|
],[SQLBIGINT thisisbig;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DHAVE_LONG_LONG=1"
|
|
],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING([for ptrdiff_t availability])
|
|
AC_TRY_COMPILE([
|
|
#include <stddef.h>
|
|
#include <stdlib.h>
|
|
],[ptrdiff_t apdt = 0;],[
|
|
AC_MSG_RESULT(yes)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DPTRDIFF_T=ptrdiff_t"
|
|
],[
|
|
AC_MSG_RESULT(no)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DPTRDIFF_T=int"
|
|
])
|
|
|
|
CFLAGS="$SAVED_CFLAGS"
|
|
|
|
##########
|
|
# Experimental: dlopen for resolving SQLGetPrivateProfileString dynamically
|
|
#
|
|
AC_CHECK_LIB(dl,dlopen,DLOPENFORGPPS=1,DLOPENFORGPPS=0)
|
|
if test "$DLOPENFORGPPS" = "1" ; then
|
|
AC_MSG_CHECKING([for SQLGetPrivateProfileString via dlopen])
|
|
saved_LIBS=$LIBS
|
|
LIBS="$LIBS -ldl"
|
|
AC_TRY_RUN([
|
|
#include <dlfcn.h>
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
void *lib;
|
|
int (*gpps)();
|
|
|
|
lib = dlopen("libodbcinst.so", RTLD_LAZY);
|
|
if (!lib) {
|
|
lib = dlopen("libiodbcinst.so", RTLD_LAZY);
|
|
}
|
|
if (lib) {
|
|
gpps = (int (*)()) dlsym(lib, "SQLGetPrivateProfileString");
|
|
exit(0);
|
|
}
|
|
exit(1);
|
|
}
|
|
],[
|
|
ODBC_FLAGS="$ODBC_FLAGS -DUSE_DLOPEN_FOR_GPPS"
|
|
ODBC_LIB="-ldl"
|
|
AC_MSG_RESULT(yes)
|
|
],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
|
|
LIBS=$saved_LIBS
|
|
fi
|
|
|
|
AC_SUBST(ODBC_FLAGS)
|
|
AC_SUBST(ODBC_LIB)
|
|
AC_SUBST(VER_INFO)
|
|
|
|
##########
|
|
# Find out if char ptr array can be passed in place of
|
|
# a va_list (needed for sqlite_exec_vprintf() and
|
|
# sqlite_vmprintf())
|
|
#
|
|
AC_MSG_CHECKING([va_list usage])
|
|
AC_TRY_RUN([
|
|
#include <stdarg.h>
|
|
#include <stdio.h>
|
|
|
|
static int
|
|
vatest(char **x, ...)
|
|
{
|
|
va_list ap;
|
|
char *y;
|
|
int ret;
|
|
|
|
va_start(ap, x);
|
|
y = va_arg(ap, char *);
|
|
x = (char **) &x + 1;
|
|
ret = (y != *x);
|
|
va_end(ap);
|
|
return ret;
|
|
}
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
exit(vatest(NULL, vatest, 0.0, 0, NULL));
|
|
}
|
|
],[USE_VFUNCS=1],[USE_VFUNCS=0],[USE_VFUNCS=0])
|
|
|
|
if test "$USE_VFUNCS" = "1" ; then
|
|
AC_MSG_RESULT(using sqlite_exec_vprintf/sqlite_vmprintf)
|
|
else
|
|
AC_MSG_RESULT(NOT using sqlite_exec_vprintf/sqlite_vmprintf)
|
|
ODBC_FLAGS="$ODBC_FLAGS -DCANT_PASS_VALIST_AS_CHARPTR=1"
|
|
fi
|
|
|
|
##########
|
|
# Check for usleep()
|
|
#
|
|
AC_CHECK_FUNC(usleep, [ODBC_FLAGS="$ODBC_FLAGS -DHAVE_USLEEP=1"])
|
|
|
|
##########
|
|
# Check for localeconv()
|
|
#
|
|
AC_CHECK_FUNC(localeconv, [ODBC_FLAGS="$ODBC_FLAGS -DHAVE_LOCALECONV=1"])
|
|
|
|
##########
|
|
# Check for localtime_r()
|
|
#
|
|
AC_CHECK_FUNC(localtime_r, [ODBC_FLAGS="$ODBC_FLAGS -DHAVE_LOCALTIME_R=1"])
|
|
|
|
##########
|
|
# Check for gmtime_r()
|
|
#
|
|
AC_CHECK_FUNC(gmtime_r, [ODBC_FLAGS="$ODBC_FLAGS -DHAVE_GMTIME_R=1"])
|
|
|
|
##########
|
|
# Allow omission of SQL*W() functions for SQLITE_UTF8 encoding
|
|
#
|
|
AC_ARG_ENABLE(winterface,
|
|
[ --enable-winterface make SQL*W() functions],
|
|
[ test $enable_winterface = "no" &&
|
|
ODBC_FLAGS="$ODBC_FLAGS -DWITHOUT_WINTERFACE=1" ],
|
|
[ ODBC_FLAGS="$ODBC_FLAGS -DWITHOUT_WINTERFACE=1" ])
|
|
|
|
#########
|
|
# Generate the output files.
|
|
#
|
|
SPEC_CHANGELOG_TS=`LANG=C date -u "+%a %b %d %Y"`
|
|
AC_SUBST(SPEC_CHANGELOG_TS)
|
|
AC_OUTPUT(Makefile sqliteodbc.spec)
|