# $Id: Portfile 67836 2010-05-19 11:55:40Z css@macports.org $

PortSystem 1.0

name			doxygen
version			1.6.3
revision		1
categories		textproc devel
maintainers		css
description		Documentation system for several programming languages
long_description \
	It can generate an on-line documentation browser (in HTML) and/or an \
	off-line reference manual from a set of documented source files. \
	There is also support for generating output in RTF (MS-Word), \
	PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The \
	documentation is extracted directly from the sources, which makes it \
	much easier to keep the documentation consistent with the source code. \
	You can configure doxygen to extract the code structure from \
	undocumented source files. This is very useful to quickly find your \
	way in large source distributions. You can also visualize the \
	relations between the various elements by means of include dependency \
	graphs, inheritance diagrams, and collaboration diagrams, which are \
	all generated automatically.

platforms		darwin

homepage		http://www.doxygen.org/
master_sites		http://ftp.stack.nl/pub/users/dimitri/ \
			ftp://ftp.stack.nl/pub/users/dimitri/
distfiles		${distname}.src${extract.suffix}

checksums           md5     2d6ea20a9d850d94321cee78bab7bb87 \
                    sha1    36e4f479a136a439307456e539a4bd6c2fefa8b7 \
                    rmd160  3c205185316675a78dba390ef83942d5abda0815

depends_build-append	bin:perl:perl5 bin:flex:flex bin:bison:bison bin:ginstall:coreutils
depends_lib		port:libpng path:bin/dot:graphviz port:libiconv

universal_variant no

configure.pre_args	--prefix ${prefix}
configure.args		--docdir ${prefix}/share/doc --dot ${prefix}/bin/dot

post-patch {
	# ensure correct compilers and compiler options are used
	reinplace "/^TMAKE_CC\[\[:space:\]\]/s%=.*%= ${configure.cc} ${configure.cppflags}%" ${tmake_conf}
	reinplace "/^TMAKE_CXX\[\[:space:\]\]/s%=.*%= ${configure.cxx} ${configure.cppflags}%" ${tmake_conf}
	reinplace "/^TMAKE_LINK\[\[:space:\]\]/s%=.*%= ${configure.cxx} ${configure.ldflags}%" ${tmake_conf}
	reinplace "/^TMAKE_LINK_SHLIB\[\[:space:\]\]/s%=.*%= ${configure.cxx}%" ${tmake_conf}

	# may not be strictly necessary, but remove trailing '/' from DESTDIR
	reinplace "s|\$(DESTDIR)/|\$(DESTDIR)|g" ${worksrcpath}/Makefile.in

	# link with doxygen's libmd5, avoiding a libwww port conflict
	reinplace "s|-lmd5|../lib/libmd5.a|" ${worksrcpath}/src/doxygen.pro.in
}

build.target		all

destroot.target		install
destroot.args		INSTALL=${prefix} \
			DOCDIR=${prefix}/share/doc/doxygen \
			MAN1DIR=share/man/man1

variant docs description {Include the doxygen PDF documentation and LaTeX} {
	build.target-append	pdf
	destroot.target-append	install_docs
	depends_build-append	bin:pdflatex:texlive \
				bin:gs:ghostscript
}

variant wizard description {Include the GUI wizard based on Qt} {
	configure.env-append	QTDIR=${prefix}/libexec/qt4-mac
	configure.env-append QMAKE=${prefix}/bin/qmake-mac
	build.env-append	QTDIR=${prefix}/libexec/qt4-mac
	depends_lib-append	path:bin/qmake-mac:qt4-mac
	configure.args-append	--with-doxywizard

	# on Macs, qmake builds .app directories
	patchfiles-append	patch-Makfile.in.diff

	post-patch {
	  reinplace "s|/Developer/qt-4.4.3|${prefix}/libexec/qt4-mac|g" ${worksrcpath}/addon/doxywizard/Makefile.doxywizard
    reinplace "s|/Developer/qt/bin/moc|${prefix}/bin/moc-mac|g" ${worksrcpath}/addon/doxywizard/Makefile.doxywizard
    reinplace "s|-arch ppc -arch i386|-arch ${build_arch}|g" ${worksrcpath}/addon/doxywizard/Makefile.doxywizard
    reinplace "s|/Developer/qt/bin/qmake|${prefix}/bin/qmake-mac|g" ${worksrcpath}/addon/doxywizard/Makefile.doxywizard
		# give doxywizard the more mac-like name of DoxyWizard
		reinplace "/^TARGET\[\[:space:\]\]/s%=.*%= DoxyWizard%" ${worksrcpath}/addon/doxywizard/doxywizard.pro.in
		reinplace "/^macx-g++\[\[:space:\]\]{/,/}/d" ${worksrcpath}/addon/doxywizard/doxywizard.pro.in
		reinplace "s|__APPLICATIONS_DIR__|${applications_dir}|" ${worksrcpath}/addon/doxywizard/Makefile.in
		reinplace "s|\$(INSTALL)|\$(DESTDIR)\$(INSTALL)|g" ${worksrcpath}/addon/doxywizard/Makefile.in
		reinplace "s|QMAKE=qmake|QMAKE=${prefix}/bin/qmake-mac|g" ${worksrcpath}/addon/doxywizard/Makefile.in
	}

	post-destroot {
		# allow doxywizard to be called from the command line
		ln -s ${applications_dir}/DoxyWizard.app/Contents/MacOS/DoxyWizard ${destroot}${prefix}/bin/doxywizard
	}
}

platform darwin {
	# Specify the platform explicitly to avoid a universal build.
	global tmake_conf

	#if { ![variant_isset universal] } {
		set tmake_conf	${worksrcpath}/tmake/lib/macosx-c++/tmake.conf
		configure.args-append	--platform macosx-c++
	#} else {
	#	set tmake_conf	${worksrcpath}/tmake/lib/macosx-uni-c++/tmake.conf
	#	configure.args-append	--platform macosx-uni-c++
	#}
}
