Index: Portfile
===================================================================
--- Portfile	(revision 134150)
+++ Portfile	(working copy)
@@ -4,7 +4,7 @@
 PortSystem          1.0
 PortGroup           octave 1.0
 
-octave.setup        interval 0.1.3
+octave.setup        interval 0.1.4
 platforms           darwin
 license             GPL-3+ Apache-2
 maintainers         nomaintainer
@@ -13,7 +13,63 @@
     inf-sup format is based on interval boundaries represented by \
     binary64 numbers and is standard conforming to IEEE 1788.
 
-checksums           rmd160 e377be8a80cd0904b750fb903153341bb9e68a4b \
-                    sha256 d76313934f464d8b92f9b4a0dd07d55a18967df145c4cdbd9c5958c900599a0c
+checksums           rmd160 284ba65f2e73fb0393efe3877b36fb962f5b5d62 \
+                    sha256 6fe7a8deaf212fcd586f802db43ff8ab4192471b2946f982f449d16f6552cec9
 
 depends_lib-append  port:mpfr port:gmp
+
+patchfiles-append \
+    patch-src_Makefile.diff \
+    patch-src_mpfr_function_d.cc.diff
+
+# octave-interval requires <cfenv>, which is part of C++0x and newer.
+
+if {${configure.cxx_stdlib} eq "libstdc++"} {
+
+    # *clang* when using libstdc++ do not seem to support C++11;
+    # C++11 support seems to need GCC 4.7+;
+    # could use C++0x support on GCC4.[56], but just ignore it since
+    # there are newer compilers already in place as defaults.
+
+    variant gcc49 conflicts gcc47 gcc48 \
+        description {build using macports-gcc-4.9} \
+    {
+        configure.compiler macports-gcc-4.9
+    }
+
+    variant gcc48 conflicts gcc47 gcc49 \
+        description {build using macports-gcc-4.8} \
+    {
+        configure.compiler macports-gcc-4.8
+    }
+
+    variant gcc47 conflicts gcc48 gcc49 \
+        description {build using macports-gcc-4.7} \
+    {
+        configure.compiler macports-gcc-4.7
+    }
+
+    # default to +gcc49
+    if {![variant_isset gcc47] &&
+        ![variant_isset gcc48] &&
+        ![variant_isset gcc49]} {
+        default_variants +gcc49
+    }
+
+    # make sure some +gcc4X is selected
+    if {![variant_isset gcc47] &&
+        ![variant_isset gcc48] &&
+        ![variant_isset gcc49]} {
+        ui_error "\n\nYou must select one of the following variants: +gcc47, +gcc48, +gcc49.\n"
+        return -code error "Invalid variant selection"
+    }
+
+} else {
+
+    # using libc++;
+    # Blacklist compilers not supporting C++11 in some form.
+
+    PortGroup compiler_blacklist_versions 1.0
+    compiler.blacklist-append *gcc-4.0 *gcc-4.2 {clang < 300}
+
+}
Index: files/patch-src_Makefile.diff
===================================================================
--- files/patch-src_Makefile.diff	(revision 0)
+++ files/patch-src_Makefile.diff	(working copy)
@@ -0,0 +1,13 @@
+--- src/Makefile.orig	2015-03-19 11:08:20.000000000 -0400
++++ src/Makefile	2015-03-19 11:08:29.000000000 -0400
+@@ -12,8 +12,8 @@
+ 
+ ## MPFR api oct-files
+ mpfr_%.oct: mpfr_%.cc mpfr_commons.cc
+-	$(MKOCTFILE)  -o $@ $(LDFLAGS_MPFR)  $<
++	$(MKOCTFILE) -v -o $@ $(LDFLAGS_MPFR)  $<
+ 
+ ## cfenv api oct-file
+ __setround__.oct: __setround__.cc
+-	CXXFLAGS="$(CPP11_CXXFLAGS)"  $(MKOCTFILE)  -o $@  $<
++	CXXFLAGS="$(CPP11_CXXFLAGS)"  $(MKOCTFILE) -v -o $@  $<
Index: files/patch-src_mpfr_function_d.cc.diff
===================================================================
--- files/patch-src_mpfr_function_d.cc.diff	(revision 0)
+++ files/patch-src_mpfr_function_d.cc.diff	(working copy)
@@ -0,0 +1,25 @@
+--- src/mpfr_function_d.cc.orig	2015-03-19 11:07:25.000000000 -0400
++++ src/mpfr_function_d.cc	2015-03-19 11:07:30.000000000 -0400
+@@ -106,19 +106,19 @@
+   bool scalar2 = arg2.numel () == 1;
+   bool scalar3 = arg3.numel () == 1;
+   
+-  if (scalar1)
++  if (scalar1) {
+     // arg1 shall contain the result and must possibly be resized
+     if (!scalar2)
+       {
+         arg1 = Matrix (arg2.dims (), arg1.elem (0));
+         scalar1 = false;
+       }
+-    else if (!scalar3)
++    else { if (!scalar3)
+       {
+         arg1 = Matrix (arg3.dims (), arg1.elem (0));
+         scalar1 = false;
+       }
+-
++  } }
+   const unsigned int n = std::max (std::max (arg1.numel (), arg2.numel ()),
+                                    arg3.numel ());
+   for (octave_idx_type i = 0; i < n; i ++)
