From 67f912bad6561b63fe78028222317c6c05ba04c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Simonis?= <simonisfrederic@gmail.com>
Date: Thu, 12 Aug 2021 09:32:33 +0200
Subject: [PATCH 2/5] Cleanup CMake of translations

Use custom command to prevent recompilation.
Added overall target "Translations" which ensures building all
translations.
---
 resources/translations/CMakeLists.txt | 32 +++++++++++++++++++--------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/resources/translations/CMakeLists.txt b/resources/translations/CMakeLists.txt
index 106fc923a..2c93c98a1 100644
--- a/resources/translations/CMakeLists.txt
+++ b/resources/translations/CMakeLists.txt
@@ -18,6 +18,8 @@ endforeach(TS_FILEPATH)
 
 message(STATUS "The following GUI languages will be installed: ${WANT_GUI_LANG}")
 
+set(QM_FILES)
+
 #If the user specified WANT_GUI_LANG, then we only create build/install targets for those languages
 if(WANT_GUI_LANG)
   foreach(TS_FILEPATH ${SCRIBUS_TS_FILES})
@@ -28,11 +30,13 @@ if(WANT_GUI_LANG)
 	  if(LANGSTR STREQUAL WANTED_LANG)
 		#message(STATUS "You want to install ${LANGSTR}:${WANTED_LANG}")
 		set(QM_FILENAME "scribus.${LANGSTR}.qm")
-		add_custom_target("release_ts_${LANGSTR}" ALL
-		  COMMAND ${LRELEASE_EXECUTABLE} ${TS_FILEPATH} -silent -qm ${QM_FILENAME}
-		  DEPENDS ${TS_FILEPATH}
+		add_custom_command(
+      OUTPUT ${QM_FILENAME}
+			COMMAND ${LRELEASE_EXECUTABLE} ${TS_FILEPATH} -silent -qm ${QM_FILENAME}
+      MAIN_DEPENDENCY ${TS_FILEPATH}
+      COMMENT "release_ts_${LANGSTR}"
 		)
-		install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${QM_FILENAME}" DESTINATION ${SHAREDIR}/translations)
+    list(APPEND QM_FILES "${QM_FILENAME}")
 	  endif(LANGSTR STREQUAL WANTED_LANG)
 	endforeach(WANTED_LANG)
   endforeach(TS_FILEPATH)
@@ -43,11 +47,21 @@ else(WANT_GUI_LANG)
 	string(REGEX MATCH "\\.([0-9a-zA-Z_]*)\\." LANGSTR ${TS_FILENAME})
 	string(REPLACE "." ""  LANGSTR ${LANGSTR})
 	set(QM_FILENAME "scribus.${LANGSTR}.qm")
-	add_custom_target("release_ts_${LANGSTR}" ALL
-	  COMMAND ${LRELEASE_EXECUTABLE} ${TS_FILEPATH} -silent -qm ${QM_FILENAME}
-	  DEPENDS ${TS_FILEPATH}
-	)
-	install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${QM_FILENAME}" DESTINATION ${SHAREDIR}/translations)
+  add_custom_command(
+    OUTPUT ${QM_FILENAME}
+    COMMAND ${LRELEASE_EXECUTABLE} ${TS_FILEPATH} -silent -qm ${QM_FILENAME}
+    MAIN_DEPENDENCY ${TS_FILEPATH}
+    COMMENT "release_ts_${LANGSTR}"
+  )
+  list(APPEND QM_FILES "${QM_FILENAME}")
   endforeach(TS_FILEPATH)
 endif(WANT_GUI_LANG)
 
+add_custom_target(Translations ALL
+  DEPENDS ${QM_FILES}
+  )
+foreach(QM_FILE IN LISTS QM_FILES)
+		install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${QM_FILE}" DESTINATION ${SHAREDIR}/translations)
+endforeach(QM_FILE)
+
+unset(QM_FILES)
-- 
2.32.0

