diff --git a/.github/workflows/wasm_ubuntu.yml b/.github/workflows/wasm_ubuntu.yml index f9c495214..006b24da3 100644 --- a/.github/workflows/wasm_ubuntu.yml +++ b/.github/workflows/wasm_ubuntu.yml @@ -28,7 +28,7 @@ jobs: uses: mymindstorm/setup-emsdk@v11 with: # Make sure to set a version number! - version: 1.38.40 + version: 3.1.28 # This is the name of the cache folder. # The cache folder will be placed in the build directory, # so make sure it doesn't conflict with anything! diff --git a/packages/b/bzip2/port/xmake.lua b/packages/b/bzip2/port/xmake.lua index 864bd663f..918275d52 100644 --- a/packages/b/bzip2/port/xmake.lua +++ b/packages/b/bzip2/port/xmake.lua @@ -19,6 +19,9 @@ target("bz2") set_filename("libbz2.dll") add_files("libbz2.def") end + if is_plat("wasm") then + add_defines("BZ_STRICT_ANSI") + end if has_config("enable_tools") then diff --git a/packages/b/bzip2/xmake.lua b/packages/b/bzip2/xmake.lua index fc898bd3e..185cd9105 100644 --- a/packages/b/bzip2/xmake.lua +++ b/packages/b/bzip2/xmake.lua @@ -14,10 +14,10 @@ package("bzip2") add_extsources("brew::bzip2") end - on_install("linux", "macosx", "windows", "android", "iphoneos", "cross", "bsd", "mingw", function (package) + on_install(function (package) local configs = {} - if not package:is_plat("cross", "iphoneos", "android") then - configs.enable_tools = true + configs.enable_tools = true + if not package:is_plat("iphoneos", "android") then package:addenv("PATH", "bin") end @@ -26,7 +26,7 @@ package("bzip2") end) on_test(function (package) - if not package:is_plat("cross", "iphoneos", "android") then + if not package:is_cross() then os.vrun("bunzip2 --help") os.vrun("bzcat --help") os.vrun("bzip2 --help") diff --git a/packages/l/libpng/xmake.lua b/packages/l/libpng/xmake.lua index 569551bf9..953643dd4 100644 --- a/packages/l/libpng/xmake.lua +++ b/packages/l/libpng/xmake.lua @@ -25,7 +25,7 @@ package("libpng") add_extsources("brew::libpng") end - on_install("windows", "mingw", "android", "iphoneos", "cross", "bsd", function (package) + on_install("windows", "mingw", "android", "iphoneos", "cross", "bsd", "wasm", function (package) io.writefile("xmake.lua", [[ add_rules("mode.debug", "mode.release") add_requires("zlib") diff --git a/packages/l/libsdl/xmake.lua b/packages/l/libsdl/xmake.lua index 86cf13684..f1ebe7284 100644 --- a/packages/l/libsdl/xmake.lua +++ b/packages/l/libsdl/xmake.lua @@ -1,5 +1,4 @@ package("libsdl") - set_homepage("https://www.libsdl.org/") set_description("Simple DirectMedia Layer") @@ -13,33 +12,33 @@ package("libsdl") set_license("zlib") - if is_plat("windows", "mingw") then - set_urls("https://www.libsdl.org/release/SDL2-devel-$(version)-VC.zip", - "https://github.com/libsdl-org/SDL/releases/download/release-$(version)/SDL2-devel-$(version)-VC.zip") - add_versions("2.0.8", "68505e1f7c16d8538e116405411205355a029dcf2df738dbbc768b2fe95d20fd") - add_versions("2.0.12", "00c55a597cebdb9a4eb2723f2ad2387a4d7fd605e222c69b46099b15d5d8b32d") - add_versions("2.0.14", "232071cf7d40546cde9daeddd0ec30e8a13254c3431be1f60e1cdab35a968824") - add_versions("2.0.16", "f83651227229e059a570aac26be24f5070352c0d23aaf3d2cfbd3eb2c9599334") - add_versions("2.0.18", "d4a56e2ee7c0eae2ef0d511201d3bd38c5ab255662e4b571d4d630762473bf42") - add_versions("2.0.20", "5b1512ca6c9d2427bd2147da01e5e954241f8231df12f54a7074dccde416df18") - add_versions("2.0.22", "32adc96d8b25e5671189f1f38a4fc7deb105fbb1b3ed78ffcb23f5b8f36b3922") - add_versions("2.24.0", "97c6e2d17c0baebf4c84ede27ec42e211358f3694b9f558ead3a9c542c4a004e") - add_versions("2.24.2", "fae7f8f1661fc1fb3ece7b58eca3b2aaeb2ed000a0b7766f859ae12511efd11f") - add_versions("2.26.0", "3dd66b8ebd32fc2110fbffccc82ffb6b9838de382aff641a38a66a64d480f5f9") - else - set_urls("https://www.libsdl.org/release/SDL2-$(version).zip", - "https://github.com/libsdl-org/SDL/releases/download/release-$(version)/SDL2-$(version).zip") - add_versions("2.0.8", "e6a7c71154c3001e318ba7ed4b98582de72ff970aca05abc9f45f7cbdc9088cb") - add_versions("2.0.12", "476e84d6fcbc499cd1f4a2d3fd05a924abc165b5d0e0d53522c9604fe5a021aa") - add_versions("2.0.14", "2c1e870d74e13dfdae870600bfcb6862a5eab4ea5b915144aff8d75a0f9bf046") - add_versions("2.0.16", "010148866e2226e5469f2879425d28ff7c572c736cb3fb65a0604c3cde6bfab9") - add_versions("2.0.18", "2d96cc82020341f7f5957c42001ad526e15fbb7056be8a74dab302483e97aa24") - add_versions("2.0.20", "cc8b16a326eb082c1f48ca30fdf471acfd2334b69bd7527e65ac58369013a1ba") - add_versions("2.0.22", "9a81ab724e6dcef96c61a4a2ebe7758e5b8bb191794650d276a20d5148fbd50c") - add_versions("2.24.0", "4b065503d45652d5f65d807fe98c757c73af2968727945b596861995bc3b69c2") - add_versions("2.24.2", "7fae98ac4e7b39eb2511fc27c2e84b220ac69b5296ff41f833b967c891f9d2ac") - add_versions("2.26.0", "4a181f158f88676816e4993d7e97e7b48ef273aa6f4e2909c6a85497e9af3e9f") - end + add_urls("https://www.libsdl.org/release/SDL2-$(version).zip", + "https://github.com/libsdl-org/SDL/releases/download/release-$(version)/SDL2-$(version).zip", { alias = "archive" }) + add_urls("https://github.com/libsdl-org/SDL.git", { alias = "github" }) + add_versions("archive:2.0.8", "e6a7c71154c3001e318ba7ed4b98582de72ff970aca05abc9f45f7cbdc9088cb") + add_versions("archive:2.0.12", "476e84d6fcbc499cd1f4a2d3fd05a924abc165b5d0e0d53522c9604fe5a021aa") + add_versions("archive:2.0.14", "2c1e870d74e13dfdae870600bfcb6862a5eab4ea5b915144aff8d75a0f9bf046") + add_versions("archive:2.0.16", "010148866e2226e5469f2879425d28ff7c572c736cb3fb65a0604c3cde6bfab9") + add_versions("archive:2.0.18", "2d96cc82020341f7f5957c42001ad526e15fbb7056be8a74dab302483e97aa24") + add_versions("archive:2.0.20", "cc8b16a326eb082c1f48ca30fdf471acfd2334b69bd7527e65ac58369013a1ba") + add_versions("archive:2.0.22", "9a81ab724e6dcef96c61a4a2ebe7758e5b8bb191794650d276a20d5148fbd50c") + add_versions("archive:2.24.0", "4b065503d45652d5f65d807fe98c757c73af2968727945b596861995bc3b69c2") + add_versions("archive:2.24.2", "7fae98ac4e7b39eb2511fc27c2e84b220ac69b5296ff41f833b967c891f9d2ac") + add_versions("archive:2.26.0", "4a181f158f88676816e4993d7e97e7b48ef273aa6f4e2909c6a85497e9af3e9f") + add_versions("archive:2.26.1", "c038222fcac6ccc448daaa3febcae93fdac401aed12fd60da3b7939529276b1b") + add_versions("github:2.0.8", "release-2.0.8") + add_versions("github:2.0.12", "release-2.0.12") + add_versions("github:2.0.14", "release-2.0.14") + add_versions("github:2.0.16", "release-2.0.16") + add_versions("github:2.0.18", "release-2.0.18") + add_versions("github:2.0.20", "release-2.0.20") + add_versions("github:2.0.22", "release-2.0.22") + add_versions("github:2.24.0", "release-2.24.0") + add_versions("github:2.24.2", "release-2.24.2") + add_versions("github:2.26.0", "release-2.26.0") + add_versions("github:2.26.1", "release-2.26.1") + + add_deps("cmake") if is_plat("macosx") then add_frameworks("OpenGL", "CoreVideo", "CoreAudio", "AudioToolbox", "Carbon", "CoreGraphics", "ForceFeedback", "Metal", "AppKit", "IOKit", "CoreFoundation", "Foundation") @@ -56,19 +55,23 @@ package("libsdl") add_includedirs("include", "include/SDL2") add_configs("use_sdlmain", {description = "Use SDL_main entry point", default = true, type = "boolean"}) - if is_plat("windows", "mingw") then - add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true}) - add_configs("vs_runtime", {description = "Set vs compiler runtime.", default = "MD", readonly = true}) - elseif is_plat("linux") then + if is_plat("linux") then add_configs("with_x", {description = "Enables X support (requires it on the system)", default = true, type = "boolean"}) end on_load(function (package) - if package:config("use_sdlmain") then - package:add("links", "SDL2main", "SDL2") - package:add("defines", "SDL_MAIN_HANDLED") + if package.components then + if package:config("use_sdlmain") then + package:add("components", "main") + end + package:add("components", "lib") else - package:add("links", "SDL2") + if package:config("use_sdlmain") then + package:add("links", "SDL2main", "SDL2") + package:add("defines", "SDL_MAIN_HANDLED") + else + package:add("links", "SDL2") + end end if package:is_plat("linux") and package:config("with_x") then package:add("deps", "libxext", {private = true}) @@ -78,6 +81,17 @@ package("libsdl") end end) + on_component = on_component or function() end + on_component("main", function (package, component) + component:add("links", "SDL2main") + component:add("defines", "SDL_MAIN_HANDLED") + component:add("deps", "lib") + end) + + on_component("main", function (package, component) + component:add("links", "SDL2") + end) + on_fetch("linux", "macosx", "bsd", function (package, opt) if opt.system then -- use sdl2-config @@ -126,44 +140,44 @@ package("libsdl") end end) - on_install("windows", "mingw", function (package) - local arch = package:arch() - if package:is_plat("mingw") then - arch = (arch == "x86_64") and "x64" or "x86" - end - os.cp("include/*", package:installdir("include/SDL2")) - os.cp(path.join("lib", arch, "*.lib"), package:installdir("lib")) - os.cp(path.join("lib", arch, "*.dll"), package:installdir("bin")) - end) - - on_install("macosx", "linux", "bsd", function (package) + on_install(function (package) local configs = {} - table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no")) - table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes")) - if package:config("pic") ~= false then - table.insert(configs, "--with-pic") - end + table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release")) + table.insert(configs, "-DLIBTYPE=" .. (package:config("shared") and "SHARED" or "STATIC")) local opt - if package:is_plat("linux") then - local cflags = {} - opt = opt or {} - opt.cflags = cflags + if package:is_plat("linux", "cross") then + local includedirs = {} for _, depname in ipairs({"libxext", "libx11", "xorgproto"}) 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.join2(cflags, "-I" .. includedir) + table.insert(includedirs, includedir) end end end end + if #includedirs > 0 then + includedirs = table.unique(includedirs) + + local cflags = {} + opt = opt or {} + opt.cflags = cflags + for _, includedir in ipairs(includedirs) do + table.insert(cflags, "-I" .. includedir) + end + table.insert(configs, "-DCMAKE_INCLUDE_PATH=" .. table.concat(includedirs, ";")) + end elseif package:is_plat("bsd") then opt = opt or {} opt.packagedeps = "libusb" + elseif package:is_plat("wasm") then + -- emscripten enables USE_SDL by default which will conflict with the sdl headers + opt = opt or {} + opt.cflags = {"-sUSE_SDL=0"} end - import("package.tools.autoconf").install(package, configs, opt) + import("package.tools.cmake").install(package, configs, opt) end) on_test(function (package)