swig / cccl

Unix cc compiler to Microsoft's cl compiler wrapper
GNU General Public License v3.0
123 stars 36 forks source link

MinGW/cygwin paths are passed to cl.exe as option #13

Open GitMensch opened 2 years ago

GitMensch commented 2 years ago

cl exe as GCC allows to specify a file as input, but cccl test.c /path/to/lib is translated to cl test.c -path/to/lib which then results in warning D9002 of cl "unknown option ignored", followed by a linker error because of the missing symbols.

wsfulton commented 2 years ago

The proposed fix in #10 uses test -e to see if the 'option' is a path or a file and then handle appropriately. This may not work if the file does not exist and a file/path was actually intended. I've got grave doubts about trying to generically interpret forward slash options to try and do the right thing. It's a can of worms I don't want to open up. The Unix-like operating systems already have ways to deal with paths and it's best for users to utilise that support, for example, the cygpath tool, mixed paths (such as c:/folder/file) or MSYS's automated Posix path conversions.

Instead, I propose removing the code that slightly modifies an option beginning '/'. Currently these are replaced by the system specific separator (/ on cygwin and - on MSYS based systems). I propose all options beginning / are completely unmodified.

cccl's goal is to be simple and lightweight and the proposal fits in with that. There is effectively no change on cygwin based systems. However, not on MSYS based systems.

On MSYS based systems, the upside is:

On MSYS based systems, the downside is: