Russell Harmon
2014-May-29 22:37 UTC
[LLVMdev] [PATCH] Use GCC_INSTALL_PREFIX for rpath if set.
This way, an LLVM compiled after setting GCC_INSTALL_PREFIX will work correctly if you don't want to install LLVM into the GCC_INSTALL_PREFIX. --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ec3e33..c85a028 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -450,7 +450,12 @@ if (APPLE) set(CMAKE_INSTALL_RPATH "@executable_path/../lib") else(UNIX) if(NOT DEFINED CMAKE_INSTALL_RPATH) - set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib") + if(DEFINED GCC_INSTALL_PREFIX) + set(CMAKE_INSTALL_RPATH "${GCC_INSTALL_PREFIX}/lib") + else() + set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib") + endif() + if (${CMAKE_SYSTEM_NAME} MATCHES FreeBSD) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin") endif() -- 1.9.1.423.g4596e3a
Chandler Carruth
2014-May-30 02:06 UTC
[LLVMdev] [PATCH] Use GCC_INSTALL_PREFIX for rpath if set.
This looks like it would remove the origin/../lib RPATH which would break finding libraries related to Clang such as libc++? It makes sense to add the GCC install prefix to the RPATH though. I wonder, should we try to do something about the lib vs. lib{32,64} business? I don't know that either of these does the right thing there. On Thu, May 29, 2014 at 3:37 PM, Russell Harmon <eatnumber1 at google.com> wrote:> This way, an LLVM compiled after setting GCC_INSTALL_PREFIX will work > correctly > if you don't want to install LLVM into the GCC_INSTALL_PREFIX. > --- > CMakeLists.txt | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index 9ec3e33..c85a028 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -450,7 +450,12 @@ if (APPLE) > set(CMAKE_INSTALL_RPATH "@executable_path/../lib") > else(UNIX) > if(NOT DEFINED CMAKE_INSTALL_RPATH) > - set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib") > + if(DEFINED GCC_INSTALL_PREFIX) > + set(CMAKE_INSTALL_RPATH "${GCC_INSTALL_PREFIX}/lib") > + else() > + set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib") > + endif() > + > if (${CMAKE_SYSTEM_NAME} MATCHES FreeBSD) > set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} > -Wl,-z,origin") > endif() > -- > 1.9.1.423.g4596e3a > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140529/2dcc1f44/attachment.html>
Russell Harmon
2014-May-30 04:18 UTC
[LLVMdev] [PATCH] Use GCC_INSTALL_PREFIX for rpath if set.
The behavior of automatically detecting libraries installed in the same prefix feels like magic to me anyway. Perhaps it would be better to have project-level variables for specifying the path to them individually? The default value for them could remain as origin/../lib which would keep from breaking things. On Thu May 29 2014 at 7:06:17 PM, Chandler Carruth <chandlerc at google.com> wrote:> This looks like it would remove the origin/../lib RPATH which would break > finding libraries related to Clang such as libc++? > > It makes sense to add the GCC install prefix to the RPATH though. I > wonder, should we try to do something about the lib vs. lib{32,64} > business? I don't know that either of these does the right thing there. > > > On Thu, May 29, 2014 at 3:37 PM, Russell Harmon <eatnumber1 at google.com> > wrote: > >> This way, an LLVM compiled after setting GCC_INSTALL_PREFIX will work >> correctly >> if you don't want to install LLVM into the GCC_INSTALL_PREFIX. >> --- >> CMakeLists.txt | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/CMakeLists.txt b/CMakeLists.txt >> index 9ec3e33..c85a028 100644 >> --- a/CMakeLists.txt >> +++ b/CMakeLists.txt >> @@ -450,7 +450,12 @@ if (APPLE) >> set(CMAKE_INSTALL_RPATH "@executable_path/../lib") >> else(UNIX) >> if(NOT DEFINED CMAKE_INSTALL_RPATH) >> - set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib") >> + if(DEFINED GCC_INSTALL_PREFIX) >> + set(CMAKE_INSTALL_RPATH "${GCC_INSTALL_PREFIX}/lib") >> + else() >> + set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib") >> + endif() >> + >> if (${CMAKE_SYSTEM_NAME} MATCHES FreeBSD) >> set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} >> -Wl,-z,origin") >> endif() >> > -- >> 1.9.1.423.g4596e3a >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140530/e13ecd9a/attachment.html>
Rafael EspĂndola
2014-Jun-10 22:59 UTC
[LLVMdev] [PATCH] Use GCC_INSTALL_PREFIX for rpath if set.
On 29 May 2014 18:37, Russell Harmon <eatnumber1 at google.com> wrote:> This way, an LLVM compiled after setting GCC_INSTALL_PREFIX will work correctly > if you don't want to install LLVM into the GCC_INSTALL_PREFIX. > --- > CMakeLists.txt | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index 9ec3e33..c85a028 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -450,7 +450,12 @@ if (APPLE) > set(CMAKE_INSTALL_RPATH "@executable_path/../lib") > else(UNIX) > if(NOT DEFINED CMAKE_INSTALL_RPATH) > - set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib")I do depend on $ORIGIN/../lib. This makes sure that a shared build of llvm find the correct libraries both in the build and the install directory. It also means that the install directory is relocatable. Cheers, Rafael
Reasonably Related Threads
- [LLVMdev] [PATCH] Use GCC_INSTALL_PREFIX for rpath if set.
- [CMake] Hardcoded rpath?
- [LLVMdev] [3.7 Release] RC1 has been tagged, Testing Phase I begins
- Failed to configure LLVM for use with Musl
- [LLVMdev] [3.7 Release] RC1 has been tagged, Testing Phase I begins