diff options
| author | Sébastien Hinderer <Sebastien.Hinderer@inria.fr> | 2018-02-02 09:14:56 +0100 |
|---|---|---|
| committer | Sébastien Hinderer <Sebastien.Hinderer@inria.fr> | 2018-02-02 13:06:40 +0100 |
| commit | c24cb5b59c526a678f382f18b247e5b06facf09f (patch) | |
| tree | 463fa413bfec595659e2d4ba5b2ddbf679fe4558 | |
| parent | 7955b9c0c661128466419fc5fd75444f9dedf8bb (diff) | |
| download | ocaml-c24cb5b59c526a678f382f18b247e5b06facf09f.tar.gz | |
ocamltest: compute compiler output and reference during build env setup
Before this commit this was done by the compile actions themselves but it
is actually better to do it only once during the setup of the
build environment.
| -rw-r--r-- | ocamltest/ocaml_actions.ml | 73 |
1 files changed, 29 insertions, 44 deletions
diff --git a/ocamltest/ocaml_actions.ml b/ocamltest/ocaml_actions.ml index 7d67e6fbab..16f078b05f 100644 --- a/ocamltest/ocaml_actions.ml +++ b/ocamltest/ocaml_actions.ml @@ -152,6 +152,23 @@ let find_source_modules log env = env let setup_compiler_build_env compiler log env = + let source_directory = Actions_helpers.test_source_directory env in + let testfile = Actions_helpers.testfile env in + let testfile_basename = Filename.chop_extension testfile in + let compiler_reference_variable = + compiler.Ocaml_compilers.reference_variable in + let env = + if Environments.is_variable_defined compiler_reference_variable env + then env + else begin + let compiler_reference_prefix = + Filename.make_path [source_directory; testfile_basename] in + let compiler_reference_filename = + Ocaml_compilers.reference_filename + env compiler_reference_prefix compiler in + Environments.add + compiler_reference_variable compiler_reference_filename env + end in let source_modules = Actions_helpers.words_of_variable env Ocaml_variables.source_modules in let compiler_directory_suffix = @@ -162,6 +179,18 @@ let setup_compiler_build_env compiler log env = (Environments.safe_lookup Builtin_variables.test_build_directory_prefix env) compiler_directory_name in + let compiler_output_variable = compiler.Ocaml_compilers.output_variable in + let (env, compiler_output_file) = + (match Environments.lookup compiler_output_variable env with + | Some value -> (env, value) + | None -> + let compiler_output_filename = + Filename.make_filename compiler.Ocaml_compilers.directory "output" in + let file = Filename.make_path [build_dir; compiler_output_filename] in + let env' = Environments.add compiler_output_variable file env in + (env', file)) in + if Sys.file_exists compiler_output_file then + Sys.remove compiler_output_file; let newenv = Environments.add Builtin_variables.test_build_directory build_dir env in Actions_helpers.setup_build_env false source_modules log newenv @@ -211,34 +240,18 @@ let compile_test_program program_variable compiler log env = let backend = compiler.Ocaml_compilers.backend in let testfile = Actions_helpers.testfile env in let testfile_basename = Filename.chop_extension testfile in - let source_directory = Actions_helpers.test_source_directory env in let build_directory = Actions_helpers.test_build_directory env in - let compilerreference_prefix = - Filename.make_path [source_directory; testfile_basename] in - let compilerreference_filename = - Ocaml_compilers.reference_filename env compilerreference_prefix compiler in - let compiler_reference_variable = - compiler.Ocaml_compilers.reference_variable in let executable_filename = Filename.mkexe (Filename.make_filename testfile_basename (Ocaml_backends.executable_extension backend)) in let executable_path = Filename.make_path [build_directory; executable_filename] in - let compiler_output_filename = - Filename.make_filename compiler.Ocaml_compilers.directory "output" in - let compiler_output = - Filename.make_path [build_directory; compiler_output_filename] in - let compiler_output_variable = compiler.Ocaml_compilers.output_variable in let newenv = Environments.add_bindings [ (program_variable, executable_path); - (compiler_reference_variable, compilerreference_filename); - (compiler_output_variable, compiler_output); ] env in - if Sys.file_exists compiler_output_filename then - Sys.remove compiler_output_filename; let ocamlsrcdir = Ocaml_directories.srcdir () in let source_modules = Actions_helpers.words_of_variable env Ocaml_variables.source_modules in @@ -491,37 +504,9 @@ let compile_modules let run_test_program_in_toplevel toplevel log env = let testfile = Actions_helpers.testfile env in - let testfile_basename = Filename.chop_extension testfile in let expected_exit_status = Ocaml_compilers.expected_exit_status env toplevel in - let source_directory = Actions_helpers.test_source_directory env in - let build_directory = Actions_helpers.test_build_directory env in let compiler_output_variable = toplevel.Ocaml_compilers.output_variable in - let (env, compiler_output) = - (match Environments.lookup compiler_output_variable env with - | Some value -> (env, value) - | None -> - let compiler_output_filename = - Filename.make_filename toplevel.Ocaml_compilers.directory "output" in - let value = - Filename.make_path [build_directory; compiler_output_filename] in - let env' = Environments.add compiler_output_variable value env in - (env', value)) in - let compiler_reference_variable = - toplevel.Ocaml_compilers.reference_variable in - let env = - if Environments.is_variable_defined compiler_reference_variable env then env - else begin - let compilerreference_prefix = - Filename.make_path [source_directory; testfile_basename] in - let compilerreference_filename = - Ocaml_compilers.reference_filename - env compilerreference_prefix toplevel in - Environments.add - compiler_reference_variable compilerreference_filename env - end in - if Sys.file_exists compiler_output then - Sys.remove compiler_output; let ocamlsrcdir = Ocaml_directories.srcdir () in let compiler = match toplevel.Ocaml_compilers.backend with | Sys.Native -> Ocaml_compilers.ocamlopt_byte |
