From 0b93fef4ce5dc8ed49acc437414716cc0ecbc7db Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Sun, 26 Jul 2015 15:27:34 -0400 Subject: Allow nonstandard extensions --- ocaml.bzl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ocaml.bzl b/ocaml.bzl index 9fcd6a7..3065d80 100644 --- a/ocaml.bzl +++ b/ocaml.bzl @@ -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" + -- cgit v1.2.3