CL Options
So you'd like to help with the Distcc With MSVC options.
Why CL Options Are Important
The way distcc works is that you send out source code to other machines (called slaves) for them to compile. This speeds up the compilation time. But how can the slave know how to compile this code that was sent to it? What happens is that distcc also sends the compile line to the slave. But it can't be the full line because:
- some options don't make sense for the compiler (e.g. options for the linker or the preprocessor).
- some options require things that are only applicable if the entire local code base is around
- some options require you to send multiple files back (e.g. sending back .obj and .pdb objects is unsupported).
Tutorial
This tutorial is a quick way to check if a cl option is supported in distcc. You will have to follow these steps.
- create a simple file. Try to #include some things like stdio.h and other .h files.
- preprocess the file. Use the /P for this, the file will be called <filename>.i
- move the file to some remote location. You can create a temporary folder for this.
- compile to object code. Pass the /Fo<filename>.obj /c to compile only to object code. If no object code or you get a warning, please give us an email or post in the discussion.
Questionable Options
MSDN has categorical listing of cl options.
- /arch
- /bigobj
- /clr
- /EH
- /favor
- /fp
- /G1
- /G2
- /Gd
- /Ge
- /GF
- /Gh
- /GH
- /GL
- /Gm
- /GR
- /Gr
- /Gs
- /GT
- /GX
- /Gy
- /Gz
- /MD
- /MDd
- /MT
- /MTd
- @
- /?
- /analyze
- /c
- /doc
- /errorReport
- /FC
- /H
- /HELP
- /hotpatch
- /J
- /nologo
- /QIfist
- /QIPF_B
- /QIPF_C
- /QIPF_fr32
- /QIPF_noPIC
- /QIPF_restrict_plabels
- /showIncludes
- /Tc/TC
- /Tp/TP
- /V
- /W
- /w
- /Wall
- /WL
- /Zm