Skip to content

Commit 0b96cbe

Browse files
authored
Add ONNX patch to avoid regenerating proto files and improve rebuild time. (microsoft#26011)
### Description <!-- Describe your changes. --> Add ONNX patch with changes from onnx/onnx#7253 to avoid regenerating proto files and improve rebuild time. ### Motivation and Context <!-- - Why is this change required? What problem does it solve? - If it fixes an open issue, please link to the issue here. --> Decrease incremental build times during development.
1 parent 953faa7 commit 0b96cbe

File tree

4 files changed

+102
-1
lines changed

4 files changed

+102
-1
lines changed

cmake/external/onnxruntime_external_deps.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,13 @@ else()
498498
endif()
499499

500500
if(Patch_FOUND)
501-
set(ONNXRUNTIME_ONNX_PATCH_COMMAND ${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/onnx/onnx.patch)
501+
set(ONNXRUNTIME_ONNX_PATCH_COMMAND
502+
${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 < ${PROJECT_SOURCE_DIR}/patches/onnx/onnx.patch &&
503+
# Patch changes from https://github.com/onnx/onnx/pull/7253 to avoid unnecessary rebuilding.
504+
# This change should be included in ONNX 1.19.1.
505+
${Patch_EXECUTABLE} --binary --ignore-whitespace -p1 <
506+
${PROJECT_SOURCE_DIR}/patches/onnx/avoid_regenerating_proto_files.patch
507+
)
502508
else()
503509
set(ONNXRUNTIME_ONNX_PATCH_COMMAND "")
504510
endif()
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 479955793..cc3ef1400 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -321,7 +321,7 @@ function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS)
6+
set(${SRCS})
7+
8+
set(GEN_PROTO_PY "${ONNX_ROOT}/onnx/gen_proto.py")
9+
- set(GENERATED_FILE_TARGETS)
10+
+ set(GENERATED_FILES)
11+
foreach(INFILE ${ARGN})
12+
set(ABS_FILE "${ONNX_ROOT}/${INFILE}")
13+
get_filename_component(FILE_DIR ${ABS_FILE} DIRECTORY)
14+
@@ -371,12 +371,11 @@ function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS)
15+
list(APPEND GEN_PROTO_ARGS "${ONNX_PROTOC_EXECUTABLE}")
16+
endif()
17+
18+
- add_custom_target("${GENERATED_FILE_WE}_proto_file"
19+
- COMMAND ${ONNX_PYTHON_INTERPRETER} "${GEN_PROTO_PY}" ${GEN_PROTO_ARGS}
20+
- BYPRODUCTS "${GENERATED_PROTO}"
21+
- DEPENDS ${INFILE}
22+
- COMMENT "Running gen_proto.py on ${INFILE}"
23+
- )
24+
+ # Use add_custom_command to avoid re-generate of PROTO files
25+
+ add_custom_command(OUTPUT "${GENERATED_PROTO}"
26+
+ COMMAND ${ONNX_PYTHON_INTERPRETER} "${GEN_PROTO_PY}" ${GEN_PROTO_ARGS}
27+
+ DEPENDS ${INFILE}
28+
+ COMMENT "Running gen_proto.py on ${INFILE}")
29+
message("Generated: ${GENERATED_PROTO}")
30+
31+
set(PROTOC_ARGS
32+
@@ -393,11 +392,10 @@ function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS)
33+
list(APPEND PROTOC_ARGS ${CMAKE_CURRENT_BINARY_DIR})
34+
endif()
35+
endif()
36+
- list(APPEND GENERATED_FILE_TARGETS ${GENERATED_FILE_WE}_proto_file)
37+
- add_custom_target(${GENERATED_FILE_WE}_src
38+
+ list(APPEND GENERATED_FILES "${GENERATED_PROTO}")
39+
+ add_custom_command(OUTPUT "${OUTPUT_PB_SRC}"
40+
COMMAND "${ONNX_PROTOC_EXECUTABLE}" ${PROTOC_ARGS}
41+
- BYPRODUCTS "${OUTPUT_PB_SRC}"
42+
- DEPENDS ${GENERATED_FILE_TARGETS}
43+
+ DEPENDS ${GENERATED_FILES}
44+
COMMENT "Running C++ protocol buffer compiler on ${GENERATED_PROTO}")
45+
endforeach()
46+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 479955793..cc3ef1400 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -321,7 +321,7 @@ function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS)
6+
set(${SRCS})
7+
8+
set(GEN_PROTO_PY "${ONNX_ROOT}/onnx/gen_proto.py")
9+
- set(GENERATED_FILE_TARGETS)
10+
+ set(GENERATED_FILES)
11+
foreach(INFILE ${ARGN})
12+
set(ABS_FILE "${ONNX_ROOT}/${INFILE}")
13+
get_filename_component(FILE_DIR ${ABS_FILE} DIRECTORY)
14+
@@ -371,12 +371,11 @@ function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS)
15+
list(APPEND GEN_PROTO_ARGS "${ONNX_PROTOC_EXECUTABLE}")
16+
endif()
17+
18+
- add_custom_target("${GENERATED_FILE_WE}_proto_file"
19+
- COMMAND ${ONNX_PYTHON_INTERPRETER} "${GEN_PROTO_PY}" ${GEN_PROTO_ARGS}
20+
- BYPRODUCTS "${GENERATED_PROTO}"
21+
- DEPENDS ${INFILE}
22+
- COMMENT "Running gen_proto.py on ${INFILE}"
23+
- )
24+
+ # Use add_custom_command to avoid re-generate of PROTO files
25+
+ add_custom_command(OUTPUT "${GENERATED_PROTO}"
26+
+ COMMAND ${ONNX_PYTHON_INTERPRETER} "${GEN_PROTO_PY}" ${GEN_PROTO_ARGS}
27+
+ DEPENDS ${INFILE}
28+
+ COMMENT "Running gen_proto.py on ${INFILE}")
29+
message("Generated: ${GENERATED_PROTO}")
30+
31+
set(PROTOC_ARGS
32+
@@ -393,11 +392,10 @@ function(RELATIVE_PROTOBUF_GENERATE_CPP SRCS)
33+
list(APPEND PROTOC_ARGS ${CMAKE_CURRENT_BINARY_DIR})
34+
endif()
35+
endif()
36+
- list(APPEND GENERATED_FILE_TARGETS ${GENERATED_FILE_WE}_proto_file)
37+
- add_custom_target(${GENERATED_FILE_WE}_src
38+
+ list(APPEND GENERATED_FILES "${GENERATED_PROTO}")
39+
+ add_custom_command(OUTPUT "${OUTPUT_PB_SRC}"
40+
COMMAND "${ONNX_PROTOC_EXECUTABLE}" ${PROTOC_ARGS}
41+
- BYPRODUCTS "${OUTPUT_PB_SRC}"
42+
- DEPENDS ${GENERATED_FILE_TARGETS}
43+
+ DEPENDS ${GENERATED_FILES}
44+
COMMENT "Running C++ protocol buffer compiler on ${GENERATED_PROTO}")
45+
endforeach()
46+

cmake/vcpkg-ports/onnx/portfile.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ vcpkg_from_github(
77
SHA512 e6f7b5782a43a91783607549e4d0f0a9cbd46dfb67a602f81aaffc7bcdd8f450fe9c225f0bc314704f2923e396f0df5b03ea91af4a7887203c0b8372bc2749d0
88
PATCHES
99
fix-cmakelists.patch
10+
# Patch changes from https://github.com/onnx/onnx/pull/7253 to avoid unnecessary rebuilding.
11+
# This change should be included in ONNX 1.19.1.
12+
avoid_regenerating_proto_files.patch
1013
fix-dependency-protobuf.patch
1114
binskim.patch
1215
)

0 commit comments

Comments
 (0)