diff --git a/CMakeLists.txt b/CMakeLists.txt index f01f1bebc86..8977e5c5aa9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -706,11 +706,7 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) add_executable(executor_runner ${_executor_runner__srcs}) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - if(APPLE) - target_link_options(executor_runner PRIVATE "LINKER:-dead_strip") - else() - target_link_options(executor_runner PRIVATE "LINKER:--gc-sections") - endif() + target_link_options_gc_sections(executor_runner) endif() target_link_libraries(executor_runner ${_executor_runner_libs}) target_compile_options(executor_runner PUBLIC ${_common_compile_options}) diff --git a/examples/models/llama/CMakeLists.txt b/examples/models/llama/CMakeLists.txt index 20c946178d6..b850e4e6c0b 100644 --- a/examples/models/llama/CMakeLists.txt +++ b/examples/models/llama/CMakeLists.txt @@ -210,10 +210,9 @@ endif() add_executable(llama_main ${_srcs}) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - if(APPLE) - target_link_options(llama_main PRIVATE "LINKER:-dead_strip") - else() - target_link_options(llama_main PRIVATE "LINKER:--gc-sections,-s") + target_link_options_gc_sections(llama_main) + if(NOT APPLE) + target_link_options(llama_main PRIVATE "LINKER:-s") endif() endif() diff --git a/examples/models/llava/CMakeLists.txt b/examples/models/llava/CMakeLists.txt index be84cdb439b..b99d4c8106e 100644 --- a/examples/models/llava/CMakeLists.txt +++ b/examples/models/llava/CMakeLists.txt @@ -198,10 +198,9 @@ list(APPEND _common_include_directories ${stb_SOURCE_DIR} add_executable(llava_main ${_srcs}) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - if(APPLE) - target_link_options(llava_main PRIVATE "LINKER:-dead_strip,-s") - else() - target_link_options(llava_main PRIVATE "LINKER:--gc-sections,-s") + target_link_options_gc_sections(llama_main) + if(NOT APPLE) + target_link_options(llama_main PRIVATE "LINKER:-s") endif() endif() diff --git a/examples/selective_build/CMakeLists.txt b/examples/selective_build/CMakeLists.txt index 24fd102fee9..faa3cf568a6 100644 --- a/examples/selective_build/CMakeLists.txt +++ b/examples/selective_build/CMakeLists.txt @@ -123,10 +123,10 @@ gen_selected_ops( ) generate_bindings_for_kernels( - LIB_NAME - "select_build_lib" + LIB_NAME + "select_build_lib" FUNCTIONS_YAML - ${EXECUTORCH_ROOT}/kernels/portable/functions.yaml + ${EXECUTORCH_ROOT}/kernels/portable/functions.yaml CUSTOM_OPS_YAML "${_custom_ops_yaml}" DTYPE_SELECTIVE_BUILD @@ -134,11 +134,11 @@ generate_bindings_for_kernels( ) gen_operators_lib( - LIB_NAME - "select_build_lib" - KERNEL_LIBS - ${_kernel_lib} - DEPS + LIB_NAME + "select_build_lib" + KERNEL_LIBS + ${_kernel_lib} + DEPS executorch_core DTYPE_SELECTIVE_BUILD "${EXECUTORCH_DTYPE_SELECTIVE_BUILD}" @@ -152,7 +152,7 @@ list(TRANSFORM _executor_runner__srcs PREPEND "${EXECUTORCH_ROOT}/") # add_executable(selective_build_test ${_executor_runner__srcs}) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - target_link_options(selective_build_test PRIVATE "LINKER:--gc-sections") + target_link_options_gc_sections(selective_build_test) endif() target_link_libraries( selective_build_test PRIVATE executorch_core gflags select_build_lib diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 967610f48f8..3e8342a9741 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -53,7 +53,7 @@ list(TRANSFORM _size_test__srcs PREPEND "${EXECUTORCH_ROOT}/") add_executable(size_test ${_size_test__srcs}) target_link_libraries(size_test executorch) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - target_link_options(size_test PRIVATE "LINKER:--gc-sections") + target_link_options_gc_sections(size_test) endif() # @@ -65,7 +65,7 @@ target_link_libraries( size_test_all_ops executorch portable_ops_lib portable_kernels ) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - target_link_options(size_test_all_ops PRIVATE "LINKER:--gc-sections") + target_link_options_gc_sections(size_test_all_ops) endif() # @@ -77,6 +77,6 @@ target_link_options_shared_lib(optimized_native_cpu_ops_lib) target_link_libraries( size_test_all_optimized_ops executorch optimized_native_cpu_ops_lib) if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") - target_link_options(size_test_all_optimized_ops PRIVATE "LINKER:--gc-sections") + target_link_options_gc_sections(size_test_all_optimized_ops) endif() endif() diff --git a/tools/cmake/Utils.cmake b/tools/cmake/Utils.cmake index f0404f66bae..9fbab17728a 100644 --- a/tools/cmake/Utils.cmake +++ b/tools/cmake/Utils.cmake @@ -59,6 +59,14 @@ function(target_link_options_shared_lib target_name) endif() endfunction() +function(target_link_options_gc_sections target_name) + if(APPLE) + target_link_options(${target_name} PRIVATE "LINKER:-dead_strip") + else() + target_link_options(${target_name} PRIVATE "LINKER:--gc-sections") + endif() +endfunction() + # Extract source files based on toml config. This is useful to keep buck2 and # cmake aligned. Do not regenerate if file exists. function(extract_sources sources_file)