MakeDo executes whatever commands are necessary to produce up-to-date versions of given objects. For instance, it will run the compiler and binder, on the right files, in the right order. You have the option of delimiting what MakeDo is allowed to cause to be changed. Exercising this option gives you added safety and error reporting.
Each argument to MakeDo is a bare object, or something with a switch. Bare objects are taken to be goals. Here is what the switches mean:
-df DF file name: (standard DF processing) Currently equivalent to -rgomis; use of -df provides better insulation from changes.
-dr DF file name: Same as -df; for backward compatibility.
-rg DF file name: (roots are goals) Take the files in the DF file marked as verify-roots (i.e., preceded by a "+") to be goals.
-og DF file name: (owned are goals) Take all the owned files (i.e., ones that might be stored if you did an SModel) to be goals.
-om DF file name: (owned are modifiable) Add to the delimited set of what MakeDo may change all of the files owned by the DF.
-is DF file name: (imported are supports) Take all the imported files (i.e., ones that BringOver would fetch but SModel wouldn't store) to be supports.
-omis DF file name: Do both of -om and -is.
-ogis DF file name: Do both of -og and -is.
-rgomis DF file name: (roots are goals, owned are modifiable, imported are supports) Take the files in the DF marked as verify-roots to be goals. Add to the delimited set of what MakeDo may change all files owned by the DF. Add to the set of supports all the files imported by the DF.
-rgomns DF file name: (roots are goals, owned are modifiable, none are supports) Like -rgomis, but doesn't specify support.
-nm object: (named object is modifiable) Add it to the delimited set of what MakeDo may change.
-ns object: (named object is support) Add it to the set of supports.
-p number number number number: Reset parameters that control auxiliary process forking; the first number is the process limit, the second is the estimated MDS cost of a new process, the third is the estimated MDS cost of an old process, and the last is the minimum MDS to maintain.
If any objects are specified to be modifiable (i.e., some of the switches -df, -dr, -rgomis, -om, or -nm is used), the set of things MakeDo may cause to be changed is delimited to what was explicitly asked for (plus, of course, the goals). Otherwise, what MakeDo may change is undelimited --- it may change anything.
Similarly, if any supports are given (i.e., some of the switches -df, -dr, -rgomis, -is, or -ns is used), MakeDo checks that all the files needed to build the goals are among the supports. This check ignores hidden dependencies --- see MakeVerify for a command that doesn't.