diff --git a/.github/workflows/_build.yml b/.github/workflows/_build.yml index 71bb10c..1406c23 100644 --- a/.github/workflows/_build.yml +++ b/.github/workflows/_build.yml @@ -119,6 +119,42 @@ jobs: version: 5.0.4 actions-cache-folder: "emsdk-cache" + # GitHub's Ubuntu images already provide the Android command-line tools. + # Avoid setup-android here: v3 targets deprecated Node 20 and currently + # fails when GitHub forces the action to run on Node 24. + - name: Android SDK / NDK 23 Setup + if: startsWith(matrix.platform, 'android-') + env: + ANDROID_NDK_VERSION: 23.2.8568313 + ANDROID_COMPILE_SDK: 31 + ANDROID_CMAKE_VERSION: 3.22.1 + ANDROID_ABI: ${{ matrix.android_abi }} + run: | + sdkmanager_bin="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" + if [ ! -x "$sdkmanager_bin" ]; then + sdkmanager_bin="$(command -v sdkmanager || true)" + fi + if [ -z "$sdkmanager_bin" ] || [ ! -x "$sdkmanager_bin" ]; then + echo "::error::sdkmanager was not found on the GitHub runner" + exit 1 + fi + + yes | "$sdkmanager_bin" --licenses > /dev/null || true + "$sdkmanager_bin" \ + "platforms;android-${ANDROID_COMPILE_SDK}" \ + "ndk;${ANDROID_NDK_VERSION}" \ + "cmake;${ANDROID_CMAKE_VERSION}" + android_ndk_root="${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}" + if [ ! -f "${android_ndk_root}/build/cmake/android.toolchain.cmake" ]; then + echo "::error::Android NDK toolchain was not installed at ${android_ndk_root}" + exit 1 + fi + echo "ANDROID_ABI=${ANDROID_ABI}" >> "$GITHUB_ENV" + echo "ANDROID_API=21" >> "$GITHUB_ENV" + echo "ANDROID_PLATFORM=android-21" >> "$GITHUB_ENV" + echo "ANDROID_NDK_ROOT=${android_ndk_root}" >> "$GITHUB_ENV" + echo "ANDROID_NDK_HOME=${android_ndk_root}" >> "$GITHUB_ENV" + # - name: Verify emsdk # if: matrix.platform == 'emscripten' # run: | @@ -224,12 +260,25 @@ jobs: aarch64-linux-gnu-readelf -d **/*.a 2>/dev/null | grep -E "GLIBC|CXXABI" || true # Should show versions like GLIBC_2.36, NOT 2.38+ - - name: Rename and Publish Release - env: - # GITHUB_TOKEN: ${{ github.TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Rename Build Archive run: | mv dist/*.zip ofLibs_${{ inputs.lib }}_${{ matrix.platform }}.zip ls -alF *.zip - gh release upload ${{ inputs.version }} *.zip --clobber + + - name: Upload Build Artifact + uses: actions/upload-artifact@v7 + with: + name: ofLibs-${{ inputs.lib }}-${{ matrix.platform }} + path: ${{ inputs.lib }}/ofLibs_${{ inputs.lib }}_${{ matrix.platform }}.zip + if-no-files-found: error + + - name: Publish Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if gh release view "${{ inputs.version }}" > /dev/null 2>&1; then + gh release upload "${{ inputs.version }}" ofLibs_${{ inputs.lib }}_${{ matrix.platform }}.zip --clobber + else + echo "::notice::Release '${{ inputs.version }}' does not exist in this repository; archive built successfully but upload was skipped." + fi # mv dist/${{ inputs.lib }}.zip ofLibs_${{ inputs.lib }}_${{ matrix.platform }}.zip diff --git a/.github/workflows/_build_android.yml b/.github/workflows/_build_android.yml new file mode 100644 index 0000000..ca699cc --- /dev/null +++ b/.github/workflows/_build_android.yml @@ -0,0 +1,27 @@ +name: Build ofLibs Android + +on: + workflow_call: + inputs: + lib: { required: true, type: string } + version: { required: true, type: string } + linux_apt: { required: false, type: string } + +permissions: + contents: write + +jobs: + android: + uses: ./.github/workflows/_build.yml + with: + lib: ${{ inputs.lib }} + version: ${{ inputs.version }} + linux_apt: ${{ inputs.linux_apt }} + platforms: >- + [ + {"platform":"android-arm64","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"arm64-v8a"}, + {"platform":"android-armv7","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"armeabi-v7a"}, + {"platform":"android-x86","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"x86"}, + {"platform":"android-x86_64","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"x86_64"} + ] + secrets: inherit diff --git a/.github/workflows/assimp.yml b/.github/workflows/assimp.yml index 9c5bf49..c773ea1 100644 --- a/.github/workflows/assimp.yml +++ b/.github/workflows/assimp.yml @@ -13,4 +13,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: assimp, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: assimp, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/brotli.yml b/.github/workflows/brotli.yml new file mode 100644 index 0000000..152ac47 --- /dev/null +++ b/.github/workflows/brotli.yml @@ -0,0 +1,15 @@ +name: brotli + +on: + push: + paths: + - .github/workflows/brotli.yml + - brotli/** + +jobs: + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: brotli, version: v1.0 } + secrets: inherit diff --git a/.github/workflows/fmt.yml b/.github/workflows/fmt.yml index d9f82e0..2503e6a 100644 --- a/.github/workflows/fmt.yml +++ b/.github/workflows/fmt.yml @@ -13,4 +13,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: fmt, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: fmt, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/freetype.yml b/.github/workflows/freetype.yml index 4d6df3b..f099c56 100644 --- a/.github/workflows/freetype.yml +++ b/.github/workflows/freetype.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: freetype, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: freetype, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/glm.yml b/.github/workflows/glm.yml index 91050a1..073e6b3 100644 --- a/.github/workflows/glm.yml +++ b/.github/workflows/glm.yml @@ -19,4 +19,10 @@ jobs: linux_apt: libx11-dev libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libxkbcommon-dev xorg-dev libegl1-mesa-dev libopengl-dev libglx-dev libglvnd-dev, } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: glm, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/json.yml b/.github/workflows/json.yml index 0a3fa0a..613cc63 100644 --- a/.github/workflows/json.yml +++ b/.github/workflows/json.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: json, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: json, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/opencv.yml b/.github/workflows/opencv.yml index 2910ecf..585f760 100644 --- a/.github/workflows/opencv.yml +++ b/.github/workflows/opencv.yml @@ -15,4 +15,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: opencv, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: opencv, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/poco.yml b/.github/workflows/poco.yml index 4822069..ec45335 100644 --- a/.github/workflows/poco.yml +++ b/.github/workflows/poco.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: poco, version: add, linux_apt: libssl-dev } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: poco, version: add } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/pugixml.yml b/.github/workflows/pugixml.yml index b93f6fa..15996fd 100644 --- a/.github/workflows/pugixml.yml +++ b/.github/workflows/pugixml.yml @@ -13,11 +13,21 @@ jobs: contents: write uses: ./.github/workflows/_build.yml - with: { - lib: pugixml, - version: v1.0, - # multistrap: true, - linux_apt: libx11-dev libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libxkbcommon-dev xorg-dev libegl1-mesa-dev libopengl-dev libglx-dev libglvnd-dev, - } + with: + lib: pugixml + version: v1.0 + platforms: >- + [ + {"platform":"linux64","os":"ubuntu-22.04","toolchain":"llvm"}, + {"platform":"macos","os":"macos-26","toolchain":"apple-llvm"}, + {"platform":"vs","os":"windows-2022","toolchain":"vs-stable"}, + {"platform":"rpi-aarch64","os":"ubuntu-22.04-arm","prefix":"aarch64-linux-gnu","toolchain":"aarch64-linux-gnu-gcc-12"}, + {"platform":"emscripten","os":"ubuntu-latest","toolchain":"emscripten"}, + {"platform":"android-arm64","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"arm64-v8a"}, + {"platform":"android-armv7","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"armeabi-v7a"}, + {"platform":"android-x86","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"x86"}, + {"platform":"android-x86_64","os":"ubuntu-22.04","toolchain":"llvm","android_abi":"x86_64"} + ] + linux_apt: libx11-dev libglu1-mesa-dev libgl1-mesa-dev libwayland-dev libxkbcommon-dev xorg-dev libegl1-mesa-dev libopengl-dev libglx-dev libglvnd-dev secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/tess2.yml b/.github/workflows/tess2.yml index 505d879..423c5a4 100644 --- a/.github/workflows/tess2.yml +++ b/.github/workflows/tess2.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: tess2, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: tess2, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/uriparser.yml b/.github/workflows/uriparser.yml index d719bf2..f36bbce 100644 --- a/.github/workflows/uriparser.yml +++ b/.github/workflows/uriparser.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: uriparser, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: uriparser, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/utfcpp.yml b/.github/workflows/utfcpp.yml index 95336dc..8988889 100644 --- a/.github/workflows/utfcpp.yml +++ b/.github/workflows/utfcpp.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: utfcpp, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: utfcpp, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/.github/workflows/zlib-ng.yml b/.github/workflows/zlib-ng.yml index b5a5aee..566b30b 100644 --- a/.github/workflows/zlib-ng.yml +++ b/.github/workflows/zlib-ng.yml @@ -14,4 +14,10 @@ jobs: uses: ./.github/workflows/_build.yml with: { lib: zlib-ng, version: v1.0 } secrets: inherit + android: + permissions: + contents: write + uses: ./.github/workflows/_build_android.yml + with: { lib: zlib-ng, version: v1.0 } + secrets: inherit # bump 2026-07-24: rebuild on windows-2022 (MSVC 14.4x) runner pin diff --git a/assimp/chalet.yaml b/assimp/chalet.yaml index ba8ae0f..41229ec 100644 --- a/assimp/chalet.yaml +++ b/assimp/chalet.yaml @@ -53,6 +53,24 @@ targets: - ASSIMP_BUILD_ZLIB=ON # - JS_ONLY=ON # - CMAKE_EXECUTABLE_SUFFIX=.js + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - ASSIMP_ANDROID_JNIIOSYSTEM=ON + - ASSIMP_BUILD_SAMPLES=OFF + - ASSIMP_BUILD_DOCS=OFF + - ASSIMP_BUILD_STL_IMPORTER=OFF + - ENABLE_VISIBILITY=OFF + - ZLIB_ROOT=${externalBuild:zlib-ng}/ext.zlib-ng/install + - ZLIB_LIBRARY=${externalBuild:zlib-ng}/ext.zlib-ng/install/lib/libz.a + - ZLIB_INCLUDE_DIR=${externalBuild:zlib-ng}/ext.zlib-ng/install/include defines[platform:windows]: - ASSIMP_BUILD_ZLIB=ON # defines[platform:!windows]: diff --git a/brotli/chalet.yaml b/brotli/chalet.yaml index cd98563..4c4bdfc 100644 --- a/brotli/chalet.yaml +++ b/brotli/chalet.yaml @@ -25,6 +25,21 @@ targets: # avoid creating pkgconfig folder # - BROTLI_BUNDLED_MODE=ON + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - BROTLI_DISABLE_TESTS=ON + - BROTLI_BUILD_TOOLS=OFF + - BROTLI_BUNDLED_MODE=OFF + - BUILD_TESTING=OFF + - ENABLE_VISIBILITY=OFF defines[platform:macos]: - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/fmt/chalet.yaml b/fmt/chalet.yaml index 942c6af..2f6e404 100644 --- a/fmt/chalet.yaml +++ b/fmt/chalet.yaml @@ -22,6 +22,18 @@ targets: - CMAKE_INSTALL_PREFIX=install - CMAKE_INSTALL_INCLUDEDIR=include - CMAKE_INSTALL_LIBDIR=lib + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - CMAKE_POSITION_INDEPENDENT_CODE=ON + - ENABLE_VISIBILITY=OFF defines[platform:macos]: - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 diff --git a/freetype/chalet.yaml b/freetype/chalet.yaml index d6ee6ac..f39bacd 100644 --- a/freetype/chalet.yaml +++ b/freetype/chalet.yaml @@ -83,6 +83,23 @@ targets: # defines[platform:!windows]: # - ZLIB_INCLUDE_DIRS=${external:zlib} # - ZLIB_INCLUDE_DIR=${external:zlib} + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + # Optional dependency projects are not part of this ofLibs recipe. + - FT_DISABLE_BZIP2=ON + - FT_DISABLE_HARFBUZZ=ON + - FT_DISABLE_BROTLI=ON + - FT_DISABLE_PNG=ON + - FT_DISABLE_ZLIB=ON + defines[platform:macos]: - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 diff --git a/glm/chalet.yaml b/glm/chalet.yaml index 9dbfff7..9e30739 100644 --- a/glm/chalet.yaml +++ b/glm/chalet.yaml @@ -37,6 +37,24 @@ targets: - GLM_ENABLE_SIMD_AVX=OFF - GLM_ENABLE_SIMD_AVX2=OFF - CMAKE_CXX_FLAGS="-msimd128" + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + # Avoid leaking the Linux runner's SIMD selection into the NDK target. + - GLM_ENABLE_SIMD_AVX=OFF + - GLM_ENABLE_SIMD_AVX2=OFF + - GLM_ENABLE_SIMD_SSE2=OFF + - GLM_ENABLE_SIMD_SSE3=OFF + - GLM_ENABLE_SIMD_SSSE3=OFF + - GLM_ENABLE_SIMD_SSE4_1=OFF + - GLM_ENABLE_SIMD_SSE4_2=OFF defines[platform:macos]: - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 @@ -60,6 +78,18 @@ targets: - GLM_ENABLE_SIMD_SSE4_1=ON - GLM_ENABLE_SIMD_SSE4_2=ON + # Android cross-builds run on an x86_64 host, so override the host + # architecture block after it has been applied. The NDK/compiler selects + # ABI-appropriate instructions itself. + defines[architecture:x86_64+env:ANDROID_ABI]: + - GLM_ENABLE_SIMD_AVX=OFF + - GLM_ENABLE_SIMD_AVX2=OFF + - GLM_ENABLE_SIMD_SSE2=OFF + - GLM_ENABLE_SIMD_SSE3=OFF + - GLM_ENABLE_SIMD_SSSE3=OFF + - GLM_ENABLE_SIMD_SSE4_1=OFF + - GLM_ENABLE_SIMD_SSE4_2=OFF + # this can be removed soon, if the cross compiler points architecture target, not the actual machine # defines[toolchain:{aarch64-linux-gnu-gcc,arm-linux-gnueabihf-gcc}]: # - GLM_TEST_ENABLE_SIMD_NEON=ON diff --git a/json/chalet.yaml b/json/chalet.yaml index ca0e015..5e6a0eb 100644 --- a/json/chalet.yaml +++ b/json/chalet.yaml @@ -19,6 +19,17 @@ targets: - JSON_BuildTests=OFF # - LIBXML2_WITH_DEBUG=OFF + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + defines[platform:macos]: - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/opencv/chalet.yaml b/opencv/chalet.yaml index 2cf0683..bcadf7c 100644 --- a/opencv/chalet.yaml +++ b/opencv/chalet.yaml @@ -117,6 +117,40 @@ targets: - BUILD_PERF_TESTS=OFF - BUILD_TESTS=OFF + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - BUILD_ANDROID_EXAMPLES=OFF + - INSTALL_ANDROID_EXAMPLES=OFF + - BUILD_opencv_java_android=OFF + - BUILD_FAT_JAVA_LIB=OFF + - WITH_1394=OFF + - WITH_CUDA=OFF + - WITH_CUFFT=OFF + - WITH_GIGEAPI=OFF + - WITH_GPHOTO2=OFF + - WITH_GSTREAMER=OFF + - WITH_GTK=OFF + - WITH_GTK_2_X=OFF + - WITH_IMAGEIO=OFF + - WITH_LIBV4L=OFF + - WITH_OPENGL=OFF + - WITH_OPENNI=OFF + - WITH_OPENNI2=OFF + - WITH_QT=OFF + - WITH_QUICKTIME=OFF + - WITH_V4L=OFF + - WITH_VTK=OFF + - WITH_ITT=OFF + - WITH_CAROTENE=OFF + defines[platform:macos]: - APPLE_FRAMEWORK=ON - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/poco/chalet.yaml b/poco/chalet.yaml index 365316d..556ef08 100644 --- a/poco/chalet.yaml +++ b/poco/chalet.yaml @@ -60,6 +60,22 @@ targets: # - CMAKE_INSTALL_INCLUDEDIR=include # - CMAKE_INSTALL_FULL_LIBDIR=lib + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - POCO_STATIC=ON + - ENABLE_DATA_SQLITE=OFF + - ENABLE_DATA_ODBC=OFF + - ENABLE_DATA_MYSQL=OFF + - CMAKE_C_FLAGS_RELEASE=-g0 -O3 + - CMAKE_CXX_FLAGS_RELEASE=-g0 -O3 # defines[platform:macos]: # - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 # - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/pugixml/chalet.yaml b/pugixml/chalet.yaml index b5cdcae..2f8f5f6 100644 --- a/pugixml/chalet.yaml +++ b/pugixml/chalet.yaml @@ -25,6 +25,19 @@ targets: - CMAKE_C_STANDARD=20 - CMAKE_CXX_STANDARD=20 + # Mirrors apothecary's Android CMake invocation. The reusable workflow + # supplies the ABI and NDK root for each matrix entry. + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + defines[platform:macos]: - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/readme.md b/readme.md index c57dd05..51b1df4 100644 --- a/readme.md +++ b/readme.md @@ -5,6 +5,16 @@ You are welcome to jump in and help building and testing more libraries.
![macOS](https://img.shields.io/badge/macOS-000000?style=for-the-badge&logo=apple&logoColor=white) ![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white) ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black) +![Android](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge&logo=android&logoColor=white) + +Android builds use NDK 23 (23.2.8568313), API 21, and the NDK's CMake +toolchain. Supported ABIs are `arm64-v8a`, `armeabi-v7a`, `x86`, and +`x86_64`; release archives are named `android-arm64`, `android-armv7`, +`android-x86`, and `android-x86_64` respectively. + +Android-enabled recipes currently include Assimp, Brotli, fmt, FreeType, GLM, +nlohmann/json, OpenCV, Poco, pugixml, tess2, uriparser, utfcpp, and zlib-ng. +An Android checkmark in the tables means all four ABIs above. ## ofCore @@ -65,30 +75,30 @@ FreeImage have some issues. Poco now builds again and it was moved to "Additiona ## Core Libraries -| Library | vs | macos | linux64 | rpi-aarch64 | rpi-armv6l | -|---------|:--:|:-----:|:-------:|:-----------:|:----------:| -| freetype | ✓ | ✓ | ✓ | ✓ | ✓ | -| glew | ✓ | ✓ | ✓ | ✓ | ✓ | -| glfw | ✓ | ✓ | ✓ | ✓ | ✓ | -| glm | ✓ | ✓ | ✓ | ✓ | ✓ | -| json | ✓ | ✓ | ✓ | ✓ | ✓ | -| kissfft | — | — | ✓ | ✓ | ✓ | -| mango | ✓ | ✓ | ✓ | ✓ | ✓ | -| pugixml | ✓ | ✓ | ✓ | ✓ | ✓ | -| rtAudio | ✓ | ✓ | ✓ | ✓ | ✓ | -| tess2 | ✓ | ✓ | ✓ | ✓ | ✓ | -| uriparser | ✓ | ✓ | ✓ | ✓ | ✓ | -| utfcpp | ✓ | ✓ | ✓ | ✓ | ✓ | -| videoInput | ✓ | — | — | — | — | -| yaml-cpp | ✓ | ✓ | ✓ | ✓ | ✓ | -| zlib-ng | ✓ | ✓ | ✓ | ✓ | ✓ | +| Library | vs | macos | linux64 | rpi-aarch64 | rpi-armv6l | Android | +|---------|:--:|:-----:|:-------:|:-----------:|:----------:|:-------:| +| freetype | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| glew | ✓ | ✓ | ✓ | ✓ | ✓ | — | +| glfw | ✓ | ✓ | ✓ | ✓ | ✓ | — | +| glm | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| json | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| kissfft | — | — | ✓ | ✓ | ✓ | — | +| mango | ✓ | ✓ | ✓ | ✓ | ✓ | — | +| pugixml | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| rtAudio | ✓ | ✓ | ✓ | ✓ | ✓ | — | +| tess2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| uriparser | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| utfcpp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| videoInput | ✓ | — | — | — | — | — | +| yaml-cpp | ✓ | ✓ | ✓ | ✓ | ✓ | — | +| zlib-ng | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ## Addon Libraries -| Library | vs | macos | linux64 | rpi-aarch64 | rpi-armv6l | Associated Addon | -|---------|:--:|:-----:|:-------:|:-----------:|:----------:|------------------| -| assimp | ✓ | ✓ | ✓ | ✓ | ✓ | ofxAssimp | -| cairo | ✓ | ✓ | ✓ | ✓ | ✓ | ofxCairo | -| libusb | ✓ | ✓ | ✓ | ✓ | ✓ | ofxKinect | -| opencv | ✓ | ✓ | ✓ | ✓ | ✓ | ofxOpenCv | -| pixman | ✓ | ✓ | ✓ | ✓ | ✓ | ofxCairo | +| Library | vs | macos | linux64 | rpi-aarch64 | rpi-armv6l | Android | Associated Addon | +|---------|:--:|:-----:|:-------:|:-----------:|:----------:|:-------:|------------------| +| assimp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ofxAssimp | +| cairo | ✓ | ✓ | ✓ | ✓ | ✓ | — | ofxCairo | +| libusb | ✓ | ✓ | ✓ | ✓ | ✓ | — | ofxKinect | +| opencv | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ofxOpenCv | +| pixman | ✓ | ✓ | ✓ | ✓ | ✓ | — | ofxCairo | diff --git a/tess2/chalet.yaml b/tess2/chalet.yaml index 72d3c55..6afbc57 100644 --- a/tess2/chalet.yaml +++ b/tess2/chalet.yaml @@ -28,6 +28,18 @@ targets: # - CMAKE_ARCHIVE_OUTPUT_DIRECTORY=lib - CMAKE_BUILD_TYPE=Release - BUILD_SHARED_LIBS=OFF + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - CMAKE_POSITION_INDEPENDENT_CODE=ON + - CMAKE_POLICY_VERSION_MINIMUM=3.5 defines[platform:macos]: - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/uriparser/chalet.yaml b/uriparser/chalet.yaml index 87ed8d4..90ed71d 100644 --- a/uriparser/chalet.yaml +++ b/uriparser/chalet.yaml @@ -30,6 +30,19 @@ targets: - URIPARSER_SHARED_LIBS=OFF - URI_STATIC_BUILD=ON # ADD THIS LINE + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - CMAKE_POSITION_INDEPENDENT_CODE=ON + - ENABLE_VISIBILITY=OFF + defines[toolchain:msvc]: # - CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded # For /MT (static runtime) # - CMAKE_C_FLAGS=/MT /DURI_STATIC_BUILD diff --git a/utfcpp/chalet.yaml b/utfcpp/chalet.yaml index 51332b1..56c5b71 100644 --- a/utfcpp/chalet.yaml +++ b/utfcpp/chalet.yaml @@ -20,6 +20,17 @@ targets: - CMAKE_BUILD_TYPE=Release - CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + defines[platform:macos]: - CMAKE_OSX_ARCHITECTURES=x86_64;arm64 - CMAKE_OSX_DEPLOYMENT_TARGET=11.0 diff --git a/zlib-ng/chalet.yaml b/zlib-ng/chalet.yaml index 00e2145..ff9bf64 100644 --- a/zlib-ng/chalet.yaml +++ b/zlib-ng/chalet.yaml @@ -36,6 +36,19 @@ targets: defines[platform:web]: - JS_ONLY=ON - CMAKE_EXECUTABLE_SUFFIX=.js + defines[env:ANDROID_ABI]: + - CMAKE_TOOLCHAIN_FILE=${env:ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake + - CMAKE_ANDROID_ARCH_ABI=${env:ANDROID_ABI} + - ANDROID_ABI=${env:ANDROID_ABI} + - ANDROID_API=${env:ANDROID_API} + - ANDROID_PLATFORM=${env:ANDROID_PLATFORM} + - ANDROID_TOOLCHAIN=clang + - ANDROID_NDK=${env:ANDROID_NDK_ROOT} + - ANDROID_NDK_ROOT=${env:ANDROID_NDK_ROOT} + - ANDROID_STL=c++_static + - WITH_NATIVE_INSTRUCTIONS=OFF + - WITH_GZFILEOP=ON + - ENABLE_VISIBILITY=OFF defines[platform:macos]: - CMAKE_OSX_ARCHITECTURES=arm64;x86_64 - CMAKE_OSX_DEPLOYMENT_TARGET=11.0