1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  | 
require 'formula'
class RBashCompletion < Formula
  # This is the same script that Debian packages use.
  url 'http://rcompletion.googlecode.com/svn-history/r28/trunk/bash_completion/R', :using => :curl
  version 'r28'
  sha1 'af734b8624b33f2245bf88d6782bea0dc5d829a4'
end
class R < Formula
  homepage 'http://www.r-project.org'
  url 'http://cran.r-project.org/src/base/R-2/R-2.15.2.tar.gz'
  sha1 'c80da687d66ee88d1e34fc1ae5c1bd525f9513dd'
  head 'https://svn.r-project.org/R/trunk'
  option 'with-valgrind', 'Compile an unoptimized build with support for the Valgrind debugger'
  depends_on 'readline'
  depends_on 'libtiff'
  depends_on 'jpeg'
  depends_on :x11
  depends_on 'valgrind' if build.include? 'with-valgrind'
  def patches
    # Fix detection of Objective-C++ in configure. Reported upstream:
    #   https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15107
    DATA
  end if MacOS.version >= :mountain_lion
  def install
    ENV.Og if build.include? 'with-valgrind'
    ENV.fortran
    args = [
      "--prefix=#{prefix}",
      "--with-aqua",
      "--enable-R-framework",
      "--with-lapack"
    ]
    args << '--with-valgrind-instrumentation=2' if build.include? 'with-valgrind'
    # Pull down recommended packages if building from HEAD.
    system './tools/rsync-recommended' if build.head?
    system "./configure", *args
    system "make"
    ENV.j1 # Serialized installs, please
    system "make install"
    # Link binaries and manpages from the Framework
    # into the normal locations
    bin.mkpath
    man1.mkpath
    ln_s prefix+"R.framework/Resources/bin/R", bin
    ln_s prefix+"R.framework/Resources/bin/Rscript", bin
    ln_s prefix+"R.framework/Resources/man1/R.1", man1
    ln_s prefix+"R.framework/Resources/man1/Rscript.1", man1
    bash_dir = prefix + 'etc/bash_completion.d'
    bash_dir.mkpath
    RBashCompletion.new.brew { bash_dir.install 'R' }
  end
  def caveats; <<-EOS.undent
    R.framework was installed to:
      #{opt_prefix}/R.framework
    To use this Framework with IDEs such as RStudio, it must be linked
    to the standard OS X location:
      sudo ln -s "#{opt_prefix}/R.framework" /Library/Frameworks
    To enable rJava support, run the following command:
      R CMD javareconf JAVA_CPPFLAGS=-I/System/Library/Frameworks/JavaVM.framework/Headers
    EOS
  end
end
__END__
Patch configure so that Objective-C++ tests pass on OS X 10.8.x. The problem is
that every test uses the header file `objc/Object.h` to define Objective-C
objects and this header is a no-op include on 10.8 unless the `__OBJC2__`
preprocessor variable is undefined.
Upstream bug:
  https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15107
diff --git a/configure b/configure
index 5bae281..baf4f47 100755
--- a/configure
+++ b/configure
@@ -8328,6 +8328,7 @@ $as_echo_n "checking whether ${OBJCXX} can compile ObjC++... " >&6; }
 ## we don't use AC_LANG_xx because ObjC++ is not defined as a language (yet)
 ## (the test program is from the gcc test suite)
 cat << \EOF > conftest.mm
+#undef __OBJC2__
 #include <objc/Object.h>
 #include <iostream>
 
@@ -8368,6 +8369,7 @@ $as_echo_n "checking whether ${CXX} can compile ObjC++... " >&6; }
 ## we don't use AC_LANG_xx because ObjC++ is not defined as a language (yet)
 ## (the test program is from the gcc test suite)
 cat << \EOF > conftest.mm
+#undef __OBJC2__
 #include <objc/Object.h>
 #include <iostream>
 
@@ -8403,6 +8405,7 @@ $as_echo_n "checking whether ${OBJC} can compile ObjC++... " >&6; }
 ## we don't use AC_LANG_xx because ObjC++ is not defined as a language (yet)
 ## (the test program is from the gcc test suite)
 cat << \EOF > conftest.mm
+#undef __OBJC2__
 #include <objc/Object.h>
 #include <iostream>
 
@@ -24389,7 +24392,7 @@ else
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+#undef __OBJC2__
 #include <objc/Object.h>
 
 #ifdef F77_DUMMY_MAIN
  |