[Pkg-ocaml-maint-commits] [cppo] 02/11: Imported Upstream version 1.2.0
Stéphane Glondu
glondu at moszumanska.debian.org
Tue Jan 26 14:56:28 UTC 2016
This is an automated email from the git hooks/post-receive script.
glondu pushed a commit to branch master
in repository cppo.
commit 6f86be106ca36cb397c38c28baf3a924af1ffcf1
Author: Stephane Glondu <steph at glondu.net>
Date: Tue Jan 26 15:48:00 2016 +0100
Imported Upstream version 1.2.0
---
Makefile | 4 ++--
README.md | 10 +++++++++-
cppo_main.ml | 6 +++---
cppo_parser.mly | 14 +++++++++++---
ocamlbuild_plugin/ocamlbuild_cppo.ml | 24 ++++++++++++++----------
test.cppo | 8 ++++----
6 files changed, 43 insertions(+), 23 deletions(-)
diff --git a/Makefile b/Makefile
index 467d5c6..f311d89 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ export BINDIR
-BEST := opt
+BEST != if ocamlopt 2>/dev/null; then echo .native; else echo .byte; fi
NATDYNLINK ?= $(shell if [ -f `ocamlc -where`/dynlink.cmxa ]; then \
echo YES; \
else \
@@ -33,7 +33,7 @@ NATDYNLINK ?= $(shell if [ -f `ocamlc -where`/dynlink.cmxa ]; then \
OCAMLBUILD_IMPL := ocamlbuild_cppo.cma
-ifeq "${BEST}" "opt"
+ifeq "${BEST}" ".native"
OCAMLBUILD_IMPL += ocamlbuild_cppo.cmxa ocamlbuild_cppo.a
ifeq "${NATDYNLINK}" "YES"
OCAMLBUILD_IMPL += ocamlbuild_cppo.cmxs
diff --git a/README.md b/README.md
index 862864b..1290779 100644
--- a/README.md
+++ b/README.md
@@ -420,7 +420,8 @@ to produce`.ml` files. The following tags are available:
* If `foo` is a file, it adds `foo` as a dependency and apply `-I
parent(foo)`.
* `cppo_V(NAME:VERSION)` ≡ `-V NAME:VERSION`
-* `cppo_V_OCAML` ≡ `-V OCAML:VERSION`, where `VERSION` is the version of OCaml that ocamlbuild uses.
+* `cppo_V_OCAML` ≡ `-V OCAML:VERSION`, where `VERSION`
+ is the version of OCaml that ocamlbuild uses.
Detailed command-line usage and options
---------------------------------------
@@ -488,3 +489,10 @@ Options:
-help Display this list of options
--help Display this list of options
```
+
+
+Contributing
+------------
+
+See our contribution guidelines at
+https://github.com/mjambon/documents/blob/master/how-to-contribute.md
diff --git a/cppo_main.ml b/cppo_main.ml
index 26a56f6..22792b3 100644
--- a/cppo_main.ml
+++ b/cppo_main.ml
@@ -20,7 +20,7 @@ let semver_re = Str.regexp "\
\\.\\([0-9]+\\)\
\\(-\\([^+]*\\)\\)?\
\\(\\+\\(.*\\)\\)?\
-$"
+\r?$"
let parse_semver s =
if not (Str.string_match semver_re s 0) then
@@ -43,7 +43,7 @@ let opt_define var o =
let parse_version_spec s =
let error () =
- failwith (sprintf "Invalid version specification: %s" s)
+ failwith (sprintf "Invalid version specification: %S" s)
in
let prefix, version_full =
try
@@ -82,7 +82,7 @@ let main () =
"-D", Arg.String (fun s -> header := ("#define " ^ s ^ "\n") :: !header),
"DEF
Equivalent of interpreting '#define DEF' before processing the
- input";
+ input, e.g. `cppo -D 'VERSION \"1.2.3\"'` (no equal sign)";
"-U", Arg.String (fun s -> header := ("#undef " ^ s ^ "\n") :: !header),
"IDENT
diff --git a/cppo_parser.mly b/cppo_parser.mly
index efb41a5..1131499 100644
--- a/cppo_parser.mly
+++ b/cppo_parser.mly
@@ -190,9 +190,17 @@ args1:
;
def_args1:
- IDENT COMMA def_args1
- { (snd $1) :: $3 }
-| IDENT { [ snd $1 ] }
+| arg_blank IDENT COMMA def_args1
+ { (snd $2) :: $4 }
+| arg_blank IDENT { [ snd $2 ] }
+;
+
+arg_blank:
+| TEXT arg_blank { let loc, is_space, s = $1 in
+ if not is_space then
+ error loc "Invalid argument list"
+ }
+| { () }
;
test:
diff --git a/ocamlbuild_plugin/ocamlbuild_cppo.ml b/ocamlbuild_plugin/ocamlbuild_cppo.ml
index 91f7b2f..153d071 100644
--- a/ocamlbuild_plugin/ocamlbuild_cppo.ml
+++ b/ocamlbuild_plugin/ocamlbuild_cppo.ml
@@ -3,17 +3,21 @@ open Ocamlbuild_plugin
let dispatcher = function
| After_rules -> begin
- let dep = "%(name).cppo.ml" in
- let prod1 = "%(name: <*> and not <*.cppo>).ml" in
- let prod2 = "%(name: <**/*> and not <**/*.cppo>).ml" in
- let f prod env _build =
- let dep = env dep in
- let prod = env prod in
- let tags = tags_of_pathname prod ++ "cppo" in
- Cmd (S[A "cppo"; T tags; S [A "-o"; P prod]; P dep ])
+ let cppo_rules ext =
+ let dep = "%(name).cppo"-.-ext
+ and prod1 = "%(name: <*> and not <*.cppo>)"-.-ext
+ and prod2 = "%(name: <**/*> and not <**/*.cppo>)"-.-ext in
+ let cppo_rule prod env _build =
+ let dep = env dep in
+ let prod = env prod in
+ let tags = tags_of_pathname prod ++ "cppo" in
+ Cmd (S[A "cppo"; T tags; S [A "-o"; P prod]; P dep ])
+ in
+ rule ("cppo: *.cppo."-.-ext^" -> *."-.-ext) ~dep ~prod:prod1 (cppo_rule prod1);
+ rule ("cppo: **/*.cppo."-.-ext^" -> **/*."-.-ext) ~dep ~prod:prod2 (cppo_rule prod2);
in
- rule "cppo1" ~dep ~prod:prod1 (f prod1) ;
- rule "cppo2" ~dep ~prod:prod2 (f prod2) ;
+ List.iter cppo_rules ["ml"; "mli"];
+
pflag ["cppo"] "cppo_D" (fun s -> S [A "-D"; A s]) ;
pflag ["cppo"] "cppo_U" (fun s -> S [A "-U"; A s]) ;
pflag ["cppo"] "cppo_I" (fun s ->
diff --git a/test.cppo b/test.cppo
index 39a08ba..6379377 100644
--- a/test.cppo
+++ b/test.cppo
@@ -42,7 +42,7 @@ failure
456 *)
test_multiline
-#define test_args(x,y) x y
+#define test_args(x, y) x y
test_args("a","b")
#define test_argc(x) x y
@@ -73,7 +73,7 @@ obj
' (* lone single quote *)
#define one 1
-one� is not 1 �
+one is not 1
#undef x
#define x #
@@ -133,11 +133,11 @@ end
DEBUG("test1 %i %i" x y)
DEBUG("test2 %i" x)
-#include "testdata/incl.cppo"
+#include "test/incl.cppo"
# 123456
#789 "test"
-#include "testdata/incl.cppo"
+#include "test/incl.cppo"
#define debug(s) Printf.eprintf "%S %i: %s\n%!" __FILE__ __LINE__ s
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/cppo.git
More information about the Pkg-ocaml-maint-commits
mailing list