summaryrefslogtreecommitdiff
path: root/user/konsole/musl.patch
blob: 818b71c50b38656988c1df908ccddcbe8638d60e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
From f6310c2b791275f3727f2240ca7fab9f58db943d Mon Sep 17 00:00:00 2001
From: Heiko Becker <heiko.becker@kde.org>
Date: Tue, 22 Mar 2022 22:08:10 +0100
Subject: [PATCH] Detect the presence of malloc_trim to fix the build with musl

malloc_trim is indeed a GNU extension, but an extension of glibc.
Relying on __GNUC__ unfortunately doesn't help with that. Check for
the actual presence of malloc_trim with cmake's check_function_exists
instead.
This fixes the build with musl libc, which doesn't come with
malloc_trim.

Co-authored-by: Ahmad Samir <a.samirh78@gmail.com>
---
 CMakeLists.txt             |  2 +-
 src/Screen.cpp             | 17 +++++++----------
 src/config-konsole.h.cmake |  4 ++--
 3 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e6775aeef..9e990c37d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,7 +94,7 @@ set(HAVE_X11 ${X11_FOUND})
 # Check for function GETPWUID
 check_symbol_exists(getpwuid "pwd.h" HAVE_GETPWUID)
 
-check_include_files(malloc.h      HAVE_MALLOC_H)
+check_function_exists(malloc_trim HAVE_MALLOC_TRIM)
 
 # See above includes for defaults
 add_definitions(
diff --git a/src/Screen.cpp b/src/Screen.cpp
index ad578b4fd..10876f988 100644
--- a/src/Screen.cpp
+++ b/src/Screen.cpp
@@ -28,13 +28,11 @@
 #include "history/HistoryType.h"
 #include "profile/Profile.h"
 
-#ifdef HAVE_MALLOC_H
-    // For malloc_trim, which is a GNU extension
-    #ifdef __GNUC__
-    extern "C" {
-            #include <malloc.h>
-    }
-    #endif
+#ifdef HAVE_MALLOC_TRIM
+// For malloc_trim, which is a GNU extension
+extern "C" {
+#include <malloc.h>
+}
 #endif
 
 using namespace Konsole;
@@ -1799,14 +1797,13 @@ void Screen::setScroll(const HistoryType &t, bool copyPreviousScroll)
         t.scroll(_history);
     }
 
-#ifdef HAVE_MALLOC_H
+#ifdef HAVE_MALLOC_TRIM
+
 #ifdef Q_OS_LINUX
-#ifdef __GNUC__
     // We might have been using gigabytes of memory, so make sure it is actually released
     malloc_trim(0);
 #endif
 #endif
-#endif
 }
 
 bool Screen::hasScroll() const
diff --git a/src/config-konsole.h.cmake b/src/config-konsole.h.cmake
index b74992b0a..4b1d9b515 100644
--- a/src/config-konsole.h.cmake
+++ b/src/config-konsole.h.cmake
@@ -15,5 +15,5 @@
 
 #cmakedefine HAVE_GETPWUID ${HAVE_GETPWUID}
 
-/* Define to 1 if you have the <malloc.h> header file. */
-#cmakedefine HAVE_MALLOC_H 1
+/* Defined if system has the malloc_trim function, which is a GNU extension */
+#cmakedefine HAVE_MALLOC_TRIM
-- 
GitLab