<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/125831>125831</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LIBC] Invalid token in LIBC_NAMESPACE macro expansion
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
samvangysegem
</td>
</tr>
</table>
<pre>
When building the libc library based on the `release/20.x`, the compilation fails due to an invalid token in the LIBC_NAMESPACE macro expansion. This problem is rooted in the definition of `LLVM_VERSION_SUFFIX` in the `cmake/Modules/LLVMVersion.cmake` file:
```
if(NOT DEFINED LLVM_VERSION_SUFFIX)
set(LLVM_VERSION_SUFFIX -rc1)
endif()
```
and its usage in `libc/CMakeLists.txt` to configure the `default_namespace` field as shown below:
```
# Defining a global namespace to enclose all libc functions.
set(default_namespace "__llvm_libc")
if(LLVM_VERSION_MAJOR)
set(default_namespace "__llvm_libc_${LLVM_VERSION_MAJOR}_${LLVM_VERSION_MINOR}_${LLVM_VERSION_PATCH}_${LLVM_VERSION_SUFFIX}")
endif()
set(LIBC_NAMESPACE ${default_namespace}
CACHE STRING "The namespace to use to enclose internal implementations. Must start with '__llvm_libc'."
)
```
For the `release/20.x` branch, `LIBC_NAMESPACE` is expanded to `__llvm_libc_20_1_0_-rc1` with the invalid token `-`. This can be fixed relatively easy by either updating the `LLVM_VERSION_SUFFIX` definition to not use the `-` token or by removing the `LLVM_VERSION_SUFFIX` from the libc default_namespace.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVVFv6jgT_TXmZVRkHAjhIQ8UyHf5VOhV2-3uW-TEk8Rbx0a2Q8u_XzmBbrltd1dCIGvsmTNz5hy4c7LWiCmZ3ZLZesQ73xibOt4eua5PDmtsR4URp_T3BjUUnVRC6hp8g6BkUYYvy-0JCu5QgNF9hMTUokLukLCM0fEbiSlhqz5WmvYgFffSaKi4VA5Eh-ANcA1SH7mSArx5wXDqH9xtb1f5frnbPP5crjbQ8tIawLcD104aPYanRjo4WFMobEE6sMZ4FJfXAiupZV_NVAHY3d3zLn_ePDxu7_f5429Ztv2DxPRyncS0bPlLwL0zolPoCMvCk2e0fbkhGlOopEISLQldhuaGD13KirBkf_8E60223W_W8FU5tiB0CeDQE5Z8cQFubDkZbqEWfcrh9LES1wKkd9A5XmOAT2IaGCEsW-34C95J593Yv_kA1hsoja5k3Vm89Cmw4p3yueYtugMvz12hEsAduMa8aihQmdfPXRIWwbofrK6BQ61MwRW8JwrlUJfKOASu1LAoVafLQIMbE7ocWv-EAAhjea7Usc2HVtjQdz-Cq0Htlv-_fzgP8r8lywmbkvntF1nm6y9j2_23sZ_Lp9WPb2Jnjufrd_TXHJ5Zv17qIc9nRubrflNWy9WPDTw-PWz3_wttPTV4Pe3OXQ1dao9WcwWyPShsUXs-jB52nfPgPLceXqVvgLD51cDn4wA7MPzrvmXGfqttKCzXZRMkHhR21VsvLjcIVmDQdrjzkRhG80lO837pYzrgCpWu3YDE9IbE9Kz3koflhEq-oQCLwU-OqE6A3J2gOAFK36CF7iC4v_jV9-L_YBLegDZ-GOjw5mYQUMBgbMhtsTXHf09aWdP-7ZOfuB2PRBqJRbTgI0wn8yiZz-gsoqMmTaIkmrKoTBY8mfCyEAuexMmiqObRZEqnYiRTRtmMMjqb0MksomOkEY0XCRbxRJRlXJEpxZZLNQ5DHhtbj6RzHaYTNkuiyUjxApXrLZ-xi9Bm65FNw_2boqsdmVLVG8h7Bi-96v8mAr1ktobtr2b9z0Y96qxKG-8PLvgJywjLaumbrhiXpiUsC4XOPzcHa_7E0hOW9biDB5-hH1P2VwAAAP__tTMecg">