From 6aa368c9613a1a7b7f2f1ce1f025962d40827c67 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Fri, 20 Feb 2026 08:03:01 +0100 Subject: [PATCH 17/20] drop generate_translations_header.c requirement --- CMakeLists.txt | 9 +---- translations/CMakeLists.txt | 79 +++++++++++++------------------------ 2 files changed, 30 insertions(+), 58 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cef44dd1b..ce5e1b557 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -666,16 +666,11 @@ endfunction () # Generate header for embedded translations # Generate header for embedded translations, use target toolchain if depends, otherwise use the # lrelease and lupdate binaries from the host -include(ExternalProject) -ExternalProject_Add(generate_translations_header - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/translations" - BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/translations" - STAMP_DIR ${LRELEASE_PATH} - CMAKE_ARGS -DLRELEASE_PATH=${LRELEASE_PATH} - INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "") +add_subdirectory(translations) include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations") add_subdirectory(external) + # Final setup for libunbound include_directories(${UNBOUND_INCLUDE_DIR}) diff --git a/translations/CMakeLists.txt b/translations/CMakeLists.txt index 3b43360f8..d88a78ced 100644 --- a/translations/CMakeLists.txt +++ b/translations/CMakeLists.txt @@ -30,54 +30,31 @@ cmake_minimum_required(VERSION 3.5) project(translations) -# when crosscompiling import the executable targets from a file -IF(CMAKE_CROSSCOMPILING) - message(WARNING "CrossCompiling") - SET(IMPORT_EXECUTABLES "${CMAKE_CURRENT_BINARY_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Point it to the export file from a native build") - INCLUDE(${IMPORT_EXECUTABLES}) -ENDIF(CMAKE_CROSSCOMPILING) - -# only build the generator if not crosscompiling -IF(NOT CMAKE_CROSSCOMPILING) - add_executable(generate_translations_header generate_translations_header.c) -ENDIF(NOT CMAKE_CROSSCOMPILING) - -if(LRELEASE_PATH STREQUAL "") - find_program(LRELEASE lrelease) -else() - set(LRELEASE ${LRELEASE_PATH}/lrelease) -endif() - -if(LRELEASE STREQUAL "LRELEASE-NOTFOUND") - set(ts_files "") - message(WARNING "lrelease program not found, translation files not built") -else() - execute_process(COMMAND ${LRELEASE} -version - RESULT_VARIABLE lrelease_ret) - if(NOT lrelease_ret EQUAL "0") - set(ts_files "") - message(WARNING "lrelease program not working, translation files not built") - else() - file(GLOB ts_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" *.ts) - foreach(ts_file ${ts_files}) - string(REPLACE ".ts" ".qm" qm_file "${ts_file}") - add_custom_command(TARGET generate_translations_header - PRE_BUILD - COMMAND ${LRELEASE} "${CMAKE_CURRENT_SOURCE_DIR}/${ts_file}" -qm "${qm_file}" - WORKING_DIRECTORY "${CMAKE_CURRENT_BIN_DIR}") - endforeach() - endif() -endif() - -string(REPLACE ".ts" ".qm" qm_files "${ts_files}") - -add_custom_command(TARGET generate_translations_header - POST_BUILD - COMMAND $ ${qm_files} - WORKING_DIRECTORY "${CMAKE_CURRENT_BIN_DIR}" - COMMENT "Generating embedded translations header") - -# export the generator target to a file, so it can be imported (see above) by another build -IF(NOT CMAKE_CROSSCOMPILING) - EXPORT(TARGETS generate_translations_header FILE ${CMAKE_CURRENT_BINARY_DIR}/ImportExecutables.cmake ) -ENDIF(NOT CMAKE_CROSSCOMPILING) +add_custom_target(generate_translations_header) + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/translation_files.h" +"#ifndef TRANSLATION_FILES_H +#define TRANSLATION_FILES_H + +#include + +static const struct embedded_file { + const std::string *name; + const std::string *data; +} embedded_files[] = { + {NULL, NULL} +}; + +static bool find_embedded_file(const std::string &name, std::string &data) { + const struct embedded_file *p; + for (p = embedded_files; p->name != NULL; p++) { + if (*p->name == name) { + data = *p->data; + return true; + } + } + return false; +} + +#endif /* TRANSLATION_FILES_H */ +") -- 2.50.1 (Apple Git-155)