Open GitMensch opened 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:
cccl /c/code/main.cpp
will now correctly be passed on as cl /c/code/main.cpp
. Note that MSYS converts/corrects the /c/code/main.cpp
to c:\code\main.cpp
before passing to the cl executable.On MSYS based systems, the downside is:
/
to cccl. Currently options starting with /
get converted to the option starting with -
. cccl is a Unix cc emulator and so this is not likely to be something that is used much and /
options are fraught with problems on MSYS based systems, presumably largely avoided. They largely work when using //
instead as MSYS will translate this back to just /
. These cccl /
options were always intended to be passed through to cl unmodified and on MSYS //
is what is expected to be used instead. In summary, anyone currently passing options beginning /
to cccl will have to change them to begin with -
or //
.
cl exe as GCC allows to specify a file as input, but
cccl test.c /path/to/lib
is translated tocl 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.