From be453d1be826b862d47e08663fd69eea9dd62730 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 7 Jan 2016 18:19:03 +0000
Subject: [PATCH 1/6] build: Add option to select libc implementation

There are more than glibc for C library implementation available on
linux now a days, uclibc cloaked like glibc but musl e.g. is very
different and does not implement all GNU extentions

Disable tests specifically not building _yet_ on musl based systems

Upstream-Status: Pending

rt_tgsigqueueinfo fails with:
rt_tgsigqueueinfo01.c: In function 'sigusr1_handler':
rt_tgsigqueueinfo01.c:42:22: error: 'siginfo_t' {aka 'struct <anonymous>'} has no member named '_sifields'; did you mean '__si_fields'?
   42 |  sigval_rcv = uinfo->_sifields._rt.SI_SIGVAL.sival_ptr;
      |                      ^~~~~~~~~
      |                      __si_fields

Signed-off-by: Khem Raj <raj.khem@gmail.com>
[ pvorel: rebase for 20200120: enable mallopt, profil, rpc016,
rt_sigsuspend, sbrk_mutex, setdomainname, sethostname, sigsuspend,
testpi-3, testpi-5, testpi-6, ustat; move rt_tgsigqueueinfo
from 0006-rt_tgsigqueueinfo-disable-test-on-musl.patch ]
Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 Makefile                           | 5 +++++
 testcases/kernel/Makefile          | 5 ++++-
 testcases/kernel/sched/Makefile    | 4 +++-
 testcases/kernel/syscalls/Makefile | 4 ++++
 4 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 768ca4606..e9d679a71 100644
--- a/Makefile
+++ b/Makefile
@@ -41,6 +41,11 @@ vpath %.mk		$(top_srcdir)/mk:$(top_srcdir)/mk/include
 UCLINUX			?= 0
 export UCLINUX
 
+# System C library implementation (glibc,uclibc,musl etc.)
+# default to glibc if not set
+LIBC			?= glibc
+export LIBC
+
 # CLEAN_TARGETS:	Targets which exist solely in clean.
 # COMMON_TARGETS:	Targets which exist in all, clean, and install.
 # INSTALL_TARGETS:	Targets which exist in clean and install (contains
diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile
index 3319b3163..94ea362c8 100644
--- a/testcases/kernel/Makefile
+++ b/testcases/kernel/Makefile
@@ -49,13 +49,16 @@ SUBDIRS			+= connectors \
 			   logging \
 			   mem \
 			   numa \
-			   pty \
 			   sched \
 			   security \
 			   sound \
 			   tracing \
 			   uevents \
 
+ifneq ($(LIBC),musl)
+SUBDIRS			+= pty
+endif
+
 ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
 SUBDIRS			+= power_management
 endif
diff --git a/testcases/kernel/sched/Makefile b/testcases/kernel/sched/Makefile
index 6a57d79ee..74bb93370 100644
--- a/testcases/kernel/sched/Makefile
+++ b/testcases/kernel/sched/Makefile
@@ -23,5 +23,7 @@
 top_srcdir		?= ../../..
 
 include $(top_srcdir)/include/mk/env_pre.mk
-
+ifeq ($(LIBC),musl)
+	FILTER_OUT_DIRS += process_stress
+endif
 include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/kernel/syscalls/Makefile b/testcases/kernel/syscalls/Makefile
index 45a00cf7d..af5a591a0 100644
--- a/testcases/kernel/syscalls/Makefile
+++ b/testcases/kernel/syscalls/Makefile
@@ -29,6 +29,10 @@ FILTER_OUT_DIRS	+= capget capset chmod chown clone fork getcontext llseek \
 		   mincore mprotect nftw profil remap_file_pages sbrk
 endif
 
+ifeq ($(LIBC),musl)
+FILTER_OUT_DIRS	+= confstr fmtmsg getcontext ioctl rt_tgsigqueueinfo
+endif
+
 ifeq ($(UCLIBC),1)
 FILTER_OUT_DIRS	+= profil
 endif
--
2.25.1
