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.8 required=5.0 tests=AWL,SPF_FAIL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 6DAEDBC37 for ; Tue, 18 Aug 2009 12:20:42 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmgDADkdikpQRFuwWWdsb2JhbACafgEWFb07hBkF X-IronPort-AV: E=Sophos;i="4.43,401,1246831200"; d="scan'208";a="44790367" Received: from furbychan.cocan.org ([80.68.91.176]) by mail4-smtp-sop.national.inria.fr with ESMTP; 18 Aug 2009 12:20:42 +0200 Received: from rich by furbychan.cocan.org with local (Exim 4.63) (envelope-from ) id 1MdLo1-0001wZ-6O; Tue, 18 Aug 2009 11:20:41 +0100 Date: Tue, 18 Aug 2009 11:20:41 +0100 To: Edgar Friendly Cc: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Conditional compilation Message-ID: <20090818102041.GA4353@annexia.org> References: <4A8A0B3C.10504@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A8A0B3C.10504@gmail.com> User-Agent: Mutt/1.5.13 (2006-08-11) From: Richard Jones X-Spam: no; 0.00; compilation:01 ifdef:01 foo:01 foo:01 autoconf:01 subst:01 makefile:01 ifdef:01 flags:01 flags:01 autoconf:01 ocaml:01 ocaml:01 2009:98 edgar:98 On Mon, Aug 17, 2009 at 10:00:28PM -0400, Edgar Friendly wrote: > Is there a better way to do this? The path I'm following is looking > very byzantine compared to C's [-DFOO] + [#ifdef FOO]. You can just use autoconf's ordinary features: eg: AC_ARG_ENABLE([foo], [AS_HELP_STRING([--enable-foo], [enable foo @<:@default=no@:>@])], [], [enable_foo=no]) # Define an automake conditional: AM_CONDITIONAL([FOO],[test "x$enable_foo" = "xyes"]) # Define an autoconf substitution: if test "x$enable_foo" = "xyes"; then FOO=1 else FOO=0 fi AC_SUBST(FOO) And then in Makefile.am you can use: ifdef FOO FLAGS = -DFOO=1 else FLAGS = endif and in any autoconf-substituted files you can use: @FOO@ We use autoconf/automake with OCaml code all the time, and it works fine. There are also OCaml macros available: http://forge.ocamlcore.org/projects/ocaml-autoconf/ http://git.ocamlcore.org/cgi-bin/gitweb.cgi?p=ocaml-autoconf/ocaml-autoconf.git;a=summary Rich. -- Richard Jones Red Hat