Giter Club home page Giter Club logo

Comments (10)

madebr avatar madebr commented on September 13, 2024 2

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.

madebr avatar madebr commented on September 13, 2024 1

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.

madebr avatar madebr commented on September 13, 2024 1

https://github.com/pusewicz/libsdl-swift-cmake-static/blob/782ca2774091eaa443d14d815f48630f60ba550c/CMakeLists.txt#L15-L20

Use SDL2::SDL2 and SDL2::SDL2-static instead.
The variables are only defined when using find_package.

from sdl.

pusewicz avatar pusewicz commented on September 13, 2024

@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.

madebr avatar madebr commented on September 13, 2024

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.

pusewicz avatar pusewicz commented on September 13, 2024

@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.

pusewicz avatar pusewicz commented on September 13, 2024

@madebr But I think you can use simple macros. So maybe you can just print SDL_VERSION?

from sdl.

pusewicz avatar pusewicz commented on September 13, 2024

@madebr Can I buy you a coffee or a beer? 🥹

from sdl.

pusewicz avatar pusewicz commented on September 13, 2024

@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.

pusewicz avatar pusewicz commented on September 13, 2024

@madebr Just figured it out! Thanks for the reply!

from sdl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.