diff options
author | Benjamin Barenblat <bbaren@mit.edu> | 2015-07-26 15:27:34 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@mit.edu> | 2015-07-26 15:27:34 -0400 |
commit | 0b93fef4ce5dc8ed49acc437414716cc0ecbc7db (patch) | |
tree | 4e3b90c8930f412f823d5be6c0ad80c87552fa74 | |
parent | 28100d69ed8986b1ad3ce6e0d0d47ee5f7a7a99a (diff) |
-rw-r--r-- | ocaml.bzl | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -12,13 +12,25 @@ # See the License for the specific language governing permissions and # limitations under the License. +def _change_extension(path, new_extension): + # TODO(bbarenblat): Don’t hard-code "/" as the path separator. + basename_start = path.rfind("/") + if basename_start == -1: + basename_start = 0 + extension_start = path.rfind(".", basename_start) + if extension_start == -1: + # No extension, so add one. + return path + "." + new_extension + else: + return path[:extension_start] + "." + new_extension + def _ocaml_interface_impl(ctx): # ocamlopt completely ignores the -o option if you’re compiling OCaml. (It # works correctly if you’re compiling C using ocamlopt as a driver.) As a # workaround, compute the path to the file ocamlopt will generate and then # move it into its final (Bazel-approved) location. input_file_path = ctx.files.src[0].path - generated_interface_path = input_file_path.replace(".mli", ".cmi") + generated_interface_path = _change_extension(input_file_path, "cmi") cmd = ( "set -e;" + "ocamlopt" + |