(* Output a bytecode executable as a C file *)
-let link_bytecode_as_c tolink outfile with_main =
+let link_bytecode_as_c tolink outfile =
let outchan = open_out outfile in
try
(* The bytecode *)
(* The table of primitives *)
Symtable.output_primitive_table outchan;
(* The entry point *)
- if with_main then begin
- output_string outchan "\n
-int main(int argc, char **argv)
-{
- caml_startup_code(caml_code, sizeof(caml_code),
- caml_data, sizeof(caml_data),
- caml_sections, sizeof(caml_sections),
- argv);
- return 0; /* not reached */
-}\n"
- end else begin
- output_string outchan "\n
+ output_string outchan "\n
void caml_startup(char ** argv)
{
caml_startup_code(caml_code, sizeof(caml_code),
caml_data, sizeof(caml_data),
caml_sections, sizeof(caml_sections),
argv);
-}\n"
- end;
+}\n";
close_out outchan
with x ->
close_out outchan;
Clflags.dllibs := !lib_dllibs @ !Clflags.dllibs; (* put user's DLLs first *)
if not !Clflags.custom_runtime then
link_bytecode tolink output_name true
- else if not !Clflags.make_runtime then
- let c_file = Filename.temp_file "camlobj" ".c" in
- try
- link_bytecode_as_c tolink c_file true;
- let exec_name = fix_exec_name output_name in
- if build_custom_runtime c_file exec_name <> 0
- then raise(Error Custom_runtime);
- with x ->
- remove_file c_file;
- raise x
else if not !Clflags.output_c_object then begin
let bytecode_name = Filename.temp_file "camlcode" "" in
let prim_name = Filename.temp_file "camlprim" ".c" in
Filename.chop_suffix output_name Config.ext_obj ^ ".c" in
if Sys.file_exists c_file then raise(Error(File_exists c_file));
try
- link_bytecode_as_c tolink c_file false;
+ link_bytecode_as_c tolink c_file;
if Ccomp.compile_file c_file <> 0
then raise(Error Custom_runtime);
remove_file c_file