Skip to content

Commit

Permalink
build: update OSX builds to llvm clang (#5822)
Browse files Browse the repository at this point in the history
* Update to brew clang++

* add osx build

* astyle format

* update docs for brew-clang-osx

give it a section to show how to install and explicitly build with brew's clang instead of apple clang.

* style(autofix.ci): automated formatting

* fight the autoformatter

* style(autofix.ci): automated formatting

* use official sol fix

use fix from
ThePhD/sol2@d805d02
at
ThePhD/sol2#1617

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
  • Loading branch information
FriedLongJohns and autofix-ci[bot] authored Dec 19, 2024
1 parent e8f7d2c commit 8fdbce2
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 7 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/manual-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,10 @@ jobs:
- name: Install dependencies (mac)
if: runner.os == 'macOS'
run: |
HOMEBREW_NO_AUTO_UPDATE=yes HOMEBREW_NO_INSTALL_CLEANUP=yes brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gettext ccache parallel
HOMEBREW_NO_AUTO_UPDATE=yes HOMEBREW_NO_INSTALL_CLEANUP=yes brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gettext ccache parallel llvm astyle
python3 -m venv ./venv
source ./venv/bin/activate
pip3 install mac_alias==2.2.0 dmgbuild==1.6.1 biplist
pip3 install mac_alias==2.2.0 dmgbuild==1.6.1 biplist polib luaparser
- name: Build CBN (linux)
if: runner.os == 'Linux' && matrix.mxe == 'none' && matrix.android == 'none'
Expand All @@ -266,7 +266,7 @@ jobs:
if: runner.os == 'macOS'
run: |
source ./venv/bin/activate
make -j3 TILES=${{ matrix.tiles }} SOUND=${{ matrix.tiles }} LUA=1 RELEASE=1 LANGUAGES=all USE_HOME_DIR=1 OSX_MIN=11 PCH=0 dmgdist COMPILER=clang++
make -j3 TILES=${{ matrix.tiles }} SOUND=${{ matrix.tiles }} LUA=1 RELEASE=1 LANGUAGES=all USE_HOME_DIR=1 OSX_MIN=11 PCH=0 COMPILER=$(brew --prefix llvm)/bin/clang++ dmgdist
mv CataclysmBN-${{ env.VERSION }}.dmg cbn-${{ matrix.artifact }}-${{ env.VERSION }}.dmg
- name: Set up JDK 11 (android)
if: runner.os == 'Linux' && matrix.android != 'none' && matrix.mxe == 'none'
Expand Down
96 changes: 96 additions & 0 deletions .github/workflows/osx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: "Cataclysm OSX Manual Build"

on:
workflow_dispatch:
pull_request:
branches:
- main
paths-ignore:
- "build-data/osx/**"
- "doc/**"
- "doxygen_doc/**"
- "gfx/**"
- "lang/**"
- "lgtm/**"
- "tools/**"
- "!tools/format/**"
- "utilities/**"
- 'scripts/**'

# We only care about the latest revision of a PR, so cancel previous instances.
concurrency:
group: osx-build-${{ github.event.pull_request.number || github.ref_name }}
cancel-in-progress: true

jobs:
build_catatclysm:
if: github.event.pull_request.draft == false

strategy:
fail-fast: false
matrix:
include:
- name: osx-curses-x64
os: macos-14
mxe: none
tiles: 0
artifact: osx-curses-x64
ext: dmg
content: application/x-apple-diskimage
- name: osx-tiles-x64
os: macos-14
mxe: none
tiles: 1
artifact: osx-tiles-x64
ext: dmg
content: application/x-apple-diskimage
- name: osx-curses-arm
os: macos-14
mxe: none
tiles: 0
artifact: osx-curses-arm
ext: dmg
content: application/x-apple-diskimage
- name: osx-tiles-arm
os: macos-14
mxe: none
tiles: 1
artifact: osx-tiles-arm
ext: dmg
content: application/x-apple-diskimage
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}

env:
ZSTD_CLEVEL: 17

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Install runtime dependencies
uses: BrettDong/setup-sdl2-frameworks@v1
with:
sdl2: latest
sdl2-ttf: latest
sdl2-image: latest
sdl2-mixer: latest

- name: Install build dependencies
run: |
HOMEBREW_NO_AUTO_UPDATE=yes HOMEBREW_NO_INSTALL_CLEANUP=yes brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gettext ccache parallel llvm astyle
python3 -m venv ./venv
source ./venv/bin/activate
pip3 install mac_alias==2.2.0 dmgbuild==1.6.1 biplist polib luaparser
- name: Check Clang OK
run: |
echo "Clang++ version:"
$(brew --prefix llvm)/bin/clang++ --version # Ensure clang++ is installed and working
- name: Build
run: |
source ./venv/bin/activate
make -j3 TILES=${{ matrix.tiles }} SOUND=${{ matrix.tiles }} LUA=1 RELEASE=1 LANGUAGES=all USE_HOME_DIR=1 OSX_MIN=11 PCH=0 COMPILER=$(brew --prefix llvm)/bin/clang++ dmgdist
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -276,10 +276,10 @@ jobs:
- name: Install build dependencies (mac)
if: runner.os == 'macOS'
run: |
HOMEBREW_NO_AUTO_UPDATE=yes HOMEBREW_NO_INSTALL_CLEANUP=yes brew install gettext ccache parallel
HOMEBREW_NO_AUTO_UPDATE=yes HOMEBREW_NO_INSTALL_CLEANUP=yes brew install gettext ccache parallel llvm astyle
python3 -m venv ./venv
source ./venv/bin/activate
pip3 install mac_alias==2.2.0 dmgbuild==1.6.1 biplist
pip3 install mac_alias==2.2.0 dmgbuild==1.6.1 biplist polib luaparser
- name: Build CBN (linux)
if: runner.os == 'Linux' && matrix.mxe == 'none' && matrix.android == 'none'
Expand Down Expand Up @@ -308,7 +308,7 @@ jobs:
if: runner.os == 'macOS'
run: |
source ./venv/bin/activate
make -j3 TILES=${{ matrix.tiles }} SOUND=${{ matrix.tiles }} RELEASE=1 LUA=1 LOCALIZE=1 LANGUAGES=all BACKTRACE=0 PCH=0 USE_HOME_DIR=1 OSX_MIN=11 FRAMEWORK=1 dmgdist
make -j3 TILES=${{ matrix.tiles }} SOUND=${{ matrix.tiles }} RELEASE=1 LUA=1 LOCALIZE=1 LANGUAGES=all BACKTRACE=0 PCH=0 USE_HOME_DIR=1 OSX_MIN=11 FRAMEWORK=1 COMPILER=$(brew --prefix llvm)/bin/clang++ dmgdist
mv CataclysmBN-unstable.dmg cbn-${{ matrix.artifact }}-${{ needs.metadata.outputs.tag_name }}.dmg
- name: Set up JDK 11 (android)
Expand Down
17 changes: 17 additions & 0 deletions doc/src/content/docs/en/dev/guides/building/makefile.md
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,23 @@ this will not work.

Check that `gcc -v` shows the homebrew version you installed.

### brew clang

If you want to use normal clang instead of apple clang, you can install it with Homebrew:

```sh
brew install llvm
```

Then you can specify the compiler with `COMPILER=$(brew --prefix llvm)/bin/clang++` in your make
command.

It's always good to check that the installed compiler is the one you want.

```sh
$(brew --prefix llvm)/bin/clang++ --version
```

### Compiling

The Cataclysm source is compiled using `make`.
Expand Down
3 changes: 2 additions & 1 deletion src/sol/sol.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6756,7 +6756,8 @@ namespace sol {
static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args");

*this = nullopt;
this->construct(std::forward<Args>(args)...);
new (static_cast<void*>(this)) optional(std::in_place, std::forward<Args>(args)...);
return **this;
}

/// Swaps this optional with the other.
Expand Down

0 comments on commit 8fdbce2

Please sign in to comment.