-
Notifications
You must be signed in to change notification settings - Fork 8
/
genProject.ml
105 lines (90 loc) · 3.39 KB
/
genProject.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
(*******************************************************************)
(* *)
(* wxOCaml *)
(* *)
(* Fabrice LE FESSANT *)
(* *)
(* Copyright 2013, INRIA/OCamlPro. *)
(* Licence LGPL v3.0 with linking exception. *)
(* *)
(*******************************************************************)
open GenMisc
open GenTypes
let generated_ocaml_sources = ref []
let generated_cplusplus_sources = ref []
let generated_cplusplus_headers = ref []
let add_ocaml_source basename =
generated_ocaml_sources := basename :: !generated_ocaml_sources;
basename
let add_cplusplus_source basename =
generated_cplusplus_sources := basename :: !generated_cplusplus_sources;
basename
let add_cplusplus_header basename =
generated_cplusplus_headers := basename :: !generated_cplusplus_headers;
basename
let generate_project_files (cpp_dirname, ml_dirname) =
let ocp_oc = open_out (Filename.concat ml_dirname "build.ocpgen") in
Printf.fprintf ocp_oc.oc "GENERATED_OCAML_SOURCES = [\n";
List.iter (fun file ->
Printf.fprintf ocp_oc.oc " %S\n" file
) !generated_ocaml_sources;
Printf.fprintf ocp_oc.oc " ]\n";
close_out ocp_oc;
let ocp_oc = open_out (Filename.concat cpp_dirname "Makefile.project") in
fprintf ocp_oc "GENERATED_CPP_SOURCES = \\\n";
List.iter (fun file ->
fprintf ocp_oc " %s \\\n" file
) !generated_cplusplus_sources;
fprintf ocp_oc "\n";
fprintf ocp_oc "GENERATED_CPP_HEADERS = \\\n";
List.iter (fun file ->
fprintf ocp_oc " %s \\\n" file
) !generated_cplusplus_headers;
fprintf ocp_oc "\n";
close_out ocp_oc;
let ocp_oc = open_out (Filename.concat cpp_dirname "build.ocpgen") in
fprintf ocp_oc "GENERATED_CPP_SOURCES = [\n";
List.iter (fun file ->
fprintf ocp_oc " %S \n" file
) !generated_cplusplus_sources;
fprintf ocp_oc "]\n";
fprintf ocp_oc "GENERATED_CPP_HEADERS = [\n";
List.iter (fun file ->
fprintf ocp_oc " %S \n" file
) !generated_cplusplus_headers;
fprintf ocp_oc "]\n";
close_out ocp_oc;
let ocp_oc = open_out (Filename.concat ml_dirname "Makefile.project") in
fprintf ocp_oc "GENERATED_OCAML_SOURCES = \\\n";
List.iter (fun file ->
fprintf ocp_oc " %s \\\n" file
) !generated_ocaml_sources;
fprintf ocp_oc " %s \\\n" "wxEVT.ml";
fprintf ocp_oc " %s \\\n" "wxDefs.ml";
fprintf ocp_oc "\n";
close_out ocp_oc;
let ocp_oc = open_out (Filename.concat cpp_dirname ".gitignore") in
List.iter (fun file ->
fprintf ocp_oc "%s\n" file
) (
!generated_cplusplus_sources @
!generated_cplusplus_headers @
[
"Makefile.project";
"wxOCamlConfig.h";
"build.ocpgen";
".gitignore"
]);
close_out ocp_oc;
let ocp_oc = open_out (Filename.concat ml_dirname ".gitignore") in
List.iter (fun file ->
fprintf ocp_oc "%s\n" file
) (
!generated_ocaml_sources @ [
"wxEVT.ml";
"wxDefs.ml";
"Makefile.project";
"build.ocpgen";
".gitignore"
]);
close_out ocp_oc;