Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: cakeplus/OCaml-R
base: 3f1bcae415
...
Checking mergeability… Don't worry, you can still create the pull request.
  • 2 commits
  • 3 files changed
  • 0 commit comments
  • 1 contributor
Showing with 5 additions and 6,718 deletions.
  1. +1 −62 _tags
  2. +0 −582 myocamlbuild.ml
  3. +4 −6,074 setup.ml
View
63 _tags
@@ -1,64 +1,3 @@
# OASIS_START
-# DO NOT EDIT (digest: e9f3065f4c0d4271b93fe269bb683e47)
-# Ignore VCS directories, you can use the same kind of rule outside
-# OASIS_START/STOP if you want to exclude directories that contains
-# useless stuff for the build process
-<**/.svn>: -traverse
-<**/.svn>: not_hygienic
-".bzr": -traverse
-".bzr": not_hygienic
-".hg": -traverse
-".hg": not_hygienic
-".git": -traverse
-".git": not_hygienic
-"_darcs": -traverse
-"_darcs": not_hygienic
-# Library R_math
-"src/math/R_math.cmxs": use_R_math
-<src/math/R_math.{cma,cmxa}>: use_libR_math_stubs
-# Library R
-"src/R.cmxs": use_R
-<src/R.{cma,cmxa}>: use_libR_stubs
-"src/initialisation_stub.c": pkg_calendar
-"src/databridge.c": pkg_calendar
-"src/sexp.c": pkg_calendar
-"src/allocation_stub.c": pkg_calendar
-"src/read_internal_stub.c": pkg_calendar
-"src/write_internal_stub.c": pkg_calendar
-"src/symbols_stub.c": pkg_calendar
-"src/conversion_stub.c": pkg_calendar
-"src/s3_stub.c": pkg_calendar
-"src/s4_stub.c": pkg_calendar
-"src/reduction_stub.c": pkg_calendar
-"src/parser_stub.c": pkg_calendar
-# Object R_interpreter
-<src/*.ml{,i}>: use_R
-<src/*.ml{,i}>: pkg_calendar
-# Library R_base
-"src/base/R_base.cmxs": use_R_base
-<src/base/*.ml{,i}>: use_R
-<src/base/*.ml{,i}>: pkg_calendar
-# Library R_methods
-"src/methods/R_methods.cmxs": use_R_methods
-<src/methods/*.ml{,i}>: use_R
-<src/methods/*.ml{,i}>: pkg_calendar
-# Library R_syntax
-"src/syntax/R_syntax.cmxs": use_R_syntax
-<src/syntax/*.ml{,i}>: pkg_camlp4.lib
-<src/syntax/*.ml{,i}>: pkg_camlp4.quotations.o
-<src/syntax/*.ml{,i}>: pkg_camlp4.extend
-# Library R_stats
-"src/stats/R_stats.cmxs": use_R_stats
-<src/stats/*.ml{,i}>: use_R_base
-<src/stats/*.ml{,i}>: use_R
-<src/stats/*.ml{,i}>: pkg_calendar
-# Library R_graphics
-"src/graphics/R_graphics.cmxs": use_R_graphics
-<src/graphics/*.ml{,i}>: use_R
-<src/graphics/*.ml{,i}>: pkg_calendar
-# Library R_grDevices
-"src/grDevices/R_grDevices.cmxs": use_R_grDevices
-<src/grDevices/*.ml{,i}>: use_R
-<src/grDevices/*.ml{,i}>: pkg_calendar
# OASIS_STOP
-<src/syntax/*.ml>: syntax_camlp4o, pkg_camlp4, pkg_camlp4.extend, pkg_camlp4.quotations
+<src/syntax/pa_r.ml>: syntax_camlp4o, pkg_camlp4, pkg_camlp4.extend, pkg_camlp4.quotations.r
View
582 myocamlbuild.ml
@@ -1,586 +1,4 @@
(* OASIS_START *)
-(* DO NOT EDIT (digest: 403321246a99a2d7d8733a6f323f5a11) *)
-module OASISGettext = struct
-# 21 "/home/pveber/w/oasis/src/oasis/OASISGettext.ml"
-
- let ns_ str =
- str
-
- let s_ str =
- str
-
- let f_ (str : ('a, 'b, 'c, 'd) format4) =
- str
-
- let fn_ fmt1 fmt2 n =
- if n = 1 then
- fmt1^^""
- else
- fmt2^^""
-
- let init =
- []
-
-end
-
-module OASISExpr = struct
-# 21 "/home/pveber/w/oasis/src/oasis/OASISExpr.ml"
-
-
-
- open OASISGettext
-
- type test = string
-
- type flag = string
-
- type t =
- | EBool of bool
- | ENot of t
- | EAnd of t * t
- | EOr of t * t
- | EFlag of flag
- | ETest of test * string
-
-
- type 'a choices = (t * 'a) list
-
- let eval var_get t =
- let rec eval' =
- function
- | EBool b ->
- b
-
- | ENot e ->
- not (eval' e)
-
- | EAnd (e1, e2) ->
- (eval' e1) && (eval' e2)
-
- | EOr (e1, e2) ->
- (eval' e1) || (eval' e2)
-
- | EFlag nm ->
- let v =
- var_get nm
- in
- assert(v = "true" || v = "false");
- (v = "true")
-
- | ETest (nm, vl) ->
- let v =
- var_get nm
- in
- (v = vl)
- in
- eval' t
-
- let choose ?printer ?name var_get lst =
- let rec choose_aux =
- function
- | (cond, vl) :: tl ->
- if eval var_get cond then
- vl
- else
- choose_aux tl
- | [] ->
- let str_lst =
- if lst = [] then
- s_ "<empty>"
- else
- String.concat
- (s_ ", ")
- (List.map
- (fun (cond, vl) ->
- match printer with
- | Some p -> p vl
- | None -> s_ "<no printer>")
- lst)
- in
- match name with
- | Some nm ->
- failwith
- (Printf.sprintf
- (f_ "No result for the choice list '%s': %s")
- nm str_lst)
- | None ->
- failwith
- (Printf.sprintf
- (f_ "No result for a choice list: %s")
- str_lst)
- in
- choose_aux (List.rev lst)
-
-end
-
-
-# 117 "myocamlbuild.ml"
-module BaseEnvLight = struct
-# 21 "/home/pveber/w/oasis/src/base/BaseEnvLight.ml"
-
- module MapString = Map.Make(String)
-
- type t = string MapString.t
-
- let default_filename =
- Filename.concat
- (Sys.getcwd ())
- "setup.data"
-
- let load ?(allow_empty=false) ?(filename=default_filename) () =
- if Sys.file_exists filename then
- begin
- let chn =
- open_in_bin filename
- in
- let st =
- Stream.of_channel chn
- in
- let line =
- ref 1
- in
- let st_line =
- Stream.from
- (fun _ ->
- try
- match Stream.next st with
- | '\n' -> incr line; Some '\n'
- | c -> Some c
- with Stream.Failure -> None)
- in
- let lexer =
- Genlex.make_lexer ["="] st_line
- in
- let rec read_file mp =
- match Stream.npeek 3 lexer with
- | [Genlex.Ident nm; Genlex.Kwd "="; Genlex.String value] ->
- Stream.junk lexer;
- Stream.junk lexer;
- Stream.junk lexer;
- read_file (MapString.add nm value mp)
- | [] ->
- mp
- | _ ->
- failwith
- (Printf.sprintf
- "Malformed data file '%s' line %d"
- filename !line)
- in
- let mp =
- read_file MapString.empty
- in
- close_in chn;
- mp
- end
- else if allow_empty then
- begin
- MapString.empty
- end
- else
- begin
- failwith
- (Printf.sprintf
- "Unable to load environment, the file '%s' doesn't exist."
- filename)
- end
-
- let var_get name env =
- let rec var_expand str =
- let buff =
- Buffer.create ((String.length str) * 2)
- in
- Buffer.add_substitute
- buff
- (fun var ->
- try
- var_expand (MapString.find var env)
- with Not_found ->
- failwith
- (Printf.sprintf
- "No variable %s defined when trying to expand %S."
- var
- str))
- str;
- Buffer.contents buff
- in
- var_expand (MapString.find name env)
-
- let var_choose lst env =
- OASISExpr.choose
- (fun nm -> var_get nm env)
- lst
-end
-
-
-# 215 "myocamlbuild.ml"
-module MyOCamlbuildFindlib = struct
-# 21 "/home/pveber/w/oasis/src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml"
-
- (** OCamlbuild extension, copied from
- * http://brion.inria.fr/gallium/index.php/Using_ocamlfind_with_ocamlbuild
- * by N. Pouillard and others
- *
- * Updated on 2009/02/28
- *
- * Modified by Sylvain Le Gall
- *)
- open Ocamlbuild_plugin
-
- (* these functions are not really officially exported *)
- let run_and_read =
- Ocamlbuild_pack.My_unix.run_and_read
-
- let blank_sep_strings =
- Ocamlbuild_pack.Lexers.blank_sep_strings
-
- let split s ch =
- let x =
- ref []
- in
- let rec go s =
- let pos =
- String.index s ch
- in
- x := (String.before s pos)::!x;
- go (String.after s (pos + 1))
- in
- try
- go s
- with Not_found -> !x
-
- let split_nl s = split s '\n'
-
- let before_space s =
- try
- String.before s (String.index s ' ')
- with Not_found -> s
-
- (* this lists all supported packages *)
- let find_packages () =
- List.map before_space (split_nl & run_and_read "ocamlfind list")
-
- (* this is supposed to list available syntaxes, but I don't know how to do it. *)
- let find_syntaxes () = ["camlp4o"; "camlp4r"]
-
- (* ocamlfind command *)
- let ocamlfind x = S[A"ocamlfind"; x]
-
- let dispatch =
- function
- | Before_options ->
- (* by using Before_options one let command line options have an higher priority *)
- (* on the contrary using After_options will guarantee to have the higher priority *)
- (* override default commands by ocamlfind ones *)
- Options.ocamlc := ocamlfind & A"ocamlc";
- Options.ocamlopt := ocamlfind & A"ocamlopt";
- Options.ocamldep := ocamlfind & A"ocamldep";
- Options.ocamldoc := ocamlfind & A"ocamldoc";
- Options.ocamlmktop := ocamlfind & A"ocamlmktop"
-
- | After_rules ->
-
- (* When one link an OCaml library/binary/package, one should use -linkpkg *)
- flag ["ocaml"; "link"; "program"] & A"-linkpkg";
-
- (* For each ocamlfind package one inject the -package option when
- * compiling, computing dependencies, generating documentation and
- * linking. *)
- List.iter
- begin fun pkg ->
- flag ["ocaml"; "compile"; "pkg_"^pkg] & S[A"-package"; A pkg];
- flag ["ocaml"; "ocamldep"; "pkg_"^pkg] & S[A"-package"; A pkg];
- flag ["ocaml"; "doc"; "pkg_"^pkg] & S[A"-package"; A pkg];
- flag ["ocaml"; "link"; "pkg_"^pkg] & S[A"-package"; A pkg];
- flag ["ocaml"; "infer_interface"; "pkg_"^pkg] & S[A"-package"; A pkg];
- end
- (find_packages ());
-
- (* Like -package but for extensions syntax. Morover -syntax is useless
- * when linking. *)
- List.iter begin fun syntax ->
- flag ["ocaml"; "compile"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
- flag ["ocaml"; "ocamldep"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
- flag ["ocaml"; "doc"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
- flag ["ocaml"; "infer_interface"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
- end (find_syntaxes ());
-
- (* The default "thread" tag is not compatible with ocamlfind.
- * Indeed, the default rules add the "threads.cma" or "threads.cmxa"
- * options when using this tag. When using the "-linkpkg" option with
- * ocamlfind, this module will then be added twice on the command line.
- *
- * To solve this, one approach is to add the "-thread" option when using
- * the "threads" package using the previous plugin.
- *)
- flag ["ocaml"; "pkg_threads"; "compile"] (S[A "-thread"]);
- flag ["ocaml"; "pkg_threads"; "doc"] (S[A "-I"; A "+threads"]);
- flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
- flag ["ocaml"; "pkg_threads"; "infer_interface"] (S[A "-thread"])
-
- | _ ->
- ()
-
-end
-
-module MyOCamlbuildBase = struct
-# 21 "/home/pveber/w/oasis/src/plugins/ocamlbuild/MyOCamlbuildBase.ml"
-
- (** Base functions for writing myocamlbuild.ml
- @author Sylvain Le Gall
- *)
-
-
-
- open Ocamlbuild_plugin
- module OC = Ocamlbuild_pack.Ocaml_compiler
-
- type dir = string
- type file = string
- type name = string
- type tag = string
-
-# 56 "/home/pveber/w/oasis/src/plugins/ocamlbuild/MyOCamlbuildBase.ml"
-
- type t =
- {
- lib_ocaml: (name * dir list) list;
- lib_c: (name * dir * file list) list;
- flags: (tag list * (spec OASISExpr.choices)) list;
- (* Replace the 'dir: include' from _tags by a precise interdepends in
- * directory.
- *)
- includes: (dir * dir list) list;
- }
-
- let env_filename =
- Pathname.basename
- BaseEnvLight.default_filename
-
- let dispatch_combine lst =
- fun e ->
- List.iter
- (fun dispatch -> dispatch e)
- lst
-
- let tag_libstubs nm =
- "use_lib"^nm^"_stubs"
-
- let nm_libstubs nm =
- nm^"_stubs"
-
- let dispatch t e =
- let env =
- BaseEnvLight.load
- ~filename:env_filename
- ~allow_empty:true
- ()
- in
- match e with
- | Before_options ->
- let no_trailing_dot s =
- if String.length s >= 1 && s.[0] = '.' then
- String.sub s 1 ((String.length s) - 1)
- else
- s
- in
- List.iter
- (fun (opt, var) ->
- try
- opt := no_trailing_dot (BaseEnvLight.var_get var env)
- with Not_found ->
- Printf.eprintf "W: Cannot get variable %s" var)
- [
- Options.ext_obj, "ext_obj";
- Options.ext_lib, "ext_lib";
- Options.ext_dll, "ext_dll";
- ]
-
- | Before_rules ->
- (* TODO: move this into its own file and conditionnaly include it, if
- * needed.
- *)
- (* OCaml cmxs rules: cmxs available in ocamlopt but not ocamlbuild.
- Copied from ocaml_specific.ml in ocamlbuild sources. *)
- let has_native_dynlink =
- try
- bool_of_string (BaseEnvLight.var_get "native_dynlink" env)
- with Not_found ->
- false
- in
- if has_native_dynlink && String.sub Sys.ocaml_version 0 4 = "3.11" then
- begin
- let ext_lib = !Options.ext_lib in
- let ext_obj = !Options.ext_obj in
- let ext_dll = !Options.ext_dll in
- let x_o = "%"-.-ext_obj in
- let x_a = "%"-.-ext_lib in
- let x_dll = "%"-.-ext_dll in
- let x_p_o = "%.p"-.-ext_obj in
- let x_p_a = "%.p"-.-ext_lib in
- let x_p_dll = "%.p"-.-ext_dll in
-
- rule "ocaml: mldylib & p.cmx* & p.o* -> p.cmxs & p.so"
- ~tags:["ocaml"; "native"; "profile"; "shared"; "library"]
- ~prods:["%.p.cmxs"; x_p_dll]
- ~dep:"%.mldylib"
- (OC.native_profile_shared_library_link_mldylib
- "%.mldylib" "%.p.cmxs");
-
- rule "ocaml: mldylib & cmx* & o* -> cmxs & so"
- ~tags:["ocaml"; "native"; "shared"; "library"]
- ~prods:["%.cmxs"; x_dll]
- ~dep:"%.mldylib"
- (OC.native_shared_library_link_mldylib
- "%.mldylib" "%.cmxs");
-
- rule "ocaml: p.cmx & p.o -> p.cmxs & p.so"
- ~tags:["ocaml"; "native"; "profile"; "shared"; "library"]
- ~prods:["%.p.cmxs"; x_p_dll]
- ~deps:["%.p.cmx"; x_p_o]
- (OC.native_shared_library_link ~tags:["profile"]
- "%.p.cmx" "%.p.cmxs");
-
- rule "ocaml: p.cmxa & p.a -> p.cmxs & p.so"
- ~tags:["ocaml"; "native"; "profile"; "shared"; "library"]
- ~prods:["%.p.cmxs"; x_p_dll]
- ~deps:["%.p.cmxa"; x_p_a]
- (OC.native_shared_library_link ~tags:["profile"; "linkall"]
- "%.p.cmxa" "%.p.cmxs");
-
- rule "ocaml: cmx & o -> cmxs"
- ~tags:["ocaml"; "native"; "shared"; "library"]
- ~prods:["%.cmxs"]
- ~deps:["%.cmx"; x_o]
- (OC.native_shared_library_link "%.cmx" "%.cmxs");
-
- rule "ocaml: cmx & o -> cmxs & so"
- ~tags:["ocaml"; "native"; "shared"; "library"]
- ~prods:["%.cmxs"; x_dll]
- ~deps:["%.cmx"; x_o]
- (OC.native_shared_library_link "%.cmx" "%.cmxs");
-
- rule "ocaml: cmxa & a -> cmxs & so"
- ~tags:["ocaml"; "native"; "shared"; "library"]
- ~prods:["%.cmxs"; x_dll]
- ~deps:["%.cmxa"; x_a]
- (OC.native_shared_library_link ~tags:["linkall"]
- "%.cmxa" "%.cmxs");
- end
-
- | After_rules ->
- (* Declare OCaml libraries *)
- List.iter
- (function
- | nm, [] ->
- ocaml_lib nm
- | nm, dir :: tl ->
- ocaml_lib ~dir:dir (dir^"/"^nm);
- List.iter
- (fun dir ->
- List.iter
- (fun str ->
- flag ["ocaml"; "use_"^nm; str] (S[A"-I"; P dir]))
- ["compile"; "infer_interface"; "doc"])
- tl)
- t.lib_ocaml;
-
- (* Declare directories dependencies, replace "include" in _tags. *)
- List.iter
- (fun (dir, include_dirs) ->
- Pathname.define_context dir include_dirs)
- t.includes;
-
- (* Declare C libraries *)
- List.iter
- (fun (lib, dir, headers) ->
- (* Handle C part of library *)
- flag ["link"; "library"; "ocaml"; "byte"; tag_libstubs lib]
- (S[A"-dllib"; A("-l"^(nm_libstubs lib)); A"-cclib";
- A("-l"^(nm_libstubs lib))]);
-
- flag ["link"; "library"; "ocaml"; "native"; tag_libstubs lib]
- (S[A"-cclib"; A("-l"^(nm_libstubs lib))]);
-
- flag ["link"; "program"; "ocaml"; "byte"; tag_libstubs lib]
- (S[A"-dllib"; A("dll"^(nm_libstubs lib))]);
-
- (* When ocaml link something that use the C library, then one
- need that file to be up to date.
- *)
- dep ["link"; "ocaml"; "program"; tag_libstubs lib]
- [dir/"lib"^(nm_libstubs lib)^"."^(!Options.ext_lib)];
-
- dep ["compile"; "ocaml"; "program"; tag_libstubs lib]
- [dir/"lib"^(nm_libstubs lib)^"."^(!Options.ext_lib)];
-
- (* TODO: be more specific about what depends on headers *)
- (* Depends on .h files *)
- dep ["compile"; "c"]
- headers;
-
- (* Setup search path for lib *)
- flag ["link"; "ocaml"; "use_"^lib]
- (S[A"-I"; P(dir)]);
- )
- t.lib_c;
-
- (* Add flags *)
- List.iter
- (fun (tags, cond_specs) ->
- let spec =
- BaseEnvLight.var_choose cond_specs env
- in
- flag tags & spec)
- t.flags
- | _ ->
- ()
-
- let dispatch_default t =
- dispatch_combine
- [
- dispatch t;
- MyOCamlbuildFindlib.dispatch;
- ]
-
-end
-
-
-# 548 "myocamlbuild.ml"
-open Ocamlbuild_plugin;;
-let package_default =
- {
- MyOCamlbuildBase.lib_ocaml =
- [
- ("R_math", ["src/math"]);
- ("R", ["src"]);
- ("R_interpreter", ["src"]);
- ("R_base", ["src/base"]);
- ("R_methods", ["src/methods"]);
- ("R_syntax", ["src/syntax"]);
- ("R_stats", ["src/stats"]);
- ("R_graphics", ["src/graphics"]);
- ("R_grDevices", ["src/grDevices"])
- ];
- lib_c =
- [
- ("R_math", "src/math", ["src/math/wrappers.h"]);
- ("R", "src", ["src/databridge.h"])
- ];
- flags = [];
- includes =
- [
- ("src/stats", ["src"; "src/base"]);
- ("src/methods", ["src"]);
- ("src/graphics", ["src"]);
- ("src/grDevices", ["src"]);
- ("src/base", ["src"])
- ];
- }
- ;;
-
-let dispatch_default = MyOCamlbuildBase.dispatch_default package_default;;
-
-# 584 "myocamlbuild.ml"
(* OASIS_STOP *)
open Ocamlbuild_plugin
View
6,078 setup.ml
4 additions, 6,074 deletions not shown

No commit comments for this range

Something went wrong with that request. Please try again.