From e9fb3ff662ee69b2fa70ea1b7cb367a922e065c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Tue, 15 Oct 2024 01:46:28 -0400
Subject: [PATCH] And generate/use the Haiku rdef file

---
 src/syncterm/CMakeLists.txt | 10 +++++++---
 src/syncterm/haiku.rdef     | 13 +++++++++++++
 src/syncterm/updvers.sh     | 15 +++++++++++++++
 3 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 src/syncterm/haiku.rdef

diff --git a/src/syncterm/CMakeLists.txt b/src/syncterm/CMakeLists.txt
index 66b974f6cc..c835181fc7 100644
--- a/src/syncterm/CMakeLists.txt
+++ b/src/syncterm/CMakeLists.txt
@@ -56,9 +56,9 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
 	list(APPEND SOURCE DarwinWrappers.m)
 	find_library(FOUNDATION_LIBRARY Foundation)
 elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
-	execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCHITECTURE_TYPE)
-endif()
+	list(APPEND SOURCE haiku.rdef)
 	execute_process(COMMAND uname -m OUTPUT_VARIABLE ARCHITECTURE_TYPE OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
 
 if(NOT WITHOUT_CRYPTLIB)
 	list(APPEND SOURCE ssh.c telnets.c)
@@ -112,8 +112,12 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
 	target_link_libraries(syncterm util)
 elseif(CMAKE_SYSTEM_NAME STREQUAL "Haiku")
 	target_link_libraries(syncterm network bsd)
-endif()
 	configure_file(PackageInfo.in ${CMAKE_CURRENT_BINARY_DIR}/.PackageInfo @ONLY)
+	add_custom_command(TARGET syncterm PRE_LINK
+		COMMAND rc -o ${CMAKE_CURRENT_BINARY_DIR}/syncterm.rsrc ${CMAKE_CURRENT_SOURCE_DIR}/haiku.rdef)
+	add_custom_command(TARGET syncterm POST_BUILD
+		COMMAND xres =o $<TARGET_FILE:syncterm> ${CMAKE_CURRENT_BINARY_DIR}/syncterm.rsrc)
+endif()
 
 install(TARGETS syncterm DESTINATION bin)
 if(UNIX)
diff --git a/src/syncterm/haiku.rdef b/src/syncterm/haiku.rdef
new file mode 100644
index 0000000000..5a5cb14d0b
--- /dev/null
+++ b/src/syncterm/haiku.rdef
@@ -0,0 +1,13 @@
+resource app_version
+{
+	major = 1,
+	middle = 2,
+	variety = B_APPV_GAMMA,
+	internal = 2,
+	short_info = "SyncTERM BBS Terminal",
+	long_info = "SyncTERM - ANSI-BBS terminal for connecting to BBS"
+}
+resource app_flags
+{
+	B_MULTIPLE_LAUNCH
+}
diff --git a/src/syncterm/updvers.sh b/src/syncterm/updvers.sh
index b4900b4788..0292be775b 100755
--- a/src/syncterm/updvers.sh
+++ b/src/syncterm/updvers.sh
@@ -18,24 +18,32 @@ a)
 	PATCHSEQ=0
 	ISREL=0
 	HAIKU_PRE=~$PATCH
+	HAIKU_VAR=B_APPV_ALPHA
+	HAIKU_INTERNAL=0
 	;;
 b)
 	PATCHSTR=beta
 	PATCHSEQ=1
 	ISREL=0
 	HAIKU_PRE=~$PATCH
+	HAIKU_VAR=B_APPV_BETA
+	HAIKU_INTERNAL=0
 	;;
 rc*)
 	PATCHSTR=${PATCH}
 	PATCHSEQ=$((1+${PATCH##rc}))
 	ISREL=0
 	HAIKU_PRE=~$PATCH
+	HAIKU_VAR=B_APPV_GAMMA
+	HAIKU_INTERNAL=${PATCH##rc}
 	;;
 "")
 	PATCHSTR=release
 	PATCHSEQ=0
 	ISREL=1
 	HAIKU_PRE=
+	HAIKU_VAR=B_APPV_FINAL
+	HAIKU_INTERNAL=42
 	;;
 *)
 	echo Invalid patch value
@@ -91,3 +99,10 @@ perl -pi -e "s/(?<=^Version: ).*$/${VERSTR}/g" dpkg-control.in
 # PackageInfo.in
 echo Updating PackageInfo.in
 perl -pi -e "s/^(version\s+).*$/\$1.'${NUMERIC}${HAIKU_PRE}-1'/e" PackageInfo.in
+
+# haiku.rdef
+echo Updating haiku.rdef
+perl -pi -e "s/^(.*major = ).*$/\$1.'${MAJOR},'/e" haiku.rdef
+perl -pi -e "s/^(.*middle = ).*$/\$1.'${MIDDLE},'/e" haiku.rdef
+perl -pi -e "s/^(.*variety = ).*$/\$1.'${HAIKU_VAR},'/e" haiku.rdef
+perl -pi -e "s/^(.*internal = ).*$/\$1.'${HAIKU_INTERNAL},'/e" haiku.rdef
-- 
GitLab