11(* OASIS_START *)
2- (* DO NOT EDIT (digest: 5a9a2168dcb86db37476d58b8c0e25b3 ) *)
2+ (* DO NOT EDIT (digest: 2b686a81cec9fb16d1640bda36a68fbd ) *)
33module OASISGettext = struct
44(* # 22 "src/oasis/OASISGettext.ml" *)
55
@@ -249,6 +249,9 @@ module MyOCamlbuildFindlib = struct
249249 *)
250250 open Ocamlbuild_plugin
251251
252+ type conf =
253+ { no_automatic_syntax : bool ;
254+ }
252255
253256 (* these functions are not really officially exported *)
254257 let run_and_read =
@@ -315,7 +318,7 @@ module MyOCamlbuildFindlib = struct
315318
316319 (* This lists all supported packages. *)
317320 let find_packages () =
318- List. map before_space (split_nl & run_and_read " ocamlfind list" )
321+ List. map before_space (split_nl & run_and_read (exec_from_conf " ocamlfind" ^ " list" ) )
319322
320323
321324 (* Mock to list available syntaxes. *)
@@ -338,7 +341,7 @@ module MyOCamlbuildFindlib = struct
338341 ]
339342
340343
341- let dispatch =
344+ let dispatch conf =
342345 function
343346 | After_options ->
344347 (* By using Before_options one let command line options have an higher
@@ -357,31 +360,39 @@ module MyOCamlbuildFindlib = struct
357360 * -linkpkg *)
358361 flag [" ocaml" ; " link" ; " program" ] & A " -linkpkg" ;
359362
360- (* For each ocamlfind package one inject the -package option when
361- * compiling, computing dependencies, generating documentation and
362- * linking. *)
363- List. iter
364- begin fun pkg ->
365- let base_args = [A " -package" ; A pkg] in
366- (* TODO: consider how to really choose camlp4o or camlp4r. *)
367- let syn_args = [A " -syntax" ; A " camlp4o" ] in
368- let args =
369- (* Heuristic to identify syntax extensions: whether they end in
370- ".syntax"; some might not.
371- *)
372- if Filename. check_suffix pkg " syntax" ||
373- List. mem pkg well_known_syntax then
374- syn_args @ base_args
375- else
376- base_args
377- in
378- flag [" ocaml" ; " compile" ; " pkg_" ^ pkg] & S args;
379- flag [" ocaml" ; " ocamldep" ; " pkg_" ^ pkg] & S args;
380- flag [" ocaml" ; " doc" ; " pkg_" ^ pkg] & S args;
381- flag [" ocaml" ; " link" ; " pkg_" ^ pkg] & S base_args;
382- flag [" ocaml" ; " infer_interface" ; " pkg_" ^ pkg] & S args;
383- end
384- (find_packages () );
363+ if not (conf.no_automatic_syntax) then begin
364+ (* For each ocamlfind package one inject the -package option when
365+ * compiling, computing dependencies, generating documentation and
366+ * linking. *)
367+ List. iter
368+ begin fun pkg ->
369+ let base_args = [A " -package" ; A pkg] in
370+ (* TODO: consider how to really choose camlp4o or camlp4r. *)
371+ let syn_args = [A " -syntax" ; A " camlp4o" ] in
372+ let (args, pargs) =
373+ (* Heuristic to identify syntax extensions: whether they end in
374+ ".syntax"; some might not.
375+ *)
376+ if Filename. check_suffix pkg " syntax" ||
377+ List. mem pkg well_known_syntax then
378+ (syn_args @ base_args, syn_args)
379+ else
380+ (base_args, [] )
381+ in
382+ flag [" ocaml" ; " compile" ; " pkg_" ^ pkg] & S args;
383+ flag [" ocaml" ; " ocamldep" ; " pkg_" ^ pkg] & S args;
384+ flag [" ocaml" ; " doc" ; " pkg_" ^ pkg] & S args;
385+ flag [" ocaml" ; " link" ; " pkg_" ^ pkg] & S base_args;
386+ flag [" ocaml" ; " infer_interface" ; " pkg_" ^ pkg] & S args;
387+
388+ (* TODO: Check if this is allowed for OCaml < 3.12.1 *)
389+ flag [" ocaml" ; " compile" ; " package(" ^ pkg^ " )" ] & S pargs;
390+ flag [" ocaml" ; " ocamldep" ; " package(" ^ pkg^ " )" ] & S pargs;
391+ flag [" ocaml" ; " doc" ; " package(" ^ pkg^ " )" ] & S pargs;
392+ flag [" ocaml" ; " infer_interface" ; " package(" ^ pkg^ " )" ] & S pargs;
393+ end
394+ (find_packages () );
395+ end;
385396
386397 (* Like -package but for extensions syntax. Morover -syntax is useless
387398 * when linking. *)
@@ -546,12 +557,13 @@ module MyOCamlbuildBase = struct
546557
547558 (* When ocaml link something that use the C library, then one
548559 need that file to be up to date.
560+ This holds both for programs and for libraries.
549561 *)
550- dep [" link" ; " ocaml" ; " program " ; tag_libstubs lib]
551- [dir/ " lib" ^ (nm_libstubs lib)^ " ." ^ (! Options. ext_lib)];
562+ dep [" link" ; " ocaml" ; tag_libstubs lib]
563+ [dir/ " lib" ^ (nm_libstubs lib)^ " ." ^ (! Options. ext_lib)];
552564
553- dep [" compile" ; " ocaml" ; " program " ; tag_libstubs lib]
554- [dir/ " lib" ^ (nm_libstubs lib)^ " ." ^ (! Options. ext_lib)];
565+ dep [" compile" ; " ocaml" ; tag_libstubs lib]
566+ [dir/ " lib" ^ (nm_libstubs lib)^ " ." ^ (! Options. ext_lib)];
555567
556568 (* TODO: be more specific about what depends on headers *)
557569 (* Depends on .h files *)
@@ -580,25 +592,27 @@ module MyOCamlbuildBase = struct
580592 ()
581593
582594
583- let dispatch_default t =
595+ let dispatch_default conf t =
584596 dispatch_combine
585597 [
586598 dispatch t;
587- MyOCamlbuildFindlib. dispatch;
599+ MyOCamlbuildFindlib. dispatch conf ;
588600 ]
589601
590602
591603end
592604
593605
594- # 594 " myocamlbuild.ml"
606+ # 606 " myocamlbuild.ml"
595607open Ocamlbuild_plugin ;;
596608let package_default =
597609 {MyOCamlbuildBase. lib_ocaml = [] ; lib_c = [] ; flags = [] ; includes = [] }
598610 ;;
599611
600- let dispatch_default = MyOCamlbuildBase. dispatch_default package_default;;
612+ let conf = {MyOCamlbuildFindlib. no_automatic_syntax = false }
613+
614+ let dispatch_default = MyOCamlbuildBase. dispatch_default conf package_default;;
601615
602- # 603 " myocamlbuild.ml"
616+ # 617 " myocamlbuild.ml"
603617(* OASIS_STOP *)
604618Ocamlbuild_plugin. dispatch dispatch_default;;
0 commit comments