Sfoglia il codice sorgente

bass24: new package (#7537)

* bass24: new package

* test: emulate `lib/bass.framework/Headers` for iOS
Saikari 1 mese fa
parent
commit
03de549946
1 ha cambiato i file con 108 aggiunte e 0 eliminazioni
  1. 108 0
      packages/b/bass24/xmake.lua

+ 108 - 0
packages/b/bass24/xmake.lua

@@ -0,0 +1,108 @@
+package("bass24")
+    set_homepage("https://www.un4seen.com/")
+    set_description("BASS is an audio library for use in software. It provides efficient sample, stream, MOD music, MO3 music, and recording functions.")
+    
+    if is_plat("windows") then
+        if is_arch("arm64") then
+            add_urls("https://www.un4seen.com/files/bass$(version)-arm64.zip", {version = function (version)
+                return version:gsub("%.", "")
+            end})
+            add_versions("2.4", "57986e7868e524bd554ba31945e758fb973091bc74ee536859153a89f9b01617")
+            add_resources("2.4", "bass_header", "https://www.un4seen.com/files/bass24.zip", "f9e74a672eb1ecee8e41dff0ec5bad24a2678181312c94b81988a718d7c29574")
+        else
+            add_urls("https://www.un4seen.com/files/bass$(version).zip", {version = function (version)
+                return version:gsub("%.", "")
+            end})
+            add_versions("2.4", "f9e74a672eb1ecee8e41dff0ec5bad24a2678181312c94b81988a718d7c29574")
+        end
+    elseif is_plat("linux") then
+        add_urls("https://www.un4seen.com/files/bass$(version)-linux.zip", {version = function (version)
+            return version:gsub("%.", "")
+        end})
+        add_versions("2.4", "fc9025bed66d9f3bb36635b2de7d564fc4396552ced012490094fbfdd10b4b7a")
+    elseif is_plat("macosx") then
+        add_urls("https://www.un4seen.com/files/bass$(version)-osx.zip", {version = function (version)
+            return version:gsub("%.", "")
+        end})
+        add_versions("2.4", "9fbcb50e5d3c6bb666b921f4a1088d975603a276128a7ceab527ff401ee0f352")
+    elseif is_plat("android") then
+        add_urls("https://www.un4seen.com/files/bass$(version)-android.zip", {version = function (version)
+            return version:gsub("%.", "")
+        end})
+        add_versions("2.4", "9fce1f66a2754963665c5fc55fdefcd0d62a078a2299ae061f9c5f1e209fdd9e")
+    elseif is_plat("iphoneos") then
+        add_urls("https://www.un4seen.com/files/bass$(version)-ios.zip", {version = function (version)
+            return version:gsub("%.", "")
+        end})
+        add_versions("2.4", "78f0b372c94d0bef767dc8fd08689e42d41db63a386b1ae718ef6982ca278733")
+    end
+
+    add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true})
+
+    if is_plat("iphoneos") then
+        add_includedirs("lib/bass.framework/Headers")
+        add_linkdirs("lib/bass.framework")
+        add_frameworkdirs("lib/bass.framework")
+        add_frameworks("bass")
+    end
+
+    on_install("windows", function (package)
+        if package:is_arch("arm64") then
+            local headerdir = package:resourcedir("bass_header")
+            os.cp(path.join(headerdir, "c", "bass.h"), package:installdir("include"))
+            os.cp("arm64/bass.dll", package:installdir("bin"))
+            os.cp("c/arm64/bass.lib", package:installdir("lib"))
+        elseif package:is_arch("x64") then
+            os.cp("c/bass.h", package:installdir("include"))
+            os.cp("x64/bass.dll", package:installdir("bin"))
+            os.cp("c/x64/bass.lib", package:installdir("lib"))
+        else
+            os.cp("c/bass.h", package:installdir("include"))
+            os.cp("bass.dll", package:installdir("bin"))
+            os.cp("c/bass.lib", package:installdir("lib"))
+        end
+    end)
+
+    on_install("linux", function (package)
+        os.cp("bass.h", package:installdir("include"))
+        if package:is_arch("x86_64") then
+            os.cp("libs/x86_64/libbass.so", package:installdir("lib"))
+        elseif package:is_arch("x86") then
+            os.cp("libs/x86/libbass.so", package:installdir("lib"))
+        elseif package:is_arch("arm64.*") then
+            os.cp("libs/aarch64/libbass.so", package:installdir("lib"))
+        else
+            os.cp("libs/armhf/libbass.so", package:installdir("lib"))
+        end
+    end)
+
+    on_install("macosx", function (package)
+        os.cp("bass.h", package:installdir("include"))
+        os.cp("libbass.dylib", package:installdir("lib"))
+    end)
+
+    on_install("android", function (package)
+        os.cp("c/bass.h", package:installdir("include"))
+        if package:is_arch("arm64.*") then
+            os.cp("libs/arm64-v8a/libbass.so", package:installdir("lib"))
+        elseif package:is_arch("arm.*") then
+            os.cp("libs/armeabi-v7a/libbass.so", package:installdir("lib"))
+        elseif package:is_arch("x86") then
+            os.cp("libs/x86/libbass.so", package:installdir("lib"))
+        else
+            os.cp("libs/x86_64/libbass.so", package:installdir("lib"))
+        end
+    end)
+
+    on_install("iphoneos", function (package)
+        if package:is_arch("arm.*") then
+            os.cp("bass.xcframework/ios-arm64_armv7_armv7s/bass.framework", package:installdir("lib"))
+        else
+            os.cp("bass.xcframework/ios-arm64_i386_x86_64-simulator/bass.framework", package:installdir("lib"))
+        end
+        os.cp("bass.h", package:installdir("lib/bass.framework/Headers"))
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("BASS_Init", {includes = "bass.h"}))
+    end)