@@ -68,6 +68,7 @@ ExternalProject_Add(
6868 -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING =${CMAKE_OSX_DEPLOYMENT_TARGET}
6969 BUILD_BYPRODUCTS <INSTALL_DIR>/bin/flatcc
7070)
71+ file (REMOVE_RECURSE ${PROJECT_SOURCE_DIR} /third-party/flatcc/lib)
7172ExternalProject_Get_Property(flatcc_external_project INSTALL_DIR)
7273add_executable (flatcc_cli IMPORTED GLOBAL )
7374add_dependencies (flatcc_cli flatcc_external_project)
@@ -83,12 +84,20 @@ set(FLATCC_REFLECTION OFF CACHE BOOL "")
8384set (FLATCC_DEBUG_CLANG_SANITIZE OFF CACHE BOOL "" )
8485set (FLATCC_INSTALL OFF CACHE BOOL "" )
8586add_subdirectory (flatcc)
87+ # Unfortunately flatcc writes libs directly in to the source tree [1]. So to
88+ # ensure the target lib is created last, force flatcc_cli to build first.
89+ #
90+ # [1] https://github.com/dvidelabs/flatcc/blob/896db54787e8b730a6be482c69324751f3f5f117/CMakeLists.txt#L168
91+ add_dependencies (flatccrt flatcc_cli)
8692# Fix for "relocation R_X86_64_32 against `.rodata' can not be used when making
8793# a shared object; recompile with -fPIC" when building on some x86 linux
8894# systems.
8995#
9096# Learn more: https://github.com/pytorch/executorch/pull/2467
9197set_property (TARGET flatccrt PROPERTY POSITION_INDEPENDENT_CODE ON )
98+ # flatcc appends a "_d" suffix (flatccrt_d) to debug builds. To simplify our
99+ # reference to the lib, remove the suffix.
100+ set_property (TARGET flatccrt PROPERTY DEBUG_POSTFIX "" )
92101install (
93102 TARGETS flatccrt
94103 DESTINATION ${CMAKE_BINARY_DIR} /lib
0 commit comments