-
Notifications
You must be signed in to change notification settings - Fork 103
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
114 lines (91 loc) · 3.83 KB
/
CMakeLists.txt
File metadata and controls
114 lines (91 loc) · 3.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
cmake_minimum_required(VERSION 3.22)
# For std::filesystem
# Must be a cache variable and be set before project()
# Reference: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
# Maybe it can be a normal variable if policy CMP0126 is set to NEW?
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15 CACHE STRING "Minimum OS X deployment version")
project(onnx_optimizer C CXX)
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
include(cmake/utils.cmake)
# For integration with onnxruntime_webassembly etc.
if (NOT DEFINED ONNX_TARGET_NAME)
set(ONNX_TARGET_NAME onnx)
endif()
if(DEFINED BUILD_ONNX_PYTHON AND NOT DEFINED ONNX_BUILD_PYTHON)
set(ONNX_BUILD_PYTHON ${BUILD_ONNX_PYTHON})
endif()
option(ONNX_OPT_USE_SYSTEM_PROTOBUF "" OFF)
if(NOT ONNX_OPT_USE_SYSTEM_PROTOBUF)
option(protobuf_BUILD_TESTS "" OFF)
option(protobuf_MSVC_STATIC_RUNTIME "" ${ONNX_USE_MSVC_STATIC_RUNTIME})
set(protobuf_FORCE_FETCH_DEPENDENCIES ON)
set(ONNX_BUILD_CUSTOM_PROTOBUF ON)
endif()
set(ONNX_ROOT ${PROJECT_SOURCE_DIR}/third_party/onnx)
add_subdirectory_if_no_target(${ONNX_ROOT} ${ONNX_TARGET_NAME})
file(READ "${PROJECT_SOURCE_DIR}/VERSION_NUMBER" ONNX_OPTIMIZER_VERSION)
string(STRIP "${ONNX_OPTIMIZER_VERSION}" ONNX_OPTIMIZER_VERSION)
file(GLOB onnx_opt_srcs CONFIGURE_DEPENDS "onnxoptimizer/*.cc"
"onnxoptimizer/*.h"
"onnxoptimizer/passes/*.cc"
"onnxoptimizer/passes/*.h"
)
list(REMOVE_ITEM onnx_opt_srcs "${PROJECT_SOURCE_DIR}/onnxoptimizer/cpp2py_export.cc")
onnxopt_add_library(onnx_optimizer ${onnx_opt_srcs})
target_link_libraries(onnx_optimizer PUBLIC ${ONNX_TARGET_NAME})
target_include_directories(onnx_optimizer PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
onnxopt_add_executable(onnx_optimizer_exec examples/onnx_optimizer_exec.cpp)
target_link_libraries(onnx_optimizer_exec onnx_optimizer)
file(GLOB onnx_opt_c_api_srcs CONFIGURE_DEPENDS "onnxoptimizer/c_api/*.cc"
"onnxoptimizer/c_api/*.h"
)
onnxopt_add_library(onnx_optimizer_c_api ${onnx_opt_c_api_srcs})
target_link_libraries(onnx_optimizer_c_api PRIVATE onnx_optimizer)
target_include_directories(onnx_optimizer_c_api PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
if(ONNX_BUILD_PYTHON)
find_package(
Python 3
REQUIRED COMPONENTS Interpreter Development.Module
OPTIONAL_COMPONENTS Development.SABIModule)
nanobind_add_module(onnx_opt_cpp2py_export "onnxoptimizer/cpp2py_export.cc" STABLE_ABI)
target_link_libraries(onnx_opt_cpp2py_export PRIVATE onnx_optimizer)
endif()
include(GNUInstallDirs)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/onnxoptimizer
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING
PATTERN "*.h")
configure_file(
${PROJECT_SOURCE_DIR}/cmake/ONNXOptimizerConfigVersion.cmake.in
${PROJECT_BINARY_DIR}/ONNXOptimizerConfigVersion.cmake
@ONLY)
configure_file(
${PROJECT_SOURCE_DIR}/cmake/ONNXOptimizerConfig.cmake.in
${PROJECT_BINARY_DIR}/ONNXOptimizerConfig.cmake
@ONLY)
install(FILES
${PROJECT_BINARY_DIR}/ONNXOptimizerConfigVersion.cmake
${PROJECT_BINARY_DIR}/ONNXOptimizerConfig.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ONNXOptimizer
COMPONENT dev)
install(EXPORT ONNXOptimizerTargets DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ONNXOptimizer")
install(TARGETS
onnx_optimizer onnx_optimizer_c_api
EXPORT ONNXOptimizerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(ONNX_BUILD_TESTS)
enable_testing()
include(third_party/onnx/cmake/external/googletest.cmake)
add_executable(test_simple tests/test_simple.cc)
target_link_libraries(test_simple onnx_optimizer gtest gtest_main)
add_test(NAME test_simple COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test_simple)
add_dependencies(test_simple onnx_gtests)
endif()