mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-14 18:27:50 +00:00
Convert SDL_d3dmath.c functions to static inline in SDL_d3dmath.h to make
it less likely to conflict when static linking SDL. raylib's SDL backend
does not work with a "normal" upstream binary static link. It has these
errors:
/usr/bin/ld: /usr/local/lib64/libSDL3.a(SDL_d3dmath.c.o): in function `MatrixIdentity':
SDL/src/render/SDL_d3dmath.c:35: multiple definition of `MatrixIdentity'; CMakeFiles/raylib.dir/rcore.c.o:rcore.c:(.text+0x18470): first defined here
/usr/bin/ld: /usr/local/lib64/libSDL3.a(SDL_d3dmath.c.o): in function `MatrixMultiply':
SDL/src/render/SDL_d3dmath.c:44: multiple definition of `MatrixMultiply'; CMakeFiles/raylib.dir/rcore.c.o:rcore.c:(.text+0x18540): first defined here
collect2: error: ld returned 1 exit status
It works if these functions aren't emitted, (i.e.
!SDL_VIDEO_RENDER_D3D(11|12|GPU|VULKAN)
Or, if SDL is not linked static. Which I know is preferred anyway.
In raylib's case, it doesn't use this code anyway so it's not a problem
to build it yourself with them disabled. But it's a minor hassle to be
incompatible with static linking libraries from upstream.
I can't see any good reason for these functions to not be static inline
already, so I just put them in the header and deleted the .c.
Raylib's conflicting case is a library with a public function exposed to
users. But SDL's case is not.
- Moved all matrix functions from SDL_d3dmath.c to SDL_d3dmath.h as static inline
- Removed SDL_d3dmath.c from all project files (Visual Studio and Xcode)
- Functions affected: MatrixIdentity, MatrixMultiply, MatrixScaling,
MatrixTranslation, MatrixRotationX, MatrixRotationY, MatrixRotationZ
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| atomic | ||
| audio | ||
| camera | ||
| core | ||
| cpuinfo | ||
| dialog | ||
| dynapi | ||
| events | ||
| filesystem | ||
| gpu | ||
| haptic | ||
| hidapi | ||
| io | ||
| joystick | ||
| libm | ||
| loadso | ||
| locale | ||
| main | ||
| misc | ||
| power | ||
| process | ||
| render | ||
| sensor | ||
| stdlib | ||
| storage | ||
| test | ||
| thread | ||
| time | ||
| timer | ||
| tray | ||
| video | ||
| SDL.c | ||
| SDL_assert.c | ||
| SDL_assert_c.h | ||
| SDL_error.c | ||
| SDL_error_c.h | ||
| SDL_guid.c | ||
| SDL_hashtable.c | ||
| SDL_hashtable.h | ||
| SDL_hints.c | ||
| SDL_hints_c.h | ||
| SDL_internal.h | ||
| SDL_list.c | ||
| SDL_list.h | ||
| SDL_log.c | ||
| SDL_log_c.h | ||
| SDL_properties.c | ||
| SDL_properties_c.h | ||
| SDL_utils.c | ||
| SDL_utils_c.h | ||