From 7468cc7f0e75b4a2519980efd24895f899298634 Mon Sep 17 00:00:00 2001
From: Michael Ragazzon <michael.ragazzon@gmail.com>
Date: Sat, 12 Oct 2024 22:20:43 +0200
Subject: [PATCH] Fix missing data when running samples built with Emscripten

---
 CMake/Utilities.cmake | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/CMake/Utilities.cmake b/CMake/Utilities.cmake
index 9f62b66ee..93a733cf7 100644
--- a/CMake/Utilities.cmake
+++ b/CMake/Utilities.cmake
@@ -52,6 +52,22 @@ function(report_dependency_found_or_error friendly_name target_name)
 	message(STATUS "Found ${target_name}${success_message}")
 endfunction()
 
+#[[
+	Returns a list of data directories for the current target.
+	Arguments:
+		- target: Name of the target
+		- out_var: Name of the returned variable
+]]
+function(get_data_dirs target out_var)
+	set(data_dirs "")
+	foreach(dir IN ITEMS "data" "lua")
+		if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${dir}")
+			list(APPEND data_dirs "${dir}")
+		endif()
+	endforeach()
+	set(${out_var} ${data_dirs} PARENT_SCOPE)
+endfunction()
+
 #[[
 	Set compiler options and features that are common to all RmlUi targets.
 	Arguments:
@@ -107,6 +123,7 @@ function(set_common_target_options target)
 		file(GLOB asset_files "${PROJECT_SOURCE_DIR}/${common_assets_dir}/*")
 
 		# Add sample-specific assets.
+		get_data_dirs(${target} data_dirs)
 		foreach(source_relative_dir IN LISTS data_dirs)
 			set(abs_dir "${CMAKE_CURRENT_SOURCE_DIR}/${source_relative_dir}")
 			file(RELATIVE_PATH root_relative_dir "${PROJECT_SOURCE_DIR}" "${abs_dir}")
@@ -149,12 +166,7 @@ endfunction()
 		- target: The name of the target
 ]]
 function(install_sample_target target)
-	set(data_dirs "")
-	foreach(dir IN ITEMS "data" "lua")
-		if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${dir}")
-			list(APPEND data_dirs "${dir}")
-		endif()
-	endforeach()
+	get_data_dirs(${target} data_dirs)
 	file(RELATIVE_PATH sample_path ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
 	install(TARGETS ${TARGET_NAME}
 		${RMLUI_RUNTIME_DEPENDENCY_SET_ARG}