[124269] trunk/dports/science/ncarg

takeshi at macports.org takeshi at macports.org
Thu Aug 21 22:01:55 PDT 2014


Revision: 124269
          https://trac.macports.org/changeset/124269
Author:   takeshi at macports.org
Date:     2014-08-21 22:01:55 -0700 (Thu, 21 Aug 2014)
Log Message:
-----------
ncarg: fix +g95 build with clang. use PortGroup compilers

Modified Paths:
--------------
    trunk/dports/science/ncarg/Portfile

Added Paths:
-----------
    trunk/dports/science/ncarg/files/patch-ncarview-idt-glob.c.diff
    trunk/dports/science/ncarg/files/patch-ni-lib-hlu-CnTriMeshRenderer.c.diff
    trunk/dports/science/ncarg/files/patch-ni-lib-hlu-Transform.c.diff
    trunk/dports/science/ncarg/files/patch-ni-lib-nfpfort-yMakefile.diff
    trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.c.diff
    trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.h.diff

Modified: trunk/dports/science/ncarg/Portfile
===================================================================
--- trunk/dports/science/ncarg/Portfile	2014-08-22 02:40:33 UTC (rev 124268)
+++ trunk/dports/science/ncarg/Portfile	2014-08-22 05:01:55 UTC (rev 124269)
@@ -3,7 +3,11 @@
 
 PortSystem                  1.0
 PortGroup                   conflicts_build 1.0
+PortGroup                   compilers 1.0
 
+compilers.choose            fc f77 f90 cc
+compilers.setup             -clang -dragonegg -gfortran -llvm
+
 name                        ncarg
 version                     6.2.0
 categories                  science
@@ -74,17 +78,28 @@
             patch-ni-nyacc-output.c.diff \
             patch-ni-nyacc-reader.c.diff \
             patch-ni-nyacc-verbose.c.diff \
+            patch-ni-lib-hlu-CnTriMeshRenderer.c.diff \
+            patch-ni-lib-hlu-Transform.c.diff \
             patch-ncarview-idt-w_idt.c.diff \
+            patch-ncarview-idt-glob.c.diff \
             patch-Fsplit.c.diff
+# Some C compilers, notably clang does not support OpenMP.
+patchfiles-append \
+            patch-ni-ncl-NclDriver.h.diff \
+            patch-ni-ncl-NclDriver.c.diff
 if {$build_arch eq "x86_64"} {
     patchfiles-append           patch-config-ymake.diff
 }
+if {[variant_isset g95]} {
+    patchfiles-append           patch-ni-lib-nfpfort-yMakefile.diff
+}
 
 post-patch {
     reinplace "s|hdf/||" ${worksrcpath}/ni/src/ncl/FileSupport.c
     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|CC=cc|CC=${configure.cc}|" ${workpath}/${g2clib_worksrcdir}/makefile
     reinplace "s|INC=-I/usr/local/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"} {
@@ -93,11 +108,14 @@
     foreach f {Darwin Darwin_Intel} {
         if {[variant_isset g95]} {
             reinplace "s|-lgfortran|-lf95|" ${worksrcpath}/config/${f}
+            reinplace "s|-fopenmp||" ${worksrcpath}/config/${f}
+            reinplace "s| -lquadmath||" ${worksrcpath}/config/${f}
         } else {
             reinplace "s|-lgfortran|-lgfortran -lgomp|" ${worksrcpath}/config/${f}
         }
         reinplace "s| gfortran$| ${configure.fc}|" ${worksrcpath}/config/${f} 
         reinplace "s|gcc$|${configure.cc}|" ${worksrcpath}/config/${f}
+        reinplace "s|g++$|${configure.cxx}|" ${worksrcpath}/config/${f}
         reinplace "/CcOptions/d" ${worksrcpath}/config/${f}
         reinplace "/ArchRecLibSearch/d" ${worksrcpath}/config/${f}
         reinplace "/ArchRecIncSearch/d" ${worksrcpath}/config/${f}
@@ -216,67 +234,11 @@
     }
 }
 
-set gcc_versions {4.3 4.4 4.5 4.6 4.7 4.8 4.9}
-set default_fortran_variant +gcc48
-set g95_conflicts {}
-
-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}" conflicts g95}
-
-    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
-
-    append g95_conflicts " conflicts gcc${ver_no_dot}"
-
-    if {[variant_isset gcc${ver_no_dot}]} {
-        if {${default_fortran_variant} != "+gcc${ver_no_dot}"} {
-            set default_fortran_variant ""
-        }
-    }
+if {![fortran_variant_isset]} {
+    default_variants-append +gcc48
 }
 
-eval [concat {variant g95 description {build with g95}} $g95_conflicts {{}}]
-
 if {[variant_isset g95]} {
-    if {${default_fortran_variant} != "+g95"} {
-        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.compiler macports-gcc-${ver}
-    }
-}
-
-if {[variant_isset g95]} {
-    depends_lib-append path:lib/libgcc/libgcc_s.1.dylib:libgcc
-    depends_build-append port:g95
-
-    configure.fc ${prefix}/bin/g95
-    configure.f77 ${prefix}/bin/g95
-    configure.f90 ${prefix}/bin/g95
-
     configure.fflags-append -fno-second-underscore
 }
 

Added: trunk/dports/science/ncarg/files/patch-ncarview-idt-glob.c.diff
===================================================================
--- trunk/dports/science/ncarg/files/patch-ncarview-idt-glob.c.diff	                        (rev 0)
+++ trunk/dports/science/ncarg/files/patch-ncarview-idt-glob.c.diff	2014-08-22 05:01:55 UTC (rev 124269)
@@ -0,0 +1,11 @@
+--- ncarview/src/bin/idt/glob.c.orig	2014-04-01 11:23:27.000000000 +0900
++++ ncarview/src/bin/idt/glob.c	2014-08-20 15:59:54.000000000 +0900
+@@ -49,7 +49,7 @@
+  *	to_child[1]	: fd for writing to spawned process
+  *	to_parent[0]	: fd for reading from spawned process
+  */
+-static	talkto(argv) 
++static void	talkto(argv) 
+ 	char	**argv;
+ {
+ 	int	pid;

Added: trunk/dports/science/ncarg/files/patch-ni-lib-hlu-CnTriMeshRenderer.c.diff
===================================================================
--- trunk/dports/science/ncarg/files/patch-ni-lib-hlu-CnTriMeshRenderer.c.diff	                        (rev 0)
+++ trunk/dports/science/ncarg/files/patch-ni-lib-hlu-CnTriMeshRenderer.c.diff	2014-08-22 05:01:55 UTC (rev 124269)
@@ -0,0 +1,38 @@
+--- ni/src/lib/hlu/CnTriMeshRenderer.c.orig	2014-04-01 11:23:12.000000000 +0900
++++ ni/src/lib/hlu/CnTriMeshRenderer.c	2014-08-20 16:09:26.000000000 +0900
+@@ -23,7 +23,9 @@
+ #include <stdlib.h>
+ #include <math.h>
+ #include <ctype.h>
++#ifdef _OPENMP
+ #include <omp.h>
++#endif
+ #include <ncarg/hlu/hluutil.h>
+ #include <ncarg/hlu/CnTriMeshRendererP.h>
+ #include <ncarg/hlu/WorkstationI.h>
+@@ -1532,8 +1534,13 @@
+ 	private(tbp,block_ix,ys,ye,ye_adj,xs,xe,xe_adj,npnt,ntri,nedg,npnt_alloc,xt,yt,i,j,in,out,vout, \
+ 		snodes,stris,sedges,vedges,cpoints,cedges,ctris,tid,xmx,xmn,ymx,ymn,ytmp,xtmp)
+ 	{
++#ifdef _OPENMP
+ 	  tid = omp_get_thread_num();
+ 	  nthreads = omp_get_num_threads();
++#else
++    tid = 0;
++    nthreads = 1;
++#endif
+ 	  if (tid == 0) {
+ 		  /* printf("%d threads\n",nthreads);*/
+ 		  if (nthreads > block_count) {
+@@ -3424,7 +3431,11 @@
+ #pragma omp parallel shared(cnp, tmp,entry_name,Lopn,Loen,Lotn,nthreads,bbox,msize,nsize,min_cell_size,fill_op) \
+   private(tbp,i)							 
+ 	{
++#ifdef _OPENMP
+ 		nthreads = omp_get_num_threads();
++#else
++    nthreads = 1;
++#endif
+ 		if (nthreads > 1) fill_op = 2;
+ 
+ #pragma omp for schedule(static,1)

Added: trunk/dports/science/ncarg/files/patch-ni-lib-hlu-Transform.c.diff
===================================================================
--- trunk/dports/science/ncarg/files/patch-ni-lib-hlu-Transform.c.diff	                        (rev 0)
+++ trunk/dports/science/ncarg/files/patch-ni-lib-hlu-Transform.c.diff	2014-08-22 05:01:55 UTC (rev 124269)
@@ -0,0 +1,12 @@
+--- ni/src/lib/hlu/Transform.c.orig	2014-04-01 11:23:12.000000000 +0900
++++ ni/src/lib/hlu/Transform.c	2014-08-20 16:09:54.000000000 +0900
+@@ -36,7 +36,9 @@
+ #include <ncarg/hlu/ConvertersP.h>
+ #include <ncarg/hlu/color.h>
+ #include <ncarg/hlu/WorkstationP.h>
++#ifdef _OPENMP
+ #include <omp.h>
++#endif
+ 
+ static _NhlRawObjCB callbacks[] = {
+ 	{_NhlCBtfOverlayStatus,

Added: trunk/dports/science/ncarg/files/patch-ni-lib-nfpfort-yMakefile.diff
===================================================================
--- trunk/dports/science/ncarg/files/patch-ni-lib-nfpfort-yMakefile.diff	                        (rev 0)
+++ trunk/dports/science/ncarg/files/patch-ni-lib-nfpfort-yMakefile.diff	2014-08-22 05:01:55 UTC (rev 124269)
@@ -0,0 +1,11 @@
+--- ni/src/lib/nfpfort/yMakefile.orig	2014-04-01 11:23:13.000000000 +0900
++++ ni/src/lib/nfpfort/yMakefile	2014-08-20 15:19:46.000000000 +0900
+@@ -45,7 +45,7 @@
+ 
+ 
+ plotgrids_var.o: plotgrids_var.f90
+-        $(F77) $(FFLAGS) -c plotgrids_var.f90
++        $(F77) $(FFLAGS) -freal-loops -c plotgrids_var.f90
+ 
+ plotfmt_open.o: plotfmt_open.f90
+ 	$(F77) $(FFLAGS) -c plotfmt_open.f90

Added: trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.c.diff
===================================================================
--- trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.c.diff	                        (rev 0)
+++ trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.c.diff	2014-08-22 05:01:55 UTC (rev 124269)
@@ -0,0 +1,16 @@
+--- ni/src/ncl/NclDriver.c.orig	2014-04-01 11:23:16.000000000 +0900
++++ ni/src/ncl/NclDriver.c	2014-08-20 13:45:56.000000000 +0900
+@@ -62,11 +62,13 @@
+     yydebug = 1;
+ #endif /* YYDEBUG */
+ 
++#ifdef _OPENMP
+     /* make sure that only one OMP thread runs unless OMP_NUM_THREADS is explicitly defined  -- on Darwin at least the default is not a single thread */
+ 
+     if (! getenv("OMP_NUM_THREADS")) {
+ 	    omp_set_num_threads(1);
+     }
++#endif
+ 
+     strcpy(buffer,(char *)GetNCARGPath("tmp"));
+     sr = access(buffer,W_OK|X_OK|F_OK);

Added: trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.h.diff
===================================================================
--- trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.h.diff	                        (rev 0)
+++ trunk/dports/science/ncarg/files/patch-ni-ncl-NclDriver.h.diff	2014-08-22 05:01:55 UTC (rev 124269)
@@ -0,0 +1,12 @@
+--- ni/src/ncl/NclDriver.h.orig	2014-04-01 11:23:16.000000000 +0900
++++ ni/src/ncl/NclDriver.h	2014-08-20 13:45:32.000000000 +0900
+@@ -29,7 +29,9 @@
+ #include   <ncarg/hlu/Error.h>
+ #include   <ncarg/hlu/App.h>
+ #include   <netcdf.h>
++#ifdef _OPENMP
+ #include   <omp.h>
++#endif
+ 
+ #if defined(HPUX)
+ #include   <dl.h>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140821/4ea919fd/attachment-0001.html>


More information about the macports-changes mailing list