Difference between revisions of "Cross-compile Wine for OSX on Linux"
(→Cross compile wine) |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
.deb can be found here: https://launchpad.net/~flosoft/+archive/ubuntu/cross-apple/ | .deb can be found here: https://launchpad.net/~flosoft/+archive/ubuntu/cross-apple/ | ||
+ | * Install [[#additional components needed|additional librairies]] here: /usr/i686-apple-darwin10/local/lib | ||
+ | * Install [[#additional components needed|additional header ]]<nowiki/>ffiles here: /usr/i686-apple-darwin10/local/include | ||
− | == | + | == Additional components needed == |
+ | You may need to install the following librairies: | ||
+ | * libjpeg | ||
+ | * libpng15 | ||
+ | |||
+ | == Prepare compilation environement == | ||
+ | === Get wine source from git === | ||
To cross compile wine, you need two differents work directories. | To cross compile wine, you need two differents work directories. | ||
One will be use to build the compilation tools, the other one will be used to build wine for OSX. | One will be use to build the compilation tools, the other one will be used to build wine for OSX. | ||
Line 15: | Line 23: | ||
{{Console|git clone git://source.winehq.org/git/wine.git ~/wine-git}} | {{Console|git clone git://source.winehq.org/git/wine.git ~/wine-git}} | ||
− | == Patch the code == | + | === Patch the code === |
Apply this patch to both source trees. It will allow to pass -isysrootfile and -iframeworkfile arguments to winegcc | Apply this patch to both source trees. It will allow to pass -isysrootfile and -iframeworkfile arguments to winegcc | ||
<pre class='code diff'> | <pre class='code diff'> | ||
Line 37: | Line 45: | ||
/* | /* | ||
</pre> | </pre> | ||
− | |||
== Build tools == | == Build tools == | ||
Line 63: | Line 70: | ||
Now, you can build wine: | Now, you can build wine: | ||
− | <pre class= | + | <pre class="code bash"> |
+ | cd $HOME/wine-git | ||
./configure --prefix=/ --host=i686-apple-darwin10 --with-wine-tools=$WINE_TOOLS | ./configure --prefix=/ --host=i686-apple-darwin10 --with-wine-tools=$WINE_TOOLS | ||
make | make | ||
make install DESTDIR="/install/destination" | make install DESTDIR="/install/destination" | ||
</pre> | </pre> | ||
+ | |||
+ | [[Category:Winebuild]] |
Latest revision as of 15:02, 6 June 2015
This article is a memo. It explains how OSX binaries are currently built.
Contents
Prerequisite
- Install a darwin compatible toolchain
- Install MacOS X SDK (You must own a Mac compatible computer to get those files).
- The building machine should be able to build Wine for linux i386. You may need to install wine build dependencies.
.deb can be found here: https://launchpad.net/~flosoft/+archive/ubuntu/cross-apple/
- Install additional librairies here: /usr/i686-apple-darwin10/local/lib
- Install additional header ffiles here: /usr/i686-apple-darwin10/local/include
Additional components needed
You may need to install the following librairies:
- libjpeg
- libpng15
Prepare compilation environement
Get wine source from git
To cross compile wine, you need two differents work directories. One will be use to build the compilation tools, the other one will be used to build wine for OSX.
git clone git://source.winehq.org/git/wine.git ~/wine-tools
git clone git://source.winehq.org/git/wine.git ~/wine-git
Patch the code
Apply this patch to both source trees. It will allow to pass -isysrootfile and -iframeworkfile arguments to winegcc
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c index fe0f033..03cc131 100644 --- a/tools/winegcc/winegcc.c +++ b/tools/winegcc/winegcc.c @@ -1240,11 +1240,11 @@ static int is_target_arg(const char* arg) /* * Directory Options - * -Bprefix -Idir -I- -Ldir -specs=file + * -Bprefix -Idir -I- -Ldir -specs=file, -isysrootfile, -iframeworkfile */ static int is_directory_arg(const char* arg) { - return arg[1] == 'B' || arg[1] == 'L' || arg[1] == 'I' || strncmp("-specs=", arg, 7) == 0; + return arg[1] == 'B' || arg[1] == 'L' || arg[1] == 'I' || strncmp("-specs=", arg, 7) == 0 || strncmp("-isysroot", arg, 8) == 0 || strncmp("-iframework", arg, 11) == 0; } /*
Build tools
Go to ~/wine-tools directory and compile the tools:
cd $HOME/wine-tools
./configure
make __tooldeps__Cross compile wine
Set your environement
You need to set environement vars to use the good compiler. We are going to use Mac OS 10.6 framework to ensure compatibility with older Macs.
export FRAMEWORK="10.6" export PATH="/usr/i686-apple-darwin10/bin/:$PATH" export CC="i686-apple-darwin10-gcc" export CFLAGS="-O3 -pipe -fno-strict-aliasing -fomit-frame-pointer -ffunction-sections -fdata-sections -maccumulate-outgoing-args -mno-push-args -freorder-blocks-and-partition" export LDFLAGS="-m32 -mmacosx-version-min=$FRAMEWORK -isysroot/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk -iframework/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk -F/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/System/Library/Frameworks -F/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/Library/Frameworks/OpenCL.framework/ -L/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/lib -L/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/lib/system -I/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/include/ -L/usr/i686-apple-darwin10/local/lib -I/usr/i686-apple-darwin10/local/include -I/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/X11/include/ -L/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/X11/lib/ -I/usr/include/freetype2 -I/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/include/ -I/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/include/libxml2 -L/usr/lib/apple/SDKs/MacOSX$FRAMEWORK.sdk/usr/lib/" export CPPFLAGS="$LDFLAGS" export WINE_TOOLS="~/wine-tools"
Build wine
Now, you can build wine:
cd $HOME/wine-git ./configure --prefix=/ --host=i686-apple-darwin10 --with-wine-tools=$WINE_TOOLS make make install DESTDIR="/install/destination"