• Yonghong Song's avatar
    fix compilation with latest clang/llvm 7.0 · 46ebd9ef
    Yonghong Song authored
    The bcc build with latest clang/llvm 7.0 has the following
    compilation error:
    
     /home/yhs/work/llvm/build/install/lib/libclangCodeGen.a(CodeGenAction.cpp.o):
      In function `clang::BackendConsumer::Initialize(clang::ASTContext&)':
      CodeGenAction.cpp:(.text._ZN5clang15BackendConsumer10InitializeERNS_10ASTContextE[_ZN5clang15BackendConsumer10InitializeERNS_10ASTContextE]+0xc): undefined reference to `clang::FrontendTimesIsEnabled'
     ...
    
    The latest clang defined clang::FrontendTimesIsEnabled in
    libclangFrontend.a and used in libclangCodeGen.a.
    
    Due to the library order specified in clang_libs.cmake:
      # order is important
      set(clang_libs
        ${libclangFrontend}
        ...
        ${libclangCodeGen}
    and the fact clang_libs here is used to build bcc-static,
    the definition of clang::FrontendTimesIsEnabled is dropped
    since nobody used it before the definition is checked by the compiler.
    
    The fix here is to keep all the definitions/uses for clang_libs/llvm_libs
    when buildint static library.
    
    Tested on clang 4.0, 5.0, 6.0 and latest 7.0, all works fine.
    Signed-off-by: default avatarYonghong Song <yhs@fb.com>
    46ebd9ef
CMakeLists.txt 4.36 KB