# -*- 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 118376 2014-04-01 09:59:07Z mojca@macports.org $ PortSystem 1.0 name root version 5.34.18 categories science maintainers gmail.com:mattiafrancescomoro hep.phy.cam.ac.uk:jonesc license LGPL-2.1+ description ROOT is a data analysis framework from CERN long_description The ROOT system provides a set of frameworks with all \ the functionality needed to handle and analyze large amounts \ of data in a very efficient way homepage http://root.cern.ch/ platforms darwin distname ${name}_v${version}.source master_sites http://root.cern.ch/download/ \ ftp://root.cern.ch/root/ checksums rmd160 2fbaff8f831611779b42480fcb86cbde34ef72bd \ sha256 9196dce7d76b31e5bcabd985bd31bc4d9b7c8c4d0c7ce84f730efa4ef82a3567 worksrcdir root depends_lib port:xz \ port:pcre \ port:zlib \ port:jpeg \ port:libpng \ port:giflib \ port:tiff \ port:gmp \ port:expat # port:freetype post-patch { # reinplace "s|-lfreetype| \`freetype-config --libs\`|g" ${worksrcpath}/config/root-config.in reinplace "s|\"/usr/include\"|\"${prefix}/include /usr/include\"|g" ${worksrcpath}/configure reinplace "s|/usr/lib |${prefix}/lib /usr/lib |g" ${worksrcpath}/configure reinplace "s|/usr/include |${prefix}/include /usr/include |g" ${worksrcpath}/configure reinplace "s|\"/usr/lib\"|\"${prefix}/lib /usr/lib\"|g" ${worksrcpath}/configure } pre-configure { configure.args-append \ --with-cc=${configure.cc} \ --with-cxx=${configure.cxx} \ --with-ld=${configure.cxx} \ --with-f77=${configure.f77} # the build type (32 or 64 bit) -must- be for first argument if {${build_arch} eq "i386" || ${build_arch} eq "ppc"} { configure.pre_args macosx --prefix=${prefix} } else { configure.pre_args macosx64 --prefix=${prefix} } } configure.args --docdir=${prefix}/share/doc/${name} \ --libdir=${prefix}/lib/${name} \ --testdir=${prefix}/share/${name}/test \ --tutdir=${prefix}/share/${name}/tutorials \ --etcdir=${prefix}/etc/${name} \ --disable-builtin-glew \ --disable-builtin-pcre \ --disable-builtin-zlib \ --disable-builtin-lzma \ --disable-fftw3 \ --disable-krb5 \ --disable-ldap \ --disable-mysql \ --disable-sqlite \ --disable-odbc \ --disable-opengl \ --disable-pythia6 \ --disable-pythia8 \ --disable-roofit \ --disable-ssl \ --disable-xml \ --disable-python \ --disable-fitsio \ --disable-gsl-shared \ --disable-pgsql \ --disable-dcache \ --disable-chirp \ --disable-hdfs \ --disable-ruby \ --disable-minuit2 \ --disable-tmva \ --disable-qt \ --disable-qtgsi \ --disable-bonjour \ --disable-gviz \ --disable-soversion \ --disable-c++11 \ --disable-xrootd \ --enable-builtin-ftgl \ --enable-mathmore \ --enable-genvector \ --enable-memstat \ --enable-unuran \ --enable-reflex \ --enable-table \ --enable-fink \ --enable-gdml \ --enable-builtin-freetype # TODO: Check ${configure.cxx_stdlib} directly once MacPorts 2.3 is released platform darwin { set cxxstdlib {} if {[info exists configure.cxx_stdlib] && ${configure.cxx_stdlib} ne {} && [string match *clang* ${configure.cxx}]} { set cxxstdlib ${configure.cxx_stdlib} } elseif {[string match *clang* ${configure.cxx}] && ${os.major} >= 13} { set cxxstdlib libc++ } else { set cxxstdlib libstdc++ } if {${cxxstdlib} eq "libc++"} { configure.args-delete --disable-c++11 configure.args-append --enable-c++11 } } universal_variant no default_variants +ssl +xml +gsl +minuit2 +tmva +roofit +graphviz +opengl +soversion # Since ROOT 5.34.15 the cocoa backend is default on OSX 10.8 or newer # We also make it default on 10.7 if {${os.major} > 10} { set default_gui_variant +cocoa } else { set default_gui_variant +x11 } post-destroot { reinplace "s|lib/python/genreflex|lib/root/python/genreflex|g" ${destroot}${prefix}/bin/genreflex } variant debug description {Enable a debug build} { configure.args-append --build=debug } variant xrootd description {Build with XRootD support} { configure.args-delete --disable-xrootd configure.args-append --enable-xrootd \ --with-xrootd-incdir="${prefix}/include/xrootd" \ --with-xrootd-libdir="${prefix}/lib" depends_lib-append port:xrootd } variant soversion description {Build with soversion support} { configure.args-delete --disable-soversion configure.args-append --enable-soversion } variant graphviz description {Build with graphviz support} { configure.args-delete --disable-gviz configure.args-append --enable-gviz \ --with-gviz-incdir="${prefix}/include/graphviz" \ --with-gviz-libdir="${prefix}/lib" depends_lib-append path:bin/dot:graphviz } variant avahi description {Build with avahi support} { configure.args-delete --disable-bonjour configure.args-append --enable-bonjour \ --with-avahi-incdir="${prefix}/include" \ --with-avahi-libdir="${prefix}/lib" depends_lib-append port:avahi } variant fftw3 description {Build with fftw3 support} { configure.args-delete --disable-fftw3 configure.args-append --enable-fftw3 \ --with-fftw3-incdir="${prefix}/include" \ --with-fftw3-libdir="${prefix}/lib" depends_lib-append port:fftw-3 } variant gsl description {Build with gsl support} { configure.args-delete --disable-gsl-shared configure.args-append --enable-gsl-shared \ --with-gsl-incdir="${prefix}/include" \ --with-gsl-libdir="${prefix}/lib" depends_lib-append port:gsl } variant fitsio description {Build with fitsio support} { configure.args-delete --disable-fitsio configure.args-append --enable-fitsio \ --with-cfitsio-incdir="${prefix}/include" \ --with-cfitsio-libdir="${prefix}/lib" depends_lib-append port:cfitsio } variant odbc description {Build with odbc support} { configure.args-delete --disable-odbc configure.args-append --enable-odbc \ --with-odbc-incdir="${prefix}/include" \ --with-odbc-libdir="${prefix}/lib" depends_lib-append port:libiodbc } variant ldap description {Build with ldap support} { configure.args-delete --disable-ldap configure.args-append --enable-ldap \ --with-ldap-incdir="${prefix}/include" \ --with-ldap-libdir="${prefix}/lib" depends_lib-append port:openldap } variant roofit description {Build the RooFit advanced fitting package} { configure.args-delete --disable-roofit configure.args-append --enable-roofit } variant tmva description {Build the TMVA package} { configure.args-delete --disable-tmva configure.args-append --enable-tmva post-destroot { set tmvaTuts ${destroot}${prefix}/share/${name}/tutorials/tmva file mkdir ${tmvaTuts} foreach f [glob ${worksrcpath}/tmva/test/*] { file copy $f ${tmvaTuts}/ } } } variant minuit2 description {Build with minuit2 support} { configure.args-delete --disable-minuit2 configure.args-append --enable-minuit2 } variant opengl description {Build with opengl support} { configure.args-delete --disable-opengl configure.args-delete --disable-builtin-glew configure.args-append --enable-opengl --enable-builtin-glew } # ======================================================================================== # Setup various python variants # ======================================================================================== # List of possible python versions set python_versions { 2.6 2.7 3.1 3.2 3.3 3.4 } # Define the available variants foreach ver ${python_versions} { set ver_no_dot [join [split ${ver} "."] ""] set variant_line {variant python${ver_no_dot} description "Build with python ${ver} support"} foreach over ${python_versions} { if { ${ver} == ${over} } { continue } set over_no_dot [join [split ${over} "."] ""] append variant_line " conflicts python${over_no_dot}" } append variant_line { {} } eval $variant_line } # Is a variant active ? set active_python_variant "" foreach ver ${python_versions} { set ver_no_dot [join [split ${ver} "."] ""] if {[variant_isset python${ver_no_dot}]} { set active_python_variant ${ver} } } # If so, set it up. if { ${active_python_variant} != "" } { set ver_no_dot [join [split ${active_python_variant} "."] ""] set mypydir ${prefix}/Library/Frameworks/Python.framework/Versions/${active_python_variant} configure.args-delete --disable-python configure.args-append --enable-python \ --with-python-incdir="${mypydir}/Headers" \ --with-python-libdir="${mypydir}" depends_lib-append port:python${ver_no_dot} post-destroot { set mypylibdir ${prefix}/Library/Frameworks/Python.framework/Versions/${active_python_variant}/lib/python${active_python_variant} set mypysitedir ${mypylibdir}/site-packages/ file mkdir ${destroot}${mypysitedir} foreach pyfile [glob ${destroot}${prefix}/lib/root/*.py*] { move $pyfile ${destroot}${mypysitedir} } ln -sf ${prefix}/lib/root/libPyROOT.so ${destroot}${mypylibdir}/ } } # ======================================================================================== variant ruby description {Build with ruby support} { configure.args-delete --disable-ruby configure.args-append --enable-ruby depends_lib-append port:ruby } variant ssl description {Build with ssl support} { configure.args-delete --disable-ssl configure.args-append --enable-ssl \ --with-ssl-shared=yes \ --with-ssl-incdir="${prefix}/include" \ --with-ssl-libdir="${prefix}/lib" depends_lib-append port:openssl } variant xml description {Build with xml support} { configure.args-delete --disable-xml configure.args-append --enable-xml \ --with-xml-incdir="${prefix}/include/libxml2" \ --with-xml-libdir="${prefix}/lib" depends_lib-append port:libxml2 } variant sqlite3 description {Build with sqlite3 support} { configure.args-delete --disable-sqlite configure.args-append --enable-sqlite \ --with-sqlite-incdir="${prefix}/include" \ --with-sqlite-libdir="${prefix}/lib" depends_lib-append port:sqlite3 } variant mysql conflicts mysql51 mysql55 mariadb percona description {Build with mysql5 support} { configure.args-delete --disable-mysql configure.args-append --enable-mysql \ --with-mysql-incdir="${prefix}/include/mysql5/mysql" \ --with-mysql-libdir="${prefix}/lib/mysql5/mysql" depends_lib-append port:mysql5 } variant mysql51 conflicts mysql mysql55 mariadb percona description {Build with mysql51 support} { configure.args-delete --disable-mysql configure.args-append --enable-mysql \ --with-mysql-incdir="${prefix}/include/mysql51/mysql" \ --with-mysql-libdir="${prefix}/lib/mysql51/mysql" depends_lib-append port:mysql51 } variant mysql55 conflicts mysql mysql51 mariadb percona description {Build with mysql55 support} { configure.args-delete --disable-mysql configure.args-append --enable-mysql \ --with-mysql-incdir="${prefix}/include/mysql55/mysql" \ --with-mysql-libdir="${prefix}/lib/mysql55/mysql" depends_lib-append port:mysql55 } variant mariadb conflicts mysql mysql51 mysql55 percona description {Build with mariadb support} { configure.args-delete --disable-mysql configure.args-append --enable-mysql \ --with-mysql-incdir="${prefix}/include/mariadb/mysql" \ --with-mysql-libdir="${prefix}/lib/mariadb/mysql" depends_lib-append port:mariadb } variant percona conflicts mysql mysql51 mysql55 mariadb description {Build with percona support} { configure.args-delete --disable-mysql configure.args-append --enable-mysql \ --with-mysql-incdir="${prefix}/include/percona/mysql" \ --with-mysql-libdir="${prefix}/lib/percona/mysql" depends_lib-append port:percona } variant postgresql90 conflicts postgresql92 description {Build with PostgreSQL 9.0 support} { configure.args-delete --disable-pgsql configure.args-append --enable-pgsql \ --with-pgsql-incdir="${prefix}/include/postgresql90" \ --with-pgsql-libdir="${prefix}/lib/postgresql90" depends_lib-append port:libpqxx port:postgresql90 } variant postgresql92 conflicts postgresql90 description {Build with PostgreSQL 9.2 support} { configure.args-delete --disable-pgsql configure.args-append --enable-pgsql \ --with-pgsql-incdir="${prefix}/include/postgresql92" \ --with-pgsql-libdir="${prefix}/lib/postgresql92" depends_lib-append port:libpqxx port:postgresql92 } variant pythia description {Pythia 8 support for root} { configure.args-delete --disable-pythia8 configure.args-append --enable-pythia8 \ --with-pythia8-incdir=${prefix}/include/pythia \ --with-pythia8-libdir=${prefix}/lib depends_lib-append port:pythia } # The cocoa variant doesn't work on 10.6; source code uses functions first introduced in 10.7, # but fixing the code is doable if someone had sufficient motivation variant cocoa conflicts x11 description {Enables native OSX graphical backend} { # Force a compatible clang compiler PortGroup compiler_blacklist_versions 1.0 # it works with clang 3.0 and later (clang < 425 might not be exact) compiler.blacklist-append {clang < 425} *gcc* macports-clang-2.9 # compiler fallback is probably only relevant on 10.6 (where +cocoa doesn't work at all) compiler.fallback-append macports-clang-3.2 macports-clang-3.1 macports-clang-3.4 macports-clang-3.3 # Enable cocoa support in configure configure.args-delete --disable-cocoa configure.args-append --enable-cocoa # patch afterimage build to make sure TIFF suport is disabled. Causes problems with cocoa... patchfiles-append patch-builtin-afterimage-disabletiff.diff } variant x11 conflicts cocoa description {Enables X11 graphical backend} { # Dependencies on X11 ports depends_lib-append port:xorg-libX11 port:mesa port:Xft2 port:xpm # Disable cocoa configure.args-append --disable-cocoa } # If neither graphical variant is set, use default if { ![variant_isset cocoa] && ![variant_isset x11] } { default_variants-append ${default_gui_variant} } # ======================================================================================== # Setup various clang variants, to provide alternative C++ compilers that support cocoa # ======================================================================================== # List of possible clang versions that work set clang_versions { 3.0 3.1 3.2 3.3 3.4 3.5 } # Define the available variants foreach ver ${clang_versions} { set ver_no_dot [join [split ${ver} "."] ""] set variant_line {variant clang${ver_no_dot} description "Compile using MacPorts clang ${ver}"} foreach over ${clang_versions} { if { ${ver} == ${over} } { continue } set over_no_dot [join [split ${over} "."] ""] append variant_line " conflicts clang${over_no_dot}" } append variant_line { { } } eval $variant_line } # Is a variant active ? set active_clang_variant "" foreach ver ${clang_versions} { set ver_no_dot [join [split ${ver} "."] ""] if {[variant_isset clang${ver_no_dot}]} { set active_clang_variant ${ver} } } # If so, set it up. if { ${active_clang_variant} != "" } { configure.compiler macports-clang-${active_clang_variant} configure.args-append --with-llvm-config="${prefix}/bin/llvm-config-mp-"${active_clang_variant} depends_run-append port:clang-${active_clang_variant} } # ======================================================================================== variant qt_mac description {Build with Qt support via Mac UI} { post-patch { # fix where "qglobal.h" is found in all files that use or reference it foreach tpf { configure graf2d/qt/src/TGQt.cxx } { reinplace "s@Qt/qglobal\\.h@QtCore/qglobal\\.h@g" \ ${worksrcpath}/${tpf} } reinplace "/qttestdir/s@Qt@QtCore@g" ${worksrcpath}/configure # fix library search extensions to include ".la" # for Qt framework libraries (only) reinplace "s@\\(\\.so \\.sl \\.dylib \\.dll\\.a\\)@\\1 \\.la@g" \ ${worksrcpath}/configure } configure.args-delete --disable-qt configure.args-delete --disable-qtgsi configure.args-append --enable-qt --enable-qtgsi \ --with-qt-incdir="${prefix}/include" \ --with-qt-libdir="${prefix}/lib" depends_lib-append port:qt4-mac post-configure { # patch up the Makefile.config to handle the QTLIB frameworks correctly reinplace "/QTLIB\[ \]/s@:= @:= -F${qt_libs_dir} @" \ ${worksrcpath}/config/Makefile.config reinplace "/QTLIB\[ \]/s@\\(Qt\[^ \]*\\).la@-framework \\1@g" \ ${worksrcpath}/config/Makefile.config } } if {[variant_isset qt_mac]} { PortGroup qt4 1.0 } # ======================================================================================== # Following is for fortran support # Might eventually move to a portgroup, or similar, so could be simplified. # Based on recipe from https://trac.macports.org/wiki/PortfileRecipes#fortran # Note that g95 does not work here, so that variant is removed # ======================================================================================== set gcc_versions {4.3 4.4 4.5 4.6 4.7 4.8 4.9} set default_fortran_variant +gcc48 foreach ver ${gcc_versions} { set ver_no_dot [join [split ${ver} "."] ""] set variant_line {variant gcc${ver_no_dot} description "Build with gfortran from gcc${ver_no_dot}"} foreach over ${gcc_versions} { if {${ver} == ${over}} { continue } set over_no_dot [join [split ${over} "."] ""] append variant_line " conflicts gcc${over_no_dot}" } append variant_line { {}} eval $variant_line if {[variant_isset gcc${ver_no_dot}]} { if {${default_fortran_variant} != "+gcc${ver_no_dot}"} { set default_fortran_variant "" } } } if {${default_fortran_variant} != ""} { default_variants-append "${default_fortran_variant}" } foreach ver ${gcc_versions} { set ver_no_dot [join [split ${ver} "."] ""] if {[variant_isset gcc${ver_no_dot}]} { depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc depends_build-append port:gcc${ver_no_dot} configure.fc ${prefix}/bin/gfortran-mp-${ver} configure.f77 ${prefix}/bin/gfortran-mp-${ver} configure.f90 ${prefix}/bin/gfortran-mp-${ver} } } # ======================================================================================== livecheck.type regex livecheck.url [lindex ${master_sites} 0] livecheck.regex ${name}_v(\[0-9a-z.\]+)\\.source # ======================================================================================== # The following have build issues, are obsolete or experimental. # ======================================================================================== # Intefers with builtin freetype build (enforced by cocoa variant) # Also do not seem to be actually needed any more #pre-build { # build.args CC=${configure.cc} \ # CXX=${configure.cxx} \ # F77=${configure.f77} #} # variant kerberos5 description {Build with kerberos5 support} { # configure.args-delete --disable-krb5 # configure.args-append --enable-krb5 \ # --with-krb5-incdir="${prefix}/include" \ # --with-krb5-libdir="${prefix}/lib" # depends_lib-append port:kerberos5 # } # variant ftgl description {Build with ftgl support} { # configure.args-delete --enable-builtin-ftgl # configure.args-append --disable-builtin-ftgl \ # configure.args-append --with-ftgl-incdir="${prefix}/include" \ # --with-ftgl-libdir="${prefix}/lib" # depends_lib-append port:ftgl # } # variant qt_x11 conflicts qt_mac description {Build with Qt support via X11 UI} { # # fix where "qglobal.h" is found in all files that use or reference it # post-patch { # foreach tpf { configure graf2d/qt/src/TGQt.cxx } { # reinplace "s@Qt/qglobal\\.h@QtCore/qglobal\\.h@g" \ # ${worksrcpath}/${tpf} # } # reinplace "/qttestdir/s@Qt@QtCore@g" ${worksrcpath}/configure # } # configure.env-append QTDIR=${prefix}/libexec/qt4-x11 # configure.args-delete --disable-qt # configure.args-delete --disable-qtgsi # configure.args-append --enable-qt --enable-qtgsi \ # --with-qt-incdir="${prefix}/include" \ # --with-qt-libdir="${prefix}/lib" # depends_lib-append port:qt4-x11 # }