# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 # $Id: Portfile 67650 2010-05-15 12:41:55Z vince@macports.org $ PortSystem 1.0 PortGroup cmake 1.0 name qgis version 1.4.0 categories gis maintainers vince description QGIS is a user-friendly GIS based on Qt 4 long_description QGIS is a GIS. It can visualize, inject data into \ PostGres/PostGIS, or serve as a Qt front-end to Grass. \ Extended with Python plugins, it can become a quite \ powerful GIS on its own. platforms darwin license GPL use_parallel_build no homepage http://www.qgis.org/ distname ${name}_${version} master_sites http://download.osgeo.org/qgis/src/ checksums md5 47710e7aa14c2a672c7f28457b0c956f \ sha1 105f353f36e9625d1eb15f1a315882f214dbe026 \ rmd160 47486732c8fe37aa6864d09c7420be22de5ea802 worksrcdir ${name}-${version} post-extract { system "cd ${worksrcpath} && mkdir build" } patchfiles patch-spatialite_c.diff \ patch-cmake_Python_cmake.diff \ patch-python_configure_py_in.diff depends_build port:cmake depends_lib port:libiconv \ port:expat \ port:openssl \ port:proj \ port:geos \ port:gdal \ port:sqlite3 \ port:gsl # Python related stuff # Checks if Python framework is not buggy set Python_FRM "${frameworks_dir}/Python.framework" set Pyver [exec python -V |& awk "{print \$2}"] # Eliminates minor (could also be done with strsed) set Pyversion [join [lrange [split ${Pyver} "."] 0 1] ""] set Pyverpath [join [lrange [split ${Pyver} "."] 0 1] "."] depends_lib-append port:py${Pyversion}-pyqt4 # Overrides default configure.dir ${worksrcpath}/build configure.cmd cmake .. variant postgis description "Build postgis support" { depends_lib-append port:postgis # Always choose latest installed postgresql version set PGSQL_DIR \ [lindex [lsort -dec [glob -d ${prefix}/lib postgresql*]] 0] configure.args-append "-DPOSTGRESQL_PREFIX=${PGSQL_DIR}" configure.args-append "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config" } variant grass63 description "Build the grass (6.3) plugin" { depends_lib-append port:grass if {[file exists ${applications_dir}/GRASS-6.3.app]} { configure.args-append \ "-DGRASS_PREFIX=${applications_dir}/GRASS-6.3.app/Contents/MacOS" } else { configure.args-append "-DGRASS_PREFIX=${prefix}" } } variant grass64 description "Build the grass (6.4) plugin" { depends_lib-append port:grass64 if {[file exists ${applications_dir}/GRASS-6.4.app]} { configure.args-append \ "-DGRASS_PREFIX=${applications_dir}/GRASS-6.4.app/Contents/MacOS" } else { configure.args-append "-DGRASS_PREFIX=${prefix}" } } # LLVM cannot be used (Seg. faults in spatialite.c) #if {[string first llvm ${configure.cc}] != -1 || \ # [string first llvm ${configure.cxx}] != -1} { # ui_msg "Warning: Qgis cannot be compiled with LLVM, switching to GCC\n" # set configure.cc gcc # set configure.cxx g++ #} configure.args-append "-DCMAKE_CXX_COMPILER=${configure.cxx}" configure.args-append "-DCMAKE_C_COMPILER=${configure.cc}" configure.args-append "-DEXPAT_INCLUDE_DIR=${prefix}/include" configure.args-append "-DEXPAT_LIBRARY=${prefix}/lib/libexpat.dylib" configure.args-append "-DCMAKE_INSTALL_PREFIX=${applications_dir}" configure.args-append "-DGDAL_CONFIG=${prefix}/bin/gdal-config" configure.args-append "-DGDAL_INCLUDE_DIR=${prefix}/include" configure.args-append "-DGDAL_LIBRARY=${prefix}/lib/libgdal.dylib" configure.args-append "-DGEOS_CONFIG=${prefix}/bin/geos-config" configure.args-append "-DGEOS_INCLUDE_DIR=${prefix}/include" configure.args-append "-DGEOS_LIBRARY=${prefix}/lib/libgeos_c.dylib" configure.args-append "-DGEOS_LIB_NAME_WITH_PREFIX=-lgeos_c" configure.args-append "-DGSL_CONFIG=${prefix}/bin/gsl-config" configure.args-append "-DICONV_INCLUDE_DIR=${prefix}/include" configure.args-append "-DICONV_LIBRARY=${prefix}/lib/libiconv.dylib" configure.args-append "-DPROJ_INCLUDE_DIR=${prefix}/include" configure.args-append "-DPROJ_LIBRARY=${prefix}/lib/libproj.dylib" configure.args-append "-DOPENSSL_INCLUDE_DIR=${prefix}/include" configure.args-append "-DOPENSSL_LIBRARIES=${prefix}/lib/libssl.dylib" configure.args-append "-DPYTHON_INCLUDE_PATH=${Python_FRM}/Headers" configure.args-append "-DPYUIC4_PROGRAM=${prefix}/bin/pyuic4-${Pyverpath}" configure.args-append "-DPYRCC4_PROGRAM=${prefix}/bin/pyrcc4-${Pyverpath}" configure.args-append \ "-DSIP_BINARY_PATH=${Python_FRM}/Versions/${Pyverpath}/bin/sip" configure.args-append "-DSIP_INCLUDE_DIR=${Python_FRM}/Headers" configure.args-append "-DQT_QMAKE_EXECUTABLE=${prefix}/bin/qmake-mac" configure.args-append "-DCMAKE_BUILD_TYPE=Release" # This is a fake but don't ask me why it is needed configure.args-append "-DSVN_MARKER=/usr/bin/svnversion" pre-extract { if {![file exists ${Python_FRM}]} { ui_error "Qgis requires python" } } # Patch for proper linking of our own Python framework post-configure { reinplace -E "s|(g\\+\\+\[^ ]+)|\\1 -F${frameworks_dir}|" \ ${worksrcpath}/build/src/python/CMakeFiles/qgispython.dir/link.txt } # Setup Python stuff in order to gracefully link against -framework Python pre-build { if {! [file exists ${Python_FRM}/Headers]} { ui_msg "Patching (temporarily) the Python framework\ (See http://trac.macports.org/ticket/21614)" if {[variant_isset universal] && ${Pyversion} < 26} { ui_error "Universal build requires Python > 2.5" } system "cd ${Python_FRM} ; \ ln -s Versions/${Pyverpath}/include/python${Pyverpath} Headers ; \ ln -s Versions/${Pyverpath}/Python . ; \ ln -s Versions/${Pyverpath}/Resources . ; \ touch /private/tmp/qgis_pypatch" } else { # Checks for inconsistencies and set dependencies accordingly if {${Pyver} != [exec cat ${Python_FRM}/Headers/patchlevel.h | \ grep "PY_VERSION " | awk "{print \$3}" | \ sed "s/\\\"//g"]} { ui_error "Inconsistent Python framework installation." } } } use_parallel_build yes build.dir ${worksrcpath}/build post-destroot { if {[file exists /private/tmp/qgis_pypatch]} { ui_msg "Removing patched Framework" system "cd ${Python_FRM} ; \ rm -f Headers Python Resources ; \ rm -f /private/tmp/qgis_pypatch" } } destroot.target install