]> git.proxmox.com Git - ceph.git/blame - ceph/src/pybind/mgr/dashboard/CMakeLists.txt
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / pybind / mgr / dashboard / CMakeLists.txt
CommitLineData
11fdf7f2
TL
1set(MGR_DASHBOARD_VIRTUALENV ${CEPH_BUILD_VIRTUALENV}/mgr-dashboard-virtualenv)
2
3add_custom_target(mgr-dashboard-test-venv
4 COMMAND
5 ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${MGR_DASHBOARD_VIRTUALENV}
6 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard
7 COMMENT "dashboard tests virtualenv is being created")
8add_dependencies(tests mgr-dashboard-test-venv)
9
10include(CMakeParseArguments)
11function(add_npm_command)
12 set(options NODEENV)
13 set(single_kw OUTPUT COMMENT WORKING_DIRECTORY)
14 set(multi_kw COMMAND DEPENDS)
15 cmake_parse_arguments(NC "${options}" "${single_kw}" "${multi_kw}" ${ARGN})
16 string(REPLACE ";" " " command "${NC_COMMAND}")
17 if(NC_NODEENV)
18 string(REGEX REPLACE "^(npm .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command})
19 endif()
20 string(REPLACE " " ";" command "${command}")
21 add_custom_command(
22 OUTPUT "${NC_OUTPUT}"
23 COMMAND ${command}
24 DEPENDS ${NC_DEPENDS}
25 WORKING_DIRECTORY "${NC_WORKING_DIRECTORY}"
26 COMMENT ${NC_COMMENT})
27endfunction(add_npm_command)
28
29if(WITH_MGR_DASHBOARD_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")
30
31if(WITH_SYSTEM_NPM)
32 set(mgr-dashboard-nodeenv-dir )
33 set(nodeenv "")
34 add_custom_target(mgr-dashboard-frontend-deps
35 DEPENDS frontend/node_modules
36 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend
37 )
38else()
39 set(mgr-dashboard-nodeenv-dir ${CMAKE_CURRENT_BINARY_DIR}/node-env)
40 set(nodeenv NODEENV)
41
42 add_custom_command(
43 OUTPUT "${mgr-dashboard-nodeenv-dir}/bin/npm"
44 COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${mgr-dashboard-nodeenv-dir}
45 COMMAND ${mgr-dashboard-nodeenv-dir}/bin/pip install nodeenv
46 COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv -p --node=10.13.0
47 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
48 COMMENT "dashboard nodeenv is being installed"
49 )
50 add_custom_target(mgr-dashboard-nodeenv
51 DEPENDS ${mgr-dashboard-nodeenv-dir}/bin/npm
52 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
53 )
54 add_custom_target(mgr-dashboard-frontend-deps
55 DEPENDS frontend/node_modules mgr-dashboard-nodeenv
56 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend
57 )
58endif()
59
60add_npm_command(
61 OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/node_modules"
62 COMMAND npm ci
63 DEPENDS frontend/package.json
64 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend
65 COMMENT "dashboard frontend dependencies are being installed"
66 ${nodeenv}
67)
68
69# Glob some frontend files. With CMake 3.6, this can be simplified
70# to *.ts *.html. Just add:
71# list(FILTER frontend_src INCLUDE REGEX "frontend/src")
72file(
73 GLOB_RECURSE frontend_src
74 frontend/src/*.ts
75 frontend/src/*.html
76 frontend/src/*/*.ts
77 frontend/src/*/*.html
78 frontend/src/*/*/*.ts
79 frontend/src/*/*/*.html
80 frontend/src/*/*/*/*.ts
81 frontend/src/*/*/*/*.html
82 frontend/src/*/*/*/*/*.ts
83 frontend/src/*/*/*/*/*.html
84 frontend/src/*/*/*/*/*/*.ts
85 frontend/src/*/*/*/*/*/*.html)
86
87if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
88 set(npm_command npm run build -- --prod --progress=false)
89else()
90 set(npm_command npm run build -- --progress=false)
91endif()
92
93add_npm_command(
94 OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/dist"
95 COMMAND ${npm_command}
96 DEPENDS ${frontend_src} frontend/node_modules
97 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend
98 COMMENT "dashboard frontend is being created"
99 ${nodeenv}
100)
101add_custom_target(mgr-dashboard-frontend-build
102 ALL
103 DEPENDS frontend/dist mgr-dashboard-frontend-deps
104 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend)
105add_dependencies(tests mgr-dashboard-frontend-build)
106endif(WITH_MGR_DASHBOARD_FRONTEND AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM")