# -*- coding: utf-8; mode: tcl; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4 # $Id: Portfile 50628 2009-05-05 15:15:39Z jmr@macports.org $ PortSystem 1.0 name qt4-mac-devel version 4.5.0 revision 1 categories aqua platforms macosx maintainers illogic-al openmaintainer homepage http://www.trolltech.com/ description Qt Tool Kit (Native Aqua Version) long_description This is Qt, TrollTech's C++ toolkit for writing cross-platform GUI applications. \ This version uses the native Aqua UI. For a X11 version, see qt4-x11. master_sites trolltech distname qt-mac-opensource-src-${version} checksums \ md5 c66a3f3211529b456086284f87f17393 \ sha1 7b4f0a2512352bda9ae90e4bcfdb5ee621ab27e1 \ rmd160 3abcf1a3b917a6dbbbbc4d915db3fbb538262c70 depends_build port:pkgconfig depends_lib \ port:zlib \ port:tiff \ port:libpng \ port:libmng \ port:jpeg \ port:dbus \ port:openssl \ port:sqlite3 # Build plugins as bundle files instead of dylib files. # Allow the use of -isystem instead of -I to include files. # Test for Precompiled-headers support requires a C++ compiler, but configure calls it, by default, with a C compiler. # Use unixODBC provided by MacPorts instead of iODBC provided my Mac OS. # Ensure that securesocketclient demo is built even with configure option -openssl-linked. patchfiles \ patch-mac.conf.diff \ patch-isystem.diff \ patch-precomp.test.diff \ patch-odbc.diff \ patch-network.pro.diff # The build process uses -fconstant-cfstrings. # configure.compiler should therefore not be one of the MacPorts compilers. # --prefix is not recognized. configure.pre_args-delete --prefix=${prefix} # -I${prefix}/include and -L${prefix}/lib must be set in ${configure.args} # or else some generated Makefiles will not seem them. configure.cppflags configure.ldflags set dirname qt4-mac set qt_dir ${prefix}/libexec/${dirname} # -isystem is used instead of -I to avoid conflicts with other ports (e.g. pcre). # See http://trac.macports.org/ticket/15219 and http://trac.macports.org/ticket/18723. # # -system-sqlite ensures the use SQLite provided by MacPorts instead of Qt. # # -dbus-linked prevends qt4 from trying to dynamically load libdbus-1, # which it is not able to find in ${prefix}. # -openssl-linked ensures that the MacPorts openssl is used. # configure.args \ -v \ -debug-and-release \ -confirm-license \ -prefix ${qt_dir} \ -docdir ${prefix}/share/doc/${dirname} \ -examplesdir ${prefix}/share/${dirname}/examples \ -demosdir ${prefix}/share/${dirname}/demos \ -system-sqlite \ -openssl-linked \ -dbus-linked \ -isystem${prefix}/include \ -L${prefix}/lib # Stop configure script from searching for SQL Drivers # not available from MacPorts. foreach driver {db2 ibase oci tds} { configure.args-append -no-sql-${driver} } # By default, disable most SQL Drivers. # There must be at least one enabled (http://trac.macports.org/ticket/15627). # SQLite is chosen to be always enabled because a copy of it is distributed # with Qt, so it is reasonable for the user to expect it. foreach driver {mysql odbc psql sqlite2} { configure.args-append -no-sql-${driver} } variant mysql description {Enable MySQL SQL Driver} { depends_lib-append path:lib/mysql5:mysql5 configure.args-append \ -isystem${prefix}/include/mysql5/mysql \ -L${prefix}/lib/mysql5/mysql configure.args-delete -no-sql-mysql } variant odbc description {Enable unixODBC SQL Driver} { depends_lib-append port:unixODBC configure.args-delete -no-sql-odbc } variant psql description {Enable PostgreSQL SQL Driver} { depends_lib-append port:postgresql83 configure.args-append \ -isystem${prefix}/include/postgresql83 \ -L${prefix}/lib/postgresql83 configure.args-delete -no-sql-psql } variant sqlite2 description {Enable SQLite version 2 SQL Driver} { depends_lib-append port:sqlite2 configure.args-delete -no-sql-sqlite2 } variant cocoa description {Build the Cocoa version of Qt in 32-bit mode} conflicts noframework { configure.args-append -cocoa # Everything might build, but nothing will run. pre-fetch { if { ${os.major} < 9 } { return -code error "Variant cocoa creates Qt binaries which require Mac OS X 10.5 or higher." } } } variant noframework description {Do not build frameworks} conflicts cocoa { configure.args-append -no-framework } build.target first use_parallel_build yes destroot.destdir INSTALL_ROOT="${destroot}" post-patch { # Ensure that securesocketclient demo is built. reinplace "s|contains(QT_CONFIG, openssl)|contains(QT_CONFIG, openssl) \\| contains(QT_CONFIG, openssl-linked)|" \ ${worksrcpath}/examples/network/network.pro # Ensure that MacPorts compilers are used. reinplace "s| g++\$| ${configure.cxx}|" ${worksrcpath}/mkspecs/common/g++.conf reinplace "s| gcc\$| ${configure.cc}|" ${worksrcpath}/mkspecs/common/g++.conf reinplace "s| g++\$| ${configure.cxx}|" ${worksrcpath}/mkspecs/common/mac-g++.conf reinplace "s| gcc\$| ${configure.cc}|" ${worksrcpath}/mkspecs/common/g++.conf reinplace "s| g++\$| ${configure.cxx}|" ${worksrcpath}/mkspecs/macx-g++/qmake.conf } post-destroot { # Install documentation. foreach doc { INSTALL LICENSE.LGPL LICENSE.GPL3 LGPL_EXCEPTION.txt README } { xinstall -c -m 644 ${worksrcpath}/$doc ${destroot}${prefix}/share/doc/${portname} } # Create link in ${prefix}/bin to executable files in ${qt_dir}/bin. foreach bin [glob -type f -directory ${destroot}${qt_dir}/bin *] { ln -s ${qt_dir}/bin/[file tail ${bin}] ${destroot}${prefix}/bin } xinstall -d -m 0755 ${destroot}${applications_dir}/Qt # Create link in ${applications_dir}/Qt to .app directories in ${qt_dir}/bin/. # Create link in ${prefix}/bin to all *.app/Contents/MacOS/*. foreach app [glob -type d -directory ${destroot}${qt_dir}/bin *.app] { ln -s ${qt_dir}/bin/[file tail ${app}] ${destroot}${applications_dir}/Qt foreach bin [glob -tails -type f -directory ${app}/Contents/MacOS *] { ln -s ${qt_dir}/bin/[file tail ${app}]/Contents/MacOS/${bin} ${destroot}${prefix}/bin } } # Avoid conflict with other qt packages. # Ensure lower case names. foreach bin [glob ${destroot}${prefix}/bin/*] { file rename ${bin} ${destroot}${prefix}/bin/[string tolower [file tail ${bin}]]-mac } # Fix the .pc and .prl files by removing ${destroot}. foreach fixfile [glob -nocomplain -directory ${destroot} ${qt_dir}/lib/pkgconfig/*.pc ${qt_dir}/lib/*.prl ${qt_dir}/lib/*/*.prl ${prefix}/share/${dirname}/demos/shared/*.prl] { reinplace \ "s|-L${worksrcpath}/lib|-L${qt_dir}/lib|g" \ ${fixfile} reinplace \ "s|-F${worksrcpath}/lib|-F${qt_dir}/lib|g" \ ${fixfile} } # Create link to Frameworks in Frameworks directory. xinstall -d -m 0755 ${destroot}${frameworks_dir} foreach fdir [glob -tails -directory ${destroot}${qt_dir}/lib -nocomplain *.framework] { ln -s ${qt_dir}/lib/${fdir} ${destroot}${frameworks_dir} } # The debug .pc files have no counterpart in qt4-x11, so set a link to them in the pkgconfig directory. xinstall -d -m 0755 ${destroot}${prefix}/lib/pkgconfig foreach fl [glob -tails -directory ${destroot}${qt_dir}/lib/pkgconfig *_debug.pc] { ln -s ${qt_dir}/lib/pkgconfig/${fl} ${destroot}${prefix}/lib/pkgconfig/ } # Install select file for qt4_select. xinstall -m 755 -d ${destroot}${prefix}/etc/select/qt4 xinstall -m 644 ${filespath}/${dirname} ${destroot}${prefix}/etc/select/qt4/ } variant raster description {Use raster graphics system by default} { configure.args-append -graphicssystem raster } variant universal { configure.universal_args-delete --disable-dependency-tracking configure.args-append -arch \"${universal_archs}\" } livecheck.check regex livecheck.url http://trolltech.com/downloads/opensource/appdev/mac-os-cpp livecheck.regex "qt-mac-opensource-src-(4(?:\\.\\d+)*)${extract.suffix}"