caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] pa_macro to substitute a constant?
@ 2004-08-27 16:32 Richard Jones
  2004-08-27 18:24 ` Michel Mauny
  0 siblings, 1 reply; 2+ messages in thread
From: Richard Jones @ 2004-08-27 16:32 UTC (permalink / raw)
  To: caml-list

[-- Attachment #1: Type: text/plain, Size: 1073 bytes --]


How can I use pa_macro to substitute in a constant into a program?

A real example:

Makefile ------------------------------------------------------------

PACKAGE = foo
VERSION = 1.0.0

version.cmo: version.ml Makefile
	ocamlc -I +camlp4 -pp 'camlp4o pa_macro.cmo -DPACKAGE="$(PACKAGE)" -DVERSION="$(VERSION)"' $< -o $@

version.ml ----------------------------------------------------------

let package = PACKAGE
let version = VERSION

---------------------------------------------------------------------

Needless to say this example doesn't work, and looking at the thin
documentation for pa_macro, I'm not even sure it's possible.  Is it?

Rich.

-- 
Richard Jones. http://www.annexia.org/ http://www.j-london.com/
Merjis Ltd. http://www.merjis.com/ - improving website return on investment
MONOLITH is an advanced framework for writing web applications in C, easier
than using Perl & Java, much faster and smaller, reusable widget-based arch,
database-backed, discussion, chat, calendaring:
http://www.annexia.org/freeware/monolith/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] pa_macro to substitute a constant?
  2004-08-27 16:32 [Caml-list] pa_macro to substitute a constant? Richard Jones
@ 2004-08-27 18:24 ` Michel Mauny
  0 siblings, 0 replies; 2+ messages in thread
From: Michel Mauny @ 2004-08-27 18:24 UTC (permalink / raw)
  To: Richard Jones; +Cc: caml-list

Richard Jones wrote/écrivait (Fri, Aug 27, 2004 at 05:32:32PM +0100):

> How can I use pa_macro to substitute in a constant into a program?

 > ocamlc -I +camlp4 -pp 'camlp4o pa_macro.cmo -D "PACKAGE="$(PACKAGE)"

> Needless to say this example doesn't work, and looking at the thin
> documentation for pa_macro, I'm not even sure it's possible.  Is it?

I'm afraid not. The "-D" option to pa_macro is followed by an UIDENT,
there is no room for a value for it: in pa_macro.ml, there are two
lines saying

    Pcaml.add_option "-D" (Arg.String (define None))
      "<string> Define for IFDEF instruction."

and the None means "no associated value", here.

However, allowing -D "UIDENT=something" looks like a feature wish I
could try to implement for a future OCaml major release.

-- Michel Mauny

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-08-27 18:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-08-27 16:32 [Caml-list] pa_macro to substitute a constant? Richard Jones
2004-08-27 18:24 ` Michel Mauny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).