aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/gnu-smalltalk.rb
blob: 2abd37704b77a2cba7e4af2dc68b125b27485497 (plain)
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
require 'formula'

# References:
# * http://smalltalk.gnu.org/wiki/building-gst-guides
#
# Note that we build 32-bit, which means that 64-bit
# optional dependencies will break the build. You may need
# to "brew unlink" these before installing GNU Smalltalk and
# "brew link" them afterwards:
# * gdbm

class GnuSmalltalk < Formula
  url 'ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-3.2.2.tar.gz'
  homepage 'http://smalltalk.gnu.org/'
  sha1 'a985d69e4760420614c9dfe4d3605e47c5eb8faa'

  # 'gmp' is an optional dep, it is built 64-bit on Snow Leopard
  # (and this brew is forced to build in 32-bit mode.)

  depends_on 'readline'

  fails_with_llvm "Codegen problems with LLVM"

  def install
    # 64-bit version doesn't build, so force 32 bits.
    ENV.m32

    if MacOS.prefer_64_bit? and Formula.factory('gdbm').installed?
      onoe "A 64-bit gdbm will cause linker errors"
      puts <<-EOS.undent
        GNU Smalltak doesn't compile 64-bit clean on OS X, so having a
        64-bit gdbm installed will break linking you may want to do:
          $ brew unlink gdbm
          $ brew install gnu-smalltalk
          $ brew link gdbm
      EOS
    end

    readline = Formula.factory('readline')

    # GNU Smalltalk thinks it needs GNU awk, but it works fine
    # with OS X awk, so let's trick configure.
    here = Dir.pwd
    system "ln -s /usr/bin/awk #{here}/gawk"
    ENV['AWK'] = "#{here}/gawk"

    ENV['FFI_CFLAGS'] = '-I/usr/include/ffi'
    system "./configure", "--disable-debug", "--disable-dependency-tracking",
                          "--prefix=#{prefix}",
                          "--with-readline=#{readline.lib}"
    system "make"
    ENV.j1 # Parallel install doesn't work
    system "make install"
  end
end