[llvm-dev] Errors in configuration for LLVM with CMake GUI

Jonathan Goodwin via llvm-dev
2018-11-29T22:17:37Z

"  are you sure you didn't have to tell it where the header files for
Windows are?"

You should not have to and I do not. The point of CMake's configure step is
that it probes your system to find out what tools to use and where to find
libraries and include files. Because you specify use of the Visual Studio
generator, it uses Microsoft's conventions to locate where the compiler,
linker, libraries and include files are stored. That should be an automatic
part of the Cmake 'configure' step. Which is why I was confused by it
even
looking for non-Windows include files, and then failing the configure step.

With regard to the executable path for SVN or Nuget (or anything else), I
cannot think of why you need to specify it for CMake to build LLVM. I see
the error messages you posted, but in reality the LLVM build process should
not need access to SVN to access the files, as all of the LLVM files should
be viewable by CMake or any other program as normal files in the file
system. You only need SVN-aware tools when doing change management
activities or looking at earlier history. CMake is only working on the
current version of the files which should be 100% viewable as normal files.
Thus, CMake needs no knowledge of the SVN executable. As someone else said,
you might be better off using the git repo version of LLVM instead.

With regard to Perl, that appears to be failing because you are trying to
build OpenMP as a project as part of the LLVM build. My strong
recommendation is not to complicate your problematic build process out of
the gate. I would recommend you get a vanilla build working first (with
clang and lld), before trying to handle projects like backtrace, compiler-rt
and openmp. And you may want to build them separately anyway, following
their respective build processes.

Wrt needing gcc for Git bash, I don't understand why that would be
necessary. I don't have it and I use Git bash just fine. I understand that
gcc can be made to work on Windows by jumping through some hoops, but it
seems like you plan to have three very different toolsets that do
essentially the same things:  Visual Studio, LLVM w/ clang/lld, and GCC.
Personally, that's too complicated for my tastes as there is too much
potential for colliding include files in PATHs and such, but you may have
your reasons. When I want to play with GCC, I usually just do it on a Linux
box.

You said you use this command:

cmake -G "Visual Studio 15 2017" -Thost=x64
-DLLVM_ENABLE_PROJECTS=clang;lld
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly
-DLLVM_TARGETS_TO_BUILD=X86 .

To build clang and lld, I would think you would need something like this,
as I mentioned earlier:

cmake -G "Visual Studio 15 2017" -Thost=x64 -D CLANG_BUILD_TOOLS -DLLD
_BUILD_TOOLS  -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly
-DLLVM_TARGETS_TO_BUILD=X86 .

Hopefully by using the Git version of the LLVM source and stripping out the
irrelevant extra projects, you will get further along ...


On Fri, Nov 30, 2018 at 1:43 AM Osman Zakir <osmanzakir90 at hotmail.com>
wrote:

> I probably need GCC for Git bash.  And the one I have is MinGW's GCC,
> which is the one for Windows.  I don't know why CMake is trying to find
> Linux headers.  Hopefully someone who knows better what to do will weigh in
> here.
>
> @Jonathan Goodwin <jondgoodwin at gmail.com> , are you sure you
didn't have
> to tell it where the header files for Windows are?  If I need to specify
> the paths to those headers, how do I do it?
> ------------------------------
> *From:* Jonathan Goodwin <jondgoodwin at gmail.com>
> *Sent:* Thursday, November 29, 2018 10:42 AM
> *To:* Osman Zakir
> *Cc:* llvm-dev at lists.llvm.org
> *Subject:* Re: [llvm-dev] Errors in configuration for LLVM with CMake GUI
>
> I checked your CMakeError.log again. The .h include files it is marking as
> missing are not LLVM include files, but are OS-related (e.g.,
> malloc/malloc.h), and in some cases appear to be potentially Linux ones
> (dlfcn.h, sys/ioctl, malloc_np.h). I can't imagine why your build might
be
> looking for Linux as opposed to Windows include files. That could be a clue
> to your problem.
>
> You said you installed the latest version of GCC before this attempt. This
> confuses me further, since you are using Visual Studio to build with, and
> that makes no use of GCC. In fact, honestly I am wondering if your GCC
> implementation libraries are somehow in your search path wrt environment
> variables, and your build is actually trying to use the GNU/Linux header
> files rather than the VS Windows header files, which would certainly blow
> it up. Again, I am no expert here, so I don't have a definite answer,
but
> based on what little I know, this setup doesn't sound safe. Maybe get
rid
> of GCC completely, as I am not sure when/how you would even use it on the
> Windows side.
>
> Similarly, I don't believe Perl has anything to do with this either, as
> neither CMake nor VS make any use of it. But I can't imagine it causing
any
> problems for you to have it.
>
> I don't know anything about Backtrace, Libomp, Compiler-RT, so I cannot
> help you there. As we have discussed before, the source for clang and lld
> go into the llvm source folder's "tools" folder by those
names. If they are
> there, after the configure step of the CMake-Gui, options will
> automatically appear for both clang and lld. You will want to mouse click
> the checkbox next to CLANG_BUILD_TOOLS and LLD_BUILD_TOOLS prior to hitting
> the generate button.
>
> Sorry I don't know more than that, but hopefully that will help some
...
> and then others can chime in if they know more about this than me.
>
> On Thu, Nov 29, 2018 at 2:52 PM Osman Zakir via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> I tried to configure CMake for LLVM using the GUI and I've attached the
> logs for the attempt to this message.  I installed Perl and the latest
> version of GCC before that attempt.  There were still errors that stopped
> it from being able to generate project files, though.
>
> I'd like to know how I can get this to work.  How do I tell it where to
> find Backtrace, Libomp, Compiler-RT, LLD and Clang?  And where exactly is
> Backtrace?  I copy-pasted the locations for the stuff I checked out for
> LLVM, so I'm not really sure where the stuff I need to put into CMake
for
> Compiler-RT, Backtrace and Libomp is (it's where it should be,
that's all I
> know).
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20181130/2cfa7e70/attachment.html>