Can someone please help me interpret this? I am trying to install PLAN (a Packet Language for Active Networks). From my terminal on Mac OS X 10.8.4:
hntvlan569:~ Scott_Andrew_Collins$ cd OCamlPLAN
hntvlan569:OCamlPLAN Scott_Andrew_Collins$ cd plan-3.22/
hntvlan569:plan-3.22 Scott_Andrew_Collins$ make
ocamlc.opt -pp "camlp4o pa_ifdef.cmo -DPLAN_UNSAFE -DPLANPORT_TCP -DC_CRYPTO" -w s
-thread -I basis -I interpreter -I planet -I port -I util -I RIP -I resident -I
arp -I csum -I frag -I net -I reliable -I dns -I exp -I flow -I security -I
crypto -I builder -I snap -I apps -I common -c common/critical.ml -o
common/critical.cmo Camlp4: Uncaught exception: DynLoader.Error ("pa_ifdef.cmo",
"file not found in path")
Error while running external preprocessor
Command line: camlp4o pa_ifdef.cmo -DPLAN_UNSAFE -DPLANPORT_TCP -DC_CRYPTO
'common/critical.ml' >
/var/folders/pm/m53jrwbd10x0q701d7sw2zrw0000gp/T/ocamlpp9101d0
make: *** [common/critical.cmo] Error 2
You don't say the version of OCaml you're using.
The missing file pa_ifdef.cmo is (perhaps obviously) a preprocessing plugin for camlp4. Looking through the OCaml releases on my system, I see that it was present (maybe in an unsupported form) under OCaml 3.12 but is not there for OCaml 4 (unless I missed it somehow). I suspect support for this plugin has been dropped.
I've used this plugin myself; its purpose is roughly the same as cpp, the C preprocessor. I.e., it does conditional compilation based on tests of flags supplied at compile time.
In recent years I've been lucky enough to do without conditional compilation, so I don't know the latest status of this facility. But it wouldn't surprise me at all if there were a similar plugin that works with the most recent OCaml compiler. So, one solution would be to look into the recent camlp4 and find the replacement.
If the compile-time conditions aren't used widely in your sources you could also go through and remove them.
Another choice would be to compile with an older version of OCaml.