add macos cross build
This commit is contained in:
parent
35f527bf9b
commit
82bcd3d086
45
Cross.toml
45
Cross.toml
@ -1,26 +1,41 @@
|
|||||||
[target.x86_64-unknown-linux-musl]
|
[target.x86_64-unknown-linux-musl]
|
||||||
pre-build = [
|
pre-build = [
|
||||||
"""apt-get update && \
|
"apt-get update",
|
||||||
apt-get --assume-yes install curl && \
|
"apt-get --assume-yes install curl",
|
||||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
"curl -fsSL https://deb.nodesource.com/setup_20.x | bash -",
|
||||||
apt-get --assume-yes install nodejs
|
"apt-get --assume-yes install nodejs"
|
||||||
"""
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[target.aarch64-unknown-linux-gnu]
|
[target.aarch64-unknown-linux-gnu]
|
||||||
pre-build = [
|
pre-build = [
|
||||||
"""apt-get update && \
|
"apt-get update",
|
||||||
apt-get --assume-yes install curl && \
|
"apt-get --assume-yes install curl",
|
||||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
"curl -fsSL https://deb.nodesource.com/setup_20.x | bash -",
|
||||||
apt-get --assume-yes install nodejs
|
"apt-get --assume-yes install nodejs"
|
||||||
"""
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[target.x86_64-pc-windows-gnu]
|
[target.x86_64-pc-windows-gnu]
|
||||||
pre-build = [
|
pre-build = [
|
||||||
"""apt-get update && \
|
"apt-get update",
|
||||||
apt-get --assume-yes install curl && \
|
"apt-get --assume-yes install curl",
|
||||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
"curl -fsSL https://deb.nodesource.com/setup_20.x | bash -",
|
||||||
apt-get --assume-yes install nodejs
|
"apt-get --assume-yes install nodejs"
|
||||||
"""
|
]
|
||||||
|
|
||||||
|
[target.x86_64-apple-darwin]
|
||||||
|
image = "ghcr.io/cross-rs/x86_64-apple-darwin-cross:local"
|
||||||
|
pre-build = [
|
||||||
|
"apt-get update",
|
||||||
|
"apt-get --assume-yes install curl",
|
||||||
|
"curl -fsSL https://deb.nodesource.com/setup_20.x | bash -",
|
||||||
|
"apt-get --assume-yes install nodejs"
|
||||||
|
]
|
||||||
|
|
||||||
|
[target.aarch64-apple-darwin]
|
||||||
|
image = "ghcr.io/cross-rs/aarch64-apple-darwin-cross:local"
|
||||||
|
pre-build = [
|
||||||
|
"apt-get update",
|
||||||
|
"apt-get --assume-yes install curl",
|
||||||
|
"curl -fsSL https://deb.nodesource.com/setup_20.x | bash -",
|
||||||
|
"apt-get --assume-yes install nodejs"
|
||||||
]
|
]
|
||||||
|
@ -31,40 +31,21 @@ Etc.
|
|||||||
|
|
||||||
### Compile from Linux for macOS
|
### Compile from Linux for macOS
|
||||||
|
|
||||||
Add toolchain:
|
Follow [cross-toolchains](https://github.com/cross-rs/cross-toolchains) instruction to add macOS support to cross.
|
||||||
|
|
||||||
```Bash
|
I created my image with:
|
||||||
# for arm64
|
|
||||||
rustup target add aarch64-apple-darwin
|
|
||||||
|
|
||||||
# for x86_64
|
```
|
||||||
rustup target add x86_64-apple-darwin
|
cargo build-docker-image x86_64-apple-darwin-cross \
|
||||||
|
--build-arg 'MACOS_SDK_URL=https://github.com/joseluisq/macosx-sdks/releases/download/12.3/MacOSX12.3.sdk.tar.xz'
|
||||||
```
|
```
|
||||||
|
|
||||||
Add linker and ar settings to `~/.cargo/config`:
|
Build then with:
|
||||||
|
|
||||||
```Bash
|
```
|
||||||
[target.x86_64-apple-darwin]
|
cross build --release --target aarch64-apple-darwin
|
||||||
linker = "x86_64-apple-darwin20.4-clang"
|
|
||||||
ar = "x86_64-apple-darwin20.4-ar"
|
|
||||||
|
|
||||||
[target.aarch64-apple-darwin]
|
|
||||||
linker = "aarch64-apple-darwin20.4-clang"
|
|
||||||
ar = "aarch64-apple-darwin20.4-ar"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Follow this guide: [rust-cross-compile-linux-to-macos](https://wapl.es/rust/2019/02/17/rust-cross-compile-linux-to-macos.html)
|
|
||||||
|
|
||||||
Or setup [osxcross](https://github.com/tpoechtrager/osxcross) correctly.
|
|
||||||
|
|
||||||
Add **osxcross/target/bin** to your **PATH** and run cargo with:
|
|
||||||
|
|
||||||
```Bash
|
|
||||||
# for arm64
|
|
||||||
CC="aarch64-apple-darwin20.4-clang -arch arm64e" cargo build --release --target=aarch64-apple-darwin
|
|
||||||
|
|
||||||
# for x86_64
|
|
||||||
CC="o64-clang" cargo build --release --target=x86_64-apple-darwin
|
|
||||||
```
|
```
|
||||||
### Create debian DEB and RHEL RPM packages
|
### Create debian DEB and RHEL RPM packages
|
||||||
|
|
||||||
|
@ -38,24 +38,6 @@ for target in "${targets[@]}"; do
|
|||||||
cp ./target/${target}/release/ffplayout.exe .
|
cp ./target/${target}/release/ffplayout.exe .
|
||||||
zip -r "ffplayout-v${version}_${target}.zip" assets docker docs LICENSE README.md CHANGELOG.md ffplayout.exe ffpapi.exe -x *.db -x *.db-shm -x *.db-wal -x '11-ffplayout' -x *.service
|
zip -r "ffplayout-v${version}_${target}.zip" assets docker docs LICENSE README.md CHANGELOG.md ffplayout.exe ffpapi.exe -x *.db -x *.db-shm -x *.db-wal -x '11-ffplayout' -x *.service
|
||||||
rm -f ffplayout.exe ffpapi.exe
|
rm -f ffplayout.exe ffpapi.exe
|
||||||
elif [[ $target == "x86_64-apple-darwin" ]] || [[ $target == "aarch64-apple-darwin" ]]; then
|
|
||||||
if [[ -f "ffplayout-v${version}_${target}.tar.gz" ]]; then
|
|
||||||
rm -f "ffplayout-v${version}_${target}.tar.gz"
|
|
||||||
fi
|
|
||||||
c_cc="x86_64-apple-darwin20.4-clang"
|
|
||||||
c_cxx="x86_64-apple-darwin20.4-clang++"
|
|
||||||
|
|
||||||
if [[ $target == "aarch64-apple-darwin" ]]; then
|
|
||||||
c_cc="aarch64-apple-darwin20.4-clang"
|
|
||||||
c_cxx="aarch64-apple-darwin20.4-clang++"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CC="$c_cc" CXX="$c_cxx" cargo build --release --target=$target
|
|
||||||
|
|
||||||
cp ./target/${target}/release/ffpapi .
|
|
||||||
cp ./target/${target}/release/ffplayout .
|
|
||||||
tar -czvf "ffplayout-v${version}_${target}.tar.gz" --exclude='*.db' --exclude='*.db-shm' --exclude='*.db-wal' --exclude='11-ffplayout' --exclude='*.service' assets docker docs LICENSE README.md CHANGELOG.md ffplayout ffpapi
|
|
||||||
rm -f ffplayout ffpapi
|
|
||||||
else
|
else
|
||||||
if [[ -f "ffplayout-v${version}_${target}.tar.gz" ]]; then
|
if [[ -f "ffplayout-v${version}_${target}.tar.gz" ]]; then
|
||||||
rm -f "ffplayout-v${version}_${target}.tar.gz"
|
rm -f "ffplayout-v${version}_${target}.tar.gz"
|
||||||
|
Loading…
Reference in New Issue
Block a user