diff --git a/.github/workflows/manual-release.yml b/.github/workflows/manual-release.yml index ae3e97644229..2453bb8aadf5 100644 --- a/.github/workflows/manual-release.yml +++ b/.github/workflows/manual-release.yml @@ -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' @@ -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' diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml new file mode 100644 index 000000000000..9b0160a76fba --- /dev/null +++ b/.github/workflows/osx.yml @@ -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 \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f69687b56dd9..0ebeea94f11e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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' @@ -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) diff --git a/doc/src/content/docs/en/dev/guides/building/makefile.md b/doc/src/content/docs/en/dev/guides/building/makefile.md index 7d9e4ee46b1f..a2014888e025 100644 --- a/doc/src/content/docs/en/dev/guides/building/makefile.md +++ b/doc/src/content/docs/en/dev/guides/building/makefile.md @@ -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`. diff --git a/src/sol/sol.hpp b/src/sol/sol.hpp index 13f9d009449f..2a1ddb754b9e 100644 --- a/src/sol/sol.hpp +++ b/src/sol/sol.hpp @@ -6756,7 +6756,8 @@ namespace sol { static_assert(std::is_constructible::value, "T must be constructible with Args"); *this = nullopt; - this->construct(std::forward(args)...); + new (static_cast(this)) optional(std::in_place, std::forward(args)...); + return **this; } /// Swaps this optional with the other.