diff --git a/packages/a/abseil/xmake.lua b/packages/a/abseil/xmake.lua
index 891d2e305..633022e29 100644
--- a/packages/a/abseil/xmake.lua
+++ b/packages/a/abseil/xmake.lua
@@ -2,12 +2,14 @@ package("abseil")
 
     set_homepage("https://abseil.io")
     set_description("C++ Common Libraries")
+    set_license("Apache-2.0")
 
     add_urls("https://github.com/abseil/abseil-cpp/archive/$(version).tar.gz",
              "https://github.com/abseil/abseil-cpp.git")
     add_versions("20200225.1", "0db0d26f43ba6806a8a3338da3e646bb581f0ca5359b3a201d8fb8e4752fd5f8")
     add_versions("20210324.1", "441db7c09a0565376ecacf0085b2d4c2bbedde6115d7773551bc116212c2a8d6")
     add_versions("20210324.2", "59b862f50e710277f8ede96f083a5bb8d7c9595376146838b9580be90374ee1f")
+    add_versions("20211102.0", "dcf71b9cba8dc0ca9940c4b316a0c796be8fab42b070bb6b7cab62b48f0e66c4")
 
     add_deps("cmake")
 
diff --git a/packages/i/irrlicht/port/xmake.lua b/packages/i/irrlicht/port/xmake.lua
new file mode 100644
index 000000000..7148c9118
--- /dev/null
+++ b/packages/i/irrlicht/port/xmake.lua
@@ -0,0 +1,68 @@
+set_project("irrlicht")
+
+add_rules("mode.debug", "mode.release")
+
+add_requires("bzip2", "libjpeg-turbo", "libpng", "zlib")
+if is_plat("macosx") then
+    add_requires("libx11", "libxft")
+elseif is_plat("linux") then
+    add_requires("libx11", "libxxf86vm", "libxcursor", "libxext", "libxft")
+end
+
+target("Irrlicht")
+    set_kind("$(kind)")
+    add_files("source/Irrlicht/*.cpp")
+    add_files("source/Irrlicht/lzma/*.c")
+    add_files("source/Irrlicht/aesGladman/*.cpp")
+    add_includedirs("source/Irrlicht")
+    add_includedirs("include", {public = true})
+    add_headerfiles("include/(**.h)")
+    add_packages("bzip2", "libjpeg-turbo", "libpng", "zlib")
+    add_defines(is_kind("shared") and "IRRLICHT_EXPORTS" or "_IRR_STATIC_LIB_", {public = is_kind("static")})
+    add_defines("NO_IRR_USE_NON_SYSTEM_ZLIB_",
+                "NO_IRR_USE_NON_SYSTEM_BZLIB_",
+                "NO_IRR_USE_NON_SYSTEM_JPEG_LIB_",
+                "NO_IRR_USE_NON_SYSTEM_LIB_PNG_")
+    add_defines("NO_IRR_COMPILE_WITH_DIRECT3D_9_",
+                "NO_IRR_COMPILE_WITH_BURNINGSVIDEO_")
+    if is_plat("windows") then
+        add_syslinks("user32", "gdi32", "advapi32")
+    elseif is_plat("macosx") then
+        add_frameworks("Cocoa", "OpenGL", "IOKit")
+        add_files("source/Irrlicht/MacOSX/*.mm")
+        add_cxxflags("-ObjC++")
+        set_values("objc++.build.arc", false)
+    elseif is_plat("linux") then
+        add_syslinks("GL")
+        add_packages("libx11", "libxxf86vm", "libxcursor", "libxext")
+    end
+target_end()
+
+target("MeshConverter")
+    set_kind("binary")
+    add_deps("Irrlicht")
+    add_files("tools/MeshConverter/*.cpp")
+target_end()
+
+target("IrrFontTool")
+    set_kind("binary")
+    add_deps("Irrlicht")
+    add_files("tools/IrrFontTool/newFontTool/*.cpp")
+    if is_plat("windows") then
+        add_syslinks("gdi32")
+    elseif is_plat("macosx", "linux") then
+        add_packages("libx11", "libxft")
+    end
+target_end()
+
+target("GUIEditor")
+    set_kind("binary")
+    add_deps("Irrlicht")
+    add_files("tools/GUIEditor/*.cpp")
+target_end()
+
+target("FileToHeader")
+    set_kind("binary")
+    add_deps("Irrlicht")
+    add_files("tools/FileToHeader/*.cpp")
+target_end()
diff --git a/packages/i/irrlicht/xmake.lua b/packages/i/irrlicht/xmake.lua
new file mode 100644
index 000000000..8456b42a4
--- /dev/null
+++ b/packages/i/irrlicht/xmake.lua
@@ -0,0 +1,40 @@
+package("irrlicht")
+
+    set_homepage("https://irrlicht.sourceforge.io/")
+    set_description("The Irrlicht Engine is an open source realtime 3D engine written in C++.")
+    set_license("zlib")
+
+    add_urls("https://downloads.sourceforge.net/irrlicht/irrlicht-$(version).zip")
+    add_versions("1.8.5", "effb7beed3985099ce2315a959c639b4973aac8210f61e354475a84105944f3d")
+
+    add_deps("bzip2", "libjpeg-turbo", "libpng", "zlib")
+    if is_plat("windows") then
+        add_syslinks("user32", "gdi32", "advapi32")
+    elseif is_plat("macosx") then
+        add_deps("libx11", "libxft")
+        add_frameworks("Cocoa", "OpenGL", "IOKit")
+    elseif is_plat("linux") then
+        add_syslinks("GL")
+        add_deps("libx11", "libxxf86vm", "libxcursor", "libxext", "libxft")
+    end
+    on_load("windows", "macosx", "linux", function (package)
+        if not package:config("shared") then
+            package:add("defines", "_IRR_STATIC_LIB_")
+        end
+    end)
+
+    on_install("windows", "macosx", "linux", function (package)
+        os.cp(path.join(os.scriptdir(), "port", "xmake.lua"), "xmake.lua")
+        import("package.tools.xmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                using namespace irr;
+                IrrlichtDevice *device =
+                    createDevice(video::EDT_SOFTWARE, core::dimension2d<u32>(640, 480), 16,
+                        false, false, false, 0);
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "irrlicht.h"}))
+    end)
diff --git a/packages/l/libcurl/versions.lua b/packages/l/libcurl/versions.lua
index 3b1210071..1bedbfa00 100644
--- a/packages/l/libcurl/versions.lua
+++ b/packages/l/libcurl/versions.lua
@@ -1,4 +1,5 @@
 function add_versions_list()
+    add_versions("7.80.0", "dd0d150e49cd950aff35e16b628edf04927f0289df42883750cf952bb858189c")
     add_versions("7.78.0", "98530b317dc95ccb324bbe4f834f07bb642fbc393b794ddf3434f246a71ea44a")
     add_versions("7.77.0", "6c0c28868cb82593859fc43b9c8fdb769314c855c05cf1b56b023acf855df8ea")
     add_versions("7.76.1", "7a8e184d7d31312c4ebf6a8cb59cd757e61b2b2833a9ed4f9bf708066e7695e9")
diff --git a/packages/l/libcurl/xmake.lua b/packages/l/libcurl/xmake.lua
index 1291eee4c..57ecf03e8 100644
--- a/packages/l/libcurl/xmake.lua
+++ b/packages/l/libcurl/xmake.lua
@@ -4,6 +4,7 @@ package("libcurl")
 
     set_homepage("https://curl.haxx.se/")
     set_description("The multiprotocol file transfer library.")
+    set_license("MIT")
 
     set_urls("https://curl.haxx.se/download/curl-$(version).tar.bz2",
              "http://curl.mirror.anstey.ca/curl-$(version).tar.bz2")
diff --git a/packages/o/openssl/xmake.lua b/packages/o/openssl/xmake.lua
index 45810d12d..1e81cd741 100644
--- a/packages/o/openssl/xmake.lua
+++ b/packages/o/openssl/xmake.lua
@@ -15,7 +15,7 @@ package("openssl")
 
     if is_plat("windows") then
         add_links("libssl", "libcrypto")
-        add_syslinks("Ws2_32", "User32", "Crypt32", "Advapi32")
+        add_syslinks("ws2_32", "user32", "crypt32", "advapi32")
     else
         add_links("ssl", "crypto")
     end
@@ -50,14 +50,7 @@ package("openssl")
         table.insert(args, "--openssldir=" .. package:installdir())
         os.vrunv("perl", args)
 
-        -- temporary workaround, will be removed in future
-        if xmake.version():ge("2.5.3") then
-            import("package.tools.nmake").install(package)
-        else
-            local envs = import("core.tool.toolchain").load("msvc"):runenvs()
-            envs.PATH = package:dep("nasm"):installdir("bin") .. path.envsep() .. envs.PATH
-            import("package.tools.nmake").install(package, {}, {envs = envs})
-        end
+        import("package.tools.nmake").install(package)
     end)
 
     on_install("linux", "macosx", function (package)