Skip to content

Handle custom_ops like any other ET lib in Android and examples/models/lla{m,v}a/CMakeLists.txt #8946

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Mar 7, 2025
16 changes: 16 additions & 0 deletions build/cmake_deps.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,21 @@ deps = [
"executorch_core",
]

# HACK: prevent reduce_util from also showing up in custom_ops. The
# actual medium-term fix is to stop using Buck to drive our CMake
# builds.
[targets.reduce_util]
buck_targets = [
"//kernels/portable/cpu/util:reduce_util",
]
filters = [
".cpp$",
]
deps = [
"executorch",
"executorch_core",
]

[targets.optimized_kernels]
buck_targets = [
"//kernels/optimized:generated_lib",
Expand Down Expand Up @@ -414,6 +429,7 @@ deps = [
"optimized_kernels",
"extension_parallel",
"extension_threadpool",
"reduce_util",
"xnnpack_backend",
]

Expand Down
1 change: 1 addition & 0 deletions build/executorch-config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ set(lib_list
neuron_backend
qnn_executorch_backend
portable_ops_lib
custom_ops
extension_module
extension_module_static
extension_parallel
Expand Down
13 changes: 2 additions & 11 deletions examples/models/llama/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# ~~~
# It should also be cmake-lint clean.
#
cmake_minimum_required(VERSION 3.19)
cmake_minimum_required(VERSION 3.24) # 3.24 is required for WHOLE_ARCHIVE
Copy link
Contributor Author

@swolchok swolchok Mar 5, 2025

Choose a reason for hiding this comment

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

wondering how high we can bump this and if we can raise it globally

Copy link
Contributor Author

Choose a reason for hiding this comment

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

as I said on Discord:

the concern would be if there are projects that would want to take an ExecuTorch dep, but actually need an older CMake version. seems like we can raise it, but should avoid doing so unnecessarily.

so, i'm going to make this change in this PR but not roll it out to the top-level ExecuTorch CMakeLists.txt.

Copy link
Contributor

Choose a reason for hiding this comment

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

is that the only way to achieve whole-archive? I dont know much on the implication of requiring this but I suppose non-trivial number of folks using et may come to use for llama

Copy link
Contributor Author

Choose a reason for hiding this comment

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

we pip install latest cmake anyway. people who follow our directions will get 3.31.

Copy link
Contributor

Choose a reason for hiding this comment

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

It would be good if we can do a codemod to change all CMakeLists.txt to have the same requirement.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

change all CMakeLists.txt to have the same requirement.

@larryliu0820 I wouldn't mind doing this, I just thought it might be beneficial to only increase the requirement for the llama example use cases that need this stuff and leave the core/embedded cases lower. What do you think?

project(llama_runner)

# Duplicating options as root CMakeLists.txt
Expand Down Expand Up @@ -84,14 +84,6 @@ if(CMAKE_TOOLCHAIN_IOS OR ANDROID)
target_link_options_shared_lib(executorch)
endif()

# custom ops library
if(EXECUTORCH_BUILD_KERNELS_CUSTOM)
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../../../extension/llm/custom_ops
${CMAKE_CURRENT_BINARY_DIR}/../../../extension/llm/custom_ops
)
endif()

# llama_runner library
add_subdirectory(runner)

Expand Down Expand Up @@ -119,8 +111,7 @@ target_link_options_shared_lib(quantized_ops_lib)
list(APPEND link_libraries quantized_kernels quantized_ops_lib)

if(EXECUTORCH_BUILD_KERNELS_CUSTOM)
target_link_options_shared_lib(custom_ops)
list(APPEND link_libraries custom_ops)
list(APPEND link_libraries $<LINK_LIBRARY:WHOLE_ARCHIVE,custom_ops>)
endif()

if(EXECUTORCH_BUILD_TORCHAO)
Expand Down
9 changes: 0 additions & 9 deletions examples/models/llava/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,6 @@ if(CMAKE_TOOLCHAIN_IOS OR ANDROID)
target_link_options_shared_lib(executorch)
endif()

# custom ops library
if(EXECUTORCH_BUILD_KERNELS_CUSTOM)
add_subdirectory(
${EXECUTORCH_ROOT}/extension/llm/custom_ops
${CMAKE_CURRENT_BINARY_DIR}/../../../extension/llm/custom_ops
)
endif()

# llava_runner library
add_subdirectory(runner)

Expand Down Expand Up @@ -132,7 +124,6 @@ target_link_options_shared_lib(quantized_ops_lib)
list(APPEND link_libraries quantized_kernels quantized_ops_lib)

if(EXECUTORCH_BUILD_KERNELS_CUSTOM)
target_link_options_shared_lib(custom_ops)
list(APPEND link_libraries custom_ops)
endif()

Expand Down
9 changes: 2 additions & 7 deletions extension/android/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

cmake_minimum_required(VERSION 3.19)
cmake_minimum_required(VERSION 3.24) # 3.24 is required for WHOLE_ARCHIVE

project(executorch_jni)

Expand Down Expand Up @@ -115,12 +115,7 @@ if(TARGET vulkan_backend)
endif()

if(EXECUTORCH_BUILD_KERNELS_CUSTOM)
add_subdirectory(
${EXECUTORCH_ROOT}/extension/llm/custom_ops
${CMAKE_CURRENT_BINARY_DIR}/../../extension/llm/custom_ops
)
list(APPEND link_libraries custom_ops)
target_link_options_shared_lib(custom_ops)
list(APPEND link_libraries $<LINK_LIBRARY:WHOLE_ARCHIVE,custom_ops>)
endif()

if(TARGET pthreadpool)
Expand Down
Loading