Browse thread
Conditional compilation
- Edgar Friendly
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Edgar Friendly <thelema314@g...> |
| Subject: | Conditional compilation |
I'm working on a project that has significant build infrastructure using autoconf, make and ocamlbuild. I want to have a reasonably simple trigger, such as a command-line argument to autoconf. The result of activating this trigger would be to drastically reduce what gets compiled -- many files wouldn't need to be compiled, and many sections of files should be commented out. The project already uses optcomp for some conditional compilation based on ocaml version. I've learned that optcomp creates a new camlp4 command-line flag, [-let], which accepts a "var=value" pair and sets that for use in [#if var = value] triggers. I've also dug into ocamlbuild and found a way to set this flag within the [-pp] argument to ocamlc. I've hit some hurdles, and wonder how to overcome them: 1) optcomp is sometimes used as a standalone camlp4 executable (-pp 'build/optcomp/optcomp_o.byte') - in this mode, it seems to accept only the name of a file as input, and doesn't take the [-let] argument. What is the difference between this and "-pp 'camlp4oof build/optcomp/pa_optcomp.cmo'"? 2) I'm using the identifier "AAA" for my trigger, and I can use ocamlbuild's tags system to set "-let AAA=true" when the tag "AAA" is set - is there any way to do "-let AAA=false" when tag "AAA" is unset? Optcomp gives a compilation error on bound identifiers, so I have to set it in both cases. Is there a better way to do this? The path I'm following is looking very byzantine compared to C's [-DFOO] + [#ifdef FOO]. E