Cross-Compile for OSX
Compiling the tools is really easy. Only setting up the cross compilation environment requires a little more effort. But luckily, the osxcross project already took care of this.
Setting up the cross compilation environment on Linux Mint 19
Install the needed dependencies
I needed only these (the others were already present):
sudo apt install clang llvm-dev uuid-dev libssl-dev libbz2-dev
Full list of all dependencies:
sudo apt install clang llvm-dev libxml2-dev uuid-dev libssl-dev bash patch make tar xz-utils bzip2 gzip sed cpio libbz2-dev
Get the MacOSX SDK
The official way
Extract the needed files from the official SDKs Xcode 7.3 from the Apple Developer website using the scripts that come with osxcross:
sudo apt install cmake libxml2-dev fuse libfuse-dev
./tools/gen_sdk_package_darling_dmg.sh path/to/SDK-file
On Ubuntu-based distributions with a name not containing the string "ubuntu"
(like Linux Mint) you will get an error message "Required kernel module
'fuse' not loaded". To fix this, "echo out" the line modinfo fuse
&>/dev/null
in tools/gen_sdk_package_darling_dmg.sh by changing it to echo
modinfo fuse &>/dev/null
before running it (don't delete it or comment it
out).
diff --git a/tools/gen_sdk_package_darling_dmg.sh b/tools/gen_sdk_package_darling_dmg.sh
index 8cd23e5..b271450 100755
--- a/tools/gen_sdk_package_darling_dmg.sh
+++ b/tools/gen_sdk_package_darling_dmg.sh
@@ -40,7 +40,7 @@ command -v lsb_release 2>&1 > /dev/null
if [[ $? -eq 0 ]] && [[ -n $(lsb_release -a 2>&1 | grep -i ubuntu) ]]; then
echo "Using ubuntu, skipping fuse module check"
else
- modinfo fuse &>/dev/null
+ echo modinfo fuse &>/dev/null
fi
if [ $? -ne 0 ]; then
Now move the resulting file MacOSX10.11.sdk.tar.xz
into the tarball directory.
The easy way
Somebody was kind enough to set up a repository with all the MacOSX SDKs. This saves you the trouble of downloading multiple gigabytes of data and running the extraction script.
Download the file MacOSX10.11.sdk.tar.xz into the tarball directory.
Build OSXcross:
./build.sh
sudo mv target /opt/osxcross
Add /opt/osxcross/bin
to your $PATH
and prepare macports:
export MACOSX_DEPLOYMENT_TARGET=10.7
export PATH=$PATH:/opt/osxcross/bin
osxcross-macports update-cache
Build stm8flash
osxcross-macports install libusb-devel
make CC=o64-clang CXX=o64-clang++ PKGCONFIG=x86_64-apple-darwin15-pkg-config RELEASE=yes
Or with full path if you didn't add the osxcross binary directory do your PATH:
make CC=/opt/osxcross/bin/o64-clang CXX=/opt/osxcross/bin/o64-clang++ PKGCONFIG=/opt/osxcross/bin/x86_64-apple-darwin15-pkg-config RELEASE=yes
Build stm8gal
make CC=o64-clang
That's all!