From 20634a2421547dda3c83c102de59b580d256bbd3 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Fri, 23 May 2025 15:22:32 -0700 Subject: [PATCH 01/10] android preset --- .github/workflows/build-presets.yml | 2 +- CMakePresets.json | 30 +++++++++++++++++++++++++++++ extension/android/build.gradle | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-presets.yml b/.github/workflows/build-presets.yml index 1cf1f165ca9..5eb658f861a 100644 --- a/.github/workflows/build-presets.yml +++ b/.github/workflows/build-presets.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - preset: [macos, ios, ios-simulator, pybind, llm] + preset: [android-arm64-v8a, android-x86_64, macos, ios, ios-simulator, pybind, llm] with: job-name: build ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} diff --git a/CMakePresets.json b/CMakePresets.json index 85452d18822..0c3b170092c 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -6,6 +6,36 @@ "hidden": true, "binaryDir": "${sourceDir}/cmake-out" }, + { + "name": "android-arm64-v8a", + "displayName": "Build everything buildable on android arm64-v8a", + "inherits": ["common"], + "binaryDir": "${sourceDir}/cmake-out-android-arm64-v8a", + "cacheVariables": { + "EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/android.cmake", + "ANDROID_ABI": "arm64-v8a" + }, + "condition": { + "type": "inList", + "string": "${hostSystemName}", + "list": ["Darwin", "Linux", "Windows"] + } + }, + { + "name": "android-x86_64", + "displayName": "Build everything buildable on android x86_64", + "inherits": ["common"], + "binaryDir": "${sourceDir}/cmake-out-android-x86_64", + "cacheVariables": { + "EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/android.cmake", + "ANDROID_ABI": "x86_64" + }, + "condition": { + "type": "inList", + "string": "${hostSystemName}", + "list": ["Darwin", "Linux", "Windows"] + } + }, { "name": "macos", "displayName": "Build everything buildable on macOS", diff --git a/extension/android/build.gradle b/extension/android/build.gradle index ac031653a7a..7b26f8b7f30 100644 --- a/extension/android/build.gradle +++ b/extension/android/build.gradle @@ -16,7 +16,7 @@ allprojects { } dependencies { - classpath 'com.android.tools.build:gradle:8.9.0' + classpath 'com.android.tools.build:gradle:8.5.0' classpath 'com.vanniktech:gradle-maven-publish-plugin:0.31.0' } From 4acacfd3e750586d8b261b7150c5692aa56ed2d8 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Fri, 23 May 2025 15:30:40 -0700 Subject: [PATCH 02/10] Use normal cmake-out --- .github/workflows/build-presets.yml | 2 +- CMakePresets.json | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/build-presets.yml b/.github/workflows/build-presets.yml index 5eb658f861a..2c82184b25f 100644 --- a/.github/workflows/build-presets.yml +++ b/.github/workflows/build-presets.yml @@ -39,7 +39,7 @@ jobs: strategy: fail-fast: false matrix: - preset: [pybind, llm] + preset: [android-arm64-v8a, android-x86_64, pybind, llm] runner: [linux.2xlarge, linux.arm64.2xlarge] docker-image: [executorch-ubuntu-22.04-clang12, executorch-ubuntu-22.04-gcc11-aarch64] # Excluding specific runner + docker image combinations that don't make sense: diff --git a/CMakePresets.json b/CMakePresets.json index 0c3b170092c..7971691081d 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -10,7 +10,6 @@ "name": "android-arm64-v8a", "displayName": "Build everything buildable on android arm64-v8a", "inherits": ["common"], - "binaryDir": "${sourceDir}/cmake-out-android-arm64-v8a", "cacheVariables": { "EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/android.cmake", "ANDROID_ABI": "arm64-v8a" @@ -25,7 +24,6 @@ "name": "android-x86_64", "displayName": "Build everything buildable on android x86_64", "inherits": ["common"], - "binaryDir": "${sourceDir}/cmake-out-android-x86_64", "cacheVariables": { "EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/android.cmake", "ANDROID_ABI": "x86_64" From 71b062e35c63f80e7c245e3c3249f1d7e1ce9936 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Fri, 23 May 2025 15:31:16 -0700 Subject: [PATCH 03/10] Fix --- extension/android/build.gradle | 2 +- tools/cmake/preset/android.cmake | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tools/cmake/preset/android.cmake diff --git a/extension/android/build.gradle b/extension/android/build.gradle index 7b26f8b7f30..ac031653a7a 100644 --- a/extension/android/build.gradle +++ b/extension/android/build.gradle @@ -16,7 +16,7 @@ allprojects { } dependencies { - classpath 'com.android.tools.build:gradle:8.5.0' + classpath 'com.android.tools.build:gradle:8.9.0' classpath 'com.vanniktech:gradle-maven-publish-plugin:0.31.0' } diff --git a/tools/cmake/preset/android.cmake b/tools/cmake/preset/android.cmake new file mode 100644 index 00000000000..4c5e79ed0a9 --- /dev/null +++ b/tools/cmake/preset/android.cmake @@ -0,0 +1,20 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +set_overridable_option(EXECUTORCH_ENABLE_LOGGING ON) +set_overridable_option(EXECUTORCH_LOG_LEVEL Info) +set_overridable_option(EXECUTORCH_BUILD_TESTING OFF) + +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_DATA_LOADER ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_FLAT_TENSOR ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_MODULE ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_TENSOR ON) +set_overridable_option(EXECUTORCH_BUILD_KERNELS_CUSTOM ON) +set_overridable_option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED ON) +set_overridable_option(EXECUTORCH_BUILD_KERNELS_QUANTIZED ON) +set_overridable_option(EXECUTORCH_BUILD_XNNPACK ON) +set_overridable_option(EXECUTORCH_XNNPACK_SHARED_WORKSPACE ON) From cb8d0558323095d15eed5c71c3a91a1f83c6c0fb Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Mon, 14 Jul 2025 11:46:15 -0700 Subject: [PATCH 04/10] Update flags --- scripts/build_android_library.sh | 16 +--------------- tools/cmake/preset/android.cmake | 1 + 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/scripts/build_android_library.sh b/scripts/build_android_library.sh index 46e9527d6dc..71612178330 100755 --- a/scripts/build_android_library.sh +++ b/scripts/build_android_library.sh @@ -36,26 +36,12 @@ build_android_native_library() { cmake . -DCMAKE_INSTALL_PREFIX="${CMAKE_OUT}" \ -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \ - -DANDROID_ABI="${ANDROID_ABI}" \ + --preset "android-${ANDROID_ABI}" \ -DANDROID_PLATFORM=android-26 \ - -DBUILD_TESTING=OFF \ - -DEXECUTORCH_PAL_DEFAULT=android \ - -DEXECUTORCH_ENABLE_LOGGING=ON \ -DEXECUTORCH_BUILD_ANDROID_JNI=ON \ -DEXECUTORCH_BUILD_DEVTOOLS=ON \ -DEXECUTORCH_ENABLE_EVENT_TRACER="${EXECUTORCH_ANDROID_PROFILING:-OFF}" \ - -DEXECUTORCH_LOG_LEVEL=Info \ - -DEXECUTORCH_BUILD_XNNPACK=ON \ - -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ - -DEXECUTORCH_BUILD_EXTENSION_FLAT_TENSOR=ON \ - -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL=ON \ - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ -DEXECUTORCH_BUILD_EXTENSION_TRAINING=ON \ - -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \ - -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \ - -DEXECUTORCH_BUILD_KERNELS_CUSTOM="${EXECUTORCH_BUILD_EXTENSION_LLM:-ON}" \ -DEXECUTORCH_BUILD_LLAMA_JNI="${EXECUTORCH_BUILD_EXTENSION_LLM:-ON}" \ -DEXECUTORCH_BUILD_NEURON="${EXECUTORCH_BUILD_NEURON}" \ -DNEURON_BUFFER_ALLOCATOR_LIB="${NEURON_BUFFER_ALLOCATOR_LIB}" \ diff --git a/tools/cmake/preset/android.cmake b/tools/cmake/preset/android.cmake index 4c5e79ed0a9..f1432fab4e3 100644 --- a/tools/cmake/preset/android.cmake +++ b/tools/cmake/preset/android.cmake @@ -7,6 +7,7 @@ set_overridable_option(EXECUTORCH_ENABLE_LOGGING ON) set_overridable_option(EXECUTORCH_LOG_LEVEL Info) set_overridable_option(EXECUTORCH_BUILD_TESTING OFF) +set_overridable_option(EXECUTORCH_PAL_DEFAULT android) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_DATA_LOADER ON) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_FLAT_TENSOR ON) From 2db2bef1a2907692bf7ccb21ae5db4ce6c3c24bd Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Mon, 14 Jul 2025 11:47:20 -0700 Subject: [PATCH 05/10] don't test yet --- .github/workflows/build-presets.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-presets.yml b/.github/workflows/build-presets.yml index eaf4792d84d..ae8ff8b7493 100644 --- a/.github/workflows/build-presets.yml +++ b/.github/workflows/build-presets.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - preset: [android-arm64-v8a, android-x86_64, macos, ios, ios-simulator, pybind, llm] + preset: [macos, ios, ios-simulator, pybind, llm] with: job-name: build ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} @@ -78,7 +78,7 @@ jobs: strategy: fail-fast: false matrix: - preset: [android-arm64-v8a, android-x86_64, linux, pybind, llm] + preset: [linux, pybind, llm] runner: [linux.2xlarge, linux.arm64.2xlarge] docker-image: [executorch-ubuntu-22.04-clang12, executorch-ubuntu-22.04-gcc11-aarch64] # Excluding specific runner + docker image combinations that don't make sense: From dba13378a43b1d13aa0da17228319d5bd7fc2006 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Tue, 5 Aug 2025 15:42:04 -0700 Subject: [PATCH 06/10] Update --- tools/cmake/preset/android.cmake | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tools/cmake/preset/android.cmake b/tools/cmake/preset/android.cmake index ffdfdaddd6f..80d82669e2a 100644 --- a/tools/cmake/preset/android.cmake +++ b/tools/cmake/preset/android.cmake @@ -4,18 +4,29 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. +set_overridable_option(BUILD_TESTING OFF) + +set_overridable_option(EXECUTORCH_BUILD_ANDROID_JNI ON) +set_overridable_option(EXECUTORCH_PAL_DEFAULT android) +set_overridable_option(EXECUTORCH_ENABLE_EVENT_TRACER OFF) set_overridable_option(EXECUTORCH_ENABLE_LOGGING ON) set_overridable_option(EXECUTORCH_LOG_LEVEL Info) -set_overridable_option(EXECUTORCH_BUILD_TESTING OFF) -set_overridable_option(EXECUTORCH_PAL_DEFAULT android) + +set_overridable_option(EXECUTORCH_BUILD_DEVTOOLS ON) + +set_overridable_option(EXECUTORCH_BUILD_XNNPACK ON) +set_overridable_option(EXECUTORCH_XNNPACK_SHARED_WORKSPACE ON) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_DATA_LOADER ON) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_FLAT_TENSOR ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_LLM ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_LLM_RUNNER ON) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_MODULE ON) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL ON) set_overridable_option(EXECUTORCH_BUILD_EXTENSION_TENSOR ON) +set_overridable_option(EXECUTORCH_BUILD_EXTENSION_TRAINING ON) + set_overridable_option(EXECUTORCH_BUILD_KERNELS_LLM ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_QUANTIZED ON) -set_overridable_option(EXECUTORCH_BUILD_XNNPACK ON) -set_overridable_option(EXECUTORCH_XNNPACK_SHARED_WORKSPACE ON) +set_overridable_option(EXECUTORCH_BUILD_KERNELS_TORCHAO ON) From 3866941f7a712a04e0011262adc3dad981e33693 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Tue, 5 Aug 2025 15:48:58 -0700 Subject: [PATCH 07/10] Update --- CMakePresets.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakePresets.json b/CMakePresets.json index cdd85f59cc2..17e6da1f2be 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -10,6 +10,7 @@ "name": "android-arm64-v8a", "displayName": "Build everything buildable on android arm64-v8a", "inherits": ["common"], + "binaryDir": "${sourceDir}/cmake-out-android-arm64-v8a", "cacheVariables": { "EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/android.cmake", "ANDROID_ABI": "arm64-v8a" @@ -24,6 +25,7 @@ "name": "android-x86_64", "displayName": "Build everything buildable on android x86_64", "inherits": ["common"], + "binaryDir": "${sourceDir}/cmake-out-android-x86_64", "cacheVariables": { "EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/android.cmake", "ANDROID_ABI": "x86_64" From ad8c7cc9f76b4c10bfd37aaf6cc7ee1bd2d13d0f Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Thu, 7 Aug 2025 13:54:47 -0700 Subject: [PATCH 08/10] AO OFF --- tools/cmake/preset/android.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/cmake/preset/android.cmake b/tools/cmake/preset/android.cmake index 80d82669e2a..a89f5425e0b 100644 --- a/tools/cmake/preset/android.cmake +++ b/tools/cmake/preset/android.cmake @@ -29,4 +29,3 @@ set_overridable_option(EXECUTORCH_BUILD_EXTENSION_TRAINING ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_LLM ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_QUANTIZED ON) -set_overridable_option(EXECUTORCH_BUILD_KERNELS_TORCHAO ON) From bf29bf88fe3a54635431b35c339619f418592a20 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Fri, 8 Aug 2025 14:08:34 -0700 Subject: [PATCH 09/10] Comment fix --- CMakePresets.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 17e6da1f2be..c7c24f61b3b 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -8,7 +8,7 @@ }, { "name": "android-arm64-v8a", - "displayName": "Build everything buildable on android arm64-v8a", + "displayName": "Build executorch core and JNI bindings on android arm64-v8a", "inherits": ["common"], "binaryDir": "${sourceDir}/cmake-out-android-arm64-v8a", "cacheVariables": { @@ -23,7 +23,7 @@ }, { "name": "android-x86_64", - "displayName": "Build everything buildable on android x86_64", + "displayName": "Build executorch core and JNI bindings on android x86_64", "inherits": ["common"], "binaryDir": "${sourceDir}/cmake-out-android-x86_64", "cacheVariables": { From 8cea9a348ebc7cf0905614617428d1bc5f845eda Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Tue, 12 Aug 2025 14:46:36 -0700 Subject: [PATCH 10/10] Remove devtools --- scripts/build_android_library.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/build_android_library.sh b/scripts/build_android_library.sh index 045d9c5e529..7bc52f01863 100755 --- a/scripts/build_android_library.sh +++ b/scripts/build_android_library.sh @@ -38,7 +38,6 @@ build_android_native_library() { -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \ --preset "android-${ANDROID_ABI}" \ -DANDROID_PLATFORM=android-26 \ - -DEXECUTORCH_BUILD_DEVTOOLS=ON \ -DEXECUTORCH_ENABLE_EVENT_TRACER="${EXECUTORCH_ANDROID_PROFILING:-OFF}" \ -DEXECUTORCH_BUILD_EXTENSION_LLM="${EXECUTORCH_BUILD_EXTENSION_LLM:-ON}" \ -DEXECUTORCH_BUILD_EXTENSION_LLM_RUNNER="${EXECUTORCH_BUILD_EXTENSION_LLM:-ON}" \