# $Id: Portfile,v 1.10 2005/09/20 23:03:37 toby Exp $

PortSystem 1.0
name			unixODBC
version			2.2.11
categories		databases
platforms		darwin
maintainers		simon@cotsworth.com
description		Provides ODBC 3 connectivity for Unix

long_description	The unixODBC project provides UNIX applications with the same ODBC 3.51 API \
				and facilities available under Windows. It provides a Driver Manager that \
				supports the full ODBC API and performs the ODBC 3 to ODBC 2 translations \
				with UNICODE to ANSI conversion. It also includes a set of graphical utilities \
				that allow users to specify connections to DBMSes to be used by applications, \
				a collection of ODBC drivers including a simple text based driver, an NNTP \
				driver, a Postgres driver and others, and a selection of templates and \
				libraries that to aid in the construction of ODBC drivers. It works with \
				MySQL, Postgres, StarOffice, Applixware, iHTML, PHP, Perl DBD::ODBC, \
				Paradox 9, and many other applications and drivers. Connection pooling is \
				also provided to increase performance with applications such as PHP.

homepage		http://www.unixodbc.org/
master_sites	${homepage} \
				ftp://ftp.easysoft.com/pub/beta/unixODBC/

checksums		md5 9ae806396844e38244cf65ad26ba0f23
#				sha1 a8869c38d0f1bb18b33e5165a2a79dd8770f98b3

depends_lib		lib:libiconv.2:libiconv lib:readline:readline

patchfiles		patch-ltmain.sh patch-Drivers__txt__SQLTables.c

configure.env	LDFLAGS=-L${prefix}/lib CPPFLAGS=-I${prefix}/include

configure.args	--enable-gui=no --with-libiconv-prefix=${prefix}

platform darwin 6 { 
	depends_lib-append	lib:libdl:dlcompat
}

variant darwin {
	patchfiles-append	patch-configure patch-SQLManageDataSources.c
	global _cc _ccr _psq1 _psq2 _nn _odbc _ex1 _ex2
	set _cc		"/usr/bin/gcc -bundle -flat_namespace -undefined suppress -o"
	set _ccr	libodbccr.1.0.0
	set	_psq1	libodbcpsql.1.0.0
	set	_psq2	libodbcpsql.2.0.0
	set	_nn		libnn.1.0.0
	set _odbc	libodbc.1.0.0
}

variant gui {
	depends_lib-append	lib:libqt-mt.3:qt3 lib:libX11.6:XFree86
	configure.env-append	QTDIR=${prefix}
	configure.args-delete	--enable-gui=no
	configure.args-append	--enable-gui \
	  --with-qt-dir=${prefix} \
	  --with-qt-includes=${prefix}/include/qt3 \
	  --with-qt-libraries=${prefix}/lib \
	  --with-qt-bin=${prefix}/bin \
	  --with-extra-includes=/usr/X11R6/include \
	  --with-extra-libs=/usr/X11R6/lib
}

post-destroot	{
	# darwin Mach-O bundles
	if { [variant_isset darwin] } {
		system "cd ${worksrcpath}/DriverManager && \
		  ${_cc} ${_odbc}.so .libs/libodbc.1.0.0.dylib && \
		  ln -fs ${_odbc}.so ${destroot}${prefix}/lib/libodbc.1.so && \
		  ln -fs ${_odbc}.so ${destroot}${prefix}/lib/libodbc.so"
		system "cd ${worksrcpath}/cur && \
		  ${_cc} ${_ccr}.so *.o && \
		  ln -fs ${_ccr}.so ${destroot}${prefix}/lib/libodbccr.1.so && \
		  ln -fs ${_ccr}.so ${destroot}${prefix}/lib/libodbccr.so"
		system "cd ${worksrcpath}/Drivers/PostgreSQL && \
		  ${_cc} ${_psq1}.so *.o && \
		  ln -fs ${_psq1}.dylib ${destroot}${prefix}/lib/libodbcpsql.1.dylib"
		system "cd ${worksrcpath}/Drivers/Postgre7.1 && \
		  ${_cc} ${_psq2}.so *.o && \
		  ln -fs ${_psq2}.dylib ${destroot}${prefix}/lib/libodbcpsql.2.dylib && \
		  ln -fs ${_psq2}.dylib ${destroot}${prefix}/lib/libodbcpsql.dylib"
		system "cd ${worksrcpath}/Drivers/nn && \
		  ${_cc} ${_nn}.so *.o && \
		  ln -fs ${_nn}.dylib ${destroot}${prefix}/lib/libnn.1.dylib && \
		  ln -fs ${_nn}.dylib ${destroot}${prefix}/lib/libnn.dylib"

		foreach lib [list ${_psq1} ${_psq2} ${_nn}] {
			system "mv ${destroot}${prefix}/lib/$lib.so ${destroot}${prefix}/lib/$lib.dylib"
		}

		foreach new [list cur/${_ccr} DriverManager/${_odbc} Drivers/PostgreSQL/${_psq1} Drivers/Postgre7.1/${_psq2} Drivers/nn/${_nn}] {
			xinstall -m 0755 ${worksrcpath}/$new.so ${destroot}${prefix}/lib
		}
	}
	# DOCS
	xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${name}
	foreach doc [glob ${worksrcpath}/\[A-Z\]*\[A-Z\]\[A-Z\]\[A-Z\] ${worksrcpath}/doc/*.\[a-z\]\[a-z\]\[a-z\]*] {
		if {[string match "*.html" $doc]} {
			reinplace "s|${homepage}doc/||g" $doc
		}
		xinstall -m 0644 $doc ${destroot}${prefix}/share/doc/${name}
	}
	foreach dir [list AdministratorManual lst ProgrammerManual ProgrammerManual/Tutorial UserManual] {
		xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${name}/$dir
		foreach file [glob ${worksrcpath}/doc/$dir/*.\[a-z\]\[a-z\]\[a-z\]*] {
			if {[string match "*.html" $file]} {
				reinplace "s|${homepage}doc/||g" $file
			}
			xinstall -m 0644 $file ${destroot}${prefix}/share/doc/${name}/$dir
		}
	}

	# TEMPLATES
	xinstall -d -m 0755 ${destroot}${prefix}/share/${name}
	foreach template [glob ${portpath}/${filesdir}/*.template] {
		xinstall -m 0644 $template ${destroot}${prefix}/share/${name}
	}
	foreach driver [glob ${destroot}${prefix}/share/${name}/*.driver.*] {
		reinplace "s|__PREFIX__|${prefix}|g" $driver
	}

	# CONFIG
	foreach ini [glob ${destroot}${prefix}/etc/*.ini] {
		system "mv $ini $ini.dist"
	}
	destroot.keepdirs ${destroot}${prefix}/etc/ODBCDataSources
}
