From 4e158b30657430e3a02c80f8800c9cdbb5030780 Mon Sep 17 00:00:00 2001
From: taynpg <taynpg@163.com>
Date: Mon, 17 Feb 2025 18:29:23 +0800
Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E6=B7=BB=E5=8A=A0=E6=94=AF?=
 =?UTF-8?q?=E6=8C=81musl=E9=9D=99=E6=80=81=E9=93=BE=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 build.sh              |  2 --
 client/CMakeLists.txt | 13 ++++++++++++-
 config/MSystem.cmake  |  6 ++++--
 filecomplete          |  2 +-
 ofen                  |  2 +-
 server/CMakeLists.txt | 13 ++++++++++++-
 6 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/build.sh b/build.sh
index 3c75792..aff31f2 100755
--- a/build.sh
+++ b/build.sh
@@ -1,5 +1,3 @@
-#!/bin/bash
-
 # 默认构建命令
 build_command="cmake -Bbuild -DCMAKE_BUILD_TYPE=Release"
 build_command_release="cmake --build build --config Release"
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index 85d00d2..455707f 100644
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -23,4 +23,15 @@ endif()
 if(DEFINED MINGW32_XP_BOOST)
 target_link_directories(tsc PRIVATE ${MBOOST_LIB_DIR})
 target_link_libraries(tsc PRIVATE ${MBOOST_LIBS})
-endif()
\ No newline at end of file
+endif()
+if(UNIX)
+execute_process(
+    COMMAND uname -a
+    OUTPUT_VARIABLE UNAME_OUT
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+if(UNAME_OUT MATCHES "alpine" OR UNAME_OUT MATCHES "Alpine")
+message(STATUS "tsc on musl static link")
+target_link_libraries(tsc PRIVATE -static;-static-libstdc++)
+endif()
+endif()
diff --git a/config/MSystem.cmake b/config/MSystem.cmake
index 5f0233d..bc41589 100644
--- a/config/MSystem.cmake
+++ b/config/MSystem.cmake
@@ -19,7 +19,9 @@ elseif(UNAME_OUTPUT MATCHES "riscv64")
 else()
     set(SYSTEM_ARCH "unknown")
 endif()
-
+if(UNAME_OUTPUT MATCHES "alpine" OR UNAME_OUTPUT MATCHES "Alpine") 
+	set(SYSTEM_ARCH "musl_${SYSTEM_ARCH}")
+endif()
 elseif (WIN32)
     # 先调用 ver 命令
     execute_process(COMMAND cmd /c ver
@@ -41,4 +43,4 @@ elseif (WIN32)
 else()
 message(FATAL_ERROR "unknow system type.")
 endif()
-message(STATUS "SYSTEM_ARCH: ${SYSTEM_ARCH}")
\ No newline at end of file
+message(STATUS "SYSTEM_ARCH: ${SYSTEM_ARCH}")
diff --git a/filecomplete b/filecomplete
index a7c6434..86e71fb 160000
--- a/filecomplete
+++ b/filecomplete
@@ -1 +1 @@
-Subproject commit a7c6434a7c333a19727aeab8212d20604426b701
+Subproject commit 86e71fbb462efce80e601db0807bca0887829836
diff --git a/ofen b/ofen
index 36e05d2..c4572bb 160000
--- a/ofen
+++ b/ofen
@@ -1 +1 @@
-Subproject commit 36e05d261821048a4c2fec1042434dd2dfc9b6de
+Subproject commit c4572bbfef4b39d40f8f530aecdf0998d1821232
diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
index aa3bc8e..1c54891 100644
--- a/server/CMakeLists.txt
+++ b/server/CMakeLists.txt
@@ -22,4 +22,15 @@ if (UNIX)
 endif()
 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows")
     target_link_libraries(tss PRIVATE ws2_32 wsock32)
-endif()
\ No newline at end of file
+endif()
+if(UNIX)
+execute_process(
+    COMMAND uname -a
+    OUTPUT_VARIABLE UNAME_OUT
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+if(UNAME_OUT MATCHES "alpine" OR UNAME_OUT MATCHES "Alpine")
+message(STATUS "on musl static link")
+target_link_libraries(tss PRIVATE -static;-static-libstdc++)
+endif()
+endif()