OS-specific Issues

Win32 and Win64

Building for Windows using Microsoft's compiler is supported via the NMakefile included in the distribution. Set up the command-line build environment per Microsoft's instructions, and run e.g.

	$ nmake -fNmakefile -nologo apps PLATFORM=win32 CONFIGURATION=debug
The assumed availability of standard .h files is captured in win32/config.h. If you encounter difficulties related to missing include files, examine the indicated file for an include guard, and compare it to win32/config.h. For example, you get an error like this:

Example 2-1. Missing include file in Windows

…
asprintf.c
include\tds_sysdep_private.h(239) : fatal error C1083: Cannot open include file: 'inttypes.h': No such file or directory
src/replacements/asprintf.c includes include/tds_sysdep_private.h, where you find
238  #ifdef HAVE_INTTYPES_H
239  #include <inttypes.h>
240  #endif
and, sure enough, asprintf.c earlier includes win32/config.h, which says
91  /* Define to 1 if you have the <inttypes.h> header file. */
92  #define HAVE_INTTYPES_H 1
Which shouldn't be defined unless inttypes.h exists on your system.

Let's review: config.h has preprocessor definitions that (try to) describe the build environment to the compiler. In this example, it got one wrong, causing the compiler to look for a file that isn't present, creating the error. The solution is not to change the FreeTDS source code, but merely to comment out line 92 in config.h.

Note

Perhaps you're shaking your head at such an "old school" approach. Over the years, Microsoft's proprietary project-configuration files have proved difficult to support. Every version is different, and there are a great many versions in use "in the wild" at any one time. As the project changes, it becomes impossible to maintain these kinds of files.

For Windows applications that use FreeTDS the hard-won wisdom is just use the NMakefile, please, thanks! If you like a visual environment and visual debugging, no problem: Microsoft's tools support "Makefile projects". The author has direct knowledge of developers for whom that arrangement works quite well.

Other ways to build under Windows®

  • Visual Studio. Project files are included in the win32 directory. See above note for why these might be out of date.

  • Dev-C++

  • MingW

  • gcc under cygwin.

  • The Borland Builder 6.0 compiler is also reported to work, but requires some tweaking of the #include statements. We would apply any patches that make this work cleanly.

From the Department of Double Emulation: FreeTDS builds as a .dll under WINE and as a .a under Interix. See the mailing list archives (second half of 2003) for details.

VMS®

FreeTDS will probably build and run on most versions of OpenVMS Alpha 7.0 and later with DEC/Compaq C 6.0 or later. Other prerequisites:

gunzip
vmstar
MMS or MMK

Build Instructions

Decompress and unpack the source archive using gunzip and vmstar. If you are untarring on an ODS-5 disk, you should use the /ODS2 or -o option to create universally VMS-friendly filenames; otherwise the build will fail to locate some files.

Set default to the top-level source directory and run the configuration script:

	$ @[.vms]configure

This creates a descrip.mms in the top-level source directory which you may execute by simply running MMS (if you have the Module Management System that is part of DECset) or MMK (a freeware MMS alternative available from www.madgoat.com).

Further information can be found in the in the source distribution.

OS X®

As of this writing ($Date: 2011/05/21 18:31:37 $), the regular distribution compiles on OS X.

AIX®

AIX® can induce linker indigestion. libtool doesn't always understand that a .a file can be a shared library. One solution is to build only static libraries with the --disable-shared configure option.

Another problem seems to be that the linker isn't asked to pull in all the requisite libraries. Cf. this helpful mailing list message.

GNU/Linux distributions that use RPMs

You may find it convenient to make an RPM from the source distribution, in which case you'll be glad to know it is easily done:

	$ rpmbuild -ta freetds-0.63RC9.tar.gz