aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/wxmac.rb
blob: 7371a32556be26981f5a50c4a1affdc47acd6a28 (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
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
require 'formula'

class Wxpython < Formula
  # For 2.8, we use this separate formula for wxPython. For 2.9 we use the combined one.
  url 'http://downloads.sourceforge.net/wxpython/wxPython-src-2.8.12.1.tar.bz2'
  md5 '8c06c5941477beee213b4f2fa78be620'
  head 'http://svn.wxwidgets.org/svn/wx/wxPython/trunk/', :using => StrictSubversionDownloadStrategy
  homepage 'http://www.wxpython.org'
end

class Wxmac < Formula
  url 'http://downloads.sourceforge.net/project/wxwindows/2.8.12/wxMac-2.8.12.tar.bz2'
  md5 '876000a9a9742c3c75a2597afbcb8856'

  devel do
    # wxPython 2.9 with 64bit and cocoa support ships a (patched) wxmac:
    url 'http://sourceforge.net/projects/wxpython/files/wxPython/2.9.3.1/wxPython-src-2.9.3.1.tar.bz2'
    md5 '11f5a423c05c43b4ff8c9f11f1986f04'
  end

  homepage 'http://www.wxwidgets.org'

  def options
    [
      ['--python', 'Build Python bindings'],
      ['--devel', 'Using unstable 2.9.x series (But 64-bit & cocoa support!)']
    ]
  end

  def test_python_arch
    # wxPython 2.8 does not yet support 64bit. But 2.9 with (--devel) does!
    unless ARGV.build_devel?
      begin
        system "arch -i386 python --version"
      rescue
        onoe "No python on path or default python does not support 32-bit."
        puts <<-EOS.undent
          Your default python (if any) does not support 32-bit execution, which is
          required for the wxmac python bindings. You can install the Homebrew
          python with 32-bit support by running:

          brew install python --universal --framework

        EOS
        exit 99
      end
    end
  end

def install_wx_python
    opts = [
      # Reference our wx-config
      "WX_CONFIG=#{bin}/wx-config",
      # At this time Wxmac is installed Unicode only
      "UNICODE=1",
      # And thus we have no need for multiversion support
      "INSTALL_MULTIVERSION=0",
      # OpenGL and stuff
      "BUILD_GLCANVAS=1",
      "BUILD_GIZMOS=1",
      "BUILD_STC=1"
    ]
    cd "wxPython" do
      if ARGV.build_devel?
        ENV.append_to_cflags '-arch x86_64' if MacOS.prefer_64_bit?

        system "python", "setup.py",
                         "build_ext",
                         "WXPORT=osx_cocoa",
                         *opts
        system "python", "setup.py",
                         "install",
                         "--prefix=#{prefix}",
                         "WXPORT=osx_cocoa",
                         *opts
      else # for wx 2.8 force 32-bit install with the 10.6 sdk:
        ENV.append_to_cflags '-arch i386'

        system "arch",   "-i386",
                         "python",
                         "setup.py",
                         "build_ext",
                         *opts

        system "arch",   "-i386",
                         "python",
                         "setup.py",
                         "install",
                         "--prefix=#{prefix}",
                         *opts
      end
    end
  end

  def install
    test_python_arch if ARGV.include? "--python"

    args = [
      "--disable-debug",
      "--prefix=#{prefix}",
      "--enable-unicode",
      "--enable-display",
      "--with-opengl"
    ]

    if ARGV.build_devel?
      args += [
        "--with-osx_cocoa",
        "--with-libjpeg",
        "--with-libtiff",
        "--with-libpng",
        "--with-zlib",
        "--enable-dnd",
        "--enable-clipboard",
        "--enable-webkit",
        "--enable-svg",
        "--with-expat"
      ]
    end

    unless ARGV.build_devel?
      # Force i386 wor wx 2.8
      ENV.m32

      # build will fail on Lion unless we use the 10.6 sdk (note wx 2.9 does fine)
      ENV.append_to_cflags '-isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6' if MacOS.lion?
    end

    system "./configure", *args
    system "make install"

    unless ARGV.build_devel?
      # erlang needs contrib/stc during configure phase.
      %w{ gizmos stc ogl }.each do |c|
       system "make -C contrib/src/#{c} install"
      end
    end

    if ARGV.include? "--python"
      ENV['WXWIN'] = Dir.getwd
      if ARGV.build_devel?
        # We have already downloaded wxPython in a bundle with wxWidgets
        install_wx_python
      else
        # We need to download wxPython separately (see formula at top)
        Wxpython.new.brew { install_wx_python }
      end
    end
  end

  def caveats
    s = ''
    unless ARGV.build_devel?
      s += <<-EOS.undent
        wxWidgets 2.8.x builds 32-bit only, so you probably won't be able to use it
        for other Homebrew-installed software. You can try to build with --devel to
        get the wxWidgets 2.9.x (unstable) for 64-bit and cocoa support.

      EOS
      if ARGV.include? '--python'
        s += <<-EOS.undent
          You will also need run python in 32-bit mode for wx. If you are on a 64-bit
          platform, you will need to run Python in 32-bit mode:

          arch -i386 python [args]

          Homebrew Python does not support this by default. So, homebrew Python must
          be built with --universal --framework.
          Alternative, you can try brew wxmac --python --devel for wx 2.9 in 64-bit.

        EOS
      end
    else
      s += "wx 2.9.x is the unstable (--devel) release. Some things *may* be broken.\n\n"
    end

    if ARGV.include? '--python'
      s += <<-EOS.undent
        Python bindings require that Python be built as a Framework; this is the
        default for Mac OS provided Python but not (yet) for Homebrew Python.
        Build python with `--framework`.

      EOS
    end

    return s
  end
end