commit:     cd2dce6119036b41fd57b8196c4841cc6b3d5423
Author:     William Hubbs <williamh <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 10 19:31:03 2023 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Sat Jun 10 19:31:40 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cd2dce61

net-libs/nodejs: add 20.3.0

Closes: https://bugs.gentoo.org/900513
Signed-off-by: William Hubbs <williamh <AT> gentoo.org>

 net-libs/nodejs/Manifest                           |    1 +
 net-libs/nodejs/files/nodejs-20.3.0-gcc14.patch    |   31 +
 .../files/nodejs-20.3.0-simdutf-2.3.14.patch       | 1550 ++++++++++++++++++++
 net-libs/nodejs/nodejs-20.3.0.ebuild               |  255 ++++
 4 files changed, 1837 insertions(+)

diff --git a/net-libs/nodejs/Manifest b/net-libs/nodejs/Manifest
index f22e66700a45..0ddfc06fd314 100644
--- a/net-libs/nodejs/Manifest
+++ b/net-libs/nodejs/Manifest
@@ -1,3 +1,4 @@
 DIST node-v16.20.0.tar.xz 35546884 BLAKE2B 
5bdb1fb7365e07f13d0a58a8d052d11efaadcf1b0792af0517b78b1ecf01e50eabe26e31588ae410ee63b7494a4eb9d23f70d4dd157a452d0bbf8bd548865255
 SHA512 
b155acdff0244307afcc334844f113b5c321f7764ebb69326d60a6a79d0e0d38d55257a38b815f5933aa4071e6a788e01c466476ef012cec648c84d74adda406
 DIST node-v18.16.0.tar.xz 40467860 BLAKE2B 
b16749c0212f3aa196ec9fc0f999a023adeb9031b3332939330ba5a3edb5bc2ed6dc21bf861509696e19ed0cc5d5c54bb882018f0e54eb1ad8e9b0ba3bb64bff
 SHA512 
608ce5db97ce2d851f381c7991f635c5e0927ae79037649b482c7e197479341b7c6560644e25f4d65ece8aa80c5763a0e044349a5be210fa33fbbf97a96462bd
 DIST node-v20.2.0.tar.xz 41778040 BLAKE2B 
362b0ee89fe822722caeeb4b918550637bfb10791de75d872da334cb1123b744c351b5822b05abf4d36a0449badc5232ab1d73896dd5ce7755d10b226f0b9f52
 SHA512 
bf780e79bf6c7f766beb7734c7af45edc62094aba4c608f5519b130ff263e52ece925f85a4ee5740e962d16020070ef00933f6c74e771d948f23525c223da48e
+DIST node-v20.3.0.tar.xz 41709484 BLAKE2B 
93aadc92914fd977a9bea5643c0806c709a4e68bca2840f7af0b24bfde654e9a3bfb83ead159579c67ebd8cfea81648863d2d87d07d2f11dfe73f1312d873d40
 SHA512 
6aade4c1cc0ef8f47f403286d88099a3c0bf43f6e1e2b6d50e777eb9327fc1f0a8ba73c943306a431fd422fdda9017b1931bcb31c48badcfcadde8a260840d7c

diff --git a/net-libs/nodejs/files/nodejs-20.3.0-gcc14.patch 
b/net-libs/nodejs/files/nodejs-20.3.0-gcc14.patch
new file mode 100644
index 000000000000..8011c2bbdfb9
--- /dev/null
+++ b/net-libs/nodejs/files/nodejs-20.3.0-gcc14.patch
@@ -0,0 +1,31 @@
+From ad0bbaf34aa3150b4f3507b9973b6f5e8ed47474 Mon Sep 17 00:00:00 2001
+From: Sam James <[email protected]>
+Date: Fri, 9 Jun 2023 18:29:00 +0100
+Subject: [PATCH] test: add missing <algorithm> include for std::find
+
+GCC 14 drops some transitive includes within libstdc++.
+
+Explicitly include <algorithm> for std::find.
+
+Signed-off-by: Sam James <[email protected]>
+PR-URL: https://github.com/nodejs/node/pull/48380
+Reviewed-By: LiviaMedeiros <[email protected]>
+Reviewed-By: Luigi Pinca <[email protected]>
+Reviewed-By: Matthew Aitken <[email protected]>
+---
+ test/embedding/embedtest.cc | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/test/embedding/embedtest.cc b/test/embedding/embedtest.cc
+index 3592ccb98132..dbb420f34682 100644
+--- a/test/embedding/embedtest.cc
++++ b/test/embedding/embedtest.cc
+@@ -5,6 +5,8 @@
+ #include "uv.h"
+ #include <assert.h>
+ 
++#include <algorithm>
++
+ // Note: This file is being referred to from doc/api/embedding.md, and 
excerpts
+ // from it are included in the documentation. Try to keep these in sync.
+ // Snapshot support is not part of the embedder API docs yet due to its

diff --git a/net-libs/nodejs/files/nodejs-20.3.0-simdutf-2.3.14.patch 
b/net-libs/nodejs/files/nodejs-20.3.0-simdutf-2.3.14.patch
new file mode 100644
index 000000000000..69c37e573bca
--- /dev/null
+++ b/net-libs/nodejs/files/nodejs-20.3.0-simdutf-2.3.14.patch
@@ -0,0 +1,1550 @@
+From 1d1685e6fde1bcb47dd30c3bb45dba219939c272 Mon Sep 17 00:00:00 2001
+From: "Node.js GitHub Bot" <[email protected]>
+Date: Wed, 7 Jun 2023 14:39:02 +0100
+Subject: [PATCH] deps: update simdutf to 3.2.14
+
+PR-URL: https://github.com/nodejs/node/pull/48344
+Reviewed-By: Yagiz Nizipli <[email protected]>
+Reviewed-By: Debadree Chatterjee <[email protected]>
+Reviewed-By: LiviaMedeiros <[email protected]>
+Reviewed-By: Mestery <[email protected]>
+Reviewed-By: Mohammed Keyvanzadeh <[email protected]>
+Reviewed-By: Luigi Pinca <[email protected]>
+Reviewed-By: Darshan Sen <[email protected]>
+Reviewed-By: Marco Ippolito <[email protected]>
+---
+ deps/simdutf/simdutf.cpp                      | 320 +++++++++---------
+ deps/simdutf/simdutf.h                        |  50 +--
+ .../maintaining/maintaining-dependencies.md   |   6 +-
+ 3 files changed, 189 insertions(+), 187 deletions(-)
+
+diff --git a/deps/simdutf/simdutf.cpp b/deps/simdutf/simdutf.cpp
+index 15107075d51b..712bf0cf8583 100644
+--- a/deps/simdutf/simdutf.cpp
++++ b/deps/simdutf/simdutf.cpp
+@@ -1,8 +1,8 @@
+-/* auto-generated on 2023-05-22 21:46:48 -0400. Do not edit! */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf.cpp
++/* auto-generated on 2023-06-05 08:58:28 -0400. Do not edit! */
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf.cpp
+ /* begin file src/simdutf.cpp */
+ #include "simdutf.h"
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=implementation.cpp
+ /* begin file src/implementation.cpp */
+ #include <initializer_list>
+ #include <climits>
+@@ -26,7 +26,7 @@ std::string toBinaryString(T b) {
+ 
+ // Implementations
+ // The best choice should always come first!
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64.h
+ /* begin file src/simdutf/arm64.h */
+ #ifndef SIMDUTF_ARM64_H
+ #define SIMDUTF_ARM64_H
+@@ -53,7 +53,7 @@ namespace arm64 {
+ } // namespace arm64
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/implementation.h
+ /* begin file src/simdutf/arm64/implementation.h */
+ #ifndef SIMDUTF_ARM64_IMPLEMENTATION_H
+ #define SIMDUTF_ARM64_IMPLEMENTATION_H
+@@ -130,14 +130,14 @@ class implementation final : public 
simdutf::implementation {
+ #endif // SIMDUTF_ARM64_IMPLEMENTATION_H
+ /* end file src/simdutf/arm64/implementation.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/begin.h
+ /* begin file src/simdutf/arm64/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "arm64"
+ // #define SIMDUTF_IMPLEMENTATION arm64
+ /* end file src/simdutf/arm64/begin.h */
+ 
+ // Declarations
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/intrinsics.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/intrinsics.h
+ /* begin file src/simdutf/arm64/intrinsics.h */
+ #ifndef SIMDUTF_ARM64_INTRINSICS_H
+ #define SIMDUTF_ARM64_INTRINSICS_H
+@@ -149,7 +149,7 @@ class implementation final : public 
simdutf::implementation {
+ 
+ #endif //  SIMDUTF_ARM64_INTRINSICS_H
+ /* end file src/simdutf/arm64/intrinsics.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/bitmanipulation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/bitmanipulation.h
+ /* begin file src/simdutf/arm64/bitmanipulation.h */
+ #ifndef SIMDUTF_ARM64_BITMANIPULATION_H
+ #define SIMDUTF_ARM64_BITMANIPULATION_H
+@@ -169,7 +169,7 @@ simdutf_really_inline int count_ones(uint64_t input_num) {
+ 
+ #endif // SIMDUTF_ARM64_BITMANIPULATION_H
+ /* end file src/simdutf/arm64/bitmanipulation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/simd.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/simd.h
+ /* begin file src/simdutf/arm64/simd.h */
+ #ifndef SIMDUTF_ARM64_SIMD_H
+ #define SIMDUTF_ARM64_SIMD_H
+@@ -782,7 +782,7 @@ simdutf_really_inline int16x8_t make_int16x8_t(int16_t x1, 
 int16_t x2,  int16_t
+       ).to_bitmask();
+     }
+   }; // struct simd8x64<T>
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/simd16-inl.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/simd16-inl.h
+ /* begin file src/simdutf/arm64/simd16-inl.h */
+ template<typename T>
+ struct simd16;
+@@ -1095,7 +1095,7 @@ simdutf_really_inline simd16<int16_t>::operator 
simd16<uint16_t>() const { retur
+ #endif // SIMDUTF_ARM64_SIMD_H
+ /* end file src/simdutf/arm64/simd.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/end.h
+ /* begin file src/simdutf/arm64/end.h */
+ /* end file src/simdutf/arm64/end.h */
+ 
+@@ -1103,7 +1103,7 @@ simdutf_really_inline simd16<int16_t>::operator 
simd16<uint16_t>() const { retur
+ 
+ #endif // SIMDUTF_ARM64_H
+ /* end file src/simdutf/arm64.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake.h
+ /* begin file src/simdutf/icelake.h */
+ #ifndef SIMDUTF_ICELAKE_H
+ #define SIMDUTF_ICELAKE_H
+@@ -1142,7 +1142,7 @@ simdutf_really_inline simd16<int16_t>::operator 
simd16<uint16_t>() const { retur
+ #if SIMDUTF_CAN_ALWAYS_RUN_ICELAKE
+ #define SIMDUTF_TARGET_ICELAKE
+ #else
+-#define SIMDUTF_TARGET_ICELAKE 
SIMDUTF_TARGET_REGION("avx512f,avx512dq,avx512cd,avx512bw,avx512vbmi,avx512vbmi2,avx512vl,avx2,bmi,bmi2,pclmul,lzcnt")
++#define SIMDUTF_TARGET_ICELAKE 
SIMDUTF_TARGET_REGION("avx512f,avx512dq,avx512cd,avx512bw,avx512vbmi,avx512vbmi2,avx512vl,avx2,bmi,bmi2,pclmul,lzcnt,popcnt")
+ #endif
+ 
+ namespace simdutf {
+@@ -1155,7 +1155,7 @@ namespace icelake {
+ //
+ // These two need to be included outside SIMDUTF_TARGET_REGION
+ //
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/intrinsics.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/intrinsics.h
+ /* begin file src/simdutf/icelake/intrinsics.h */
+ #ifndef SIMDUTF_ICELAKE_INTRINSICS_H
+ #define SIMDUTF_ICELAKE_INTRINSICS_H
+@@ -1265,7 +1265,7 @@ inline __m512i _mm512_set_epi8(uint8_t a0, uint8_t a1, 
uint8_t a2, uint8_t a3, u
+ 
+ #endif // SIMDUTF_HASWELL_INTRINSICS_H
+ /* end file src/simdutf/icelake/intrinsics.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/implementation.h
+ /* begin file src/simdutf/icelake/implementation.h */
+ #ifndef SIMDUTF_ICELAKE_IMPLEMENTATION_H
+ #define SIMDUTF_ICELAKE_IMPLEMENTATION_H
+@@ -1348,7 +1348,7 @@ class implementation final : public 
simdutf::implementation {
+ //
+ // The rest need to be inside the region
+ //
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/begin.h
+ /* begin file src/simdutf/icelake/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "icelake"
+ // #define SIMDUTF_IMPLEMENTATION icelake
+@@ -1364,7 +1364,7 @@ SIMDUTF_DISABLE_GCC_WARNING(-Wmaybe-uninitialized)
+ #endif // end of workaround
+ /* end file src/simdutf/icelake/begin.h */
+ // Declarations
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/bitmanipulation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/bitmanipulation.h
+ /* begin file src/simdutf/icelake/bitmanipulation.h */
+ #ifndef SIMDUTF_ICELAKE_BITMANIPULATION_H
+ #define SIMDUTF_ICELAKE_BITMANIPULATION_H
+@@ -1390,7 +1390,7 @@ simdutf_really_inline long long int count_ones(uint64_t 
input_num) {
+ 
+ #endif // SIMDUTF_ICELAKE_BITMANIPULATION_H
+ /* end file src/simdutf/icelake/bitmanipulation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/end.h
+ /* begin file src/simdutf/icelake/end.h */
+ #if SIMDUTF_CAN_ALWAYS_RUN_ICELAKE
+ // nothing needed.
+@@ -1409,7 +1409,7 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ #endif // SIMDUTF_IMPLEMENTATION_ICELAKE
+ #endif // SIMDUTF_ICELAKE_H
+ /* end file src/simdutf/icelake.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell.h
+ /* begin file src/simdutf/haswell.h */
+ #ifndef SIMDUTF_HASWELL_H
+ #define SIMDUTF_HASWELL_H
+@@ -1442,7 +1442,7 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ 
+ #if SIMDUTF_IMPLEMENTATION_HASWELL
+ 
+-#define SIMDUTF_TARGET_HASWELL SIMDUTF_TARGET_REGION("avx2,bmi,lzcnt")
++#define SIMDUTF_TARGET_HASWELL SIMDUTF_TARGET_REGION("avx2,bmi,lzcnt,popcnt")
+ 
+ namespace simdutf {
+ /**
+@@ -1455,7 +1455,7 @@ namespace haswell {
+ //
+ // These two need to be included outside SIMDUTF_TARGET_REGION
+ //
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/implementation.h
+ /* begin file src/simdutf/haswell/implementation.h */
+ #ifndef SIMDUTF_HASWELL_IMPLEMENTATION_H
+ #define SIMDUTF_HASWELL_IMPLEMENTATION_H
+@@ -1534,7 +1534,7 @@ class implementation final : public 
simdutf::implementation {
+ 
+ #endif // SIMDUTF_HASWELL_IMPLEMENTATION_H
+ /* end file src/simdutf/haswell/implementation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/intrinsics.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/intrinsics.h
+ /* begin file src/simdutf/haswell/intrinsics.h */
+ #ifndef SIMDUTF_HASWELL_INTRINSICS_H
+ #define SIMDUTF_HASWELL_INTRINSICS_H
+@@ -1603,7 +1603,7 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ //
+ // The rest need to be inside the region
+ //
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/begin.h
+ /* begin file src/simdutf/haswell/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "haswell"
+ // #define SIMDUTF_IMPLEMENTATION haswell
+@@ -1619,7 +1619,7 @@ SIMDUTF_DISABLE_GCC_WARNING(-Wmaybe-uninitialized)
+ #endif // end of workaround
+ /* end file src/simdutf/haswell/begin.h */
+ // Declarations
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/bitmanipulation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/bitmanipulation.h
+ /* begin file src/simdutf/haswell/bitmanipulation.h */
+ #ifndef SIMDUTF_HASWELL_BITMANIPULATION_H
+ #define SIMDUTF_HASWELL_BITMANIPULATION_H
+@@ -1645,7 +1645,7 @@ simdutf_really_inline long long int count_ones(uint64_t 
input_num) {
+ 
+ #endif // SIMDUTF_HASWELL_BITMANIPULATION_H
+ /* end file src/simdutf/haswell/bitmanipulation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/simd.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/simd.h
+ /* begin file src/simdutf/haswell/simd.h */
+ #ifndef SIMDUTF_HASWELL_SIMD_H
+ #define SIMDUTF_HASWELL_SIMD_H
+@@ -2041,7 +2041,7 @@ namespace simd {
+     }
+   }; // struct simd8x64<T>
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/simd16-inl.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/simd16-inl.h
+ /* begin file src/simdutf/haswell/simd16-inl.h */
+ #ifdef __GNUC__
+ #if __GNUC__ < 8
+@@ -2320,7 +2320,7 @@ struct simd16<uint16_t>: base16_numeric<uint16_t>  {
+ #endif // SIMDUTF_HASWELL_SIMD_H
+ /* end file src/simdutf/haswell/simd.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/end.h
+ /* begin file src/simdutf/haswell/end.h */
+ #if SIMDUTF_CAN_ALWAYS_RUN_HASWELL
+ // nothing needed.
+@@ -2337,7 +2337,7 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ #endif // SIMDUTF_IMPLEMENTATION_HASWELL
+ #endif // SIMDUTF_HASWELL_COMMON_H
+ /* end file src/simdutf/haswell.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere.h
+ /* begin file src/simdutf/westmere.h */
+ #ifndef SIMDUTF_WESTMERE_H
+ #define SIMDUTF_WESTMERE_H
+@@ -2365,7 +2365,7 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ 
+ #if SIMDUTF_IMPLEMENTATION_WESTMERE
+ 
+-#define SIMDUTF_TARGET_WESTMERE SIMDUTF_TARGET_REGION("sse4.2")
++#define SIMDUTF_TARGET_WESTMERE SIMDUTF_TARGET_REGION("sse4.2,popcnt")
+ 
+ namespace simdutf {
+ /**
+@@ -2378,7 +2378,7 @@ namespace westmere {
+ //
+ // These two need to be included outside SIMDUTF_TARGET_REGION
+ //
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/implementation.h
+ /* begin file src/simdutf/westmere/implementation.h */
+ #ifndef SIMDUTF_WESTMERE_IMPLEMENTATION_H
+ #define SIMDUTF_WESTMERE_IMPLEMENTATION_H
+@@ -2455,7 +2455,7 @@ class implementation final : public 
simdutf::implementation {
+ 
+ #endif // SIMDUTF_WESTMERE_IMPLEMENTATION_H
+ /* end file src/simdutf/westmere/implementation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/intrinsics.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/intrinsics.h
+ /* begin file src/simdutf/westmere/intrinsics.h */
+ #ifndef SIMDUTF_WESTMERE_INTRINSICS_H
+ #define SIMDUTF_WESTMERE_INTRINSICS_H
+@@ -2504,7 +2504,7 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ //
+ // The rest need to be inside the region
+ //
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/begin.h
+ /* begin file src/simdutf/westmere/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "westmere"
+ // #define SIMDUTF_IMPLEMENTATION westmere
+@@ -2517,7 +2517,7 @@ SIMDUTF_TARGET_WESTMERE
+ /* end file src/simdutf/westmere/begin.h */
+ 
+ // Declarations
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/bitmanipulation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/bitmanipulation.h
+ /* begin file src/simdutf/westmere/bitmanipulation.h */
+ #ifndef SIMDUTF_WESTMERE_BITMANIPULATION_H
+ #define SIMDUTF_WESTMERE_BITMANIPULATION_H
+@@ -2543,7 +2543,7 @@ simdutf_really_inline long long int count_ones(uint64_t 
input_num) {
+ 
+ #endif // SIMDUTF_WESTMERE_BITMANIPULATION_H
+ /* end file src/simdutf/westmere/bitmanipulation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/simd.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/simd.h
+ /* begin file src/simdutf/westmere/simd.h */
+ #ifndef SIMDUTF_WESTMERE_SIMD_H
+ #define SIMDUTF_WESTMERE_SIMD_H
+@@ -2987,7 +2987,7 @@ namespace simd {
+     }
+   }; // struct simd8x64<T>
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/simd16-inl.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/simd16-inl.h
+ /* begin file src/simdutf/westmere/simd16-inl.h */
+ template<typename T>
+ struct simd16;
+@@ -3264,7 +3264,7 @@ template<typename T>
+ #endif // SIMDUTF_WESTMERE_SIMD_INPUT_H
+ /* end file src/simdutf/westmere/simd.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/end.h
+ /* begin file src/simdutf/westmere/end.h */
+ #if SIMDUTF_CAN_ALWAYS_RUN_WESTMERE
+ // nothing needed.
+@@ -3277,7 +3277,7 @@ SIMDUTF_UNTARGET_REGION
+ #endif // SIMDUTF_IMPLEMENTATION_WESTMERE
+ #endif // SIMDUTF_WESTMERE_COMMON_H
+ /* end file src/simdutf/westmere.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64.h
+ /* begin file src/simdutf/ppc64.h */
+ #ifndef SIMDUTF_PPC64_H
+ #define SIMDUTF_PPC64_H
+@@ -3304,7 +3304,7 @@ namespace ppc64 {
+ } // namespace ppc64
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/implementation.h
+ /* begin file src/simdutf/ppc64/implementation.h */
+ #ifndef SIMDUTF_PPC64_IMPLEMENTATION_H
+ #define SIMDUTF_PPC64_IMPLEMENTATION_H
+@@ -3383,14 +3383,14 @@ class implementation final : public 
simdutf::implementation {
+ #endif // SIMDUTF_PPC64_IMPLEMENTATION_H
+ /* end file src/simdutf/ppc64/implementation.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/begin.h
+ /* begin file src/simdutf/ppc64/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "ppc64"
+ // #define SIMDUTF_IMPLEMENTATION ppc64
+ /* end file src/simdutf/ppc64/begin.h */
+ 
+ // Declarations
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/intrinsics.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/intrinsics.h
+ /* begin file src/simdutf/ppc64/intrinsics.h */
+ #ifndef SIMDUTF_PPC64_INTRINSICS_H
+ #define SIMDUTF_PPC64_INTRINSICS_H
+@@ -3411,7 +3411,7 @@ class implementation final : public 
simdutf::implementation {
+ 
+ #endif //  SIMDUTF_PPC64_INTRINSICS_H
+ /* end file src/simdutf/ppc64/intrinsics.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/bitmanipulation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/bitmanipulation.h
+ /* begin file src/simdutf/ppc64/bitmanipulation.h */
+ #ifndef SIMDUTF_PPC64_BITMANIPULATION_H
+ #define SIMDUTF_PPC64_BITMANIPULATION_H
+@@ -3437,7 +3437,7 @@ simdutf_really_inline int count_ones(uint64_t input_num) 
{
+ 
+ #endif // SIMDUTF_PPC64_BITMANIPULATION_H
+ /* end file src/simdutf/ppc64/bitmanipulation.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/simd.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/simd.h
+ /* begin file src/simdutf/ppc64/simd.h */
+ #ifndef SIMDUTF_PPC64_SIMD_H
+ #define SIMDUTF_PPC64_SIMD_H
+@@ -3929,7 +3929,7 @@ template <typename T> struct simd8x64 {
+ #endif // SIMDUTF_PPC64_SIMD_INPUT_H
+ /* end file src/simdutf/ppc64/simd.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/end.h
+ /* begin file src/simdutf/ppc64/end.h */
+ /* end file src/simdutf/ppc64/end.h */
+ 
+@@ -3937,7 +3937,7 @@ template <typename T> struct simd8x64 {
+ 
+ #endif // SIMDUTF_PPC64_H
+ /* end file src/simdutf/ppc64.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback.h
+ /* begin file src/simdutf/fallback.h */
+ #ifndef SIMDUTF_FALLBACK_H
+ #define SIMDUTF_FALLBACK_H
+@@ -3966,7 +3966,7 @@ namespace fallback {
+ } // namespace fallback
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/implementation.h
+ /* begin file src/simdutf/fallback/implementation.h */
+ #ifndef SIMDUTF_FALLBACK_IMPLEMENTATION_H
+ #define SIMDUTF_FALLBACK_IMPLEMENTATION_H
+@@ -4047,14 +4047,14 @@ class implementation final : public 
simdutf::implementation {
+ #endif // SIMDUTF_FALLBACK_IMPLEMENTATION_H
+ /* end file src/simdutf/fallback/implementation.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/begin.h
+ /* begin file src/simdutf/fallback/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "fallback"
+ // #define SIMDUTF_IMPLEMENTATION fallback
+ /* end file src/simdutf/fallback/begin.h */
+ 
+ // Declarations
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/bitmanipulation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/bitmanipulation.h
+ /* begin file src/simdutf/fallback/bitmanipulation.h */
+ #ifndef SIMDUTF_FALLBACK_BITMANIPULATION_H
+ #define SIMDUTF_FALLBACK_BITMANIPULATION_H
+@@ -4089,7 +4089,7 @@ static unsigned char _BitScanReverse64(unsigned long* 
ret, uint64_t x) {
+ #endif // SIMDUTF_FALLBACK_BITMANIPULATION_H
+ /* end file src/simdutf/fallback/bitmanipulation.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/end.h
+ /* begin file src/simdutf/fallback/end.h */
+ /* end file src/simdutf/fallback/end.h */
+ 
+@@ -4978,7 +4978,7 @@ const implementation * builtin_implementation() {
+ } // namespace simdutf
+ 
+ /* end file src/implementation.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=encoding_types.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=encoding_types.cpp
+ /* begin file src/encoding_types.cpp */
+ 
+ namespace simdutf {
+@@ -5040,7 +5040,7 @@ encoding_type check_bom(const char* byte, size_t length) 
{
+ }
+ }
+ /* end file src/encoding_types.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=error.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=error.cpp
+ /* begin file src/error.cpp */
+ namespace simdutf {
+ 
+@@ -5052,7 +5052,7 @@ namespace simdutf {
+ /* end file src/error.cpp */
+ // The large tables should be included once and they
+ // should not depend on a kernel.
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=tables/utf8_to_utf16_tables.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=tables/utf8_to_utf16_tables.h
+ /* begin file src/tables/utf8_to_utf16_tables.h */
+ #ifndef SIMDUTF_UTF8_TO_UTF16_TABLES_H
+ #define SIMDUTF_UTF8_TO_UTF16_TABLES_H
+@@ -9391,7 +9391,7 @@ const uint8_t utf8bigindex[4096][2] =
+ 
+ #endif // SIMDUTF_UTF8_TO_UTF16_TABLES_H
+ /* end file src/tables/utf8_to_utf16_tables.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=tables/utf16_to_utf8_tables.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=tables/utf16_to_utf8_tables.h
+ /* begin file src/tables/utf16_to_utf8_tables.h */
+ // file generated by scripts/sse_convert_utf16_to_utf8.py
+ #ifndef SIMDUTF_UTF16_TO_UTF8_TABLES_H
+@@ -9932,7 +9932,7 @@ namespace utf16_to_utf8 {
+ // End of tables.
+ 
+ // The scalar routines should be included once.
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/ascii.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/ascii.h
+ /* begin file src/scalar/ascii.h */
+ #ifndef SIMDUTF_ASCII_H
+ #define SIMDUTF_ASCII_H
+@@ -9993,7 +9993,7 @@ inline simdutf_warn_unused result 
validate_with_errors(const char *buf, size_t l
+ 
+ #endif
+ /* end file src/scalar/ascii.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf8.h
+ /* begin file src/scalar/utf8.h */
+ #ifndef SIMDUTF_UTF8_H
+ #define SIMDUTF_UTF8_H
+@@ -10183,7 +10183,7 @@ inline size_t utf16_length_from_utf8(const char* buf, 
size_t len) {
+ 
+ #endif
+ /* end file src/scalar/utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf16.h
+ /* begin file src/scalar/utf16.h */
+ #ifndef SIMDUTF_UTF16_H
+ #define SIMDUTF_UTF16_H
+@@ -10297,7 +10297,7 @@ simdutf_really_inline void 
change_endianness_utf16(const char16_t* in, size_t si
+ 
+ #endif
+ /* end file src/scalar/utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf32.h
+ /* begin file src/scalar/utf32.h */
+ #ifndef SIMDUTF_UTF32_H
+ #define SIMDUTF_UTF32_H
+@@ -10372,7 +10372,7 @@ inline size_t utf16_length_from_utf32(const char32_t* 
buf, size_t len) {
+ #endif
+ /* end file src/scalar/utf32.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf8/valid_utf32_to_utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf8/valid_utf32_to_utf8.h
+ /* begin file src/scalar/utf32_to_utf8/valid_utf32_to_utf8.h */
+ #ifndef SIMDUTF_VALID_UTF32_TO_UTF8_H
+ #define SIMDUTF_VALID_UTF32_TO_UTF8_H
+@@ -10439,7 +10439,7 @@ inline size_t convert_valid(const char32_t* buf, 
size_t len, char* utf8_output)
+ 
+ #endif
+ /* end file src/scalar/utf32_to_utf8/valid_utf32_to_utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf8/utf32_to_utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf8/utf32_to_utf8.h
+ /* begin file src/scalar/utf32_to_utf8/utf32_to_utf8.h */
+ #ifndef SIMDUTF_UTF32_TO_UTF8_H
+ #define SIMDUTF_UTF32_TO_UTF8_H
+@@ -10555,7 +10555,7 @@ inline result convert_with_errors(const char32_t* buf, 
size_t len, char* utf8_ou
+ #endif
+ /* end file src/scalar/utf32_to_utf8/utf32_to_utf8.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf16/valid_utf32_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf16/valid_utf32_to_utf16.h
+ /* begin file src/scalar/utf32_to_utf16/valid_utf32_to_utf16.h */
+ #ifndef SIMDUTF_VALID_UTF32_TO_UTF16_H
+ #define SIMDUTF_VALID_UTF32_TO_UTF16_H
+@@ -10600,7 +10600,7 @@ inline size_t convert_valid(const char32_t* buf, 
size_t len, char16_t* utf16_out
+ 
+ #endif
+ /* end file src/scalar/utf32_to_utf16/valid_utf32_to_utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf16/utf32_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf32_to_utf16/utf32_to_utf16.h
+ /* begin file src/scalar/utf32_to_utf16/utf32_to_utf16.h */
+ #ifndef SIMDUTF_UTF32_TO_UTF16_H
+ #define SIMDUTF_UTF32_TO_UTF16_H
+@@ -10676,7 +10676,7 @@ inline result convert_with_errors(const char32_t* buf, 
size_t len, char16_t* utf
+ #endif
+ /* end file src/scalar/utf32_to_utf16/utf32_to_utf16.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf8/valid_utf16_to_utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf8/valid_utf16_to_utf8.h
+ /* begin file src/scalar/utf16_to_utf8/valid_utf16_to_utf8.h */
+ #ifndef SIMDUTF_VALID_UTF16_TO_UTF8_H
+ #define SIMDUTF_VALID_UTF16_TO_UTF8_H
+@@ -10751,7 +10751,7 @@ inline size_t convert_valid(const char16_t* buf, 
size_t len, char* utf8_output)
+ 
+ #endif
+ /* end file src/scalar/utf16_to_utf8/valid_utf16_to_utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf8/utf16_to_utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf8/utf16_to_utf8.h
+ /* begin file src/scalar/utf16_to_utf8/utf16_to_utf8.h */
+ #ifndef SIMDUTF_UTF16_TO_UTF8_H
+ #define SIMDUTF_UTF16_TO_UTF8_H
+@@ -10887,7 +10887,7 @@ inline result convert_with_errors(const char16_t* buf, 
size_t len, char* utf8_ou
+ #endif
+ /* end file src/scalar/utf16_to_utf8/utf16_to_utf8.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf32/valid_utf16_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf32/valid_utf16_to_utf32.h
+ /* begin file src/scalar/utf16_to_utf32/valid_utf16_to_utf32.h */
+ #ifndef SIMDUTF_VALID_UTF16_TO_UTF32_H
+ #define SIMDUTF_VALID_UTF16_TO_UTF32_H
+@@ -10929,7 +10929,7 @@ inline size_t convert_valid(const char16_t* buf, 
size_t len, char32_t* utf32_out
+ 
+ #endif
+ /* end file src/scalar/utf16_to_utf32/valid_utf16_to_utf32.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf32/utf16_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf16_to_utf32/utf16_to_utf32.h
+ /* begin file src/scalar/utf16_to_utf32/utf16_to_utf32.h */
+ #ifndef SIMDUTF_UTF16_TO_UTF32_H
+ #define SIMDUTF_UTF16_TO_UTF32_H
+@@ -11001,7 +11001,7 @@ inline result convert_with_errors(const char16_t* buf, 
size_t len, char32_t* utf
+ #endif
+ /* end file src/scalar/utf16_to_utf32/utf16_to_utf32.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf16/valid_utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf16/valid_utf8_to_utf16.h
+ /* begin file src/scalar/utf8_to_utf16/valid_utf8_to_utf16.h */
+ #ifndef SIMDUTF_VALID_UTF8_TO_UTF16_H
+ #define SIMDUTF_VALID_UTF8_TO_UTF16_H
+@@ -11086,7 +11086,7 @@ inline size_t convert_valid(const char* buf, size_t 
len, char16_t* utf16_output)
+ 
+ #endif
+ /* end file src/scalar/utf8_to_utf16/valid_utf8_to_utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf16/utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf16/utf8_to_utf16.h
+ /* begin file src/scalar/utf8_to_utf16/utf8_to_utf16.h */
+ #ifndef SIMDUTF_UTF8_TO_UTF16_H
+ #define SIMDUTF_UTF8_TO_UTF16_H
+@@ -11336,7 +11336,7 @@ inline result rewind_and_convert_with_errors(size_t 
prior_bytes, const char* buf
+ #endif
+ /* end file src/scalar/utf8_to_utf16/utf8_to_utf16.h */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf32/valid_utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf32/valid_utf8_to_utf32.h
+ /* begin file src/scalar/utf8_to_utf32/valid_utf8_to_utf32.h */
+ #ifndef SIMDUTF_VALID_UTF8_TO_UTF32_H
+ #define SIMDUTF_VALID_UTF8_TO_UTF32_H
+@@ -11402,7 +11402,7 @@ inline size_t convert_valid(const char* buf, size_t 
len, char32_t* utf32_output)
+ 
+ #endif
+ /* end file src/scalar/utf8_to_utf32/valid_utf8_to_utf32.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf32/utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=scalar/utf8_to_utf32/utf8_to_utf32.h
+ /* begin file src/scalar/utf8_to_utf32/utf8_to_utf32.h */
+ #ifndef SIMDUTF_UTF8_TO_UTF32_H
+ #define SIMDUTF_UTF8_TO_UTF32_H
+@@ -11622,9 +11622,9 @@ SIMDUTF_DISABLE_UNDESIRED_WARNINGS
+ 
+ 
+ #if SIMDUTF_IMPLEMENTATION_ARM64
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/implementation.cpp
+ /* begin file src/arm64/implementation.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/begin.h
+ /* begin file src/simdutf/arm64/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "arm64"
+ // #define SIMDUTF_IMPLEMENTATION arm64
+@@ -11660,7 +11660,7 @@ simdutf_really_inline simd8<bool> 
must_be_2_3_continuation(const simd8<uint8_t>
+     return is_third_byte ^ is_fourth_byte;
+ }
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_detect_encodings.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_detect_encodings.cpp
+ /* begin file src/arm64/arm_detect_encodings.cpp */
+ template<class checker>
+ // len is known to be a multiple of 2 when this is called
+@@ -11868,7 +11868,7 @@ int arm_detect_encodings(const char * buf, size_t len) 
{
+ }
+ /* end file src/arm64/arm_detect_encodings.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_validate_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_validate_utf16.cpp
+ /* begin file src/arm64/arm_validate_utf16.cpp */
+ template <endianness big_endian>
+ const char16_t* arm_validate_utf16(const char16_t* input, size_t size) {
+@@ -12018,7 +12018,7 @@ const result arm_validate_utf16_with_errors(const 
char16_t* input, size_t size)
+     return result(error_code::SUCCESS, input - start);
+ }
+ /* end file src/arm64/arm_validate_utf16.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_validate_utf32le.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_validate_utf32le.cpp
+ /* begin file src/arm64/arm_validate_utf32le.cpp */
+ 
+ const char32_t* arm_validate_utf32le(const char32_t* input, size_t size) {
+@@ -12083,7 +12083,7 @@ const result arm_validate_utf32le_with_errors(const 
char32_t* input, size_t size
+ }
+ /* end file src/arm64/arm_validate_utf32le.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf8_to_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf8_to_utf16.cpp
+ /* begin file src/arm64/arm_convert_utf8_to_utf16.cpp */
+ // Convert up to 12 bytes from utf8 to utf16 using a mask indicating the
+ // end of the code points. Only the least significant 12 bits of the mask
+@@ -12270,7 +12270,7 @@ size_t convert_masked_utf8_to_utf16(const char *input,
+   return consumed;
+ }
+ /* end file src/arm64/arm_convert_utf8_to_utf16.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf8_to_utf32.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf8_to_utf32.cpp
+ /* begin file src/arm64/arm_convert_utf8_to_utf32.cpp */
+ // Convert up to 12 bytes from utf8 to utf32 using a mask indicating the
+ // end of the code points. Only the least significant 12 bits of the mask
+@@ -12407,7 +12407,7 @@ size_t convert_masked_utf8_to_utf32(const char *input,
+ }
+ /* end file src/arm64/arm_convert_utf8_to_utf32.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf16_to_utf8.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf16_to_utf8.cpp
+ /* begin file src/arm64/arm_convert_utf16_to_utf8.cpp */
+ /*
+     The vectorized algorithm works on single SSE register i.e., it
+@@ -12987,7 +12987,7 @@ std::pair<result, char*> 
arm_convert_utf16_to_utf8_with_errors(const char16_t* b
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
reinterpret_cast<char*>(utf8_output));
+ }
+ /* end file src/arm64/arm_convert_utf16_to_utf8.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf16_to_utf32.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf16_to_utf32.cpp
+ /* begin file src/arm64/arm_convert_utf16_to_utf32.cpp */
+ /*
+     The vectorized algorithm works on single SSE register i.e., it
+@@ -13164,7 +13164,7 @@ std::pair<result, char32_t*> 
arm_convert_utf16_to_utf32_with_errors(const char16
+ }
+ /* end file src/arm64/arm_convert_utf16_to_utf32.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf32_to_utf8.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf32_to_utf8.cpp
+ /* begin file src/arm64/arm_convert_utf32_to_utf8.cpp */
+ std::pair<const char32_t*, char*> arm_convert_utf32_to_utf8(const char32_t* 
buf, size_t len, char* utf8_out) {
+   uint8_t * utf8_output = reinterpret_cast<uint8_t*>(utf8_out);
+@@ -13636,7 +13636,7 @@ std::pair<result, char*> 
arm_convert_utf32_to_utf8_with_errors(const char32_t* b
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
reinterpret_cast<char*>(utf8_output));
+ }
+ /* end file src/arm64/arm_convert_utf32_to_utf8.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf32_to_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=arm64/arm_convert_utf32_to_utf16.cpp
+ /* begin file src/arm64/arm_convert_utf32_to_utf16.cpp */
+ template <endianness big_endian>
+ std::pair<const char32_t*, char16_t*> arm_convert_utf32_to_utf16(const 
char32_t* buf, size_t len, char16_t* utf16_out) {
+@@ -13769,7 +13769,7 @@ std::pair<result, char16_t*> 
arm_convert_utf32_to_utf16_with_errors(const char32
+ } // unnamed namespace
+ } // namespace arm64
+ } // namespace simdutf
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
+ /* begin file src/generic/buf_block_reader.h */
+ namespace simdutf {
+ namespace arm64 {
+@@ -13864,7 +13864,7 @@ simdutf_really_inline void 
buf_block_reader<STEP_SIZE>::advance() {
+ } // namespace arm64
+ } // namespace simdutf
+ /* end file src/generic/buf_block_reader.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
+ /* begin file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+ namespace simdutf {
+ namespace arm64 {
+@@ -14053,7 +14053,7 @@ using utf8_validation::utf8_checker;
+ } // namespace arm64
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
+ /* begin file src/generic/utf8_validation/utf8_validator.h */
+ namespace simdutf {
+ namespace arm64 {
+@@ -14180,7 +14180,7 @@ result generic_validate_ascii_with_errors(const char * 
input, size_t length) {
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_validator.h */
+ // transcoding from UTF-8 to UTF-16
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+ 
+ 
+@@ -14255,7 +14255,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace arm64
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ 
+ 
+@@ -14563,7 +14563,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ // transcoding from UTF-8 to UTF-32
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+ 
+ namespace simdutf {
+@@ -14609,7 +14609,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace arm64
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ 
+ 
+@@ -14910,7 +14910,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ // other functions
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
+ /* begin file src/generic/utf8.h */
+ 
+ namespace simdutf {
+@@ -14957,7 +14957,7 @@ simdutf_really_inline size_t 
utf32_length_from_utf8(const char* in, size_t size)
+ } // namespace arm64
+ } // namespace simdutf
+ /* end file src/generic/utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
+ /* begin file src/generic/utf16.h */
+ namespace simdutf {
+ namespace arm64 {
+@@ -15492,15 +15492,15 @@ simdutf_warn_unused size_t 
implementation::utf32_length_from_utf8(const char * i
+ } // namespace arm64
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/arm64/end.h
+ /* begin file src/simdutf/arm64/end.h */
+ /* end file src/simdutf/arm64/end.h */
+ /* end file src/arm64/implementation.cpp */
+ #endif
+ #if SIMDUTF_IMPLEMENTATION_FALLBACK
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=fallback/implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=fallback/implementation.cpp
+ /* begin file src/fallback/implementation.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/begin.h
+ /* begin file src/simdutf/fallback/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "fallback"
+ // #define SIMDUTF_IMPLEMENTATION fallback
+@@ -15744,17 +15744,17 @@ simdutf_warn_unused size_t 
implementation::utf32_length_from_utf8(const char * i
+ } // namespace fallback
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/fallback/end.h
+ /* begin file src/simdutf/fallback/end.h */
+ /* end file src/simdutf/fallback/end.h */
+ /* end file src/fallback/implementation.cpp */
+ #endif
+ #if SIMDUTF_IMPLEMENTATION_ICELAKE
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/implementation.cpp
+ /* begin file src/icelake/implementation.cpp */
+ 
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/begin.h
+ /* begin file src/simdutf/icelake/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "icelake"
+ // #define SIMDUTF_IMPLEMENTATION icelake
+@@ -15775,7 +15775,7 @@ namespace {
+ #ifndef SIMDUTF_ICELAKE_H
+ #error "icelake.h must be included"
+ #endif
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_utf8_common.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_utf8_common.inl.cpp
+ /* begin file src/icelake/icelake_utf8_common.inl.cpp */
+ // Common procedures for both validating and non-validating conversions from 
UTF-8.
+ enum block_processing_mode { SIMDUTF_FULL, SIMDUTF_TAIL};
+@@ -16440,7 +16440,7 @@ simdutf_really_inline __m512i 
expand_utf8_to_utf32(__m512i input) {
+     return expanded_utf8_to_utf32(char_class, input);
+ }
+ /* end file src/icelake/icelake_utf8_common.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_macros.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_macros.inl.cpp
+ /* begin file src/icelake/icelake_macros.inl.cpp */
+ 
+ /*
+@@ -16576,7 +16576,7 @@ simdutf_really_inline __m512i 
expand_utf8_to_utf32(__m512i input) {
+                 }                                                             
            \
+         }
+ /* end file src/icelake/icelake_macros.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_from_valid_utf8.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_from_valid_utf8.inl.cpp
+ /* begin file src/icelake/icelake_from_valid_utf8.inl.cpp */
+ // file included directly
+ 
+@@ -16715,7 +16715,7 @@ std::pair<const char*, OUTPUT*> 
valid_utf8_to_fixed_length(const char* str, size
+ 
+ using utf8_to_utf16_result = std::pair<const char*, char16_t*>;
+ /* end file src/icelake/icelake_from_valid_utf8.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_utf8_validation.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_utf8_validation.inl.cpp
+ /* begin file src/icelake/icelake_utf8_validation.inl.cpp */
+ // file included directly
+ 
+@@ -16845,7 +16845,7 @@ simdutf_really_inline __m512i 
check_special_cases(__m512i input, const __m512i p
+ 
+   }; // struct avx512_utf8_checker
+ /* end file src/icelake/icelake_utf8_validation.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_from_utf8.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_from_utf8.inl.cpp
+ /* begin file src/icelake/icelake_from_utf8.inl.cpp */
+ // file included directly
+ 
+@@ -17148,7 +17148,7 @@ std::tuple<const char*, OUTPUT*, bool> 
validating_utf8_to_fixed_length_with_cons
+     return {ptr, output, true};
+ }
+ /* end file src/icelake/icelake_from_utf8.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf16_to_utf32.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf16_to_utf32.inl.cpp
+ /* begin file src/icelake/icelake_convert_utf16_to_utf32.inl.cpp */
+ // file included directly
+ 
+@@ -17260,7 +17260,7 @@ std::tuple<const char16_t*, char32_t*, bool> 
convert_utf16_to_utf32(const char16
+   return std::make_tuple(buf+carry, utf32_output, true);
+ }
+ /* end file src/icelake/icelake_convert_utf16_to_utf32.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf32_to_utf8.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf32_to_utf8.inl.cpp
+ /* begin file src/icelake/icelake_convert_utf32_to_utf8.inl.cpp */
+ // file included directly
+ 
+@@ -17746,7 +17746,7 @@ std::pair<result, char*> 
avx512_convert_utf32_to_utf8_with_errors(const char32_t
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
utf8_output);
+ }
+ /* end file src/icelake/icelake_convert_utf32_to_utf8.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf32_to_utf16.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf32_to_utf16.inl.cpp
+ /* begin file src/icelake/icelake_convert_utf32_to_utf16.inl.cpp */
+ // file included directly
+ 
+@@ -17881,7 +17881,7 @@ std::pair<result, char16_t*> 
avx512_convert_utf32_to_utf16_with_errors(const cha
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
utf16_output);
+ }
+ /* end file src/icelake/icelake_convert_utf32_to_utf16.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_ascii_validation.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_ascii_validation.inl.cpp
+ /* begin file src/icelake/icelake_ascii_validation.inl.cpp */
+ // file included directly
+ 
+@@ -17900,7 +17900,7 @@ bool validate_ascii(const char* buf, size_t len) {
+   return (_mm512_test_epi8_mask(running_or, running_or) == 0);
+ }
+ /* end file src/icelake/icelake_ascii_validation.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_utf32_validation.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_utf32_validation.inl.cpp
+ /* begin file src/icelake/icelake_utf32_validation.inl.cpp */
+ // file included directly
+ 
+@@ -17932,7 +17932,7 @@ const char32_t* validate_utf32(const char32_t* buf, 
size_t len) {
+     return buf;
+ }
+ /* end file src/icelake/icelake_utf32_validation.inl.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf16_to_utf8.inl.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=icelake/icelake_convert_utf16_to_utf8.inl.cpp
+ /* begin file src/icelake/icelake_convert_utf16_to_utf8.inl.cpp */
+ // file included directly
+ 
+@@ -19244,7 +19244,7 @@ simdutf_warn_unused size_t 
implementation::utf32_length_from_utf8(const char * i
+ } // namespace icelake
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/icelake/end.h
+ /* begin file src/simdutf/icelake/end.h */
+ #if SIMDUTF_CAN_ALWAYS_RUN_ICELAKE
+ // nothing needed.
+@@ -19260,10 +19260,10 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ /* end file src/icelake/implementation.cpp */
+ #endif
+ #if SIMDUTF_IMPLEMENTATION_HASWELL
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/implementation.cpp
+ /* begin file src/haswell/implementation.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/begin.h
+ /* begin file src/simdutf/haswell/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "haswell"
+ // #define SIMDUTF_IMPLEMENTATION haswell
+@@ -19306,7 +19306,7 @@ simdutf_really_inline simd8<bool> 
must_be_2_3_continuation(const simd8<uint8_t>
+   return simd8<int8_t>(is_third_byte | is_fourth_byte) > int8_t(0);
+ }
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_detect_encodings.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_detect_encodings.cpp
+ /* begin file src/haswell/avx2_detect_encodings.cpp */
+ template<class checker>
+ // len is known to be a multiple of 2 when this is called
+@@ -19496,7 +19496,7 @@ int avx2_detect_encodings(const char * buf, size_t 
len) {
+ }
+ /* end file src/haswell/avx2_detect_encodings.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_validate_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_validate_utf16.cpp
+ /* begin file src/haswell/avx2_validate_utf16.cpp */
+ /*
+     In UTF-16 words in range 0xD800 to 0xDFFF have special meaning.
+@@ -19697,7 +19697,7 @@ const result avx2_validate_utf16_with_errors(const 
char16_t* input, size_t size)
+     return result(error_code::SUCCESS, input - start);
+ }
+ /* end file src/haswell/avx2_validate_utf16.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_validate_utf32le.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_validate_utf32le.cpp
+ /* begin file src/haswell/avx2_validate_utf32le.cpp */
+ /* Returns:
+    - pointer to the last unprocessed character (a scalar fallback should 
check the rest);
+@@ -19763,7 +19763,7 @@ const result avx2_validate_utf32le_with_errors(const 
char32_t* input, size_t siz
+ }
+ /* end file src/haswell/avx2_validate_utf32le.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf8_to_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf8_to_utf16.cpp
+ /* begin file src/haswell/avx2_convert_utf8_to_utf16.cpp */
+ // depends on "tables/utf8_to_utf16_tables.h"
+ 
+@@ -19946,7 +19946,7 @@ size_t convert_masked_utf8_to_utf16(const char *input,
+   return consumed;
+ }
+ /* end file src/haswell/avx2_convert_utf8_to_utf16.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf8_to_utf32.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf8_to_utf32.cpp
+ /* begin file src/haswell/avx2_convert_utf8_to_utf32.cpp */
+ // depends on "tables/utf8_to_utf16_tables.h"
+ 
+@@ -20075,7 +20075,7 @@ size_t convert_masked_utf8_to_utf32(const char *input,
+ }
+ /* end file src/haswell/avx2_convert_utf8_to_utf32.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf16_to_utf8.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf16_to_utf8.cpp
+ /* begin file src/haswell/avx2_convert_utf16_to_utf8.cpp */
+ /*
+     The vectorized algorithm works on single SSE register i.e., it
+@@ -20608,7 +20608,7 @@ std::pair<result, char*> 
avx2_convert_utf16_to_utf8_with_errors(const char16_t*
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
utf8_output);
+ }
+ /* end file src/haswell/avx2_convert_utf16_to_utf8.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf16_to_utf32.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf16_to_utf32.cpp
+ /* begin file src/haswell/avx2_convert_utf16_to_utf32.cpp */
+ /*
+     The vectorized algorithm works on single SSE register i.e., it
+@@ -20793,7 +20793,7 @@ std::pair<result, char32_t*> 
avx2_convert_utf16_to_utf32_with_errors(const char1
+ }
+ /* end file src/haswell/avx2_convert_utf16_to_utf32.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf32_to_utf8.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf32_to_utf8.cpp
+ /* begin file src/haswell/avx2_convert_utf32_to_utf8.cpp */
+ std::pair<const char32_t*, char*> avx2_convert_utf32_to_utf8(const char32_t* 
buf, size_t len, char* utf8_output) {
+   const char32_t* end = buf + len;
+@@ -21276,7 +21276,7 @@ std::pair<result, char*> 
avx2_convert_utf32_to_utf8_with_errors(const char32_t*
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
utf8_output);
+ }
+ /* end file src/haswell/avx2_convert_utf32_to_utf8.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf32_to_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=haswell/avx2_convert_utf32_to_utf16.cpp
+ /* begin file src/haswell/avx2_convert_utf32_to_utf16.cpp */
+ template <endianness big_endian>
+ std::pair<const char32_t*, char16_t*> avx2_convert_utf32_to_utf16(const 
char32_t* buf, size_t len, char16_t* utf16_output) {
+@@ -21412,7 +21412,7 @@ std::pair<result, char16_t*> 
avx2_convert_utf32_to_utf16_with_errors(const char3
+ } // namespace haswell
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
+ /* begin file src/generic/buf_block_reader.h */
+ namespace simdutf {
+ namespace haswell {
+@@ -21507,7 +21507,7 @@ simdutf_really_inline void 
buf_block_reader<STEP_SIZE>::advance() {
+ } // namespace haswell
+ } // namespace simdutf
+ /* end file src/generic/buf_block_reader.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
+ /* begin file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+ namespace simdutf {
+ namespace haswell {
+@@ -21696,7 +21696,7 @@ using utf8_validation::utf8_checker;
+ } // namespace haswell
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
+ /* begin file src/generic/utf8_validation/utf8_validator.h */
+ namespace simdutf {
+ namespace haswell {
+@@ -21823,7 +21823,7 @@ result generic_validate_ascii_with_errors(const char * 
input, size_t length) {
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_validator.h */
+ // transcoding from UTF-8 to UTF-16
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+ 
+ 
+@@ -21898,7 +21898,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace haswell
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ 
+ 
+@@ -22206,7 +22206,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ // transcoding from UTF-8 to UTF-32
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+ 
+ namespace simdutf {
+@@ -22252,7 +22252,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace haswell
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ 
+ 
+@@ -22553,7 +22553,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ // other functions
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
+ /* begin file src/generic/utf8.h */
+ 
+ namespace simdutf {
+@@ -22600,7 +22600,7 @@ simdutf_really_inline size_t 
utf32_length_from_utf8(const char* in, size_t size)
+ } // namespace haswell
+ } // namespace simdutf
+ /* end file src/generic/utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
+ /* begin file src/generic/utf16.h */
+ namespace simdutf {
+ namespace haswell {
+@@ -23128,7 +23128,7 @@ simdutf_warn_unused size_t 
implementation::utf32_length_from_utf8(const char * i
+ } // namespace haswell
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/haswell/end.h
+ /* begin file src/simdutf/haswell/end.h */
+ #if SIMDUTF_CAN_ALWAYS_RUN_HASWELL
+ // nothing needed.
+@@ -23144,14 +23144,14 @@ SIMDUTF_POP_DISABLE_WARNINGS
+ /* end file src/haswell/implementation.cpp */
+ #endif
+ #if SIMDUTF_IMPLEMENTATION_PPC64
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=ppc64/implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=ppc64/implementation.cpp
+ /* begin file src/ppc64/implementation.cpp */
+ 
+ 
+ 
+ 
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/begin.h
+ /* begin file src/simdutf/ppc64/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "ppc64"
+ // #define SIMDUTF_IMPLEMENTATION ppc64
+@@ -23189,7 +23189,7 @@ simdutf_really_inline simd8<bool> 
must_be_2_3_continuation(const simd8<uint8_t>
+ } // namespace ppc64
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
+ /* begin file src/generic/buf_block_reader.h */
+ namespace simdutf {
+ namespace ppc64 {
+@@ -23284,7 +23284,7 @@ simdutf_really_inline void 
buf_block_reader<STEP_SIZE>::advance() {
+ } // namespace ppc64
+ } // namespace simdutf
+ /* end file src/generic/buf_block_reader.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
+ /* begin file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+ namespace simdutf {
+ namespace ppc64 {
+@@ -23473,7 +23473,7 @@ using utf8_validation::utf8_checker;
+ } // namespace ppc64
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
+ /* begin file src/generic/utf8_validation/utf8_validator.h */
+ namespace simdutf {
+ namespace ppc64 {
+@@ -23600,7 +23600,7 @@ result generic_validate_ascii_with_errors(const char * 
input, size_t length) {
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_validator.h */
+ // transcoding from UTF-8 to UTF-16
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+ 
+ 
+@@ -23675,7 +23675,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace ppc64
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ 
+ 
+@@ -23983,7 +23983,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ // transcoding from UTF-8 to UTF-32
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+ 
+ namespace simdutf {
+@@ -24029,7 +24029,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace ppc64
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ 
+ 
+@@ -24330,7 +24330,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ // other functions
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
+ /* begin file src/generic/utf8.h */
+ 
+ namespace simdutf {
+@@ -24377,7 +24377,7 @@ simdutf_really_inline size_t 
utf32_length_from_utf8(const char* in, size_t size)
+ } // namespace ppc64
+ } // namespace simdutf
+ /* end file src/generic/utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
+ /* begin file src/generic/utf16.h */
+ namespace simdutf {
+ namespace ppc64 {
+@@ -24676,15 +24676,15 @@ simdutf_warn_unused size_t 
implementation::utf32_length_from_utf8(const char * i
+ } // namespace ppc64
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/ppc64/end.h
+ /* begin file src/simdutf/ppc64/end.h */
+ /* end file src/simdutf/ppc64/end.h */
+ /* end file src/ppc64/implementation.cpp */
+ #endif
+ #if SIMDUTF_IMPLEMENTATION_WESTMERE
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/implementation.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/implementation.cpp
+ /* begin file src/westmere/implementation.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/begin.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/begin.h
+ /* begin file src/simdutf/westmere/begin.h */
+ // redefining SIMDUTF_IMPLEMENTATION to "westmere"
+ // #define SIMDUTF_IMPLEMENTATION westmere
+@@ -24722,7 +24722,7 @@ simdutf_really_inline simd8<bool> 
must_be_2_3_continuation(const simd8<uint8_t>
+   return simd8<int8_t>(is_third_byte | is_fourth_byte) > int8_t(0);
+ }
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_detect_encodings.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_detect_encodings.cpp
+ /* begin file src/westmere/sse_detect_encodings.cpp */
+ template<class checker>
+ // len is known to be a multiple of 2 when this is called
+@@ -24932,7 +24932,7 @@ int sse_detect_encodings(const char * buf, size_t len) 
{
+ }
+ /* end file src/westmere/sse_detect_encodings.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_validate_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_validate_utf16.cpp
+ /* begin file src/westmere/sse_validate_utf16.cpp */
+ /*
+     In UTF-16 words in range 0xD800 to 0xDFFF have special meaning.
+@@ -25132,7 +25132,7 @@ const result sse_validate_utf16_with_errors(const 
char16_t* input, size_t size)
+     return result(error_code::SUCCESS, input - start);
+ }
+ /* end file src/westmere/sse_validate_utf16.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_validate_utf32le.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_validate_utf32le.cpp
+ /* begin file src/westmere/sse_validate_utf32le.cpp */
+ /* Returns:
+    - pointer to the last unprocessed character (a scalar fallback should 
check the rest);
+@@ -25198,7 +25198,7 @@ const result sse_validate_utf32le_with_errors(const 
char32_t* input, size_t size
+ }
+ /* end file src/westmere/sse_validate_utf32le.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf8_to_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf8_to_utf16.cpp
+ /* begin file src/westmere/sse_convert_utf8_to_utf16.cpp */
+ // depends on "tables/utf8_to_utf16_tables.h"
+ 
+@@ -25383,7 +25383,7 @@ size_t convert_masked_utf8_to_utf16(const char *input,
+   return consumed;
+ }
+ /* end file src/westmere/sse_convert_utf8_to_utf16.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf8_to_utf32.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf8_to_utf32.cpp
+ /* begin file src/westmere/sse_convert_utf8_to_utf32.cpp */
+ // depends on "tables/utf8_to_utf16_tables.h"
+ 
+@@ -25515,7 +25515,7 @@ size_t convert_masked_utf8_to_utf32(const char *input,
+ }
+ /* end file src/westmere/sse_convert_utf8_to_utf32.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf16_to_utf8.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf16_to_utf8.cpp
+ /* begin file src/westmere/sse_convert_utf16_to_utf8.cpp */
+ /*
+     The vectorized algorithm works on single SSE register i.e., it
+@@ -26043,7 +26043,7 @@ std::pair<result, char*> 
sse_convert_utf16_to_utf8_with_errors(const char16_t* b
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
utf8_output);
+ }
+ /* end file src/westmere/sse_convert_utf16_to_utf8.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf16_to_utf32.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf16_to_utf32.cpp
+ /* begin file src/westmere/sse_convert_utf16_to_utf32.cpp */
+ /*
+     The vectorized algorithm works on single SSE register i.e., it
+@@ -26227,7 +26227,7 @@ std::pair<result, char32_t*> 
sse_convert_utf16_to_utf32_with_errors(const char16
+ }
+ /* end file src/westmere/sse_convert_utf16_to_utf32.cpp */
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf32_to_utf8.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf32_to_utf8.cpp
+ /* begin file src/westmere/sse_convert_utf32_to_utf8.cpp */
+ std::pair<const char32_t*, char*> sse_convert_utf32_to_utf8(const char32_t* 
buf, size_t len, char* utf8_output) {
+   const char32_t* end = buf + len;
+@@ -26728,7 +26728,7 @@ std::pair<result, char*> 
sse_convert_utf32_to_utf8_with_errors(const char32_t* b
+   return std::make_pair(result(error_code::SUCCESS, buf - start), 
utf8_output);
+ }
+ /* end file src/westmere/sse_convert_utf32_to_utf8.cpp */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf32_to_utf16.cpp
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=westmere/sse_convert_utf32_to_utf16.cpp
+ /* begin file src/westmere/sse_convert_utf32_to_utf16.cpp */
+ template <endianness big_endian>
+ std::pair<const char32_t*, char16_t*> sse_convert_utf32_to_utf16(const 
char32_t* buf, size_t len, char16_t* utf16_output) {
+@@ -26867,7 +26867,7 @@ std::pair<result, char16_t*> 
sse_convert_utf32_to_utf16_with_errors(const char32
+ } // namespace westmere
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/buf_block_reader.h
+ /* begin file src/generic/buf_block_reader.h */
+ namespace simdutf {
+ namespace westmere {
+@@ -26962,7 +26962,7 @@ simdutf_really_inline void 
buf_block_reader<STEP_SIZE>::advance() {
+ } // namespace westmere
+ } // namespace simdutf
+ /* end file src/generic/buf_block_reader.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_lookup4_algorithm.h
+ /* begin file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+ namespace simdutf {
+ namespace westmere {
+@@ -27151,7 +27151,7 @@ using utf8_validation::utf8_checker;
+ } // namespace westmere
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_lookup4_algorithm.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_validation/utf8_validator.h
+ /* begin file src/generic/utf8_validation/utf8_validator.h */
+ namespace simdutf {
+ namespace westmere {
+@@ -27278,7 +27278,7 @@ result generic_validate_ascii_with_errors(const char * 
input, size_t length) {
+ } // namespace simdutf
+ /* end file src/generic/utf8_validation/utf8_validator.h */
+ // transcoding from UTF-8 to UTF-16
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/valid_utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+ 
+ 
+@@ -27353,7 +27353,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace westmere
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/valid_utf8_to_utf16.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf16/utf8_to_utf16.h
+ /* begin file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ 
+ 
+@@ -27661,7 +27661,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf16/utf8_to_utf16.h */
+ // transcoding from UTF-8 to UTF-32
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/valid_utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+ 
+ namespace simdutf {
+@@ -27707,7 +27707,7 @@ simdutf_warn_unused size_t convert_valid(const char* 
input, size_t size,
+ } // namespace westmere
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/valid_utf8_to_utf32.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8_to_utf32/utf8_to_utf32.h
+ /* begin file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ 
+ 
+@@ -28008,7 +28008,7 @@ using namespace simd;
+ } // namespace simdutf
+ /* end file src/generic/utf8_to_utf32/utf8_to_utf32.h */
+ // other functions
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf8.h
+ /* begin file src/generic/utf8.h */
+ 
+ namespace simdutf {
+@@ -28055,7 +28055,7 @@ simdutf_really_inline size_t 
utf32_length_from_utf8(const char* in, size_t size)
+ } // namespace westmere
+ } // namespace simdutf
+ /* end file src/generic/utf8.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=generic/utf16.h
+ /* begin file src/generic/utf16.h */
+ namespace simdutf {
+ namespace westmere {
+@@ -28587,7 +28587,7 @@ simdutf_warn_unused size_t 
implementation::utf32_length_from_utf8(const char * i
+ } // namespace westmere
+ } // namespace simdutf
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/end.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/src, 
filename=simdutf/westmere/end.h
+ /* begin file src/simdutf/westmere/end.h */
+ #if SIMDUTF_CAN_ALWAYS_RUN_WESTMERE
+ // nothing needed.
+diff --git a/deps/simdutf/simdutf.h b/deps/simdutf/simdutf.h
+index 56ab9ecd5256..f63c163c0f2b 100644
+--- a/deps/simdutf/simdutf.h
++++ b/deps/simdutf/simdutf.h
+@@ -1,11 +1,11 @@
+-/* auto-generated on 2023-05-22 21:46:48 -0400. Do not edit! */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf.h
++/* auto-generated on 2023-06-05 08:58:28 -0400. Do not edit! */
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf.h
+ /* begin file include/simdutf.h */
+ #ifndef SIMDUTF_H
+ #define SIMDUTF_H
+ #include <cstring>
+ 
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/compiler_check.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/compiler_check.h
+ /* begin file include/simdutf/compiler_check.h */
+ #ifndef SIMDUTF_COMPILER_CHECK_H
+ #define SIMDUTF_COMPILER_CHECK_H
+@@ -43,13 +43,13 @@
+ 
+ #endif // SIMDUTF_COMPILER_CHECK_H
+ /* end file include/simdutf/compiler_check.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/common_defs.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/common_defs.h
+ /* begin file include/simdutf/common_defs.h */
+ #ifndef SIMDUTF_COMMON_DEFS_H
+ #define SIMDUTF_COMMON_DEFS_H
+ 
+ #include <cassert>
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/portability.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/portability.h
+ /* begin file include/simdutf/portability.h */
+ #ifndef SIMDUTF_PORTABILITY_H
+ #define SIMDUTF_PORTABILITY_H
+@@ -280,7 +280,7 @@ use a 64-bit target such as x64, 64-bit ARM or 64-bit 
PPC.")
+ 
+ #endif // SIMDUTF_PORTABILITY_H
+ /* end file include/simdutf/portability.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/avx512.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/avx512.h
+ /* begin file include/simdutf/avx512.h */
+ #ifndef SIMDUTF_AVX512_H_
+ #define SIMDUTF_AVX512_H_
+@@ -460,19 +460,21 @@ use a 64-bit target such as x64, 64-bit ARM or 64-bit 
PPC.")
+ 
+ #endif // MSC_VER
+ 
+-#if defined(SIMDUTF_VISUAL_STUDIO)
+-    /**
+-     * It does not matter here whether you are using
+-     * the regular visual studio or clang under visual
+-     * studio.
+-     */
+-    #if SIMDUTF_USING_LIBRARY
+-    #define SIMDUTF_DLLIMPORTEXPORT __declspec(dllimport)
++#ifndef SIMDUTF_DLLIMPORTEXPORT
++    #if defined(SIMDUTF_VISUAL_STUDIO)
++      /**
++       * It does not matter here whether you are using
++       * the regular visual studio or clang under visual
++       * studio.
++       */
++      #if SIMDUTF_USING_LIBRARY
++      #define SIMDUTF_DLLIMPORTEXPORT __declspec(dllimport)
++      #else
++      #define SIMDUTF_DLLIMPORTEXPORT __declspec(dllexport)
++      #endif
+     #else
+-    #define SIMDUTF_DLLIMPORTEXPORT __declspec(dllexport)
++      #define SIMDUTF_DLLIMPORTEXPORT
+     #endif
+-#else
+-    #define SIMDUTF_DLLIMPORTEXPORT
+ #endif
+ 
+ /// If EXPR is an error, returns it.
+@@ -481,7 +483,7 @@ use a 64-bit target such as x64, 64-bit ARM or 64-bit 
PPC.")
+ 
+ #endif // SIMDUTF_COMMON_DEFS_H
+ /* end file include/simdutf/common_defs.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/encoding_types.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/encoding_types.h
+ /* begin file include/simdutf/encoding_types.h */
+ #include <string>
+ 
+@@ -529,7 +531,7 @@ size_t bom_byte_size(encoding_type bom);
+ } // BOM namespace
+ } // simdutf namespace
+ /* end file include/simdutf/encoding_types.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/error.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/error.h
+ /* begin file include/simdutf/error.h */
+ #ifndef ERROR_H
+ #define ERROR_H
+@@ -566,7 +568,7 @@ SIMDUTF_PUSH_DISABLE_WARNINGS
+ SIMDUTF_DISABLE_UNDESIRED_WARNINGS
+ 
+ // Public API
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/simdutf_version.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/simdutf_version.h
+ /* begin file include/simdutf/simdutf_version.h */
+ // /include/simdutf/simdutf_version.h automatically generated by release.py,
+ // do not change by hand
+@@ -574,7 +576,7 @@ SIMDUTF_DISABLE_UNDESIRED_WARNINGS
+ #define SIMDUTF_SIMDUTF_VERSION_H
+ 
+ /** The version of simdutf being used (major.minor.revision) */
+-#define SIMDUTF_VERSION "3.2.12"
++#define SIMDUTF_VERSION "3.2.14"
+ 
+ namespace simdutf {
+ enum {
+@@ -589,13 +591,13 @@ enum {
+   /**
+    * The revision (major.minor.REVISION) of simdutf being used.
+    */
+-  SIMDUTF_VERSION_REVISION = 12
++  SIMDUTF_VERSION_REVISION = 14
+ };
+ } // namespace simdutf
+ 
+ #endif // SIMDUTF_SIMDUTF_VERSION_H
+ /* end file include/simdutf/simdutf_version.h */
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/implementation.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/implementation.h
+ /* begin file include/simdutf/implementation.h */
+ #ifndef SIMDUTF_IMPLEMENTATION_H
+ #define SIMDUTF_IMPLEMENTATION_H
+@@ -605,7 +607,7 @@ enum {
+ #endif
+ #include <vector>
+ #include <tuple>
+-// dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, 
filename=simdutf/internal/isadetection.h
++// dofile: invoked with prepath=/Users/lemire/CVS/github/simdutf/include, 
filename=simdutf/internal/isadetection.h
+ /* begin file include/simdutf/internal/isadetection.h */
+ /* From
+ 
https://github.com/endorno/pytorch/blob/master/torch/lib/TH/generic/simd/simd.h

diff --git a/net-libs/nodejs/nodejs-20.3.0.ebuild 
b/net-libs/nodejs/nodejs-20.3.0.ebuild
new file mode 100644
index 000000000000..1f81d1c9bac4
--- /dev/null
+++ b/net-libs/nodejs/nodejs-20.3.0.ebuild
@@ -0,0 +1,255 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CONFIG_CHECK="~ADVISE_SYSCALLS"
+PYTHON_COMPAT=( python3_{9..11} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit bash-completion-r1 check-reqs flag-o-matic linux-info pax-utils 
python-any-r1 toolchain-funcs xdg-utils
+
+DESCRIPTION="A JavaScript runtime built on Chrome's V8 JavaScript engine"
+HOMEPAGE="https://nodejs.org/";
+LICENSE="Apache-1.1 Apache-2.0 BSD BSD-2 MIT"
+
+if [[ ${PV} == *9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/nodejs/node";
+       SLOT="0"
+else
+       SRC_URI="https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz";
+       SLOT="0/$(ver_cut 1)"
+       KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~amd64-linux 
~x64-macos"
+       S="${WORKDIR}/node-v${PV}"
+fi
+
+IUSE="cpu_flags_x86_sse2 debug doc +icu inspector lto +npm pax-kernel 
+snapshot +ssl +system-icu +system-ssl test"
+REQUIRED_USE="inspector? ( icu ssl )
+       npm? ( ssl )
+       system-icu? ( icu )
+       system-ssl? ( ssl )
+       x86? ( cpu_flags_x86_sse2 )"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND=">=app-arch/brotli-1.0.9:=
+       >=dev-libs/libuv-1.44.0:=
+       >=net-dns/c-ares-1.18.1:=
+       >=net-libs/nghttp2-1.41.0:=
+       sys-libs/zlib
+       system-icu? ( >=dev-libs/icu-67:= )
+       system-ssl? ( >=dev-libs/openssl-1.1.1:0= )
+       sys-devel/gcc:*"
+BDEPEND="${PYTHON_DEPS}
+       dev-util/ninja
+       sys-apps/coreutils
+       virtual/pkgconfig
+       test? ( net-misc/curl )
+       pax-kernel? ( sys-apps/elfix )"
+DEPEND="${RDEPEND}"
+
+# These are measured on a loong machine with -ggdb on, and only checked
+# if debugging flags are present in CFLAGS.
+#
+# The final link consumed a little more than 7GiB alone, so 8GiB is the lower
+# limit for memory usage. Disk usage was 19.1GiB for the build directory and
+# 1.2GiB for the installed image, so we leave some room for architectures with
+# fatter binaries and set the disk requirement to 22GiB.
+CHECKREQS_MEMORY="8G"
+CHECKREQS_DISK_BUILD="22G"
+
+PATCHES=(
+       "${FILESDIR}"/"${P}"-gcc14.patch
+"${FILESDIR}"/"${P}"-simdutf-2.3.14.patch
+       )
+
+pkg_pretend() {
+       if [[ ${MERGE_TYPE} != "binary" ]]; then
+               if is-flagq "-g*" && ! is-flagq "-g*0" ; then
+                       einfo "Checking for sufficient disk space and memory to 
build ${PN} with debugging CFLAGS"
+                       check-reqs_pkg_pretend
+               fi
+       fi
+}
+
+pkg_setup() {
+       python-any-r1_pkg_setup
+       linux-info_pkg_setup
+}
+
+src_prepare() {
+       tc-export AR CC CXX PKG_CONFIG
+       export V=1
+       export BUILDTYPE=Release
+
+       # fix compilation on Darwin
+       # https://code.google.com/p/gyp/issues/detail?id=260
+       sed -i -e "/append('-arch/d" tools/gyp/pylib/gyp/xcode_emulation.py || 
die
+
+       # less verbose install output (stating the same as portage, basically)
+       sed -i -e "/print/d" tools/install.py || die
+
+       # proper libdir, hat tip @ryanpcmcquen 
https://github.com/iojs/io.js/issues/504
+       local LIBDIR=$(get_libdir)
+       sed -i -e "s|lib/|${LIBDIR}/|g" tools/install.py || die
+       sed -i -e "s/'lib'/'${LIBDIR}'/" deps/npm/lib/npm.js || die
+
+       # Avoid writing a depfile, not useful
+       sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die
+
+       sed -i -e "/'-O3'/d" common.gypi node.gypi || die
+
+       # debug builds. change install path, remove optimisations and override 
buildtype
+       if use debug; then
+               sed -i -e "s|out/Release/|out/Debug/|g" tools/install.py || die
+               BUILDTYPE=Debug
+       fi
+
+       # We need to disable mprotect on two files when it builds Bug 694100.
+       use pax-kernel && PATCHES+=( 
"${FILESDIR}"/${PN}-18.16.0-paxmarking.patch )
+
+       default
+}
+
+src_configure() {
+       xdg_environment_reset
+
+       # LTO compiler flags are handled by configure.py itself
+       filter-flags '-flto*'
+       # nodejs unconditionally links to libatomic #869992
+       # specifically it requires __atomic_is_lock_free which
+       # is not yet implemented by sys-libs/compiler-rt (see
+       # https://reviews.llvm.org/D85044?id=287068), therefore
+       # we depend on gcc and force using libgcc as the support lib
+       tc-is-clang && append-ldflags "--rtlib=libgcc --unwindlib=libgcc"
+
+       local myconf=(
+       --ninja
+               --shared-brotli
+               --shared-cares
+               --shared-libuv
+               --shared-nghttp2
+               --shared-zlib
+       )
+       use debug && myconf+=( --debug )
+       use lto && myconf+=( --enable-lto )
+       if use system-icu; then
+               myconf+=( --with-intl=system-icu )
+       elif use icu; then
+               myconf+=( --with-intl=full-icu )
+       else
+               myconf+=( --with-intl=none )
+       fi
+       use inspector || myconf+=( --without-inspector )
+       use npm || myconf+=( --without-npm )
+       use snapshot || myconf+=( --without-node-snapshot )
+       if use ssl; then
+               use system-ssl && myconf+=( --shared-openssl 
--openssl-use-def-ca-store )
+       else
+               myconf+=( --without-ssl )
+       fi
+
+       local myarch=""
+       case "${ARCH}:${ABI}" in
+               *:amd64) myarch="x64";;
+               *:arm) myarch="arm";;
+               *:arm64) myarch="arm64";;
+               loong:lp64*) myarch="loong64";;
+               riscv:lp64*) myarch="riscv64";;
+               *:ppc64) myarch="ppc64";;
+               *:x32) myarch="x32";;
+               *:x86) myarch="ia32";;
+               *) myarch="${ABI}";;
+       esac
+
+       GYP_DEFINES="linux_use_gold_flags=0
+               linux_use_bundled_binutils=0
+               linux_use_bundled_gold=0" \
+       "${EPYTHON}" configure.py \
+               --prefix="${EPREFIX}"/usr \
+               --dest-cpu=${myarch} \
+               "${myconf[@]}" || die
+}
+
+src_compile() {
+       emake
+}
+
+src_install() {
+       local LIBDIR="${ED}/usr/$(get_libdir)"
+       default
+
+       pax-mark -m "${ED}"/usr/bin/node
+
+       # set up a symlink structure that node-gyp expects..
+       dodir /usr/include/node/deps/{v8,uv}
+       dosym . /usr/include/node/src
+       for var in deps/{uv,v8}/include; do
+               dosym ../.. /usr/include/node/${var}
+       done
+
+       if use doc; then
+               docinto html
+               dodoc -r "${S}"/doc/*
+       fi
+
+       if use npm; then
+               keepdir /etc/npm
+               echo "NPM_CONFIG_GLOBALCONFIG=${EPREFIX}/etc/npm/npmrc" > 
"${T}"/50npm
+               doenvd "${T}"/50npm
+
+               # Install bash completion for `npm`
+               local tmp_npm_completion_file="$(TMPDIR="${T}" mktemp -t 
npm.XXXXXXXXXX)"
+               "${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}"
+               newbashcomp "${tmp_npm_completion_file}" npm
+
+               # Move man pages
+               doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/*
+
+               # Clean up
+               rm -f 
"${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile}
+               rm -rf "${LIBDIR}"/node_modules/npm/{doc,html,man}
+
+               local find_exp="-or -name"
+               local find_name=()
+               for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \
+                       ".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \
+                       "*.md" "*.markdown" "*.bat" "*.cmd"; do
+                       find_name+=( ${find_exp} "${match}" )
+               done
+
+               # Remove various development and/or inappropriate files and
+               # useless docs of dependend packages.
+               find "${LIBDIR}"/node_modules \
+                       \( -type d -name examples \) -or \( -type f \( \
+                               -iname "LICEN?E*" \
+                               "${find_name[@]}" \
+                       \) \) -exec rm -rf "{}" \;
+       fi
+
+       mv "${ED}"/usr/share/doc/node "${ED}"/usr/share/doc/${PF} || die
+}
+
+src_test() {
+       local drop_tests=(
+               test/parallel/test-dns-setserver-when-querying.js
+               test/parallel/test-fs-mkdir.js
+               test/parallel/test-fs-utimes-y2K38.js
+               test/parallel/test-release-npm.js
+               test/parallel/test-socket-write-after-fin-error.js
+               test/parallel/test-strace-openat-openssl.js
+               test/sequential/test-util-debug.js
+       )
+       rm "${drop_tests[@]}" || die "disabling tests failed"
+
+       out/${BUILDTYPE}/cctest || die
+       "${EPYTHON}" tools/test.py --mode=${BUILDTYPE,,} --flaky-tests=dontcare 
-J message parallel sequential || die
+}
+
+pkg_postinst() {
+       if use npm; then
+               ewarn "remember to run: source /etc/profile if you plan to use 
nodejs"
+               ewarn " in your current shell"
+       fi
+}


Reply via email to