]>
git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py
3 # Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
5 # SPDX-License-Identifier: BSD-2-Clause-Patent
9 # ARMCC tools do not support cygwin paths. Ths script converts cygwin paths to DOS paths
12 # armcc_wrapper.py ToolToExec [command line to convert]
14 # anything with the / will be converted via cygpath cygwin call or manually.
15 # -I/cygpath/c/example is a special case as you can not pass -I to cygpath
17 # ExceptionList if a tool takes an argument with a / add it to the exception list
19 from __future__
import print_function
26 # Convert using cygpath command line tool
27 # Currently not used, but just in case we need it in the future
29 def ConvertCygPathToDosViacygpath(CygPath
):
30 p
= subprocess
.Popen("cygpath -m " + pipes
.quote(CygPath
), shell
=True, stdout
=subprocess
.PIPE
, stderr
=subprocess
.STDOUT
, close_fds
=True)
31 return p
.stdout
.read().strip()
36 def ConvertCygPathToDos(CygPath
):
37 if CygPath
.find("/cygdrive/") == 0:
38 # convert /cygdrive/c/Xyz to c:/Xyz
39 DosPath
= CygPath
[10] + ':' + CygPath
[11:]
43 # pipes.quote will add the extra \\ for us.
44 return DosPath
.replace('/', '\\')
47 # we receive our options as a list, but we will be passing them to the shell as a line
48 # this means we have to requote things as they will get one round of unquoting.
49 # we can't set "shell=False" because we are running commands from the PATH and
50 # if you don't use the shell you don't get a PATH search.
53 # use 1st argument as name of tool to call
54 Command
= pipes
.quote(sys
.argv
[1]);
56 ExceptionList
= ["/interwork"]
59 if arg
.find('/') == -1:
60 # if we don't need to convert just add to the command line
61 Command
= Command
+ ' ' + pipes
.quote(arg
)
62 elif arg
in ExceptionList
:
63 # if it is in the list, then don't do a cygpath
64 # assembler stuff after --apcs has the /.
65 Command
= Command
+ ' ' + pipes
.quote(arg
)
67 if ((arg
[0] == '-') and (arg
[1] == 'I' or arg
[1] == 'i')):
68 CygPath
= arg
[0] + arg
[1] + ConvertCygPathToDos(arg
[2:])
70 CygPath
= ConvertCygPathToDos(arg
)
72 Command
= Command
+ ' ' + pipes
.quote(CygPath
)
74 # call the real tool with the converted paths
75 return subprocess
.call(Command
, shell
=True)
78 if __name__
== "__main__":
80 ret
= main(sys
.argv
[2:])
83 print("exiting: exception from " + sys
.argv
[0])