Files

288 lines
9.4 KiB
Plaintext

# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; truncate-lines: t -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4
PortSystem 1.0
name qwt
categories graphics science
# actually a little more permissive than the standard LGPL, but the
# distinction doesn't matter to us.
license LGPL-2.1
maintainers {michaelld @michaelld} openmaintainer
homepage http://qwt.sourceforge.net
master_sites sourceforge:qwt
use_bzip2 yes
use_parallel_build no
platforms darwin
if {${subport} eq ${name}} {
version 5.1.2
distname qwt-${version}
revision 3
conflicts qwt52 qwt60 qwt61
checksums sha1 2fc04b78c438635a78e41a22fea6f9e016f7ca17 \
rmd160 a5a94aa3870a631f9605e6370c4d04fb1c79347e
patchfiles patch-qwtconfig.pri.51.diff
livecheck.url http://sourceforge.net/api/file/index/project-id/13693/mtime/desc/rss
livecheck.regex \\/qwt\\/(5\\.1\\.\\d+)\\/
}
subport qwt52 {
version 5.2.3
revision 1
distname qwt-${version}
conflicts qwt qwt60 qwt61
checksums sha1 ff81595a1641a8b431f98d6091bb134bc94e0003 \
rmd160 9b2128ad2b53a65678f9ea57d34cdc73a3674d21
patchfiles patch-qwtconfig.pri.52.diff
livecheck.url http://sourceforge.net/api/file/index/project-id/13693/mtime/desc/rss
livecheck.regex \\/qwt\\/(5\\.2\\.\\d+)\\/
}
subport qwt60 {
version 6.0.2
revision 1
distname qwt-${version}
conflicts qwt qwt52 qwt61
checksums sha1 cbdd00b29521987c9e7bc6aa51092f0474b9428d \
rmd160 c9d31f40b6001f09c59dbf4c0628ddd860474821
patchfiles patch-qwtconfig.pri.60.diff \
patch-qwtbuild.pri.60.diff \
patch-qwtfunctions.pri.60.diff \
patch-designer_designer.pro.60.diff
livecheck.url http://sourceforge.net/api/file/index/project-id/13693/mtime/desc/rss
livecheck.regex \\/qwt\\/(6\\.0\\.\\d+)\\/
}
subport qwt61 {
version 6.1.3
distname qwt-${version}
conflicts qwt qwt52 qwt60
checksums rmd160 1e36e79dab0ecc4df89d9fb20607925fe261c6b3 \
sha256 f3ecd34e72a9a2b08422fb6c8e909ca76f4ce5fa77acad7a2883b701f4309733
use_parallel_build yes
if {![variant_isset qt4] && ![variant_isset qt5]} {
default_variants +qt4
}
patchfiles patch-designer_designer.pro.61.diff \
patch-qwtconfig.pri.61.diff \
patch-qwtbuild.pri.61.diff
livecheck.url http://sourceforge.net/api/file/index/project-id/13693/mtime/desc/rss
livecheck.regex \\/qwt\\/(6\\.1\\.\\d+)\\/
post-patch {
reinplace "s|@INSTALL_DOCS@@|${qt_docs_dir}/${subport}|" \
${worksrcpath}/qwtconfig.pri
reinplace "s|@INSTALL_HEADERS@@|${qt_includes_dir}|" \
${worksrcpath}/qwtconfig.pri
}
}
# get qwt's version numbers
global qwt_major, qwt_minor, qwt_patch
set qwt_vers [split ${version} "."]
set qwt_major [lindex ${qwt_vers} 0]
set qwt_minor [lindex ${qwt_vers} 1]
set qwt_patch [lindex ${qwt_vers} 2]
set qwt_maj_min ${qwt_major}.${qwt_minor}
description QWT: Qt Widgets for Technical Applications, \
Version ${qwt_maj_min}
long_description ${description}\nThe Qwt library contains GUI \
Components and utility classes which are primarily useful for \
programs with a technical background. Beside a 2D plot widget it \
provides scales, sliders, dials, compasses, thermometers, wheels \
and knobs to control or display values, arrays, or ranges of type \
double. QWT version ${qwt_maj_min} contains source incompatible \
changes versus other versions of QWT.
post-patch {
# setup for debug, if selected
if {[variant_isset debug]} {
if {${qwt_major} == 5} {
reinplace "/CONFIG/s@release@debug_and_release build_all@" \
${worksrcpath}/qwtconfig.pri
} else {
reinplace "/CONFIG/s@release@debug_and_release build_all@" \
${worksrcpath}/qwtbuild.pri
}
}
# set arch type(s)
if {${qwt_major} == 5} {
reinplace "s/@ARCHES@/${qt_arch_types}/" \
${worksrcpath}/qwtconfig.pri
} else {
reinplace "s/@ARCHES@/${qt_arch_types}/" \
${worksrcpath}/qwtbuild.pri
}
# setup for examples, if selected
if {![variant_isset examples]} {
# I presume this worked with qwt < 6.1
reinplace "s@QwtExamples@@" \
${worksrcpath}/qwtconfig.pri
} else {
# qwt 6.1.2 disables the examples by default, so reenable them when requested
reinplace "s@#QWT_CONFIG += QwtExamples@QWT_CONFIG += QwtExamples@" \
${worksrcpath}/qwtconfig.pri
}
}
if {${qwt_major} < 6} {
# QWT version 5 can work with Qt3 or Qt4
variant qt3 conflicts qt4 description {Use qt3-mac} {}
variant qt4 conflicts qt3 description {Use qt4-mac} {}
# move setting of 'qt_qmake_cmd' outside variants, since 'if'
# statements are processed in-order while variants are processed after
# everything else.
set qt_qmake_cmd ""
if {[variant_isset qt3]} {
depends_lib-append port:qt3-mac
set qt_qmake_cmd ${prefix}/libexec/qt3-mac/bin/qmake
} else {
# when variant 'qt3' is not set, use qt4 whether by default or via
# the user's variant choice
if {![variant_isset qt4]} {
default_variants +qt4
}
PortGroup qmake 1.0
qt4.debug_variant no
}
} else {
variant qt5 conflicts qt4 description "Build with Qt5" {}
variant qt4 conflicts qt5 description "Build with Qt4" {}
# QWT 6+ uses Qt4+ only
if {![variant_isset qt5]} {
PortGroup qt4 1.0
PortGroup qmake 1.0
} else {
#PortGroup qt5 1.0
PortGroup qmake5 1.0
depends_lib-append port:qt5-qtbase port:qt5-qtsvg
set qt_arch_types "x86_64"
post-patch {
reinplace "s|QT_STATIC_CONST|static const|" \
${worksrcpath}/src/qwt_scale_map.cpp \
${worksrcpath}/src/qwt_scale_map.h
reinplace "s/QT_INSTALL_FRAMEWORKS/QT_INSTALL_LIBS/" \
${worksrcpath}/qwtconfig.pri
}
configure.args-append \
-config absolute_library_soname
}
}
# configure.cmd ${qt_qmake_cmd}
# configure.pre_args-delete --prefix=${prefix}
configure.pre_args-append INSTALLBASE="${prefix}"
# qmake does not handle these flags
configure.universal_args-delete --disable-dependency-tracking
configure.args-delete --disable-dependency-tracking
# allow ccache, if specified by the user
pre-build {
if {[tbool configure.ccache]} {
build.post_args "CCACHE=ccache"
}
}
post-destroot {
# if qwt is installed as a framework,
# link in as libraries and headers too
if {[file exists ${destroot}${qt_frameworks_dir}/qwt.framework/qwt]} {
global qwt_major, qwt_minor, qwt_patch
foreach fixfile [exec find ${destroot}${qt_frameworks_dir} \
-name "*.framework" | \
sed -e "s@${destroot}@@g"] {
set tf_full [strsed ${fixfile} {s@\\.framework@@}]
set tf [strsed ${tf_full} {g@.*\/@@}]
# link headers into ${qt_includes_dir}, removing
# directories if they are already there first
file mkdir ${destroot}${qt_includes_dir}
file mkdir ${destroot}${qt_libs_dir}
set inc_file ${destroot}${qt_includes_dir}/${tf}
if {[file exists ${inc_file}]} {
file delete -force ${inc_file}
}
ln -s ${tf_full}.framework/Headers ${inc_file}
# link libraries into ${qt_libs_dir}
set libs_dir ${destroot}${qt_libs_dir}
ln -s ${tf_full}.framework/${tf} \
${libs_dir}/lib${tf}.dylib
ln -s ${tf_full}.framework/${tf} \
${libs_dir}/lib${tf}.${qwt_major}.dylib
ln -s ${tf_full}.framework/${tf} \
${libs_dir}/lib${tf}.${qwt_major}.${qwt_minor}.dylib
ln -s ${tf_full}.framework/${tf} \
${libs_dir}/lib${tf}.${qwt_major}.${qwt_minor}.${qwt_patch}.dylib
if {[variant_isset debug]} {
# link debug libraries into ${qt_libs_dir}
ln -s ${tf_full}.framework/${tf}_debug \
${libs_dir}/lib${tf}_debug.dylib
ln -s ${tf_full}.framework/${tf}_debug \
${libs_dir}/lib${tf}_debug.${qwt_major}.dylib
ln -s ${tf_full}.framework/${tf}_debug \
${libs_dir}/lib${tf}_debug.${qwt_major}.${qwt_minor}.dylib
ln -s ${tf_full}.framework/${tf}_debug \
${libs_dir}/lib${tf}_debug.${qwt_major}.${qwt_minor}.${qwt_patch}.dylib
}
}
}
if {[variant_isset examples]} {
set exdir ${destroot}${qt_examples_dir}/${subport}
xinstall -d -m 755 ${exdir}
foreach bin [glob -nocomplain ${build.dir}/examples/bin/*] {
copy ${bin} ${exdir}
}
}
}
variant debug description "Build release and debug versions" {}
variant examples description "Build examples" {}