mirror of https://github.com/libsdl-org/SDL
build: add symbol versioning for SDL
If a program built against one version of SDL is run in an environment where there is an earlier version of the SDL .so library installed, the result varies depending on platform configuration; in the best case, it won't start at all, at worst it aborts in the middle of the user doing "something important" (systems implementing lazy symbol resolution). verdefs on the other hand are always checked on startup. The dependency information present in programs and shared libraries is not only of value to the dynamic linker, but also to a distribution's package management. If the dynamic linker is able to tell that a program is not runnable per the above, a package manager is able to come to the same conclusion — and block the installation of a nonfunctional program+library ensemble. Because there are a lot more symbols than there are libraries (I am going to throw in "10^4 to 1 or worse"), package managers generally do not evaluate symbols, but only e.g. the SONAME, NEEDED and VERNEED fields/blocks. Because the SONAME is the same between two SDL versions like 2.0.24, and 2.0.26, everything rests on having verdefs. This patch proposes the addition of verdefs.
This commit is contained in:
parent
92cd2c0a74
commit
1878674477
|
@ -80,7 +80,7 @@ LOCAL_CFLAGS += -Wno-unused-parameter -Wno-sign-compare
|
|||
|
||||
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroid
|
||||
|
||||
LOCAL_LDFLAGS := -Wl,--no-undefined
|
||||
LOCAL_LDFLAGS := -Wl,--no-undefined -Wl,--version-script=$(LOCAL_PATH)/src/dynapi/SDL_dynapi.sym
|
||||
|
||||
ifeq ($(NDK_DEBUG),1)
|
||||
cmd-strip :=
|
||||
|
|
|
@ -276,6 +276,15 @@ if(WINDOWS)
|
|||
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||
endif()
|
||||
|
||||
check_linker_flag(C "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/dynapi/SDL_dynapi.sym" HAVE_WL_VERSION_SCRIPT)
|
||||
if(HAVE_WL_VERSION_SCRIPT)
|
||||
list(APPEND EXTRA_LDFLAGS_BUILD "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/dynapi/SDL_dynapi.sym")
|
||||
else()
|
||||
if((LINUX AND LIBC_IS_GLIBC) OR ANDROID)
|
||||
message(FATAL_ERROR "Linker does not support '-Wl,--version-script=xxx.sym'. This is required on the current host platform (${SDL_CMAKE_PLATFORM}).")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Emscripten toolchain has a nonempty default value for this, and the checks
|
||||
# in this file need to change that, so remember the original value, and
|
||||
# restore back to that afterwards. For check_function_exists() to work in
|
||||
|
@ -3182,6 +3191,8 @@ if(SDL_SHARED)
|
|||
# alias target for in-tree builds
|
||||
add_library(SDL3::SDL3 ALIAS SDL3)
|
||||
set_target_properties(SDL3 PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
set_target_properties(SDL3 PROPERTIES LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/dynapi/SDL_dynapi.sym")
|
||||
set_target_properties(SDL3 PROPERTIES INTERFACE_LINK_DEPENDS "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/dynapi/SDL_dynapi.sym>")
|
||||
if(NOT SDL_LIBC)
|
||||
if(MSVC AND SDL_CPU_X86)
|
||||
# FIXME: should be added for all architectures (missing symbols for ARM)
|
||||
|
|
|
@ -110,6 +110,26 @@ else()
|
|||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.18)
|
||||
function(check_linker_flag LANG FLAG VAR)
|
||||
cmake_push_check_state()
|
||||
list(APPEND CMAKE_REQUIRED_LINK_OPTIONS ${FLAG} )
|
||||
if(LANG STREQUAL "C")
|
||||
include(CheckCSourceCompiles)
|
||||
check_c_source_compiles("int main(int argc,char*argv[]){(void)argc;(void)argv;return 0;}" ${VAR} FAIL_REGEX "warning")
|
||||
elseif(LANG STREQUAL "CXX")
|
||||
include(CheckCXXSourceCompiles)
|
||||
check_cxx_source_compiles("int main(int argc,char*argv[]){(void)argc;(void)argv;return 0;}" ${VAR} FAIL_REGEX "warning")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported language: ${LANG}")
|
||||
endif()
|
||||
cmake_pop_check_state()
|
||||
endfunction()
|
||||
else()
|
||||
cmake_policy(SET CMP0057 NEW) # Support new if() IN_LIST operator. (used inside check_linker_flag, used in CMake 3.18)
|
||||
include(CheckLinkerFlag)
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
check_language(OBJC)
|
||||
if(NOT CMAKE_OBJC_COMPILER)
|
||||
|
|
|
@ -0,0 +1,871 @@
|
|||
SDL3_0.0.0 {
|
||||
global:
|
||||
SDL_OpenURL;
|
||||
SDL_LoadObject;
|
||||
SDL_LoadFunction;
|
||||
SDL_UnloadObject;
|
||||
SDL_RWFromFile;
|
||||
SDL_RWFromMem;
|
||||
SDL_RWFromConstMem;
|
||||
SDL_AllocRW;
|
||||
SDL_FreeRW;
|
||||
SDL_RWsize;
|
||||
SDL_RWseek;
|
||||
SDL_RWtell;
|
||||
SDL_RWread;
|
||||
SDL_RWwrite;
|
||||
SDL_RWclose;
|
||||
SDL_LoadFile_RW;
|
||||
SDL_LoadFile;
|
||||
SDL_ReadU8;
|
||||
SDL_ReadLE16;
|
||||
SDL_ReadBE16;
|
||||
SDL_ReadLE32;
|
||||
SDL_ReadBE32;
|
||||
SDL_ReadLE64;
|
||||
SDL_ReadBE64;
|
||||
SDL_WriteU8;
|
||||
SDL_WriteLE16;
|
||||
SDL_WriteBE16;
|
||||
SDL_WriteLE32;
|
||||
SDL_WriteBE32;
|
||||
SDL_WriteLE64;
|
||||
SDL_WriteBE64;
|
||||
SDL_RecordGesture;
|
||||
SDL_SaveAllDollarTemplates;
|
||||
SDL_SaveDollarTemplate;
|
||||
SDL_LoadDollarTemplates;
|
||||
SDL_GetNumAudioDrivers;
|
||||
SDL_GetAudioDriver;
|
||||
SDL_AudioInit;
|
||||
SDL_AudioQuit;
|
||||
SDL_GetCurrentAudioDriver;
|
||||
SDL_OpenAudio;
|
||||
SDL_GetNumAudioDevices;
|
||||
SDL_GetAudioDeviceName;
|
||||
SDL_GetAudioDeviceSpec;
|
||||
SDL_GetDefaultAudioInfo;
|
||||
SDL_OpenAudioDevice;
|
||||
SDL_GetAudioStatus;
|
||||
SDL_GetAudioDeviceStatus;
|
||||
SDL_PauseAudio;
|
||||
SDL_PauseAudioDevice;
|
||||
SDL_LoadWAV_RW;
|
||||
SDL_FreeWAV;
|
||||
SDL_BuildAudioCVT;
|
||||
SDL_ConvertAudio;
|
||||
SDL_NewAudioStream;
|
||||
SDL_AudioStreamPut;
|
||||
SDL_AudioStreamGet;
|
||||
SDL_AudioStreamAvailable;
|
||||
SDL_AudioStreamFlush;
|
||||
SDL_AudioStreamClear;
|
||||
SDL_FreeAudioStream;
|
||||
SDL_MixAudio;
|
||||
SDL_MixAudioFormat;
|
||||
SDL_QueueAudio;
|
||||
SDL_DequeueAudio;
|
||||
SDL_GetQueuedAudioSize;
|
||||
SDL_ClearQueuedAudio;
|
||||
SDL_LockAudio;
|
||||
SDL_LockAudioDevice;
|
||||
SDL_UnlockAudio;
|
||||
SDL_UnlockAudioDevice;
|
||||
SDL_CloseAudio;
|
||||
SDL_CloseAudioDevice;
|
||||
SDL_SetWindowsMessageHook;
|
||||
SDL_Direct3D9GetAdapterIndex;
|
||||
SDL_RenderGetD3D9Device;
|
||||
SDL_RenderGetD3D11Device;
|
||||
SDL_RenderGetD3D12Device;
|
||||
SDL_DXGIGetOutputInfo;
|
||||
SDL_LinuxSetThreadPriority;
|
||||
SDL_LinuxSetThreadPriorityAndPolicy;
|
||||
SDL_iPhoneSetAnimationCallback;
|
||||
SDL_iPhoneSetEventPump;
|
||||
SDL_AndroidGetJNIEnv;
|
||||
SDL_AndroidGetActivity;
|
||||
SDL_GetAndroidSDKVersion;
|
||||
SDL_IsAndroidTV;
|
||||
SDL_IsChromebook;
|
||||
SDL_IsDeXMode;
|
||||
SDL_AndroidBackButton;
|
||||
SDL_AndroidGetInternalStoragePath;
|
||||
SDL_AndroidGetExternalStorageState;
|
||||
SDL_AndroidGetExternalStoragePath;
|
||||
SDL_AndroidRequestPermission;
|
||||
SDL_AndroidShowToast;
|
||||
SDL_AndroidSendMessage;
|
||||
SDL_WinRTGetFSPathUNICODE;
|
||||
SDL_WinRTGetFSPathUTF8;
|
||||
SDL_WinRTGetDeviceFamily;
|
||||
SDL_IsTablet;
|
||||
SDL_OnApplicationWillTerminate;
|
||||
SDL_OnApplicationDidReceiveMemoryWarning;
|
||||
SDL_OnApplicationWillResignActive;
|
||||
SDL_OnApplicationDidEnterBackground;
|
||||
SDL_OnApplicationWillEnterForeground;
|
||||
SDL_OnApplicationDidBecomeActive;
|
||||
SDL_OnApplicationDidChangeStatusBarOrientation;
|
||||
SDL_GDKGetTaskQueue;
|
||||
SDL_AtomicTryLock;
|
||||
SDL_AtomicLock;
|
||||
SDL_AtomicUnlock;
|
||||
SDL_MemoryBarrierReleaseFunction;
|
||||
SDL_MemoryBarrierAcquireFunction;
|
||||
SDL_AtomicCAS;
|
||||
SDL_AtomicSet;
|
||||
SDL_AtomicGet;
|
||||
SDL_AtomicAdd;
|
||||
SDL_AtomicCASPtr;
|
||||
SDL_AtomicSetPtr;
|
||||
SDL_AtomicGetPtr;
|
||||
SDL_GetKeyboardFocus;
|
||||
SDL_GetKeyboardState;
|
||||
SDL_ResetKeyboard;
|
||||
SDL_GetModState;
|
||||
SDL_SetModState;
|
||||
SDL_GetKeyFromScancode;
|
||||
SDL_GetScancodeFromKey;
|
||||
SDL_GetScancodeName;
|
||||
SDL_GetScancodeFromName;
|
||||
SDL_GetKeyName;
|
||||
SDL_GetKeyFromName;
|
||||
SDL_StartTextInput;
|
||||
SDL_IsTextInputActive;
|
||||
SDL_StopTextInput;
|
||||
SDL_ClearComposition;
|
||||
SDL_IsTextInputShown;
|
||||
SDL_SetTextInputRect;
|
||||
SDL_HasScreenKeyboardSupport;
|
||||
SDL_IsScreenKeyboardShown;
|
||||
SDL_LogSetAllPriority;
|
||||
SDL_LogSetPriority;
|
||||
SDL_LogGetPriority;
|
||||
SDL_LogResetPriorities;
|
||||
SDL_Log;
|
||||
SDL_LogVerbose;
|
||||
SDL_LogDebug;
|
||||
SDL_LogInfo;
|
||||
SDL_LogWarn;
|
||||
SDL_LogError;
|
||||
SDL_LogCritical;
|
||||
SDL_LogMessage;
|
||||
SDL_LogMessageV;
|
||||
SDL_LogGetOutputFunction;
|
||||
SDL_LogSetOutputFunction;
|
||||
SDL_GUIDToString;
|
||||
SDL_GUIDFromString;
|
||||
SDL_PumpEvents;
|
||||
SDL_PeepEvents;
|
||||
SDL_HasEvent;
|
||||
SDL_HasEvents;
|
||||
SDL_FlushEvent;
|
||||
SDL_FlushEvents;
|
||||
SDL_PollEvent;
|
||||
SDL_WaitEvent;
|
||||
SDL_WaitEventTimeout;
|
||||
SDL_PushEvent;
|
||||
SDL_SetEventFilter;
|
||||
SDL_GetEventFilter;
|
||||
SDL_AddEventWatch;
|
||||
SDL_DelEventWatch;
|
||||
SDL_FilterEvents;
|
||||
SDL_EventState;
|
||||
SDL_RegisterEvents;
|
||||
SDL_GetTicks;
|
||||
SDL_GetTicks64;
|
||||
SDL_GetPerformanceCounter;
|
||||
SDL_GetPerformanceFrequency;
|
||||
SDL_Delay;
|
||||
SDL_AddTimer;
|
||||
SDL_RemoveTimer;
|
||||
SDL_Vulkan_LoadLibrary;
|
||||
SDL_Vulkan_GetVkGetInstanceProcAddr;
|
||||
SDL_Vulkan_UnloadLibrary;
|
||||
SDL_Vulkan_GetInstanceExtensions;
|
||||
SDL_Vulkan_CreateSurface;
|
||||
SDL_Vulkan_GetDrawableSize;
|
||||
SDL_GetPreferredLocales;
|
||||
SDL_GetPixelFormatName;
|
||||
SDL_PixelFormatEnumToMasks;
|
||||
SDL_MasksToPixelFormatEnum;
|
||||
SDL_AllocFormat;
|
||||
SDL_FreeFormat;
|
||||
SDL_AllocPalette;
|
||||
SDL_SetPixelFormatPalette;
|
||||
SDL_SetPaletteColors;
|
||||
SDL_FreePalette;
|
||||
SDL_MapRGB;
|
||||
SDL_MapRGBA;
|
||||
SDL_GetRGB;
|
||||
SDL_GetRGBA;
|
||||
SDL_malloc;
|
||||
SDL_calloc;
|
||||
SDL_realloc;
|
||||
SDL_free;
|
||||
SDL_GetOriginalMemoryFunctions;
|
||||
SDL_GetMemoryFunctions;
|
||||
SDL_SetMemoryFunctions;
|
||||
SDL_GetNumAllocations;
|
||||
SDL_getenv;
|
||||
SDL_setenv;
|
||||
SDL_qsort;
|
||||
SDL_bsearch;
|
||||
SDL_abs;
|
||||
SDL_isalpha;
|
||||
SDL_isalnum;
|
||||
SDL_isblank;
|
||||
SDL_iscntrl;
|
||||
SDL_isdigit;
|
||||
SDL_isxdigit;
|
||||
SDL_ispunct;
|
||||
SDL_isspace;
|
||||
SDL_isupper;
|
||||
SDL_islower;
|
||||
SDL_isprint;
|
||||
SDL_isgraph;
|
||||
SDL_toupper;
|
||||
SDL_tolower;
|
||||
SDL_crc16;
|
||||
SDL_crc32;
|
||||
SDL_memset;
|
||||
SDL_memset4;
|
||||
SDL_memcpy;
|
||||
SDL_memmove;
|
||||
SDL_memcmp;
|
||||
SDL_wcslen;
|
||||
SDL_wcslcpy;
|
||||
SDL_wcslcat;
|
||||
SDL_wcsdup;
|
||||
SDL_wcsstr;
|
||||
SDL_wcscmp;
|
||||
SDL_wcsncmp;
|
||||
SDL_wcscasecmp;
|
||||
SDL_wcsncasecmp;
|
||||
SDL_strlen;
|
||||
SDL_strlcpy;
|
||||
SDL_utf8strlcpy;
|
||||
SDL_strlcat;
|
||||
SDL_strdup;
|
||||
SDL_strrev;
|
||||
SDL_strupr;
|
||||
SDL_strlwr;
|
||||
SDL_strchr;
|
||||
SDL_strrchr;
|
||||
SDL_strstr;
|
||||
SDL_strcasestr;
|
||||
SDL_strtokr;
|
||||
SDL_utf8strlen;
|
||||
SDL_utf8strnlen;
|
||||
SDL_itoa;
|
||||
SDL_uitoa;
|
||||
SDL_ltoa;
|
||||
SDL_ultoa;
|
||||
SDL_lltoa;
|
||||
SDL_ulltoa;
|
||||
SDL_atoi;
|
||||
SDL_atof;
|
||||
SDL_strtol;
|
||||
SDL_strtoul;
|
||||
SDL_strtoll;
|
||||
SDL_strtoull;
|
||||
SDL_strtod;
|
||||
SDL_strcmp;
|
||||
SDL_strncmp;
|
||||
SDL_strcasecmp;
|
||||
SDL_strncasecmp;
|
||||
SDL_sscanf;
|
||||
SDL_vsscanf;
|
||||
SDL_snprintf;
|
||||
SDL_vsnprintf;
|
||||
SDL_asprintf;
|
||||
SDL_vasprintf;
|
||||
SDL_acos;
|
||||
SDL_acosf;
|
||||
SDL_asin;
|
||||
SDL_asinf;
|
||||
SDL_atan;
|
||||
SDL_atanf;
|
||||
SDL_atan2;
|
||||
SDL_atan2f;
|
||||
SDL_ceil;
|
||||
SDL_ceilf;
|
||||
SDL_copysign;
|
||||
SDL_copysignf;
|
||||
SDL_cos;
|
||||
SDL_cosf;
|
||||
SDL_exp;
|
||||
SDL_expf;
|
||||
SDL_fabs;
|
||||
SDL_fabsf;
|
||||
SDL_floor;
|
||||
SDL_floorf;
|
||||
SDL_trunc;
|
||||
SDL_truncf;
|
||||
SDL_fmod;
|
||||
SDL_fmodf;
|
||||
SDL_log;
|
||||
SDL_logf;
|
||||
SDL_log10;
|
||||
SDL_log10f;
|
||||
SDL_pow;
|
||||
SDL_powf;
|
||||
SDL_round;
|
||||
SDL_roundf;
|
||||
SDL_lround;
|
||||
SDL_lroundf;
|
||||
SDL_scalbn;
|
||||
SDL_scalbnf;
|
||||
SDL_sin;
|
||||
SDL_sinf;
|
||||
SDL_sqrt;
|
||||
SDL_sqrtf;
|
||||
SDL_tan;
|
||||
SDL_tanf;
|
||||
SDL_iconv_open;
|
||||
SDL_iconv_close;
|
||||
SDL_iconv;
|
||||
SDL_iconv_string;
|
||||
SDL_GetMouseFocus;
|
||||
SDL_GetMouseState;
|
||||
SDL_GetGlobalMouseState;
|
||||
SDL_GetRelativeMouseState;
|
||||
SDL_WarpMouseInWindow;
|
||||
SDL_WarpMouseGlobal;
|
||||
SDL_SetRelativeMouseMode;
|
||||
SDL_CaptureMouse;
|
||||
SDL_GetRelativeMouseMode;
|
||||
SDL_CreateCursor;
|
||||
SDL_CreateColorCursor;
|
||||
SDL_CreateSystemCursor;
|
||||
SDL_SetCursor;
|
||||
SDL_GetCursor;
|
||||
SDL_GetDefaultCursor;
|
||||
SDL_FreeCursor;
|
||||
SDL_ShowCursor;
|
||||
SDL_SetClipboardText;
|
||||
SDL_GetClipboardText;
|
||||
SDL_HasClipboardText;
|
||||
SDL_SetPrimarySelectionText;
|
||||
SDL_GetPrimarySelectionText;
|
||||
SDL_HasPrimarySelectionText;
|
||||
SDL_CreateThread;
|
||||
SDL_CreateThreadWithStackSize;
|
||||
SDL_CreateThread;
|
||||
SDL_CreateThreadWithStackSize;
|
||||
SDL_GetThreadName;
|
||||
SDL_ThreadID;
|
||||
SDL_GetThreadID;
|
||||
SDL_SetThreadPriority;
|
||||
SDL_WaitThread;
|
||||
SDL_DetachThread;
|
||||
SDL_TLSCreate;
|
||||
SDL_TLSGet;
|
||||
SDL_TLSSet;
|
||||
SDL_TLSCleanup;
|
||||
SDL_CreateSurface;
|
||||
SDL_CreateSurfaceFrom;
|
||||
SDL_FreeSurface;
|
||||
SDL_SetSurfacePalette;
|
||||
SDL_LockSurface;
|
||||
SDL_UnlockSurface;
|
||||
SDL_LoadBMP_RW;
|
||||
SDL_SaveBMP_RW;
|
||||
SDL_SetSurfaceRLE;
|
||||
SDL_HasSurfaceRLE;
|
||||
SDL_SetColorKey;
|
||||
SDL_HasColorKey;
|
||||
SDL_GetColorKey;
|
||||
SDL_SetSurfaceColorMod;
|
||||
SDL_GetSurfaceColorMod;
|
||||
SDL_SetSurfaceAlphaMod;
|
||||
SDL_GetSurfaceAlphaMod;
|
||||
SDL_SetSurfaceBlendMode;
|
||||
SDL_GetSurfaceBlendMode;
|
||||
SDL_SetClipRect;
|
||||
SDL_GetClipRect;
|
||||
SDL_DuplicateSurface;
|
||||
SDL_ConvertSurface;
|
||||
SDL_ConvertSurfaceFormat;
|
||||
SDL_ConvertPixels;
|
||||
SDL_PremultiplyAlpha;
|
||||
SDL_FillRect;
|
||||
SDL_FillRects;
|
||||
SDL_UpperBlit;
|
||||
SDL_LowerBlit;
|
||||
SDL_SoftStretch;
|
||||
SDL_SoftStretchLinear;
|
||||
SDL_UpperBlitScaled;
|
||||
SDL_LowerBlitScaled;
|
||||
SDL_SetYUVConversionMode;
|
||||
SDL_GetYUVConversionMode;
|
||||
SDL_GetYUVConversionModeForResolution;
|
||||
SDL_HasIntersection;
|
||||
SDL_IntersectRect;
|
||||
SDL_UnionRect;
|
||||
SDL_EnclosePoints;
|
||||
SDL_IntersectRectAndLine;
|
||||
SDL_HasIntersectionF;
|
||||
SDL_IntersectFRect;
|
||||
SDL_UnionFRect;
|
||||
SDL_EncloseFPoints;
|
||||
SDL_IntersectFRectAndLine;
|
||||
SDL_CreateShapedWindow;
|
||||
SDL_IsShapedWindow;
|
||||
SDL_SetWindowShape;
|
||||
SDL_GetShapedWindowMode;
|
||||
SDL_hid_init;
|
||||
SDL_hid_exit;
|
||||
SDL_hid_device_change_count;
|
||||
SDL_hid_enumerate;
|
||||
SDL_hid_free_enumeration;
|
||||
SDL_hid_open;
|
||||
SDL_hid_open_path;
|
||||
SDL_hid_write;
|
||||
SDL_hid_read_timeout;
|
||||
SDL_hid_read;
|
||||
SDL_hid_set_nonblocking;
|
||||
SDL_hid_send_feature_report;
|
||||
SDL_hid_get_feature_report;
|
||||
SDL_hid_close;
|
||||
SDL_hid_get_manufacturer_string;
|
||||
SDL_hid_get_product_string;
|
||||
SDL_hid_get_serial_number_string;
|
||||
SDL_hid_get_indexed_string;
|
||||
SDL_hid_ble_scan;
|
||||
SDL_GetWindowWMInfo;
|
||||
SDL_GetNumRenderDrivers;
|
||||
SDL_GetRenderDriverInfo;
|
||||
SDL_CreateWindowAndRenderer;
|
||||
SDL_CreateRenderer;
|
||||
SDL_CreateSoftwareRenderer;
|
||||
SDL_GetRenderer;
|
||||
SDL_RenderGetWindow;
|
||||
SDL_GetRendererInfo;
|
||||
SDL_GetRendererOutputSize;
|
||||
SDL_CreateTexture;
|
||||
SDL_CreateTextureFromSurface;
|
||||
SDL_QueryTexture;
|
||||
SDL_SetTextureColorMod;
|
||||
SDL_GetTextureColorMod;
|
||||
SDL_SetTextureAlphaMod;
|
||||
SDL_GetTextureAlphaMod;
|
||||
SDL_SetTextureBlendMode;
|
||||
SDL_GetTextureBlendMode;
|
||||
SDL_SetTextureScaleMode;
|
||||
SDL_GetTextureScaleMode;
|
||||
SDL_SetTextureUserData;
|
||||
SDL_GetTextureUserData;
|
||||
SDL_UpdateTexture;
|
||||
SDL_UpdateYUVTexture;
|
||||
SDL_UpdateNVTexture;
|
||||
SDL_LockTexture;
|
||||
SDL_LockTextureToSurface;
|
||||
SDL_UnlockTexture;
|
||||
SDL_RenderTargetSupported;
|
||||
SDL_SetRenderTarget;
|
||||
SDL_GetRenderTarget;
|
||||
SDL_RenderSetLogicalSize;
|
||||
SDL_RenderGetLogicalSize;
|
||||
SDL_RenderSetIntegerScale;
|
||||
SDL_RenderGetIntegerScale;
|
||||
SDL_RenderSetViewport;
|
||||
SDL_RenderGetViewport;
|
||||
SDL_RenderSetClipRect;
|
||||
SDL_RenderGetClipRect;
|
||||
SDL_RenderIsClipEnabled;
|
||||
SDL_RenderSetScale;
|
||||
SDL_RenderGetScale;
|
||||
SDL_RenderWindowToLogical;
|
||||
SDL_RenderLogicalToWindow;
|
||||
SDL_SetRenderDrawColor;
|
||||
SDL_GetRenderDrawColor;
|
||||
SDL_SetRenderDrawBlendMode;
|
||||
SDL_GetRenderDrawBlendMode;
|
||||
SDL_RenderClear;
|
||||
SDL_RenderDrawPoint;
|
||||
SDL_RenderDrawPoints;
|
||||
SDL_RenderDrawLine;
|
||||
SDL_RenderDrawLines;
|
||||
SDL_RenderDrawRect;
|
||||
SDL_RenderDrawRects;
|
||||
SDL_RenderFillRect;
|
||||
SDL_RenderFillRects;
|
||||
SDL_RenderCopy;
|
||||
SDL_RenderCopyEx;
|
||||
SDL_RenderDrawPointF;
|
||||
SDL_RenderDrawPointsF;
|
||||
SDL_RenderDrawLineF;
|
||||
SDL_RenderDrawLinesF;
|
||||
SDL_RenderDrawRectF;
|
||||
SDL_RenderDrawRectsF;
|
||||
SDL_RenderFillRectF;
|
||||
SDL_RenderFillRectsF;
|
||||
SDL_RenderCopyF;
|
||||
SDL_RenderCopyExF;
|
||||
SDL_RenderGeometry;
|
||||
SDL_RenderGeometryRaw;
|
||||
SDL_RenderReadPixels;
|
||||
SDL_RenderPresent;
|
||||
SDL_DestroyTexture;
|
||||
SDL_DestroyRenderer;
|
||||
SDL_RenderFlush;
|
||||
SDL_GL_BindTexture;
|
||||
SDL_GL_UnbindTexture;
|
||||
SDL_RenderGetMetalLayer;
|
||||
SDL_RenderGetMetalCommandEncoder;
|
||||
SDL_RenderSetVSync;
|
||||
SDL_Init;
|
||||
SDL_InitSubSystem;
|
||||
SDL_QuitSubSystem;
|
||||
SDL_WasInit;
|
||||
SDL_Quit;
|
||||
SDL_ShowMessageBox;
|
||||
SDL_ShowSimpleMessageBox;
|
||||
SDL_SetMainReady;
|
||||
SDL_RegisterApp;
|
||||
SDL_UnregisterApp;
|
||||
SDL_WinRTRunApp;
|
||||
SDL_UIKitRunApp;
|
||||
SDL_GDKRunApp;
|
||||
SDL_GDKSuspendComplete;
|
||||
SDL_GetBasePath;
|
||||
SDL_GetPrefPath;
|
||||
SDL_GetNumVideoDrivers;
|
||||
SDL_GetVideoDriver;
|
||||
SDL_VideoInit;
|
||||
SDL_VideoQuit;
|
||||
SDL_GetCurrentVideoDriver;
|
||||
SDL_GetNumVideoDisplays;
|
||||
SDL_GetDisplayName;
|
||||
SDL_GetDisplayBounds;
|
||||
SDL_GetDisplayUsableBounds;
|
||||
SDL_GetDisplayDPI;
|
||||
SDL_GetDisplayOrientation;
|
||||
SDL_GetNumDisplayModes;
|
||||
SDL_GetDisplayMode;
|
||||
SDL_GetDesktopDisplayMode;
|
||||
SDL_GetCurrentDisplayMode;
|
||||
SDL_GetClosestDisplayMode;
|
||||
SDL_GetPointDisplayIndex;
|
||||
SDL_GetRectDisplayIndex;
|
||||
SDL_GetWindowDisplayIndex;
|
||||
SDL_SetWindowDisplayMode;
|
||||
SDL_GetWindowDisplayMode;
|
||||
SDL_GetWindowICCProfile;
|
||||
SDL_GetWindowPixelFormat;
|
||||
SDL_CreateWindow;
|
||||
SDL_CreateWindowFrom;
|
||||
SDL_GetWindowID;
|
||||
SDL_GetWindowFromID;
|
||||
SDL_GetWindowFlags;
|
||||
SDL_SetWindowTitle;
|
||||
SDL_GetWindowTitle;
|
||||
SDL_SetWindowIcon;
|
||||
SDL_SetWindowData;
|
||||
SDL_GetWindowData;
|
||||
SDL_SetWindowPosition;
|
||||
SDL_GetWindowPosition;
|
||||
SDL_SetWindowSize;
|
||||
SDL_GetWindowSize;
|
||||
SDL_GetWindowBordersSize;
|
||||
SDL_GetWindowSizeInPixels;
|
||||
SDL_SetWindowMinimumSize;
|
||||
SDL_GetWindowMinimumSize;
|
||||
SDL_SetWindowMaximumSize;
|
||||
SDL_GetWindowMaximumSize;
|
||||
SDL_SetWindowBordered;
|
||||
SDL_SetWindowResizable;
|
||||
SDL_SetWindowAlwaysOnTop;
|
||||
SDL_ShowWindow;
|
||||
SDL_HideWindow;
|
||||
SDL_RaiseWindow;
|
||||
SDL_MaximizeWindow;
|
||||
SDL_MinimizeWindow;
|
||||
SDL_RestoreWindow;
|
||||
SDL_SetWindowFullscreen;
|
||||
SDL_GetWindowSurface;
|
||||
SDL_UpdateWindowSurface;
|
||||
SDL_UpdateWindowSurfaceRects;
|
||||
SDL_SetWindowGrab;
|
||||
SDL_SetWindowKeyboardGrab;
|
||||
SDL_SetWindowMouseGrab;
|
||||
SDL_GetWindowGrab;
|
||||
SDL_GetWindowKeyboardGrab;
|
||||
SDL_GetWindowMouseGrab;
|
||||
SDL_GetGrabbedWindow;
|
||||
SDL_SetWindowMouseRect;
|
||||
SDL_GetWindowMouseRect;
|
||||
SDL_SetWindowOpacity;
|
||||
SDL_GetWindowOpacity;
|
||||
SDL_SetWindowModalFor;
|
||||
SDL_SetWindowInputFocus;
|
||||
SDL_SetWindowHitTest;
|
||||
SDL_FlashWindow;
|
||||
SDL_DestroyWindow;
|
||||
SDL_IsScreenSaverEnabled;
|
||||
SDL_EnableScreenSaver;
|
||||
SDL_DisableScreenSaver;
|
||||
SDL_GL_LoadLibrary;
|
||||
SDL_GL_GetProcAddress;
|
||||
SDL_EGL_GetProcAddress;
|
||||
SDL_GL_UnloadLibrary;
|
||||
SDL_GL_ExtensionSupported;
|
||||
SDL_GL_ResetAttributes;
|
||||
SDL_GL_SetAttribute;
|
||||
SDL_GL_GetAttribute;
|
||||
SDL_GL_CreateContext;
|
||||
SDL_GL_MakeCurrent;
|
||||
SDL_GL_GetCurrentWindow;
|
||||
SDL_GL_GetCurrentContext;
|
||||
SDL_EGL_GetCurrentEGLDisplay;
|
||||
SDL_EGL_GetCurrentEGLConfig;
|
||||
SDL_EGL_GetWindowEGLSurface;
|
||||
SDL_EGL_SetEGLAttributeCallbacks;
|
||||
SDL_GL_GetDrawableSize;
|
||||
SDL_GL_SetSwapInterval;
|
||||
SDL_GL_GetSwapInterval;
|
||||
SDL_GL_SwapWindow;
|
||||
SDL_GL_DeleteContext;
|
||||
SDL_GetNumTouchDevices;
|
||||
SDL_GetTouchDevice;
|
||||
SDL_GetTouchName;
|
||||
SDL_GetTouchDeviceType;
|
||||
SDL_GetNumTouchFingers;
|
||||
SDL_GetTouchFinger;
|
||||
SDL_GetCPUCount;
|
||||
SDL_GetCPUCacheLineSize;
|
||||
SDL_HasRDTSC;
|
||||
SDL_HasAltiVec;
|
||||
SDL_HasMMX;
|
||||
SDL_Has3DNow;
|
||||
SDL_HasSSE;
|
||||
SDL_HasSSE2;
|
||||
SDL_HasSSE3;
|
||||
SDL_HasSSE41;
|
||||
SDL_HasSSE42;
|
||||
SDL_HasAVX;
|
||||
SDL_HasAVX2;
|
||||
SDL_HasAVX512F;
|
||||
SDL_HasARMSIMD;
|
||||
SDL_HasNEON;
|
||||
SDL_HasLSX;
|
||||
SDL_HasLASX;
|
||||
SDL_GetSystemRAM;
|
||||
SDL_SIMDGetAlignment;
|
||||
SDL_SIMDAlloc;
|
||||
SDL_SIMDRealloc;
|
||||
SDL_SIMDFree;
|
||||
SDL_SetError;
|
||||
SDL_GetError;
|
||||
SDL_GetErrorMsg;
|
||||
SDL_ClearError;
|
||||
SDL_Error;
|
||||
SDL_LockSensors;
|
||||
SDL_UnlockSensors;
|
||||
SDL_NumSensors;
|
||||
SDL_SensorGetDeviceName;
|
||||
SDL_SensorGetDeviceType;
|
||||
SDL_SensorGetDeviceNonPortableType;
|
||||
SDL_SensorGetDeviceInstanceID;
|
||||
SDL_SensorOpen;
|
||||
SDL_SensorFromInstanceID;
|
||||
SDL_SensorGetName;
|
||||
SDL_SensorGetType;
|
||||
SDL_SensorGetNonPortableType;
|
||||
SDL_SensorGetInstanceID;
|
||||
SDL_SensorGetData;
|
||||
SDL_SensorGetDataWithTimestamp;
|
||||
SDL_SensorClose;
|
||||
SDL_SensorUpdate;
|
||||
SDL_SetHintWithPriority;
|
||||
SDL_SetHint;
|
||||
SDL_ResetHint;
|
||||
SDL_ResetHints;
|
||||
SDL_GetHint;
|
||||
SDL_GetHintBoolean;
|
||||
SDL_AddHintCallback;
|
||||
SDL_DelHintCallback;
|
||||
SDL_ClearHints;
|
||||
SDL_GetPlatform;
|
||||
SDL_CreateMutex;
|
||||
SDL_LockMutex;
|
||||
SDL_TryLockMutex;
|
||||
SDL_UnlockMutex;
|
||||
SDL_DestroyMutex;
|
||||
SDL_CreateSemaphore;
|
||||
SDL_DestroySemaphore;
|
||||
SDL_SemWait;
|
||||
SDL_SemTryWait;
|
||||
SDL_SemWaitTimeout;
|
||||
SDL_SemPost;
|
||||
SDL_SemValue;
|
||||
SDL_CreateCond;
|
||||
SDL_DestroyCond;
|
||||
SDL_CondSignal;
|
||||
SDL_CondBroadcast;
|
||||
SDL_CondWait;
|
||||
SDL_CondWaitTimeout;
|
||||
SDL_ComposeCustomBlendMode;
|
||||
SDL_LockJoysticks;
|
||||
SDL_UnlockJoysticks;
|
||||
SDL_NumJoysticks;
|
||||
SDL_JoystickNameForIndex;
|
||||
SDL_JoystickPathForIndex;
|
||||
SDL_JoystickGetDevicePlayerIndex;
|
||||
SDL_JoystickGetDeviceGUID;
|
||||
SDL_JoystickGetDeviceVendor;
|
||||
SDL_JoystickGetDeviceProduct;
|
||||
SDL_JoystickGetDeviceProductVersion;
|
||||
SDL_JoystickGetDeviceType;
|
||||
SDL_JoystickGetDeviceInstanceID;
|
||||
SDL_JoystickOpen;
|
||||
SDL_JoystickFromInstanceID;
|
||||
SDL_JoystickFromPlayerIndex;
|
||||
SDL_JoystickAttachVirtual;
|
||||
SDL_JoystickAttachVirtualEx;
|
||||
SDL_JoystickDetachVirtual;
|
||||
SDL_JoystickIsVirtual;
|
||||
SDL_JoystickSetVirtualAxis;
|
||||
SDL_JoystickSetVirtualButton;
|
||||
SDL_JoystickSetVirtualHat;
|
||||
SDL_JoystickName;
|
||||
SDL_JoystickPath;
|
||||
SDL_JoystickGetPlayerIndex;
|
||||
SDL_JoystickSetPlayerIndex;
|
||||
SDL_JoystickGetGUID;
|
||||
SDL_JoystickGetVendor;
|
||||
SDL_JoystickGetProduct;
|
||||
SDL_JoystickGetProductVersion;
|
||||
SDL_JoystickGetFirmwareVersion;
|
||||
SDL_JoystickGetSerial;
|
||||
SDL_JoystickGetType;
|
||||
SDL_JoystickGetGUIDString;
|
||||
SDL_JoystickGetGUIDFromString;
|
||||
SDL_GetJoystickGUIDInfo;
|
||||
SDL_JoystickGetAttached;
|
||||
SDL_JoystickInstanceID;
|
||||
SDL_JoystickNumAxes;
|
||||
SDL_JoystickNumBalls;
|
||||
SDL_JoystickNumHats;
|
||||
SDL_JoystickNumButtons;
|
||||
SDL_JoystickUpdate;
|
||||
SDL_JoystickEventState;
|
||||
SDL_JoystickGetAxis;
|
||||
SDL_JoystickGetAxisInitialState;
|
||||
SDL_JoystickGetHat;
|
||||
SDL_JoystickGetBall;
|
||||
SDL_JoystickGetButton;
|
||||
SDL_JoystickRumble;
|
||||
SDL_JoystickRumbleTriggers;
|
||||
SDL_JoystickHasLED;
|
||||
SDL_JoystickHasRumble;
|
||||
SDL_JoystickHasRumbleTriggers;
|
||||
SDL_JoystickSetLED;
|
||||
SDL_JoystickSendEffect;
|
||||
SDL_JoystickClose;
|
||||
SDL_JoystickCurrentPowerLevel;
|
||||
SDL_Metal_CreateView;
|
||||
SDL_Metal_DestroyView;
|
||||
SDL_Metal_GetLayer;
|
||||
SDL_Metal_GetDrawableSize;
|
||||
SDL_GameControllerAddMappingsFromRW;
|
||||
SDL_GameControllerAddMapping;
|
||||
SDL_GameControllerNumMappings;
|
||||
SDL_GameControllerMappingForIndex;
|
||||
SDL_GameControllerMappingForGUID;
|
||||
SDL_GameControllerMapping;
|
||||
SDL_IsGameController;
|
||||
SDL_GameControllerNameForIndex;
|
||||
SDL_GameControllerPathForIndex;
|
||||
SDL_GameControllerTypeForIndex;
|
||||
SDL_GameControllerMappingForDeviceIndex;
|
||||
SDL_GameControllerOpen;
|
||||
SDL_GameControllerFromInstanceID;
|
||||
SDL_GameControllerFromPlayerIndex;
|
||||
SDL_GameControllerName;
|
||||
SDL_GameControllerPath;
|
||||
SDL_GameControllerGetType;
|
||||
SDL_GameControllerGetPlayerIndex;
|
||||
SDL_GameControllerSetPlayerIndex;
|
||||
SDL_GameControllerGetVendor;
|
||||
SDL_GameControllerGetProduct;
|
||||
SDL_GameControllerGetProductVersion;
|
||||
SDL_GameControllerGetFirmwareVersion;
|
||||
SDL_GameControllerGetSerial;
|
||||
SDL_GameControllerGetAttached;
|
||||
SDL_GameControllerGetJoystick;
|
||||
SDL_GameControllerEventState;
|
||||
SDL_GameControllerUpdate;
|
||||
SDL_GameControllerGetAxisFromString;
|
||||
SDL_GameControllerGetStringForAxis;
|
||||
SDL_GameControllerGetBindForAxis;
|
||||
SDL_GameControllerHasAxis;
|
||||
SDL_GameControllerGetAxis;
|
||||
SDL_GameControllerGetButtonFromString;
|
||||
SDL_GameControllerGetStringForButton;
|
||||
SDL_GameControllerGetBindForButton;
|
||||
SDL_GameControllerHasButton;
|
||||
SDL_GameControllerGetButton;
|
||||
SDL_GameControllerGetNumTouchpads;
|
||||
SDL_GameControllerGetNumTouchpadFingers;
|
||||
SDL_GameControllerGetTouchpadFinger;
|
||||
SDL_GameControllerHasSensor;
|
||||
SDL_GameControllerSetSensorEnabled;
|
||||
SDL_GameControllerIsSensorEnabled;
|
||||
SDL_GameControllerGetSensorDataRate;
|
||||
SDL_GameControllerGetSensorData;
|
||||
SDL_GameControllerGetSensorDataWithTimestamp;
|
||||
SDL_GameControllerRumble;
|
||||
SDL_GameControllerRumbleTriggers;
|
||||
SDL_GameControllerHasLED;
|
||||
SDL_GameControllerHasRumble;
|
||||
SDL_GameControllerHasRumbleTriggers;
|
||||
SDL_GameControllerSetLED;
|
||||
SDL_GameControllerSendEffect;
|
||||
SDL_GameControllerClose;
|
||||
SDL_GameControllerGetAppleSFSymbolsNameForButton;
|
||||
SDL_GameControllerGetAppleSFSymbolsNameForAxis;
|
||||
SDL_ReportAssertion;
|
||||
SDL_SetAssertionHandler;
|
||||
SDL_GetDefaultAssertionHandler;
|
||||
SDL_GetAssertionHandler;
|
||||
SDL_GetAssertionReport;
|
||||
SDL_ResetAssertionReport;
|
||||
SDL_NumHaptics;
|
||||
SDL_HapticName;
|
||||
SDL_HapticOpen;
|
||||
SDL_HapticOpened;
|
||||
SDL_HapticIndex;
|
||||
SDL_MouseIsHaptic;
|
||||
SDL_HapticOpenFromMouse;
|
||||
SDL_JoystickIsHaptic;
|
||||
SDL_HapticOpenFromJoystick;
|
||||
SDL_HapticClose;
|
||||
SDL_HapticNumEffects;
|
||||
SDL_HapticNumEffectsPlaying;
|
||||
SDL_HapticQuery;
|
||||
SDL_HapticNumAxes;
|
||||
SDL_HapticEffectSupported;
|
||||
SDL_HapticNewEffect;
|
||||
SDL_HapticUpdateEffect;
|
||||
SDL_HapticRunEffect;
|
||||
SDL_HapticStopEffect;
|
||||
SDL_HapticDestroyEffect;
|
||||
SDL_HapticGetEffectStatus;
|
||||
SDL_HapticSetGain;
|
||||
SDL_HapticSetAutocenter;
|
||||
SDL_HapticPause;
|
||||
SDL_HapticUnpause;
|
||||
SDL_HapticStopAll;
|
||||
SDL_HapticRumbleSupported;
|
||||
SDL_HapticRumbleInit;
|
||||
SDL_HapticRumblePlay;
|
||||
SDL_HapticRumbleStop;
|
||||
SDL_GetVersion;
|
||||
SDL_GetRevision;
|
||||
SDL_GetPowerInfo;
|
||||
# extra symbols go here (don't modify this line)
|
||||
local: *;
|
||||
};
|
|
@ -33,6 +33,7 @@ use File::Basename;
|
|||
chdir(dirname(__FILE__) . '/../..');
|
||||
my $sdl_dynapi_procs_h = "src/dynapi/SDL_dynapi_procs.h";
|
||||
my $sdl_dynapi_overrides_h = "src/dynapi/SDL_dynapi_overrides.h";
|
||||
my $sdl_dynapi_sym = "src/dynapi/SDL_dynapi.sym";
|
||||
|
||||
my %existing = ();
|
||||
if (-f $sdl_dynapi_procs_h) {
|
||||
|
@ -48,6 +49,10 @@ if (-f $sdl_dynapi_procs_h) {
|
|||
open(SDL_DYNAPI_PROCS_H, '>>', $sdl_dynapi_procs_h) or die("Can't open $sdl_dynapi_procs_h: $!\n");
|
||||
open(SDL_DYNAPI_OVERRIDES_H, '>>', $sdl_dynapi_overrides_h) or die("Can't open $sdl_dynapi_overrides_h: $!\n");
|
||||
|
||||
open(SDL_DYNAPI_SYM, '<', $sdl_dynapi_sym) or die("Can't open $sdl_dynapi_sym: $!\n");
|
||||
read(SDL_DYNAPI_SYM, my $sdl_dynapi_sym_contents, -s SDL_DYNAPI_SYM);
|
||||
close(SDL_DYNAPI_SYM);
|
||||
|
||||
opendir(HEADERS, 'include/SDL3') or die("Can't open include dir: $!\n");
|
||||
while (my $d = readdir(HEADERS)) {
|
||||
next if not $d =~ /\.h\Z/;
|
||||
|
@ -76,6 +81,8 @@ while (my $d = readdir(HEADERS)) {
|
|||
|
||||
next if $existing{$fn}; # already slotted into the jump table.
|
||||
|
||||
$sdl_dynapi_sym_contents =~ s/# extra symbols go here/$fn;\n # extra symbols go here/;
|
||||
|
||||
my @params = split(',', $7);
|
||||
|
||||
#print("rc == '$rc', fn == '$fn', params == '$params'\n");
|
||||
|
@ -144,4 +151,8 @@ closedir(HEADERS);
|
|||
close(SDL_DYNAPI_PROCS_H);
|
||||
close(SDL_DYNAPI_OVERRIDES_H);
|
||||
|
||||
open(SDL_DYNAPI_SYM, '>', $sdl_dynapi_sym) or die("Can't open $sdl_dynapi_sym: $!\n");
|
||||
print SDL_DYNAPI_SYM $sdl_dynapi_sym_contents;
|
||||
close(SDL_DYNAPI_SYM);
|
||||
|
||||
# vi: set ts=4 sw=4 expandtab:
|
||||
|
|
Loading…
Reference in New Issue