testsymbols.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. Copyright (C) 1997-2025 Sam Lantinga <[email protected]>
  3. This software is provided 'as-is', without any express or implied
  4. warranty. In no event will the authors be held liable for any damages
  5. arising from the use of this software.
  6. Permission is granted to anyone to use this software for any purpose,
  7. including commercial applications, and to alter it and redistribute it
  8. freely.
  9. */
  10. /* Test for availability of ALL SDL3 symbols */
  11. #define SDL_DISABLE_ANALYZE_MACROS
  12. #include <SDL3/SDL.h>
  13. #include <SDL3/SDL_vulkan.h>
  14. #if !defined(SDL_PLATFORM_ANDROID)
  15. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidActivity(void);
  16. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidCachePath(void);
  17. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidExternalStoragePath(void);
  18. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidExternalStorageState(void);
  19. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidInternalStoragePath(void);
  20. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidJNIEnv(void);
  21. extern SDL_DECLSPEC void SDLCALL SDL_GetAndroidSDKVersion(void);
  22. extern SDL_DECLSPEC void SDLCALL SDL_IsChromebook(void);
  23. extern SDL_DECLSPEC void SDLCALL SDL_IsDeXMode(void);
  24. extern SDL_DECLSPEC void SDLCALL SDL_RequestAndroidPermission(void);
  25. extern SDL_DECLSPEC void SDLCALL SDL_SendAndroidBackButton(void);
  26. extern SDL_DECLSPEC void SDLCALL SDL_SendAndroidMessage(void);
  27. extern SDL_DECLSPEC void SDLCALL SDL_ShowAndroidToast(void);
  28. #endif
  29. #if !defined(SDL_PLATFORM_GDK)
  30. extern SDL_DECLSPEC void SDLCALL SDL_GDKResumeGPU(void);
  31. extern SDL_DECLSPEC void SDLCALL SDL_GDKSuspendGPU(void);
  32. extern SDL_DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void);
  33. extern SDL_DECLSPEC void SDLCALL SDL_GetGDKDefaultUser(void);
  34. extern SDL_DECLSPEC void SDLCALL SDL_GetGDKTaskQueue(void);
  35. #endif
  36. #if !defined(SDL_PLATFORM_IOS)
  37. extern SDL_DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void);
  38. extern SDL_DECLSPEC void SDLCALL SDL_SetiOSAnimationCallback(void);
  39. extern SDL_DECLSPEC void SDLCALL SDL_SetiOSEventPump(void);
  40. #endif
  41. #if !defined(SDL_PLATFORM_LINUX)
  42. extern SDL_DECLSPEC void SDLCALL SDL_SetLinuxThreadPriority(void);
  43. extern SDL_DECLSPEC void SDLCALL SDL_SetLinuxThreadPriorityAndPolicy(void);
  44. #endif
  45. #if !(defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK))
  46. extern SDL_DECLSPEC void SDLCALL SDL_GetDXGIOutputInfo(void);
  47. extern SDL_DECLSPEC void SDLCALL SDL_GetDirect3D9AdapterIndex(void);
  48. #endif
  49. #if !defined(SDL_PLATFORM_WINDOWS)
  50. extern SDL_DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(void);
  51. #endif
  52. extern SDL_DECLSPEC void SDLCALL SDL_RegisterApp(void);
  53. extern SDL_DECLSPEC void SDLCALL SDL_UnregisterApp(void);
  54. extern SDL_DECLSPEC void SDLCALL SDL_EnterAppMainCallbacks(void);
  55. extern SDL_DECLSPEC void SDLCALL SDL_RunApp(void);
  56. extern SDL_DECLSPEC void SDLCALL SDL_SetMainReady(void);
  57. extern SDL_DECLSPEC void SDLCALL JNI_OnLoad(void);
  58. const static struct {
  59. const char *name;
  60. SDL_FunctionPointer address;
  61. } sdl_symbols[] = {
  62. #define SDL_DYNAPI_PROC(rc, fn, params, args, ret) { #fn, (SDL_FunctionPointer)fn },
  63. #include "../src/dynapi/SDL_dynapi_procs.h"
  64. #undef SDL_DYNAPI_PROC
  65. { NULL, NULL }
  66. };
  67. static void print_usage(const char *argv0)
  68. {
  69. SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Usage: %s [number [number] ...]\n", argv0);
  70. }
  71. int main(int argc, char *argv[])
  72. {
  73. static const int count_sdl_symbols = (int)SDL_arraysize(sdl_symbols) - 1;
  74. int i;
  75. int result = 0;
  76. SDL_Log("There are %d SDL3 symbols", count_sdl_symbols);
  77. for (i = 1; i < argc; i++) {
  78. Sint64 symbol_index = -1;
  79. char *endp = NULL;
  80. symbol_index = (Sint64)SDL_strtol(argv[i], &endp, 10);
  81. if (*endp != '\0') {
  82. print_usage(argv[0]);
  83. return 1;
  84. }
  85. if (symbol_index < 0 || symbol_index >= count_sdl_symbols) {
  86. SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Index %" SDL_PRIs64 " is out of range", symbol_index);
  87. result = 1;
  88. continue;
  89. }
  90. SDL_Log("Address of %s is %p", sdl_symbols[symbol_index].name, sdl_symbols[symbol_index].address);
  91. }
  92. return result;
  93. }