From 9e3e2e7bde6916ae5c424727b9aeb751da7b0611 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Sun, 13 Jul 2025 09:47:07 -0700 Subject: [PATCH 01/13] Update [ghstack-poisoned] --- backends/xnnpack/CMakeLists.txt | 3 +- backends/xnnpack/cmake/Dependencies.cmake | 127 ++++++++++++---------- tools/cmake/executorch-config.cmake | 21 ++-- 3 files changed, 80 insertions(+), 71 deletions(-) diff --git a/backends/xnnpack/CMakeLists.txt b/backends/xnnpack/CMakeLists.txt index b6ba211ecb3..c4c5068d197 100644 --- a/backends/xnnpack/CMakeLists.txt +++ b/backends/xnnpack/CMakeLists.txt @@ -92,9 +92,8 @@ target_include_directories( ${EXECUTORCH_ROOT}/third-party/flatbuffers/include ) -set(xnnpack_third_party pthreadpool extension_threadpool cpuinfo) - include(cmake/Dependencies.cmake) +set(xnnpack_third_party XNNPACK pthreadpool extension_threadpool cpuinfo) list(TRANSFORM _xnnpack_backend__srcs PREPEND "${EXECUTORCH_ROOT}/") add_library(xnnpack_backend ${_xnnpack_backend__srcs}) diff --git a/backends/xnnpack/cmake/Dependencies.cmake b/backends/xnnpack/cmake/Dependencies.cmake index ca31a1e45cb..7272cddc30d 100644 --- a/backends/xnnpack/cmake/Dependencies.cmake +++ b/backends/xnnpack/cmake/Dependencies.cmake @@ -10,71 +10,86 @@ set(THIRD_PARTY_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/third-party") # --- XNNPACK -# Setting this global PIC flag for all XNNPACK targets. This is needed for -# Object libraries within XNNPACK which must be PIC to successfully link this -# static libXNNPACK -set(ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG - ${CMAKE_POSITION_INDEPENDENT_CODE} -) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - set(XNNPACK_SOURCE_DIR "${THIRD_PARTY_ROOT}/XNNPACK") set(XNNPACK_INCLUDE_DIR "${XNNPACK_SOURCE_DIR}/include") -set(XNNPACK_LIBRARY_TYPE - "static" - CACHE STRING "" -) -set(XNNPACK_BUILD_BENCHMARKS - OFF - CACHE BOOL "" + +include(ExternalProject) +set(XNNPACK_STATIC_LIB "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/lib/libXNNPACK.a") +set(XNNPACK_MICROKERNELS_STATIC_LIB + "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/lib/libxnnpack-microkernels-prod.a" ) -set(XNNPACK_BUILD_TESTS - OFF - CACHE BOOL "" +ExternalProject_Add( + XNNPACKExternalProject + SOURCE_DIR ${XNNPACK_SOURCE_DIR} + # XXX should we install to CMAKE_INSTALL_PREFIX instead? Review how we do it + # with flatbuffers + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} + INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/XNNPACK + INSTALL_BYPRODUCTS ${XNNPACK_STATIC_LIB} ${XNNPACK_MICROKERNELS_STATIC_LIB} + CMAKE_ARGS + -D + XNNPACK_LIBRARY_TYPE=static + -D + XNNPACK_BUILD_BENCHMARKS=OFF + -D + XNNPACK_BUILD_TESTS=OFF + -D + XNNPACK_ENABLE_AVXVNNI=OFF + # Work around observed failure: + # https://github.com/pytorch/executorch/pull/10362#issuecomment-2906391232 + -D + XNNPACK_ENABLE_AVX512VNNIGFNI=OFF + -D + ENABLE_XNNPACK_WEIGHTS_CACHE=${EXECUTORCH_XNNPACK_ENABLE_WEIGHT_CACHE} + -D + ENABLE_XNNPACK_SHARED_WORKSPACE=${EXECUTORCH_XNNPACK_SHARED_WORKSPACE} + -D + XNNPACK_ENABLE_KLEIDIAI=${EXECUTORCH_XNNPACK_ENABLE_KLEIDIAI} + -D + CMAKE_INSTALL_PREFIX= + -D + XNNPACK_BUILD_ALL_MICROKERNELS=OFF + -D + CMAKE_POSITION_INDEPENDENT_CODE=ON ) -set(XNNPACK_ENABLE_AVXVNNI - OFF - CACHE BOOL "" - ) -# Work around observed failure: https://github.com/pytorch/executorch/pull/10362#issuecomment-2906391232 -set(XNNPACK_ENABLE_AVX512VNNIGFNI - OFF - CACHE BOOL "") -if(EXECUTORCH_XNNPACK_ENABLE_KLEIDI) - set(XNNPACK_ENABLE_KLEIDIAI - ON - CACHE BOOL "" - ) -else() - set(XNNPACK_ENABLE_KLEIDIAI - OFF - CACHE BOOL "" - ) -endif() +# add_subdirectory("${XNNPACK_SOURCE_DIR}") include_directories(SYSTEM +# ${XNNPACK_INCLUDE_DIR}) + +add_library(XNNPACK STATIC IMPORTED GLOBAL) +# TODO: this probably doesn't work on Windows. +set_property(TARGET XNNPACK PROPERTY IMPORTED_LOCATION ${XNNPACK_STATIC_LIB}) +add_dependencies(XNNPACK XNNPACKExternalProject) -set(XNNPACK_BUILD_ALL_MICROKERNELS - OFF - CACHE BOOL "" +add_library(xnnpack-microkernels-prod STATIC IMPORTED GLOBAL) +set_property( + TARGET xnnpack-microkernels-prod PROPERTY IMPORTED_LOCATION + ${XNNPACK_MICROKERNELS_STATIC_LIB} ) -add_subdirectory("${XNNPACK_SOURCE_DIR}") -include_directories(SYSTEM ${XNNPACK_INCLUDE_DIR}) -list(APPEND xnnpack_third_party XNNPACK) -install(TARGETS xnnpack-microkernels-prod - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +add_dependencies(xnnpack-microkernels-prod XNNPACKExternalProject) +set_target_properties( + XNNPACK PROPERTIES INTERFACE_LINK_LIBRARIES xnnpack-microkernels-prod +) + +install(FILES ${XNNPACK_MICROKERNELS_STATIC_LIB} + DESTINATION ${CMAKE_INSTALL_LIBDIR} +) if(EXECUTORCH_XNNPACK_ENABLE_KLEIDI) - install(TARGETS kleidiai - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + add_library(kleidiai SHARED IMPORTED) + find_library( + KLEIDIAI_LIBRARY kleidiai + PATHS "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/kleidiai-source" + ) + if(not KLEIDIAI_LIBRARY) + message(FATAL_ERROR "Can't find KleidiAI") + endif() + install( + TARGETS kleidiai + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) endif() - -# Revert PIC Flag to what it originally was -set(CMAKE_POSITION_INDEPENDENT_CODE - ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} -) diff --git a/tools/cmake/executorch-config.cmake b/tools/cmake/executorch-config.cmake index e73104b0f1e..9095ae12cb9 100644 --- a/tools/cmake/executorch-config.cmake +++ b/tools/cmake/executorch-config.cmake @@ -78,11 +78,6 @@ set(lib_list extension_threadpool extension_training xnnpack_backend - # Start XNNPACK Lib Deps - XNNPACK - xnnpack-microkernels-prod - kleidiai - # End XNNPACK Lib Deps cpuinfo pthreadpool vulkan_backend @@ -150,7 +145,9 @@ if(TARGET coremldelegate) endif() if(TARGET etdump) - set_target_properties(etdump PROPERTIES INTERFACE_LINK_LIBRARIES "flatccrt;executorch") + set_target_properties( + etdump PROPERTIES INTERFACE_LINK_LIBRARIES "flatccrt;executorch" + ) endif() if(TARGET optimized_native_cpu_ops_lib) @@ -174,13 +171,11 @@ if(TARGET extension_threadpool) endif() set(shared_lib_list - # executorch -- size tests fail due to regression if we include this and I'm not sure it's needed. - optimized_native_cpu_ops_lib - portable_ops_lib - quantized_ops_lib - xnnpack_backend - vulkan_backend - quantized_ops_aot_lib) + # executorch -- size tests fail due to regression if we include this and I'm + # not sure it's needed. + optimized_native_cpu_ops_lib portable_ops_lib quantized_ops_lib + xnnpack_backend vulkan_backend quantized_ops_aot_lib +) foreach(lib ${shared_lib_list}) if(TARGET ${lib}) target_link_options_shared_lib(${lib}) From 16f027467ef4a4d54e35f36b6f43e50c825c31cd Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Sun, 13 Jul 2025 09:48:21 -0700 Subject: [PATCH 02/13] forgot to amend [ghstack-poisoned] --- backends/xnnpack/cmake/Dependencies.cmake | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/backends/xnnpack/cmake/Dependencies.cmake b/backends/xnnpack/cmake/Dependencies.cmake index 7272cddc30d..ac36a0e6a73 100644 --- a/backends/xnnpack/cmake/Dependencies.cmake +++ b/backends/xnnpack/cmake/Dependencies.cmake @@ -14,18 +14,16 @@ set(XNNPACK_SOURCE_DIR "${THIRD_PARTY_ROOT}/XNNPACK") set(XNNPACK_INCLUDE_DIR "${XNNPACK_SOURCE_DIR}/include") include(ExternalProject) -set(XNNPACK_STATIC_LIB "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/lib/libXNNPACK.a") +set(XNNPACK_STATIC_LIB "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/libXNNPACK.a") set(XNNPACK_MICROKERNELS_STATIC_LIB - "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/lib/libxnnpack-microkernels-prod.a" + "${CMAKE_CURRENT_BINARY_DIR}/XNNPACK/libxnnpack-microkernels-prod.a" ) ExternalProject_Add( XNNPACKExternalProject SOURCE_DIR ${XNNPACK_SOURCE_DIR} - # XXX should we install to CMAKE_INSTALL_PREFIX instead? Review how we do it - # with flatbuffers - BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} - INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/XNNPACK - INSTALL_BYPRODUCTS ${XNNPACK_STATIC_LIB} ${XNNPACK_MICROKERNELS_STATIC_LIB} + # Not 100% clear on these locations + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/XNNPACK + BUILD_BYPRODUCTS ${XNNPACK_STATIC_LIB} ${XNNPACK_MICROKERNELS_STATIC_LIB} CMAKE_ARGS -D XNNPACK_LIBRARY_TYPE=static From 99ec5a7f1367bfed8cfc1cd6774ddf703f619c1c Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Mon, 14 Jul 2025 11:09:22 -0700 Subject: [PATCH 03/13] Update [ghstack-poisoned] --- CMakeLists.txt | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 83a1db3d7b7..8caaecf9e11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,11 +112,12 @@ set(CMAKE_SKIP_BUILD_RPATH OFF) set(CMAKE_BUILD_WITH_INSTALL_RPATH ON) # Automatically add all linked folders that are NOT in the build directory to # the rpath (per library?) -# TODO: Doesn't work for us right now because we are -# not installing .so's into the correct locations. For example we have -# libcustom_ops_aot_lib.so depending on _portable_lib.so, which was eventually -# put under /executorch/extension/pybindings/ but this rpath is -# not automatically added because at build time it seems `portable_lib` is being +# +# TODO: Doesn't work for us right now because we are not installing .so's into +# the correct locations. For example we have libcustom_ops_aot_lib.so depending +# on _portable_lib.so, which was eventually put under +# /executorch/extension/pybindings/ but this rpath is not +# automatically added because at build time it seems `portable_lib` is being # built under the same directory, so no extra rpath is being added. To properly # fix this we need to install `portable_lib` into the correct path. set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) @@ -321,8 +322,9 @@ if(EXECUTORCH_USE_CPP_CODE_COVERAGE) " -fprofile-instr-generate -fcoverage-mapping" ) else() - message(FATAL_ERROR - "Code coverage for compiler ${CMAKE_CXX_COMPILER_ID} is unsupported" + message( + FATAL_ERROR + "Code coverage for compiler ${CMAKE_CXX_COMPILER_ID} is unsupported" ) endif() endif() @@ -633,8 +635,8 @@ if(EXECUTORCH_BUILD_PYBIND) endif() if(EXECUTORCH_BUILD_XNNPACK) - # need to explicitly specify XNNPACK and xnnpack-microkernels-prod here otherwise - # uses XNNPACK and microkernel-prod symbols from libtorch_cpu + # need to explicitly specify XNNPACK and xnnpack-microkernels-prod here + # otherwise uses XNNPACK and microkernel-prod symbols from libtorch_cpu list(APPEND _dep_libs xnnpack_backend XNNPACK xnnpack-microkernels-prod) endif() From ff3cdb9fc721f93efc6d57d07b654e65c35c0a2f Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Mon, 14 Jul 2025 11:09:26 -0700 Subject: [PATCH 04/13] Update [ghstack-poisoned] --- extension/training/CMakeLists.txt | 53 +++++++++++++++++++------------ 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/extension/training/CMakeLists.txt b/extension/training/CMakeLists.txt index 11f94b39a89..26a5c752d5b 100644 --- a/extension/training/CMakeLists.txt +++ b/extension/training/CMakeLists.txt @@ -25,47 +25,58 @@ target_include_directories( target_include_directories(extension_training PUBLIC ${EXECUTORCH_ROOT}/..) target_compile_options(extension_training PUBLIC ${_common_compile_options}) -target_link_libraries(extension_training executorch_core kernels_util_all_deps - extension_data_loader extension_module_static extension_tensor extension_flat_tensor ) - +target_link_libraries( + extension_training + executorch_core + kernels_util_all_deps + extension_data_loader + extension_module_static + extension_tensor + extension_flat_tensor +) list(TRANSFORM _train_xor__srcs PREPEND "${EXECUTORCH_ROOT}/") add_executable(train_xor ${_train_xor__srcs}) -target_include_directories( - train_xor PUBLIC ${_common_include_directories} -) +target_include_directories(train_xor PUBLIC ${_common_include_directories}) target_link_libraries( -train_xor gflags executorch_core portable_ops_lib extension_tensor - extension_training program_schema + train_xor + gflags + executorch_core + portable_ops_lib + extension_tensor + extension_training + program_schema ) target_compile_options(train_xor PUBLIC ${_common_compile_options}) if(EXECUTORCH_BUILD_PYBIND) # Pybind library. - set(_pybind_training_dep_libs - ${TORCH_PYTHON_LIBRARY} - etdump - executorch - util - torch - extension_training + set(_pybind_training_dep_libs ${TORCH_PYTHON_LIBRARY} etdump executorch util + torch extension_training ) if(EXECUTORCH_BUILD_XNNPACK) - # need to explicitly specify XNNPACK and xnnpack-microkernels-prod - # here otherwise uses XNNPACK and microkernel-prod symbols from libtorch_cpu - list(APPEND _pybind_training_dep_libs xnnpack_backend XNNPACK xnnpack-microkernels-prod) + # need to explicitly specify XNNPACK and xnnpack-microkernels-prod here + # otherwise uses XNNPACK and microkernel-prod symbols from libtorch_cpu + list(APPEND _pybind_training_dep_libs xnnpack_backend XNNPACK + xnnpack-microkernels-prod + ) endif() # pybind training - pybind11_add_module(_training_lib SHARED ${CMAKE_CURRENT_SOURCE_DIR}/pybindings/_training_lib.cpp) + pybind11_add_module( + _training_lib SHARED + ${CMAKE_CURRENT_SOURCE_DIR}/pybindings/_training_lib.cpp + ) target_include_directories(_training_lib PRIVATE ${TORCH_INCLUDE_DIRS}) - target_compile_options(_training_lib PUBLIC -Wno-deprecated-declarations -fPIC -frtti -fexceptions) + target_compile_options( + _training_lib PUBLIC -Wno-deprecated-declarations -fPIC -frtti -fexceptions + ) target_link_libraries(_training_lib PRIVATE ${_pybind_training_dep_libs}) install(TARGETS _training_lib - LIBRARY DESTINATION executorch/extension/training/pybindings + LIBRARY DESTINATION executorch/extension/training/pybindings ) endif() From 08bffac71384e5046a7f0f1ab47c803b1be8ba8e Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Mon, 14 Jul 2025 14:25:44 -0700 Subject: [PATCH 05/13] Update [ghstack-poisoned] --- backends/apple/coreml/CMakeLists.txt | 66 +++++++++++------------- backends/mediatek/CMakeLists.txt | 10 ++-- backends/qualcomm/CMakeLists.txt | 40 +++++++++----- backends/vulkan/CMakeLists.txt | 3 +- configurations/CMakeLists.txt | 4 +- extension/llm/custom_ops/CMakeLists.txt | 13 +++-- extension/module/CMakeLists.txt | 8 ++- kernels/optimized/CMakeLists.txt | 18 ++++--- kernels/portable/CMakeLists.txt | 35 ++++++++----- kernels/portable/cpu/util/CMakeLists.txt | 8 ++- kernels/quantized/CMakeLists.txt | 14 ++--- schema/CMakeLists.txt | 16 +++--- 12 files changed, 133 insertions(+), 102 deletions(-) diff --git a/backends/apple/coreml/CMakeLists.txt b/backends/apple/coreml/CMakeLists.txt index 8d7b89c5a8d..96684a50dce 100644 --- a/backends/apple/coreml/CMakeLists.txt +++ b/backends/apple/coreml/CMakeLists.txt @@ -104,7 +104,9 @@ if(APPLE) endif() add_library(coreml_util ${UTIL_SOURCES}) -target_include_directories(coreml_util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/runtime/util) +target_include_directories( + coreml_util PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/runtime/util +) if(APPLE) target_link_libraries(coreml_util PRIVATE ${FOUNDATION_FRAMEWORK}) endif() @@ -119,21 +121,25 @@ install( # CoreML inmemoryfs -set( - INMEMORYFS_SOURCES - runtime/inmemoryfs/inmemory_filesystem.cpp - runtime/inmemoryfs/memory_buffer.cpp - runtime/inmemoryfs/memory_stream.cpp - runtime/inmemoryfs/reversed_memory_stream.cpp +set(INMEMORYFS_SOURCES + runtime/inmemoryfs/inmemory_filesystem.cpp + runtime/inmemoryfs/memory_buffer.cpp runtime/inmemoryfs/memory_stream.cpp + runtime/inmemoryfs/reversed_memory_stream.cpp ) if(APPLE) - list(APPEND INMEMORYFS_SOURCES runtime/inmemoryfs/inmemory_filesystem_utils.mm) + list(APPEND INMEMORYFS_SOURCES + runtime/inmemoryfs/inmemory_filesystem_utils.mm + ) endif() add_library(coreml_inmemoryfs ${INMEMORYFS_SOURCES}) -target_include_directories(coreml_inmemoryfs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/runtime/inmemoryfs) +target_include_directories( + coreml_inmemoryfs PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/runtime/inmemoryfs +) if(APPLE) - target_link_libraries(coreml_inmemoryfs PRIVATE coreml_util ${FOUNDATION_FRAMEWORK}) + target_link_libraries( + coreml_inmemoryfs PRIVATE coreml_util ${FOUNDATION_FRAMEWORK} + ) endif() target_compile_options(coreml_inmemoryfs PUBLIC -fPIC) @@ -148,17 +154,12 @@ install( if(EXECUTORCH_BUILD_PYBIND) pybind11_add_module( - executorchcoreml - SHARED - runtime/inmemoryfs/inmemory_filesystem_py.cpp - runtime/inmemoryfs/inmemory_filesystem_utils.cpp + executorchcoreml SHARED runtime/inmemoryfs/inmemory_filesystem_py.cpp + runtime/inmemoryfs/inmemory_filesystem_utils.cpp ) target_link_libraries( - executorchcoreml - PRIVATE - coreml_util - coreml_inmemoryfs - nlohmann_json::nlohmann_json + executorchcoreml PRIVATE coreml_util coreml_inmemoryfs + nlohmann_json::nlohmann_json ) target_compile_options(executorchcoreml PUBLIC -fPIC) endif() @@ -179,8 +180,12 @@ if(APPLE) coremldelegate PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/runtime/delegate ) target_include_directories(coremldelegate PRIVATE ${PROJECT_SOURCE_DIR}/..) - target_include_directories(coremldelegate PRIVATE ${PROJECT_SOURCE_DIR}/runtime/core/portable_type/c10) - target_compile_definitions(coremldelegate PRIVATE C10_USING_CUSTOM_GENERATED_MACROS) + target_include_directories( + coremldelegate PRIVATE ${PROJECT_SOURCE_DIR}/runtime/core/portable_type/c10 + ) + target_compile_definitions( + coremldelegate PRIVATE C10_USING_CUSTOM_GENERATED_MACROS + ) if(EXECUTORCH_BUILD_DEVTOOLS) target_sources(coremldelegate PRIVATE ${SDK_SOURCES} ${PROTOBUF_SOURCES}) @@ -200,13 +205,9 @@ if(APPLE) target_link_libraries( coremldelegate - PUBLIC coreml_util - coreml_inmemoryfs - PRIVATE executorch_core - ${ACCELERATE_FRAMEWORK} - ${COREML_FRAMEWORK} - ${FOUNDATION_FRAMEWORK} - ${SQLITE_LIBRARY} + PUBLIC coreml_util coreml_inmemoryfs + PRIVATE executorch_core ${ACCELERATE_FRAMEWORK} ${COREML_FRAMEWORK} + ${FOUNDATION_FRAMEWORK} ${SQLITE_LIBRARY} ) target_link_options_shared_lib(coremldelegate) @@ -218,13 +219,8 @@ if(APPLE) endif() target_compile_options( - coremldelegate - PRIVATE - -fobjc-arc - -fno-exceptions - -x objective-c++ - -Wno-null-character - -Wno-receiver-expr + coremldelegate PRIVATE -fobjc-arc -fno-exceptions -x objective-c++ + -Wno-null-character -Wno-receiver-expr ) if(EXECUTORCH_BUILD_DEVTOOLS) diff --git a/backends/mediatek/CMakeLists.txt b/backends/mediatek/CMakeLists.txt index e6c68616445..128faa70cc6 100644 --- a/backends/mediatek/CMakeLists.txt +++ b/backends/mediatek/CMakeLists.txt @@ -24,13 +24,9 @@ include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/runtime/include) # targets add_library(neuron_backend SHARED) target_compile_options(neuron_backend PRIVATE "-frtti" "-fexceptions") -target_link_libraries(neuron_backend - PRIVATE - executorch_core - portable_ops_lib - portable_kernels - android - log +target_link_libraries( + neuron_backend PRIVATE executorch_core portable_ops_lib portable_kernels + android log ) target_sources( neuron_backend diff --git a/backends/qualcomm/CMakeLists.txt b/backends/qualcomm/CMakeLists.txt index 9f1be61de2b..9f353a50782 100644 --- a/backends/qualcomm/CMakeLists.txt +++ b/backends/qualcomm/CMakeLists.txt @@ -69,15 +69,15 @@ if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") endif() include_directories( - BEFORE ${_common_include_directories} ${QNN_SDK_ROOT}/include/QNN + BEFORE + ${_common_include_directories} + ${QNN_SDK_ROOT}/include/QNN ${QNN_SDK_ROOT}/share/QNN/converter/jni ${EXECUTORCH_SOURCE_DIR}/third-party/flatbuffers/include ${EXECUTORCH_SOURCE_DIR}/runtime/core/portable_type/c10 ) -set(_qnn_schema__srcs - backends/qualcomm/serialization/qc_compiler_spec.fbs -) +set(_qnn_schema__srcs backends/qualcomm/serialization/qc_compiler_spec.fbs) set(_qnn_schema__include_dir "${CMAKE_BINARY_DIR}/schema/include") # Paths to headers generated from the .fbs files. set(_qnn_schema__outputs) @@ -145,22 +145,24 @@ add_library(utils STATIC) target_link_libraries(qcir_utils PRIVATE qcir) target_link_libraries(wrappers PRIVATE qnn_executorch_logging) target_link_libraries( - qnn_implementation PRIVATE qnn_function_interface qnn_executorch_logging ${CMAKE_DL_LIBS} + qnn_implementation PRIVATE qnn_function_interface qnn_executorch_logging + ${CMAKE_DL_LIBS} ) target_link_libraries( - qnn_sys_implementation PRIVATE qnn_sys_function_interface qnn_executorch_logging ${CMAKE_DL_LIBS} + qnn_sys_implementation PRIVATE qnn_sys_function_interface + qnn_executorch_logging ${CMAKE_DL_LIBS} ) target_link_libraries(qnn_executorch_logging PRIVATE qnn_schema) target_link_libraries(qnn_profiler PRIVATE qnn_executorch_logging) target_link_libraries(qnn_logger PRIVATE qnn_implementation ${android_log}) -target_link_libraries(qnn_backend PRIVATE qnn_implementation qnn_logger qnn_op_package_manager) -target_link_libraries(qnn_custom_protocol PRIVATE qnn_logger) target_link_libraries( - qnn_device PRIVATE qnn_executorch_logging qnn_implementation qnn_logger + qnn_backend PRIVATE qnn_implementation qnn_logger qnn_op_package_manager ) +target_link_libraries(qnn_custom_protocol PRIVATE qnn_logger) target_link_libraries( - qnn_backend_cache PRIVATE qnn_sys_implementation + qnn_device PRIVATE qnn_executorch_logging qnn_implementation qnn_logger ) +target_link_libraries(qnn_backend_cache PRIVATE qnn_sys_implementation) target_link_libraries( qnn_context PRIVATE qnn_implementation qnn_logger qnn_backend qnn_device qnn_backend_cache @@ -174,14 +176,24 @@ target_link_libraries( ) target_link_libraries( - qnn_factory PRIVATE qnn_schema qnn_backend qnn_device qnn_context qnn_graph - qnn_mem_manager qnn_custom_protocol + qnn_factory + PRIVATE qnn_schema + qnn_backend + qnn_device + qnn_context + qnn_graph + qnn_mem_manager + qnn_custom_protocol ) -target_link_libraries(qnn_dlc_manager PRIVATE qnn_factory qnn_backend qnn_device qnn_context qnn_graph qnn_mem_manager) +target_link_libraries( + qnn_dlc_manager PRIVATE qnn_factory qnn_backend qnn_device qnn_context + qnn_graph qnn_mem_manager +) target_link_libraries( - qnn_manager PRIVATE qnn_factory wrappers qnn_schema utils shared_buffer qnn_dlc_manager + qnn_manager PRIVATE qnn_factory wrappers qnn_schema utils shared_buffer + qnn_dlc_manager ) target_link_libraries( qnn_executorch_backend PRIVATE qnn_executorch_header qnn_schema qnn_manager diff --git a/backends/vulkan/CMakeLists.txt b/backends/vulkan/CMakeLists.txt index db7c3694f28..e4fd991858e 100644 --- a/backends/vulkan/CMakeLists.txt +++ b/backends/vulkan/CMakeLists.txt @@ -82,7 +82,8 @@ add_custom_command( OUTPUT ${GENERATED_HEADER} COMMAND flatc --cpp --cpp-std c++11 --scoped-enums -o - "${SCHEMA_INCLUDE_DIR}/executorch/backends/vulkan/serialization/" ${_vulkan_schema__srcs} + "${SCHEMA_INCLUDE_DIR}/executorch/backends/vulkan/serialization/" + ${_vulkan_schema__srcs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} DEPENDS flatc COMMENT "Generating vulkan_schema headers" diff --git a/configurations/CMakeLists.txt b/configurations/CMakeLists.txt index c039d1a8e05..dfb24d27f94 100644 --- a/configurations/CMakeLists.txt +++ b/configurations/CMakeLists.txt @@ -44,7 +44,9 @@ if(EXECUTORCH_BUILD_KERNELS_OPTIMIZED) # optimized_native_cpu_ops_lib: Register optimized op kernels into the runtime if(TARGET optimized_portable_kernels) - set(_optimized_native_cpu_ops_lib_portable_kernels_lib optimized_portable_kernels) + set(_optimized_native_cpu_ops_lib_portable_kernels_lib + optimized_portable_kernels + ) else() set(_optimized_native_cpu_ops_lib_portable_kernels_lib portable_kernels) endif() diff --git a/extension/llm/custom_ops/CMakeLists.txt b/extension/llm/custom_ops/CMakeLists.txt index 6f8ac245182..20890794857 100644 --- a/extension/llm/custom_ops/CMakeLists.txt +++ b/extension/llm/custom_ops/CMakeLists.txt @@ -78,9 +78,7 @@ target_include_directories( ) target_link_libraries(custom_ops PUBLIC ${custom_ops_libs} executorch_core) -target_compile_options( - custom_ops PUBLIC ${_common_compile_options} -) +target_compile_options(custom_ops PUBLIC ${_common_compile_options}) install(TARGETS custom_ops DESTINATION lib) @@ -117,7 +115,9 @@ if(EXECUTORCH_BUILD_KERNELS_LLM_AOT) else() # If no portable_lib, custom_ops_aot_lib still gives the ability to use the # ops in PyTorch - target_link_libraries(custom_ops_aot_lib PUBLIC executorch_core kernels_util_all_deps) + target_link_libraries( + custom_ops_aot_lib PUBLIC executorch_core kernels_util_all_deps + ) endif() target_link_libraries( @@ -130,9 +130,8 @@ if(EXECUTORCH_BUILD_KERNELS_LLM_AOT) target_link_libraries(custom_ops_aot_lib PUBLIC pthreadpool cpuinfo) endif() target_compile_options( - custom_ops_aot_lib - PUBLIC -Wno-deprecated-declarations -fPIC -frtti -fexceptions - ${_common_compile_options} + custom_ops_aot_lib PUBLIC -Wno-deprecated-declarations -fPIC -frtti + -fexceptions ${_common_compile_options} ) install(TARGETS custom_ops_aot_lib diff --git a/extension/module/CMakeLists.txt b/extension/module/CMakeLists.txt index abf95f866f0..cd22f1ccfc2 100644 --- a/extension/module/CMakeLists.txt +++ b/extension/module/CMakeLists.txt @@ -27,7 +27,10 @@ if(CMAKE_TOOLCHAIN_IOS else() add_library(extension_module SHARED ${_extension_module__srcs}) endif() -target_link_libraries(extension_module PRIVATE executorch_core extension_data_loader extension_flat_tensor) +target_link_libraries( + extension_module PRIVATE executorch_core extension_data_loader + extension_flat_tensor +) target_include_directories(extension_module PUBLIC ${EXECUTORCH_ROOT}/..) target_compile_options( extension_module PUBLIC -Wno-deprecated-declarations -fPIC @@ -37,7 +40,8 @@ target_compile_options( # after cleaning up CMake targets. add_library(extension_module_static STATIC ${_extension_module__srcs}) target_link_libraries( - extension_module_static PRIVATE executorch_core extension_data_loader extension_flat_tensor + extension_module_static PRIVATE executorch_core extension_data_loader + extension_flat_tensor ) target_include_directories(extension_module_static PUBLIC ${EXECUTORCH_ROOT}/..) target_compile_options( diff --git a/kernels/optimized/CMakeLists.txt b/kernels/optimized/CMakeLists.txt index 8dfc9e0f734..9f9094657b0 100644 --- a/kernels/optimized/CMakeLists.txt +++ b/kernels/optimized/CMakeLists.txt @@ -52,24 +52,30 @@ gen_selected_ops(LIB_NAME "optimized_ops_lib" OPS_SCHEMA_YAML "${_yaml}") generate_bindings_for_kernels( LIB_NAME "optimized_ops_lib" FUNCTIONS_YAML - ${CMAKE_CURRENT_SOURCE_DIR}/optimized.yaml - ADD_EXCEPTION_BOUNDARY + ${CMAKE_CURRENT_SOURCE_DIR}/optimized.yaml ADD_EXCEPTION_BOUNDARY ) message("Generated files ${gen_command_sources}") list(TRANSFORM _optimized_kernels__srcs PREPEND "${EXECUTORCH_ROOT}/") add_library(optimized_kernels ${_optimized_kernels__srcs}) -target_include_directories(optimized_kernels PRIVATE ${TORCH_INCLUDE_DIRS} "${EXECUTORCH_ROOT}/third-party/pocketfft") -target_compile_definitions(optimized_kernels PRIVATE "ET_USE_PYTORCH_HEADERS=ET_HAS_EXCEPTIONS") +target_include_directories( + optimized_kernels PRIVATE ${TORCH_INCLUDE_DIRS} + "${EXECUTORCH_ROOT}/third-party/pocketfft" +) +target_compile_definitions( + optimized_kernels PRIVATE "ET_USE_PYTORCH_HEADERS=ET_HAS_EXCEPTIONS" +) target_link_libraries( - optimized_kernels PUBLIC executorch_core cpublas extension_threadpool kernels_util_all_deps + optimized_kernels PUBLIC executorch_core cpublas extension_threadpool + kernels_util_all_deps ) target_compile_options(optimized_kernels PUBLIC ${_common_compile_options}) # Build a library for _optimized_kernels_srcs # # optimized_ops_lib: Register optimized ops kernels into Executorch runtime gen_operators_lib( - LIB_NAME "optimized_ops_lib" KERNEL_LIBS optimized_kernels DEPS executorch_core + LIB_NAME "optimized_ops_lib" KERNEL_LIBS optimized_kernels DEPS + executorch_core ) install( diff --git a/kernels/portable/CMakeLists.txt b/kernels/portable/CMakeLists.txt index 15aaece750e..b729d56993e 100644 --- a/kernels/portable/CMakeLists.txt +++ b/kernels/portable/CMakeLists.txt @@ -48,7 +48,9 @@ message("Generated files ${gen_command_sources}") # Focused on portability and understandability rather than speed. # add_library(portable_kernels ${_portable_kernels__srcs}) -target_link_libraries(portable_kernels PRIVATE executorch_core kernels_util_all_deps) +target_link_libraries( + portable_kernels PRIVATE executorch_core kernels_util_all_deps +) target_compile_options(portable_kernels PUBLIC ${_common_compile_options}) # Build a library for _portable_kernels__srcs @@ -59,26 +61,35 @@ gen_operators_lib( LIB_NAME "portable_ops_lib" KERNEL_LIBS portable_kernels DEPS executorch_core ) -# Portable kernels support optional parallelization (and, in the -# future, perhaps other performance features). If support is present, -# produce an optimized version. +# Portable kernels support optional parallelization (and, in the future, perhaps +# other performance features). If support is present, produce an optimized +# version. if(EXECUTORCH_BUILD_PTHREADPOOL AND EXECUTORCH_BUILD_KERNELS_OPTIMIZED) add_library(optimized_portable_kernels ${_portable_kernels__srcs}) target_link_libraries(optimized_portable_kernels PRIVATE executorch_core) target_link_libraries(optimized_portable_kernels PUBLIC extension_threadpool) - target_compile_options(optimized_portable_kernels PUBLIC ${_common_compile_options}) - target_include_directories(optimized_portable_kernels PRIVATE ${TORCH_INCLUDE_DIRS}) - target_compile_definitions(optimized_portable_kernels PRIVATE "ET_USE_PYTORCH_HEADERS=ET_HAS_EXCEPTIONS") - gen_selected_ops(LIB_NAME "optimized_portable_ops_lib" OPS_SCHEMA_YAML "${_yaml}") + target_compile_options( + optimized_portable_kernels PUBLIC ${_common_compile_options} + ) + target_include_directories( + optimized_portable_kernels PRIVATE ${TORCH_INCLUDE_DIRS} + ) + target_compile_definitions( + optimized_portable_kernels + PRIVATE "ET_USE_PYTORCH_HEADERS=ET_HAS_EXCEPTIONS" + ) + gen_selected_ops( + LIB_NAME "optimized_portable_ops_lib" OPS_SCHEMA_YAML "${_yaml}" + ) generate_bindings_for_kernels( LIB_NAME "optimized_portable_ops_lib" FUNCTIONS_YAML "${_yaml}" ) gen_operators_lib( - LIB_NAME "optimized_portable_ops_lib" KERNEL_LIBS optimized_portable_kernels DEPS executorch_core + LIB_NAME "optimized_portable_ops_lib" KERNEL_LIBS + optimized_portable_kernels DEPS executorch_core ) - install( - TARGETS optimized_portable_kernels optimized_portable_ops_lib - DESTINATION lib + install(TARGETS optimized_portable_kernels optimized_portable_ops_lib + DESTINATION lib ) endif() diff --git a/kernels/portable/cpu/util/CMakeLists.txt b/kernels/portable/cpu/util/CMakeLists.txt index 8a2da87936d..19d33cf84d9 100644 --- a/kernels/portable/cpu/util/CMakeLists.txt +++ b/kernels/portable/cpu/util/CMakeLists.txt @@ -25,6 +25,10 @@ set(_common_compile_options -Wno-deprecated-declarations) add_library(kernels_util_all_deps ${_kernels_util_all_deps__srcs}) target_link_libraries(kernels_util_all_deps PRIVATE executorch_core) -target_include_directories(kernels_util_all_deps PUBLIC ${_common_include_directories}) -target_compile_definitions(kernels_util_all_deps PUBLIC C10_USING_CUSTOM_GENERATED_MACROS) +target_include_directories( + kernels_util_all_deps PUBLIC ${_common_include_directories} +) +target_compile_definitions( + kernels_util_all_deps PUBLIC C10_USING_CUSTOM_GENERATED_MACROS +) target_compile_options(kernels_util_all_deps PUBLIC ${_common_compile_options}) diff --git a/kernels/quantized/CMakeLists.txt b/kernels/quantized/CMakeLists.txt index e5d1a94e068..ddbbc1a10b8 100644 --- a/kernels/quantized/CMakeLists.txt +++ b/kernels/quantized/CMakeLists.txt @@ -88,11 +88,8 @@ if(NOT CMAKE_GENERATOR STREQUAL "Xcode" if(TARGET portable_lib) add_library(quantized_pybind_kernels_lib ${_quantized_kernels__srcs}) target_link_libraries( - quantized_pybind_kernels_lib - PRIVATE - portable_lib - executorch_core - kernels_util_all_deps + quantized_pybind_kernels_lib PRIVATE portable_lib executorch_core + kernels_util_all_deps ) target_compile_options( quantized_pybind_kernels_lib PUBLIC ${_common_compile_options} @@ -140,13 +137,16 @@ if(NOT CMAKE_GENERATOR STREQUAL "Xcode" endif() add_library(quantized_kernels ${_quantized_kernels__srcs}) -target_link_libraries(quantized_kernels PRIVATE executorch_core kernels_util_all_deps) +target_link_libraries( + quantized_kernels PRIVATE executorch_core kernels_util_all_deps +) target_compile_options(quantized_kernels PUBLIC ${_common_compile_options}) # Build a library for _quantized_kernels_srcs # # quantized_ops_lib: Register quantized ops kernels into Executorch runtime gen_operators_lib( - LIB_NAME "quantized_ops_lib" KERNEL_LIBS quantized_kernels DEPS executorch_core + LIB_NAME "quantized_ops_lib" KERNEL_LIBS quantized_kernels DEPS + executorch_core ) install( diff --git a/schema/CMakeLists.txt b/schema/CMakeLists.txt index f5bb3ff3ca7..e161f6b983c 100644 --- a/schema/CMakeLists.txt +++ b/schema/CMakeLists.txt @@ -11,7 +11,9 @@ # The include directory that will contain the generated schema headers. set(_program_schema__include_dir "${CMAKE_BINARY_DIR}/schema/include") -set(_program_schema__output_dir "${_program_schema__include_dir}/executorch/schema") +set(_program_schema__output_dir + "${_program_schema__include_dir}/executorch/schema" +) # Source root directory for executorch. if(NOT EXECUTORCH_ROOT) set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/..) @@ -21,17 +23,14 @@ function(generate_program_schema _schema_srcs _schema_name) set(_schema_outputs) foreach(fbs_file ${_schema_srcs}) string(REGEX REPLACE "[.]fbs$" "_generated.h" generated "${fbs_file}") - list(APPEND _schema_outputs - "${_program_schema__output_dir}/${generated}" - ) + list(APPEND _schema_outputs "${_program_schema__output_dir}/${generated}") endforeach() # Generate the headers from the .fbs files. add_custom_command( OUTPUT ${_schema_outputs} - COMMAND - flatc --cpp --cpp-std c++11 --gen-mutable --scoped-enums -o - "${_program_schema__output_dir}" ${_schema_srcs} + COMMAND flatc --cpp --cpp-std c++11 --gen-mutable --scoped-enums -o + "${_program_schema__output_dir}" ${_schema_srcs} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS flatc ${_schema_srcs} COMMENT "Generating ${_schema_name} headers" @@ -45,7 +44,8 @@ function(generate_program_schema _schema_srcs _schema_name) # and some users need an alignment larger than the default, which is typically # 32. target_compile_definitions( - ${_schema_name} INTERFACE FLATBUFFERS_MAX_ALIGNMENT=${EXECUTORCH_FLATBUFFERS_MAX_ALIGNMENT} + ${_schema_name} + INTERFACE FLATBUFFERS_MAX_ALIGNMENT=${EXECUTORCH_FLATBUFFERS_MAX_ALIGNMENT} ) target_include_directories( From dff96c8c1ee21b41f337fbd430bbaa1bafc57c74 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Mon, 14 Jul 2025 16:49:21 -0700 Subject: [PATCH 06/13] Update [ghstack-poisoned] --- tools/cmake/Utils.cmake | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/tools/cmake/Utils.cmake b/tools/cmake/Utils.cmake index 9fbab17728a..732f5ddd1e7 100644 --- a/tools/cmake/Utils.cmake +++ b/tools/cmake/Utils.cmake @@ -100,8 +100,8 @@ function(extract_sources sources_file) execute_process( COMMAND ${PYTHON_EXECUTABLE} ${executorch_root}/tools/cmake/extract_sources.py - --config=${executorch_root}/tools/cmake/cmake_deps.toml --out=${sources_file} - --buck2=${BUCK2} ${target_platforms_arg} + --config=${executorch_root}/tools/cmake/cmake_deps.toml + --out=${sources_file} --buck2=${BUCK2} ${target_platforms_arg} OUTPUT_VARIABLE gen_srcs_output ERROR_VARIABLE gen_srcs_error RESULT_VARIABLE gen_srcs_exit_code @@ -203,8 +203,8 @@ function(resolve_python_executable) ) elseif(DEFINED ENV{VIRTUAL_ENV}) set(PYTHON_EXECUTABLE - $ENV{VIRTUAL_ENV}/bin/python3 - PARENT_SCOPE + $ENV{VIRTUAL_ENV}/bin/python3 + PARENT_SCOPE ) else() set(PYTHON_EXECUTABLE @@ -217,29 +217,29 @@ endfunction() # find_package(Torch CONFIG REQUIRED) replacement for targets that have a # header-only Torch dependency. # -# Unlike find_package(Torch ...), this will only set -# TORCH_INCLUDE_DIRS in the parent scope. In particular, it will NOT -# set any of the following: -# - TORCH_FOUND -# - TORCH_LIBRARY -# - TORCH_CXX_FLAGS +# Unlike find_package(Torch ...), this will only set TORCH_INCLUDE_DIRS in the +# parent scope. In particular, it will NOT set any of the following: - +# TORCH_FOUND - TORCH_LIBRARY - TORCH_CXX_FLAGS function(find_package_torch_headers) # We implement this way rather than using find_package so that - # cross-compilation can still use the host's installed copy of - # torch, since the headers should be fine. + # cross-compilation can still use the host's installed copy of torch, since + # the headers should be fine. get_torch_base_path(TORCH_BASE_PATH) - set(TORCH_INCLUDE_DIRS "${TORCH_BASE_PATH}/include;${TORCH_BASE_PATH}/include/torch/csrc/api/include" PARENT_SCOPE) + set(TORCH_INCLUDE_DIRS + "${TORCH_BASE_PATH}/include;${TORCH_BASE_PATH}/include/torch/csrc/api/include" + PARENT_SCOPE + ) endfunction() -# Return the base path to the installed Torch Python library in -# outVar. +# Return the base path to the installed Torch Python library in outVar. function(get_torch_base_path outVar) if(NOT PYTHON_EXECUTABLE) resolve_python_executable() endif() execute_process( - COMMAND "${PYTHON_EXECUTABLE}" -c - "import importlib.util; print(importlib.util.find_spec('torch').submodule_search_locations[0])" + COMMAND + "${PYTHON_EXECUTABLE}" -c + "import importlib.util; print(importlib.util.find_spec('torch').submodule_search_locations[0])" OUTPUT_VARIABLE _tmp_torch_path ERROR_VARIABLE _tmp_torch_path_error RESULT_VARIABLE _tmp_torch_path_result COMMAND_ECHO STDERR @@ -252,7 +252,10 @@ function(get_torch_base_path outVar) message("Output:\n${_tmp_torch_path}") message(FATAL_ERROR "Error:\n${_tmp_torch_path_error}") endif() - set(${outVar} ${_tmp_torch_path} PARENT_SCOPE) + set(${outVar} + ${_tmp_torch_path} + PARENT_SCOPE + ) endfunction() # Add the Torch CMake configuration to CMAKE_PREFIX_PATH so that find_package From 35d8319e582179e81abd6b87cbbc5d240d4a2781 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Mon, 14 Jul 2025 16:49:23 -0700 Subject: [PATCH 07/13] Update [ghstack-poisoned] --- CMakeLists.txt | 63 +++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b19bfac61b1..7af62be9565 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,26 +220,8 @@ endif() if(EXECUTORCH_BUILD_PTHREADPOOL) # --- pthreadpool - set(ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG - ${CMAKE_POSITION_INDEPENDENT_CODE} - ) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) - set(PTHREADPOOL_SOURCE_DIR "backends/xnnpack/third-party/pthreadpool") - set(PTHREADPOOL_BUILD_TESTS - OFF - CACHE BOOL "" - ) - set(PTHREADPOOL_BUILD_BENCHMARKS - OFF - CACHE BOOL "" - ) - set(PTHREADPOOL_LIBRARY_TYPE - "static" - CACHE STRING "" - ) - set(PTHREADPOOL_ALLOW_DEPRECATED_API - ON - CACHE BOOL "" + set(PTHREADPOOL_SOURCE_DIR + "${CMAKE_CURRENT_LIST_DIR}/backends/xnnpack/third-party/pthreadpool" ) if(APPLE) set(PTHREADPOOL_SYNC_PRIMITIVE @@ -247,10 +229,40 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) CACHE STRING "" ) endif() - add_subdirectory("${PTHREADPOOL_SOURCE_DIR}") - set(CMAKE_POSITION_INDEPENDENT_CODE - ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} + include(ExternalProject) + set(PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/pthreadpool") + set(PTHREADPOOL_LIBRARY + "${PTHREADPOOL_BINARY_DIR}/install/lib/libpthreadpool.a" + ) + get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS) + ExternalProject_Add( + pthreadpoolExternalProject + SOURCE_DIR "${PTHREADPOOL_SOURCE_DIR}" + BINARY_DIR "${PTHREADPOOL_BINARY_DIR}" + INSTALL_DIR "${PTHREADPOOL_BINARY_DIR}/install" + BUILD_BYPRODUCTS "${PTHREADPOOL_LIBRARY}" + CMAKE_ARGS ${PTHREADPOOL_EXTRA_CMAKE_ARGS} + -D + PTHREADPOOL_BUILD_TESTS=OFF + -D + PTHREADPOOL_BUILD_BENCHMARKS=OFF + -D + PTHREADPOOL_LIBRARY_TYPE=static + -D + PTHREADPOOL_ALLOW_DEPRECATED_API=ON + -D + PTHREADPOOL_SYNC_PRIMITVE=${PTHREADPOOL_SYNC_PRIMITIVE} + -D + CMAKE_POSITION_INDEPENDENT_CODE=ON + -D + CMAKE_INSTALL_PREFIX= ) + add_library(pthreadpool STATIC IMPORTED) + set_property( + TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}" + ) + add_dependencies(pthreadpool pthreadpoolExternalProject) + install(FILES ${PTHREADPOOL_LIBRARY} DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() # TODO(dbort): Fix these warnings and remove this flag. @@ -737,7 +749,10 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) endif() set(CMAKE_EXECUTABLE_SUFFIX ".html") - target_link_options(executor_runner PUBLIC -sALLOW_MEMORY_GROWTH --embed-file "${WASM_MODEL_DIR}@/") + target_link_options( + executor_runner PUBLIC -sALLOW_MEMORY_GROWTH --embed-file + "${WASM_MODEL_DIR}@/" + ) endif() endif() From a31187e6e31ba38043032e823ad89d036826cadc Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Tue, 15 Jul 2025 11:18:57 -0700 Subject: [PATCH 08/13] Update [ghstack-poisoned] --- .github/workflows/build-wheels-linux.yml | 2 ++ .github/workflows/build-wheels-macos.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/build-wheels-linux.yml b/.github/workflows/build-wheels-linux.yml index 4c08968f3d6..8509ba52cb9 100644 --- a/.github/workflows/build-wheels-linux.yml +++ b/.github/workflows/build-wheels-linux.yml @@ -9,6 +9,8 @@ on: - examples/**/* - pyproject.toml - setup.py + tags: + - ciflow/binaries/* push: branches: - nightly diff --git a/.github/workflows/build-wheels-macos.yml b/.github/workflows/build-wheels-macos.yml index 3a394cff64b..055543adae4 100644 --- a/.github/workflows/build-wheels-macos.yml +++ b/.github/workflows/build-wheels-macos.yml @@ -9,6 +9,8 @@ on: - examples/**/* - pyproject.toml - setup.py + tags: + - ciflow/binaries/* push: branches: - nightly From 29d3999c59d1c09550de70e6f1fc08afcef14bf7 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Tue, 15 Jul 2025 11:44:16 -0700 Subject: [PATCH 09/13] Update [ghstack-poisoned] --- CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ca4cf4fe84..d244c2007df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -230,9 +230,12 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) ) endif() include(ExternalProject) + include(GNUInstallDirs) set(PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/pthreadpool") set(PTHREADPOOL_INSTALL_DIR "${PTHREADPOOL_BINARY_DIR}/install") - set(PTHREADPOOL_LIBRARY "${PTHREADPOOL_INSTALL_DIR}/lib/libpthreadpool.a") + set(PTHREADPOOL_LIBRARY + "${PTHREADPOOL_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libpthreadpool.a" + ) get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS) ExternalProject_Add( pthreadpoolExternalProject From 7e4040ad287252aa37b78e97550cb1f5261fc833 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Tue, 15 Jul 2025 13:43:18 -0700 Subject: [PATCH 10/13] Update [ghstack-poisoned] --- CMakeLists.txt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d244c2007df..1954363b165 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -223,12 +223,6 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) set(PTHREADPOOL_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/backends/xnnpack/third-party/pthreadpool" ) - if(APPLE) - set(PTHREADPOOL_SYNC_PRIMITIVE - "condvar" - CACHE STRING "" - ) - endif() include(ExternalProject) include(GNUInstallDirs) set(PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/pthreadpool") @@ -237,6 +231,11 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) "${PTHREADPOOL_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libpthreadpool.a" ) get_extra_cmake_args_for_external_project(PTHREADPOOL_EXTRA_CMAKE_ARGS) + if(APPLE) + list(APPEND PTHREADPOOL_EXTRA_CMAKE_ARGS -D + PTHREADPOOL_SYNC_PRIMITIVE=condvar + ) + endif() ExternalProject_Add( pthreadpoolExternalProject SOURCE_DIR "${PTHREADPOOL_SOURCE_DIR}" @@ -253,8 +252,6 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) -D PTHREADPOOL_ALLOW_DEPRECATED_API=ON -D - PTHREADPOOL_SYNC_PRIMITVE=${PTHREADPOOL_SYNC_PRIMITIVE} - -D CMAKE_POSITION_INDEPENDENT_CODE=ON -D CMAKE_INSTALL_PREFIX= From 2dacf6f06c7b52576bdc9a8bd08b4844d5e7672c Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Tue, 15 Jul 2025 13:43:18 -0700 Subject: [PATCH 11/13] Update [ghstack-poisoned] --- CMakeLists.txt | 70 ++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1954363b165..2f665f39e9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,39 +182,49 @@ endif() if(EXECUTORCH_BUILD_CPUINFO) # --- cpuinfo - set(ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG - ${CMAKE_POSITION_INDEPENDENT_CODE} - ) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) - set(CPUINFO_SOURCE_DIR "backends/xnnpack/third-party/cpuinfo") - set(CPUINFO_BUILD_TOOLS - OFF - CACHE BOOL "" - ) - set(CPUINFO_BUILD_UNIT_TESTS - OFF - CACHE BOOL "" - ) - set(CPUINFO_BUILD_MOCK_TESTS - OFF - CACHE BOOL "" - ) - set(CPUINFO_BUILD_BENCHMARKS - OFF - CACHE BOOL "" + set(CPUINFO_SOURCE_DIR + "${CMAKE_CURRENT_LIST_DIR}/backends/xnnpack/third-party/cpuinfo" ) - set(CPUINFO_LIBRARY_TYPE - "static" - CACHE STRING "" + set(CPUINFO_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/cpuinfo") + set(CPUINFO_INSTALL_DIR "${CPUINFO_BINARY_DIR}/install") + set(CPUINFO_LIBRARY + "${CPUINFO_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libcpuinfo.a" ) - set(CPUINFO_LOG_LEVEL - "error" - CACHE STRING "" + + get_extra_cmake_args_for_external_project(CPUINFO_EXTRA_CMAKE_ARGS) + ExternalProject_Add( + cpuinfoExternalProject + SOURCE_DIR "${CPUINFO_SOURCE_DIR}" + BINARY_DIR "${CPUINFO_BINARY_DIR}" + INSTALL_DIR "${CPUINFO_INSTALL_DIR}" + BUILD_BYPRODUCTS "${CPUINFO_LIBRARY}" + CMAKE_ARGS "${CPUINFO_EXTRA_CMAKE_ARGS}" + -D + CMAKE_POSITION_INDEPENDENT_CODE=ON + -D + CPUINFO_BUILD_TOOLS=OFF + -D + CPUINFO_BUILD_UNIT_TESTS=OFF + -D + CPUINFO_BUILD_MOCK_TESTS=OFF + -D + CPUINFO_BUILD_BENCHMARKS=OFF + -D + CPUINFO_LIBRARY_TYPE=static + -D + CPUINFO_LOG_LEVEL=error + -D + CMAKE_INSTALL_PREFIX= + -D + CLOG_SOURCE_DIR="${CPUINFO_SOURCE_DIR}/deps/clog" ) - set(CLOG_SOURCE_DIR "${CPUINFO_SOURCE_DIR}/deps/clog") - add_subdirectory("${CPUINFO_SOURCE_DIR}") - set(CMAKE_POSITION_INDEPENDENT_CODE - ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} + add_library(cpuinfo STATIC IMPORTED) + set_property(TARGET cpuinfo PROPERTY IMPORTED_LOCATION "${CPUINFO_LIBRARY}") + add_dependencies(cpuinfo cpuinfoExternalProject) + # Trailing slash matters here! "Move everything from the temporary pthreadpool + # install directory to the proper install directory." + install(DIRECTORY "${CPUINFO_INSTALL_DIR}/" + DESTINATION "${CMAKE_INSTALL_PREFIX}" ) endif() From 41bf26432cc09b0b5a3b5c404dc824df9c2ea772 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Wed, 16 Jul 2025 14:05:02 -0700 Subject: [PATCH 12/13] Update [ghstack-poisoned] --- devtools/bundled_program/CMakeLists.txt | 33 +++++++++++-------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/devtools/bundled_program/CMakeLists.txt b/devtools/bundled_program/CMakeLists.txt index ee7fb34e37f..b1b227b3528 100644 --- a/devtools/bundled_program/CMakeLists.txt +++ b/devtools/bundled_program/CMakeLists.txt @@ -4,18 +4,20 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. -set( - _schema_files - bundled_program_schema.fbs - scalar_type.fbs -) +set(_schema_files bundled_program_schema.fbs scalar_type.fbs) set(_schema_outputs) foreach(schema_file ${_schema_files}) - list(APPEND _bundled_program_schema__srcs "${CMAKE_CURRENT_SOURCE_DIR}/schema/${schema_file}") + list(APPEND _bundled_program_schema__srcs + "${CMAKE_CURRENT_SOURCE_DIR}/schema/${schema_file}" + ) string(REGEX REPLACE "[.]fbs$" "_generated.h" generated "${schema_file}") - list(APPEND _schema_outputs "${DEVTOOLS_INCLUDE_DIR}/executorch/devtools/bundled_program/schema/${generated}") + list( + APPEND + _schema_outputs + "${DEVTOOLS_INCLUDE_DIR}/executorch/devtools/bundled_program/schema/${generated}" + ) endforeach() file(MAKE_DIRECTORY ${DEVTOOLS_INCLUDE_DIR}/executorch/devtools/bundled_program) @@ -32,20 +34,13 @@ add_custom_command( ) add_library( - bundled_program - ${_schema_outputs} - ${CMAKE_CURRENT_SOURCE_DIR}/bundled_program.cpp -) -target_link_libraries( - bundled_program - PUBLIC - executorch + bundled_program ${_schema_outputs} + ${CMAKE_CURRENT_SOURCE_DIR}/bundled_program.cpp ) +target_link_libraries(bundled_program PUBLIC executorch) target_include_directories( - bundled_program - PUBLIC - ${DEVTOOLS_INCLUDE_DIR} - ${PROJECT_SOURCE_DIR}/third-party/flatbuffers/include + bundled_program PUBLIC ${DEVTOOLS_INCLUDE_DIR} + ${PROJECT_SOURCE_DIR}/third-party/flatbuffers/include ) install( From f54a8ce546d8de9923da09ee730673e20344ad6e Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Wed, 16 Jul 2025 14:05:06 -0700 Subject: [PATCH 13/13] Update [ghstack-poisoned] --- CMakeLists.txt | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f665f39e9a..f69b6cff67a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -170,14 +170,30 @@ endif() add_subdirectory(third-party) if(NOT DEFINED FXDIV_SOURCE_DIR) - set(ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG - ${CMAKE_POSITION_INDEPENDENT_CODE} + include(GNUInstallDirs) + get_extra_cmake_args_for_external_project(FXDIV_EXTRA_CMAKE_ARGS) + set(FXDIV_SOURCE_DIR + "${CMAKE_CURRENT_LIST_DIR}/backends/xnnpack/third-party/FXdiv" ) - set(FXDIV_SOURCE_DIR "backends/xnnpack/third-party/FXdiv") - add_subdirectory("${FXDIV_SOURCE_DIR}") - set(CMAKE_POSITION_INDEPENDENT_CODE - ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG} + set(FXDIV_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/fxdiv") + set(FXDIV_INSTALL_DIR "${FXDIV_BINARY_DIR}/install") + set(FXDIV_HEADER "${FXDIV_INSTALL_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/fxdiv.h") + ExternalProject_Add( + fxdivExternalProject + SOURCE_DIR "${FXDIV_SOURCE_DIR}" + BINARY_DIR "${FXDIV_BINARY_DIR}" + INSTALL_DIR "${FXDIV_INSTALL_DIR}" + BUILD_BYPRODUCTS "${FXDIV_HEADER}" + CMAKE_ARGS "${FXDIV_EXTRA_CMAKE_ARGS}" + -D + CMAKE_INSTALL_PREFIX= + -D + FXDIV_BUILD_TESTS=OFF + -D + FXDIV_BUILD_BENCHMARKS=OFF ) + add_library(fxdiv INTERFACE IMPORTED) + set_property(TARGET fxdiv PROPERTY IMPORTED_LOCATION "${FXDIV_HEADER}") endif() if(EXECUTORCH_BUILD_CPUINFO) @@ -233,7 +249,6 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) set(PTHREADPOOL_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/backends/xnnpack/third-party/pthreadpool" ) - include(ExternalProject) include(GNUInstallDirs) set(PTHREADPOOL_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/pthreadpool") set(PTHREADPOOL_INSTALL_DIR "${PTHREADPOOL_BINARY_DIR}/install")