summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1996-11-07 11:04:12 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1996-11-07 11:04:12 +0000
commitab737837060a6c45917a7cd37f0e7c57eac813f2 (patch)
tree54eba3f2fd033e804fab5971dd68f58d8fc470e4
parent48092f6ea28370be487cbb6d233d4693db4c4d01 (diff)
Ajout de utils/ccomp
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1175 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--Makefile.Mac2
-rw-r--r--Makefile.Mac.depend4
-rw-r--r--Makefile.nt2
-rw-r--r--utils/ccomp.ml40
-rw-r--r--utils/ccomp.mli17
5 files changed, 63 insertions, 2 deletions
diff --git a/Makefile.Mac b/Makefile.Mac
index d2c723a8a..a5a3725ff 100644
--- a/Makefile.Mac
+++ b/Makefile.Mac
@@ -16,7 +16,7 @@ INCLUDES = -I :utils: -I :parsing: -I :typing: -I :bytecomp: ¶
-I :driver: -I :toplevel:
UTILS = :utils:misc.cmo :utils:tbl.cmo :utils:config.cmo ¶
- :utils:clflags.cmo :utils:terminfo.cmo
+ :utils:clflags.cmo :utils:terminfo.cmo :utils:ccomp.cmo
PARSING = :parsing:location.cmo :parsing:longident.cmo :parsing:pstream.cmo ¶
:parsing:parser.cmo :parsing:lexer.cmo :parsing:parse.cmo
diff --git a/Makefile.Mac.depend b/Makefile.Mac.depend
index 2583ecbec..69a1dc259 100644
--- a/Makefile.Mac.depend
+++ b/Makefile.Mac.depend
@@ -1,3 +1,7 @@
+:utils:ccomp.cmoÄ :utils:clflags.cmo :utils:config.cmi :utils:misc.cmi ¶
+ :utils:ccomp.cmi
+:utils:ccomp.cmxÄ :utils:clflags.cmx :utils:config.cmx :utils:misc.cmx ¶
+ :utils:ccomp.cmi
:utils:config.cmoÄ :utils:config.cmi
:utils:config.cmxÄ :utils:config.cmi
:utils:misc.cmoÄ :utils:misc.cmi
diff --git a/Makefile.nt b/Makefile.nt
index 4de8b6db3..af2ec9c6a 100644
--- a/Makefile.nt
+++ b/Makefile.nt
@@ -17,7 +17,7 @@ CAMLRUN=byterun\ocamlrun
INCLUDES=-I utils -I parsing -I typing -I bytecomp -I asmcomp -I driver -I toplevel
UTILS=utils\misc.cmo utils\tbl.cmo utils\config.cmo \
- utils\clflags.cmo utils\terminfo.cmo
+ utils\clflags.cmo utils\terminfo.cmo utils\ccomp.cmo
PARSING=parsing\location.cmo parsing\longident.cmo \
parsing\pstream.cmo parsing\parser.cmo parsing\lexer.cmo parsing\parse.cmo
diff --git a/utils/ccomp.ml b/utils/ccomp.ml
new file mode 100644
index 000000000..90681670a
--- /dev/null
+++ b/utils/ccomp.ml
@@ -0,0 +1,40 @@
+(***********************************************************************)
+(* *)
+(* Objective Caml *)
+(* *)
+(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
+(* *)
+(* Copyright 1996 Institut National de Recherche en Informatique et *)
+(* Automatique. Distributed only by permission. *)
+(* *)
+(***********************************************************************)
+
+(* $Id$ *)
+
+(* Compiling C files and building C libraries *)
+
+let compile_file name =
+ Sys.command
+ (Printf.sprintf
+ "%s -c %s %s -I%s %s"
+ Config.bytecomp_c_compiler
+ (String.concat " " (List.rev !Clflags.ccopts))
+ (String.concat " "
+ (List.map (fun dir -> "-I" ^ dir)
+ (List.rev !Clflags.include_dirs)))
+ Config.standard_library
+ name)
+
+let create_archive archive file_list =
+ Misc.remove_file archive;
+ match Config.system with
+ "win32" ->
+ Sys.command(Printf.sprintf "lib /nologo /debugtype:cv /out:%s %s"
+ archive (String.concat " " file_list))
+ | _ ->
+ let r1 =
+ Sys.command(Printf.sprintf "ar rc %s %s"
+ archive (String.concat " " file_list)) in
+ if r1 <> 0 or String.length Config.ranlib = 0
+ then r1
+ else Sys.command(Config.ranlib ^ " " ^ archive)
diff --git a/utils/ccomp.mli b/utils/ccomp.mli
new file mode 100644
index 000000000..c0eb6f6a4
--- /dev/null
+++ b/utils/ccomp.mli
@@ -0,0 +1,17 @@
+(***********************************************************************)
+(* *)
+(* Objective Caml *)
+(* *)
+(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
+(* *)
+(* Copyright 1996 Institut National de Recherche en Informatique et *)
+(* Automatique. Distributed only by permission. *)
+(* *)
+(***********************************************************************)
+
+(* $Id$ *)
+
+(* Compiling C files and building C libraries *)
+
+val compile_file: string -> int
+val create_archive: string -> string list -> int