<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/135529>135529</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Unable to build libcxx targeting Windows with -DLIBCXX_ENABLE_LOCALIZATION=OFF
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
void2012
</td>
</tr>
</table>
<pre>
Hi! I want to build my own libc++.a for llvm-mingw with as less bloat as possible. I want to disable RTTI, filesystem, exceptions and locale support. Building the library with disabling the former three options does work, however disabling the localization too(`-DLIBCXX_ENABLE_LOCALIZATION=OFF`) is broken because it fails to find to `__widen_from_utf8` and `__narrow_to_utf8` during the building of filesystem. Another question is why is the filesystem still being built even whenever I have explicitly disabled it?
The error log:
```
In file included from C:/build/llvm-project/libcxx/src/filesystem/path.cpp:10:
In file included from C:/build/llvm-project/runtimes/build-i686/include/c++/v1/filesystem:543:
In file included from C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/directory_entry.h:19:
In file included from C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/filesystem_error.h:14:
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/path.h:332:11: error: no template named '__narrow_to_utf8'
332 | typedef __narrow_to_utf8<sizeof(wchar_t) * __CHAR_BIT__> _Narrower;
| ^
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/path.h:333:11: error: no template named '__widen_from_utf8'
333 | typedef __widen_from_utf8<sizeof(_ECharT) * __CHAR_BIT__> _Widener;
| ^
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/path.h:338:16: error: called object type '_Narrower' (aka 'int') is not a function or functio
n pointer
338 | _Narrower()(back_inserter(__utf8), __src.data(), __src.data() + __src.size());
| ~~~~~~~~~~~^
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/path.h:373:11: error: no template named '__narrow_to_utf8'
373 | typedef __narrow_to_utf8<sizeof(wchar_t) * __CHAR_BIT__> _Narrower;
| ^
In file included from C:/build/llvm-project/libcxx/src/filesystem/path.cpp:10:
In file included from C:/build/llvm-project/runtimes/build-i686/include/c++/v1/filesystem:557:
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/u8path.h:45:16: error: no template named '__widen_from_utf8'
45 | using _CVT = __widen_from_utf8<sizeof(wchar_t) * __CHAR_BIT__>;
| ^
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/u8path.h:48:3: error: use of undeclared identifier '_CVT'
48 | _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size());
| ^
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/u8path.h:69:16: error: no template named '__widen_from_utf8'
69 | using _CVT = __widen_from_utf8<sizeof(wchar_t) * __CHAR_BIT__>;
| ^
C:/build/llvm-project/runtimes/build-i686/include/c++/v1/__filesystem/u8path.h:72:3: error: use of undeclared identifier '_CVT'
72 | _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size());
| ^
8 errors generated.
```
Flags passed to the cmake:
```
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$PREFIX/$arch-w64-mingw32" \
-DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx" \
-DLIBCXXABI_USE_LLVM_UNWINDER=FALSE \
-DLIBCXX_ENABLE_FILESYSTEM=OFF \
-DLIBCXX_ENABLE_LOCALIZATION=OFF \
-DLIBCXX_ENABLE_EXCEPTIONS=OFF \
-DLIBCXX_ENABLE_RTTI=OFF \
-DLIBCXX_ENABLE_WIDE_CHARACTERS=ON\
-DLIBCXX_HAS_PTHREAD_API=ON \
-DLIBCXX_HAS_WIN32_THREAD_API=OFF \
-DLIBCXX_USE_COMPILER_RT=OFF \
-DLIBCXXABI_USE_COMPILER_RT=OFF \
-DLIBCXXABI_HAS_PTHREAD_API=ON \
-DLIBCXX_ENABLE_SHARED=$BUILD_SHARED \
-DLIBCXX_ENABLE_STATIC=$BUILD_STATIC \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_LIBDIR_SUFFIX="" \
-DLIBCXX_INCLUDE_TESTS=FALSE \
-DLIBCXX_INSTALL_MODULES=ON \
-DLIBCXX_INSTALL_MODULES_DIR="$PREFIX/share/libc++/v1" \
-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=FALSE \
-DLIBCXXABI_ENABLE_SHARED=OFF \
-DLIBCXXABI_LIBDIR_SUFFIX="" \
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWF1z4rgS_TXipWsoI_H5wIPxR8W1hKSMmczcF5VsC6wbY3ElOQz7cH_7LdmQEEiyc3drJ1VLJQWWj7tbR91HajOtxabifIoGMzTwO6w2hVTTJyly7PRwJ5X5YXojEO5BBHtWGTAS0lqUOWwPIPcVlCLNEJ4hPOsyWEsFZfm0_bIV1WYPe2EKYBpKrjWkpWTGXu2k1iIteffMZC40S0sOcZJECHuwFiXXB2341l7xHxnfGSErDazKoZQZKznoereTynRhZuMR1QZMwW08iqlD67s1e7q1lmrLFZhCcQ7yaDCXXMNeqkfrqJB7_sTVxXONP_E7sw-AkRLhMRo6X_x5NPO-faPBwp3NAzq_89x59C83ie4WiPh3YYiGDsITEBpSJR95BSnPWK05CANrJkptZ74WVW6_0dChdC9yXtG1kltam7X10ky4uVcxpeSeGvl8K6_VKcT0RIFcn3HXBbeSpuAK_lNz3YQvNOyLg_1qGHmGgjaiLCHl1oi1ZoA_8Qr2Ba8aSiIo2BMH_mNXikyY8nBasxyEQSQE5LjIcZOCA1fK5oHcIGKHLA3tn-NGVeMTRJWVdc5zsHMFzwJx2EwC4bDJoJ2S_-aZsZcizX78QDjUKkM4PE-NcMdM0c12O0TcntO6-zMuVF0ZseX6hPgihuMhwuHRBsLhMccRDp96r4Mg7qBPfqFrSl8xkAvFMyPVgfLKqEO3sFRMPi-elwva5EEbUL8N6O913SSDdUcItk57iLhtMtoflQTDt7uSGQ4V2_IcEB5dlRUeIccFIAQDGnkAYA47nvM1XCGJp8XvXK4RHu-zgilqbLEj7AKl3o0b01mUUIpIAHTRPMkVIrPGuv1Y62gQ_EpSyE-TcqlDz6yQK1YuoWe00MArmErepeXBPvrprIwtK8NXrGSstLomU-utmWtDy_My4hEgPGaPzA6Lylh-WqGvpAEG67rKGrWV6vQbOW4FOykqw9WRy_GRSzhLEDxGeILwOGXZIxWV5so0o_S4DhO7S1GqVdbNmWEn_PUYIDw7Dtr1OAEnl2T_9-Xza3kf_Xw2vlOio-tk_LtK9J-5bQ1Gv0KV6_HzovcH17X2_ykQ9AfHRa-1PalQ72sCiPgfC9HHi_8Z-nNOihUg8ooTe0aUa6irnGclU_aIlfPKiLXgqqHH-5q8MNLqSDv2rnzsn3XCbHdX2vF67KgddvAt7fgEjoaTv5w4w8k_LXFG-K8lzgh_QuLAkaVxG7SGjT0CMMPz7kWrEJZso2HHtOZNg2T7lWzLHvl1V_HF927d3wI6W0Vznybf7wNE_JiXnGkOaOBZ5ydMtFgm7nxO7-MgjL4h4iOMEe4fL3GIcJ-prPiyH_bbLpZghPGLlfn86-2p5YtXiyS6DZatlVbwWSoQmZ3E__zBplt0ZxFdLQPamFktHqKFH8SI-KE7XwYnMABcdpdhNA-W35dJcNv2lh9ArxvRyyBOyOCbF9xb2PIPjTaN-YfGHiI_aOrD9ZIgbiwu3rB34y7pfXITB65P3fvG5uLKpAU9RAuC6Wvk2yFaPr272_toHsQ0Tt4O80T8u8Azixb7U3Eep768cePAb7Kg3-ZgO_IuPnGTyHuFb0Y-xlMb1jyaxW78HRE_iVdvJoz9d2c24OeEfAs2j2Z-FNPlKjwrA_wWMlp485Uf0CRYJsvLVD1DtXV1e-ev5sHybb4uQNSP4usK1AVT_HiAeqWFV8V04qclZvFbENOlF0f3yQcFZbGXy_Z-FnzI0rkEdfIpySdkwjp82hv1-wM8GY8mnWI6GK2HadYb5XmOedp3-uvUGZFxPswwHw9JryOm2MEDp98jzoiMBpPuYJ1P-DDjGcH5OO9z1Hf4lomya7eSrlSbjtC65tMeGQzwpFOylJe6eYHXatCJM4wGfkdNmw0orTca9Z1SaKNf7BhhSj5dVc2rt-cXe23agGFqw43dKx9Elcu9bl-p_bHadGpVTgtjdrrdCREON8IUddrN5Pa4I15vjM2c7LZ4nNbTFP8vAAD__14LQ98">