http://qs1969.pair.com?node_id=218130

c has asked for the wisdom of the Perl Monks concerning the following question:

i've just started work on a Makefile.PL script that will hopefully provide an easy method of installation of a tool across platforms. I'm finding though, that in order for 'make install' to run properly, win32 boxes need a compiler of some sort, like cygwin, or I am sure one of others available. Is there an easy method to test for such a compiler on Win32 via the makefile? I'd like to try and find a more thorough method of discovering the environment rather than just spitting out something stating "Win32 machines will require a compiler if you plan on installing this to a directory other than the local one."

thanks -c

Replies are listed 'Best First'.
Re: Testing for compiler on Win32
by PodMaster (Abbot) on Dec 06, 2002 at 19:49 UTC
    That won't work.
    You have to use the compiler that perl was compiled with ( i have gcc in my path, but my perl was compiled with cl, which is also in my path).
    All that stuff is stored in Config (use Config; aka `perl -V:.+');

    A technique i've seen often is to get the compiler details out of %Config, and attempt to compile test.c, which is simply int main(){return 0}; Then attempt to run it. If you made it past those two, the user has a compiler, so the makefile gets written.

    And of course, there is an override commandline option, which skips the check, and assumes there is a compiler installed.

    The best technique by far , in my opinion, is not to worry or perform any checks. The users will figure out if s?he needs a compiler when they run make, you just make sure all your ducks are in order ;)(all the user has to do if they got a compiler is fill in a few path variables, and let it rip)

    For examples of this see the makefiles for the following distributions (among others):


    MJD says you can't just make shit up and expect the computer to know what you mean, retardo!
    ** The Third rule of perl club is a statement of fact: pod is sexy.

Re: Testing for compiler on Win32
by demerphq (Chancellor) on Dec 06, 2002 at 19:43 UTC
    Do you really need a compiler or do you need a maker? Most win32 machines have neither, but its the later thats important for non XS modules.

    I thought that MakeMaker was smart enough to know which compiler to use, but its up to the end user to make sure that its available from the path and that the LIB and INCLUDE directories. Maybe a simple prompt at the beginning saying "You need to make sure a compiler is available from the path. If this requires running a batch file then do so before you use this code..." or somethign like that.

    As a last point, maybe File::Which is useful to you?

    --- demerphq
    my friends call me, usually because I'm late....