Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Sep 2022 19:00:55 GMT
From:      Gleb Popov <arrowd@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 5b2084f04b65 - stable/12 - src.conf: Introduce WITHOUT_MACHDEP_OPTIMIZATIONS knob.
Message-ID:  <202209131900.28DJ0tpr059750@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by arrowd (ports committer):

URL: https://cgit.FreeBSD.org/src/commit/?id=5b2084f04b65f854efa661e476cc19316a27db63

commit 5b2084f04b65f854efa661e476cc19316a27db63
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2022-08-08 15:16:00 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2022-09-13 19:00:33 +0000

    src.conf: Introduce WITHOUT_MACHDEP_OPTIMIZATIONS knob.
    
    Summary:
    This knob can be used to make buildsystem prefer generic C implentations of
    various functions, instead of machine-specific assembler ones.
    
    Test Plan: `make buildworld` on amd64
    
    Reviewed by: imp, emaste
    
    Differential Revision: https://reviews.freebsd.org/D36076
    
    MFC after:      3 days
    
    (cherry picked from commit 20adba8bc1beb125d5e5ed8f12e747ae79ca6a10)
---
 lib/libc/Makefile                                 | 2 +-
 lib/libmd/Makefile                                | 2 +-
 lib/msun/Makefile                                 | 2 +-
 share/man/man5/src.conf.5                         | 4 +++-
 share/mk/src.opts.mk                              | 1 +
 tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS | 1 +
 6 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index ea3879ece592..792d8a51c1b7 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -148,7 +148,7 @@ CFLAGS+= -DSYMBOL_VERSIONING
 
 # If there are no machine dependent sources, append all the
 # machine-independent sources:
-.if empty(MDSRCS)
+.if empty(MDSRCS) || ${MK_MACHDEP_OPTIMIZATIONS} == no
 SRCS+=	${MISRCS}
 .else
 # Append machine-dependent sources, then append machine-independent sources
diff --git a/lib/libmd/Makefile b/lib/libmd/Makefile
index 2381d6da9e93..99a2e50ba368 100644
--- a/lib/libmd/Makefile
+++ b/lib/libmd/Makefile
@@ -102,7 +102,7 @@ CFLAGS.skein_block.c+= -DSKEIN_LOOP=995
 .PATH: ${SRCTOP}/sys/crypto/skein ${SRCTOP}/sys/crypto/skein/${MACHINE_ARCH}
 
 USE_ASM_SOURCES?=1
-.if defined(BOOTSTRAPPING)
+.if defined(BOOTSTRAPPING) || ${MK_MACHDEP_OPTIMIZATIONS} == no
 # Don't build ASM sources when bootstrapping to avoid toolchain dependencies
 USE_ASM_SOURCES:=0
 .endif
diff --git a/lib/msun/Makefile b/lib/msun/Makefile
index b76dde4c1dd0..ae8b42bebe40 100644
--- a/lib/msun/Makefile
+++ b/lib/msun/Makefile
@@ -142,7 +142,7 @@ COMMON_SRCS+=	catrig.c catrigf.c \
 #COMMON_SRCS+=	s_fabs.c s_frexp.c s_isnan.c s_ldexp.c s_modf.c
 
 # Exclude the generic versions of what we provide in the MD area.
-.if defined(ARCH_SRCS)
+.if defined(ARCH_SRCS) && "${MK_MACHDEP_OPTIMIZATIONS}" != no
 .for i in ${ARCH_SRCS}
 COMMON_SRCS:=  ${COMMON_SRCS:N${i:R}.c}
 .endfor
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index d3af8e62fbda..6d4c3d5f2ca9 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -1,6 +1,6 @@
 .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman.
 .\" $FreeBSD$
-.Dd May 2, 2022
+.Dd September 9, 2022
 .Dt SRC.CONF 5
 .Os
 .Sh NAME
@@ -1343,6 +1343,8 @@ Set to build
 without support for colors to distinguish file types.
 .It Va WITHOUT_LZMA_SUPPORT
 Set to build some programs without optional lzma compression support.
+.It Va WITHOUT_MACHDEP_OPTIMIZATIONS
+Prefer machine-independent non-assembler code in libc and libm.
 .It Va WITHOUT_MAIL
 Set to not build any mail support (MUA or MTA).
 When set, it enforces these options:
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 7fb961048854..455e9f4c591c 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -141,6 +141,7 @@ __DEFAULT_YES_OPTIONS = \
     LPR \
     LS_COLORS \
     LZMA_SUPPORT \
+    MACHDEP_OPTIMIZATIONS \
     MAIL \
     MAILWRAPPER \
     MAKE \
diff --git a/tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS b/tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS
new file mode 100644
index 000000000000..1c596c998504
--- /dev/null
+++ b/tools/build/options/WITHOUT_MACHDEP_OPTIMIZATIONS
@@ -0,0 +1 @@
+Prefer machine-independent non-assembler code in libc and libm.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202209131900.28DJ0tpr059750>