diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index e29e969..3c35154 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -5,6 +5,9 @@ on:
branches: [ main ]
pull_request:
branches: [ main ]
+
+env:
+ ICU_SOURCE_ZIP_URL: https://github.com/unicode-org/icu/archive/refs/tags/release-77-1.zip
jobs:
build_unoicu:
@@ -33,8 +36,6 @@ jobs:
- uses: actions/checkout@v2
- name: Build icudt.dat
- env:
- ICU_SOURCE_ZIP_URL: https://github.com/unicode-org/icu/archive/refs/tags/release-77-1.zip
run: |
pushd src/cldr_data
docker build --build-arg ICU_SOURCE_ZIP_URL=${ICU_SOURCE_ZIP_URL} --output type=local,dest=. .
@@ -46,8 +47,64 @@ jobs:
name: icudt.dat
path: ./src/cldr_data/icudt.dat
+ build_libicu_darwin:
+ strategy:
+ matrix:
+ arch: [ 'x86_64','arm64' ]
+ runs-on: ${{ matrix.arch == 'x86_64' && 'macos-15-intel' || 'macos-15' }}
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Build icudt.dat
+ run: |
+ curl -L -o icu.zip ${ICU_SOURCE_ZIP_URL}
+ mkdir icu
+ unzip -d icu icu.zip
+ export ICU_DATA_FILTER_FILE="$PWD/src/cldr_data/filters_macosios.json"
+ pushd icu/$(ls icu)/icu4c/source
+ ./runConfigureICU macOS
+ make -j $(sysctl -n hw.physicalcpu)
+ popd
+ mkdir artifacts
+ cp icu/$(ls icu)/icu4c/source/lib/libicuuc.dylib icu/$(ls icu)/icu4c/source/lib/libicudata.dylib artifacts
+
+ - name: Upload binaries
+ uses: actions/upload-artifact@v4
+ with:
+ name: libicu-darwin-${{ matrix.arch }}
+ path: ./artifacts
+
+ build_libicu_darwin_universal:
+ needs: [build_libicu_darwin]
+ runs-on: 'macos-15'
+ steps:
+ - name: Merge libicu binaries
+ uses: actions/upload-artifact/merge@v4
+ with:
+ name: libicu-darwin-merged
+ pattern: 'libicu-darwin-*'
+ separate-directories: true
+
+ - name: Download merged libicu binaries
+ uses: actions/download-artifact@v4
+ with:
+ name: libicu-darwin-merged
+ path: ./libicu-darwin-merged
+
+ - name: Create universal libicu binaries
+ run: |
+ mkdir libicu_darwin_universal
+ lipo -create libicu-darwin-merged/**/libicuuc.dylib -output libicu_darwin_universal/libicuuc.dylib
+ lipo -create libicu-darwin-merged/**/libicudata.dylib -output libicu_darwin_universal/libicudata.dylib
+
+ - name: Upload universal libicu binaries
+ uses: actions/upload-artifact@v4
+ with:
+ name: libicu_darwin_universal
+ path: ./libicu_darwin_universal/*
+
package:
- needs: [build_unoicu, build_icudt]
+ needs: [build_unoicu, build_icudt, build_libicu_darwin_universal]
runs-on: windows-latest
steps:
@@ -55,19 +112,45 @@ jobs:
with:
fetch-depth: 0
- - name: Merge artifacts
+ - name: Download universal libicu binaries
+ uses: actions/download-artifact@v4
+ with:
+ name: libicu_darwin_universal
+ path: .
+
+ - name: List files
+ run: |
+ Get-ChildItem -Recurse .
+
+ - name: Move binaries to correct locations
+ shell: bash
+ run: |
+ mkdir nuget/uno.icu-macos/libicu
+ mv {libicuuc,libicudata}.dylib ./nuget/uno.icu-macos/libicu
+
+ - name: List files
+ run: |
+ Get-ChildItem -Recurse .
+
+ - name: Merge unoicu.a artifacts
uses: actions/upload-artifact/merge@v4
with:
- name: merged-artifacts
- pattern: '*'
+ name: unoicu-merged
+ pattern: 'unoicu-*'
separate-directories: true
- - name: Download merged artifacts
+ - name: Download merged unoicu.a artifacts
uses: actions/download-artifact@v4
with:
- name: merged-artifacts
+ name: unoicu-merged
path: ./merged-artifacts
+ - name: Download icudt.dat
+ uses: actions/download-artifact@v4
+ with:
+ name: icudt.dat
+ path: ./merged-artifacts/icudt.dat
+
- uses: dotnet/nbgv@f088059084cb5d872e9d1a994433ca6440c2bf72 # v0.4.2
id: nbgv
with:
@@ -81,14 +164,14 @@ jobs:
- name: Move downloaded artifacts to correct locations
shell: bash
run: |
- mv ./merged-artifacts/icudt.dat/icudt.dat ./nuget/build
+ mv ./merged-artifacts/icudt.dat/icudt.dat ./nuget/uno.icu-wasm/build
- mkdir -p ./nuget/buildTransitive/native/unoicu.a
+ mkdir -p ./nuget/uno.icu-wasm/buildTransitive/native/unoicu.a
pushd merged-artifacts
for dir in unoicu-*; do
new_name="${dir#unoicu-}"
- mkdir -p ../nuget/buildTransitive/native/unoicu.a/"$new_name"/st
- cp -r "$dir"/unoicu.a ../nuget/buildTransitive/native/unoicu.a/"$new_name"/st/unoicu.a
+ mkdir -p ../nuget/uno.icu-wasm/buildTransitive/native/unoicu.a/"$new_name"/st
+ cp -r "$dir"/unoicu.a ../nuget/uno.icu-wasm/buildTransitive/native/unoicu.a/"$new_name"/st/unoicu.a
done
popd
@@ -104,7 +187,8 @@ jobs:
- name: Build nuget
run: |
pushd nuget
- .\nuget.exe pack uno.icu-wasm.nuspec -version ${{ steps.nbgv.outputs.SemVer2 }}
+ .\nuget.exe pack uno.icu-wasm/uno.icu-wasm.nuspec -version ${{ steps.nbgv.outputs.SemVer2 }}
+ .\nuget.exe pack uno.icu-macos/uno.icu-macos.nuspec -version ${{ steps.nbgv.outputs.SemVer2 }}
popd
- uses: actions/upload-artifact@v4
@@ -152,6 +236,10 @@ jobs:
tenant-id: ${{ secrets.SIGN_AZURE_TENANT_ID }}
subscription-id: ${{ secrets.SIGN_AZURE_SUBSCRIPTION_ID }}
+ - name: List files
+ run: |
+ Get-ChildItem -Recurse .
+
# Run the signing command
- name: Sign artifacts
shell: pwsh
diff --git a/nuget/buildTransitive/Uno.icu-wasm.targets b/nuget/buildTransitive/Uno.icu-wasm.targets
deleted file mode 100644
index dd200d1..0000000
--- a/nuget/buildTransitive/Uno.icu-wasm.targets
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- $(UnoFeatures.ToLowerInvariant())
-
-
-
-
-
-
\ No newline at end of file
diff --git a/nuget/uno.icu-macos/uno.icu-macos.nuspec b/nuget/uno.icu-macos/uno.icu-macos.nuspec
new file mode 100644
index 0000000..3bde256
--- /dev/null
+++ b/nuget/uno.icu-macos/uno.icu-macos.nuspec
@@ -0,0 +1,20 @@
+
+
+
+ Uno.icu-macos
+ 0.0.1
+ Uno ICU for MacOS
+ Uno Platform
+ unoplatform
+ false
+ https://github.com/unoplatform/uno.icu
+ https://nv-assets.azurewebsites.net/logos/uno.png
+ The International Components for Unicode for macOS
+ Copyright (C) 2015-2025 Uno Platform inc. - all rights reserved
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nuget/build/Uno.icu-wasm.targets b/nuget/uno.icu-wasm/build/Uno.icu-wasm.targets
similarity index 73%
rename from nuget/build/Uno.icu-wasm.targets
rename to nuget/uno.icu-wasm/build/Uno.icu-wasm.targets
index 804a837..41d7c98 100644
--- a/nuget/build/Uno.icu-wasm.targets
+++ b/nuget/uno.icu-wasm/build/Uno.icu-wasm.targets
@@ -1,7 +1,7 @@
-
+
diff --git a/nuget/uno.icu-wasm/buildTransitive/Uno.icu-wasm.targets b/nuget/uno.icu-wasm/buildTransitive/Uno.icu-wasm.targets
new file mode 100644
index 0000000..383fa86
--- /dev/null
+++ b/nuget/uno.icu-wasm/buildTransitive/Uno.icu-wasm.targets
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/nuget/uno.icu-wasm.nuspec b/nuget/uno.icu-wasm/uno.icu-wasm.nuspec
similarity index 100%
rename from nuget/uno.icu-wasm.nuspec
rename to nuget/uno.icu-wasm/uno.icu-wasm.nuspec
diff --git a/src/cldr_data/Dockerfile b/src/cldr_data/Dockerfile
index 3bbc5a0..be4a198 100644
--- a/src/cldr_data/Dockerfile
+++ b/src/cldr_data/Dockerfile
@@ -8,8 +8,8 @@ RUN apt-get update && apt-get install -y make git python3 doxygen zip wget g++
WORKDIR /icu
-ENV ICU_DATA_FILTER_FILE=/icu/filters.json
-COPY filters.json .
+ENV ICU_DATA_FILTER_FILE=/icu/filters_wasm.json
+COPY filters_wasm.json .
RUN wget ${ICU_SOURCE_ZIP_URL}
RUN unzip release-77-1.zip
diff --git a/src/cldr_data/filters_macosios.json b/src/cldr_data/filters_macosios.json
new file mode 100644
index 0000000..254cea4
--- /dev/null
+++ b/src/cldr_data/filters_macosios.json
@@ -0,0 +1,220 @@
+{
+ "strategy": "additive",
+ "featureFilters": {
+ "brkitr_rules": {
+ "filterType": "regex",
+ "excludelist": [
+ "^.*loose.*$",
+ "^.*char.*$",
+ "^.*word.*$",
+ "^.*sent.*$",
+ "^.*title.*$"
+ ]
+ },
+ "brkitr_dictionaries": {
+ "excludelist": [
+ "burmesedict",
+ "khmerdict",
+ "laodict"
+ ]
+ },
+ "brkitr_tree": "include",
+ "uemoji": "include",
+ "cnvalias": "include",
+ "locales_tree": "include"
+ },
+ "localeFilter": {
+ "filterType": "locale",
+ "includeScripts": false,
+ "includeChildren": false,
+ "whitelist": [
+ "ar_SA",
+ "am_ET",
+ "bg_BG",
+ "bn_BD",
+ "bn_IN",
+ "ca_AD",
+ "ca_ES",
+ "cs_CZ",
+ "da_DK",
+ "de_AT",
+ "de_BE",
+ "de_CH",
+ "de_DE",
+ "de_IT",
+ "de_LI",
+ "de_LU",
+ "el_CY",
+ "el_GR",
+ "en_AE",
+ "en_AG",
+ "en_AI",
+ "en_AS",
+ "en_AT",
+ "en_AU",
+ "en_BB",
+ "en_BE",
+ "en_BI",
+ "en_BM",
+ "en_BS",
+ "en_BW",
+ "en_BZ",
+ "en_CA",
+ "en_CC",
+ "en_CH",
+ "en_CK",
+ "en_CM",
+ "en_CX",
+ "en_CY",
+ "en_DE",
+ "en_DK",
+ "en_DM",
+ "en_ER",
+ "en_FI",
+ "en_FJ",
+ "en_FK",
+ "en_FM",
+ "en_GB",
+ "en_GD",
+ "en_GG",
+ "en_GH",
+ "en_GI",
+ "en_GM",
+ "en_GU",
+ "en_GY",
+ "en_HK",
+ "en_IE",
+ "en_IL",
+ "en_IM",
+ "en_IN",
+ "en_IO",
+ "en_JE",
+ "en_JM",
+ "en_KE",
+ "en_KI",
+ "en_KN",
+ "en_KY",
+ "en_LC",
+ "en_LR",
+ "en_LS",
+ "en_MG",
+ "en_MH",
+ "en_MO",
+ "en_MP",
+ "en_MS",
+ "en_MT",
+ "en_MU",
+ "en_MW",
+ "en_MY",
+ "en_NA",
+ "en_NF",
+ "en_NG",
+ "en_NL",
+ "en_NR",
+ "en_NU",
+ "en_NZ",
+ "en_PG",
+ "en_PH",
+ "en_PK",
+ "en_PN",
+ "en_PR",
+ "en_PW",
+ "en_RW",
+ "en_SB",
+ "en_SC",
+ "en_SD",
+ "en_SE",
+ "en_SG",
+ "en_SH",
+ "en_SI",
+ "en_SL",
+ "en_SS",
+ "en_SX",
+ "en_SZ",
+ "en_TC",
+ "en_TK",
+ "en_TO",
+ "en_TT",
+ "en_TV",
+ "en_TZ",
+ "en_UG",
+ "en_UM",
+ "en_US",
+ "en_VC",
+ "en_VG",
+ "en_VI",
+ "en_VU",
+ "en_WS",
+ "en_ZA",
+ "en_ZM",
+ "en_ZW",
+ "en_US",
+ "es_419",
+ "es_ES",
+ "es_MX",
+ "et_EE",
+ "fa_IR",
+ "fi_FI",
+ "fil_PH",
+ "fr_BE",
+ "fr_CA",
+ "fr_CH",
+ "fr_FR",
+ "gu_IN",
+ "he_IL",
+ "hi_IN",
+ "hr_BA",
+ "hr_HR",
+ "hu_HU",
+ "id_ID",
+ "it_CH",
+ "it_IT",
+ "ja_JP",
+ "kn_IN",
+ "ko_KR",
+ "lt_LT",
+ "lv_LV",
+ "ml_IN",
+ "mr_IN",
+ "ms_BN",
+ "ms_MY",
+ "ms_SG",
+ "nb_NO",
+ "no",
+ "no_NO",
+ "nl_AW",
+ "nl_BE",
+ "nl_NL",
+ "pl_PL",
+ "pt_BR",
+ "pt_PT",
+ "ro_RO",
+ "ru_RU",
+ "sk_SK",
+ "sl_SI",
+ "sr_Cyrl_RS",
+ "sr_Latn_RS",
+ "sv_AX",
+ "sv_SE",
+ "sw_CD",
+ "sw_KE",
+ "sw_TZ",
+ "sw_UG",
+ "ta_IN",
+ "ta_LK",
+ "ta_MY",
+ "ta_SG",
+ "te_IN",
+ "th_TH",
+ "tr_CY",
+ "tr_TR",
+ "uk_UA",
+ "vi_VN",
+ "zh_CN",
+ "zh_Hans_HK",
+ "zh_SG",
+ "zh_HK",
+ "zh_TW"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/cldr_data/filters.json b/src/cldr_data/filters_wasm.json
similarity index 100%
rename from src/cldr_data/filters.json
rename to src/cldr_data/filters_wasm.json