The unpac monorepo manager self-hosting as a monorepo using unpac
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use quoted strings for chunks of code (multiline strings) (#13162)

authored by

Antonin Décimo and committed by
GitHub
302c467d 4fc907d4

+231 -212
+3
Changes
··· 189 189 false positives on s390x 190 190 (Miod Vallat, review by Fabien Buoro) 191 191 192 + - #13162: Use quoted strings to clarify code being generated. 193 + (Antonin Décimo, review by Miod Vallat and Gabriel Scherer) 194 + 192 195 ### Build system: 193 196 194 197 - #12909: Reorganise how MKEXE_VIA_CC is built to make it correct for MSVC by
+8 -8
debugger/command_line.ml
··· 1096 1096 (* Breakpoints *) 1097 1097 { instr_name = "break"; instr_prio = false; 1098 1098 instr_action = instr_break; instr_repeat = false; instr_help = 1099 - "Set breakpoint.\ 1100 - \nSyntax: break\ 1101 - \n break function-name\ 1102 - \n break @ [module] linenum\ 1103 - \n break @ [module] linenum columnnum\ 1104 - \n break @ [module] # characternum\ 1105 - \n break frag:pc\ 1106 - \n break pc" }; 1099 + {|Set breakpoint. 1100 + Syntax: break 1101 + break function-name 1102 + break @ [module] linenum 1103 + break @ [module] linenum columnnum 1104 + break @ [module] # characternum 1105 + break frag:pc 1106 + break pc|} }; 1107 1107 { instr_name = "delete"; instr_prio = false; 1108 1108 instr_action = instr_delete; instr_repeat = false; instr_help = 1109 1109 "delete some breakpoints.\n\
+104 -88
lex/outputbis.ml
··· 29 29 let pr ctx = fprintf ctx.oc 30 30 31 31 let output_auto_defs ctx = 32 - if ctx.has_refill then begin 33 - pr ctx "\n"; 34 - pr ctx "let rec __ocaml_lex_refill_buf lexbuf _buf _len _curr _last \ 35 - _last_action state k =\n"; 36 - pr ctx " if lexbuf.Lexing.lex_eof_reached then\n"; 37 - pr ctx " state lexbuf _last_action _buf _len _curr _last k 256\n"; 38 - pr ctx " else begin\n"; 39 - pr ctx " lexbuf.Lexing.lex_curr_pos <- _curr;\n"; 40 - pr ctx " lexbuf.Lexing.lex_last_pos <- _last;\n"; 41 - pr ctx " __ocaml_lex_refill\n"; 42 - pr ctx " (fun lexbuf ->\n"; 43 - pr ctx " let _curr = lexbuf.Lexing.lex_curr_pos in\n"; 44 - pr ctx " let _last = lexbuf.Lexing.lex_last_pos in\n"; 45 - pr ctx " let _len = lexbuf.Lexing.lex_buffer_len in\n"; 46 - pr ctx " let _buf = lexbuf.Lexing.lex_buffer in\n"; 47 - pr ctx " if _curr < _len then\n"; 48 - pr ctx " state lexbuf _last_action _buf _len (_curr + 1) \ 49 - _last k\n"; 50 - pr ctx " (Char.code (Bytes.unsafe_get _buf _curr))\n"; 51 - pr ctx " else\n"; 52 - pr ctx " __ocaml_lex_refill_buf lexbuf _buf _len _curr _last \ 53 - _last_action\n"; 54 - pr ctx " state k\n"; 55 - pr ctx " )\n"; 56 - pr ctx " lexbuf\n"; 57 - pr ctx " end\n"; 58 - pr ctx "\n"; 59 - end else begin 60 - pr ctx "\n"; 61 - pr ctx "let rec __ocaml_lex_refill_buf lexbuf _buf _len _curr _last =\n"; 62 - pr ctx " if lexbuf.Lexing.lex_eof_reached then\n"; 63 - pr ctx " 256, _buf, _len, _curr, _last\n"; 64 - pr ctx " else begin\n"; 65 - pr ctx " lexbuf.Lexing.lex_curr_pos <- _curr;\n"; 66 - pr ctx " lexbuf.Lexing.lex_last_pos <- _last;\n"; 67 - pr ctx " lexbuf.Lexing.refill_buff lexbuf;\n"; 68 - pr ctx " let _curr = lexbuf.Lexing.lex_curr_pos in\n"; 69 - pr ctx " let _last = lexbuf.Lexing.lex_last_pos in\n"; 70 - pr ctx " let _len = lexbuf.Lexing.lex_buffer_len in\n"; 71 - pr ctx " let _buf = lexbuf.Lexing.lex_buffer in\n"; 72 - pr ctx " if _curr < _len then\n"; 73 - pr ctx " Char.code (Bytes.unsafe_get _buf _curr), _buf, _len, \ 74 - (_curr + 1), _last\n"; 75 - pr ctx " else\n"; 76 - pr ctx " __ocaml_lex_refill_buf lexbuf _buf _len _curr _last\n"; 77 - pr ctx " end\n"; 78 - pr ctx "\n"; 32 + if ctx.has_refill then 33 + pr ctx 34 + {| 35 + let rec __ocaml_lex_refill_buf lexbuf _buf _len _curr _last 36 + _last_action state k = 37 + if lexbuf.Lexing.lex_eof_reached then 38 + state lexbuf _last_action _buf _len _curr _last k 256 39 + else begin 40 + lexbuf.Lexing.lex_curr_pos <- _curr; 41 + lexbuf.Lexing.lex_last_pos <- _last; 42 + __ocaml_lex_refill 43 + (fun lexbuf -> 44 + let _curr = lexbuf.Lexing.lex_curr_pos in 45 + let _last = lexbuf.Lexing.lex_last_pos in 46 + let _len = lexbuf.Lexing.lex_buffer_len in 47 + let _buf = lexbuf.Lexing.lex_buffer in 48 + if _curr < _len then 49 + state lexbuf _last_action _buf _len (_curr + 1) _last k 50 + (Char.code (Bytes.unsafe_get _buf _curr)) 51 + else 52 + __ocaml_lex_refill_buf lexbuf _buf _len _curr _last 53 + _last_action 54 + state k 55 + ) 56 + lexbuf 79 57 end 58 + 59 + |} 60 + else 61 + pr ctx 62 + {| 63 + let rec __ocaml_lex_refill_buf lexbuf _buf _len _curr _last = 64 + if lexbuf.Lexing.lex_eof_reached then 65 + 256, _buf, _len, _curr, _last 66 + else begin 67 + lexbuf.Lexing.lex_curr_pos <- _curr; 68 + lexbuf.Lexing.lex_last_pos <- _last; 69 + lexbuf.Lexing.refill_buff lexbuf; 70 + let _curr = lexbuf.Lexing.lex_curr_pos in 71 + let _last = lexbuf.Lexing.lex_last_pos in 72 + let _len = lexbuf.Lexing.lex_buffer_len in 73 + let _buf = lexbuf.Lexing.lex_buffer in 74 + if _curr < _len then 75 + Char.code (Bytes.unsafe_get _buf _curr), _buf, _len, 76 + (_curr + 1), _last 77 + else 78 + __ocaml_lex_refill_buf lexbuf _buf _len _curr _last 79 + end 80 + 81 + |} 80 82 81 83 let output_memory_actions pref oc = function 82 84 | [] -> () ··· 116 118 output_memory_actions pref ctx.oc mems; 117 119 match r with 118 120 | Backtrack -> 119 - pr ctx "%slet _curr = _last in\n\ 120 - %slexbuf.Lexing.lex_curr_pos <- _curr;\n\ 121 - %slexbuf.Lexing.lex_last_pos <- _last;\n" 122 - pref pref pref; 121 + pr ctx 122 + {| 123 + %slet _curr = _last in 124 + %slexbuf.Lexing.lex_curr_pos <- _curr; 125 + %slexbuf.Lexing.lex_last_pos <- _last; 126 + |} pref pref pref; 123 127 if ctx.has_refill then 124 128 pr ctx "%sk lexbuf %s\n" pref (last_action ctx) 125 129 else ··· 196 200 let output_trans_body pref ctx = function 197 201 | Perform (n,mvs) -> 198 202 output_tag_actions pref ctx mvs ; 199 - pr ctx "%slexbuf.Lexing.lex_curr_pos <- _curr;\n" pref; 200 - pr ctx "%slexbuf.Lexing.lex_last_pos <- _last;\n" pref; 201 - pr ctx "%s%s%d\n" pref (if ctx.has_refill then "k lexbuf " else "") n 203 + pr ctx 204 + {| 205 + %slexbuf.Lexing.lex_curr_pos <- _curr; 206 + %slexbuf.Lexing.lex_last_pos <- _last; 207 + %s%s%d 208 + |} pref pref pref (if ctx.has_refill then "k lexbuf " else "") n 202 209 | Shift (trans, move) -> 203 210 let ctx = 204 211 match trans with ··· 222 229 "%slet state lexbuf _last_action _buf _len _curr _last k = function\n" 223 230 pref; 224 231 output_moves ctx pref move; 225 - pr ctx "%sin\n\ 226 - %sif _curr >= _len then\n\ 227 - %s __ocaml_lex_refill_buf lexbuf _buf _len _curr _last \ 228 - _last_action state k\n\ 229 - %selse\n\ 230 - %s state lexbuf _last_action _buf _len (_curr + 1) _last k\n\ 231 - %s (Char.code (Bytes.unsafe_get _buf _curr))\n" 232 - pref pref pref pref pref pref 232 + pr ctx 233 + {| 234 + %sin 235 + %sif _curr >= _len then 236 + %s __ocaml_lex_refill_buf lexbuf _buf _len _curr _last 237 + _last_action state k 238 + %selse 239 + %s state lexbuf _last_action _buf _len (_curr + 1) _last k 240 + %s (Char.code (Bytes.unsafe_get _buf _curr)) 241 + |} pref pref pref pref pref pref 233 242 end 234 243 else begin 235 - pr ctx "%slet next_char, _buf, _len, _curr, _last =\n\ 236 - %s if _curr >= _len then\n\ 237 - %s __ocaml_lex_refill_buf lexbuf _buf _len _curr _last\n\ 238 - %s else\n\ 239 - %s Char.code (Bytes.unsafe_get _buf _curr),\n\ 240 - %s _buf, _len, (_curr + 1), _last\n\ 241 - %sin\n\ 242 - %sbegin match next_char with\n" 243 - pref pref pref pref pref pref pref pref; 244 + pr ctx 245 + {| 246 + %slet next_char, _buf, _len, _curr, _last = 247 + %s if _curr >= _len then 248 + %s __ocaml_lex_refill_buf lexbuf _buf _len _curr _last 249 + %s else 250 + %s Char.code (Bytes.unsafe_get _buf _curr), 251 + %s _buf, _len, (_curr + 1), _last 252 + %sin 253 + %sbegin match next_char with 254 + |} pref pref pref pref pref pref pref pref; 244 255 output_moves ctx (pref ^ " ") move; 245 256 pr ctx "%send\n" pref 246 257 end ··· 269 280 if e.auto_mem_size > 0 then 270 281 pr ctx "%slexbuf.Lexing.lex_mem <- Array.make %d (-1);\n" 271 282 pref e.auto_mem_size; 272 - pr ctx "%slet _curr = lexbuf.Lexing.lex_curr_pos in\n" pref; 273 - pr ctx "%slet _last = _curr in\n" pref; 274 - pr ctx "%slet _len = lexbuf.Lexing.lex_buffer_len in\n" pref; 275 - pr ctx "%slet _buf = lexbuf.Lexing.lex_buffer in\n" pref; 276 - pr ctx "%slet _last_action = -1 in\n" pref; 277 - pr ctx "%slexbuf.Lexing.lex_start_pos <- _curr;\n" pref; 283 + pr ctx 284 + {| 285 + %slet _curr = lexbuf.Lexing.lex_curr_pos in 286 + %slet _last = _curr in 287 + %slet _len = lexbuf.Lexing.lex_buffer_len in 288 + %slet _buf = lexbuf.Lexing.lex_buffer in 289 + %slet _last_action = -1 in 290 + %slexbuf.Lexing.lex_start_pos <- _curr; 291 + |} pref pref pref pref pref pref; 278 292 output_memory_actions pref ctx.oc init_moves 279 293 280 294 let output_rules ic ctx pref tr e = 281 - pr ctx "%sbegin\n" pref; 282 - pr ctx "%s let _curr_p = lexbuf.Lexing.lex_curr_p in\n" pref; 283 - pr ctx "%s if _curr_p != Lexing.dummy_pos then begin\n" pref; 284 - pr ctx "%s lexbuf.Lexing.lex_start_p <- _curr_p;\n" pref; 285 - pr ctx "%s lexbuf.Lexing.lex_curr_p <-\n" pref; 286 - pr ctx "%s {_curr_p with Lexing.pos_cnum =\n" pref; 287 - pr ctx "%s lexbuf.Lexing.lex_abs_pos+lexbuf.Lexing.lex_curr_pos}\n" 288 - pref; 289 - pr ctx "%s end\n" pref; 290 - pr ctx "%send;\n" pref; 291 - pr ctx "%smatch __ocaml_lex_result with\n" pref; 295 + pr ctx 296 + {| 297 + %sbegin 298 + %s let _curr_p = lexbuf.Lexing.lex_curr_p in 299 + %s if _curr_p != Lexing.dummy_pos then begin 300 + %s lexbuf.Lexing.lex_start_p <- _curr_p; 301 + %s lexbuf.Lexing.lex_curr_p <- 302 + %s {_curr_p with Lexing.pos_cnum = 303 + %s lexbuf.Lexing.lex_abs_pos+lexbuf.Lexing.lex_curr_pos} 304 + %s end 305 + %send; 306 + %smatch __ocaml_lex_result with 307 + |} pref pref pref pref pref pref pref pref pref pref; 292 308 List.iter 293 309 (fun (num, env, loc) -> 294 310 pr ctx "%s| %d ->\n" pref num;
+76 -76
ocamldoc/odoc_latex_style.ml
··· 15 15 16 16 (** The content of the LaTeX style to generate when generating LaTeX code. *) 17 17 18 - let content ="\ 19 - \n%% Support macros for LaTeX documentation generated by ocamldoc.\ 20 - \n%% This file is in the public domain; do what you want with it.\ 21 - \n\ 22 - \n\\NeedsTeXFormat{LaTeX2e}\ 23 - \n\\ProvidesPackage{ocamldoc}\ 24 - \n [2001/12/04 v1.0 ocamldoc support]\ 25 - \n\ 26 - \n\\newenvironment{ocamldoccode}{%\ 27 - \n \\bgroup\ 28 - \n \\leftskip\\@totalleftmargin\ 29 - \n \\rightskip\\z@skip\ 30 - \n \\parindent\\z@\ 31 - \n \\parfillskip\\@flushglue\ 32 - \n \\parskip\\z@skip\ 33 - \n %\\noindent\ 34 - \n \\@@par\\smallskip\ 35 - \n \\@tempswafalse\ 36 - \n \\def\\par{%\ 37 - \n \\if@tempswa\ 38 - \n \\leavevmode\\null\\@@par\\penalty\\interlinepenalty\ 39 - \n \\else\ 40 - \n \\@tempswatrue\ 41 - \n \\ifhmode\\@@par\\penalty\\interlinepenalty\\fi\ 42 - \n \\fi}\ 43 - \n \\obeylines\ 44 - \n \\verbatim@font\ 45 - \n \\let\\org@prime~%\ 46 - \n \\@noligs\ 47 - \n \\let\\org@dospecials\\dospecials\ 48 - \n \\g@remfrom@specials{\\\\}\ 49 - \n \\g@remfrom@specials{\\{}\ 50 - \n \\g@remfrom@specials{\\}}\ 51 - \n \\let\\do\\@makeother\ 52 - \n \\dospecials\ 53 - \n \\let\\dospecials\\org@dospecials\ 54 - \n \\frenchspacing\\@vobeyspaces\ 55 - \n \\everypar \\expandafter{\\the\\everypar \\unpenalty}}\ 56 - \n{\\egroup\\par}\ 57 - \n\ 58 - \n\\def\\g@remfrom@specials#1{%\ 59 - \n \\def\\@new@specials{}\ 60 - \n \\def\\@remove##1{%\ 61 - \n \\ifx##1#1\\else\ 62 - \n \\g@addto@macro\\@new@specials{\\do ##1}\\fi}\ 63 - \n \\let\\do\\@remove\\dospecials\ 64 - \n \\let\\dospecials\\@new@specials\ 65 - \n }\ 66 - \n\ 67 - \n\\newenvironment{ocamldocdescription}\ 68 - \n{\\list{}{\\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax\\ignorespaces}\ 69 - \n{\\endlist\\medskip}\ 70 - \n\ 71 - \n\\newenvironment{ocamldoccomment}\ 72 - \n{\\list{}{\\leftmargin 2\\leftmargini \\rightmargin0pt \\topsep0pt}\\raggedright\\item\\noindent\\relax}\ 73 - \n{\\endlist}\ 74 - \n\ 75 - \n\\let \\ocamldocparagraph \\paragraph\ 76 - \n\\def \\paragraph #1{\\ocamldocparagraph {#1}\\noindent}\ 77 - \n\\let \\ocamldocsubparagraph \\subparagraph\ 78 - \n\\def \\subparagraph #1{\\ocamldocsubparagraph {#1}\\noindent}\ 79 - \n\ 80 - \n\\let\\ocamldocvspace\\vspace\ 81 - \n\ 82 - \n\\newenvironment{ocamldocindent}{\\list{}{}\\item\\relax}{\\endlist}\ 83 - \n\\newenvironment{ocamldocsigend}\ 84 - \n {\\noindent\\quad\\texttt{sig}\\ocamldocindent}\ 85 - \n {\\endocamldocindent\\vskip -\\lastskip\ 86 - \n \\noindent\\quad\\texttt{end}\\medskip}\ 87 - \n\\newenvironment{ocamldocobjectend}\ 88 - \n {\\noindent\\quad\\texttt{object}\\ocamldocindent}\ 89 - \n {\\endocamldocindent\\vskip -\\lastskip\ 90 - \n \\noindent\\quad\\texttt{end}\\medskip}\ 91 - \n\ 92 - \n\\endinput\ 93 - \n" 18 + let content = 19 + {|%% Support macros for LaTeX documentation generated by ocamldoc. 20 + %% This file is in the public domain; do what you want with it. 21 + 22 + \NeedsTeXFormat{LaTeX2e} 23 + \ProvidesPackage{ocamldoc} 24 + [2001/12/04 v1.0 ocamldoc support] 25 + 26 + \newenvironment{ocamldoccode}{% 27 + \bgroup 28 + \leftskip\@totalleftmargin 29 + \rightskip\z@skip 30 + \parindent\z@ 31 + \parfillskip\@flushglue 32 + \parskip\z@skip 33 + %\noindent 34 + \@@par\smallskip 35 + \@tempswafalse 36 + \def\par{% 37 + \if@tempswa 38 + \leavevmode\null\@@par\penalty\interlinepenalty 39 + \else 40 + \@tempswatrue 41 + \ifhmode\@@par\penalty\interlinepenalty\fi 42 + \fi} 43 + \obeylines 44 + \verbatim@font 45 + \let\org@prime~% 46 + \@noligs 47 + \let\org@dospecials\dospecials 48 + \g@remfrom@specials{\\} 49 + \g@remfrom@specials{\{} 50 + \g@remfrom@specials{\}} 51 + \let\do\@makeother 52 + \dospecials 53 + \let\dospecials\org@dospecials 54 + \frenchspacing\@vobeyspaces 55 + \everypar \expandafter{\the\everypar \unpenalty}} 56 + {\egroup\par} 57 + 58 + \def\g@remfrom@specials#1{% 59 + \def\@new@specials{} 60 + \def\@remove##1{% 61 + \ifx##1#1\else 62 + \g@addto@macro\@new@specials{\do ##1}\fi} 63 + \let\do\@remove\dospecials 64 + \let\dospecials\@new@specials 65 + } 66 + 67 + \newenvironment{ocamldocdescription} 68 + {\list{}{\rightmargin0pt \topsep0pt}\raggedright\item\noindent\relax\ignorespaces} 69 + {\endlist\medskip} 70 + 71 + \newenvironment{ocamldoccomment} 72 + {\list{}{\leftmargin 2\leftmargini \rightmargin0pt \topsep0pt}\raggedright\item\noindent\relax} 73 + {\endlist} 74 + 75 + \let \ocamldocparagraph \paragraph 76 + \def \paragraph #1{\ocamldocparagraph {#1}\noindent} 77 + \let \ocamldocsubparagraph \subparagraph 78 + \def \subparagraph #1{\ocamldocsubparagraph {#1}\noindent} 79 + 80 + \let\ocamldocvspace\vspace 81 + 82 + \newenvironment{ocamldocindent}{\list{}{}\item\relax}{\endlist} 83 + \newenvironment{ocamldocsigend} 84 + {\noindent\quad\texttt{sig}\ocamldocindent} 85 + {\endocamldocindent\vskip -\lastskip 86 + \noindent\quad\texttt{end}\medskip} 87 + \newenvironment{ocamldocobjectend} 88 + {\noindent\quad\texttt{object}\ocamldocindent} 89 + {\endocamldocindent\vskip -\lastskip 90 + \noindent\quad\texttt{end}\medskip} 91 + 92 + \endinput 93 + |}
+40 -40
tools/ocamlmklib.ml
··· 178 178 179 179 if !output_c = "" then output_c := !output 180 180 181 - let usage = "\ 182 - Usage: ocamlmklib [options] <.cmo|.cma|.cmx|.ml|.mli|.o|.a|.obj|.lib|\ 183 - .dll|.dylib files>\ 184 - \nOptions are:\ 185 - \n -args <file> Read additional newline-terminated command line arguments\ 186 - \n from <file>\ 187 - \n -args0 <file> Read additional null character terminated command line\ 188 - \n arguments from <file>\ 189 - \n -cclib <lib> C library passed to ocamlc -a or ocamlopt -a only\ 190 - \n -ccopt <opt> C option passed to ocamlc -a or ocamlopt -a only\ 191 - \n -custom Disable dynamic loading\ 192 - \n -g Build with debug information\ 193 - \n -dllpath <dir> Add <dir> to the run-time search path for DLLs\ 194 - \n -F<dir> Specify a framework directory (MacOSX)\ 195 - \n -framework <name> Use framework <name> (MacOSX)\ 196 - \n -help Print this help message and exit\ 197 - \n --help Same as -help\ 198 - \n -h Same as -help\ 199 - \n -I <dir> Add <dir> to the path searched for OCaml object files\ 200 - \n -failsafe fall back to static linking if DLL construction failed\ 201 - \n -ldopt <opt> C option passed to the shared linker only\ 202 - \n -linkall Build OCaml archive with link-all behavior\ 203 - \n -l<lib> Specify a dependent C library\ 204 - \n -L<dir> Add <dir> to the path searched for C libraries\ 205 - \n -ocamlc <cmd> Use <cmd> in place of \"ocamlc\"\ 206 - \n -ocamlcflags <opt> Pass <opt> to ocamlc\ 207 - \n -ocamlopt <cmd> Use <cmd> in place of \"ocamlopt\"\ 208 - \n -ocamloptflags <opt> Pass <opt> to ocamlopt\ 209 - \n -o <name> Generated OCaml library is named <name>.cma or <name>.cmxa\ 210 - \n -oc <name> Generated C library is named dll<name>.so or lib<name>.a\ 211 - \n -rpath <dir> Same as -dllpath <dir>\ 212 - \n -R<dir> Same as -rpath\ 213 - \n -verbose Print commands before executing them\ 214 - \n -v same as -verbose\ 215 - \n -version Print version and exit\ 216 - \n -vnum Print version number and exit\ 217 - \n -Wl,-rpath,<dir> Same as -dllpath <dir>\ 218 - \n -Wl,-rpath -Wl,<dir> Same as -dllpath <dir>\ 219 - \n -Wl,-R<dir> Same as -dllpath <dir>\ 220 - \n" 181 + let usage = 182 + {|Usage: ocamlmklib [options] <.cmo|.cma|.cmx|.ml|.mli|.o|.a|.obj|.lib| 183 + .dll|.dylib files> 184 + Options are: 185 + -args <file> Read additional newline-terminated command line arguments 186 + from <file> 187 + -args0 <file> Read additional null character terminated command line 188 + arguments from <file> 189 + -cclib <lib> C library passed to ocamlc -a or ocamlopt -a only 190 + -ccopt <opt> C option passed to ocamlc -a or ocamlopt -a only 191 + -custom Disable dynamic loading 192 + -g Build with debug information 193 + -dllpath <dir> Add <dir> to the run-time search path for DLLs 194 + -F<dir> Specify a framework directory (MacOSX) 195 + -framework <name> Use framework <name> (MacOSX) 196 + -help Print this help message and exit 197 + --help Same as -help 198 + -h Same as -help 199 + -I <dir> Add <dir> to the path searched for OCaml object files 200 + -failsafe fall back to static linking if DLL construction failed 201 + -ldopt <opt> C option passed to the shared linker only 202 + -linkall Build OCaml archive with link-all behavior 203 + -l<lib> Specify a dependent C library 204 + -L<dir> Add <dir> to the path searched for C libraries 205 + -ocamlc <cmd> Use <cmd> in place of "ocamlc" 206 + -ocamlcflags <opt> Pass <opt> to ocamlc 207 + -ocamlopt <cmd> Use <cmd> in place of "ocamlopt" 208 + -ocamloptflags <opt> Pass <opt> to ocamlopt 209 + -o <name> Generated OCaml library is named <name>.cma or <name>.cmxa 210 + -oc <name> Generated C library is named dll<name>.so or lib<name>.a 211 + -rpath <dir> Same as -dllpath <dir> 212 + -R<dir> Same as -rpath 213 + -verbose Print commands before executing them 214 + -v same as -verbose 215 + -version Print version and exit 216 + -vnum Print version number and exit 217 + -Wl,-rpath,<dir> Same as -dllpath <dir> 218 + -Wl,-rpath -Wl,<dir> Same as -dllpath <dir> 219 + -Wl,-R<dir> Same as -dllpath <dir> 220 + |} 221 221 222 222 let command cmd = 223 223 if !verbose then (print_string "+ "; print_string cmd; print_newline());