summaryrefslogtreecommitdiff
path: root/cmake/EmbedFile.cmake
diff options
context:
space:
mode:
authorConnor Thomson <blumatrikz@gmail.com>2026-09-08 18:27:39 -0700
committerConnor Thomson <blumatrikz@gmail.com>2026-09-08 18:27:39 -0700
commitf1ddc12b68b4e4c8087962de25260470e6df2bea (patch)
tree7d0440a6402a9b0ef75ded23fa64b68534255bba /cmake/EmbedFile.cmake
parent6025860a61386bf767b29c3ec5fd0d31285f1056 (diff)
Add tuxanci2 files
Diffstat (limited to 'cmake/EmbedFile.cmake')
-rw-r--r--cmake/EmbedFile.cmake37
1 files changed, 37 insertions, 0 deletions
diff --git a/cmake/EmbedFile.cmake b/cmake/EmbedFile.cmake
new file mode 100644
index 0000000..19e5dbe
--- /dev/null
+++ b/cmake/EmbedFile.cmake
@@ -0,0 +1,37 @@
+# Tuxanci 2 - A first person shooter
+# Copyright (C) 2007-2011 Tuxánci Development Team
+# Copyright (C) 2025-2026 Connor Thomson
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+foreach(_required IN_FILE OUT_C SYMBASE XXD_EXE)
+ if(NOT DEFINED ${_required})
+ message(FATAL_ERROR "EmbedFile.cmake: missing required -D ${_required}")
+ endif()
+endforeach()
+
+execute_process(
+ COMMAND "${XXD_EXE}" -i -n "${SYMBASE}" "${IN_FILE}"
+ OUTPUT_VARIABLE _xxd_output
+ RESULT_VARIABLE _xxd_result
+ ERROR_VARIABLE _xxd_error
+)
+if(NOT _xxd_result EQUAL 0)
+ message(FATAL_ERROR "xxd failed embedding ${IN_FILE}: ${_xxd_error}")
+endif()
+
+file(WRITE "${OUT_C}" "${_xxd_output}\n")
+file(APPEND "${OUT_C}" "\nunsigned int ${SYMBASE}_size = sizeof(${SYMBASE});\n")
+file(APPEND "${OUT_C}" "unsigned char *${SYMBASE}_start = ${SYMBASE};\n")
+file(APPEND "${OUT_C}" "unsigned char *${SYMBASE}_end = ${SYMBASE} + sizeof(${SYMBASE});\n") \ No newline at end of file