@ -869,6 +869,9 @@ let header_of_module m = match m with
| Module " Iostream " -> " stdio "
| _ -> String . uncapitalize_ascii ( modul_to_string m )
(* Header files included in all generated XXX_types.h headers. *)
let common_types_c_headers = [ " stdbool " ; " assert " ; " pervasives " ]
let global_file_header name prog =
let dependencies = ModulSet . elements ( Obc_utils . Deps . deps_program prog ) in
let dependencies = List . map header_of_module dependencies in
@ -891,7 +894,7 @@ let global_file_header name prog =
let ( cty_defs , cty_decls ) = List . split cdefs_and_cdecls in
let types_h = ( filename_types ^ " .h " ,
Cheader ( " stdbool " :: " assert " :: " pervasives " :: dependencies_types ,
Cheader ( common_types_c_headers @ dependencies_types ,
List . concat cty_decls ) ) in
let types_c = ( filename_types ^ " .c " , Csource ( concat cty_defs ) ) in
@ -909,9 +912,11 @@ let interface_header name i =
let cdefs_and_cdecls = List . map cdefs_and_cdecls_of_interface_decl i . i_desc in
let ( cty_defs , cty_decls ) = List . split cdefs_and_cdecls in
let types_h = ( name ^ " .h " ,
Cheader ( " stdbool " :: " assert " :: " pervasives " :: dependencies ,
let filename_types = name ^ " _types " in
let types_h = ( filename_types ^ " .h " ,
Cheader ( common_types_c_headers @ dependencies ,
List . concat cty_decls ) ) in
let types_c = ( name ^ " .c " , Csource ( concat cty_defs ) ) in
[ types_h ; types_c ]
let types_c = ( filename_types ^ " .c " , Csource ( concat cty_defs ) ) in
let header = ( name ^ " .h " , Cheader ( [ filename_types ] , [] ) ) in
let source = ( name ^ " .c " , Csource [] ) in
[ header ; source ; types_h ; types_c ]