Skip to content

Commit a10bcd2

Browse files
authored
fix(interactive): Add make install for GraphPlanner C++ Native Interface (#4558)
<!-- Thanks for your contribution! please review https://github.com/alibaba/GraphScope/blob/main/CONTRIBUTING.md before opening an issue. --> ## What do these changes do? as titled. <!-- Please give a short brief about these changes. --> ## Related issue number <!-- Are there any issues opened that will be resolved by merging this change? --> Fixes
1 parent 5085d63 commit a10bcd2

File tree

3 files changed

+52
-11
lines changed

3 files changed

+52
-11
lines changed

interactive_engine/compiler/src/main/native/CMakeLists.txt

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ project(COMPILER-JNI
1818

1919
option(BUILD_TEST "Whether to build test" ON)
2020

21+
include(GNUInstallDirs)
22+
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
23+
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
24+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,$ORIGIN")
25+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
26+
2127
set(JAVA_AWT_INCLUDE_PATH NotNeeded)
2228
set(CMAKE_CXX_STANDARD 17)
2329
find_package(JNI QUIET)
@@ -45,8 +51,6 @@ set(CODE_GEN_PROTOBUF_FILES
4551
${GIE_COMPILER_PROTO_DIR}/basic_type.proto
4652
)
4753

48-
#create directory first
49-
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/flex/proto_generated_gie)
5054

5155
# proto gen for gie proto
5256
protobuf_generate(APPEND_PATH
@@ -55,21 +59,55 @@ protobuf_generate(APPEND_PATH
5559
OUT_VAR PROTO_SRCS_GIE
5660
PROTOS ${CODE_GEN_PROTOBUF_FILES}
5761
IMPORT_DIRS ${GIE_COMPILER_PROTO_DIR}
58-
PROTOC_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/flex/proto_generated_gie
62+
PROTOC_OUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include
5963
)
6064

61-
add_library(ir_proto SHARED ${PROTO_SRCS_GIE})
62-
63-
target_link_libraries(ir_proto ${Protobuf_LIBRARIES})
64-
65-
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
65+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
6666

6767
file(GLOB_RECURSE PLANNER_SRC_FILES "graph_planner.cc")
68-
add_library(graph_planner SHARED ${PLANNER_SRC_FILES})
69-
target_link_libraries(graph_planner PUBLIC ir_proto ${CMAKE_JNI_LINKER_FLAGS} ${JAVA_JVM_LIBRARY} ${JNI_LIBRARIES} ${Protobuf_LIBRARIES})
68+
add_library(graph_planner SHARED ${PLANNER_SRC_FILES} ${PROTO_SRCS_GIE})
69+
target_link_libraries(graph_planner ${CMAKE_JNI_LINKER_FLAGS} ${JAVA_JVM_LIBRARY} ${JNI_LIBRARIES} ${Protobuf_LIBRARIES})
7070
target_include_directories(graph_planner PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
7171

7272
if (BUILD_TEST)
7373
add_executable(test_graph_planner test/test.cc)
7474
target_link_libraries(test_graph_planner PRIVATE graph_planner)
7575
endif()
76+
77+
# Define where the output library will be installed
78+
install(TARGETS graph_planner
79+
EXPORT GraphPlannerTargets
80+
LIBRARY DESTINATION lib
81+
ARCHIVE DESTINATION lib
82+
RUNTIME DESTINATION bin
83+
)
84+
85+
# Install header files
86+
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include)
87+
88+
# Export CMake package configuration
89+
install(EXPORT GraphPlannerTargets
90+
FILE GraphPlannerTargets.cmake
91+
NAMESPACE GraphPlanner::
92+
DESTINATION lib/cmake/GraphPlanner
93+
)
94+
95+
# Create a GraphPlannerConfig.cmake file for find_package()
96+
include(CMakePackageConfigHelpers)
97+
write_basic_package_version_file(
98+
"${CMAKE_CURRENT_BINARY_DIR}/GraphPlannerConfigVersion.cmake"
99+
VERSION 1.0.0
100+
COMPATIBILITY AnyNewerVersion
101+
)
102+
103+
configure_package_config_file(
104+
"${CMAKE_SOURCE_DIR}/cmake/GraphPlannerConfig.cmake.in"
105+
"${CMAKE_CURRENT_BINARY_DIR}/GraphPlannerConfig.cmake"
106+
INSTALL_DESTINATION lib/cmake/GraphPlanner
107+
)
108+
109+
install(FILES
110+
"${CMAKE_CURRENT_BINARY_DIR}/GraphPlannerConfig.cmake"
111+
"${CMAKE_CURRENT_BINARY_DIR}/GraphPlannerConfigVersion.cmake"
112+
DESTINATION lib/cmake/GraphPlanner
113+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/GraphPlannerTargets.cmake")

interactive_engine/compiler/src/main/native/graph_planner.h renamed to interactive_engine/compiler/src/main/native/include/graph_planner.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ limitations under the License.
2323
#include <string>
2424
#include <vector>
2525

26-
#include "flex/proto_generated_gie/physical.pb.h"
26+
#include "physical.pb.h"
2727

2828
#ifndef GRAPH_PLANNER_JNI_INVOKER
2929
#define GRAPH_PLANNER_JNI_INVOKER 1 // 1: JNI, 0: subprocess

0 commit comments

Comments
 (0)