Skip to content
This repository was archived by the owner on Jun 13, 2024. It is now read-only.

Commit 3a93418

Browse files
authored
Fix RPATH for shared library (#81)
* Set rpath to '$ORIGIN' to help locate napa shared library * Set install rpath to "@loader_path" in Mac os
1 parent 96c3aa4 commit 3a93418

File tree

1 file changed

+45
-33
lines changed

1 file changed

+45
-33
lines changed

node/CMakeLists.txt

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,45 @@
1-
# Files to compile
2-
file(GLOB SOURCE_FILES
3-
"addon.cpp"
4-
"node-zone-delegates.cpp"
5-
"${PROJECT_SOURCE_DIR}/src/platform/filesystem.cpp"
6-
"${PROJECT_SOURCE_DIR}/src/platform/os.cpp"
7-
"${PROJECT_SOURCE_DIR}/src/zone/call-context.cpp"
8-
"${PROJECT_SOURCE_DIR}/src/zone/call-task.cpp"
9-
"${PROJECT_SOURCE_DIR}/src/zone/eval-task.cpp"
10-
"${PROJECT_SOURCE_DIR}/src/zone/terminable-task.cpp"
11-
"${PROJECT_SOURCE_DIR}/src/module/core-modules/napa/*.cpp")
12-
13-
# The addon name
14-
set(TARGET_NAME "${PROJECT_NAME}-binding")
15-
16-
# The generated library
17-
add_library(${TARGET_NAME} SHARED ${SOURCE_FILES})
18-
19-
set_target_properties(${TARGET_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
20-
21-
# Include directories
22-
target_include_directories(${TARGET_NAME} PRIVATE
23-
${CMAKE_JS_INC}
24-
${PROJECT_SOURCE_DIR}/src
25-
${PROJECT_SOURCE_DIR}/src/module/core-modules/napa)
26-
27-
# Compiler definitions
28-
target_compile_definitions(${TARGET_NAME} PRIVATE BUILDING_NODE_EXTENSION NAPA_BINDING_EXPORTS)
29-
30-
# Link libraries
31-
target_link_libraries(${TARGET_NAME} PRIVATE
32-
${PROJECT_NAME}
33-
${CMAKE_JS_LIB})
1+
# Files to compile
2+
file(GLOB SOURCE_FILES
3+
"addon.cpp"
4+
"node-zone-delegates.cpp"
5+
"${PROJECT_SOURCE_DIR}/src/platform/filesystem.cpp"
6+
"${PROJECT_SOURCE_DIR}/src/platform/os.cpp"
7+
"${PROJECT_SOURCE_DIR}/src/zone/call-context.cpp"
8+
"${PROJECT_SOURCE_DIR}/src/zone/call-task.cpp"
9+
"${PROJECT_SOURCE_DIR}/src/zone/eval-task.cpp"
10+
"${PROJECT_SOURCE_DIR}/src/zone/terminable-task.cpp"
11+
"${PROJECT_SOURCE_DIR}/src/module/core-modules/napa/*.cpp")
12+
13+
# The addon name
14+
set(TARGET_NAME "${PROJECT_NAME}-binding")
15+
16+
# The generated library
17+
add_library(${TARGET_NAME} SHARED ${SOURCE_FILES})
18+
19+
set_target_properties(${TARGET_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
20+
21+
# Rpath definitions
22+
23+
if (APPLE)
24+
set_target_properties(${TARGET_NAME} PROPERTIES INSTALL_RPATH "@loader_path")
25+
else ()
26+
set_target_properties(${TARGET_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/")
27+
endif()
28+
29+
set_target_properties(${TARGET_NAME} PROPERTIES
30+
BUILD_WITH_INSTALL_RPATH TRUE
31+
INSTALL_RPATH_USE_LINK_PATH FALSE)
32+
33+
# Include directories
34+
target_include_directories(${TARGET_NAME} PRIVATE
35+
${CMAKE_JS_INC}
36+
${PROJECT_SOURCE_DIR}/src
37+
${PROJECT_SOURCE_DIR}/src/module/core-modules/napa)
38+
39+
# Compiler definitions
40+
target_compile_definitions(${TARGET_NAME} PRIVATE BUILDING_NODE_EXTENSION NAPA_BINDING_EXPORTS)
41+
42+
# Link libraries
43+
target_link_libraries(${TARGET_NAME} PRIVATE
44+
${PROJECT_NAME}
45+
${CMAKE_JS_LIB})

0 commit comments

Comments
 (0)