<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <b>Resolution:</b> After doing an strace on the clang++ executable
    generated from gcc builds of llvm/clang I discovered some polluted
    gcc-4.7 intermixed and I had yet to install libstdc++6 (4.7) to
    build against.<br>
    <br>
    After doing so clang/clang++ worked as expected and have been doing
    so for well over a year of nightly builds from trunk.<br>
    <br>
    Unfortunately, I have a dilemma seeing as gcc/g++/cpp are all
    presently configured by Debian to target gcc-4.6 and therefore
    should not even have polluted the includes directories with anything
    but libstdc++6 (4.6.3) but that is an issue for Debian who seems to
    update it's libs in a mixed fashion without properly updating
    updates-alternatives for gcc to point to gcc-4.7 or until they have
    more of their distribution updated to hold both versions of
    libstdc++6 for 4.6.3 and a differentiated naming convention for the
    upcoming version, 4.7 instead of blatantly rewriting over the 4.6.3
    libstdc++6 package with the 4.7 revision.<br>
    <br>
    - Marc<br>
    <br>
    On 03/27/2012 06:14 PM, Marc J. Driftmeyer wrote:
    <blockquote cite="mid:4F726604.1060806@reanimality.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <b>System:</b> Debian Linux Sid/Unstable amd64<br>
      <br>
      <b>LLVM/Clang:</b> Trunk<br>
      <br>
      <b>Scenario:</b> In the past couple of days I've been compiling
      against trunk I get two separate and spurious hang ups with CMake.<br>
      <br>
      <b>Note:</b> I build against more than just X86 follow along the
      progress of other platforms, though just building for X86 produces
      the same results below.<br>
      <br>
      <b>Assumption:</b> Configure cmake with prior built clang and
      clang++ via gcc-4.6.3 under /usr/local/bin... /clang .../clang++
      as follows:<br>
      <br>
      <blockquote type="cite">mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$

        cmake -DCMAKE_BUILD_TYPE=MinSizeRel
        -DCMAKE_CXX_COMPILER=/usr/local/bin/clang++
        -DCMAKE_C_COMPILER=/usr/local/bin/clang -DCMAKE_CXX_FLAGS='-O2'
        CMAKE_C_FLAGS='-O2' -DLLVM_BUILD_EXAMPLES=ON
        -DLLVM_BUILD_TESTS=ON -DLLVM_INCLUDE_TESTS=ON
        -DLLVM_TARGETS_TO_BUILD='ARM;CppBackend;PTX;Hexagon;X86'
        ../trunk/llvm/<br>
        -- Target triple: x86_64-unknown-linux-gnu<br>
        -- Native target architecture is X86<br>
        -- Threads enabled.<br>
        -- Building with -fPIC<br>
        -- Constructing LLVMBuild project information<br>
        -- Targeting ARM<br>
        -- Targeting CppBackend<br>
        -- Targeting PTX<br>
        -- Targeting Hexagon<br>
        -- Targeting X86<br>
        -- Clang version: 3.1<br>
        -- Configuring done<br>
        You have changed variables that require your cache to be
        deleted.<br>
        Configure will be re-run and you may have to reset some
        variables.<br>
        The following variables have changed:<br>
        CMAKE_C_COMPILER= /usr/local/bin/clang<br>
        CMAKE_CXX_COMPILER= /usr/local/bin/clang++<br>
        <br>
        -- The C compiler identification is Clang<br>
        -- The CXX compiler identification is Clang<br>
        -- Check for working C compiler: /usr/local/bin/clang<br>
        -- Check for working C compiler: /usr/local/bin/clang -- works<br>
        -- Detecting C compiler ABI info<br>
        -- Detecting C compiler ABI info - done<br>
        -- Check for working CXX compiler: /usr/local/bin/clang++<br>
        -- Check for working CXX compiler: /usr/local/bin/clang++ --
        broken<br>
        CMake Error at
        /usr/share/cmake-2.8/Modules/CMakeTestCXXCompiler.cmake:45
        (MESSAGE):<br>
          The C++ compiler "/usr/local/bin/clang++" is not able to
        compile a simple<br>
          test program.<br>
        <br>
          It fails with the following output:<br>
        <br>
           Change Dir:
/home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm/CMakeFiles/CMakeTmp<br>
        <br>
          <br>
        <br>
          Run Build Command:/usr/bin/make "cmTryCompileExec/fast"<br>
        <br>
          /usr/bin/make -f CMakeFiles/cmTryCompileExec.dir/build.make<br>
          CMakeFiles/cmTryCompileExec.dir/build<br>
        <br>
          make[1]: Entering directory<br>
         
`/home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm/CMakeFiles/CMakeTmp'<br>
        <br>
        <br>
          /usr/bin/cmake -E cmake_progress_report<br>
         
/home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm/CMakeFiles/CMakeTmp/CMakeFiles<br>
          1<br>
        <br>
          Building CXX object
        CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o<br>
        <br>
          /usr/local/bin/clang++ -o<br>
          CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -c<br>
         
/home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm/CMakeFiles/CMakeTmp/testCXXCompiler.cxx<br>
        <br>
        <br>
          Linking CXX executable cmTryCompileExec<br>
        <br>
          /usr/bin/cmake -E cmake_link_script<br>
          CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1<br>
        <br>
          /usr/local/bin/clang++<br>
          CMakeFiles/cmTryCompileExec.dir/testCXXCompiler.cxx.o -o
        cmTryCompileExec<br>
          -rdynamic<br>
        <br>
          /usr/bin/ld: error: cannot find -lstdc++<br>
        <br>
          clang-3: error: linker command failed with exit code 1 (use -v
        to see<br>
          invocation)<br>
        <br>
          make[1]: Leaving directory<br>
         
`/home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm/CMakeFiles/CMakeTmp'<br>
        <br>
        <br>
          make[1]: *** [cmTryCompileExec] Error 1<br>
        <br>
          make: *** [cmTryCompileExec/fast] Error 2<br>
        <br>
          <br>
        <br>
          <br>
        <br>
          CMake will not be able to correctly generate this project.<br>
        Call Stack (most recent call first):<br>
          CMakeLists.txt:3 (project)<br>
        <br>
        <br>
        -- Configuring incomplete, errors occurred!<br>
        mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$</blockquote>
      <br>
      <br>
      <br>
      Now out of curriousity I change clang++ to clang-3.1 which of
      course has two symlinks [clang and clang++] under /usr/local/bin<br>
      <br>
      If I configure and attempt to make against the following:<br>
      <br>
      <blockquote type="cite">mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$

        cmake -DCMAKE_BUILD_TYPE=MinSizeRel
        -DCMAKE_CXX_COMPILER=/usr/local/bin/clang-3.1
        -DCMAKE_C_COMPILER=/usr/local/bin/clang-3.1
        -DCMAKE_CXX_FLAGS='-O2' CMAKE_C_FLAGS='-O2'
        -DLLVM_BUILD_EXAMPLES=ON -DLLVM_BUILD_TESTS=ON
        -DLLVM_INCLUDE_TESTS=ON
        -DLLVM_TARGETS_TO_BUILD='ARM;CppBackend;PTX;Hexagon;X86'
        ../trunk/llvm/<br>
        -- Target triple: x86_64-unknown-linux-gnu<br>
        -- Native target architecture is X86<br>
        -- Threads enabled.<br>
        -- Building with -fPIC<br>
        -- Constructing LLVMBuild project information<br>
        -- Targeting ARM<br>
        -- Targeting CppBackend<br>
        -- Targeting PTX<br>
        -- Targeting Hexagon<br>
        -- Targeting X86<br>
        -- Clang version: 3.1<br>
        -- Configuring done<br>
        -- Generating done<br>
        -- Build files have been written to:
        /home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm<br>
        mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$</blockquote>
      <br>
      <b>Result:</b><br>
      <br>
      <blockquote type="cite">mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$

        make -j3<br>
        Scanning dependencies of target LLVMHello<br>
        [  0%] Building CXX object
        lib/Transforms/Hello/CMakeFiles/LLVMHello.dir/Hello.cpp.o                       

         <br>
        Scanning dependencies of target
        profile_rt-shared                                                          

         <br>
        Scanning dependencies of target
        LLVMSupport                                                                

         <br>
        [  0%] Building C object
        runtime/libprofile/CMakeFiles/profile_rt-shared.dir/BasicBlockTracing.c.o         

         <br>
        In file included from
/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/lib/Transforms/Hello/Hello.cpp:16:<br>
        <b>/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/include/llvm/Pass.h:32:10:

          fatal error: 'string'<br>
                file not found<br>
          #include <string></b><br>
                 ^<br>
        [  0%] Building CXX object
        lib/Support/CMakeFiles/LLVMSupport.dir/APFloat.cpp.o                            

         <br>
        [  0%] Building C object
        runtime/libprofile/CMakeFiles/profile_rt-shared.dir/CommonProfiling.c.o           

         <br>
        In file included from
        /home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/lib/Support/APFloat.cpp:15:

        <br>
        In file included from
/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/include/llvm/ADT/APFloat.h:104:<br>
        In file included from
/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/include/llvm/ADT/APInt.h:18:<br>
        In file included from
/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/include/llvm/ADT/ArrayRef.h:13:<br>
        In file included from
/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/include/llvm/ADT/SmallVector.h:17:<br>
        In file included from
/home/mdriftmeyer/DeveloperProjects/LLVMProject/trunk/llvm/include/llvm/Support/type_traits.h:20:<br>
        <b>/home/mdriftmeyer/DeveloperProjects/LLVMProject/cmake-llvm/include/llvm/Support/DataTypes.h:36:10:

          fatal
          error:                                                                                                         

           <br>
                'cmath' file not found<br>
          #include <cmath></b><br>
                 ^<br>
        [  0%] Building C object
        runtime/libprofile/CMakeFiles/profile_rt-shared.dir/GCDAProfiling.c.o             

         <br>
        [  0%] Building C object
        runtime/libprofile/CMakeFiles/profile_rt-shared.dir/PathProfiling.c.o             

         <br>
        1 error
        generated.                                                                                         

         <br>
        make[2]: ***
        [lib/Transforms/Hello/CMakeFiles/LLVMHello.dir/Hello.cpp.o]
        Error 1<br>
        make[1]: *** [lib/Transforms/Hello/CMakeFiles/LLVMHello.dir/all]
        Error 2<br>
        make[1]: *** Waiting for unfinished jobs....<br>
        1 error generated.<br>
        [  0%] make[2]: ***
        [lib/Support/CMakeFiles/LLVMSupport.dir/APFloat.cpp.o] Error 1<br>
        make[1]: *** [lib/Support/CMakeFiles/LLVMSupport.dir/all] Error
        2<br>
        [  0%] Building C object
        runtime/libprofile/CMakeFiles/profile_rt-shared.dir/EdgeProfiling.c.o<br>
        Building C object
        runtime/libprofile/CMakeFiles/profile_rt-shared.dir/OptimalEdgeProfiling.c.o             

         <br>
        Linking C shared library
        ../../lib/profile_rt.so                                                           

         <br>
        [  0%] Built target
        profile_rt-shared                                                                      

         <br>
        make: *** [all] Error 2<br>
        mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$</blockquote>
      <br>
      Of course if I configure as follows:;<br>
      <br>
      <blockquote type="cite">mdriftmeyer@horus:~/DeveloperProjects/LLVMProject/cmake-llvm$

        cmake -DCMAKE_BUILD_TYPE=MinSizeRel
        -DCMAKE_CXX_COMPILER=/usr/bin/g++
        -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_FLAGS='-O2'
        CMAKE_C_FLAGS='-O2' -DLLVM_BUILD_EXAMPLES=ON
        -DLLVM_BUILD_TESTS=ON -DLLVM_INCLUDE_TESTS=ON
        -DLLVM_TARGETS_TO_BUILD='ARM;CppBackend;PTX;Hexagon;X86'
        ../trunk/llvm/<br>
      </blockquote>
      <br>
      <b>Results:</b> after rebuilding the cache and rerunning the
      configuration twice the end is that LLVM/Clang <b>builds cleanly</b>.
      None of the noise above about clang++ failing to be able to build
      a simple c++ program nor the missing string and cmath header
      files.<br>
      <br>
      Perhaps this is just a Debian Linux issue and has to do with
      upgrades to LSB 4.1 [Linux Standard Base 4.1], but then I don't
      know enough about LSB to know exactly how a compiler
      infrastructure would be impacted by it, if at all. [<a
        moz-do-not-send="true"
href="http://www.linuxfoundation.org/collaborate/workgroups/lsb/lsb-41-release-notes]">http://www.linuxfoundation.org/collaborate/workgroups/lsb/lsb-41-release-notes]</a><br>
      <br>
      NOTE: (The work on Libc++ under libcxx being put under /runtime
      and recognized by Cmake is still not working, from what I've seen,
      though work on it around 2 weeks prior was mentioned it would get
      added for Linux)<br>
      <br>
      - Marc<br>
      <div class="moz-signature">-- <br>
        Marc J. Driftmeyer<br>
        Email :: <a moz-do-not-send="true"
          href="mailto:mjd@reanimality.com">mjd@reanimality.com</a><br>
        Web :: <a moz-do-not-send="true"
          href="http://www.reanimality.com">http://www.reanimality.com</a><br>
        Cell :: (509) 435-5212 </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a>
</pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      Marc J. Driftmeyer<br>
      Email :: <a href="mailto:mjd@reanimality.com">mjd@reanimality.com</a><br>
      Web :: <a href="http://www.reanimality.com">http://www.reanimality.com</a><br>
      Cell :: (509) 435-5212
    </div>
  </body>
</html>