[cfe-dev] [PATCHv2] Add support for LLVM_LIBDIR_SUFFIX.

Johannes Obermayr johannesobermayr at gmx.de
Tue Sep 20 11:45:33 PDT 2011


On Tuesday 20 September 2011 11:22:57 Eric Christopher wrote:
> Why?
> 
> -eric
> 

Because openSUSE and many other linux distributions put all things to /usr/lib (i586) and /usr/lib64 (x86_64) or /usr/lib32.
So it is possible to install x86 and x86_64 versions at the same time ...
(See also http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-July/042068.html and http://llvm.org/bugs/show_bug.cgi?id=10836)

> On Sep 20, 2011, at 9:11 AM, Johannes Obermayr wrote:
> 
> > ---
> > CMakeLists.txt                     |   32 +++++++++++++++++++++++++++++---
> > include/clang/Basic/Version.inc.in |    1 +
> > lib/Driver/Driver.cpp              |    2 +-
> > 3 files changed, 31 insertions(+), 4 deletions(-)
> > 
> > diff --git a/CMakeLists.txt b/CMakeLists.txt
> > index 2be3c9c..f36a367 100644
> > --- a/CMakeLists.txt
> > +++ b/CMakeLists.txt
> > @@ -42,9 +42,35 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
> >   set(LLVM_MAIN_INCLUDE_DIR "${LLVM_MAIN_SRC_DIR}/include")
> >   set(LLVM_BINARY_DIR ${CMAKE_BINARY_DIR})
> > 
> > +  # If LLVM_LIBDIR_SUFFIX is not defined determine it via
> > +  # llvm-config --libdir | sed -r "s:.*[^0-9]([0-9]*):\1:g"
> > +  # It is defined in LLVMConfig.cmake or via -DLLVM_LIBDIR_SUFFIX=""
> > +  if(NOT DEFINED LLVM_LIBDIR_SUFFIX)
> > +    find_program(LLVM_CONFIG_EXE llvm-config
> > +                 PATHS
> > +                 /opt/local/bin
> > +                 /opt/llvm/*/bin
> > +                 /opt/llvm/bin
> > +                 /usr/lib/llvm-*/bin
> > +                 /usr/lib/llvm-*/bin
> > +                )
> > +    if(LLVM_CONFIG_EXE)
> > +      execute_process(COMMAND ${LLVM_CONFIG_EXE} --libdir
> > +                      COMMAND sed -r "s:.*[^0-9]([0-9]*):\1:g"
> > +                      OUTPUT_VARIABLE LLVM_LIBDIR_SUFFIX
> > +                      OUTPUT_STRIP_TRAILING_WHITESPACE
> > +                     )
> > +    endif()
> > +  endif()
> > +  if(LLVM_LIBDIR_SUFFIX)
> > +    message(STATUS "LLVM_LIBDIR_SUFFIX: ${LLVM_LIBDIR_SUFFIX}")
> > +  else()
> > +    message(STATUS "LLVM_LIBDIR_SUFFIX: none")
> > +  endif()
> > +
> >   set(CMAKE_INCLUDE_CURRENT_DIR ON)
> >   include_directories("${PATH_TO_LLVM_BUILD}/include" "${LLVM_MAIN_INCLUDE_DIR}")
> > -  link_directories("${PATH_TO_LLVM_BUILD}/lib")
> > +  link_directories("${PATH_TO_LLVM_BUILD}/lib${LLVM_LIBDIR_SUFFIX}")
> > 
> >   if( EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/tblgen${CMAKE_EXECUTABLE_SUFFIX}" )
> >     set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/tblgen")
> > @@ -54,8 +80,8 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
> >   endif()
> > 
> >   set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
> > -  set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
> > -  set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
> > +  set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
> > +  set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )
> > 
> >   set( CLANG_BUILT_STANDALONE 1 )
> > endif()
> > diff --git a/include/clang/Basic/Version.inc.in b/include/clang/Basic/Version.inc.in
> > index ccf8430..4d924db 100644
> > --- a/include/clang/Basic/Version.inc.in
> > +++ b/include/clang/Basic/Version.inc.in
> > @@ -1,6 +1,7 @@
> > #define CLANG_VERSION @CLANG_VERSION@
> > #define CLANG_VERSION_MAJOR @CLANG_VERSION_MAJOR@
> > #define CLANG_VERSION_MINOR @CLANG_VERSION_MINOR@
> > +#define CLANG_LIB "lib at LLVM_LIBDIR_SUFFIX@"
> > #if @CLANG_HAS_VERSION_PATCHLEVEL@
> > #define CLANG_VERSION_PATCHLEVEL @CLANG_VERSION_PATCHLEVEL@
> > #endif
> > diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
> > index d77ae92..0bceca8 100644
> > --- a/lib/Driver/Driver.cpp
> > +++ b/lib/Driver/Driver.cpp
> > @@ -86,7 +86,7 @@ Driver::Driver(StringRef ClangExecutable,
> >   if (ClangResourceDir != "")
> >     llvm::sys::path::append(P, ClangResourceDir);
> >   else
> > -    llvm::sys::path::append(P, "..", "lib", "clang", CLANG_VERSION_STRING);
> > +    llvm::sys::path::append(P, "..", CLANG_LIB, "clang", CLANG_VERSION_STRING);
> >   ResourceDir = P.str();
> > }
> > 
> 



More information about the cfe-dev mailing list