[3.0] Update SDL and ClangSharp#2570
Conversation
|
Minimum allowed coverage is Generated by 🐒 cobertura-action against 2e6fde5 |
8622118 to
dc21675
Compare
CMAKE_LIBRARY_ARCHITECTURE fixes the issue where system libraries weren't being found. Eg: "SDL_X11 (Wanted: ON): ON" was OFF without this setting. Eg: "Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so " was a not found error without this setting. I removed the pkg-config settings since they didn't seem to do anything and I couldn't figure out if they were correct in the first place. I'm assuming CMake figures these out automatically (it should automatically find the host version of the pkg-config executable and I'm *assuming* (please verify) it uses the CMAKE_LIBRARY_ARCHITECTURE variable to figure out which set of .pc files to use).
x64/amd64 is handled the same way for consistency.
…x package resolution issues
|
All native library builds modified in this PR shall attempt to be built by CI. |
This is because it otherwise gets confusing in the "run project" dropdown.
Exanite
left a comment
There was a problem hiding this comment.
Self code review complete. My review comments mainly explain why the changes were made. I didn't make an effort to comment how the code works this time though. This is because I want to rework this setup eventually.
| set(PKG_CONFIG_EXECUTABLE "/usr/bin/${ZIG_ARCH}-${ZIG_OS}-${LINUX_ABI}-pkg-config") | ||
| set(ENV{PKG_CONFIG_LIBDIR} "/usr/lib/${ZIG_ARCH}-${ZIG_OS}-${LINUX_ABI}/pkgconfig") | ||
| set(ENV{PKG_CONFIG_PATH} "/usr/lib/pkgconfig:/usr/share/pkgconfig") | ||
| set(CMAKE_FIND_ROOT_PATH "/usr/${ZIG_ARCH}-${ZIG_OS}-${LINUX_ABI}") |
There was a problem hiding this comment.
This folder doesn't exist on Ubuntu and the include, lib, and bin folders instead have the following format:
/usr/bin/{target-triple}
/usr/include/{target-triple}
/usr/lib/{target-triple}
Setting CMAKE_LIBRARY_ARCHITECTURE lets CMake find these automatically.
There was a problem hiding this comment.
I prefixed the OpenAL example project name and folder name since it was confusing in the "run project" dropdown of Rider (and maybe other IDEs).
| git submodule update --init --recursive --depth 1 ..\..\..\eng\submodules\openal-soft | ||
| ) | ||
|
|
||
| call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" arm64 |
There was a problem hiding this comment.
arm64 seems to work when using MSVC, but breaks for Clang. Using amd64_arm64 specifies the host_target setting properly.
| rm -rf build | ||
| mkdir build | ||
| cd build | ||
| cmake ../../../../eng/submodules/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos "-DCMAKE_OSX_ARCHITECTURES=arm64;armv7s" -DCMAKE_OSX_DEPLOYMENT_TARGET=9.0 -DCMAKE_BUILD_TYPE=Release -DSDL_STATIC=ON |
There was a problem hiding this comment.
armv7s was breaking the build since Xcode doesn't support it anymore. Looking it up online also shows that armv7s is old and unsupported.
| mkdir build | ||
| cd build | ||
| cmake ../../../../eng/submodules/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos "-DCMAKE_OSX_ARCHITECTURES=arm64;armv7s" -DCMAKE_OSX_DEPLOYMENT_TARGET=9.0 -DCMAKE_BUILD_TYPE=Release -DSDL_STATIC=ON | ||
| cmake ../../../../eng/submodules/sdl -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos "-DCMAKE_OSX_ARCHITECTURES=arm64" -DCMAKE_OSX_DEPLOYMENT_TARGET=9.0 -DCMAKE_BUILD_TYPE=Release -DSDL_STATIC=ON -DSDL_TEST_LIBRARY=OFF |
There was a problem hiding this comment.
DSDL_TEST_LIBRARY was defaulting to ON and led to some build issues on Linux x64. I've updated all the build scripts to consistently disable it.
| libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \ | ||
| libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev \ | ||
| libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev | ||
| pkg-config cmake ninja-build gnome-desktop-testing \ |
There was a problem hiding this comment.
These also specify :amd64 purely for consistency.
| libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev \ | ||
| libpipewire-0.3-dev libwayland-dev libdecor-0-dev liburing-dev | ||
| pkg-config cmake ninja-build gnome-desktop-testing \ | ||
| libglib2.0-dev-bin \ |
There was a problem hiding this comment.
Executables must use the host architecture, so they are unsuffixed.
Compile dependencies must use the target architecture, so they are suffixed (armhf in this case).
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "OpenAL", "OpenAL", "{662A1AEC-91F2-48FA-AA29-6F27038D30F2}" | ||
| EndProject | ||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tutorial001.HelloSound", "examples\CSharp\OpenAL\Tutorial001.HelloSound\Tutorial001.HelloSound.csproj", "{946C912C-5BBB-446A-A566-0D1696D19F59}" | ||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenAL.Tutorial001.HelloSound", "examples\CSharp\OpenAL\OpenAL.Tutorial001.HelloSound\OpenAL.Tutorial001.HelloSound.csproj", "{946C912C-5BBB-446A-A566-0D1696D19F59}" |
There was a problem hiding this comment.
I'll probably convert this .sln file to an .slnx file as my next PR and ensure that Nuke works with the new format (should work after updating Nuke).
(cherry picked from commit ecc5677)
…e, but dependencies first by default is most consistent) (cherry picked from commit ad2d940)
…'s native build process
apt-get seems to be recommended over apt for scripting purposes. apt is designed for humans and does not guarantee backwards compatibility. See https://manpages.debian.org/stretch/apt/apt.8.en.html

Summary of the PR
This PR updates ClangSharp and SDL. This was originally part of #2567, but proved to be a more involved change than anticipated due to SDL build problems.
Related issues, Discord discussions, or proposals
Related PR: #2567
Further Comments
Tasks
Native builds
(Currently disabling this command by adding a space; the builds are already committed so there's no reason to run them again)
/build-native SDL OpenAL-Soft