forked from ElektraInitiative/libelektra
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
91 lines (79 loc) · 3.55 KB
/
CMakeLists.txt
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
find_program (NPM_EXECUTABLE "npm")
list (FIND REMOVED_PLUGINS "yajl" yajl_index)
if (NOT yajl_index EQUAL -1)
remove_tool (${tool} "yajl plugin not available")
else ()
if (NOT NPM_EXECUTABLE)
remove_tool (${tool} "dependency manager 'npm' not found")
else ()
# define configuration path
set (config_root "user/sw/elektra/${tool}/#0/")
set (config_default_profile "current")
# find installation path
set (install_directory ${TARGET_TOOL_DATA_FOLDER}/${tool})
# configure and copy files
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/README.md" "${CMAKE_CURRENT_BINARY_DIR}/README.md")
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/run-elektrad.sh" "${CMAKE_CURRENT_BINARY_DIR}/run-elektrad")
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/run.sh" "${CMAKE_CURRENT_BINARY_DIR}/run-${tool}")
configure_file ("${CMAKE_CURRENT_SOURCE_DIR}/build.sh" "${CMAKE_CURRENT_BINARY_DIR}/build-${tool}")
# install files to destination
install (DIRECTORY elektrad webd client
DESTINATION ${install_directory}
PATTERN "node_modules" EXCLUDE
PATTERN "build" EXCLUDE)
install (FILES README.md kdb.js DESTINATION ${install_directory})
install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/run-${tool} ${CMAKE_CURRENT_BINARY_DIR}/run-elektrad
${CMAKE_CURRENT_BINARY_DIR}/build-${tool}
DESTINATION ${TARGET_TOOL_EXEC_FOLDER})
# build elektra-web
install (CODE "message (\"-- Installing: elektra-web > elektrad\")")
install (
CODE
"execute_process (COMMAND npm install --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/elektrad OUTPUT_QUIET)"
)
install (
CODE
"execute_process (COMMAND npm run build --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/elektrad OUTPUT_QUIET)"
)
install (
CODE
"execute_process (COMMAND npm prune --production --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/elektrad OUTPUT_QUIET)"
)
install (CODE "message (\"-- Installing: elektra-web > webd\")")
install (
CODE
"execute_process (COMMAND npm install --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/webd OUTPUT_QUIET)"
)
install (
CODE
"execute_process (COMMAND npm run build --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/webd OUTPUT_QUIET)"
)
install (
CODE
"execute_process (COMMAND npm prune --production --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/webd OUTPUT_QUIET)"
)
install (CODE "message (\"-- Installing: elektra-web > client\")")
install (
CODE
"execute_process (COMMAND npm install --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/client OUTPUT_QUIET)"
)
install (
CODE
"execute_process (COMMAND npm run build --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/client OUTPUT_QUIET)"
)
install (
CODE
"execute_process (COMMAND npm prune --production --unsafe-perm WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${install_directory}/client OUTPUT_QUIET)"
)
# generate manpages
generate_manpage (kdb-run-elektrad FILENAME ${CMAKE_CURRENT_BINARY_DIR}/README.md)
generate_manpage (kdb-run-${tool} FILENAME ${CMAKE_CURRENT_BINARY_DIR}/README.md)
# test apis
find_program (DREDD_EXECUTABLE "dredd")
if (DREDD_EXECUTABLE)
# testing is possible
add_test (NAME elektra-web COMMAND ./test.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set_property (TEST elektra-web PROPERTY ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib")
endif ()
endif ()
endif ()