From 3ca94e8a33ab21ef9553c44025760f3e249b31d6 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Mon, 30 Jun 2025 20:39:54 +1000 Subject: [PATCH] Attempt to fix macOS builds --- .github/workflows/build_mac32.yml | 26 ++++++++++++++------------ .github/workflows/build_mac64.yml | 21 +++++++++++---------- .github/workflows/build_rpi.yml | 4 ++-- Makefile | 1 + doc/portability.md | 1 - 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build_mac32.yml b/.github/workflows/build_mac32.yml index 5283d2a0b..7e65e2c96 100644 --- a/.github/workflows/build_mac32.yml +++ b/.github/workflows/build_mac32.yml @@ -22,38 +22,40 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 + - name: Compile 32 bit macOS builds shell: bash id: compile env: - COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -rdynamic" + LIBS: "-framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1" + SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/src/*.c" + COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Ithird_party/bearssl/inc -fvisibility=hidden -rdynamic" run: | LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" - cd src PATH=$PATH:/usr/local/compiler/target/bin - i386-apple-darwin8-clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} $LATEST_FLAG -o cc-mac32-gl1 -framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1 - i386-apple-darwin8-clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac32-gl2 -framework Cocoa -framework OpenGL -framework IOKit -lobjc -lgcc_s.1 + i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} $LATEST_FLAG -o cc-mac32-gl1 ${{ env.LIBS }} + i386-apple-darwin8-clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac32-gl2 ${{ env.LIBS }} - name: Compile 32 bit macOS builds (PowerPC) shell: bash id: compile_ppc env: - COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -fvisibility=hidden -static-libgcc -Wl,-no_compact_unwind -DCC_BUILD_ICON -isystem /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk -Wl,-syslibroot /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk" + LIBS: "-framework Cocoa -framework OpenGL -framework IOKit -lobjc" + SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/src/*.c" + COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Ithird_party/bearssl/inc -fvisibility=hidden -static-libgcc -Wl,-no_compact_unwind -isystem /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk -Wl,-syslibroot /usr/local/compiler/ppc/target/SDK/MacOSX10.5.sdk" run: | LATEST_FLAG=-DCC_COMMIT_SHA=\"${GITHUB_SHA::9}\" mkdir -p /home/minty/repos/osxcross-ppc-test/target/bin ln -s /usr/local/compiler/ppc/target/bin/powerpc64-apple-darwin9-as /home/minty/repos/osxcross-ppc-test/target/bin/powerpc64-apple-darwin9-as - cd src PATH=$PATH:/usr/local/compiler/ppc/target/bin - powerpc-apple-darwin9-base-gcc *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} $LATEST_FLAG -o cc-mac32-ppc -mmacosx-version-min=10.2.0 -m32 -framework Cocoa -framework OpenGL -framework IOKit -lobjc + powerpc-apple-darwin9-base-gcc *${{ env.SRCS }} ${{ env.COMMON_FLAGS }} $LATEST_FLAG -o cc-mac32-ppc -mmacosx-version-min=10.2.0 -m32 ${{ env.LIBS }} - name: Generate combined Intel + PowerPC build shell: bash id: gen_universal run: | - cd src PATH=$PATH:/usr/local/compiler/target/bin i386-apple-darwin8-lipo -create -output cc-mac32-universal cc-mac32-gl1 cc-mac32-ppc @@ -67,25 +69,25 @@ jobs: - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac32-gl1' + SOURCE_FILE: 'cc-mac32-gl1' DEST_NAME: 'ClassiCube-mac32-OpenGL' - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac32-gl2' + SOURCE_FILE: 'cc-mac32-gl2' DEST_NAME: 'ClassiCube-mac32-ModernGL' - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile_ppc.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac32-ppc' + SOURCE_FILE: 'cc-mac32-ppc' DEST_NAME: 'ClassiCube-mac32-PPC' - uses: ./.github/actions/upload_build if: ${{ always() && steps.gen_universal.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac32-universal' + SOURCE_FILE: 'cc-mac32-universal' DEST_NAME: 'ClassiCube-mac32' diff --git a/.github/workflows/build_mac64.yml b/.github/workflows/build_mac64.yml index 30c7e0cfd..95708edb4 100644 --- a/.github/workflows/build_mac64.yml +++ b/.github/workflows/build_mac64.yml @@ -23,17 +23,18 @@ jobs: shell: bash id: compile env: - COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn" - MAC_ARM64_FLAGS: "-fvisibility=hidden -rdynamic -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -arch arm64" - MAC_INTEL64_FLAGS: "-fvisibility=hidden -rdynamic -arch x86_64" + LIBS: "-framework Cocoa -framework OpenGL -framework IOKit -lobjc" + SRCS: "src/*.c src/Window_cocoa.m third_party/bearssl/src/*.c" + COMMON_FLAGS: "-O1 -s -fno-stack-protector -fno-math-errno -Qn -Ithird_party/bearssl/inc" + ARM64_FLAGS: "-fvisibility=hidden -rdynamic -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -arch arm64" + INTEL64_FLAGS: "-fvisibility=hidden -rdynamic -arch x86_64" run: | LATEST_FLAG=-DCC_COMMIT_SHA=\"$(git rev-parse --short "$GITHUB_SHA")\" - cd src - MACOSX_DEPLOYMENT_TARGET=10.5 clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} ${{ env.MAC_INTEL64_FLAGS }} $LATEST_FLAG -o cc-mac64-gl1 -framework Cocoa -framework OpenGL -framework IOKit -lobjc - MACOSX_DEPLOYMENT_TARGET=10.5 clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} ${{ env.MAC_INTEL64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac64-gl2 -framework Cocoa -framework OpenGL -framework IOKit -lobjc + MACOSX_DEPLOYMENT_TARGET=10.5 clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.INTEL64_FLAGS }} $LATEST_FLAG -o cc-mac64-gl1 ${{ env.LIBS }} + MACOSX_DEPLOYMENT_TARGET=10.5 clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.INTEL64_FLAGS }} $LATEST_FLAG -DCC_GFX_BACKEND=CC_GFX_BACKEND_GL2 -o cc-mac64-gl2 ${{ env.LIBS }} - clang *.c Window_cocoa.m ${{ env.COMMON_FLAGS }} ${{ env.MAC_ARM64_FLAGS }} $LATEST_FLAG -o cc-mac-arm64 -framework Cocoa -framework OpenGL -framework IOKit -lobjc + clang ${{ env.SRCS }} ${{ env.COMMON_FLAGS }} ${{ env.ARM64_FLAGS }} $LATEST_FLAG -o cc-mac-arm64 ${{ env.LIBS }} # https://wiki.freepascal.org/Code_Signing_for_macOS#Ad_hoc_signing - uses: ./.github/actions/notify_failure @@ -46,19 +47,19 @@ jobs: - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac64-gl1' + SOURCE_FILE: 'cc-mac64-gl1' DEST_NAME: 'ClassiCube-mac64-OpenGL' - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac64-gl2' + SOURCE_FILE: 'cc-mac64-gl2' DEST_NAME: 'ClassiCube-mac64-ModernGL' - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-mac-arm64' + SOURCE_FILE: 'cc-mac-arm64' DEST_NAME: 'ClassiCube-mac-ARM64' diff --git a/.github/workflows/build_rpi.yml b/.github/workflows/build_rpi.yml index dd53307aa..509b85c03 100644 --- a/.github/workflows/build_rpi.yml +++ b/.github/workflows/build_rpi.yml @@ -53,7 +53,7 @@ jobs: - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-rpi32' + SOURCE_FILE: 'cc-rpi32' DEST_NAME: 'cc-rpi32' @@ -105,7 +105,7 @@ jobs: - uses: ./.github/actions/upload_build if: ${{ always() && steps.compile.outcome == 'success' }} with: - SOURCE_FILE: 'src/cc-rpi64' + SOURCE_FILE: 'cc-rpi64' DEST_NAME: 'cc-rpi64' diff --git a/Makefile b/Makefile index 3d31ae1da..f69d7ae4d 100644 --- a/Makefile +++ b/Makefile @@ -96,6 +96,7 @@ ifeq ($(PLAT),darwin) LDFLAGS = -rdynamic -framework Cocoa -framework OpenGL -framework IOKit -lobjc BUILD_DIR = build/macos TARGET = $(ENAME).app + BEARSSL = 1 endif ifeq ($(PLAT),freebsd) diff --git a/doc/portability.md b/doc/portability.md index 17125797d..424ab82f0 100644 --- a/doc/portability.md +++ b/doc/portability.md @@ -82,7 +82,6 @@ HTTP, HTTPS, and setting request/getting response headers Define: - ```DEFAULT_NET_BACKEND CC_NET_BACKEND_BUILTIN``` - use built in simple HTTP backend -- ```DEFAULT_NET_BACKEND CC_NET_BACKEND_LIBCURL``` - use libcurl for HTTP Supporting connection reuse is highly recommended. (but not required)