| 3939 | |
| 3940 | |
| 3941 | def _AddMSBuildAction( |
| 3942 | spec, |
| 3943 | primary_input, |
| 3944 | inputs, |
| 3945 | outputs, |
| 3946 | cmd, |
| 3947 | description, |
| 3948 | sources_handled_by_action, |
| 3949 | actions_spec, |
| 3950 | ): |
| 3951 | command = MSVSSettings.ConvertVCMacrosToMSBuild(cmd) |
| 3952 | primary_input = _FixPath(primary_input) |
| 3953 | inputs_array = _FixPaths(inputs) |
| 3954 | outputs_array = _FixPaths(outputs) |
| 3955 | additional_inputs = ";".join([i for i in inputs_array if i != primary_input]) |
| 3956 | outputs = ";".join(outputs_array) |
| 3957 | sources_handled_by_action.add(primary_input) |
| 3958 | action_spec = ["CustomBuild", {"Include": primary_input}] |
| 3959 | action_spec.extend( |
| 3960 | # TODO(jeanluc) 'Document' for all or just if as_sources? |
| 3961 | [ |
| 3962 | ["FileType", "Document"], |
| 3963 | ["Command", command], |
| 3964 | ["Message", description], |
| 3965 | ["Outputs", outputs], |
| 3966 | ] |
| 3967 | ) |
| 3968 | if additional_inputs: |
| 3969 | action_spec.append(["AdditionalInputs", additional_inputs]) |
| 3970 | actions_spec.append(action_spec) |