blob: ff58a8429a9533ebe799e89ab3814f4de345ddb5 [file] [log] [blame]
set(TIMESTAMP_FILE "${CMAKE_CURRENT_BINARY_DIR}/webpack.timestamp")
# this could be improved. It basically sets all source files of a certain type as dependencies
execute_process(
COMMAND git -C ${CMAKE_CURRENT_SOURCE_DIR}/phosphor-webui ls-files --full-name
*.js *.css *.html
OUTPUT_VARIABLE PHOSPHOR_FILES
)
STRING(REGEX REPLACE "\n" ";" PHOSPHOR_FILES "${PHOSPHOR_FILES}")
SET(PHOSPHOR_FILES_FULLPATH "")
FOREACH(filename ${PHOSPHOR_FILES})
LIST(APPEND PHOSPHOR_FILES_FULLPATH "${CMAKE_CURRENT_SOURCE_DIR}/phosphor-webui/${filename}")
ENDFOREACH(filename ${PHOSPHOR_FILES})
# if this is a debug build, don't minify
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
set(DEBUG_ADD --devtool source-map)
ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)
add_custom_command(
COMMAND
cd ${CMAKE_CURRENT_SOURCE_DIR}/phosphor-webui &&
npm install yarn --no-progress --loglevel info -g --prefix ${CMAKE_BINARY_DIR}/node_prefix &&
${CMAKE_BINARY_DIR}/node_prefix/bin/yarn install --dev --no-progress --loglevel info --network-concurrency 1 &&
${CMAKE_BINARY_DIR}/node_prefix/bin/yarn run build ${DEBUG_ADD} &&
touch ${TIMESTAMP_FILE}
OUTPUT ${TIMESTAMP_FILE}
DEPENDS ${PHOSPHOR_FILES_FULLPATH}
)
add_custom_target(webpackbuild
DEPENDS ${TIMESTAMP_FILE}
SOURCES ${PHOSPHOR_FILES_FULLPATH}
)
set(WEBASSET_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/build_web_assets.py")
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/generated/webassets.cpp
OUTPUT ${CMAKE_BINARY_DIR}/generated/webassets.hpp
COMMAND python3 ${WEBASSET_SCRIPT}
-o ${CMAKE_BINARY_DIR}/generated/webassets.cpp
-i ${CMAKE_CURRENT_SOURCE_DIR}/phosphor-webui/dist
DEPENDS ${TIMESTAMP_FILE} ${WEBASSET_SCRIPT}
COMMENT "Building CPP file webassets.cpp"
)
add_custom_target(packagestaticcpp ALL DEPENDS
${CMAKE_BINARY_DIR}/generated/webassets.cpp
${CMAKE_BINARY_DIR}/generated/webassets.hpp
)
add_dependencies(packagestaticcpp webpackbuild)