# HG changeset patch # User wenzelm # Date 1541426671 -3600 # Node ID 6cd985a78d6ee3da8e0ebc4467459d74eea2beb1 # Parent d98cfb369cbde5304706b82c6358c1a50ce0f768 support sub-directories, i.e. structure module names; diff -r d98cfb369cbd -r 6cd985a78d6e src/Tools/Haskell/Build.thy --- a/src/Tools/Haskell/Build.thy Mon Nov 05 15:00:55 2018 +0100 +++ b/src/Tools/Haskell/Build.thy Mon Nov 05 15:04:31 2018 +0100 @@ -7,18 +7,17 @@ theory Build imports Haskell begin -ML_command \ +ML \ Isabelle_System.with_tmp_dir "ghc" (fn dir => let + val _ = Haskell.install_sources dir; val (out, rc) = Isabelle_System.bash_output (cat_lines ["set -e", "cd " ^ File.bash_path dir, - "cp " ^ File.bash_paths Haskell.source_modules ^ " .", - "\"$ISABELLE_GHC\" " ^ File.bash_paths (map Path.base Haskell.source_modules)]); - in if rc = 0 then writeln out else error out end - ) + "\"$ISABELLE_GHC\" " ^ File.bash_paths Haskell.sources]); + in if rc = 0 then writeln out else error out end) \ end diff -r d98cfb369cbd -r 6cd985a78d6e src/Tools/Haskell/haskell.ML --- a/src/Tools/Haskell/haskell.ML Mon Nov 05 15:00:55 2018 +0100 +++ b/src/Tools/Haskell/haskell.ML Mon Nov 05 15:04:31 2018 +0100 @@ -10,7 +10,8 @@ Toplevel.transition -> Toplevel.transition val export_file_cmd: string * Input.source -> Toplevel.transition -> Toplevel.transition - val source_modules: Path.T list + val sources: Path.T list + val install_sources: Path.T -> unit end; structure Haskell: HASKELL = @@ -43,15 +44,20 @@ in () end); -(* source modules *) +(* sources *) -val source_modules = - [\<^file>\~~/src/Tools/Haskell/Library.hs\, - \<^file>\~~/src/Tools/Haskell/Value.hs\, - \<^file>\~~/src/Tools/Haskell/Buffer.hs\, - \<^file>\~~/src/Tools/Haskell/Properties.hs\, - \<^file>\~~/src/Tools/Haskell/Markup.hs\, - \<^file>\~~/src/Tools/Haskell/XML.hs\, - \<^file>\~~/src/Tools/Haskell/YXML.hs\]; +val sources = + [\<^path>\Library.hs\, + \<^path>\Value.hs\, + \<^path>\Buffer.hs\, + \<^path>\Properties.hs\, + \<^path>\Markup.hs\, + \<^path>\XML.hs\, + \<^path>\YXML.hs\]; + +val master_dir = Resources.master_directory \<^theory>; + +fun install_sources dir = + sources |> List.app (fn path => Isabelle_System.copy_file_base (master_dir, path) dir); end;