Skip to Content.
Sympa Menu

freetds - Re: [freetds] FreeTDS with Wine Issue

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT freetds.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] FreeTDS with Wine Issue
  • Date: Sat, 17 May 2008 11:30:12 -0400

Chad Sikorra wrote:
>
> Suggestions:
> >
> > 1. Upgrade.

> Suggestion number one did the trick!

Yay!

> I had to do ' ./configure
> --with-unixodbc=/usr ' to get it to build correctly. It was a pain, but
> a nice learning experience I guess :)

That might be because of the odbc_config you found. Here's confgure.ac:

AC_CHECK_PROG(ODBC_CONFIG,odbc_config,odbc_config)

That searches your PATH for odbc_config.

If it's not found, configure searches your systems's header files --
locations defined how? Probably by letting the compiler do the checking
-- for isql.h or sql.h. We're using AC_HEADER_CHECKS in autoconf.

Whether or not it finds it, the location can be overridden later by one of
the --with options:

AC_ARG_WITH(unixodbc,
AS_HELP_STRING([--with-unixodbc=DIR], [build odbc driver against unixODBC
in DIR]))
if test "$with_unixodbc"; then
if echo "$with_unixodbc" | grep -v '^/'; then
with_unixodbc="$PWD/$with_unixodbc"
fi
CPPFLAGS="$CPPFLAGS -DUNIXODBC"
if test -f "$with_unixodbc/bin/odbc_config"; then
ODBC_CONFIG="$with_unixodbc/bin/odbc_config"
ODBC_INC=`$ODBC_CONFIG --include-prefix`
LDFLAGS="$LDFLAGS -L`$ODBC_CONFIG --lib-prefix`"
else
# if not available do not use system default
ODBC_CONFIG=""
ODBC_INC="$with_unixodbc/include"
LDFLAGS="$LDFLAGS -L$with_unixodbc/lib"
fi
test -r "$ODBC_INC/sql.h" || AC_ERROR([sql.h not found])
test -r "$ODBC_INC/sqlext.h" || AC_ERROR([sqlext.h not found])
ODBC_INC="-I$ODBC_INC"
ODBCLIB="-lodbc"
odbc=true
unixodbc=true
fi

IOW, you don't need odbc-config. The configure script runs odbc-config,
if it finds it, to generate the INCLUDE string (in $ODBC_INC). If it
doesn't find it, it looks around for header files. Regardless,
--with-unixodbc overrides whatever it happens to find. BUT: if you
specify --with-unixodbc=DIR *and* there's a DIR/bin/odbc_config, it runs
that to set the INCLUDE path. (whew!)

Mine does this:

$ /usr/local/bin/odbc_config --include-prefix
/usr/local/include

>From what you said, I would expect one of two things:

1. You (now) have /usr/bin/odbc-config which, when run with
--include-prefix, produces '/usr'. But your gcc doesn't by default look
in /usr/include.

or

2. odbc-config is elsewhere on your path and produces something other
than '/usr', forcing you to override its output using --with-unixodbc.

There are other possibilities, too, but they're not likely. I'd bet on
#2.

> Also, I still received the same error message if I had the TDSVER set to
> 4.2. Setting the version to 8.0 cleared the issue up

Might be a protocol limitation.

> Thanks again for the suggestion. That's another application I can cross
> off my list of reasons for still booting into my Windows XP virtual
> machine.

A happy camper, good news on a Saturday morning!

--jkl




Archive powered by MHonArc 2.6.24.

Top of Page