Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
be258b1
Testing new arm-zephyr-eabi-gcc.cmake file
BujSet Jun 13, 2025
cabbe9c
Testing updated to setup sscript for zephyr toolchain
BujSet Jun 13, 2025
73e721b
Testing cmake configs to build with zephyr, currently build fails
BujSet Jun 13, 2025
4e09438
Able to run the build_size_test, but exporting the models seems to fail
Jun 16, 2025
7e94e9f
Initial test for cmake preset test
BujSet Jun 17, 2025
268cf6f
Testing minimal change undo to see if hang resolves
Jun 18, 2025
9c5a727
Seems like there is a cmake caching issue, trying to commit and then …
BujSet Jun 18, 2025
50436ad
Testing full path specification in arm zephyr cmake
BujSet Jun 23, 2025
e508ff6
Need full path for linker too
BujSet Jun 23, 2025
aa28a29
Think I got add example working, need to test on clean install
BujSet Jun 23, 2025
7772a68
Initial tests seem to work, now starting incremental rollback on unee…
BujSet Jun 24, 2025
a18ded6
Things still work, undoing uneeded source code changes
BujSet Jun 24, 2025
d6efd1e
iSpearating out changes only for zephyr cmake preset diff
BujSet Jun 24, 2025
1cc7ca8
Adding in support for CI flow, required allowing setup script to take…
BujSet Jun 24, 2025
7264cd8
Updating plumbing to run scripts to allow toolchain to be passed in a…
BujSet Jun 24, 2025
6e9b3e1
Addressing some of the PR ocmments
BujSet Jun 25, 2025
8edf792
Testing if I can use cusotm zephyr pal cpp default file
BujSet Jun 25, 2025
e5c3572
Testing new PAL cpp file
BujSet Jun 25, 2025
752b386
Zephyr PAL file seems to not be set correctly
Jun 25, 2025
a1ccdaa
linting
Jun 25, 2025
1aacaee
Think I fixed the ci runner, but having issues with building the size…
Jun 25, 2025
ed10715
build_size_test appears to be working now
BujSet Jun 25, 2025
39c8812
Linting
BujSet Jun 25, 2025
34af1ac
Minizing chages to only include relevant stuff
BujSet Jun 25, 2025
3cb6a8e
Fixing minor typos
BujSet Jun 25, 2025
d9ee622
Found minimal set of configs to enable arm zephyr toolchain preset
BujSet Jun 25, 2025
dae1c27
Addressing some comments
BujSet Jun 26, 2025
34caf6e
Testing overloading of arm-eabi-gcc.cmake to use for both zephyr and …
BujSet Jun 26, 2025
cca82a5
Deciding to still to single toolchain-gcc.cmake file and just allow f…
BujSet Jun 26, 2025
8fa8ea7
Minor typo fix
BujSet Jun 26, 2025
e177c1d
Linting and minor typo fix
BujSet Jun 26, 2025
0fd39bf
Update test threshold
BujSet Jun 26, 2025
7af3884
Adding correct flag to make sure build size test is accurate, updated…
Jun 26, 2025
e547c85
Something broke when trying to overload arm-none-eabi-gcc.cmake file,…
Jun 27, 2025
8dc97d5
Addressing some comments
BujSet Jun 27, 2025
0063bf1
Attempting to revert to separate cmake version
BujSet Jun 27, 2025
3d5c07d
Removing unnecessary setup script
BujSet Jun 30, 2025
a25d611
Removing other unneeded changes, update ci script to do correct comma…
BujSet Jun 30, 2025
eaca9bb
Updating setup script and cleaning comments
BujSet Jun 30, 2025
007851d
Something broke on CI, log info unclear
BujSet Jun 30, 2025
7d62f5a
Testing fix to CI setup script
BujSet Jun 30, 2025
fb84820
Fix did not work, testing alternate solution
BujSet Jun 30, 2025
63db67a
Used wrong bash notation, attempting to fix
BujSet Jun 30, 2025
001b543
Addressing comment to decouple zephyr from arm ethos-u
BujSet Jul 1, 2025
314657f
Updating build preset
BujSet Jul 1, 2025
669e525
Bash default seems to not be working, testing fix
BujSet Jul 1, 2025
169ecc1
This seems to fix the bash default usage
Jul 1, 2025
7cab8b6
Updating CI test
Jul 1, 2025
730788f
New zephyr directory not being found, trying to fix
Jul 1, 2025
aebf60b
Seems like CI still cant find directory, adding debug help
Jul 1, 2025
c017170
Silly typo fix
Jul 1, 2025
a92621e
Undoing other uneeded changes
Jul 1, 2025
e70c604
Updating CI for build preset to match CI size test job params
BujSet Jul 2, 2025
1545c7e
Toolchain files not found for arm zephyr, adding it into the CI test …
BujSet Jul 2, 2025
bd78d21
Seems like an output dir naming issue, testing fix
BujSet Jul 2, 2025
082799c
Changing desired toolcahin out dir name to mathc name of extracted dir
BujSet Jul 2, 2025
997ec26
No need for named output extraction dir anymore
BujSet Jul 2, 2025
49cf07e
Malformed PATH, testing fix
BujSet Jul 2, 2025
f52ed35
Adding toolchain download verification to CI build preset test
BujSet Jul 2, 2025
07d985c
Fixing wrong file path
BujSet Jul 2, 2025
fa2f0ae
Changing naming convention of cmake file
BujSet Jul 2, 2025
92c7151
Rebasing based off main, think I resolved it
BujSet Jul 2, 2025
f54e048
Rebase was ugly and not correct, this should fix
BujSet Jul 2, 2025
f404ad8
Still fixing rebase errors
BujSet Jul 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/scripts/setup-arm-baremetal-tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
# Setup arm example environment (including TOSA tools)
git config --global user.email "[email protected]"
git config --global user.name "Github Executorch"
bash examples/arm/setup.sh --i-agree-to-the-contained-eula
bash examples/arm/setup.sh --i-agree-to-the-contained-eula ${@:-}
39 changes: 39 additions & 0 deletions .github/workflows/build-presets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,45 @@ jobs:
${CONDA_RUN} cmake --preset ${{ matrix.preset }}
${CONDA_RUN} cmake --build cmake-out -j$(( $(sysctl -n hw.ncpu) - 1 ))

zephyr:
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
strategy:
fail-fast: false
matrix:
preset: [zephyr]
Comment on lines +37 to +42
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Am I misunderstanding this, or should this technically have two different presets for ARM builds?

Suggested change
zephyr:
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
strategy:
fail-fast: false
matrix:
preset: [zephyr]
arm:
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
strategy:
fail-fast: false
matrix:
preset: [zephyr, baremetal]

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think preset baremetal is a thing

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can revisit this in the future. I like what @jathu proposed but we need to think a bit more about baremetal builds I guess.

with:
job-name: build
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
runner: linux.2xlarge
docker-image: executorch-ubuntu-22.04-arm-sdk
submodules: recursive
timeout: 90
script: |
set -eux
# The generic Linux job chooses to use base env, not the one setup by the image
CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]")
conda activate "${CONDA_ENV}"

./install_requirements.sh > /dev/null

# Download toolchain
toolchain_url="https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.2/toolchain_linux-x86_64_arm-zephyr-eabi.tar.xz"
toolchain_dir="arm-zephyr-eabi"
curl --output "${toolchain_dir}.tar.xz" -L "${toolchain_url}"

# Verify download
echo "93128be0235cf5cf5f1ee561aa6eac5f ${toolchain_dir}.tar.xz" > arm-zephyr-eabi.md5
md5sum -c --strict arm-zephyr-eabi.md5

# Extract and install to PATH
tar xf "${toolchain_dir}.tar.xz"
rm -f "${toolchain_dir}.tar.xz"
toolchain_bin_path="$(cd ${toolchain_dir}/bin && pwd)"
export PATH=$PATH:${toolchain_bin_path}
Comment on lines +58 to +71
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One of the goals with presets, is that it should work "out of the box" without having to manually do extra steps. If you look at the other examples in the workflow, they are all 3-4 commands.

What can we do to achieve that here? Right now, if I fetch ET and run cmake --preset zephyr, it will fail

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well in CI we will have to download the toolchain separately right? This is similar to setup_macos.sh or setup_linux.sh. I don't expect cmake to download this toolchain for us?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think to support working out of the box, downloading the Arm toolchains would need to included as part of the preset configuration process (maybe the curl, md5sum, and export commands can be moved into the tools/cmake/preset/zephyr.cmake file directly?). I'm a little wary of this, as it seems like a platform specific configuration, see here. Maybe this is part of the reason why there isn't an arm baremetal preset as of yet?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't call setup_macos in this workflow because all the toolchains needed to build for macOS/iOS are already present in macOS.

You need to have the toolchain ready before calling cmake so I don't think we can make it a part of the cmake build process. Perhaps we can abstract this out to a script that can be used be users?

Not a blocker for this PR, we can follow up

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah it should be setup_zephyr.sh that handles the toolchain installation.


# Build Arm Zephyr Preset
cmake --preset ${{ matrix.preset }}
cmake --build cmake-out -j$(( $(nproc) - 1 ))
linux:
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
strategy:
Expand Down
55 changes: 43 additions & 12 deletions .github/workflows/trunk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ jobs:
permissions:
id-token: write
contents: read
strategy:
matrix:
os: [bare_metal, zephyr-preset]
fail-fast: false
with:
runner: linux.2xlarge
docker-image: executorch-ubuntu-22.04-arm-sdk
Expand All @@ -234,35 +238,62 @@ jobs:
CONDA_ENV=$(conda env list --json | jq -r ".envs | .[-1]")
conda activate "${CONDA_ENV}"

cxx_flags="-fno-exceptions -fno-rtti -Wall -Werror -Wno-int-in-bool-context -DET_HAVE_PREAD=0"
setup_script_args=""
if [[ ${{ matrix.os}} == "bare_metal" ]]; then
toolchain_prefix=arm-none-eabi-
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't have to specify --target-toolchain baremetal?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the arm scripts, the default toolchain is set to arm-none-eabi. The intended use is that if there is some other toolchain to use (e.g. zephyr), it can be specified. A future PR could change this so there is no default, and baremetal would be specified to clarify which toolchain was used. I think for now, leaving the baremetal default makes sense based on what is currently well-supported.

threshold="103268" # ~100KiB
toolchain_cmake=examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake
elif [[ ${{ matrix.os}} == "zephyr-preset" ]]; then
setup_script_args="--target-toolchain zephyr"
toolchain_prefix=arm-zephyr-eabi-
threshold="133120" # should be ~125KB, set threshold to 130KB
toolchain_cmake=examples/zephyr/x86_64-linux-arm-zephyr-eabi-gcc.cmake
else
echo "Fail unsupport OS selection ${{ matrix.os }}"
exit 1
fi

source .ci/scripts/utils.sh
install_executorch "--use-pt-pinned-commit"
.ci/scripts/setup-arm-baremetal-tools.sh
.ci/scripts/setup-arm-baremetal-tools.sh ${setup_script_args}
source examples/arm/ethos-u-scratch/setup_path.sh

# User baremetal toolchain
arm-none-eabi-c++ --version
toolchain_cmake=examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake
# User toolchain
${toolchain_prefix}c++ --version

# Setup cmake target to desired toolchain
toolchain_cmake=$(realpath ${toolchain_cmake})

# Build and test size test
bash test/build_size_test.sh "-DCMAKE_TOOLCHAIN_FILE=${toolchain_cmake} -DEXECUTORCH_BUILD_ARM_BAREMETAL=ON"
# Build and run size test
if [[ ${{ matrix.os}} == "bare_metal" ]]; then
bash test/build_size_test.sh "-DCMAKE_TOOLCHAIN_FILE=${toolchain_cmake} -DEXECUTORCH_BUILD_ARM_BAREMETAL=ON"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not in this PR but some day we should have a arm baremetal preset instead of running this script.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense, should I make an issue for it?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah let's create an issue

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created the issue here: #12186, can discuss more about what this feature should look like on that thread.

elif [[ ${{ matrix.os}} == "zephyr-preset" ]]; then
CXXFLAGS=${cxx_flags} cmake --preset zephyr -DCMAKE_BUILD_TYPE=Release -DEXECUTORCH_OPTIMIZE_SIZE=ON -DCMAKE_INSTALL_PREFIX=cmake-out -Bcmake-out .
cmake --build cmake-out -j9 --target install --config Release
CXXFLAGS=${cxx_flags} cmake -DCMAKE_TOOLCHAIN_FILE=${toolchain_cmake} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=cmake-out -Bcmake-out/test test
cmake --build cmake-out/test -j9 --config Release
else
echo "Fail unsupport OS selection ${{ matrix.os }}"
exit 1
fi

elf="cmake-out/test/size_test"

# Dump basic info
ls -al ${elf}
arm-none-eabi-size ${elf}
${toolchain_prefix}size ${elf}

# Dump symbols
# Dump symbol
python .github/scripts/run_nm.py -e ${elf}
python .github/scripts/run_nm.py -e ${elf} -f "executorch" -p "arm-none-eabi-"
python .github/scripts/run_nm.py -e ${elf} -f "executorch_text" -p "arm-none-eabi-"
python .github/scripts/run_nm.py -e ${elf} -f "executorch" -p "${toolchain_prefix}"
python .github/scripts/run_nm.py -e ${elf} -f "executorch_text" -p "${toolchain_prefix}"

# Add basic guard - TODO: refine this!
arm-none-eabi-strip ${elf}
${toolchain_prefix}strip ${elf}
output=$(ls -la ${elf})
arr=($output)
size=${arr[4]}
threshold="103268" # ~100KiB
echo "size: $size, threshold: $threshold"
if [[ "$size" -le "$threshold" ]]; then
echo "Success $size <= $threshold"
Expand Down
11 changes: 11 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,17 @@
"Windows"
]
}
},
{
"name": "zephyr",
"displayName": "Build everything buildable on Zephyr RTOS",
"inherits": [
"common"
],
"cacheVariables": {
"EXECUTORCH_BUILD_PRESET_FILE": "${sourceDir}/tools/cmake/preset/zephyr.cmake",
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/examples/zephyr/x86_64-linux-arm-zephyr-eabi-gcc.cmake"
}
}
]
}
1 change: 1 addition & 0 deletions examples/arm/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ function select_toolchain() {
fi
echo "[main] Info selected ${toolchain_dir} for ${ARCH} - ${OS} platform"
}

function setup_toolchain() {
# Download and install the arm toolchain (default is arm-none-eabi)
# setting --target-toolchain to zephyr sets this to arm-zephyr-eabi
Expand Down
106 changes: 106 additions & 0 deletions examples/zephyr/x86_64-linux-arm-zephyr-eabi-gcc.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
#
# Copyright (c) 2020-2022 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the License); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Copied this file from core_platform/cmake/toolchain/arm-non-eabi-gcc.cmake And
# modified to align better with cs300 platform

set(TARGET_CPU
"cortex-m55"
CACHE STRING "Target CPU"
)
string(TOLOWER ${TARGET_CPU} CMAKE_SYSTEM_PROCESSOR)

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER "arm-zephyr-eabi-gcc")
set(CMAKE_CXX_COMPILER "arm-zephyr-eabi-g++")
set(CMAKE_ASM_COMPILER "arm-zephyr-eabi-gcc")
set(CMAKE_LINKER "arm-zephyr-eabi-ld")

set(CMAKE_EXECUTABLE_SUFFIX ".elf")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

# Select C/C++ version
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

set(GCC_CPU ${CMAKE_SYSTEM_PROCESSOR})
string(REPLACE "cortex-m85" "cortex-m55" GCC_CPU ${GCC_CPU})

# Compile options
add_compile_options(
-mcpu=${GCC_CPU} -mthumb "$<$<CONFIG:DEBUG>:-gdwarf-3>"
"$<$<COMPILE_LANGUAGE:CXX>:-fno-unwind-tables;-fno-rtti;-fno-exceptions>"
-fdata-sections -ffunction-sections
)

# Compile defines
add_compile_definitions("$<$<NOT:$<CONFIG:DEBUG>>:NDEBUG>")

# Link options
add_link_options(-mcpu=${GCC_CPU} -mthumb)

if(SEMIHOSTING)
add_link_options(--specs=rdimon.specs)
else()
add_link_options(--specs=nosys.specs)
endif()

# Set floating point unit
if(CMAKE_SYSTEM_PROCESSOR MATCHES "\\+fp")
set(FLOAT hard)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "\\+nofp")
set(FLOAT soft)
elseif(
CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m33(\\+|$)"
OR CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55(\\+|$)"
OR CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m85(\\+|$)"
)
set(FLOAT hard)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m4(\\+|$)"
OR CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m7(\\+|$)"
)
set(FLOAT hard)
set(FPU_CONFIG "fpv4-sp-d16")
add_compile_options(-mfpu=${FPU_CONFIG})
add_link_options(-mfpu=${FPU_CONFIG})
else()
set(FLOAT soft)
endif()

if(FLOAT)
add_compile_options(-mfloat-abi=${FLOAT})
add_link_options(-mfloat-abi=${FLOAT})
endif()

add_link_options(LINKER:--nmagic,--gc-sections)

# Compilation warnings
add_compile_options(
# -Wall -Wextra -Wcast-align -Wdouble-promotion -Wformat
# -Wmissing-field-initializers -Wnull-dereference -Wredundant-decls -Wshadow
# -Wswitch -Wswitch-default -Wunused -Wno-redundant-decls
-Wno-stringop-overread
-Wno-error=format=
-Wno-error=maybe-uninitialized
-Wno-error=deprecated-declarations
-Wno-error=shift-count-overflow
-Wno-psabi
)
33 changes: 33 additions & 0 deletions tools/cmake/preset/zephyr.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

# 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_BUILD_COREML OFF)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: most, if not all, of these are off by default anyways — so I guess we don't need to manually do it here again

set_overridable_option(EXECUTORCH_ENABLE_EVENT_TRACER OFF)
set_overridable_option(EXECUTORCH_BUILD_KERNELS_CUSTOM OFF)
set_overridable_option(EXECUTORCH_BUILD_KERNELS_CUSTOM_AOT OFF)
set_overridable_option(EXECUTORCH_BUILD_EXTENSION_DATA_LOADER OFF)
set_overridable_option(EXECUTORCH_BUILD_EXTENSION_FLAT_TENSOR OFF)
set_overridable_option(EXECUTORCH_BUILD_EXTENSION_LLM OFF)
set_overridable_option(EXECUTORCH_BUILD_EXTENSION_MODULE OFF)
set_overridable_option(EXECUTORCH_BUILD_EXTENSION_TRAINING OFF)
set_overridable_option(EXECUTORCH_BUILD_EXTENSION_APPLE OFF)
set_overridable_option(EXECUTORCH_BUILD_MPS OFF)
set_overridable_option(EXECUTORCH_BUILD_NEURON OFF)
set_overridable_option(EXECUTORCH_BUILD_OPENVINO OFF)
set_overridable_option(EXECUTORCH_BUILD_PYBIND OFF)
set_overridable_option(EXECUTORCH_BUILD_QNN OFF)
set_overridable_option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED OFF)
set_overridable_option(EXECUTORCH_BUILD_KERNELS_QUANTIZED OFF)
set_overridable_option(EXECUTORCH_BUILD_DEVTOOLS OFF)
set_overridable_option(EXECUTORCH_BUILD_TESTS OFF)
set_overridable_option(EXECUTORCH_BUILD_XNNPACK OFF)
set_overridable_option(EXECUTORCH_BUILD_VULKAN OFF)
set_overridable_option(EXECUTORCH_BUILD_PORTABLE_OPS ON)
set_overridable_option(EXECUTORCH_BUILD_CADENCE OFF)
set_overridable_option(EXECUTORCH_BUILD_PTHREADPOOL OFF)
set_overridable_option(EXECUTORCH_BUILD_CPUINFO OFF)
set_overridable_option(EXECUTORCH_USE_CPP_CODE_COVERAGE OFF)
Loading