53473b6bf5
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>
129 lines
4 KiB
Ruby
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)
|
|
{
|