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

Last change on this file since 60454 was 60454, checked in by ryandesign@…, 10 years ago

Set svn:keywords to Id per current guidelines

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 7.0 KB
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=2:ts=2:sts=2
2# $Id: Portfile 60454 2009-11-12 23:35:31Z ryandesign@macports.org $
3
4PortSystem                                                      1.0
5
6name                                                                            qgis
7version                                                                 1.3.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
19homepage                                                                http://www.qgis.org/
20
21distname                                                                ${name}_${version}
22master_sites                                            http://download.osgeo.org/qgis/src/
23
24checksums                                                               md5     c75d0912011fe41a4e4a316ea323f73a \
25                                                                                                sha1    6c2f4cf5db8d5b513306465bfd160bdfa9a727af \
26                                                                                                rmd160  c2ffd90468b7f9cd49d2ba878a6572e8f19e137a
27
28worksrcdir                                                      ${name}-${version}
29
30post-extract    {
31        system                                                          "cd ${worksrcpath} && mkdir build"
32}
33
34patchfiles                                                      patch-spatialite_c.diff
35
36depends_build                                           port:cmake
37                                                                       
38depends_lib                                                     port:libiconv \
39                                                                                                port:expat \
40                                                                                                port:openssl \
41                                                                                                port:proj \
42                                                                                                port:geos \
43                                                                                                port:gdal \
44                                                                                                port:sqlite3 \
45                                                                                                port:gsl
46
47# Python related stuff
48# Checks if Python framework is not buggy
49set Python_FRM                                  "${frameworks_dir}/Python.framework"
50        if {! [file exists ${Python_FRM}]} {
51                ui_error                                                "Qgis requires python" 
52        }
53
54set Pyver                                                       [exec python -V |& awk "{print \$2}"]
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
62configure.dir                                           ${worksrcpath}/build                                                                   
63configure.cmd                                           cmake ..
64
65# Start with no configure arguments: override defaults
66configure.pre_args
67configure.args
68configure.universal_args
69
70
71variant postgis                                 description "Build postgis support" {
72        depends_lib-append              port:postgis
73       
74        # Always choose latest installed postgresql version
75
76        set     PGSQL_DIR                                       \
77                                                                                [lindex [lsort -dec [glob -d ${prefix}/lib postgresql*]] 0]
78        configure.args-append "-DPOSTGRESQL_PREFIX=${PGSQL_DIR}"
79        configure.args-append   "-DPOSTGRES_CONFIG=${PGSQL_DIR}/bin/pg_config"
80}
81
82
83variant grass63                                 description "Build the grass (6.3) plugin" {
84
85        depends_lib-append              port:grass
86       
87        if {[file exists ${applications_dir}/GRASS-6.3.app]} {
88                configure.args-append \
89                        "-DGRASS_PREFIX=${applications_dir}/GRASS-6.3.app/Contents/MacOS"
90        } else {
91                configure.args-append   "-DGRASS_PREFIX=${prefix}"
92        }
93}
94
95
96variant grass64                                 description "Build the grass (6.4) plugin" {
97
98        depends_lib-append              port:grass64
99       
100        if {[file exists ${applications_dir}/GRASS-6.4.app]} {
101                configure.args-append \
102                        "-DGRASS_PREFIX=${applications_dir}/GRASS-6.4.app/Contents/MacOS"
103        } else {
104                configure.args-append   "-DGRASS_PREFIX=${prefix}"
105        }
106}
107
108
109variant universal                               description "Builds universal app" {
110                set archs                                       "-DCMAKE_OSX_ARCHITECTURES=\""
111
112                foreach arch ${configure.universal_archs} {
113                        append archs ${arch} ";"
114                }
115                configure.args-append "${archs}\""
116                set sysroot                                             [lindex [exec ls /Developer/SDKs] end]
117                configure.args-append "-DCMAKE_OSX_SYSROOT=/Developer/SDKs/${sysroot}"
118}
119
120# LLVM cannot be used (Seg. faults in spatialite.c)
121
122if {[string first llvm ${configure.cc}] != -1 || \
123                [string first llvm ${configure.cxx}] != -1} {
124
125        ui_msg "Warning: Qgis cannot be compiled with LLVM, switching to GCC\n"
126        set configure.cc                gcc
127        set configure.cxx               g++
128}
129
130configure.args-append           "-DCMAKE_CXX_COMPILER=${configure.cxx}"
131configure.args-append           "-DCMAKE_C_COMPILER=${configure.cc}"
132configure.args-append           "-DEXPAT_INCLUDE_DIR=${prefix}/include"
133configure.args-append           "-DEXPAT_LIBRARY=${prefix}/lib/libexpat.dylib"
134configure.args-append           "-DCMAKE_INSTALL_PREFIX=${applications_dir}"
135configure.args-append           "-DGDAL_CONFIG=${prefix}/bin/gdal-config"
136configure.args-append           "-DGDAL_INCLUDE_DIR=${prefix}/include"
137configure.args-append           "-DGDAL_LIBRARY=${prefix}/lib/libgdal.dylib"
138configure.args-append           "-DGEOS_CONFIG=${prefix}/bin/geos-config"
139configure.args-append           "-DGEOS_INCLUDE_DIR=${prefix}/include"
140configure.args-append           "-DGEOS_LIBRARY=${prefix}/lib/libgeos_c.dylib"
141configure.args-append           "-DGEOS_LIB_NAME_WITH_PREFIX=-lgeos_c"
142configure.args-append           "-DGSL_CONFIG=${prefix}/bin/gsl-config"
143configure.args-append           "-DICONV_INCLUDE_DIR=${prefix}/include"
144configure.args-append           "-DICONV_LIBRARY=${prefix}/lib/libiconv.dylib"
145configure.args-append           "-DPROJ_INCLUDE_DIR=${prefix}/include"
146configure.args-append           "-DPROJ_LIBRARY=${prefix}/lib/libproj.dylib"
147configure.args-append           "-DOPENSSL_INCLUDE_DIR=${prefix}/include"
148configure.args-append           "-DOPENSSL_LIBRARIES=${prefix}/lib/libssl.dylib"
149configure.args-append           "-DPYTHON_INCLUDE_PATH=${Python_FRM}/Headers"
150configure.args-append           "-DPYUIC4_PROGRAM=${prefix}/bin/pyuic4-${Pyverpath}"
151configure.args-append           "-DPYRCC4_PROGRAM=${prefix}/bin/pyrcc4-${Pyverpath}"
152configure.args-append           \
153                                                        "-DSIP_BINARY_PATH=${Python_FRM}/Versions/${Pyverpath}/bin/sip"
154configure.args-append           "-DSIP_INCLUDE_DIR=${Python_FRM}/Headers"
155configure.args-append           "-DQT_QMAKE_EXECUTABLE=${prefix}/bin/qmake-mac"
156configure.args-append           "-DCMAKE_BUILD_TYPE=Release"
157       
158# This is a fake but don't ask me why it is needed
159configure.args-append           "-DSVN_MARKER=/usr/bin/svnversion"
160
161# Patch for proper linking of our own Python framework
162post-configure {
163        reinplace -E "s|g\\+\\+|g\\+\\+ -F${frameworks_dir}|" \
164                ${worksrcpath}/build/src/python/CMakeFiles/qgispython.dir/link.txt
165               
166# Adapts for new Sip 4.6
167        reinplace -E \
168                "s|sipClass(_\[^,\]+)|(sipWrapperType *) sipTypeAsPyTypeObject\
169                (sipType\\1)|" \
170                ${worksrcpath}/python/core/conversions.sip
171}
172
173# Setup Python stuff in order to gracefully link against -framework Python
174pre-build {
175        if {! [file exists ${Python_FRM}/Headers]} {
176                ui_msg                                                  "Patching (temporarily) the Python framework\
177                                                                                                 (See http://trac.macports.org/ticket/21614)"
178               
179                if {[variant_isset universal] && ${Pyversion} < 26} {
180                        ui_error                                        "Universal build requires Python > 2.5"
181                }
182                                                                                                 
183                system                                                  "cd ${Python_FRM} ; \
184                                                                                                        ln -s Versions/${Pyverpath}/include/python${Pyverpath} Headers ; \
185                                                                                                        ln -s Versions/${Pyverpath}/Python . ; \
186                                                                                                        ln -s Versions/${Pyverpath}/Resources . ; \
187                                                                                                        touch /private/tmp/qgis_pypatch"
188        } else {
189                # Checks for inconsistencies and set dependencies accordingly
190       
191                if {${Pyver} !=                 [exec cat ${Python_FRM}/Headers/patchlevel.h | \
192                                                                                                 grep "PY_VERSION " | awk "{print \$3}" | \
193                                                                                                 sed "s/\\\"//g"]} {   
194                        ui_error                                        "Inconsistent Python framework installation."
195                }
196        }
197       
198}
199
200use_parallel_build                      yes
201build.dir                                                               ${worksrcpath}/build
202
203post-destroot {
204        if {[file exists /private/tmp/qgis_pypatch]} {
205                ui_msg                                                  "Removing patched Framework"
206                system                                                  "cd ${Python_FRM} ; \
207                                                                                                        rm -f Headers Python Resources ; \
208                                                                                                        rm -f /private/tmp/qgis_pypatch"
209        }
210}
211
212destroot.target                                 install
Note: See TracBrowser for help on using the repository browser.