Flavio Leitner fbl@redhat.com
FUJITA Tomonori fujita.tomonori@lab.ntt.co.jp
Gaetano Catalli gaetano.catalli@gmail.com
+Geoffrey Wossum gwossum@acm.org
Giuseppe Lettieri g.lettieri@iet.unipi.it
Glen Gibb grg@stanford.edu
Guolin Yang gyang@nicira.com
Raju Subramanian rsubramanian@nicira.com
Ravi Kerur Ravi.Kerur@telekom.com
Reid Price reid@nicira.com
+Remko Tronçon git@el-tramo.be
Rich Lane rlane@bigswitch.com
Rob Hoes rob.hoes@citrix.com
Romain Lenglet romain.lenglet@berabera.info
Valient Gough vgough@pobox.com
Vivien Bernet-Rollande vbr@soprive.net
Wei Yongjun yjwei@cn.fujitsu.com
+William Fulton
Yasuhito Takamiya yasuhito@gmail.com
Yu Zhiguo yuzg@cn.fujitsu.com
ZhengLingyun konghuarukhr@163.com
--- /dev/null
+#!/bin/sh
+
+# cccl
+# Wrapper around MS's cl.exe and link.exe to make them act more like
+# Unix cc and ld
+#
+# Copyright (C) 2000-2003 Geoffrey Wossum (gwossum@acm.org)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+usage()
+{
+ cat <<EOF
+Usage: cccl [OPTIONS]
+
+cccl is a wrapper around Microsoft's cl.exe and link.exe. It translates
+parameters that Unix cc's and ld's understand to parameters that cl and link
+understand.
+EOF
+ exit $1
+}
+
+# Put /usr/bin last in the path, to avoid clashes with MSVC's link
+# Ugly workaround, but should work
+PATH=`echo $PATH | sed -e "s#/usr/bin:##" | sed -e "s#/bin:##"`:/usr/bin
+
+case $MACHTYPE in
+ *-msys)
+ slash="//"
+ ;;
+ *)
+ slash="/"
+ ;;
+esac
+# prog specifies the program that should be run (cl.exe or link.exe)
+# We'll assume cl to start out
+prog=cl
+# opts specifies the command line to pass to the MSVC program
+clopt="${slash}nologo"
+linkopt="${slash}nologo"
+# gotparam is 0 if we didn't ever see a param, in which case we show usage()
+gotparam=
+
+# We want exceptions
+clopt="$clopt ${slash}EHsc"
+
+### Run through every option and convert it to the proper MS one
+while test $# -gt 0; do
+ case "$1" in
+ -D*) optarg= ;;
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+ gotparam=1
+
+ case "$1" in
+ --version)
+ cat <<EOF
+cccl 0.03
+
+Copyright 2000-2003 Geoffrey Wossum
+This is free software; see the source for copying conditions. There is NO
+waranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+EOF
+ exit 1;
+ ;;
+
+ -ansi)
+ clopt="$clopt ${slash}Za"
+ ;;
+
+ -c)
+ # -c (compile only) is actually the same, but for clarity...
+ clopt="$clopt ${slash}c"
+ ;;
+
+ -g[0-9] | -g)
+ # cl only supports one debugging level
+ clopt="$clopt ${slash}Zi"
+ ;;
+
+ -L*)
+ path=`echo "$1" | sed 's/-L//'`
+ linkopt="$linkopt /LIBPATH:$path"
+ ;;
+
+ -l*)
+ lib=`echo "$1" | sed 's/-l//'`
+ if [ $lib != "dnsapi" -a $lib != "ws2_32" -a $lib != "wsock32" ]; then
+ lib="lib$lib.lib"
+ else
+ lib="$lib.lib"
+ fi
+
+ clopt="$clopt $lib"
+ linkopt="$linkopt $lib"
+ ;;
+
+ -m386)
+ clopt="$clopt ${slash}G3"
+ ;;
+
+ -m486)
+ clopt="$clopt ${slash}G4"
+ ;;
+
+ -mpentium)
+ clopt="$clopt ${slash}G5"
+ ;;
+
+ -mpentiumpro)
+ clopt="$clopt ${slash}G6"
+ ;;
+
+ -o)
+ # specifying output file, is it an object or an executable
+ shift
+ case "$1" in
+ *.o | *.obj)
+ clopt="$clopt ${slash}Fo$1"
+ ;;
+ *)
+ clopt="$clopt ${slash}Fe$1";
+ linkopt="$linkopt ${slash}out:$1"
+ ;;
+ esac;;
+
+ -pedantic)
+ #ignore pedantic
+ ;;
+
+ -W*)
+ #ignore warnings
+ ;;
+
+ -isystem)
+ shift
+ clopt="$clopt -I$1"
+ ;;
+
+ -MT)
+ exit 0
+ ;;
+
+ -mno-cygwin)
+ ;;
+
+ *.cc | *.cxx | *.C)
+ # C++ source file with non .cpp extension, make sure cl understand
+ # that it is C++
+ clopt="$clopt ${slash}Tp$1"
+ ;;
+
+ *.o | *.obj | *.a | *.lib)
+ # Object files/libraries seen, this command will require link
+ # Switch the prog to link
+ linkopt="$linkopt $1"
+ prog="link"
+ ;;
+
+ *)
+ clopt="$clopt $1"
+ linkopt="$linkopt $1"
+ if test x$optarg != x ; then
+ clopt="$clopt=$optarg"
+ linkopt="$linkopt=$optarg"
+ fi
+ ;;
+
+ esac
+ shift
+done
+
+if test x$gotparam = x ; then
+ usage
+ exit 1
+fi
+
+# choose which opts we built up based on which program will actually run
+if test x$prog = xcl ; then
+ opts=$clopt
+else
+ opts=$linkopt
+fi
+
+#echo "$prog $opts"
+exec $prog $opts
+exit 0