homebrew-core/Formula/wine.rb
Jack Nagel 53473b6bf5 Clean up MacOS version method usage
The MacOS.version? family of methods (other than "leopard?") are poorly
defined and lead to confusing code. Replace them in formulae with more
explicit comparisons.

"MacOS.version" is a special version object that can be compared to
numerics, symbols, and strings using the standard Ruby comparison
methods.

The old methods were moved to compat when the version comparison code
was merged, and they must remain there "forever", but they should not be
used in new code.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2012-09-10 16:16:54 -05:00

129 lines
4 KiB
Ruby

require 'formula'
class WineGecko < Formula
url 'http://downloads.sourceforge.net/wine/wine_gecko-1.4-x86.msi', :using => :nounzip
sha1 'c30aa99621e98336eb4b7e2074118b8af8ea2ad5'
devel do
url 'http://downloads.sourceforge.net/wine/wine_gecko-1.5-x86.msi', :using => :nounzip
sha1 '07b2bc74d03c885bb39124a7641715314cd3ae71'
end
end
class Wine < Formula
homepage 'http://winehq.org/'
url 'http://downloads.sourceforge.net/project/wine/Source/wine-1.4.1.tar.bz2'
sha256 '3c233e3811e42c2f3623413783dbcd0f2288014b5645211f669ffd0ba6ae1856'
head 'git://source.winehq.org/git/wine.git'
devel do
url 'http://downloads.sourceforge.net/project/wine/Source/wine-1.5.12.tar.bz2'
sha256 'ba987a0e3b1d5c0ba2d42fecdcff1c4e910d7c9949d9baca796b8b5c1318662c'
end
depends_on :x11
depends_on 'jpeg'
depends_on 'libicns'
fails_with :llvm do
build 2336
cause 'llvm-gcc does not respect force_align_arg_pointer'
end
# Wine tests CFI support by calling clang, but then attempts to use as, which
# does not work. Use clang for assembling too.
def patches
DATA if ENV.compiler == :clang
end
# the following libraries are currently not specified as dependencies, or not built as 32-bit:
# configure: libsane, libv4l, libgphoto2, liblcms, gstreamer-0.10, libcapi20, libgsm, libtiff
# Wine loads many libraries lazily using dlopen calls, so it needs these paths
# to be searched by dyld.
# Including /usr/lib because wine, as of 1.3.15, tries to dlopen
# libncurses.5.4.dylib, and fails to find it without the fallback path.
def wine_wrapper; <<-EOS.undent
#!/bin/sh
DYLD_FALLBACK_LIBRARY_PATH="#{MacOS::X11.lib}:#{HOMEBREW_PREFIX}/lib:/usr/lib" "#{bin}/wine.bin" "$@"
EOS
end
def install
# Build 32-bit; Wine doesn't support 64-bit host builds on OS X.
build32 = "-arch i386 -m32"
ENV["LIBS"] = "-lGL -lGLU"
ENV.append "CFLAGS", build32
if ENV.compiler == :clang
opoo <<-EOS.undent
Clang currently miscompiles some parts of Wine. If you have gcc, you
can get a more stable build with:
brew install wine --use-gcc
EOS
end
ENV.append "CXXFLAGS", "-D_DARWIN_NO_64_BIT_INODE"
ENV.append "LDFLAGS", "#{build32} -framework CoreServices -lz -lGL -lGLU"
args = ["--prefix=#{prefix}",
"--x-include=#{MacOS::X11.include}",
"--x-lib=#{MacOS::X11.lib}",
"--with-x",
"--with-coreaudio",
"--with-opengl"]
args << "--disable-win16" if MacOS.version == :leopard or ENV.compiler == :clang
# 64-bit builds of mpg123 are incompatible with 32-bit builds of Wine
args << "--without-mpg123" if Hardware.is_64_bit?
system "./configure", *args
system "make install"
# Don't need Gnome desktop support
rm_rf share+'applications'
# Download Gecko once so we don't need to redownload for each prefix
gecko = WineGecko.new
gecko.brew { (share+'wine/gecko').install Dir["*"] }
# Use a wrapper script, so rename wine to wine.bin
# and name our startup script wine
mv (bin+'wine'), (bin+'wine.bin')
(bin+'wine').write(wine_wrapper)
end
def caveats
s = <<-EOS.undent
For best results, you will want to install the latest version of XQuartz:
http://xquartz.macosforge.org/
You may also want to get winetricks:
brew install winetricks
Or check out:
http://code.google.com/p/osxwinebuilder/
EOS
return s
end
end
__END__
diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c
index 09f9b73..ed198f8 100644
--- a/tools/winebuild/utils.c
+++ b/tools/winebuild/utils.c
@@ -345,10 +345,11 @@ struct strarray *get_as_command(void)
if (!as_command)
{
- static const char * const commands[] = { "gas", "as", NULL };
- as_command = find_tool( "as", commands );
+ static const char * const commands[] = { "clang", NULL };
+ as_command = find_tool( "clang", commands );
}
strarray_add_one( args, as_command );
+ strarray_add_one( args, "-c" );
if (force_pointer_size)
{