From 44dfd6466772e144512c0d83da5eb20955fb24f4 Mon Sep 17 00:00:00 2001 From: jathu Date: Sun, 9 Mar 2025 20:24:40 -0700 Subject: [PATCH 1/6] Build flatc for the host instead of the target platform --- CMakeLists.txt | 45 +++++++++---------- backends/apple/mps/CMakeLists.txt | 1 + backends/qualcomm/CMakeLists.txt | 1 + backends/vulkan/CMakeLists.txt | 1 + backends/xnnpack/CMakeLists.txt | 1 + devtools/CMakeLists.txt | 2 +- .../flat_tensor/serialize/CMakeLists.txt | 2 +- schema/CMakeLists.txt | 2 +- 8 files changed, 27 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fabf667cbe1..44156e0cce7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -482,34 +482,29 @@ if(EXECUTORCH_BUILD_FLATC) FATAL_ERROR "May not set both EXECUTORCH_BUILD_FLATC and FLATC_EXECUTABLE" ) endif() - set(FLATC_EXECUTABLE flatc) - set(FLATBUFFERS_BUILD_FLATC - ON - CACHE BOOL "" - ) - set(FLATBUFFERS_BUILD_FLATHASH - OFF - CACHE BOOL "" - ) - set(FLATBUFFERS_BUILD_FLATLIB - OFF - CACHE BOOL "" - ) - set(FLATBUFFERS_BUILD_TESTS - OFF - CACHE BOOL "" - ) - set(FLATBUFFERS_INSTALL - OFF - CACHE BOOL "" + + include(ExternalProject) + + ExternalProject_Add( + host_flatc + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/third-party/flatbuffers + SOURCE_DIR ${CMAKE_SOURCE_DIR}/third-party/flatbuffers + CMAKE_ARGS -DFLATBUFFERS_BUILD_FLATC=ON + -DFLATBUFFERS_BUILD_FLATHASH=OFF + -DFLATBUFFERS_BUILD_FLATLIB=OFF + -DFLATBUFFERS_BUILD_TESTS=OFF + -DFLATBUFFERS_INSTALL=OFF + # exir lets users set the alignment of tensor data embedded in + # the flatbuffer, and some users need an alignment larger than + # the default, which is typically 32. + -DCMAKE_CXX_FLAGS=-DFLATBUFFERS_MAX_ALIGNMENT=1024 + INSTALL_COMMAND "" ) - add_subdirectory(third-party/flatbuffers) + ExternalProject_Get_Property(host_flatc BINARY_DIR) + set(FLATC_EXECUTABLE ${BINARY_DIR}/flatc) - # exir lets users set the alignment of tensor data embedded in the flatbuffer, - # and some users need an alignment larger than the default, which is typically - # 32. - target_compile_definitions(flatc PRIVATE FLATBUFFERS_MAX_ALIGNMENT=1024) endif() + if(NOT FLATC_EXECUTABLE) message( FATAL_ERROR diff --git a/backends/apple/mps/CMakeLists.txt b/backends/apple/mps/CMakeLists.txt index 96aa007563b..feeb64ee8c0 100644 --- a/backends/apple/mps/CMakeLists.txt +++ b/backends/apple/mps/CMakeLists.txt @@ -50,6 +50,7 @@ add_custom_command( "${_mps_schema__include_dir}/executorch/backends/apple/mps" ${_mps_schema__srcs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} + DEPENDS host_flatc COMMENT "Generating mps_schema headers" VERBATIM ) diff --git a/backends/qualcomm/CMakeLists.txt b/backends/qualcomm/CMakeLists.txt index 560cac176b3..28fe1a0a1f6 100644 --- a/backends/qualcomm/CMakeLists.txt +++ b/backends/qualcomm/CMakeLists.txt @@ -49,6 +49,7 @@ add_custom_command( OUTPUT qcir_schema_output COMMAND ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --scoped-enums -o ${qcir_schema_include_dir} ${qcir_schema_include_dir}/qcir.fbs + DEPENDS host_flatc COMMENT "Generating qualcomm ir schema headers" VERBATIM ) diff --git a/backends/vulkan/CMakeLists.txt b/backends/vulkan/CMakeLists.txt index fca34fdf6a4..e7c9f9d0053 100644 --- a/backends/vulkan/CMakeLists.txt +++ b/backends/vulkan/CMakeLists.txt @@ -92,6 +92,7 @@ add_custom_command( ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --scoped-enums -o "${SCHEMA_INCLUDE_DIR}/executorch/backends/vulkan/serialization/" ${_vulkan_schema__srcs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} + DEPENDS host_flatc COMMENT "Generating vulkan_schema headers" VERBATIM ) diff --git a/backends/xnnpack/CMakeLists.txt b/backends/xnnpack/CMakeLists.txt index a453b16aa58..806e2dc5946 100644 --- a/backends/xnnpack/CMakeLists.txt +++ b/backends/xnnpack/CMakeLists.txt @@ -82,6 +82,7 @@ add_custom_command( ${_xnnpack_schema__srcs} COMMAND mv ${_xnnpack_flatbuffer__outputs} ${_xnnpack_schema__outputs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} + DEPENDS host_flatc COMMENT "Generating xnnpack_schema headers" VERBATIM ) diff --git a/devtools/CMakeLists.txt b/devtools/CMakeLists.txt index 3f3a836c12b..6e026770164 100644 --- a/devtools/CMakeLists.txt +++ b/devtools/CMakeLists.txt @@ -205,7 +205,7 @@ add_custom_command( "${_bundled_schema__include_dir}/executorch/devtools/bundled_program/schema" ${_bundled_program_schema__srcs} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/devtools - DEPENDS ${FLATC_EXECUTABLE} ${_bundled_program_schema__srcs} + DEPENDS host_flatc ${_bundled_program_schema__srcs} COMMENT "Generating bundled_program headers" VERBATIM ) diff --git a/extension/flat_tensor/serialize/CMakeLists.txt b/extension/flat_tensor/serialize/CMakeLists.txt index f1278c804db..d9ec7f95b09 100644 --- a/extension/flat_tensor/serialize/CMakeLists.txt +++ b/extension/flat_tensor/serialize/CMakeLists.txt @@ -37,7 +37,7 @@ function(generate_flat_tensor_schema _schema_srcs _schema_name) ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --gen-mutable --scoped-enums -o "${_flat_tensor_schema__output_dir}" ${_schema_srcs} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${FLATC_EXECUTABLE} ${_schema_srcs} + DEPENDS host_flatc ${_schema_srcs} COMMENT "Generating ${_schema_name} headers" VERBATIM ) diff --git a/schema/CMakeLists.txt b/schema/CMakeLists.txt index 64f8821da1e..d20ade86121 100644 --- a/schema/CMakeLists.txt +++ b/schema/CMakeLists.txt @@ -37,7 +37,7 @@ function(generate_program_schema _schema_srcs _schema_name) ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --gen-mutable --scoped-enums -o "${_program_schema__output_dir}" ${_schema_srcs} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${FLATC_EXECUTABLE} ${_schema_srcs} + DEPENDS host_flatc ${_schema_srcs} COMMENT "Generating ${_schema_name} headers" VERBATIM ) From 692232eee1578c7e28f14f95c49f37d31a8e92a4 Mon Sep 17 00:00:00 2001 From: jathu Date: Mon, 10 Mar 2025 10:27:25 -0700 Subject: [PATCH 2/6] rename host_flatc -> flatc --- CMakeLists.txt | 4 ++-- backends/apple/mps/CMakeLists.txt | 2 +- backends/qualcomm/CMakeLists.txt | 2 +- backends/vulkan/CMakeLists.txt | 2 +- backends/xnnpack/CMakeLists.txt | 2 +- devtools/CMakeLists.txt | 2 +- extension/flat_tensor/serialize/CMakeLists.txt | 2 +- schema/CMakeLists.txt | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 44156e0cce7..30ac3f47786 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -486,7 +486,7 @@ if(EXECUTORCH_BUILD_FLATC) include(ExternalProject) ExternalProject_Add( - host_flatc + flatc PREFIX ${CMAKE_CURRENT_BINARY_DIR}/third-party/flatbuffers SOURCE_DIR ${CMAKE_SOURCE_DIR}/third-party/flatbuffers CMAKE_ARGS -DFLATBUFFERS_BUILD_FLATC=ON @@ -500,7 +500,7 @@ if(EXECUTORCH_BUILD_FLATC) -DCMAKE_CXX_FLAGS=-DFLATBUFFERS_MAX_ALIGNMENT=1024 INSTALL_COMMAND "" ) - ExternalProject_Get_Property(host_flatc BINARY_DIR) + ExternalProject_Get_Property(flatc BINARY_DIR) set(FLATC_EXECUTABLE ${BINARY_DIR}/flatc) endif() diff --git a/backends/apple/mps/CMakeLists.txt b/backends/apple/mps/CMakeLists.txt index feeb64ee8c0..d87b391a4ff 100644 --- a/backends/apple/mps/CMakeLists.txt +++ b/backends/apple/mps/CMakeLists.txt @@ -50,7 +50,7 @@ add_custom_command( "${_mps_schema__include_dir}/executorch/backends/apple/mps" ${_mps_schema__srcs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} - DEPENDS host_flatc + DEPENDS flatc COMMENT "Generating mps_schema headers" VERBATIM ) diff --git a/backends/qualcomm/CMakeLists.txt b/backends/qualcomm/CMakeLists.txt index 28fe1a0a1f6..dec08ff2391 100644 --- a/backends/qualcomm/CMakeLists.txt +++ b/backends/qualcomm/CMakeLists.txt @@ -49,7 +49,7 @@ add_custom_command( OUTPUT qcir_schema_output COMMAND ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --scoped-enums -o ${qcir_schema_include_dir} ${qcir_schema_include_dir}/qcir.fbs - DEPENDS host_flatc + DEPENDS flatc COMMENT "Generating qualcomm ir schema headers" VERBATIM ) diff --git a/backends/vulkan/CMakeLists.txt b/backends/vulkan/CMakeLists.txt index e7c9f9d0053..bb426e5c2aa 100644 --- a/backends/vulkan/CMakeLists.txt +++ b/backends/vulkan/CMakeLists.txt @@ -92,7 +92,7 @@ add_custom_command( ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --scoped-enums -o "${SCHEMA_INCLUDE_DIR}/executorch/backends/vulkan/serialization/" ${_vulkan_schema__srcs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} - DEPENDS host_flatc + DEPENDS flatc COMMENT "Generating vulkan_schema headers" VERBATIM ) diff --git a/backends/xnnpack/CMakeLists.txt b/backends/xnnpack/CMakeLists.txt index 806e2dc5946..86d15e3ae03 100644 --- a/backends/xnnpack/CMakeLists.txt +++ b/backends/xnnpack/CMakeLists.txt @@ -82,7 +82,7 @@ add_custom_command( ${_xnnpack_schema__srcs} COMMAND mv ${_xnnpack_flatbuffer__outputs} ${_xnnpack_schema__outputs} WORKING_DIRECTORY ${EXECUTORCH_ROOT} - DEPENDS host_flatc + DEPENDS flatc COMMENT "Generating xnnpack_schema headers" VERBATIM ) diff --git a/devtools/CMakeLists.txt b/devtools/CMakeLists.txt index 6e026770164..e1216fa4c77 100644 --- a/devtools/CMakeLists.txt +++ b/devtools/CMakeLists.txt @@ -205,7 +205,7 @@ add_custom_command( "${_bundled_schema__include_dir}/executorch/devtools/bundled_program/schema" ${_bundled_program_schema__srcs} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/devtools - DEPENDS host_flatc ${_bundled_program_schema__srcs} + DEPENDS flatc ${_bundled_program_schema__srcs} COMMENT "Generating bundled_program headers" VERBATIM ) diff --git a/extension/flat_tensor/serialize/CMakeLists.txt b/extension/flat_tensor/serialize/CMakeLists.txt index d9ec7f95b09..014b852e1a9 100644 --- a/extension/flat_tensor/serialize/CMakeLists.txt +++ b/extension/flat_tensor/serialize/CMakeLists.txt @@ -37,7 +37,7 @@ function(generate_flat_tensor_schema _schema_srcs _schema_name) ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --gen-mutable --scoped-enums -o "${_flat_tensor_schema__output_dir}" ${_schema_srcs} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS host_flatc ${_schema_srcs} + DEPENDS flatc ${_schema_srcs} COMMENT "Generating ${_schema_name} headers" VERBATIM ) diff --git a/schema/CMakeLists.txt b/schema/CMakeLists.txt index d20ade86121..b2b2873d7da 100644 --- a/schema/CMakeLists.txt +++ b/schema/CMakeLists.txt @@ -37,7 +37,7 @@ function(generate_program_schema _schema_srcs _schema_name) ${FLATC_EXECUTABLE} --cpp --cpp-std c++11 --gen-mutable --scoped-enums -o "${_program_schema__output_dir}" ${_schema_srcs} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS host_flatc ${_schema_srcs} + DEPENDS flatc ${_schema_srcs} COMMENT "Generating ${_schema_name} headers" VERBATIM ) From dcf16a97380d74d06c3c44f8489e6939069be995 Mon Sep 17 00:00:00 2001 From: jathu Date: Mon, 10 Mar 2025 12:52:38 -0700 Subject: [PATCH 3/6] include library target --- CMakeLists.txt | 45 ++++++++++++------- backends/apple/mps/CMakeLists.txt | 4 -- backends/qualcomm/CMakeLists.txt | 5 +-- backends/vulkan/CMakeLists.txt | 4 -- backends/xnnpack/CMakeLists.txt | 4 -- devtools/CMakeLists.txt | 4 -- examples/apple/mps/CMakeLists.txt | 4 -- .../flat_tensor/serialize/CMakeLists.txt | 6 +-- schema/CMakeLists.txt | 6 +-- 9 files changed, 33 insertions(+), 49 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 30ac3f47786..f0b319c6097 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -474,6 +474,17 @@ cmake_dependent_option( "NOT FLATC_EXECUTABLE;EXECUTORCH_BUILD_HOST_TARGETS" OFF ) + +set(FLATBUFFERS_BUILD_FLATC OFF CACHE BOOL "") +set(FLATBUFFERS_BUILD_FLATHASH OFF CACHE BOOL "") +set(FLATBUFFERS_BUILD_FLATLIB OFF CACHE BOOL "") +set(FLATBUFFERS_BUILD_TESTS OFF CACHE BOOL "") +set(FLATBUFFERS_INSTALL OFF CACHE BOOL "") +# exir lets users set the alignment of tensor data embedded in the flatbuffer, +# and some users need an alignment larger than the default, which is typically +# 32. +set(FLATBUFFERS_MAX_ALIGNMENT 1024) + if(EXECUTORCH_BUILD_FLATC) if(FLATC_EXECUTABLE) # We could ignore this, but it could lead to confusion about which `flatc` @@ -483,35 +494,39 @@ if(EXECUTORCH_BUILD_FLATC) ) endif() + # Build flatc for the *host* to generate files as part of the build step. include(ExternalProject) - ExternalProject_Add( flatc PREFIX ${CMAKE_CURRENT_BINARY_DIR}/third-party/flatbuffers - SOURCE_DIR ${CMAKE_SOURCE_DIR}/third-party/flatbuffers + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/third-party/flatbuffers + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party/flatbuffers CMAKE_ARGS -DFLATBUFFERS_BUILD_FLATC=ON - -DFLATBUFFERS_BUILD_FLATHASH=OFF - -DFLATBUFFERS_BUILD_FLATLIB=OFF - -DFLATBUFFERS_BUILD_TESTS=OFF - -DFLATBUFFERS_INSTALL=OFF - # exir lets users set the alignment of tensor data embedded in - # the flatbuffer, and some users need an alignment larger than - # the default, which is typically 32. - -DCMAKE_CXX_FLAGS=-DFLATBUFFERS_MAX_ALIGNMENT=1024 + -DFLATBUFFERS_BUILD_FLATHASH=${FLATBUFFERS_BUILD_FLATHASH} + -DFLATBUFFERS_BUILD_FLATLIB=${FLATBUFFERS_BUILD_FLATLIB} + -DFLATBUFFERS_BUILD_TESTS=${FLATBUFFERS_BUILD_TESTS} + -DFLATBUFFERS_INSTALL=${FLATBUFFERS_INSTALL} + -DCMAKE_CXX_FLAGS="-DFLATBUFFERS_MAX_ALIGNMENT=${FLATBUFFERS_MAX_ALIGNMENT}" INSTALL_COMMAND "" ) ExternalProject_Get_Property(flatc BINARY_DIR) set(FLATC_EXECUTABLE ${BINARY_DIR}/flatc) - endif() if(NOT FLATC_EXECUTABLE) message( - FATAL_ERROR - "FLATC_EXECUTABLE must be set when EXECUTORCH_BUILD_FLATC is disabled. " - "Note that EXECUTORCH_BUILD_FLATC may be disabled implicitly when " - "cross-compiling or when EXECUTORCH_BUILD_HOST_TARGETS is disabled." + WARNING "FLATC_EXECUTABLE not specified, looking for flatc" ) + find_program(FLATC_EXECUTABLE flatc) + + if(NOT FLATC_EXECUTABLE) + message( + FATAL_ERROR + "FLATC_EXECUTABLE must be set when EXECUTORCH_BUILD_FLATC is disabled. " + "Note that EXECUTORCH_BUILD_FLATC may be disabled implicitly when " + "cross-compiling or when EXECUTORCH_BUILD_HOST_TARGETS is disabled." + ) + endif() endif() # diff --git a/backends/apple/mps/CMakeLists.txt b/backends/apple/mps/CMakeLists.txt index d87b391a4ff..4bd4077a0f6 100644 --- a/backends/apple/mps/CMakeLists.txt +++ b/backends/apple/mps/CMakeLists.txt @@ -22,10 +22,6 @@ if(NOT PYTHON_EXECUTABLE) resolve_python_executable() endif() -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - set(_common_compile_options -Wno-deprecated-declarations) set(_common_include_directories ${EXECUTORCH_ROOT}/..) diff --git a/backends/qualcomm/CMakeLists.txt b/backends/qualcomm/CMakeLists.txt index dec08ff2391..f5adc84f903 100644 --- a/backends/qualcomm/CMakeLists.txt +++ b/backends/qualcomm/CMakeLists.txt @@ -39,10 +39,6 @@ if(${ANDROID}) find_library(android_log log) endif() -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - set(qcir_schema_include_dir ${CMAKE_CURRENT_LIST_DIR}/aot/ir) set(qcir_schema_output ${qcir_schema_include_dir}/qcir_generated.h) add_custom_command( @@ -101,6 +97,7 @@ add_custom_command( "${_qnn_schema__include_dir}/executorch/backends/qualcomm" ${_qnn_schema__srcs} WORKING_DIRECTORY ${EXECUTORCH_SOURCE_DIR} + DEPENDS flatc COMMENT "Generating qnn_schema headers" VERBATIM ) diff --git a/backends/vulkan/CMakeLists.txt b/backends/vulkan/CMakeLists.txt index bb426e5c2aa..db90bdc7c29 100644 --- a/backends/vulkan/CMakeLists.txt +++ b/backends/vulkan/CMakeLists.txt @@ -28,10 +28,6 @@ if(NOT PYTHON_EXECUTABLE) set(PYTHON_EXECUTABLE python3) endif() -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - # Include this file to access target_link_options_shared_lib This is required to # provide access to target_link_options_shared_lib which allows libraries to be # linked with the --whole-archive flag. This is required for libraries that diff --git a/backends/xnnpack/CMakeLists.txt b/backends/xnnpack/CMakeLists.txt index 86d15e3ae03..8b3bf3d91c1 100644 --- a/backends/xnnpack/CMakeLists.txt +++ b/backends/xnnpack/CMakeLists.txt @@ -18,10 +18,6 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) endif() -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - # Source root directory for executorch. if(NOT EXECUTORCH_ROOT) set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..) diff --git a/devtools/CMakeLists.txt b/devtools/CMakeLists.txt index e1216fa4c77..abd33bac886 100644 --- a/devtools/CMakeLists.txt +++ b/devtools/CMakeLists.txt @@ -38,10 +38,6 @@ if(NOT PYTHON_EXECUTABLE) resolve_python_executable() endif() -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - # Paths to headers generated from the .fbs files. set(_etdump_schemas # etdump_schema_flatcc.fbs scalar_type.fbs) diff --git a/examples/apple/mps/CMakeLists.txt b/examples/apple/mps/CMakeLists.txt index 319d8159ced..06fbce8d569 100644 --- a/examples/apple/mps/CMakeLists.txt +++ b/examples/apple/mps/CMakeLists.txt @@ -18,10 +18,6 @@ if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) endif() -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - # Source root directory for executorch. if(NOT EXECUTORCH_ROOT) set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..) diff --git a/extension/flat_tensor/serialize/CMakeLists.txt b/extension/flat_tensor/serialize/CMakeLists.txt index 014b852e1a9..d1ae797f8b3 100644 --- a/extension/flat_tensor/serialize/CMakeLists.txt +++ b/extension/flat_tensor/serialize/CMakeLists.txt @@ -9,10 +9,6 @@ # cmake-format -i CMakeLists.txt # ~~~ -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - # The include directory that will contain the generated schema headers. set(_flat_tensor_schema__include_dir "${CMAKE_BINARY_DIR}/extension/flat_tensor/include") set(_flat_tensor_schema__output_dir "${_flat_tensor_schema__include_dir}/executorch/extension/flat_tensor/serialize") @@ -49,7 +45,7 @@ function(generate_flat_tensor_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=1024 + ${_schema_name} INTERFACE FLATBUFFERS_MAX_ALIGNMENT=${FLATBUFFERS_MAX_ALIGNMENT} ) target_include_directories( diff --git a/schema/CMakeLists.txt b/schema/CMakeLists.txt index b2b2873d7da..484363acdf5 100644 --- a/schema/CMakeLists.txt +++ b/schema/CMakeLists.txt @@ -9,10 +9,6 @@ # cmake-format -i CMakeLists.txt # ~~~ -if(NOT FLATC_EXECUTABLE) - set(FLATC_EXECUTABLE flatc) -endif() - # 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") @@ -49,7 +45,7 @@ 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=1024 + ${_schema_name} INTERFACE FLATBUFFERS_MAX_ALIGNMENT=${FLATBUFFERS_MAX_ALIGNMENT} ) target_include_directories( From 194964e4058eb0ec186e5caa843f9962392c11c3 Mon Sep 17 00:00:00 2001 From: jathu Date: Tue, 11 Mar 2025 08:52:11 -0700 Subject: [PATCH 4/6] configure flatc to build in release mode --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0b319c6097..61b09945089 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -506,6 +506,7 @@ if(EXECUTORCH_BUILD_FLATC) -DFLATBUFFERS_BUILD_FLATLIB=${FLATBUFFERS_BUILD_FLATLIB} -DFLATBUFFERS_BUILD_TESTS=${FLATBUFFERS_BUILD_TESTS} -DFLATBUFFERS_INSTALL=${FLATBUFFERS_INSTALL} + -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-DFLATBUFFERS_MAX_ALIGNMENT=${FLATBUFFERS_MAX_ALIGNMENT}" INSTALL_COMMAND "" ) From 5f252e2a5956b186835a4ce86cd3a93b843ec697 Mon Sep 17 00:00:00 2001 From: jathu Date: Tue, 11 Mar 2025 09:20:42 -0700 Subject: [PATCH 5/6] depend directly on the flatc binary instead of the project --- CMakeLists.txt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61b09945089..54e2e1ebfbf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -497,7 +497,7 @@ if(EXECUTORCH_BUILD_FLATC) # Build flatc for the *host* to generate files as part of the build step. include(ExternalProject) ExternalProject_Add( - flatc + flatbuffers PREFIX ${CMAKE_CURRENT_BINARY_DIR}/third-party/flatbuffers BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/third-party/flatbuffers SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party/flatbuffers @@ -510,8 +510,9 @@ if(EXECUTORCH_BUILD_FLATC) -DCMAKE_CXX_FLAGS="-DFLATBUFFERS_MAX_ALIGNMENT=${FLATBUFFERS_MAX_ALIGNMENT}" INSTALL_COMMAND "" ) - ExternalProject_Get_Property(flatc BINARY_DIR) + ExternalProject_Get_Property(flatbuffers BINARY_DIR) set(FLATC_EXECUTABLE ${BINARY_DIR}/flatc) + set(FLATC_EXECUTABLE_BUILT_FROM_SOURCE YES) endif() if(NOT FLATC_EXECUTABLE) @@ -530,6 +531,13 @@ if(NOT FLATC_EXECUTABLE) endif() endif() +add_executable(flatc IMPORTED GLOBAL) +set_target_properties(flatc PROPERTIES IMPORTED_LOCATION ${FLATC_EXECUTABLE}) + +if(FLATC_EXECUTABLE_BUILT_FROM_SOURCE) + add_dependencies(flatc flatbuffers) +endif() + # # program_schema: Generated .h files from schema/*.fbs inputs # From 4faa44395f2022ccc72b3ac27c9c332fa0bec14c Mon Sep 17 00:00:00 2001 From: jathu Date: Tue, 11 Mar 2025 09:44:37 -0700 Subject: [PATCH 6/6] dont explicitly target flatc when building a wheel --- setup.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/setup.py b/setup.py index 28251cdf0df..32ec94708af 100644 --- a/setup.py +++ b/setup.py @@ -652,10 +652,6 @@ def run(self): build_args = [f"-j{self.parallel}"] - # TODO(dbort): Try to manage these targets and the cmake args from the - # extension entries themselves instead of hard-coding them here. - build_args += ["--target", "flatc"] - if ShouldBuild.pybindings(): cmake_args += [ "-DEXECUTORCH_BUILD_PYBIND=ON",