# -*- 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 69520 2010-07-08 20:19:52Z jmr@macports.org $ PortSystem 1.0 PortGroup select 1.0 set select_group qt4 set select_branch mac set select_port ${select_group}_select set select_name ${select_group}-${select_branch} # select.group ${select_group} name ${select_name} #conflicts kdelibs3 kdelibs4 xmlrpcxx version 4.6.3 revision 3 categories aqua platforms macosx maintainers michaelld homepage http://qt.nokia.com/ description Qt Tool Kit (Native Aqua Version) long_description \ Qt is a cross-platform application and UI framework for writing \ cross-platform GUI applications. This version uses the native Aqua UI. \ For a X11 version, see qt4-x11\[-devel\]. master_sites trolltech distname qt-everywhere-opensource-src-${version} checksums md5 5c69f16d452b0bb3d44bc3c10556c072 \ sha1 1c18a564df9296c7cb0e0dedde40b9843e1b30e8 \ rmd160 ceb3ca78263d0d9cdf92fef903e30c0026db6bff depends_build port:pkgconfig port:${select_port} depends_lib port:zlib port:dbus port:openssl port:sqlite3 \ port:tiff port:libpng port:libmng port:jpeg # Test for Precompiled-headers support requires a C++ compiler, # but configure calls it, by default, with a C compiler. patchfiles patch-precomp.test.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} ################################################################################ # We do not want flags of any kind -- QT is smart enough to set up its own. # ################################################################################ configure.cflags configure.cppflags configure.cxxflags configure.ldflags configure.universal_cflags configure.universal_cppflags configure.universal_cxxflags configure.universal_ldflags configure.cc_archflags configure.cxx_archflags if {[info exists configure.ld_archflags]} { configure.ld_archflags } set dirname ${name} set qt_dir ${prefix}/libexec/${dirname} # use compiler.cpath and compiler.library_path, as per # http://trac.macports.org/ticket/25321 for all -I and -L entries, # so-as to avoid conflicts with already-installed headers and # libraries (giving preference to internal-to-this-port first) # # CPATH is used instead of -I to avoid conflicts with other ports. # See http://trac.macports.org/ticket/15219 and # http://trac.macports.org/ticket/18723. # # set the default paths to include those for SQLITE3 and DBUS-1 set header_path [ list ${prefix}/include/dbus-1.0 \ ${prefix}/lib/dbus-1.0/include \ ${prefix}/include ] set library_path [ list ${prefix}/lib ] # -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 \ -opensource \ -prefix ${qt_dir} \ -docdir ${qt_dir}/share/doc/${dirname} \ -examplesdir ${qt_dir}/share/${dirname}/examples \ -demosdir ${qt_dir}/share/${dirname}/demos \ -cocoa \ -system-sqlite \ -openssl-linked \ -dbus-linked \ -arch \"${build_arch}\" # Stop configure script from searching for SQL Drivers # not available from MacPorts. foreach driver {db2 ibase oci sqlite_symbian 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} } # use the corrected CPATH and LIBRARY_PATH for configure pre-configure { compiler.cpath [join ${header_path} :] compiler.library_path [join ${library_path} :] } # Remove any '-I' string from the C*FLAGS for SQLITE and DBUS, so that # what remains are just non-I flags; these paths are in compiler.cpath . # The includes for all the other variants are not used by # 'configure', and are already included in the compiler.cpath . post-configure { # SQLITE first reinplace "/CFLAGS_SQLITE/s@-I${prefix}/\[^ \]*include\[^ \]*@@g" \ ${worksrcpath}/.qmake.cache # DBUS last reinplace "/CFLAGS_DBUS/s@-I${prefix}/\[^ \]*include\[^ \]*@@g" \ ${worksrcpath}/.qmake.cache # during the 'build' stage, 'make' will rebuild the Makefiles that # depend on any of these changed files. } # use the corrected CPATH and LIBRARY_PATH for build pre-build { compiler.cpath [join ${header_path} :] compiler.library_path [join ${library_path} :] } variant mysql description {Enable MySQL SQL Driver} { depends_lib-append path:lib/mysql5:mysql5 lunshift header_path ${prefix}/include/mysql5/mysql lunshift library_path ${prefix}/lib/mysql5/mysql configure.args-delete -no-sql-mysql } variant odbc description {Enable iODBC SQL Driver} { depends_lib-append port:libiodbc configure.args-delete -no-sql-odbc } variant psql description {Enable PostgreSQL SQL Driver} { depends_lib-append port:postgresql83 lunshift header_path ${prefix}/include/postgresql83 lunshift library_path ${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 raster description {Use raster graphics system by default} { configure.args-append -graphicssystem raster } variant no_demos description {Do not build demo programs} { configure.args-append -nomake demos } variant no_examples description {Do not build example programs} { configure.args-append -nomake examples } variant no_debug description {Do not include debugging libraries and pkgconfig files} { configure.args-delete -debug-and-release configure.args-append -release } variant universal { configure.universal_args-delete --disable-dependency-tracking configure.args-delete -arch \"${build_arch}\" configure.args-append -arch \"${universal_archs}\" if {[info exists universal_sysroot]} { configure.args-append -sdk ${universal_sysroot} } } # use the 10.4 SDK (the default) for 10.4 only. # and, build as Carbon by disabling Cocoa. platform darwin 8 { configure.args-delete -cocoa post-configure { fs-traverse item ${worksrcpath} { if {"Makefile" == [file tail ${item}]} { reinplace "s|-framework QtHelp|-framework QtHelp -lQtCLucene|" ${item} } } } } # use the 10.5 SDK for 10.5, # but only if not (doing universal and the universal sysroot is set) platform darwin 9 { if {![variant_isset universal] || ![info exists universal_sysroot]} { if {[file exists /Developer/SDKs/MacOSX10.5.sdk]} { configure.args-append -sdk /Developer/SDKs/MacOSX10.5.sdk/ } else { ui_msg "No SDK found in Developer/SDKs ; \ configure will probably fail. \n \ Please install Apple's Developer Tools again." } } } # use the 10.6 SDK for 10.6 # but only if not (doing universal and the universal sysroot is set) platform darwin 10 { if {![variant_isset universal] || ![info exists universal_sysroot]} { if {[file exists /Developer/SDKs/MacOSX10.6.sdk]} { configure.args-append -sdk /Developer/SDKs/MacOSX10.6.sdk/ } else { ui_msg "No SDK found in /Developer/SDKs ; \ configure will probably fail. \n \ Please install Apple's Developer Tools again." } } } build.target first use_parallel_build yes destroot.destdir INSTALL_ROOT="${destroot}" post-patch { # Ensure that correct 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/macx-g++/qmake.conf reinplace "s| gcc\$| ${configure.cc}|" ${worksrcpath}/mkspecs/macx-g++/qmake.conf } post-destroot { # Fix .pc and .prl files by changing ${destroot}/lib to ${qt_dir}/lib foreach fixfile [glob -nocomplain -directory ${destroot} ${qt_dir}/lib/pkgconfig/* ${qt_dir}/lib/*.prl ${qt_dir}/lib/*/*.prl ${qt_dir}/share/${dirname}/demos/shared/*.prl] { reinplace \ "s|${worksrcpath}/lib|${qt_dir}/lib|g" \ ${fixfile} } # Install documentation. foreach doc { INSTALL LGPL_EXCEPTION.txt LICENSE.GPL3 LICENSE.LGPL README } { xinstall -c -m 644 ${worksrcpath}/${doc} \ ${destroot}${qt_dir}/share/doc/${name} } # Fix includes # (1) Remove include/Qt ; it should never be used if {[file exists ${destroot}${qt_dir}/include/Qt]} { delete ${destroot}${qt_dir}/include/Qt } # (2) remove from ${qt_dir}/include/FOO, for each FOO in the # frameworks, and link into the headers provided by the FOO framework foreach fms [glob -nocomplain -directory ${destroot} \ ${qt_dir}/lib/*.framework] { # 0: split the framework abs path using '/' set tmp [split ${fms} /] # 1: retrieve the framework name set tfm [lindex [split [lindex ${tmp} [expr [llength ${tmp}] - 1]] .] 0] # 2: remove the include directory, if it exists if {[file exists ${destroot}${qt_dir}/include/${tfm}] } { # if it exists delete ${destroot}${qt_dir}/include/${tfm} } # 3: link into the framework's Headers ln -s ${qt_dir}/lib/${tfm}.framework/Headers \ ${destroot}${qt_dir}/include/${tfm} } # install the select file xinstall -m 755 -d ${destroot}${prefix}/etc/select/${select_group} xinstall -c -m 644 ${filespath}/${select_name} \ ${destroot}${prefix}/etc/select/${select_group}/${select_name} # then, reinplace the select file as necessary for variants; put # these here instead of in the variants because I don't know which # are executed first (this post-destroot or a variant's) & the # select file needs to be in place first. if {[variant_isset no_debug]} { # remove select entries for debug reinplace "/debug/ c\\\n-\n" \ ${destroot}${prefix}/etc/select/${select_group}/${select_name} } if {[variant_isset no_demo]} { # remove select entries for demo reinplace "/demo/ c\\\n-\n" \ ${destroot}${prefix}/etc/select/${select_group}/${select_name} # special case: if no examples and no debug, if {[variant_isset no_examples]} { # remove select entry for share/qt4-mac reinplace "/share\\/qt4-mac/ c\\\n-\n" \ ${destroot}${prefix}/etc/select/${select_group}/${select_name} } } } post-activate { # If this is the first qt4-* installed, select it. set current_select [exec ${prefix}/bin/${select_port} -s] if {${current_select} == "none"} { system "${prefix}/bin/${select_port} ${select_name}" } else { if {${current_select} != ${select_name}} { # Print out the 'select' info. ui_msg "\ Port ${current_select} is already selected.\n \ To fully complete this installation and make ${name} the default,\n \ please run:\n \ \tsudo ${select_port} ${select_name}" } } } pre-deactivate { # If this is qt4-* is selected, select 'none' & tell the user if { [exec ${prefix}/bin/${select_port} -s] == ${select_name} } { system "${prefix}/bin/${select_port} none" ui_msg "\ Port '${current_select}' was selected; none is now selected.\n \ To select another port for group '${select_group}', \ please run '${select_port}'." } # remove case-sensitive ${prefix}/${qt_dir}/include/phonon/[Pp]honon foreach tf [glob -directory ${prefix}/${qt_dir}/include/phonon \ ?honon] { delete ${tf} } } livecheck.type regex livecheck.url http://get.qt.nokia.com/qt/source/ livecheck.regex "qt-everywhere-opensource-src-(\[0-9a-z.-\]+)${extract.suffix}"