diff cmake/MlkMap.cmake @ 320:8f9937403749

misc: improve loading of data
author David Demelier <markand@malikania.fr>
date Fri, 01 Oct 2021 20:30:00 +0200
parents d01e83210ca2
children 19782ea1cf4a
line wrap: on
line diff
--- a/cmake/MlkMap.cmake	Fri Oct 01 14:10:06 2021 +0200
+++ b/cmake/MlkMap.cmake	Fri Oct 01 20:30:00 2021 +0200
@@ -16,47 +16,20 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
 
-macro(mlk_map)
-	set(options "")
-	set(oneValueArgs "OUTPUTS_VAR")
-	set(multiValueArgs "MAPS")
-
-	cmake_parse_arguments(_map "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-	if (NOT _map_OUTPUTS_VAR)
-		message(FATAL_ERROR "Missing OUTPUTS_VAR")
-	elseif (NOT _map_MAPS)
-		message(FATAL_ERROR "Missing MAPS")
+function(mlk_map input output)
+	if (MLK_WITH_ZSTD)
+		set(cmd
+			COMMAND $<TARGET_FILE:mlk-map> < ${input} > ${output}.zst
+			COMMAND ZSTD::exe -17 -fq --rm ${output}.zst -o ${output}
+		)
+	else ()
+		set(cmd COMMAND $<TARGET_FILE:mlk-map> < ${input} > ${output})
 	endif ()
 
-	foreach (m ${_map_MAPS})
-		cmake_path(GET m FILENAME name)
-		cmake_path(REMOVE_EXTENSION name)
-
-		if (MLK_WITH_ZSTD)
-			set(_map_cmds
-				COMMAND $<TARGET_FILE:mlk-map> < ${m} > ${CMAKE_CURRENT_BINARY_DIR}/${name}.tmp
-				COMMAND
-					ZSTD::exe -17 -fq
-						--rm ${CMAKE_CURRENT_BINARY_DIR}/${name}.tmp
-						-o ${CMAKE_CURRENT_BINARY_DIR}/${name}.map
-			)
-		else ()
-			set(_map_cmds
-				COMMAND $<TARGET_FILE:mlk-map> < ${m} > ${CMAKE_CURRENT_BINARY_DIR}/${name}.map
-			)
-		endif ()
-
-		add_custom_command(
-			OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}.map
-			COMMAND
-				${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}
-			COMMAND
-				${_map_cmds}
-			DEPENDS $<TARGET_FILE:mlk-map>
-			COMMENT "Generating ${name}.map"
-		)
-
-		list(APPEND ${_map_OUTPUTS_VAR} ${CMAKE_CURRENT_BINARY_DIR}/${name}.map)
-	endforeach ()
-endmacro()
+	add_custom_command(
+		OUTPUT ${output}
+		COMMAND ${cmd}
+		DEPENDS $<TARGET_FILE:mlk-map>
+		COMMENT "Generating ${output}"
+	)
+endfunction()