Preferring to use GCC instead of LLVM

Owen Anderson wrote:

There's nothing particularly stopping you from having your installation package include copies of gas and ld,

I disagree. gas and ld are not available on Windoze, except via MinGW. Yes I can make or tell my customers to install MinGW, but if MinGW is installed, then I don't need LLVM. (More about this further ahead)

You're welcome to think that, and I'm welcome to think that your demands are unrealistic.

Obviously!! Everyone already knew that you are entitled to your own opinion, there was no need for you to say that.

See, this is the part where you throw people. You keep stating that you really want to use LLVM, but this kind of statement makes it sound like you don't really care.

What you interpret as me not caring about LLVM is actually me being forced to be practical in a real-world situation.

Anyway, why does it matter whether or not I care about LLVM? Am I required to be in love with a project before I can contribute any feedback to it?

I'm going to let you in on a reality of open source development: if you really particularly want some feature, you might have to end up writing it yourself.

Obviously!! I already knew that, but before I can even consider writing it myself, I must first discuss the issue with developers on the mailing list, and that is what I was doing.

Showing up and demanding that they be done for you isn't going to get you anywhere

I was not demanding anything. Rather I was providing feedback and constructive criticism, as I said. Look at what I actually wrote in my earlier message:

"It would be wonderful if support for the 3 container formats could be finished/implemented."

Does that sound like a demand to you? Are you really sure you want to claim that saying "It would be wonderful if..." constitutes a DEMAND?

I do think your expectation that we're all going to drop what we're doing in order to embark on multi-year projects to replace underlying system tools [...] is unrealistic.

I didn't have that expectation, and I never said or implied that I did, so it is strange that you say that.

By the way, it is NOT "multi-year projects". I agree with what Holger Schurig said:
"[...] So it is actually possible to do this with limited resources (the FPC developer community isn't that large). It just has to be done."

Also, Nick Lewycky said that there is ALREADY an unfinished ELFWriter and MachOWriter in lib/Codegen/ !

Owen Anderson wrote:

You, as the developer, install/build binutils in MinGW. Then you pull the executables out and stick them in the package that you give your clients. Thus the clients don't need MinGW.

Interesting suggestion, how confident are you that that will be successful? I have doubts that the binutils in MinGW can be executed and used successfully without the rest of MinGW being present. I wonder if your suggestion amounts to starting a "Micro-MinGW" fork of MinGW, similar to how MinGW started as a fork of Cygwin.

Also there are possibly licensing problems -- it is worth noting that LLVM and MinGW are under different (and possibly incompatible) licenses.

If your suggestion does amount to me starting a "Micro-MinGW" fork of MinGW, then I would think my efforts would be better directed at helping to finish/implement the PEWriter, ELFWriter, MachOWriter in LLVM, and then that work would be under the LLVM license.

But if MinGW or Cygwin is installed, then I have no need for LLVM !!

This is not the case. Having MinGW/Cygwin installed != having GCC installed.

Quoting Wikipedia: "MinGW [...] is a native software port of the GNU Compiler Collection (GCC) to Microsoft Windows along with a set of freely distributable import libraries and header files for the Windows API"

[...]

Owen Anderson wrote:

You, as the developer, install/build binutils in MinGW.
Then you pull the executables out and stick them in the
package that you give your clients. Thus the clients
don't need MinGW.

Interesting suggestion, how confident are you that that will
be successful? I have doubts that the binutils in MinGW can
be executed and used successfully without the rest of MinGW
being present. I wonder if your suggestion amounts to
starting a "Micro-MinGW" fork of MinGW, similar to how MinGW
started as a fork of Cygwin.

No, it's not nearly that hard. If it weren't for all the arcane build configurations etc., the suggested approach (of extracting the assembler and linker) would take just an hour or so. Even so (with the complex build structure), I doubt a competent practitioner would need more than a week to get this rolling.

Also there are possibly licensing problems -- it is worth
noting that LLVM and MinGW are under different (and possibly
incompatible) licenses.

I think that because different standalone programs are involved the license issues are mostly non-issues. You'd have to make the source for the bits of GNU code you ship available in some way (but not your own, which doesn't link against the GNU tools).

If your suggestion does amount to me starting a
"Micro-MinGW" fork of MinGW, then I would think my efforts
would be better directed at helping to finish/implement the
PEWriter, ELFWriter, MachOWriter in LLVM, and then that work
would be under the LLVM license.

Well, I'd love to see those things too. Still, if you want the quickest way to a shrink-wrap solution, an approach like the one outlined above may be significantly faster (though I really don't know what sort of complexities are involved in implementing PEWriter/ELFWriter/MachOWriter).

  Daveed

Owen Anderson wrote:

There's nothing particularly stopping you from having your
installation package include copies of gas and ld,

I disagree. gas and ld are not available on Windoze, except
via MinGW. Yes I can make or tell my customers to install
MinGW, but if MinGW is installed, then I don't need LLVM.
(More about this further ahead)

Hi, I while omitting all the other aspects of the discussion,
could the following is suitable solution for your problem...

Use llvm as compiler and in the point when llvm toolchain need
the assembler and linker, you can provide MinGW ports of as and
ld _with_ mingw runtime library to "complete" llvm distribution.

If I read correctly license of MinGW runtime library says that
you can distribute e.g. mingw10.dll with your proprietary software
with few conditions.

That dll file should be enough for running MinGW assembler and
linker commands. So separate MinGW installation for each client
machine is not needed.

- Mikael

Hello,

Gordon Henriksen wrote:

if you can do compilation at installation time, for the OS X and Windows platforms there's no reason you can't do compilation ahead of time

Impossible.

If you hadn't elided the first part of that paragraph, you would discover that indeed, my point was that you had not provided us with enough context to make a sound recommendation:

Given what you've said so far, for instance, we have no way of knowing what constrains you from precompiling your assembly. That is, if you […]

— Gordon