1*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) Meta Platforms, Inc. and affiliates. 2*523fa7a6SAndroid Build Coastguard Worker# All rights reserved. 3*523fa7a6SAndroid Build Coastguard Worker# 4*523fa7a6SAndroid Build Coastguard Worker# This source code is licensed under the BSD-style license found in the 5*523fa7a6SAndroid Build Coastguard Worker# LICENSE file in the root directory of this source tree. 6*523fa7a6SAndroid Build Coastguard Worker 7*523fa7a6SAndroid Build Coastguard Worker# 8*523fa7a6SAndroid Build Coastguard Worker# Simple CMake build system for size_test demo. 9*523fa7a6SAndroid Build Coastguard Worker# 10*523fa7a6SAndroid Build Coastguard Worker# ### Editing this file ### 11*523fa7a6SAndroid Build Coastguard Worker# 12*523fa7a6SAndroid Build Coastguard Worker# This file should be formatted with 13*523fa7a6SAndroid Build Coastguard Worker# ~~~ 14*523fa7a6SAndroid Build Coastguard Worker# cmake-format -i CMakeLists.txt 15*523fa7a6SAndroid Build Coastguard Worker# ~~~ 16*523fa7a6SAndroid Build Coastguard Worker# It should also be cmake-lint clean. 17*523fa7a6SAndroid Build Coastguard Worker# 18*523fa7a6SAndroid Build Coastguard Worker 19*523fa7a6SAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.19) 20*523fa7a6SAndroid Build Coastguard Workerproject(size_test) 21*523fa7a6SAndroid Build Coastguard Worker 22*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 17) 23*523fa7a6SAndroid Build Coastguard Worker 24*523fa7a6SAndroid Build Coastguard Workerset(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/..) 25*523fa7a6SAndroid Build Coastguard Worker 26*523fa7a6SAndroid Build Coastguard Workerinclude(${EXECUTORCH_ROOT}/build/Utils.cmake) 27*523fa7a6SAndroid Build Coastguard Worker 28*523fa7a6SAndroid Build Coastguard Worker# Find prebuilt executorch library 29*523fa7a6SAndroid Build Coastguard Workerfind_package(executorch CONFIG REQUIRED) 30*523fa7a6SAndroid Build Coastguard Worker 31*523fa7a6SAndroid Build Coastguard Worker# Let files say "include <executorch/path/to/header.h>". 32*523fa7a6SAndroid Build Coastguard Workerset(_common_include_directories ${EXECUTORCH_ROOT}/..) 33*523fa7a6SAndroid Build Coastguard Workertarget_include_directories(executorch INTERFACE ${_common_include_directories}) 34*523fa7a6SAndroid Build Coastguard Worker 35*523fa7a6SAndroid Build Coastguard Worker# 36*523fa7a6SAndroid Build Coastguard Worker# The `_<target>_srcs` lists are defined by including ${EXECUTORCH_SRCS_FILE}. 37*523fa7a6SAndroid Build Coastguard Worker# 38*523fa7a6SAndroid Build Coastguard Workerset(EXECUTORCH_SRCS_FILE "${CMAKE_CURRENT_BINARY_DIR}/../executorch_srcs.cmake") 39*523fa7a6SAndroid Build Coastguard Worker 40*523fa7a6SAndroid Build Coastguard Workerextract_sources(${EXECUTORCH_SRCS_FILE}) 41*523fa7a6SAndroid Build Coastguard Worker 42*523fa7a6SAndroid Build Coastguard Workerinclude(${EXECUTORCH_SRCS_FILE}) 43*523fa7a6SAndroid Build Coastguard Worker 44*523fa7a6SAndroid Build Coastguard Worker# Since extract_sources.py is not returning absolute values, we need to patch 45*523fa7a6SAndroid Build Coastguard Worker# the source paths. 46*523fa7a6SAndroid Build Coastguard Workerlist(TRANSFORM _size_test__srcs PREPEND "${EXECUTORCH_ROOT}/") 47*523fa7a6SAndroid Build Coastguard Worker 48*523fa7a6SAndroid Build Coastguard Worker# 49*523fa7a6SAndroid Build Coastguard Worker# size_test: minimal binary with no ops and no delegate backend 50*523fa7a6SAndroid Build Coastguard Worker# 51*523fa7a6SAndroid Build Coastguard Worker# TODO(larryliu0820): Add EXECUTORCH_BUILD_EXECUTABLES to not build executable 52*523fa7a6SAndroid Build Coastguard Worker# when we cross compile to ios 53*523fa7a6SAndroid Build Coastguard Workeradd_executable(size_test ${_size_test__srcs}) 54*523fa7a6SAndroid Build Coastguard Workertarget_link_libraries(size_test executorch) 55*523fa7a6SAndroid Build Coastguard Workerif(CMAKE_BUILD_TYPE EQUAL "Release") 56*523fa7a6SAndroid Build Coastguard Worker target_link_options(size_test PRIVATE "LINKER:--gc-sections") 57*523fa7a6SAndroid Build Coastguard Workerendif() 58*523fa7a6SAndroid Build Coastguard Worker 59*523fa7a6SAndroid Build Coastguard Worker# 60*523fa7a6SAndroid Build Coastguard Worker# size_test_all_ops: binary with portable ops and no delegate backend 61*523fa7a6SAndroid Build Coastguard Worker# 62*523fa7a6SAndroid Build Coastguard Workeradd_executable(size_test_all_ops ${_size_test__srcs}) 63*523fa7a6SAndroid Build Coastguard Workertarget_link_options_shared_lib(portable_ops_lib) 64*523fa7a6SAndroid Build Coastguard Workertarget_link_libraries( 65*523fa7a6SAndroid Build Coastguard Worker size_test_all_ops executorch portable_ops_lib portable_kernels 66*523fa7a6SAndroid Build Coastguard Worker) 67*523fa7a6SAndroid Build Coastguard Workerif(CMAKE_BUILD_TYPE EQUAL "Release") 68*523fa7a6SAndroid Build Coastguard Worker target_link_options(size_test_all_ops PRIVATE "LINKER:--gc-sections") 69*523fa7a6SAndroid Build Coastguard Workerendif() 70*523fa7a6SAndroid Build Coastguard Worker 71*523fa7a6SAndroid Build Coastguard Worker# Print all summary 72*523fa7a6SAndroid Build Coastguard Workerexecutorch_print_configuration_summary() 73