@@ -54,6 +54,7 @@ include(${PROJECT_SOURCE_DIR}/tools/cmake/common/preset.cmake)
54
54
include (${PROJECT_SOURCE_DIR} /tools/cmake/Utils.cmake)
55
55
include (CMakeDependentOption)
56
56
include (ExternalProject)
57
+ include (GNUInstallDirs)
57
58
58
59
if (NOT CMAKE_CXX_STANDARD)
59
60
set (CMAKE_CXX_STANDARD 17)
@@ -175,6 +176,7 @@ if(NOT DEFINED FXDIV_SOURCE_DIR)
175
176
)
176
177
set (FXDIV_SOURCE_DIR "backends/xnnpack/third-party/FXdiv" )
177
178
add_subdirectory ("${FXDIV_SOURCE_DIR} " )
179
+ executorch_move_interface_include_directories_to_build_time_only(fxdiv)
178
180
set (CMAKE_POSITION_INDEPENDENT_CODE
179
181
${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
180
182
)
@@ -186,7 +188,9 @@ if(EXECUTORCH_BUILD_CPUINFO)
186
188
${CMAKE_POSITION_INDEPENDENT_CODE}
187
189
)
188
190
set (CMAKE_POSITION_INDEPENDENT_CODE ON )
189
- set (CPUINFO_SOURCE_DIR "backends/xnnpack/third-party/cpuinfo" )
191
+ set (CPUINFO_SOURCE_DIR
192
+ "${CMAKE_CURRENT_LIST_DIR} /backends/xnnpack/third-party/cpuinfo"
193
+ )
190
194
set (CPUINFO_BUILD_TOOLS
191
195
OFF
192
196
CACHE BOOL ""
@@ -216,6 +220,14 @@ if(EXECUTORCH_BUILD_CPUINFO)
216
220
set (CMAKE_POSITION_INDEPENDENT_CODE
217
221
${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
218
222
)
223
+ executorch_add_prefix_to_public_headers(cpuinfo "${CPUINFO_SOURCE_DIR} /" )
224
+ install (
225
+ TARGETS cpuinfo
226
+ EXPORT ExecuTorchTargets
227
+ DESTINATION lib
228
+ INCLUDES
229
+ DESTINATION ${_common_include_directories}
230
+ )
219
231
endif ()
220
232
221
233
if (EXECUTORCH_BUILD_PTHREADPOOL)
@@ -248,6 +260,17 @@ if(EXECUTORCH_BUILD_PTHREADPOOL)
248
260
)
249
261
endif ()
250
262
add_subdirectory ("${PTHREADPOOL_SOURCE_DIR} " )
263
+ executorch_move_interface_include_directories_to_build_time_only(pthreadpool)
264
+ executorch_move_interface_include_directories_to_build_time_only(
265
+ pthreadpool_interface
266
+ )
267
+ install (
268
+ TARGETS pthreadpool pthreadpool_interface fxdiv
269
+ EXPORT ExecuTorchTargets
270
+ DESTINATION lib
271
+ INCLUDES
272
+ DESTINATION ${_common_include_directories}
273
+ )
251
274
set (CMAKE_POSITION_INDEPENDENT_CODE
252
275
${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
253
276
)
@@ -271,8 +294,10 @@ if(NOT "${_repo_dir_name}" STREQUAL "executorch")
271
294
)
272
295
endif ()
273
296
set (_common_include_directories
274
- ${CMAKE_CURRENT_SOURCE_DIR} /..
275
- ${CMAKE_CURRENT_SOURCE_DIR} /runtime/core/portable_type/c10
297
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /..>
298
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /runtime/core/portable_type/c10>
299
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >
300
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} /executorch/runtime/core/portable_type/c10>
276
301
)
277
302
278
303
#
@@ -447,53 +472,54 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/configurations)
447
472
# ${CMAKE_INSTALL_PREFIX}/
448
473
install (
449
474
DIRECTORY runtime/core/
450
- DESTINATION include /executorch/runtime/core
475
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/runtime/core
451
476
FILES_MATCHING
452
477
PATTERN "*.h"
453
478
)
454
479
install (
455
480
DIRECTORY runtime/executor/
456
- DESTINATION include /executorch/runtime/executor
481
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/runtime/executor
457
482
FILES_MATCHING
458
483
PATTERN "*.h"
459
484
)
460
485
install (
461
486
DIRECTORY runtime/kernel/
462
- DESTINATION include /executorch/runtime/kernel
487
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/runtime/kernel
463
488
FILES_MATCHING
464
489
PATTERN "*.h"
465
490
)
466
491
install (
467
492
DIRECTORY runtime/platform/
468
- DESTINATION include /executorch/runtime/platform
493
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/runtime/platform
469
494
FILES_MATCHING
470
495
PATTERN "*.h"
471
496
)
472
497
install (
473
498
DIRECTORY extension/kernel_util/
474
- DESTINATION include /executorch/extension/kernel_util
499
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/extension/kernel_util
475
500
FILES_MATCHING
476
501
PATTERN "*.h"
477
502
)
478
503
install (
479
504
DIRECTORY extension/tensor/
480
- DESTINATION include /executorch/extension/tensor
505
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/extension/tensor
481
506
FILES_MATCHING
482
507
PATTERN "*.h"
483
508
)
484
509
install (
485
510
DIRECTORY extension/threadpool/
486
- DESTINATION include /executorch/extension/threadpool
511
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/extension/threadpool
487
512
FILES_MATCHING
488
513
PATTERN "*.h"
489
514
)
490
515
install (
491
516
TARGETS executorch executorch_core
517
+ EXPORT ExecuTorchTargets
492
518
INCLUDES
493
- DESTINATION ${_common_include_directories }
519
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR }
494
520
)
495
- install (FILES tools/cmake/Utils.cmake tools/cmake/ executorch-config.cmake
496
- DESTINATION lib /cmake/ExecuTorch
521
+ install (FILES tools/cmake/executorch-config.cmake
522
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/ExecuTorch
497
523
)
498
524
499
525
if (EXECUTORCH_BUILD_ARM_BAREMETAL)
@@ -546,6 +572,12 @@ endif()
546
572
547
573
if (EXECUTORCH_BUILD_EXTENSION_DATA_LOADER)
548
574
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/data_loader)
575
+ install (
576
+ DIRECTORY extension/data_loader/
577
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/extension/data_loader
578
+ FILES_MATCHING
579
+ PATTERN "*.h"
580
+ )
549
581
endif ()
550
582
551
583
if (EXECUTORCH_BUILD_EXTENSION_EVALUE_UTIL)
@@ -566,24 +598,39 @@ if(EXECUTORCH_BUILD_EXTENSION_MODULE)
566
598
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/module)
567
599
install (
568
600
DIRECTORY extension/module/
569
- DESTINATION include /executorch/extension/module
601
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /executorch/extension/module
570
602
FILES_MATCHING
571
603
PATTERN "*.h"
572
604
)
573
605
endif ()
574
606
575
607
if (EXECUTORCH_BUILD_EXTENSION_LLM)
608
+ if (EXECUTORCH_BUILD_EXTENSION_LLM_RUNNER)
609
+ set (SUPPORT_REGEX_LOOKAHEAD ON )
610
+ # llama/runner/CMakeLists.txt builds a shared library libllama_runner.so
611
+ # that transitively depends on tokenizers. Need to build tokenizers with
612
+ # -fPIC.
613
+ set (ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG
614
+ ${CMAKE_POSITION_INDEPENDENT_CODE}
615
+ )
616
+ set (CMAKE_POSITION_INDEPENDENT_CODE ON )
617
+ endif ()
576
618
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/llm/tokenizers)
577
- endif ()
578
-
579
- if (EXECUTORCH_BUILD_EXTENSION_LLM_APPLE)
580
- add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/llm/apple )
619
+ if (EXECUTORCH_BUILD_EXTENSION_LLM_RUNNER)
620
+ set (CMAKE_POSITION_INDEPENDENT_CODE
621
+ ${ORIGINAL_CMAKE_POSITION_INDEPENDENT_CODE_FLAG}
622
+ )
623
+ endif ()
581
624
endif ()
582
625
583
626
if (EXECUTORCH_BUILD_EXTENSION_LLM_RUNNER)
584
627
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/llm/runner)
585
628
endif ()
586
629
630
+ if (EXECUTORCH_BUILD_EXTENSION_LLM_APPLE)
631
+ add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/llm/apple )
632
+ endif ()
633
+
587
634
if (EXECUTORCH_BUILD_EXTENSION_RUNNER_UTIL)
588
635
add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /extension/runner_util)
589
636
install (
@@ -689,8 +736,10 @@ if(EXECUTORCH_BUILD_PYBIND)
689
736
target_compile_options (portable_lib PUBLIC ${_pybind_compile_options} )
690
737
target_link_libraries (portable_lib PRIVATE ${_dep_libs} )
691
738
692
- install (TARGETS portable_lib
693
- LIBRARY DESTINATION executorch/extension/pybindings
739
+ install (
740
+ TARGETS portable_lib
741
+ EXPORT ExecuTorchTargets
742
+ LIBRARY DESTINATION executorch/extension/pybindings
694
743
)
695
744
endif ()
696
745
@@ -775,5 +824,11 @@ endif()
775
824
776
825
include (Test .cmake)
777
826
827
+ install (
828
+ EXPORT ExecuTorchTargets
829
+ FILE ExecuTorchTargets.cmake
830
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/ExecuTorch
831
+ )
832
+
778
833
# Print all the configs that were called with announce_configured_options.
779
834
print_configured_options()
0 commit comments