compat / vcbuild / scripts / clink.plon commit Merge branch 'jm/maint-1.6.5-grep-NUL-terminate' into maint (7d0dafe)
   1#!/usr/bin/perl -w
   2######################################################################
   3# Compiles or links files
   4#
   5# This is a wrapper to facilitate the compilation of Git with MSVC
   6# using GNU Make as the build system. So, instead of manipulating the
   7# Makefile into something nasty, just to support non-space arguments
   8# etc, we use this wrapper to fix the command line options
   9#
  10# Copyright (C) 2009 Marius Storm-Olsen <mstormo@gmail.com>
  11######################################################################
  12use strict;
  13my @args = ();
  14my @cflags = ();
  15my $is_linking = 0;
  16while (@ARGV) {
  17        my $arg = shift @ARGV;
  18        if ("$arg" =~ /^-[DIMGO]/) {
  19                push(@cflags, $arg);
  20        } elsif ("$arg" eq "-o") {
  21                my $file_out = shift @ARGV;
  22                if ("$file_out" =~ /exe$/) {
  23                        $is_linking = 1;
  24                        push(@args, "-OUT:$file_out");
  25                } else {
  26                        push(@args, "-Fo$file_out");
  27                }
  28        } elsif ("$arg" eq "-lz") {
  29                push(@args, "zlib.lib");
  30        } elsif ("$arg" eq "-liconv") {
  31                push(@args, "iconv.lib");
  32        } elsif ("$arg" eq "-lcrypto") {
  33                push(@args, "libeay32.lib");
  34                push(@args, "ssleay32.lib");
  35        } elsif ("$arg" =~ /^-L/ && "$arg" ne "-LTCG") {
  36                $arg =~ s/^-L/-LIBPATH:/;
  37                push(@args, $arg);
  38        } elsif ("$arg" =~ /^-R/) {
  39                # eat
  40        } else {
  41                push(@args, $arg);
  42        }
  43}
  44if ($is_linking) {
  45        unshift(@args, "link.exe");
  46} else {
  47        unshift(@args, "cl.exe");
  48        push(@args, @cflags);
  49}
  50#printf("**** @args\n");
  51exit (system(@args) != 0);