53 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Docker
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Docker
		
	
	
	
# This Dockerfile produces a base image for builds.
 | 
						|
# It includes all dependencies necessary to cross-compile for Windows/MacOS/Linux.
 | 
						|
 | 
						|
FROM debian:bookworm AS osxcross
 | 
						|
ADD --chmod=644 "https://apt.llvm.org/llvm-snapshot.gpg.key" /etc/apt/trusted.gpg.d/apt.llvm.org.asc
 | 
						|
WORKDIR /build/osxcross
 | 
						|
ADD "https://github.com/tpoechtrager/osxcross.git#47936a512273bb3b414b5a2e83043c92eabc7ae7" .
 | 
						|
ADD "https://github.com/joseluisq/macosx-sdks/releases/download/14.5/MacOSX14.5.sdk.tar.xz" ./tarballs/MacOSX14.5.sdk.tar.xz
 | 
						|
RUN apt-get update && \
 | 
						|
    apt-get install -y ca-certificates
 | 
						|
COPY llvm.sources /etc/apt/sources.list.d/llvm.sources
 | 
						|
RUN apt-get update && \
 | 
						|
    apt-get install -y bash bzip2 clang-20 git lld-20 llvm-20 make patch xz-utils && \
 | 
						|
    ln -s $(which clang-20) /usr/bin/clang && \
 | 
						|
    ln -s $(which clang++-20) /usr/bin/clang++ && \
 | 
						|
    ln -s $(which ld64.lld-20) /usr/bin/ld64.lld && \
 | 
						|
    SDK_VERSION=14.5 UNATTENDED=1 ENABLE_COMPILER_RT_INSTALL=1 TARGET_DIR=/osxcross ./build.sh
 | 
						|
 | 
						|
FROM rust:1.89-bookworm
 | 
						|
ADD --chmod=644 "https://apt.llvm.org/llvm-snapshot.gpg.key" /etc/apt/trusted.gpg.d/apt.llvm.org.asc
 | 
						|
COPY llvm.sources /etc/apt/sources.list.d/llvm.sources
 | 
						|
RUN rustup target add x86_64-pc-windows-msvc && \
 | 
						|
    rustup target add x86_64-apple-darwin && \
 | 
						|
    rustup target add aarch64-apple-darwin && \
 | 
						|
    apt-get update && \
 | 
						|
    apt-get install -y clang-20 lld-20 libc6-dev libasound2-dev libudev-dev genisoimage mingw-w64 && \
 | 
						|
    cargo install cargo-bundle xwin && \
 | 
						|
    xwin --accept-license splat --output xwin && \
 | 
						|
    rm -rf .xwin-cache && \
 | 
						|
    ln -s $(which clang-20) /usr/bin/clang && \
 | 
						|
    ln -s $(which clang++-20) /usr/bin/clang++
 | 
						|
COPY --from=osxcross /osxcross /osxcross
 | 
						|
 | 
						|
ENV PATH="/osxcross/bin:$PATH" \
 | 
						|
    LD_LIBRARY_PATH="/osxcross/lib" \
 | 
						|
    CC="clang-20" CXX="clang++-20" AR="llvm-ar-20" \
 | 
						|
    CC_x86_64-apple-darwin="o64-clang" \
 | 
						|
    CXX_x86_64-apple-darwin="o64-clang++" \
 | 
						|
    CC_aarch64-apple-darwin="oa64-clang" \
 | 
						|
    CXX_aarch64-apple-darwin="o6a4-clang++" \
 | 
						|
    SHROOMS_CFLAGS_x86_64-unknown-linux-gnu="-flto" \
 | 
						|
    CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-Clinker-plugin-lto -Clinker=clang -Clink-arg=-fuse-ld=lld" \
 | 
						|
    SHROOMS_CFLAGS_x86_64-pc-windows-msvc="-flto" \
 | 
						|
    CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_RUSTFLAGS="-Lnative=/xwin/crt/lib/x86_64 -Lnative=/xwin/sdk/lib/um/x86_64 -Lnative=/xwin/sdk/lib/ucrt/x86_64 -Clinker-plugin-lto -Clink-arg=-fuse-ld=lld" \
 | 
						|
    CARGO_TARGET_X86_64_PC_WINDOWS_MSVC_LINKER="lld-link-20" \
 | 
						|
    CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER="o64-clang" \
 | 
						|
    CARGO_TARGET_X86_64_APPLE_DARWIN_AR="llvm-ar-20" \
 | 
						|
    CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER="oa64-clang" \
 | 
						|
    CARGO_TARGET_AARCH64_APPLE_DARWIN_AR="llvm-ar-20" \
 | 
						|
    RC_PATH="llvm-rc-20" \
 | 
						|
    MACOSX_DEPLOYMENT_TARGET="14.5"
 | 
						|
ENTRYPOINT ["bash"]
 |