From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 01BD8BC6C for ; Mon, 25 Jun 2007 14:58:03 +0200 (CEST) Received: from out4.smtp.messagingengine.com (out4.smtp.messagingengine.com [66.111.4.28]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l5PCw36Y013718 for ; Mon, 25 Jun 2007 14:58:03 +0200 Received: from compute1.internal (compute1.internal [10.202.2.41]) by out1.messagingengine.com (Postfix) with ESMTP id 0EF9F1E22; Mon, 25 Jun 2007 08:58:03 -0400 (EDT) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by compute1.internal (MEProxy); Mon, 25 Jun 2007 08:58:03 -0400 X-Sasl-enc: 1LPCcduuyJjCA5HgtozO1vbni66XrRunhz5SZp0XaOrs 1182776282 Received: from [192.168.1.10] (AMontsouris-753-1-21-34.w83-202.abo.wanadoo.fr [83.202.133.34]) by mail.messagingengine.com (Postfix) with ESMTP id 333FA4418; Mon, 25 Jun 2007 08:58:02 -0400 (EDT) Date: Mon, 25 Jun 2007 14:57:54 +0200 (CEST) From: Martin Jambon X-X-Sender: martin@martin.ec.wink.com To: Jake Donham Cc: caml-list@inria.fr Subject: Re: [Caml-list] camlp4 -I and shared libs In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Miltered: at concorde with ID 467FBBDB.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ens-lyon:01 camlp:01 libs:01 camlp:01 ocamlc:01 ocamlfind:01 ocamlfind:01 ocamlc:01 pcre:01 cmo:01 -package:01 pcre:01 -linkpkg:01 -package:01 -linkpkg:01 On Sun, 24 Jun 2007, Jake Donham wrote: > Hi, > > Should the -I flag to camlp4 add the directory to the shared library > search path, as it does with ocamlc? > > I was trying to use Micmatch (very nice by the way) with ocamlfind, as > follows: (thanks) > ocamlfind ocamlc -syntax camlp4o -ppopt pa_micmatch_pcre.cmo > -package micmatch_pcre [...] It seems you forgot either -c or -linkpkg. The following should work. ocamlfind ocamlc -c -syntax camlp4o -package micmatch_pcre toto.ml ocamlfind ocamlc -o toto -syntax camlp4o -package micmatch_pcre -linkpkg toto.ml > but I get an error that it cannot find dllpcre.so. What is happening > is that ocamlfind has pcre-ocaml as a dependency of micmatch_pcre > (even though this is needed only at runtime, not at preprocessing > time), so it adds pcre.cma and -I $SITE_LIB/pcre to the camlp4 command > line. Now pcre.cma needs dllpcre.so, which is in $SITE_LIB/pcre, but > this path is not added to the shared library search path. (It's easy > to work around this by constructing a camlp4 call directly, since > pcre.cma is not needed.) > > This is with 3.09.3 but a glance at the 3.10.0 source suggests it has > the same behavior. It's a one-line change (call Dll.add_path after > Dynlink.init in camlp4/odyl/odyl_main.ml or > camlp4/CamlP4/Struct/DynLoader.ml) to fix it. Note that the current version of micmatch does not work under ocaml/camlp4 3.10.0. I recommend using 3.09.3 until the new camlp4 is more mature. Martin