diff --git a/Makefile b/Makefile index 2542fb7..aed6b9b 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ supported_platforms := \ linux-arm64 \ linux-x64 \ windows-x64 \ - darwin-x64 + darwin-x64 \ + darwin-arm64 cmd_build := build cmd_test := test examples_dir := examples diff --git a/dockerfiles/darwin-arm64.Dockerfile b/dockerfiles/darwin-arm64.Dockerfile new file mode 100644 index 0000000..79ad93a --- /dev/null +++ b/dockerfiles/darwin-arm64.Dockerfile @@ -0,0 +1,47 @@ +FROM dockercore/golang-cross as m1cross + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update -qq && apt-get install -y -q --no-install-recommends \ + cmake \ + git \ + libssl-dev \ + libxml2-dev \ + libz-dev \ + && rm -rf /var/lib/apt/lists/* + +ENV SDK_VERSION=11.3 \ + TARGET_DIR=/osxcross/target \ + UNATTENDED=1 + +WORKDIR /work +RUN git clone --depth=1 https://github.com/tpoechtrager/osxcross.git /work \ + && cd /work/tarballs \ + && wget -q https://github.com/phracker/MacOSX-SDKs/releases/download/${SDK_VERSION}/MacOSX${SDK_VERSION}.sdk.tar.xz + +# Build cross compile toolchain for Apple silicon +RUN ./build.sh + + +FROM dockcross/base + +ENV OSX_CROSS_PATH=/osxcross + +COPY --from=m1cross "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}/" +ENV PATH=${OSX_CROSS_PATH}/target/bin:$PATH + +COPY init.sh /tmp/init.sh +RUN bash /tmp/init.sh + +ENV CC=arm64-apple-darwin20.4-clang \ + CXX=arm64-apple-darwin20.4-clang++ \ + CPP=arm64-apple-darwin20.4-clang++ \ + AR=arm64-apple-darwin20.4-ar \ + AS=arm64-apple-darwin20.4-as \ + LD=arm64-apple-darwin20.4-ld + +COPY darwin-arm64.cmake ${OSX_CROSS_PATH}/ +ENV CMAKE_TOOLCHAIN_FILE ${OSX_CROSS_PATH}/darwin-arm64.cmake + +ARG IMAGE=lherman/cross-darwin-arm64 +ARG VERSION=latest +ENV DEFAULT_DOCKCROSS_IMAGE ${IMAGE}:${VERSION} diff --git a/dockerfiles/darwin-arm64.cmake b/dockerfiles/darwin-arm64.cmake new file mode 100644 index 0000000..6fb6359 --- /dev/null +++ b/dockerfiles/darwin-arm64.cmake @@ -0,0 +1,8 @@ +set(CMAKE_SYSTEM_NAME Darwin) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR arm64) + +set(CMAKE_C_COMPILER $ENV{CC}) +set(CMAKE_CXX_COMPILER $ENV{CXX}) +set(CMAKE_AR $ENV{AR}) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) diff --git a/pkg/codec/openh264/lib/libopenh264-darwin-arm64.a b/pkg/codec/openh264/lib/libopenh264-darwin-arm64.a new file mode 100644 index 0000000..a61d677 Binary files /dev/null and b/pkg/codec/openh264/lib/libopenh264-darwin-arm64.a differ diff --git a/pkg/codec/opus/lib/libopus-darwin-arm64.a b/pkg/codec/opus/lib/libopus-darwin-arm64.a new file mode 100644 index 0000000..4d7c2eb Binary files /dev/null and b/pkg/codec/opus/lib/libopus-darwin-arm64.a differ diff --git a/pkg/codec/opus/opus_static.go b/pkg/codec/opus/opus_static.go index 8ec43ab..85a19fa 100644 --- a/pkg/codec/opus/opus_static.go +++ b/pkg/codec/opus/opus_static.go @@ -8,5 +8,6 @@ package opus //#cgo linux,arm64 LDFLAGS: ${SRCDIR}/lib/libopus-linux-arm64.a -lm //#cgo linux,amd64 LDFLAGS: ${SRCDIR}/lib/libopus-linux-x64.a -lm //#cgo darwin,amd64 LDFLAGS: ${SRCDIR}/lib/libopus-darwin-x64.a +//#cgo darwin,arm64 LDFLAGS: ${SRCDIR}/lib/libopus-darwin-arm64.a //#cgo windows,amd64 LDFLAGS: ${SRCDIR}/lib/libopus-windows-x64.a import "C"