As reported on slashdot, Microsoft has made the MSVC command line compiler tools for .net and Win32 available for download at no cost here.

While the EULA does not permit redistribution of GNU-infected software ("software that requires you to redistribute the sourcecode"), it is free to use in commercial settings and, considering that customers can also download it, good enough to install and use Perl extensions such as Inline::C and DBD::SQLite, and even for compiling your own version of Perl.

The download weighs in at 32MB and I believe it includes the .net runtime as well, so Win9x users will have to download and unpack it somewhere else before getting the Win32 tools under Win9x.

Update: At the moment, I'm not clear whether the compiler actually outputs Win32 stuff or only .net stuff, but I'll update that post after my investigations :)

I've got good news and bad news. The good news is, that the compiler builds miniperl directly respectively with a small fix to the CFLAGS in win32\Makefile:

CFLAGS = -nologo -GF /QIfist -W3 $(INCLUDES) $(DEFINES) $(LOCDE +FS) \
The -GF replaces -Gf, and /QIfist is so that it doesn't generate calls to __ftol2, which it later on can't resolve.

The bad news is, that you have to be very clean about your library paths and include paths, especially the VC6 path. And that means, no VC6 includes for VC7 (no surprise here), but the includes you need aren't in the package. You'll have to download them from Microsoft as well, either via some dreaded ActiveX installation procedure here, or manually from http://download.microsoft.com/download/platformsdk/sdk/update/win98mexp/en-us.... I couldn't find out the exact URL yet, as the messagebox does not allow copy/paste, but once download.microsoft.com picks up speed again, I'll post the full URLs to the (two) SDKs needed here.

Replies are listed 'Best First'.
Re: Microsoft releases the MSVC commandline tools
by demerphq (Chancellor) on Apr 19, 2004 at 10:30 UTC

    While the EULA does not permit redistribution of GNU-infected software

    I dont know if this is right. From what I can tell the only code so encumbered is the sample code. You cant take MS's samples and then GPL them or bundle them with GPL'ed code or anything like that. But I dont see anything in the Eula that says you cant redistribute GPL stuff that you have written or compiled that doesnt use the samples.


    ---
    demerphq

      First they ignore you, then they laugh at you, then they fight you, then you win.
      -- Gandhi


      The part that put me on my (as I now think) wrong track is secton 3.2 of the EULA. A Redistributable is the sample code, a library or a header file (defined in 3.1).

      3.2 If you use the Redistributables, then in addition to your compliance with the applicable distribution requirements described for the Redistributables, the following also applies. Your license rights to the Redistributables are conditioned upon your not (a) creating derivative works of the Redistributables in any manner that would cause the Redistributables in whole or in part to become subject to any of the terms of an Excluded License; and (b) distributing the Redistributables (or derivative works thereof) in any manner that would cause the Redistributables to become subject to any of the terms of an Excluded License. An “Excluded License” is any license which requires as a condition of use, modification and/or distribution of software subject to the Excluded License, that such software or other software combined and/or distributed with such software (x) be disclosed or distributed in source code form; (y) be licensed for the purpose of making derivative works; or (z) be redistributable at no charge.

      So, if I remember correctly, the GPL especially does not put the C runtime under its infection and thus it's possible to compile binaries that fall under an Excluded License even if they use the C runtime, as long as the C runtime itself is not forced under the Excluded License.

      Of course, for "home use", that is, compiling Perl and compiling XS for Perl, which is what I see the tools mostly for, this point is moot, as nothing will be redistributed anyway.

        You remember mostly correctly.

        The GPL says nothing about whether a C runtime has been GPLed. The relevant section is part of section 0: Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. However gcc is designed so that the binary it outputs does not incorporate copyrighted GPLed material. Therefore you can use gcc to compile non-GPLed material.

        Whether you can legally use Microsoft's compiler to compile GPLed software depends on whether the output includes material that Microsoft has copyright on. The answer to that is not easily discerned.

        that would cause the Redistributables in whole or in part to become subject to any of the terms of an Excluded License
        But the 'redistributables' will not be affected thus. There is no licence in the world that causes Microsoft's intellectual property to be subject to it without Microsoft's permission. The word they are looking for is 'require', not 'cause'. This does not exclude the GPL because the GPL does not supersede copyright law.

        Update: What would actually occur is a violation of the 'excluded licence'.

Re: Microsoft releases the MSVC commandline tools
by hardburn (Abbot) on Apr 19, 2004 at 13:05 UTC

    For me, this comes about 15 years too late. I would have killed for a free C compiler back when I was playing around with DOS 5.0.

    ----
    : () { :|:& };:

    Note: All code is untested, unless otherwise stated

      In 1987 you could get Borland's Turbo C for about $90 Canadian -- it included a full IDE for C development, full screen editor (OK, with WordStar commands, whatever), compiler, linker and make utility. It was $90 Canadian, and on my Dad's XT it ran like lightning -- you didn't like Borland products maybe?

      Alex / talexb / Toronto

      Life is short: get busy!

        I was 5 years old in 1987 and I only started programming at 6 or 7 (and that on an Apple //c). For obvious reasons, I didn't have whatever amount of money Borland cost in the States, and my parents were too cheep to get it for me (along with the Power Wheels and Nintendo I wanted).

        To make up for it, I have GCC now, and have two orginal Nintendos and a real car. So I guess it all evens out in the end.

        ----
        : () { :|:& };:

        Note: All code is untested, unless otherwise stated