mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-29 20:27:12 +01:00
0e45984fa0
The internal function SDL_EGL_LoadLibrary() did not delete and remove a mostly uninitialized data structure if loading the library first failed. A later try to use EGL then skipped initialization and assumed it was previously successful because the data structure now already existed. This led to at least one crash in the internal function SDL_EGL_ChooseConfig() because a NULL pointer was dereferenced to make a call to eglBindAPI().
205 lines
7.7 KiB
Lua
Executable File
205 lines
7.7 KiB
Lua
Executable File
-- Copyright (C) 1997-2015 Sam Lantinga <slouken@libsdl.org>
|
|
--
|
|
-- This software is provided 'as-is', without any express or implied
|
|
-- warranty. In no event will the authors be held liable for any damages
|
|
-- arising from the use of this software.
|
|
--
|
|
-- Permission is granted to anyone to use this software for any purpose,
|
|
-- including commercial applications, and to alter it and redistribute it
|
|
-- freely.
|
|
--
|
|
-- Meta-build system using premake created and maintained by
|
|
-- Benjamin Henning <b.henning@digipen.edu>
|
|
|
|
--[[
|
|
sdl_dependency_checkers.lua
|
|
|
|
This script contains a bunch of functions which determine whether certain
|
|
dependencies exist on the current platform. These functions are able to use
|
|
any and all available utilities for trying to determine both whether the
|
|
dependency is available on this platform, and how to build to the dependency.
|
|
There are a few limitations with these functions, but many of the limitations
|
|
can be mitigated by using the dependency definition functions in the project
|
|
definition files.
|
|
|
|
Each function in this file, in order to be a valid dependency function, must
|
|
return a table with the following entries:
|
|
|
|
'found' = boolean value indicating whether the dependency was found
|
|
'incDirs' = table of include directory strings, or nil if none are needed
|
|
'libDirs' = table of library directory strings, or nil if none are needed
|
|
'libs' = table of libraries to link to, or nil if none are needed
|
|
|
|
All functions must be properly registered with the project definition system
|
|
in order to be properly referenced by projects.
|
|
]]
|
|
|
|
-- dependency functions must return the following:
|
|
-- table with an element found, incDirs, libDirs, and libs
|
|
function openGLDep()
|
|
print("Checking OpenGL dependencies...")
|
|
if SDL_getos() == "macosx" then
|
|
-- mac should always have support for OpenGL...
|
|
return { found = true, libs = { "OpenGL.framework" } }
|
|
elseif SDL_getos() == "ios" then
|
|
--...unless on iOS
|
|
print("Desktop OpenGL is not supported on iOS targets.")
|
|
return { found = false, libs = { "OpenGL.framework" } }
|
|
elseif SDL_getos() == "cygwin" then
|
|
print("OpenGL is not currently supported on Cygwin.")
|
|
return { found = false, libDirs = { }, libs = { "OpenGL32" } }
|
|
end
|
|
local libpath = nil
|
|
local libname = nil
|
|
if SDL_getos() == "windows" or SDL_getos() == "mingw" then
|
|
libpath = os.findlib("OpenGL32")
|
|
libname = "OpenGL32"
|
|
else -- *nix
|
|
libpath = os.findlib("libGL")
|
|
libname = "GL"
|
|
end
|
|
local foundLib = libpath ~= nil
|
|
-- another way to possibly find the dependency on windows
|
|
--if not foundLib then
|
|
-- foundLib, libpath = find_dependency_dir_windows(nil, "C:/Program Files (x86);C:/Program Files", "Microsoft SDKs", "Lib")
|
|
--end
|
|
if not foundLib then return { found = false } end
|
|
if SDL_getos() == "mingw" then
|
|
libpath = libpath:gsub("\\", "/"):gsub("//", "/")
|
|
end
|
|
return { found = foundLib, libDirs = { }, libs = { libname } }
|
|
end
|
|
|
|
function directXDep()
|
|
print("Checking DirectX dependencies...")
|
|
-- enable this for more correct searching, but it's much slower
|
|
local searchPath = nil --os.getenvpath("ProgramFiles", "ProgramFiles(x86)")
|
|
local foundInc, incpath = find_dependency_dir_windows("DXSDK_DIR", searchPath, "DirectX", "Include")
|
|
local foundLib, libpath = find_dependency_dir_windows("DXSDK_DIR", searchPath, "DirectX", "Lib/x86")
|
|
if not foundInc or not foundLib then return { found = false } end
|
|
-- XXX: hacked mingw check...
|
|
if foundInc and SDL_getos() == "mingw" then
|
|
incpath = incpath:gsub("%$%(DXSDK_DIR%)", os.getenv("DXSDK_DIR")):gsub("\\", "/"):gsub("//", "/")
|
|
libpath = libpath:gsub("%$%(DXSDK_DIR%)", os.getenv("DXSDK_DIR")):gsub("\\", "/"):gsub("//", "/")
|
|
end
|
|
if SDL_getos() == "mingw" then
|
|
print("DirectX is not currently supported on MinGW targets.")
|
|
return { found = false, incDirs = { incpath }, libDirs = { libpath } }
|
|
end
|
|
if SDL_getos() == "cygwin" then
|
|
print("DirectX is not currently supported on Cygwin targets.")
|
|
return { found = false, incDirs = { incpath }, libDirs = { libpath } }
|
|
end
|
|
return { found = true, incDirs = { incpath }, libDirs = { libpath } }
|
|
end
|
|
|
|
function dbusDep()
|
|
print("Checking for D-Bus support...")
|
|
if not check_include_directories("/usr/include/dbus-1.0", "/usr/lib/x86_64-linux-gnu/dbus-1.0/include") then
|
|
print("Warning: D-Bus unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true, incDirs = { "/usr/include/dbus-1.0", "/usr/lib/x86_64-linux-gnu/dbus-1.0/include" } }
|
|
end
|
|
|
|
function alsaDep()
|
|
print("Checking for ALSA support...")
|
|
if not check_include_files("alsa/asoundlib.h")
|
|
or os.findlib("asound") == nil
|
|
or not check_library_exists_lookup("asound", "snd_pcm_open", "alsa/asoundlib.h")
|
|
or not SDL_assertdepfunc("DLOpen") then
|
|
print("Warning: ALSA unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true }
|
|
end
|
|
|
|
function pulseAudioDep()
|
|
print("Checking for PulseAudio support...")
|
|
if os.findlib("libpulse-simple") == nil
|
|
or not SDL_assertdepfunc("DLOpen") then
|
|
print("Warning: PulseAudio unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true }
|
|
end
|
|
|
|
function esdDep()
|
|
print("Checking for ESD support...")
|
|
if os.findlib("esd") == nil
|
|
or not SDL_assertdepfunc("DLOpen") then
|
|
print("Warning: ESD unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true }
|
|
end
|
|
|
|
function nasDep()
|
|
print("Checking for NAS support...")
|
|
if not check_include_file("audio/audiolib.h")
|
|
or not SDL_assertdepfunc("DLOpen") then
|
|
print("Warning: NAS unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true }
|
|
end
|
|
|
|
function ossDep()
|
|
print("Checking for OSS support...")
|
|
if not check_cxx_source_compiles([[
|
|
#include <sys/soundcard.h>
|
|
int main() { int arg = SNDCTL_DSP_SETFRAGMENT; return 0; }]])
|
|
and not check_cxx_source_compiles([[
|
|
#include <soundcard.h>
|
|
int main() { int arg = SNDCTL_DSP_SETFRAGMENT; return 0; }]]) then
|
|
print("Warning: OSS unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true }
|
|
end
|
|
|
|
function dlOpenDep()
|
|
print("Checking for DLOpen support...")
|
|
if not check_library_exists_multiple("dlopen", "dlfcn.h", "dl", "tdl") then
|
|
print("Warning: DLOpen unsupported!")
|
|
return { found = false }
|
|
end
|
|
return { found = true, libs = { "dl" } }
|
|
end
|
|
|
|
function x11Dep()
|
|
print("Checking for X11 support...")
|
|
for _, v in ipairs { "X11", "Xext", "Xcursor", "Xinerama", "Xi", "Xrandr", "Xrender", "Xss", "Xxf86vm" } do
|
|
if os.findlib(v) == nil then
|
|
print("Warning: X11 unsupported!")
|
|
return { found = false }
|
|
end
|
|
end
|
|
if not check_include_files("X11/Xcursor/Xcursor.h", "X11/extensions/Xinerama.h",
|
|
"X11/extensions/XInput2.h", "X11/extensions/Xrandr.h", "X11/extensions/Xrender.h",
|
|
"X11/extensions/scrnsaver.h", "X11/extensions/shape.h", "X11/Xlib.h",
|
|
"X11/extensions/xf86vmode.h") then
|
|
print("Warning: X11 unsupported!")
|
|
return { found = false }
|
|
end
|
|
if not SDL_assertdepfunc("DLOpen") then
|
|
print("Warning: X11 unsupported!")
|
|
return { found = false }
|
|
end
|
|
-- XXX: shared memory check...
|
|
-- there's a LOT more to check to properly configure X11...
|
|
return { found = true, libs = { "X11" } }
|
|
end
|
|
|
|
-- register all of these dependency functions with the definition system
|
|
SDL_registerDependencyChecker("OpenGL", openGLDep)
|
|
SDL_registerDependencyChecker("DirectX", directXDep)
|
|
SDL_registerDependencyChecker("DBus", dbusDep)
|
|
SDL_registerDependencyChecker("ALSA", alsaDep)
|
|
SDL_registerDependencyChecker("PulseAudio", pulseAudioDep)
|
|
SDL_registerDependencyChecker("ESD", esdDep)
|
|
SDL_registerDependencyChecker("NAS", nasDep)
|
|
SDL_registerDependencyChecker("OSS", ossDep)
|
|
SDL_registerDependencyChecker("DLOpen", dlOpenDep)
|
|
SDL_registerDependencyChecker("X11", x11Dep)
|