MantisBT - CMake |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0013560 | CMake | CMake | public | 2012-09-25 11:48 | 2013-04-17 08:54 |
|
Reporter | Andreas Langs | |
Assigned To | Peter Kuemmel | |
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | |
Platform | Linux | OS | Ubuntu | OS Version | 12.04 |
Product Version | CMake 2.8.9 | |
Target Version | CMake 2.8.11 | Fixed in Version | CMake 2.8.11 | |
|
Summary | 0013560: Ninja: -Wl, -rpath,'$ORIGIN/foobar' not working correctly in CMAKE_EXE_LINKER_FLAGS |
Description | I used the testcase from issue 0013069 and added to the CMakeLists.txt file below line 16:
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,'$ORIGIN/foo'")
Then I used the Ninja generator to generate the ninja build files and built it using ninja 1.0.0.
Inspecting the resulting executable with "objdump -p flags" it shows: "RPATH /foo"
Using the Makefile generator and building it with make gives the expected entry shown by objdump: "RPATH $ORIGIN/foo".
Looking at the build.ninja file generated by cmake I see this line:
LINK_FLAGS = -Wl,-rpath,'$ORIGIN/unitTests'
Changing it to:
LINK_FLAGS = -Wl,-rpath,'$$ORIGIN/unitTests'
(double $$) gives the correct RPATH entry in the executable.
It seems as if there needs to be some escaping done with "$" signs when generating build.ninjs files.
|
Steps To Reproduce | |
Additional Information | |
Tags | No tags attached. |
Relationships | |
Attached Files | ninja-encode-vars.diff (536) 2012-11-08 15:11 https://public.kitware.com/Bug/file/4559/ninja-encode-vars.diff
rpath.tar.gz (8,621) 2012-11-20 16:06 https://public.kitware.com/Bug/file/4572/rpath.tar.gz |
|
Issue History |
Date Modified | Username | Field | Change |
2012-09-25 11:48 | Andreas Langs | New Issue | |
2012-10-03 08:59 | Peter Kuemmel | Assigned To | => Peter Kuemmel |
2012-10-03 08:59 | Peter Kuemmel | Status | new => assigned |
2012-11-08 15:11 | Reid Kleckner | File Added: ninja-encode-vars.diff | |
2012-11-08 15:12 | Reid Kleckner | Note Added: 0031505 | |
2012-11-14 07:57 | Andreas Langs | Note Added: 0031554 | |
2012-11-20 16:06 | Peter Kuemmel | File Added: rpath.tar.gz | |
2012-11-20 16:09 | Peter Kuemmel | Note Added: 0031631 | |
2012-11-20 16:09 | Peter Kuemmel | Fixed in Version | => CMake 2.8.11 |
2012-11-20 16:09 | Peter Kuemmel | Target Version | => CMake 2.8.11 |
2012-11-21 04:02 | Andreas Langs | Note Added: 0031639 | |
2012-11-21 04:53 | Peter Kuemmel | Note Added: 0031640 | |
2012-11-21 04:53 | Peter Kuemmel | Status | assigned => resolved |
2012-11-21 04:53 | Peter Kuemmel | Resolution | open => fixed |
2013-04-17 08:54 | Robert Maynard | Note Added: 0032875 | |
2013-04-17 08:54 | Robert Maynard | Status | resolved => closed |
Notes |
|
(0031505)
|
Reid Kleckner
|
2012-11-08 15:12
|
|
Does the attached path fix the problem correctly? I hit this problem, applied it locally, and things worked for me. |
|
|
(0031554)
|
Andreas Langs
|
2012-11-14 07:57
|
|
The patch by Reid Kleckner (ninja-encode-vars.diff) does fix the described problem.
However it does not completely fix my original problem because the reproduction description was not complete enough.
So the more complete description is as follows:
Follow the original description and then add to line 8:
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
and add to line 28:
SET_TARGET_PROPERTIES(flags PROPERTIES INSTALL_RPATH "$ORIGIN")
When doing the build with a cmake 2.8.10.1 with Reid Kleckners patch and ninja 1.0.0 the result of "objdump -p flags" is:
"RPATH $ORIGIN/foo:$" instead of
"RPATH $ORIGIN/foo:$ORIGIN"
So the rpath setting coming from the CMAKE_EXE_LINKER_FLAGS variable is correct now, but the rpath setting coming from the INSTALL_RAPTH target property is not. |
|
|
(0031631)
|
Peter Kuemmel
|
2012-11-20 16:09
|
|
|
|
(0031639)
|
Andreas Langs
|
2012-11-21 04:02
|
|
The committed patch works for my cases. Thank you. |
|
|
(0031640)
|
Peter Kuemmel
|
2012-11-21 04:53
|
|
|
|
(0032875)
|
Robert Maynard
|
2013-04-17 08:54
|
|
Closing resolved issues that have not been updated in more than 4 months. |
|