# $Id: Portfile 80369 2011-07-10 18:28:28Z jeremyhu@macports.org $

PortSystem                  1.0
PortGroup                   archcheck 1.0
PortGroup                   xcodeversion 1.0

name                        wine-crossover
conflicts                   wine wine-devel wine-crossover-games
version                     10.0.3
license                     LGPL-2.1+
categories                  x11
maintainers                 jeremyhu openmaintainer
homepage                    http://www.codeweavers.com/
platforms                   darwin
distname                    crossover-sources-${version}
dist_subdir                 wine
set wine_distfile           [suffix ${distname}]
set wine_gecko_distfile     wine_gecko-1.2.0-x86.msi
distfiles                   ${wine_distfile} ${wine_gecko_distfile}
extract.only                ${wine_distfile}
worksrcdir                  wine
build.target                depend all
use_parallel_build          yes

minimum_xcodeversions       {8 2.5}

description                 Wine Is Not an Emulator (1.3.9 with CodeWeavers modifications for CrossOver)

long_description            Wine is an implementation of the Windows APIs on top of X11. \
                            This version contains the Codeweavers patches for CrossOver

master_sites                http://media.codeweavers.com/pub/crossover/source/ \
                            http://media.codeweavers.com/pub/crossover/source/archive/${version}/

checksums           crossover-sources-10.0.3.tar.gz \
                    rmd160  7717a1aa3d7cdfe445ac5494b8a3b7ca62edc257 \
                    sha256  be7c2361e975cdd1a3cfeadd62047ffe3e22683d6466230b967618dd29224535 \
                    wine_gecko-1.2.0-x86.msi \
                    rmd160  089447eb59eea81c7b1b3d1896a20fe68586cd96 \
                    sha256  d6ccdb32b5867df207c7cd89513297ceb89cfa93696bece470467845c6c4d3ee

# Note: Most of the X11 libs are dlopen()'d
depends_lib                 port:expat \
                            port:fontconfig \
                            port:freetype \
                            port:gnutls \
                            port:jpeg \
                            port:lcms \
                            port:libiconv \
                            port:libpng \
                            port:libxml2 \
                            port:libxslt \
                            port:ncurses \
                            port:openssl \
                            port:tiff \
                            port:zlib \
                            port:xorg-libsm \
                            port:xorg-libXcomposite \
                            port:xorg-libXcursor \
                            port:xorg-libXi \
                            port:xorg-libXinerama \
                            port:xorg-libXrandr \
                            port:xorg-libXxf86vm \
                            port:xrender \
                            port:mesa

archcheck.files             lib/libexpat.dylib \
                            lib/libfontconfig.dylib \
                            lib/libfreetype.dylib \
                            lib/libgnutls.dylib \
                            lib/libjpeg.dylib \
                            lib/liblcms.dylib \
                            lib/libiconv.dylib \
                            lib/libpng.dylib \
                            lib/libxml2.dylib \
                            lib/libxslt.dylib \
                            lib/libncurses.dylib \
                            lib/libssl.dylib \
                            lib/libtiff.dylib \
                            lib/libz.dylib \
                            lib/libSM.dylib \
                            lib/libXcomposite.dylib \
                            lib/libXcursor.dylib \
                            lib/libXi.dylib \
                            lib/libXinerama.dylib \
                            lib/libXrandr.dylib \
                            lib/libXxf86vm.dylib \
                            lib/libXrender.dylib \
                            lib/libGL.dylib

depends_build               port:flex \
                            port:pkgconfig

# Extract only the wine directory. We don't need the others, and their presence
# interferes with the wine build (which uses parts of them if present).
extract.post_args-append    wine

patchfiles                  sl-audio.patch no-quartz-wm-workaround.patch

configure.ldflags-append    -framework CoreServices \
                            -lz

configure.args              --without-alsa \
                            --without-audioio \
                            --without-capi \
                            --with-cms \
                            --with-coreaudio \
                            --with-cups \
                            --with-curses \
                            --without-esd \
                            --with-fontconfig \
                            --with-freetype \
                            --without-gphoto \
                            --with-glu \
                            --with-gnutls \
                            --without-gsm \
                            --without-hal \
                            --without-jack \
                            --with-jpeg \
                            --without-ldap \
                            --without-mpg123 \
                            --without-nas \
                            --without-openal \
                            --with-opengl \
                            --with-openssl \
                            --without-oss \
                            --with-png \
                            --with-pthread \
                            --without-sane \
                            --with-tiff \
                            --without-v4l \
                            --with-xcomposite \
                            --with-xcursor \
                            --with-xinerama \
                            --with-xinput \
                            --with-xml \
                            --with-xrandr \
                            --with-xrender \
                            --with-xshape \
                            --with-xshm \
                            --with-xslt \
                            --with-xxf86vm \
                            --with-x \
                            --x-include=${prefix}/include \
                            --x-lib=${prefix}/lib

# This is not 64-bit friendly yet
supported_archs             i386

# BUILD FIX TODO: llvm-gcc-4.2, clang
# llvm-gcc does not respect force_align_arg_pointer
# clang fails due to CFI-foo (winebuild uses /usr/bin/as to assemble clang-generated assembly)
if {${configure.compiler} == "llvm-gcc-4.2" ||
    ${configure.compiler} == "clang"} {
    configure.compiler gcc-4.2
}

platform darwin 9 {
    # Fix "Xcode 3.x cannot build 16-bit code correctly. Use --disable-win16 if you don't need 16-bit support."
    # Only affects Xcode 3.0.x and 3.1.x, not 3.2.x.
    # See http://bugs.winehq.org/show_bug.cgi?id=14920
    configure.args-append --disable-win16
}

platform darwin 10 {
    # _getdirentries_is_not_available_when_64_bit_inodes_are_in_effect dlls/ntdll/directory.o
    configure.cppflags-append -D_DARWIN_NO_64_BIT_INODE
}

platform darwin 11 {
    # _getdirentries_is_not_available_when_64_bit_inodes_are_in_effect dlls/ntdll/directory.o
    configure.cppflags-append -D_DARWIN_NO_64_BIT_INODE

    # Needed or wine will SIGBUS
    configure.ldflags-append -Wl,-no_pie
}

pre-fetch {
    if {"big" == ${os.endian}} {
        ui_error "${name} can only be used on an Intel Mac or other computer with a little-endian processor."
        return -code error "incompatible processor"
    }
}

post-destroot {
    xinstall -d ${destroot}${prefix}/libexec/wine
    file rename ${destroot}${prefix}/bin/wineloader ${destroot}${prefix}/libexec/wine/wine
    system "install_name_tool -change @executable_path/../lib/libwine.1.dylib ${prefix}/lib/libwine.1.dylib ${destroot}${prefix}/libexec/wine/wine"

    foreach dll [glob ${destroot}${prefix}/lib/wine/*.so] {
        system "install_name_tool -change @executable_path/../lib/libwine.1.dylib ${prefix}/lib/libwine.1.dylib ${dll}"
    }

    xinstall ${filespath}/wine.in ${destroot}${prefix}/bin/wine
    reinplace s|@PREFIX@|${prefix}|g ${destroot}${prefix}/bin/wine
    
    xinstall -d ${destroot}${prefix}/share/wine/gecko
    xinstall -m 644 ${distpath}/${wine_gecko_distfile} ${destroot}${prefix}/share/wine/gecko
    
    xinstall -d ${destroot}${prefix}/share/doc/${name}
    xinstall -m 644 -W ${worksrcpath} \
        ANNOUNCE \
        AUTHORS \
        COPYING.LIB \
        LICENSE \
        README \
        ${destroot}${prefix}/share/doc/${name}
}

livecheck.type              regex
livecheck.url               [lindex ${master_sites} 0]
livecheck.regex             crossover-sources-(\[0-9.\]+)\\.tar
