-#!/usr/bin/env python\r
-#\r
-# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
-#\r
-# SPDX-License-Identifier: BSD-2-Clause-Patent\r
-#\r
-\r
-#\r
-# ARMCC tools do not support cygwin paths. Ths script converts cygwin paths to DOS paths\r
-# in any arguments.\r
-#\r
-# armcc_wrapper.py ToolToExec [command line to convert]\r
-#\r
-# anything with the / will be converted via cygpath cygwin call or manually.\r
-# -I/cygpath/c/example is a special case as you can not pass -I to cygpath\r
-#\r
-# ExceptionList if a tool takes an argument with a / add it to the exception list\r
-#\r
-from __future__ import print_function\r
-import sys\r
-import os\r
-import subprocess\r
-import pipes\r
-\r
-#\r
-# Convert using cygpath command line tool\r
-# Currently not used, but just in case we need it in the future\r
-#\r
-def ConvertCygPathToDosViacygpath(CygPath):\r
- p = subprocess.Popen("cygpath -m " + pipes.quote(CygPath), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)\r
- return p.stdout.read().strip()\r
-\r
-#\r
-#\r
-#\r
-def ConvertCygPathToDos(CygPath):\r
- if CygPath.find("/cygdrive/") == 0:\r
- # convert /cygdrive/c/Xyz to c:/Xyz\r
- DosPath = CygPath[10] + ':' + CygPath[11:]\r
- else:\r
- DosPath = CygPath\r
-\r
- # pipes.quote will add the extra \\ for us.\r
- return DosPath.replace('/', '\\')\r
-\r
-\r
-# we receive our options as a list, but we will be passing them to the shell as a line\r
-# this means we have to requote things as they will get one round of unquoting.\r
-# we can't set "shell=False" because we are running commands from the PATH and\r
-# if you don't use the shell you don't get a PATH search.\r
-def main(argv):\r
-\r
- # use 1st argument as name of tool to call\r
- Command = pipes.quote(sys.argv[1]);\r
-\r
- ExceptionList = ["/interwork"]\r
-\r
- for arg in argv:\r
- if arg.find('/') == -1:\r
- # if we don't need to convert just add to the command line\r
- Command = Command + ' ' + pipes.quote(arg)\r
- elif arg in ExceptionList:\r
- # if it is in the list, then don't do a cygpath\r
- # assembler stuff after --apcs has the /.\r
- Command = Command + ' ' + pipes.quote(arg)\r
- else:\r
- if ((arg[0] == '-') and (arg[1] == 'I' or arg[1] == 'i')):\r
- CygPath = arg[0] + arg[1] + ConvertCygPathToDos(arg[2:])\r
- else:\r
- CygPath = ConvertCygPathToDos(arg)\r
-\r
- Command = Command + ' ' + pipes.quote(CygPath)\r
-\r
- # call the real tool with the converted paths\r
- return subprocess.call(Command, shell=True)\r
-\r
-\r
-if __name__ == "__main__":\r
- try:\r
- ret = main(sys.argv[2:])\r
-\r
- except:\r
- print("exiting: exception from " + sys.argv[0])\r
- ret = 2\r
-\r
- sys.exit(ret)\r
-\r