Comments (10)
This is fixed in SDL3 and SDL2.
I didn't apply to 2.30.x because it bumps the minimum required CMake version considerably: 3.0 -> 3.24
from sdl.
Can you please share a small standalone swift cmake project using SDL that shows this problem?
I'd like to experiment with it on ci.
(I don't own apple devices)
from sdl.
Use SDL2::SDL2
and SDL2::SDL2-static
instead.
The variables are only defined when using find_package
.
from sdl.
@madebr Here it is: https://github.com/pusewicz/libsdl-swift-cmake-static
I've configured CI with both options of linking as static and non-static.
from sdl.
Thanks for the example!
I'm trying to add it to SDL3 here, but it fails with the following error:
[14/19] : && /Applications/Xcode_15.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -j 3 -num-threads 3 -emit-executable -o swift-shared -emit-dependencies -O -wmo -sdk /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -output-file-map CMakeFiles/swift-shared.dir/Release/output-file-map.json -O -wmo -sdk /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -I /Users/runner/work/SDL/SDL/cmake_prefix/include /Users/runner/work/SDL/SDL/cmake/test/main.swift -L /Users/runner/work/SDL/SDL/cmake_prefix/lib -Xlinker -rpath -Xlinker /Users/runner/work/SDL/SDL/cmake_prefix/lib /Users/runner/work/SDL/SDL/cmake_prefix/lib/libSDL3.0.dylib && :
FAILED: swift-shared CMakeFiles/swift-shared.dir/main.swift.o
: && /Applications/Xcode_15.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -j 3 -num-threads 3 -emit-executable -o swift-shared -emit-dependencies -O -wmo -sdk /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -output-file-map CMakeFiles/swift-shared.dir/Release/output-file-map.json -O -wmo -sdk /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -I /Users/runner/work/SDL/SDL/cmake_prefix/include /Users/runner/work/SDL/SDL/cmake/test/main.swift -L /Users/runner/work/SDL/SDL/cmake_prefix/lib -Xlinker -rpath -Xlinker /Users/runner/work/SDL/SDL/cmake_prefix/lib /Users/runner/work/SDL/SDL/cmake_prefix/lib/libSDL3.0.dylib && :
/Users/runner/work/SDL/SDL/cmake/test/main.swift:3:8: error: no such module 'SDL3'
import SDL3
^
error: fatalError
Do you see where it's going wrong?
Also, can you verify my modifications to main.swift
?
SDL3's SDL_GetVersion
returns a Uint32
, and you need to apply macros to extract the major/minor/micro version number.
from sdl.
@madebr I think you might need to add cmake/test
to include_directories()
for Swift to find the module.modulemap
. I'm new to CMake and Swift, but I had to do https://github.com/pusewicz/libsdl-swift-cmake-static/blob/main/CMakeLists.txt#L12C1-L12C21 (add ${CMAKE_CURRENT_SOURCE_DIR}
).
In Swift you cannot use the C function macros. You would need to add a C wrapper with C functions using those macros to return that in Swift-land.
from sdl.
@madebr But I think you can use simple macros. So maybe you can just print SDL_VERSION
?
from sdl.
@madebr Can I buy you a coffee or a beer? 🥹
from sdl.
@madebr I was just trying the newest branch, and I can't compile it, see pusewicz/libsdl-swift-cmake-static#1
Getting
[45/470] Linking Swift executable bin/StaticSDLSwift
FAILED: bin/StaticSDLSwift CMakeFiles/StaticSDLSwift.dir/main.swift.o
: && /Users/runner/hostedtoolcache/swift-macOS/5.10.1/arm64/usr/bin/swiftc -j 3 -num-threads 3 -emit-executable -o bin/StaticSDLSwift -emit-dependencies -sdk /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -output-file-map CMakeFiles/StaticSDLSwift.dir//output-file-map.json -sdk /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -I /Users/runner/work/libsdl-swift-cmake-static/libsdl-swift-cmake-static /Users/runner/work/libsdl-swift-cmake-static/libsdl-swift-cmake-static/main.swift -static && :
error: -static may not be used with -emit-executable
Would you be able to spot what I'm doing wrong?
from sdl.
@madebr Just figured it out! Thanks for the reply!
from sdl.
Related Issues (20)
- Omitting multisample_state in SDL_GPUGraphicsPipelineCreateInfo will mask with 0x00 HOT 3
- [Feature Request] SDL3 GPU Backend for WebGPU Target HOT 9
- testautomation_surface.c: SDLTest_AssertCheck() is always true HOT 1
- SDL3 SDL_malloc.c #define FORCEINLINE problem HOT 7
- -Wcast-function-type warnings HOT 8
- GPU: Functions that may return errors should call SDL_SetError() HOT 5
- SDL_gpu_vulkan.c will always enable validation, not honoring the SDL_HINT_RENDER_VULKAN_DEBUG hint HOT 4
- SDL_WINDOWEVENT_EXPOSED not triggered on sway HOT 3
- Change SDL_GPU_TEXTUREFORMAT_INVALID to SDL_GPU_TEXTUREFORMAT_UNKNOWN = 0? HOT 2
- GPU: Reasonable zero-init defaults
- Can crash if Pipewire hotplug_loop_init() fails HOT 2
- Vcpkg Port Question HOT 3
- blit_testExampleApplicationRender failing on big-endian
- GPU shader format bit flags skip value 1 HOT 1
- Undefined symbols in project after trying to link SDL2 statically HOT 5
- Add new tutorial to sdl2 wiki HOT 1
- Guard against thread creation failure in PULSEAUDIO_DetectDevices HOT 6
- SDL_ShowSimpleMessageBox not working with wayland
- GPU: Remove lock in Vulkan FetchDescriptorSet
- I would love a SDL_GPU_DISABLED if possible, please. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdl.