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
Maybe Matching 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