[Openmp-dev] CMAKE_INSTALL_PREFIX vs -fopenmp and clang search library search path

Jack Howarth howarth.mailing.lists at gmail.com
Wed May 13 10:38:57 PDT 2015


On Wed, May 13, 2015 at 1:24 PM, Chandler Carruth <chandlerc at google.com> wrote:
> On Wed, May 13, 2015 at 11:16 AM Jack Howarth
> <howarth.mailing.lists at gmail.com> wrote:
>>
>> On Wed, May 13, 2015 at 12:56 PM, Chandler Carruth <chandlerc at google.com>
>> wrote:
>> > I already replied to the code review suggesting to enable it in the
>> > projects/ tree. I don't understand why a bug report is necessary.
>>
>>    I was referencing your objections that build of openmp doesn't
>> match the patterns and structures of the other runtime libraries (in
>> case you had any particular changes in mind to address those issues).
>
>
> Yes.
>
>>
>> Have those particular issues been discussed in the openmp-dev mailing
>> list yet?
>
>
> openmp-commits and llvm-commits.

When I pinged the same proposed change from
http://lists.cs.uiuc.edu/pipermail/openmp-commits/2015-May/000255.html
in the openmp-dev mailing list...

http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-May/000522.html

Jonathan seemed to think that the change was non-essential...

http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-May/000525.html

>
> Not sure how much more is needed.
>>
>>
>> >
>> > On Wed, May 13, 2015 at 10:55 AM Jack Howarth
>> > <howarth.mailing.lists at gmail.com> wrote:
>> >>
>> >> On Wed, May 13, 2015 at 11:58 AM, Chandler Carruth
>> >> <chandlerc at google.com>
>> >> wrote:
>> >> > I think that openmp should work much more like libc++ than like the
>> >> > sanitizers. It has a reasonably stable API and even supports the
>> >> > libgomp
>> >> > APIs and so it should be in the normal library tree just like libc++.
>> >> >
>> >>
>> >> Chandler,
>> >>        Is linux able to find the installed libc++ shared library when
>> >> -DCMAKE_INSTALL_PREFIX=
>> >> is used in the cmake build? On x86_64 darwin, the built libc++ shared
>> >> library is installed
>> >> in the lib subdirectory of the path from CMAKE_INSTALL_PREFIX.
>> >> However, this isn't really
>> >> exercised on darwin as the system libc++ is always used by default.
>> >>
>> >> > However, the CMake build of the openmp needs a lot of work. =/ It
>> >> > doesn't
>> >> > match the patterns and structures of any of our other runtime
>> >> > libraries.
>> >>
>> >> Please do open bugzilla reports on those issues against the openmp
>> >> cmake
>> >> build.
>> >>              Jack
>> >>
>> >> >
>> >> > I think openmp needs to much more closely model its CMake build on
>> >> > libc++'s
>> >> > before we do anything more. Currently I can't even reasonably include
>> >> > it
>> >> > in
>> >> > my builds because it clobbers un-prefixed variable names and doesn't
>> >> > re-use
>> >> > any of the LLVM CMake logic.
>> >> >
>> >> > Also, I'll point out that the CMake build completely and universally
>> >> > uses
>> >> > the term 'iomp'. This trend really needs to reverse....
>> >> >
>> >> > On Wed, May 13, 2015 at 8:32 AM Jack Howarth
>> >> > <howarth.mailing.lists at gmail.com> wrote:
>> >> >>
>> >> >>     I believe we have a gap in clang's library search path with the
>> >> >> enabling of the openmp support via the proposed patch at...
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150511/129075.html
>> >> >>
>> >> >> Currently, in tree cmake builds of the openmp library using
>> >> >> -DCMAKE_INSTALL_PREFIX to install the llvm build in a buried
>> >> >> subdirectory will place the libiomp5.dylib shared library in a
>> >> >> directory outside of the library search path used by clang...
>> >> >>
>> >> >> % clang-3.7 -fopenmp -o omp_getEnvInfo omp_getEnvInfo.c -v
>> >> >> clang version 3.7.0 (trunk)
>> >> >> Target: x86_64-apple-darwin14.4.0
>> >> >> Thread model: posix
>> >> >>  "/sw/opt/llvm-3.7.0/bin/clang-3.7" -cc1 -triple
>> >> >> x86_64-apple-macosx10.10.0 -emit-obj -mrelax-all -disable-free
>> >> >> -disable-llvm-verifier -main-file-name omp_getEnvInfo.c
>> >> >> -mrelocation-model pic -pic-level 2 -mthread-model posix
>> >> >> -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2
>> >> >> -target-linker-version 242 -v -dwarf-column-info
>> >> >> -fno-unique-section-names -resource-dir
>> >> >> /sw/opt/llvm-3.7.0/bin/../lib/clang/3.7.0 -fdebug-compilation-dir
>> >> >> /Users/howarth/openmp_examples -ferror-limit 19 -fmessage-length 140
>> >> >> -fopenmp -stack-protector 1 -mstackrealign -fblocks
>> >> >> -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-signature
>> >> >> -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o
>> >> >>
>> >> >>
>> >> >> /var/folders/1l/n78sywl52lz6kkys6nv7mnph0000gp/T/omp_getEnvInfo-e20595.o
>> >> >> -x c omp_getEnvInfo.c
>> >> >> clang -cc1 version 3.7.0 based upon LLVM 3.7.0svn default target
>> >> >> x86_64-apple-darwin14.4.0
>> >> >> ignoring nonexistent directory "/usr/local/include"
>> >> >> #include "..." search starts here:
>> >> >> #include <...> search starts here:
>> >> >>  /sw/opt/llvm-3.7.0/bin/../lib/clang/3.7.0/include
>> >> >>  /usr/include
>> >> >>  /System/Library/Frameworks (framework directory)
>> >> >>  /Library/Frameworks (framework directory)
>> >> >> End of search list.
>> >> >>  "/sw/opt/llvm-3.7.0/bin/ld" -demangle -dynamic -arch x86_64
>> >> >> -macosx_version_min 10.10.0 -o omp_getEnvInfo -liomp5
>> >> >>
>> >> >>
>> >> >> /var/folders/1l/n78sywl52lz6kkys6nv7mnph0000gp/T/omp_getEnvInfo-e20595.o
>> >> >> -lSystem
>> >> >> ld: library not found for -liomp5
>> >> >> clang-3.7: error: linker command failed with exit code 1 (use -v to
>> >> >> see invocation)
>> >> >>
>> >> >> requiring an explicit path to passed to the compiler...
>> >> >>
>> >> >> % clang-3.7 -fopenmp -L/sw/opt/llvm-3.7.0/lib -o omp_getEnvInfo
>> >> >> omp_getEnvInfo.c
>> >> >> % otool -L ./omp_getEnvInfo
>> >> >> ./omp_getEnvInfo:
>> >> >> /sw/opt/llvm-3.7.0/lib/libiomp5.dylib (compatibility version 5.0.0,
>> >> >> current version 5.0.0)
>> >> >> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
>> >> >> version 1213.0.0)
>> >> >>
>> >> >> Currently, all the other shared libraries linked by the clang
>> >> >> compilers (aside from libc++) are expected to be located in the
>> >> >> clang/3.7.0/lib/darwin subdirectory (such as
>> >> >> libclang_rt.asan_iossim_dynamic.dylib and
>> >> >> libclang_rt.asan_osx_dynamic.dylib). Using CMAKE_INSTALL_PREFIX in
>> >> >> the
>> >> >> cmake build to bury the llvm installation has no impact on the usage
>> >> >> of those two libraries with the -fsanitize flags but the current
>> >> >> search library search path doesn't do the same for the libiomp5
>> >> >> relocation in the same case.
>> >> >>             Jack
>> >> >> _______________________________________________
>> >> >> Openmp-dev mailing list
>> >> >> Openmp-dev at dcs-maillist2.engr.illinois.edu
>> >> >> http://lists.cs.uiuc.edu/mailman/listinfo/openmp-dev



More information about the Openmp-dev mailing list