xref: /aosp_15_r20/external/executorch/test/CMakeLists.txt (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
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