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) { 17my$arg=shift@ARGV; 18if("$arg"=~/^-[DIMGO]/) { 19push(@cflags,$arg); 20}elsif("$arg"eq"-o") { 21my$file_out=shift@ARGV; 22if("$file_out"=~/exe$/) { 23$is_linking=1; 24push(@args,"-OUT:$file_out"); 25}else{ 26push(@args,"-Fo$file_out"); 27} 28}elsif("$arg"eq"-lz") { 29push(@args,"zlib.lib"); 30}elsif("$arg"eq"-liconv") { 31push(@args,"iconv.lib"); 32}elsif("$arg"eq"-lcrypto") { 33push(@args,"libeay32.lib"); 34push(@args,"ssleay32.lib"); 35}elsif("$arg"=~/^-L/&&"$arg"ne"-LTCG") { 36$arg=~s/^-L/-LIBPATH:/; 37push(@args,$arg); 38}elsif("$arg"=~/^-R/) { 39# eat 40}else{ 41push(@args,$arg); 42} 43} 44if($is_linking) { 45unshift(@args,"link.exe"); 46}else{ 47unshift(@args,"cl.exe"); 48push(@args,@cflags); 49} 50#printf("**** @args\n"); 51exit(system(@args) !=0);