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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
From 6aa368c9613a1a7b7f2f1ce1f025962d40827c67 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
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 $<TARGET_FILE:generate_translations_header> ${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 <string>
+
+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)
|