|
@@ -0,0 +1,132 @@
|
|
|
+package("libsdl3")
|
|
|
+ set_homepage("https://www.libsdl.org/")
|
|
|
+ set_description("Simple DirectMedia Layer")
|
|
|
+ set_license("zlib")
|
|
|
+
|
|
|
+ if is_plat("mingw") and is_subhost("msys") then
|
|
|
+ add_extsources("pacman::SDL3")
|
|
|
+ elseif is_plat("linux") then
|
|
|
+ add_extsources("pacman::sdl3", "apt::libsdl3-dev")
|
|
|
+ elseif is_plat("macosx") then
|
|
|
+ add_extsources("brew::sdl3")
|
|
|
+ end
|
|
|
+
|
|
|
+ add_urls("https://www.libsdl.org/release/SDL3-$(version).zip",
|
|
|
+ "https://github.com/libsdl-org/SDL/releases/download/release-$(version)/SDL3-$(version).zip", { alias = "archive" })
|
|
|
+ add_urls("https://github.com/libsdl-org/SDL.git", { alias = "github" })
|
|
|
+
|
|
|
+ add_versions("archive:3.2.2", "58d8adc7068d38923f918e0bdaa9c4948f93d9ba204fe4de8cc6eaaf77ad6f82")
|
|
|
+ add_versions("archive:3.2.0", "abe7114fa42edcc8097856787fa5d37f256d97e365b71368b60764fe7c10e4f8")
|
|
|
+
|
|
|
+ add_versions("github:3.2.2", "release-3.2.2")
|
|
|
+ add_versions("github:3.2.0", "release-3.2.0")
|
|
|
+
|
|
|
+ add_deps("cmake", "egl-headers", "opengl-headers")
|
|
|
+
|
|
|
+ if is_plat("linux", "bsd", "cross") then
|
|
|
+ add_configs("x11", {description = "Enables X11 support", default = true, type = "boolean"})
|
|
|
+ add_configs("wayland", {description = "Enables Wayland support", default = nil, type = "boolean"})
|
|
|
+ end
|
|
|
+
|
|
|
+ if is_plat("wasm") then
|
|
|
+ add_cxflags("-sUSE_SDL=0")
|
|
|
+ end
|
|
|
+
|
|
|
+ on_load(function (package)
|
|
|
+ if package:is_plat("linux", "android", "cross") then
|
|
|
+ -- Enable Wayland by default except when cross-compiling (wayland package doesn't support cross-compilation yet)
|
|
|
+ if package:config("wayland") == nil and not package:is_cross() then
|
|
|
+ package:config_set("wayland", true)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if package:is_plat("windows") then
|
|
|
+ package:add("deps", "ninja")
|
|
|
+ package:set("policy", "package.cmake_generator.ninja", true)
|
|
|
+ end
|
|
|
+ if package:is_plat("linux", "bsd", "cross") and package:config("x11") then
|
|
|
+ package:add("deps", "libxext", {private = true})
|
|
|
+ end
|
|
|
+ if package:is_plat("linux", "bsd", "cross") and package:config("wayland") then
|
|
|
+ package:add("deps", "wayland", {private = true})
|
|
|
+ end
|
|
|
+ local libsuffix = package:is_debug() and "d" or ""
|
|
|
+ if not package:config("shared") then
|
|
|
+ if package:is_plat("windows", "mingw") then
|
|
|
+ package:add("syslinks", "user32", "gdi32", "winmm", "imm32", "ole32", "oleaut32", "version", "uuid", "advapi32", "setupapi", "shell32")
|
|
|
+ elseif package:is_plat("linux", "bsd") then
|
|
|
+ package:add("syslinks", "pthread", "dl")
|
|
|
+ if package:is_plat("bsd") then
|
|
|
+ package:add("syslinks", "usbhid")
|
|
|
+ end
|
|
|
+ elseif package:is_plat("android") then
|
|
|
+ package:add("syslinks", "dl", "log", "android", "GLESv1_CM", "GLESv2", "OpenSLES")
|
|
|
+ elseif package:is_plat("iphoneos", "macosx") then
|
|
|
+ package:add("frameworks", "AudioToolbox", "AVFoundation", "CoreAudio", "CoreHaptics", "CoreMedia", "CoreVideo", "Foundation", "GameController", "Metal", "QuartzCore", "CoreFoundation", "UniformTypeIdentifiers")
|
|
|
+ package:add("syslinks", "iconv")
|
|
|
+ if package:is_plat("macosx") then
|
|
|
+ package:add("frameworks", "Cocoa", "Carbon", "ForceFeedback", "IOKit")
|
|
|
+ else
|
|
|
+ package:add("frameworks", "CoreBluetooth", "CoreGraphics", "CoreMotion", "OpenGLES", "UIKit")
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end)
|
|
|
+
|
|
|
+ on_install(function (package)
|
|
|
+ local configs = {}
|
|
|
+ table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
|
|
|
+ table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
|
|
|
+ table.insert(configs, "-DSDL_TEST_LIBRARY=OFF")
|
|
|
+ table.insert(configs, "-DSDL_EXAMPLES=OFF")
|
|
|
+
|
|
|
+ local cflags
|
|
|
+ local packagedeps
|
|
|
+ if not package:is_plat("wasm") then
|
|
|
+ packagedeps = {"egl-headers", "opengl-headers"}
|
|
|
+ end
|
|
|
+
|
|
|
+ if package:is_plat("linux", "bsd", "cross") then
|
|
|
+ table.insert(packagedeps, "libxext")
|
|
|
+ table.insert(packagedeps, "libx11")
|
|
|
+ table.insert(packagedeps, "xorgproto")
|
|
|
+ table.insert(packagedeps, "wayland")
|
|
|
+ elseif package:is_plat("wasm") then
|
|
|
+ -- emscripten enables USE_SDL by default which will conflict with libsdl headers
|
|
|
+ cflags = {"-sUSE_SDL=0"}
|
|
|
+ end
|
|
|
+
|
|
|
+ local includedirs = {}
|
|
|
+ for _, depname in ipairs(packagedeps) do
|
|
|
+ local dep = package:dep(depname)
|
|
|
+ if dep then
|
|
|
+ local depfetch = dep:fetch()
|
|
|
+ if depfetch then
|
|
|
+ for _, includedir in ipairs(depfetch.includedirs or depfetch.sysincludedirs) do
|
|
|
+ table.insert(includedirs, includedir)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ if #includedirs > 0 then
|
|
|
+ includedirs = table.unique(includedirs)
|
|
|
+ table.insert(configs, "-DCMAKE_INCLUDE_PATH=" .. table.concat(includedirs, ";"))
|
|
|
+ cflags = cflags or {}
|
|
|
+ for _, includedir in ipairs(includedirs) do
|
|
|
+ table.insert(cflags, "-I" .. includedir)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ import("package.tools.cmake").install(package, configs, {cflags = cflags})
|
|
|
+ end)
|
|
|
+
|
|
|
+ on_test(function (package)
|
|
|
+ assert(package:check_cxxsnippets({test = [[
|
|
|
+ #include <SDL3/SDL.h>
|
|
|
+ int main(int argc, char** argv) {
|
|
|
+ SDL_Init(0);
|
|
|
+ SDL_Quit();
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ ]]}));
|
|
|
+ end)
|