diff options
author | Brad King <brad.king@kitware.com> | 2024-10-03 12:10:13 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-10-03 12:10:27 (GMT) |
commit | 951122dd564c032bcdb45a518e7fc116bdbb6cb1 (patch) | |
tree | 4c7999563b2713d7464a04453257c572591605ad | |
parent | 86d8880ff1e907d6514e18c3b5a6a8fdf6905f8c (diff) | |
parent | 3e5b9229e0083081fa96422ab279f62012ca24a5 (diff) | |
download | CMake-951122dd564c032bcdb45a518e7fc116bdbb6cb1.zip CMake-951122dd564c032bcdb45a518e7fc116bdbb6cb1.tar.gz CMake-951122dd564c032bcdb45a518e7fc116bdbb6cb1.tar.bz2 |
Merge topic 'aix-rpath-padding'
3e5b9229e0 AIX: Fix XCOFF editor to avoid duplicating standard libpath entries
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9865
-rw-r--r-- | Source/cmXCOFF.cxx | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/Source/cmXCOFF.cxx b/Source/cmXCOFF.cxx index 6fd6fbf..e459103 100644 --- a/Source/cmXCOFF.cxx +++ b/Source/cmXCOFF.cxx @@ -6,6 +6,7 @@ #include <cstddef> #include <cm/memory> +#include <cm/string_view> #include "cmsys/FStream.hxx" @@ -283,19 +284,22 @@ cm::optional<cm::string_view> Impl<XCOFF>::GetLibPath() template <typename XCOFF> bool Impl<XCOFF>::SetLibPath(cm::string_view libPath) { - // The new LIBPATH must end in the standard AIX LIBPATH. -#define CM_AIX_LIBPATH "/usr/lib:/lib" + // The new LIBPATH must contain standard AIX LIBPATH entries. std::string libPathBuf; - if (libPath != CM_AIX_LIBPATH && - !cmHasLiteralSuffix(libPath, ":" CM_AIX_LIBPATH)) { - libPathBuf = std::string(libPath); - if (!libPathBuf.empty() && libPathBuf.back() != ':') { - libPathBuf.push_back(':'); - } - libPathBuf += CM_AIX_LIBPATH; - libPath = libPathBuf; - } -#undef CM_AIX_LIBPATH +#define ENSURE_ENTRY(x) \ + if (libPath != x && !cmHasLiteralPrefix(libPath, x ":") && \ + !cmHasLiteralSuffix(libPath, ":" x) && \ + libPath.find(":" x ":") == std::string::npos) { \ + libPathBuf = std::string(libPath); \ + if (!libPathBuf.empty() && libPathBuf.back() != ':') { \ + libPathBuf.push_back(':'); \ + } \ + libPathBuf += x; \ + libPath = libPathBuf; \ + } + ENSURE_ENTRY("/usr/lib") + ENSURE_ENTRY("/lib") +#undef ENSURE_ENTRY auto oldEnd = std::find(this->LoaderImportFileTable.begin(), this->LoaderImportFileTable.end(), '\0'); |