Open5

yuniframeメンテナンスまつり(VS2022)

okuokuokuoku

yuniframeのような基盤ライブラリは、 一度安定してしまうとその依存ライブラリを更新しない病 にかかってしまう。ただ、最近SDL2の開発が完了してSDL3の開発が始まるなど、あんまり放置していると永久にキャッチアップできなくなりそうなので、ちょっと作業中断してアップデート作業を実施することに。

更新ターゲット

放置中に特に大きな変更が入ったのはwasm2cで、これはほぼほぼ再移植に近い手間が掛かるので別枠というか後まわしとする。

  • ツールチェーン(= VS2022、Xcode)
  • SDL2
  • ANGLE (Vulkan、Metal、DirectX11)
  • glslang と SPIR-V 関連

このうち、DirectX11でないANGLEはglslangやSPIR-Vに依存しているので同時にアップデートした方が良いかもしれない。

okuokuokuoku

CMakeのバージョンアップ

そもそも普段使っているCMakeが古い。。

F:\yfrm22>cmake --version
cmake version 3.19.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).

VisualStudioにバンドルされているバージョンは現状3.23のようだがこれも容赦なくアップデートされると見られるので、そのままアップデートしてしまう。3.25.1。

F:\yfrm22>"C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" --version
cmake version 3.23.22060601-MSVC_2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

https://repology.org/project/cmake/versions

あんまり世間的にはdefinitiveなバージョンは無い感じか。。

okuokuokuoku

とりあえず更新

https://github.com/okuoku/em2native-proto/commit/6cc247d2d0d4accb30b46c59944e431c54117da7

CIはいきなりwaylandがリンクできなくてコケてるな。。(変更には無関係) ひとつひとつ動作確認していく。

既に全てのPlatformでANGLEがOpenGL ESの実装に使われる(WebGL、Android)か、廃止予定(iOS、macOS)なのでPlatform OpenGLはもう廃止で良い気がするけど、RenderDocでトレースするために必要なので維持する必要がある。今はホストにPowerVR Native SDKがインストールされている前提だけど、これはIMGがGitで配ってるからそれを git-submodule して使った方が良いかもしれない。

https://github.com/powervr-graphics/Native_SDK

okuokuokuoku

とりあえずVS2022に移行できた

https://github.com/okuoku/em2native-proto/commit/54180851c64f477f8f72cb1735df1d28327bbcdb

WindowsStoreのだけ直接起動できないな。。

---------------------------
em2app.exe - システム エラー
---------------------------
vccorlib140d_app.DLL が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。 
---------------------------
OK   
---------------------------

ビルドは通るのにランタイムが無いとかあんのか。。InstallをクリックするとVisual Studio Installerが起動する。

ランタイムバージョンが合わない。。

Error DEP3321: To deploy this application, your deployment target should be running Windows Universal Runtime version 10.0.22000.0 or higher. You currently are running version 10.0.19045.2251. Please update your OS, or change your deployment target to a device with the appropriate version. em2app

okuokuokuoku

正しいWindows SDKバージョンを指定する

適当なWindows SDKバージョンを CMAKE_SYSTEM_VERSION に設定すると、適当なバージョン(システム上にインストールされている最新のSDK)にfallbackするらしい。

-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.17134.0.
-- The C compiler identification is MSVC 19.34.31935.0
-- The CXX compiler identification is MSVC 19.34.31935.0

確かにそういうロジックが存在する。。

https://github.com/Kitware/CMake/blob/d340fcdbb7c25e51343d3502bf4e971407f74f0d/Source/cmGlobalVisualStudio14Generator.cxx#L363-L373

というわけでVisualStudio installerでインストールされているSDKをちゃんと調べる:

まぁUWPはXboxでしか使わないしそこで動けば良いか。。いやまぁHololensも有るけど。。

https://github.com/okuoku/em2native-proto/commit/f8c355ce63874913d17bde3ed13fb6b0aeed9e25