OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libffi/] [msvcc.sh] - Blame information for rev 768

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 732 jeremybenn
#!/bin/sh
2
 
3
# ***** BEGIN LICENSE BLOCK *****
4
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
#
6
# The contents of this file are subject to the Mozilla Public License Version
7
# 1.1 (the "License"); you may not use this file except in compliance with
8
# the License. You may obtain a copy of the License at
9
# http://www.mozilla.org/MPL/
10
#
11
# Software distributed under the License is distributed on an "AS IS" basis,
12
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
# for the specific language governing rights and limitations under the
14
# License.
15
#
16
# The Original Code is the MSVC wrappificator.
17
#
18
# The Initial Developer of the Original Code is
19
# Timothy Wall <twalljava@dev.java.net>.
20
# Portions created by the Initial Developer are Copyright (C) 2009
21
# the Initial Developer. All Rights Reserved.
22
#
23
# Contributor(s):
24
#   Daniel Witte <dwitte@mozilla.com>
25
#
26
# Alternatively, the contents of this file may be used under the terms of
27
# either the GNU General Public License Version 2 or later (the "GPL"), or
28
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
# in which case the provisions of the GPL or the LGPL are applicable instead
30
# of those above. If you wish to allow use of your version of this file only
31
# under the terms of either the GPL or the LGPL, and not to allow others to
32
# use your version of this file under the terms of the MPL, indicate your
33
# decision by deleting the provisions above and replace them with the notice
34
# and other provisions required by the GPL or the LGPL. If you do not delete
35
# the provisions above, a recipient may use your version of this file under
36
# the terms of any one of the MPL, the GPL or the LGPL.
37
#
38
# ***** END LICENSE BLOCK *****
39
 
40
#
41
# GCC-compatible wrapper for cl.exe and ml.exe. Arguments are given in GCC
42
# format and translated into something sensible for cl or ml.
43
#
44
 
45
args="-nologo"
46
md=-MD
47
cl="cl"
48
ml="ml"
49
output=
50
 
51
while [ $# -gt 0 ]
52
do
53
  case $1
54
  in
55
    -fexceptions)
56
      # Don't enable exceptions for now.
57
      #args="$args -EHac"
58
      shift 1
59
    ;;
60
    -m32)
61
      shift 1
62
    ;;
63
    -m64)
64
      cl="cl"   # "$MSVC/x86_amd64/cl"
65
      ml="ml64" # "$MSVC/x86_amd64/ml64"
66
      shift 1
67
    ;;
68
    -O*)
69
      args="$args $1"
70
      shift 1
71
    ;;
72
    -g)
73
      # Can't specify -RTC1 or -Zi in opt. -Gy is ok. Use -OPT:REF?
74
      args="$args -D_DEBUG -RTC1 -Zi"
75
      md=-MDd
76
      shift 1
77
    ;;
78
    -c)
79
      args="$args -c"
80
      args="$(echo $args | sed 's%/Fe%/Fo%g')"
81
      single="-c"
82
      shift 1
83
    ;;
84
    -D*=*)
85
      name="$(echo $1|sed 's/-D\([^=][^=]*\)=.*/\1/g')"
86
      value="$(echo $1|sed 's/-D[^=][^=]*=//g')"
87
      args="$args -D${name}='$value'"
88
      defines="$defines -D${name}='$value'"
89
      shift 1
90
    ;;
91
    -D*)
92
      args="$args $1"
93
      defines="$defines $1"
94
      shift 1
95
    ;;
96
    -I)
97
      args="$args -I$2"
98
      includes="$includes -I$2"
99
      shift 2
100
    ;;
101
    -I*)
102
      args="$args $1"
103
      includes="$includes $1"
104
      shift 1
105
    ;;
106
    -W|-Wextra)
107
      # TODO map extra warnings
108
      shift 1
109
    ;;
110
    -Wall)
111
      # -Wall on MSVC is overzealous. Use -W3 instead.
112
      args="$args -W3"
113
      shift 1
114
    ;;
115
    -Werror)
116
      args="$args -WX"
117
      shift 1
118
    ;;
119
    -W*)
120
      # TODO map specific warnings
121
      shift 1
122
    ;;
123
    -S)
124
      args="$args -FAs"
125
      shift 1
126
    ;;
127
    -o)
128
      outdir="$(dirname $2)"
129
      base="$(basename $2|sed 's/\.[^.]*//g')"
130
      if [ -n "$single" ]; then
131
        output="-Fo$2"
132
      else
133
        output="-Fe$2"
134
      fi
135
      if [ -n "$assembly" ]; then
136
        args="$args $output"
137
      else
138
        args="$args $output -Fd$outdir/$base -Fp$outdir/$base -Fa$outdir/$base"
139
      fi
140
      shift 2
141
    ;;
142
    *.S)
143
      src=$1
144
      assembly="true"
145
      shift 1
146
    ;;
147
    *.c)
148
      args="$args $1"
149
      shift 1
150
    ;;
151
    *)
152
      # Assume it's an MSVC argument, and pass it through.
153
      args="$args $1"
154
      shift 1
155
    ;;
156
  esac
157
done
158
 
159
if [ -n "$assembly" ]; then
160
    if [ -z "$outdir" ]; then
161
      outdir="."
162
    fi
163
    ppsrc="$outdir/$(basename $src|sed 's/.S$/.asm/g')"
164
    echo "$cl -nologo -EP $includes $defines $src > $ppsrc"
165
    "$cl" -nologo -EP $includes $defines $src > $ppsrc || exit $?
166
    output="$(echo $output | sed 's%/F[dpa][^ ]*%%g')"
167
    args="-nologo -safeseh $single $output $ppsrc"
168
 
169
    echo "$ml $args"
170
    eval "\"$ml\" $args"
171
    result=$?
172
 
173
    # required to fix ml64 broken output?
174
    #mv *.obj $outdir
175
else
176
    args="$md $args"
177
    echo "$cl $args"
178
    eval "\"$cl\" $args"
179
    result=$?
180
fi
181
 
182
exit $result
183
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.