| # Copyright 1999-2017 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=6 |
| |
| WX_GTK_VER=3.0-gtk3 |
| FORTRAN_NEEDED=fortran |
| FORTRAN_STANDARD=95 |
| PYTHON_COMPAT=( python2_7 ) |
| |
| inherit cmake-utils flag-o-matic fortran-2 java-pkg-opt-2 python-single-r1 toolchain-funcs virtualx wxwidgets |
| |
| DESCRIPTION="Multi-language scientific plotting library" |
| HOMEPAGE="http://plplot.sourceforge.net/" |
| SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz" |
| |
| LICENSE="LGPL-2" |
| SLOT="0/14" # SONAME of libplplot.so |
| KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" |
| IUSE="cairo cxx doc +dynamic examples fortran gd java jpeg latex lua octave pdf |
| pdl png python qhull qt5 shapefile svg tcl test threads tk truetype wxwidgets X" |
| REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) qt5? ( dynamic ) test? ( latex ) tk? ( tcl )" |
| RESTRICT="octave? ( test )" |
| |
| RDEPEND=" |
| cairo? ( x11-libs/cairo:0=[svg?,X] ) |
| gd? ( media-libs/gd:2=[jpeg?,png?] ) |
| java? ( >=virtual/jre-1.5:* ) |
| latex? ( |
| app-text/ghostscript-gpl |
| virtual/latex-base |
| ) |
| lua? ( dev-lang/lua:0= ) |
| octave? ( sci-mathematics/octave:0= ) |
| pdf? ( media-libs/libharu:0= ) |
| pdl? ( |
| dev-perl/PDL |
| dev-perl/XML-DOM |
| ) |
| python? ( |
| ${PYTHON_DEPS} |
| dev-python/numpy[${PYTHON_USEDEP}] |
| qt5? ( dev-python/PyQt5[${PYTHON_USEDEP}] ) |
| ) |
| qhull? ( media-libs/qhull:0= ) |
| qt5? ( |
| dev-qt/qtgui:5 |
| dev-qt/qtsvg:5 |
| dev-qt/qtprintsupport:5 |
| ) |
| shapefile? ( sci-libs/shapelib:0= ) |
| tcl? ( |
| dev-lang/tcl:0= |
| dev-tcltk/itcl:0= |
| tk? ( |
| dev-lang/tk:0= |
| dev-tcltk/itk |
| ) |
| ) |
| truetype? ( |
| media-fonts/freefont |
| media-libs/lasi:0= |
| gd? ( media-libs/gd:2=[truetype] ) |
| ) |
| wxwidgets? ( |
| x11-libs/wxGTK:${WX_GTK_VER}=[X] |
| x11-libs/agg:0=[truetype?] |
| ) |
| X? ( |
| x11-libs/libX11:0= |
| x11-libs/libXau:0= |
| x11-libs/libXdmcp:0= |
| )" |
| |
| DEPEND="${RDEPEND} |
| virtual/pkgconfig |
| java? ( |
| >=virtual/jdk-1.5 |
| dev-lang/swig |
| ) |
| octave? ( >=dev-lang/swig-3.0.12 ) |
| python? ( dev-lang/swig ) |
| test? ( |
| media-fonts/font-misc-misc |
| media-fonts/font-cursor-misc |
| )" |
| |
| PATCHES=( |
| "${FILESDIR}"/${PN}-5.9.6-python.patch |
| "${FILESDIR}"/${PN}-5.11.0-octave.patch |
| "${FILESDIR}"/${PN}-5.12.0-multiarch.patch |
| "${FILESDIR}"/${PN}-5.12.0-java-install-path.patch |
| ) |
| |
| pkg_setup() { |
| use python && python-single-r1_pkg_setup |
| use java && java-pkg-opt-2_pkg_setup |
| use fortran && fortran-2_pkg_setup |
| } |
| |
| src_prepare() { |
| use wxwidgets && need-wxwidgets unicode |
| cmake-utils_src_prepare |
| |
| # avoid installing license |
| sed -i -e '/COPYING.LIB/d' CMakeLists.txt || die |
| |
| # prexify hard-coded /usr/include in cmake modules |
| sed -i \ |
| -e "s:/usr/include:${EPREFIX}/usr/include:g" \ |
| -e "s:/usr/lib:${EPREFIX}/usr/$(get_libdir):g" \ |
| -e "s:/usr/share:${EPREFIX}/usr/share:g" \ |
| cmake/modules/*.cmake || die |
| |
| # change default install directories for doc and examples |
| local f |
| while IFS="" read -d $'\0' -r f; do |
| sed -i -e 's:${DATA_DIR}/examples:${DOC_DIR}/examples:g' "${f}" || die |
| done < <(find "${S}" -name CMakeLists.txt -print0) |
| |
| sed -i \ |
| -e 's:${VERSION}::g' \ |
| -e "s:doc/\${PACKAGE}:doc/${PF}:" \ |
| cmake/modules/instdirs.cmake || die |
| |
| java-utils-2_src_prepare |
| } |
| |
| src_configure() { |
| # - don't build doc, it pulls in a whole stack of horrible dependencies |
| # - Bindings: |
| # * Ada is a mess in Gentoo, don't use |
| # * D has been removed from Gentoo, don't use |
| # * OCaml is a general disaster and randomly inserts RPATH |
| # on the basis of absolute -L linker paths: |
| # https://caml.inria.fr/mantis/view.php?id=5943 |
| # * Qt4 has been disabled, as it is deprecated and unsupported upstream |
| # - DPLD_* drivers need to use ON/OFF instead of the usex defaults yes/no, as |
| # the testsuite performs a string comparison to determine which tests to run |
| |
| # Octave bindings now require C++11 support, #609980 |
| append-cxxflags -std=c++11 |
| |
| local mycmakeargs=( |
| # The build system does not honour CMAKE_INSTALL_LIBDIR as a |
| # relative dir, which is against the spirit of GNUInstallDirs, #610066 |
| -DCMAKE_INSTALL_LIBDIR="${EPREFIX}"/usr/$(get_libdir) |
| |
| ## Features |
| -DBUILD_DOC=OFF |
| -DBUILD_DOX_DOC=OFF |
| -DUSE_RPATH=OFF |
| -DCMAKE_SKIP_INSTALL_RPATH=ON |
| -DPREBUILT_DOC=$(usex doc) |
| -DHAVE_SHAPELIB=$(usex shapefile) |
| -DWITH_FREETYPE=$(usex truetype) |
| -DPL_HAVE_PTHREAD=$(usex threads) |
| -DPL_HAVE_QHULL=$(usex qhull) |
| -DPLPLOT_USE_QT5=$(usex qt5) |
| |
| ## Tests |
| -DTEST_DYNDRIVERS=OFF |
| -DBUILD_TEST=$(usex test) |
| |
| ## Bindings |
| -DENABLE_ada=OFF |
| -DENABLE_d=OFF |
| -DENABLE_ocaml=OFF |
| -DENABLE_pyqt4=OFF |
| -DENABLE_cxx=$(usex cxx) |
| -DENABLE_DYNDRIVERS=$(usex dynamic) |
| -DENABLE_f95=$(usex fortran) |
| -DENABLE_java=$(usex java) |
| -DENABLE_lua=$(usex lua) |
| -DTRY_OCTAVE4=$(usex octave) |
| -DENABLE_octave=$(usex octave) |
| -DENABLE_pdl=$(usex pdl) |
| -DENABLE_python=$(usex python) |
| -DENABLE_qt=$(usex qt5) |
| -DENABLE_tcl=$(usex tcl) |
| -DENABLE_itcl=$(usex tcl) |
| -DENABLE_tk=$(usex tk) |
| -DENABLE_itk=$(usex tk) |
| -DENABLE_wxwidgets=$(usex wxwidgets) |
| |
| ## Drivers |
| -DPLD_cgm=OFF |
| -DPLD_gif=OFF |
| -DPLD_jpeg=OFF |
| -DPLD_plmeta=OFF |
| -DPLD_png=OFF |
| -DPLD_pstex=OFF |
| -DPLD_wxpng=OFF |
| -DPLD_mem=ON |
| -DPLD_null=ON |
| -DPLD_wingcc=ON |
| # Cairo |
| $(usex cairo "" "-DDEFAULT_NO_CAIRO_DEVICES=ON") |
| -DPLD_epscairo=$(usex cairo ON OFF) |
| -DPLD_extcairo=$(usex cairo ON OFF) |
| -DPLD_memcairo=$(usex cairo ON OFF) |
| -DPLD_pdfcairo=$(usex cairo ON OFF) |
| -DPLD_pngcairo=$(usex cairo ON OFF) |
| -DPLD_pscairo=$(usex cairo ON OFF) |
| -DPLD_svgcairo=$(usex cairo ON OFF) |
| -DPLD_xcairo=$(usex cairo ON OFF) |
| # LaTeX |
| -DPLD_ps=$(usex latex ON OFF) |
| # PDF |
| -DPLD_pdf=$(usex pdf ON OFF) |
| # Qt |
| -DPLD_aqt=$(usex qt5 ON OFF) |
| -DPLD_bmpqt=$(usex qt5 ON OFF) |
| -DPLD_epsqt=$(usex qt5 ON OFF) |
| -DPLD_extqt=$(usex qt5 ON OFF) |
| -DPLD_jpgqt=$(usex qt5 ON OFF) |
| -DPLD_memqt=$(usex qt5 ON OFF) |
| -DPLD_pdfqt=$(usex qt5 ON OFF) |
| -DPLD_pngqt=$(usex qt5 ON OFF) |
| -DPLD_ppmqt=$(usex qt5 ON OFF) |
| -DPLD_qtwidget=$(usex qt5 ON OFF) |
| -DPLD_svgqt=$(usex qt5 ON OFF) |
| -DPLD_tiffqt=$(usex qt5 ON OFF) |
| # SVG |
| -DPLD_svg=$(usex svg ON OFF) |
| # Tk |
| -DPLD_ntk=$(usex tk ON OFF) |
| -DPLD_tk=$(usex tk ON OFF) |
| -DPLD_tkwin=$(usex tk ON OFF) |
| # Truetype |
| -DPLD_psttf=$(usex truetype ON OFF) |
| # Wx |
| -DPLD_wxwidgets=$(usex wxwidgets ON OFF) |
| # X |
| -DPLD_xfig=$(usex X ON OFF) |
| -DPLD_xwin=$(usex X ON OFF) |
| ) |
| |
| use truetype && mycmakeargs+=( |
| -DPL_FREETYPE_FONT_PATH="${EPREFIX}"/usr/share/fonts/freefont |
| ) |
| use shapefile && mycmakeargs+=( |
| -DSHAPELIB_INCLUDE_DIR="${EPREFIX}"/usr/include/libshp |
| ) |
| use python && mycmakeargs+=( |
| -DENABLE_pyqt5=$(usex qt5) |
| ) |
| |
| cmake-utils_src_configure |
| |
| # clean up bloated pkg-config files (help linking properly on prefix) |
| sed -i \ |
| -e "/Cflags/s:-I\(${EPREFIX}\|\)/usr/include[[:space:]]::g" \ |
| -e "/Libs/s:-L\(${EPREFIX}\|\)/usr/lib\(64\|\)[[:space:]]::g" \ |
| -e "s:${LDFLAGS}::g" \ |
| "${BUILD_DIR}"/pkgcfg/*pc || die |
| } |
| |
| src_test() { |
| virtx cmake-utils_src_test |
| } |
| |
| src_install() { |
| cmake-utils_src_install |
| |
| if use examples; then |
| docompress -x /usr/share/doc/${PF}/examples |
| else |
| rm -r "${ED%/}"/usr/share/doc/${PF}/examples || die |
| fi |
| |
| if use java; then |
| java-pkg_dojar "${BUILD_DIR}"/examples/java/${PN}.jar |
| java-pkg_regso "${EPREFIX}"/usr/$(get_libdir)/jni/plplotjavac_wrap.so |
| fi |
| } |