# -*- 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$ PortSystem 1.0 name ncarg version 6.0.0 revision 9 categories science maintainers takeshi description language for scientific data processing and visualization long_description \ The NCAR Command Language (NCL), a product of \ the Computational & Information Systems Laboratory \ at the National Center for Atmospheric Research (NCAR) \ and sponsored by the National Science Foundation, \ is a free interpreted language designed specifically \ for scientific data processing and visualization. homepage http://www.ncl.ucar.edu/ platforms darwin master_sites http://www.earthsystemgrid.org/:ncl \ http://www.ncl.ucar.edu/Download/files/:g2clib distname ncl_${name}-${version} worksrcdir ncl_${name}-${version} set ncl_src ${distname}${extract.suffix} set g2clib_version 1.2.1 set g2clib_src g2clib_with_changes-${g2clib_version}${extract.suffix} set g2clib_worksrcdir g2clib-${g2clib_version}-patches distfiles ${ncl_src}:ncl \ ${g2clib_src}:g2clib checksums ${ncl_src} \ md5 0afca904b8f51abdd3efada4c0dbaa42 \ sha1 949dc8fc823256c1a036aa06a3e68805a4099009 \ rmd160 e5214051eb23e8cc58e0d579a382c80476d570d7 \ ${g2clib_src} \ md5 253327b963bf054c69f70df227e83cfb \ sha1 a0ae0849da6c2aba427cf4384c88433e67cc8f77 \ rmd160 0bea38746c9fb4eeeedb4546a5cb8b1a3936f7ee depends_lib path:lib/pkgconfig/cairo.pc:cairo \ port:proj \ port:gdal \ port:udunits2 \ port:vis5d \ port:hdfeos \ port:hdfeos5 \ port:wgrib2 \ port:curl \ port:libxml2 \ port:xorg-libXaw \ lib:libXm:lesstif depends_build port:triangle use_parallel_build no universal_variant no pre-fetch { if {![file exists ${distpath}/${distname}${extract.suffix}]} { xinstall -d ${distpath} ui_error "Download ${distname}${extract.suffix} manually and place it in ${distpath}.\n \ See instructions on ${homepage}/Download/index.shtml" } } set usedap y patch.dir ${workpath} patchfiles patch-dec_png.c.diff patch-enc_png.c.diff if {$build_arch eq "x86_64"} { patchfiles-append patch-config-ymake.diff } post-patch { reinplace "s| -lsz||g" ${worksrcpath}/Configure reinplace "s| -lsz||g" ${worksrcpath}/config/Project reinplace "s|g\\\\+\\\\+|${configure.cc}|" ${worksrcpath}/ni/src/ncl/yMakefile reinplace "s|INC=-I/usr/include|INC=${configure.cppflags} ${configure.cflags}|" ${workpath}/${g2clib_worksrcdir}/makefile reinplace "s|CC=gcc -fPIC|CC=${configure.cc}|" ${workpath}/${g2clib_worksrcdir}/makefile if {$build_arch eq "x86_64" || $build_arch eq "ppc64"} { reinplace "s|-DUSE_PNG$|-DUSE_PNG -D__64BIT__|" ${workpath}/${g2clib_worksrcdir}/makefile } if {[variant_isset g95]} { set fortranlib -lf95 } elseif {[variant_isset gcc43]} { set fortranlib "-L${prefix}/lib/gcc43 -lgfortran" } elseif {[variant_isset gcc44]} { set fortranlib "-L${prefix}/lib/gcc44 -lgfortran" } elseif {[variant_isset gcc45]} { set fortranlib "-L${prefix}/lib/gcc45 -lgfortran" } foreach f {Darwin Darwin_Intel} { reinplace "s|-lgfortran|${fortranlib}|" ${worksrcpath}/config/${f} reinplace "s| gfortran$| ${configure.fc}|" ${worksrcpath}/config/${f} reinplace "s|gcc$|${configure.cc}|" ${worksrcpath}/config/${f} reinplace "/CcOptions/d" ${worksrcpath}/config/${f} reinplace "/ArchRecLibSearch/d" ${worksrcpath}/config/${f} reinplace "/ArchRecIncSearch/d" ${worksrcpath}/config/${f} reinplace "s|-lXext$|-lXext\\ #define ArchRecLibSearch -L${prefix}/lib\\ #define ArchRecIncSearch -I${prefix}/include\\ #define CcOptions -fPIC -ansi -D_DARWIN_C_SOURCE -DH5_USE_16_API \\ #define COptimizeFlag ${configure.cflags}\\ #define FOptimizeFlag ${configure.fflags}\\ #define ManRoot ${destroot}${prefix}/share/man\\ #define NetCDF4lib -lnetcdf\\ #define HDFEOS5lib -lhe5_hdfeos -lGctp -lhdf5|" ${worksrcpath}/config/${f} } if {[variant_isset g95]} { reinplace "s|-fno-range-check||" ${worksrcpath}/config/Darwin_Intel } foreach f {ni/src/ncl/NclHDF.c \ ni/src/ncl/NclHDFEOS.c \ ni/src/ncl/NclHDFEOS5.c \ ncarview/src/lib/libncarg_ras/hdf.c} { reinplace "s|hdf\/||" ${worksrcpath}/${f} } reinplace "s|\$\(NCARGGKSCAIROLIB\) \$\(NCARGCLIB\)|\$(NCARGGKSCAIROLIB) \$(NCARGGKSLIB) \$(NCARGCLIB)|" ${worksrcpath}/config/Project if {[variant_isset accelerate]} { reinplace "s|-llapack_ncl|-framework Accelerate|g" ${worksrcpath}/config/Project if {[variant_isset g95] || ([string match *64* $build_arch] && ${os.major} >= 10)} { reinplace "s|-lblas_ncl|-ldotwrp -framework Accelerate|g" ${worksrcpath}/config/Project } else { reinplace "s|-lblas_ncl|-framework Accelerate|g" ${worksrcpath}/config/Project } reinplace "s|-L\$(LAPACKSRC)||" ${worksrcpath}/config/Project reinplace "s|-L\$(BLASSRC)||" ${worksrcpath}/config/Project reinplace "s|blas lapack ||" ${worksrcpath}/external/yMakefile } } # avoid segmentation fault on ncl function setfileoption() # clang fails to build ncl if {${os.major}>=10} { configure.compiler llvm-gcc-4.2 } pre-configure { system "cd ${workpath}/${g2clib_worksrcdir}; make all" file copy ${workpath}/${g2clib_worksrcdir}/libgrib2c.a ${worksrcpath} system "cd ${worksrcpath}/config; \ CC=${configure.cc} \ CFLAGS=${configure.cflags} \ make -f Makefile.ini; \ ./ymake -config `pwd`" foreach ext "c h" { file copy ${prefix}/share/triangle/triangle.${ext} ${worksrcpath}/ni/src/lib/hlu } } configure { system "cd ${worksrcpath}; ./Configure -v << EOF y ${destroot}${prefix} y y y y y y y y y y y y y y ${worksrcpath} ${prefix}/lib ${prefix}/lib/hdfeos5/lib ${prefix}/lib ${prefix}/include/freetype2 ${prefix}/include/udunits2 ${prefix}/lib/hdfeos5/include ${prefix}/include EOF" } post-configure { # reinplace "s| -lsz||g" ${worksrcpath}/makefile # reinplace "s| -lsz||g" ${worksrcpath}/config/Site.local system "cd ${worksrcpath}; make Info" system "cat ${worksrcpath}/config/Site.local" } build.target Build if {${os.major}<10} { if {[variant_isset g95]} { build.args-append EXTRA_CCOPTIONS=\"${configure.cc_archflags}\" } else { if {[string match *64* $build_arch]} { build.args-append EXTRA_CCOPTIONS=-m64 } else { build.args-append EXTRA_CCOPTIONS=-m32 } } } # Only configure.fc is set (against UsingTheRightCompiler) since # ncl function setfileoption() causes Segmentation Fault # when built with macports-gcc-4.x. variant g95 conflicts gcc43 gcc44 gcc45 description {compile with g95} { configure.fc ${prefix}/bin/g95 depends_build-append port:g95 } variant gcc43 conflicts gcc44 gcc45 g95 description {compile with gcc 4.3} { configure.fc ${prefix}/bin/gfortran-mp-4.3 depends_build-append port:gcc43 } variant gcc44 conflicts gcc43 gcc45 g95 description {compile with gcc 4.4} { configure.fc ${prefix}/bin/gfortran-mp-4.4 depends_build-append port:gcc44 } variant gcc45 conflicts gcc43 gcc44 g95 description {compile with gcc 4.5} { configure.fc ${prefix}/bin/gfortran-mp-4.5 depends_build-append port:gcc45 } if {![variant_isset gcc43] && ![variant_isset gcc44] && ![variant_isset g95]} { default_variants +gcc45 } variant accelerate description {use Accelerate.framework} { if {![variant_isset g95]} { configure.fflags-append -ff2c } if {[variant_isset g95] || ([string match *64* $build_arch] && ${os.major} >= 10)} { depends_lib-append port:dotwrp } } livecheck.type regex livecheck.url ${homepage} livecheck.regex {Current Version:.* .*([0-9]+\.[0-9]+\.[0-9]+)}