summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-10-03 12:10:13 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-10-03 12:10:27 (GMT)
commit951122dd564c032bcdb45a518e7fc116bdbb6cb1 (patch)
tree4c7999563b2713d7464a04453257c572591605ad
parent86d8880ff1e907d6514e18c3b5a6a8fdf6905f8c (diff)
parent3e5b9229e0083081fa96422ab279f62012ca24a5 (diff)
downloadCMake-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.cxx28
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');