Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build native binaries by GitHub Actions #3

Merged
merged 3 commits into from
Sep 6, 2023
Merged

Build native binaries by GitHub Actions #3

merged 3 commits into from
Sep 6, 2023

Conversation

rinsuki
Copy link

@rinsuki rinsuki commented Sep 4, 2023

UnityOpus のネイティブバイナリ (libopus+α) を GitHub Actions でビルドできるようにします。

使い方

  • 以下の毎コミットに対して、Windows x64/macOS/iOS/Android用のバイナリをビルドします
    • master ブランチ
    • Pull request
  • workflow_dispatch で実行すると、指定したブランチ (ベースブランチ or gha/ベースブランチ) にビルド済みのバイナリをコミットして push します
    • この Pull request にはビルド済みバイナリは含めていません
    • workflow_dispatch 以外で実行された場合はバイナリを Artifacts としてアップロードするところまでしか行いません (コミットはしません)

既存バイナリからの変更点

  • Windows: AVX 命令を使わなくなっています
    • libopus を見ると、通常 AVX 命令を利用する際は runtime check が走るようなのですが、なぜか正しく動いておらず AVX 命令が使えない CPU だと Illegal instruction でクラッシュするので、手元の Windows 環境が AVX 命令を実行できないこともあり無効にしてあります
    • 問題あれば戻します
  • macOS: ビルドに使う Xcode が変わっています
    • Deployment Target は macOS 10.13 から変わっていないので、影響はないはずです
  • iOS: ビルドに使う Xcode が変わっています
    • Deployment Target は iOS 15 にしています
  • Android: 特にないはず

@rizumi rizumi self-requested a review September 4, 2023 08:00
cd build
cmake .. -G "Xcode" -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF -DOPUS_BUILD_PROGRAMS=OFF \
-DMACOSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
Copy link

@rizumi rizumi Sep 4, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

universal binary指定されているのでよさそう

-DBUILD_SHARED_LIBS=OFF -DOPUS_BUILD_PROGRAMS=OFF \
-DAVX_SUPPORTED=OFF
cmake --build . --config Release
cp Release/opus.lib ../../Plugin/libopus/lib/Release/opus.lib
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

../../Plugin/libopus/lib/Release/opus.lib

絶対パスの方が可読性と後からディレクトリ構成変えたりした場合のメンテ楽になりそうですが、 $GITHUB_WORKSPACE とかは working-directory を指定した場合そっちが返るんでしたっけ?

Copy link
Author

@rinsuki rinsuki Sep 4, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確かに $GITHUB_WORKSPACE のほうが可読性良さそうなのでそうしたいと思います 👍 (working-directory には依存しないと思います)

@rinsuki rinsuki merged commit c491589 into master Sep 6, 2023
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants