mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-03-20 15:51:07 +01:00
Make D3D math functions static inline to reduce likelihood of linking conflicts
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
This commit is contained in:
@@ -667,7 +667,6 @@
|
||||
<ClCompile Include="..\..\src\render\opengl\SDL_shaders_gl.c" />
|
||||
<ClCompile Include="..\..\src\render\opengles2\SDL_render_gles2.c" />
|
||||
<ClCompile Include="..\..\src\render\opengles2\SDL_shaders_gles2.c" />
|
||||
<ClCompile Include="..\..\src\render\SDL_d3dmath.c" />
|
||||
<ClCompile Include="..\..\src\render\SDL_render.c" />
|
||||
<ClCompile Include="..\..\src\render\SDL_render_unsupported.c" />
|
||||
<ClCompile Include="..\..\src\render\SDL_yuv_sw.c" />
|
||||
|
||||
@@ -1536,7 +1536,6 @@
|
||||
<ClCompile Include="..\..\src\sensor\windows\SDL_windowssensor.c">
|
||||
<Filter>sensor\windows</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\render\SDL_d3dmath.c">
|
||||
<Filter>render</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\render\SDL_render.c">
|
||||
|
||||
Reference in New Issue
Block a user