From 35df587d9c2d727bfa9c15c75cc01839f362630d Mon Sep 17 00:00:00 2001 From: ochafik Date: Sat, 13 Apr 2024 18:12:56 +0100 Subject: [PATCH] build: don't use xxd in cmake --- examples/server/CMakeLists.txt | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/examples/server/CMakeLists.txt b/examples/server/CMakeLists.txt index df71cee53..946e34883 100644 --- a/examples/server/CMakeLists.txt +++ b/examples/server/CMakeLists.txt @@ -4,20 +4,18 @@ set(SERVER_ASSETS completion.js json-schema-to-grammar.mjs ) -set(SERVER_ASSETS_HPP "") foreach(asset ${SERVER_ASSETS}) - list(APPEND SERVER_ASSETS_HPP "${CMAKE_CURRENT_BINARY_DIR}/${asset}.hpp") + # Portable equivalent of `cd public && xxd -i ${asset} ../${asset}.hpp` + set(input "${CMAKE_CURRENT_SOURCE_DIR}/public/${asset}") + set(output "${CMAKE_CURRENT_BINARY_DIR}/${asset}.hpp") + + string(REGEX REPLACE "\\.| |-" "_" name "${asset}") + file(READ "${input}" data HEX) + string(LENGTH ${data} hex_len) + math(EXPR len "${hex_len} / 2") + string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," data ${data}) + file(WRITE "${output}" "unsigned char ${name}[] = {${data}};\nunsigned int ${name}_len = ${len};\n") endforeach() -foreach(asset ${SERVER_ASSETS}) - add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${asset}.hpp" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/public" - COMMAND xxd -i "${asset}" "${CMAKE_CURRENT_BINARY_DIR}/${asset}.hpp" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/public/${asset}" - VERBATIM - ) -endforeach() -add_custom_target(generate_server_assets ALL DEPENDS ${SERVER_ASSETS_HPP}) set(TARGET server) option(LLAMA_SERVER_VERBOSE "Build verbose logging option for Server" ON) @@ -28,7 +26,6 @@ add_executable(${TARGET} utils.hpp httplib.h ) -add_dependencies(${TARGET} generate_server_assets) install(TARGETS ${TARGET} RUNTIME) target_compile_definitions(${TARGET} PRIVATE SERVER_VERBOSE=$