Просмотр исходного кода

ndk: refactor & upgrade. (#7781)

* ndk: refactor & upgrade.

* ci: improve android ci.

* Update xmake.lua

---------

Co-authored-by: ruki <[email protected]>
RedbeanW 1 месяц назад
Родитель
Сommit
6b40cbf2d6

+ 2 - 2
.github/workflows/android.yml

@@ -42,7 +42,7 @@ jobs:
           ANDROID_NDK_HOME: ""
           ANDROID_NDK_HOME: ""
         run: |
         run: |
           if test ${{ matrix.ndk }} = "r27"; then
           if test ${{ matrix.ndk }} = "r27"; then
-            xrepo env -y -b "ndk 27.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
+            xrepo env -y -b "ndk 27" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           else
           else
-            xrepo env -y -b "ndk 22.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
+            xrepo env -y -b "ndk 22" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           fi
           fi

+ 2 - 2
.github/workflows/android_windows.yml

@@ -49,7 +49,7 @@ jobs:
           ANDROID_NDK_HOME: ""
           ANDROID_NDK_HOME: ""
         run: |
         run: |
           if ("${{ matrix.ndk }}" -eq "r27") {
           if ("${{ matrix.ndk }}" -eq "r27") {
-            xrepo env -y -b "ndk 27.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
+            xrepo env -y -b "ndk 27" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           } else {
           } else {
-            xrepo env -y -b "ndk 22.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
+            xrepo env -y -b "ndk 22" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           }
           }

+ 17 - 0
packages/n/ndk/versions/linux.txt

@@ -0,0 +1,17 @@
+22.0 d37fc69cd81e5660234a686e20adef39bc0244086e4d66525a40af771c020718
+22.1 ac3a0421e76f71dd330d0cd55f9d99b9ac864c4c034fc67e0d671d022d4e806b
+23.0 e3eacf80016b91d4cd2c8ca9f34eebd32df912bb799c859cc5450b6b19277b4f
+23.1 c6e97f9c8cfe5b7be0a9e6c15af8e7a179475b7ded23e2d1c1fa0945d6fb4382
+23.2 6ce94604b77d28113ecd588d425363624a5228d9662450c48d2e4053f8039242
+24.0 caac638f060347c9aae994e718ba00bb18413498d8e0ad4e12e1482964032997
+25.0 cd661aeda5d9b7cfb6e64bd80737c274d7c1c0d026df2f85be3bf3327b25e545
+25.1 403ac3e3020dd0db63a848dcaba6ceb2603bf64de90949d5c4361f848e44b005
+25.2 769ee342ea75f80619d985c2da990c48b3d8eaf45f48783a2d48870d04b46108
+26.0 1505c2297a5b7a04ed20b5d44da5665e91bac2b7c0fbcd3ae99b6ccc3a61289a
+26.1 ad73c0370f0b0a87d1671ed2fd5a9ac9acfd1eb5c43a7fbfbd330f85d19dd632
+26.2 6d6e659834d28bb24ba7ae66148ad05115ebbad7dabed1af9b3265674774fcf6
+26.3 eefeafe7ccf177de7cc57158da585e7af119bb7504a63604ad719e4b2a328b54
+27.0 2f17eb8bcbfdc40201c0b36e9a70826fcd2524ab7a2a235e2c71186c302da1dc
+27.1 33e16af1a6bbabe12cad54b2117085c07eab7e4fa67cdd831805f0e94fd826c1
+27.2 59c2f6dc96743b5daf5d1626684640b20a6bd2b1d85b13156b90333741bad5cc
+27.3 601246087a682d1944e1e16dd85bc6e49560fe8b6d61255be2829178c8ed15d9

+ 17 - 0
packages/n/ndk/versions/macosx.txt

@@ -0,0 +1,17 @@
+22.0 14fce4dea7fb3facbc0e3d20270007bffec3ba383aec02e8b0e0dad8d8782892
+22.1 b05d2087a6346d66cd26a1dc89fcc877b59e49feab6269b665aa67c784a81512
+23.0 163ff3bb72306ffa814de35c49819bccae9df10855a4e3fbba52ad4111fcccae
+23.1 e067b7402fdae85bfbe8af1822afd573b8e73dce443a8292fdaeb2e8dc3aeb86
+23.2 baf793127741eda36f2eabe69cdec23a70c814deb3c75df8744af35aed21e59d
+24.0 162a7000515be07489f2ed70d6d3a117d236150f83f3fcb601c163349429ba23
+25.1 2373424b91bba4cdd15e4c82e05f77a44ba3617aa3329843958ea3d0e25e62d0
+25.2 7e12f1f809878d4f5d5a901809277aa31546d36c10730fade2036d7d95b3607a
+25.3 b01bae969a5d0bfa0da18469f650a1628dc388672f30e0ba231da5c74245bc92
+26.0 b2ab2fd17f71e2d2994c8c0ba2e48e99377806e05bf7477093344c26ab71dec0
+26.1 4b0ea6148a9a2337e62a0c0c7ac59ff1edc38d69b81d9c58251897d23f7fa321
+26.2 312756dfcbdbf389d35d651e17ca98683bd36cb83cc7bf7ad51cac5c06bd064b
+26.3 ee2d0531685a69164fc0a66705d3a30109223f6fc01f1008ca5d8bc3a32d628d
+27.0 2f2ef00b22fe22c1c9c78fda1b38ea7ffa6528e25eac0b70a92f8cb0093143be
+27.1 cf9b9eef50841f409f586e7ae12901007c7f545722612065bd63afbab1844152
+27.2 8c5685457c58a88527367d46d3f14e8c727d962c39f85344cff0c0768a73c3b7
+27.3 e69092f9d2bfa5d1199039980a14eb91c03cc971ab5c6968fc08a8e6b84e7bb7

+ 17 - 0
packages/n/ndk/versions/windows.txt

@@ -0,0 +1,17 @@
+22.0 5a0eafa83c8bba3c76e8427aa3d83d169215f62963a277b1914a3651aa47f751
+22.1 6d2fe8dbba8342634e88ecbaf321bcbfc07e579b6281f426639002dd35046d03
+23.0 40325b5bfdb7f6de016ea3efee0468a7d306eda55a6f80966a501645ba01fbfa
+23.1 36270f8b2cfdd940f410bd8ffe6ce86ffaa8e87ff1c4fd4a8be5130268357778
+23.2 48a0a7b38fb1c69cae6d17b70e03aab8d6138e65a30f8d3faebeb0dc09bf6940
+24.0 b2a9fab1481c3c21df0b78608747dde0747b50890134a62a81c983a5250066d6
+25.0 bdb25e75647532f979844f549a33eaf75c54a2cb4367f349be187ae9bfee9234
+25.1 c9a72beda4663ab714c9fb3dc06bb9b9f124f2b5199957c86cd6f57eb59fd49a
+25.2 f70093964f6cbbe19268f9876a20f92d3a593db3ad2037baadd25fd8d71e84e2
+26.0 a748c6634b96991e15cb8902ffa4a498bba2ec6aa8028526de3c4c9dfcf00663
+26.1 a478d43d4a45d0d345cda6be50d79642b92fb175868d9dc0dfc86181d80f691e
+26.2 67d0c7e4ba853e9168584e8640a562af431dcf086c08efef3ec23ee827139303
+26.3 9b285da57a36818cb65ea5b93ec74f8138f48a40182ff2994f6aade4580ed597
+27.0 342ceafd7581ae26a0bd650a5e0bbcd0aa2ee15eadfd7508b3dedeb1372d7596
+27.1 6fa1fa6e95191eb374d389018b6bbdc9adb835f62f1d2b717001f65e0df8e351
+27.2 27e49f11e0cee5800983d8af8f4acd5bf09987aa6f790d4439dda9f3643d2494
+27.3 82094f53e66a76b6a9ec4fc35a5076091a92de3b91d13c5d4a7cfdb226304c59

+ 28 - 44
packages/n/ndk/xmake.lua

@@ -3,51 +3,31 @@ package("ndk")
     set_homepage("https://developer.android.com/ndk")
     set_homepage("https://developer.android.com/ndk")
     set_description("Android NDK toolchain.")
     set_description("Android NDK toolchain.")
 
 
-    if is_host("windows") and os.arch() == "x64" then
-        local versions = {
-            ["21"] = "r21e-windows-x86_64",
-            ["22"] = "r22-windows-x86_64",
-            ["26"] = "r26b-windows",
-            ["27"] = "r27-windows",
-        }
-
-        set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function (version)
-            return versions[tostring(version:major())]
-        end})
-        add_versions("21.0", "f71307c5c572e2c163d602b3704b8bc024bec0c43ba2800de36bd10f3a21492b")
-        add_versions("22.0", "5a0eafa83c8bba3c76e8427aa3d83d169215f62963a277b1914a3651aa47f751")
-        add_versions("26.0", "a478d43d4a45d0d345cda6be50d79642b92fb175868d9dc0dfc86181d80f691e")
-        add_versions("27.0", "342ceafd7581ae26a0bd650a5e0bbcd0aa2ee15eadfd7508b3dedeb1372d7596")
-    elseif is_host("linux") and os.arch() == "x86_64" then
-        local versions = {
-            ["21"] = "r21e-linux-x86_64",
-            ["22"] = "r22-linux-x86_64",
-            ["26"] = "r26b-linux",
-            ["27"] = "r27-linux",
-        }
-
-        set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function (version)
-            return versions[tostring(version:major())]
+    if is_host("windows", "linux", "macosx") then
+        set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function(version)
+            -- 27.3 -> r27d-linux
+            local minor = ''
+            local suffix = ''
+            local host = os.host()
+            if version:minor() > 0 then
+                minor = string.char(97 + version:minor())
+            end
+            if version:major() < 23 then
+                suffix = '-x86_64'
+            end
+            if host == "macosx" then
+                host = "darwin"
+            end
+            return ("r%s%s-%s%s"):format(version:major(), minor, host, suffix)
         end})
         end})
-        add_versions("21.0", "ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e")
-        add_versions("22.0", "d37fc69cd81e5660234a686e20adef39bc0244086e4d66525a40af771c020718")
-        add_versions("26.0", "ad73c0370f0b0a87d1671ed2fd5a9ac9acfd1eb5c43a7fbfbd330f85d19dd632")
-        add_versions("27.0", "2f17eb8bcbfdc40201c0b36e9a70826fcd2524ab7a2a235e2c71186c302da1dc")
-    elseif is_host("macosx") and os.arch() == "x86_64" then
-        local versions = {
-            ["21"] = "r21e-darwin-x86_64",
-            ["22"] = "r22-darwin-x86_64",
-            ["26"] = "r26b-darwin",
-            ["27"] = "r27-darwin",
-        }
+    end
 
 
-        set_urls("https://dl.google.com/android/repository/android-ndk-$(version).zip", {version = function (version)
-            return versions[tostring(version:major())]
-        end})
-        add_versions("21.0", "437278103a3db12632c05b1be5c41bbb8522791a67e415cc54411a65366f499d")
-        add_versions("22.0", "14fce4dea7fb3facbc0e3d20270007bffec3ba383aec02e8b0e0dad8d8782892")
-        add_versions("26.0", "4b0ea6148a9a2337e62a0c0c7ac59ff1edc38d69b81d9c58251897d23f7fa321")
-        add_versions("27.0", "2f2ef00b22fe22c1c9c78fda1b38ea7ffa6528e25eac0b70a92f8cb0093143be")
+    if is_host("windows") then
+        add_versionfiles("versions/windows.txt")
+    elseif is_host("linux") then
+        add_versionfiles("versions/linux.txt")
+    elseif is_host("macosx") then
+        add_versionfiles("versions/macosx.txt")
     end
     end
 
 
     on_load(function (package)
     on_load(function (package)
@@ -57,7 +37,11 @@ package("ndk")
         package:setenv("ANDROID_NDK_HOME", ".")
         package:setenv("ANDROID_NDK_HOME", ".")
     end)
     end)
 
 
-    on_install("@windows|x64", "@msys|x86_64", "@linux|x86_64", "@macosx|x86_64", function (package)
+    on_check("@macosx|arm64", function(package)
+        assert(package:version():gt("23.0"), "package(ndk <=23.0): unsupported architecture, please increase the NDK version.")
+    end)
+
+    on_install("@windows|x64", "@msys|x86_64", "@linux|x86_64", "@macosx", function (package)
         os.vcp("*", package:installdir())
         os.vcp("*", package:installdir())
     end)
     end)