source: trunk/dports/gis/qgis/Portfile @ 67650

Last change on this file since 67650 was 67650, checked in by vince@…, 8 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.2 KB
Line 
1# -*- 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
2# $Id: Portfile 67650 2010-05-15 12:41:55Z vince@macports.org $
3
4PortSystem                      1.0
5PortGroup                       cmake   1.0
6name                            qgis
7version                         1.4.0
8categories                      gis
9maintainers                     vince
10description                     QGIS is a user-friendly GIS based on Qt 4
11long_description        QGIS is a GIS. It can visualize, inject data into \
12                                        PostGres/PostGIS, or serve as a Qt front-end to Grass. \
13                                        Extended with Python plugins, it can become a quite \
14                                        powerful GIS on its own.
15
16platforms                       darwin
17license                         GPL
18
19use_parallel_build      no
20homepage                        http://www.qgis.org/
21
22distname                        ${name}_${version}
23master_sites            http://download.osgeo.org/qgis/src/
24
25checksums                       md5     47710e7aa14c2a672c7f28457b0c956f \
26                                        sha1    105f353f36e9625d1eb15f1a315882f214dbe026 \
27                                        rmd160  47486732c8fe37aa6864d09c7420be22de5ea802
28
29worksrcdir                      ${name}-${version}
30
31post-extract {
32                                        system "cd ${worksrcpath} && mkdir build"
33}
34
35patchfiles                      patch-spatialite_c.diff \
36                                        patch-cmake_Python_cmake.diff \
37                                        patch-python_configure_py_in.diff
38
39depends_build           port:cmake
40                                                                       
41depends_lib                     port:libiconv \
42                                        port:expat \
43                                        port:openssl \
44                                        port:proj \
45                                        port:geos \
46                                        port:gdal \
47                                        port:sqlite3 \
48                                        port:gsl
49
50# Python related stuff
51# Checks if Python framework is not buggy
52set Python_FRM          "${frameworks_dir}/Python.framework"
53set Pyver                       [exec python -V |& awk "{print \$2}"]
54
55# Eliminates minor (could also be done with strsed)
56set Pyversion           [join [lrange [split ${Pyver} "."] 0 1] ""]
57set Pyverpath           [join [lrange [split ${Pyver}   "."] 0 1] "."]
58               
59depends_lib-append      port:py${Pyversion}-pyqt4
60
61# Overrides default
62configure.dir           ${worksrcpath}/build                                                                   
63configure.cmd           cmake ..
64
65variant postgis                         description "Build postgis support" {
66       
67        depends_lib-append              port:postgis
68       
69        # Always choose latest installed postgresql version
70
71        set     PGSQL_DIR                       \
72                        [lindex [lsort -dec [glob -d ${prefix}/lib postgresql*]] 0]
73        configure.args-append   "-DPOSTGRESQL_PREFIX=${PGSQL_DIR}"
74        configure.args-append   "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config"
75}
76
77
78variant grass63                         description "Build the grass (6.3) plugin" {
79
80        depends_lib-append              port:grass
81       
82        if {[file exists ${applications_dir}/GRASS-6.3.app]} {
83                configure.args-append \
84                        "-DGRASS_PREFIX=${applications_dir}/GRASS-6.3.app/Contents/MacOS"
85        } else {
86                configure.args-append   "-DGRASS_PREFIX=${prefix}"
87        }
88}
89
90
91variant grass64                         description "Build the grass (6.4) plugin" {
92
93        depends_lib-append              port:grass64
94       
95        if {[file exists ${applications_dir}/GRASS-6.4.app]} {
96                configure.args-append \
97                        "-DGRASS_PREFIX=${applications_dir}/GRASS-6.4.app/Contents/MacOS"
98        } else {
99                configure.args-append   "-DGRASS_PREFIX=${prefix}"
100        }
101}
102
103# LLVM cannot be used (Seg. faults in spatialite.c)
104
105#if {[string first llvm ${configure.cc}] != -1 || \
106#               [string first llvm ${configure.cxx}] != -1} {
107
108#       ui_msg "Warning: Qgis cannot be compiled with LLVM, switching to GCC\n"
109#       set configure.cc                gcc
110#       set configure.cxx               g++
111#}
112
113configure.args-append           "-DCMAKE_CXX_COMPILER=${configure.cxx}"
114configure.args-append           "-DCMAKE_C_COMPILER=${configure.cc}"
115configure.args-append           "-DEXPAT_INCLUDE_DIR=${prefix}/include"
116configure.args-append           "-DEXPAT_LIBRARY=${prefix}/lib/libexpat.dylib"
117configure.args-append           "-DCMAKE_INSTALL_PREFIX=${applications_dir}"
118configure.args-append           "-DGDAL_CONFIG=${prefix}/bin/gdal-config"
119configure.args-append           "-DGDAL_INCLUDE_DIR=${prefix}/include"
120configure.args-append           "-DGDAL_LIBRARY=${prefix}/lib/libgdal.dylib"
121configure.args-append           "-DGEOS_CONFIG=${prefix}/bin/geos-config"
122configure.args-append           "-DGEOS_INCLUDE_DIR=${prefix}/include"
123configure.args-append           "-DGEOS_LIBRARY=${prefix}/lib/libgeos_c.dylib"
124configure.args-append           "-DGEOS_LIB_NAME_WITH_PREFIX=-lgeos_c"
125configure.args-append           "-DGSL_CONFIG=${prefix}/bin/gsl-config"
126configure.args-append           "-DICONV_INCLUDE_DIR=${prefix}/include"
127configure.args-append           "-DICONV_LIBRARY=${prefix}/lib/libiconv.dylib"
128configure.args-append           "-DPROJ_INCLUDE_DIR=${prefix}/include"
129configure.args-append           "-DPROJ_LIBRARY=${prefix}/lib/libproj.dylib"
130configure.args-append           "-DOPENSSL_INCLUDE_DIR=${prefix}/include"
131configure.args-append           "-DOPENSSL_LIBRARIES=${prefix}/lib/libssl.dylib"
132configure.args-append           "-DPYTHON_INCLUDE_PATH=${Python_FRM}/Headers"
133configure.args-append           "-DPYUIC4_PROGRAM=${prefix}/bin/pyuic4-${Pyverpath}"
134configure.args-append           "-DPYRCC4_PROGRAM=${prefix}/bin/pyrcc4-${Pyverpath}"
135configure.args-append           \
136                                "-DSIP_BINARY_PATH=${Python_FRM}/Versions/${Pyverpath}/bin/sip"
137configure.args-append           "-DSIP_INCLUDE_DIR=${Python_FRM}/Headers"
138configure.args-append           "-DQT_QMAKE_EXECUTABLE=${prefix}/bin/qmake-mac"
139configure.args-append           "-DCMAKE_BUILD_TYPE=Release"
140       
141# This is a fake but don't ask me why it is needed
142configure.args-append           "-DSVN_MARKER=/usr/bin/svnversion"
143
144pre-extract {
145        if {![file exists ${Python_FRM}]} {
146                ui_error                "Qgis requires python" 
147        }
148}
149
150# Patch for proper linking of our own Python framework
151post-configure {
152        reinplace -E "s|(g\\+\\+\[^ ]+)|\\1 -F${frameworks_dir}|" \
153                ${worksrcpath}/build/src/python/CMakeFiles/qgispython.dir/link.txt
154}
155
156# Setup Python stuff in order to gracefully link against -framework Python
157pre-build {
158        if {! [file exists ${Python_FRM}/Headers]} {
159                ui_msg                          "Patching (temporarily) the Python framework\
160                                                        (See http://trac.macports.org/ticket/21614)"
161               
162                if {[variant_isset universal] && ${Pyversion} < 26} {
163                        ui_error                "Universal build requires Python > 2.5"
164                }
165                                                                                                 
166                system  "cd ${Python_FRM} ; \
167                        ln -s Versions/${Pyverpath}/include/python${Pyverpath} Headers ; \
168                        ln -s Versions/${Pyverpath}/Python . ; \
169                        ln -s Versions/${Pyverpath}/Resources . ; \
170                        touch /private/tmp/qgis_pypatch"
171        } else {
172                # Checks for inconsistencies and set dependencies accordingly
173       
174                if {${Pyver} != [exec cat ${Python_FRM}/Headers/patchlevel.h | \
175                                                grep "PY_VERSION " | awk "{print \$3}" | \
176                                                sed "s/\\\"//g"]} {     
177                        ui_error        "Inconsistent Python framework installation."
178                }
179        }
180}
181
182use_parallel_build                      yes
183build.dir                                       ${worksrcpath}/build
184
185post-destroot {
186        if {[file exists /private/tmp/qgis_pypatch]} {
187                ui_msg                          "Removing patched Framework"
188                system                          "cd ${Python_FRM} ; \
189                                                        rm -f Headers Python Resources ; \
190                                                        rm -f /private/tmp/qgis_pypatch"
191        }
192}
193
194destroot.target                         install
Note: See TracBrowser for help on using the repository browser.