Fix to allow running msvc from commandline in linux

Dan Kegel dank at kegel.com
Sat Feb 22 13:51:24 CST 2003


Changelog:
    programs/wcmd/wcmdmain.c: make 'cmd /c cl /MUMBLE foo.c' pass /MUMBLE to cl
    LGPL.

-------

Here's how I use msvc's compiler from the Linux shell.

In ~/bin create the following three files:

--- cl ---
wine wcmd /c F:/bin/cl.bat "$@"

--- cl.bat ---
call F:/bin/vcvars32.bat

cl %1 %2 %3 %4 %5

--- vcvars32.bat ---

(same as one installed by msvc elsewhere, but with quotes
removed -- wcmd doesn't deal well with quotes.  Hopefully
wcmd will be fixed soon, or is already fixed, to handle
quotes properly.)

Then you can just build demo programs under MSVC by saying

cl foo.c

in bash.  This is handy for checking portability of wine
conformance tests.

Unfortunately, you can't pass options to cl, e.g.
cl /DSTANDALONE foo.c
without the attached patch.
- Dan

-- 
Dan Kegel
http://www.kegel.com
http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045
-------------- next part --------------
Index: programs/wcmd/wcmdmain.c
===================================================================
RCS file: /home/wine/wine/programs/wcmd/wcmdmain.c,v
retrieving revision 1.22
diff -u -p -r1.22 wcmdmain.c
--- programs/wcmd/wcmdmain.c	11 Feb 2003 22:01:11 -0000	1.22
+++ programs/wcmd/wcmdmain.c	22 Feb 2003 19:37:48 -0000
@@ -56,14 +56,14 @@ HANDLE h;
 
   args[0] = param[0] = '\0';
   if (argc > 1) {
-    for (i=1; i<argc; i++) {
-      if (argv[i][0] == '/') {
+    /* interpreter options must come before the command to execute. 
+     * Any options after the command are command options, not interpreter options.
+     */
+    for (i=1; i<argc && argv[i][0] == '/'; i++)
         strcat (args, argv[i]);
-      }
-      else {
+    for (; i<argc; i++) {
         strcat (param, argv[i]);
         strcat (param, " ");
-      }
     }
   }
 


More information about the wine-devel mailing list