On 2024/07/13 18:37, SASANO Takayoshi wrote:
> Hi,
> 
> > Looks like this is, at best, ONLY_FOR_ARCHS=amd64 aarch64
> 
> How about to disable intrinsics at configure like this?
> Even if poorer performance, I prefer to use the library with wider
> architecture.

> +                     -DLIBUNICODE_USE_INTRINSICS=OFF \

There's no such cmake flag in 0.4.0.

This diff builds on i386, I tidied a few unnecessary Makefile variables
while there. ok?

Index: Makefile
===================================================================
RCS file: /cvs/ports/textproc/libunicode/Makefile,v
diff -u -p -r1.1 Makefile
--- Makefile    9 Jul 2024 13:56:10 -0000       1.1
+++ Makefile    13 Jul 2024 12:12:25 -0000
@@ -1,11 +1,9 @@
 COMMENT =      Unicode support to C++ with simple and easy APIs

-V = 0.4.0
-DISTNAME =     libunicode-${V}
-
 GH_ACCOUNT =   contour-terminal
 GH_PROJECT =   libunicode
-GH_TAGNAME =   v${V}
+GH_TAGNAME =   v0.4.0
+REVISION =     0

 SHARED_LIBS  = unicode         0.0 # 0.0
 SHARED_LIBS += unicode_loader  0.0 # 0.0
@@ -36,5 +34,9 @@ CONFIGURE_STYLE =     cmake

 CONFIGURE_ARGS =       -DLIBUNICODE_TESTING=OFF \
                        -DLIBUNICODE_UCD_DIR=${LOCALBASE}/share/unicode/ucd
+
+.if ${MACHINE_ARCH} != "amd64" && ${MACHINE_ARCH} != "aarch64"
+CONFIGURE_ARGS +=      -DLIBUNICODE_USE_INTRINSICS=OFF
+.endif

 .include <bsd.port.mk>
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: patches/patch-CMakeLists_txt
diff -N patches/patch-CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-CMakeLists_txt        13 Jul 2024 12:12:25 -0000
@@ -0,0 +1,16 @@
+From ad31f78a116c844e5c00712b3dcd258c76586e57 Mon Sep 17 00:00:00 2001
+From: Christian Parpart <christian@parpart.family>
+Date: Tue, 26 Dec 2023 10:07:16 +0100
+Subject: [PATCH] Make usage of SSE extension optional
+
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -43,6 +43,7 @@ option(LIBUNICODE_EXAMPLES "libunicode: Enables buildi
+ option(LIBUNICODE_TESTING "libunicode: Enables building of unittests for 
libunicode [default: ${MASTER_PROJECT}" ${MASTER_PROJECT})
+ option(LIBUNICODE_TOOLS "libunicode: Builds CLI tools [default: 
${MASTER_PROJECT}]" ${MASTER_PROJECT})
+ option(LIBUNICODE_BUILD_STATIC "libunicode: provide static library instead of 
dynamic [default: ${LIBUNICODE_BUILD_STATIC_DEFAULT}]" 
${LIBUNICODE_BUILD_STATIC_DEFAULT})
++option(LIBUNICODE_USE_INTRINSICS "libunicode: Use SIMD extenstion during text 
read [default: ON]" ON)
+
+ include(ThirdParties)
+
Index: patches/patch-src_libunicode_CMakeLists_txt
===================================================================
RCS file: patches/patch-src_libunicode_CMakeLists_txt
diff -N patches/patch-src_libunicode_CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libunicode_CMakeLists_txt 13 Jul 2024 12:12:25 -0000
@@ -0,0 +1,19 @@
+From ad31f78a116c844e5c00712b3dcd258c76586e57 Mon Sep 17 00:00:00 2001
+From: Christian Parpart <christian@parpart.family>
+Date: Tue, 26 Dec 2023 10:07:16 +0100
+Subject: [PATCH] Make usage of SSE extension optional
+
+Index: src/libunicode/CMakeLists.txt
+--- src/libunicode/CMakeLists.txt.orig
++++ src/libunicode/CMakeLists.txt
+@@ -110,6 +110,10 @@ add_library(unicode ${LIBUNICODE_LIB_MODE}
+     codepoint_properties_names.cpp
+ )
+
++if(LIBUNICODE_USE_INTRINSICS)
++    target_compile_definitions(unicode PRIVATE USE_INTRINSICS)
++endif()
++
+ set(public_headers
+     capi.h
+     codepoint_properties.h
Index: patches/patch-src_libunicode_scan_cpp
===================================================================
RCS file: patches/patch-src_libunicode_scan_cpp
diff -N patches/patch-src_libunicode_scan_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libunicode_scan_cpp       13 Jul 2024 12:12:25 -0000
@@ -0,0 +1,24 @@
+From ad31f78a116c844e5c00712b3dcd258c76586e57 Mon Sep 17 00:00:00 2001
+From: Christian Parpart <christian@parpart.family>
+Date: Tue, 26 Dec 2023 10:07:16 +0100
+Subject: [PATCH] Make usage of SSE extension optional
+
+Index: src/libunicode/scan.cpp
+--- src/libunicode/scan.cpp.orig
++++ src/libunicode/scan.cpp
+@@ -81,6 +81,7 @@ size_t detail::scan_for_text_ascii(string_view text, s
+     auto input = text.data();
+     auto const end = text.data() + min(text.size(), maxColumnCount);
+
++#if defined(USE_INTRINSICS)
+     intrinsics::m128i const ControlCodeMax = intrinsics::set1_epi8(0x20); // 
0..0x1F
+     intrinsics::m128i const Complex = intrinsics::set1_epi8(-128);        // 
equals to 0x80 (0b1000'0000)
+
+@@ -99,6 +100,7 @@ size_t detail::scan_for_text_ascii(string_view text, s
+         }
+         input += sizeof(intrinsics::m128i);
+     }
++#endif
+
+     while (input != end && is_ascii(*input))
+         ++input;

Reply via email to