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=AWL 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 7D29BBC69 for ; Mon, 6 Aug 2007 01:19:42 +0200 (CEST) Received: from ipmail01.adl2.internode.on.net (ipmail01.adl2.internode.on.net [203.16.214.140]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l75NJdsS013078 for ; Mon, 6 Aug 2007 01:19:41 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAHj0tUZ5LGJp/2dsb2JhbAAN X-IronPort-AV: E=Sophos;i="4.19,223,1183300200"; d="scan'208";a="167478040" Received: from ppp121-44-98-105.lns10.syd6.internode.on.net (HELO [192.168.1.201]) ([121.44.98.105]) by ipmail01.adl2.internode.on.net with ESMTP; 06 Aug 2007 08:49:38 +0930 Subject: ocamlbuild From: skaller To: caml-list@yquem.inria.fr Content-Type: text/plain Date: Mon, 06 Aug 2007 09:19:37 +1000 Message-Id: <1186355977.6523.55.camel@rosella.wigram> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 46B65B0B.002 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ocaml:01 cygwin:01 ocamlc:01 parser:01 ocaml:01 ocamlc:01 ubuntu:98 sourceforge:01 unix:01 unix:01 executables:01 parentheses:01 filenames:02 filenames:02 native:03 Does Ocamlbuild work on Windows *transparently*? To do this, it must read filenames written with / in it, but use filenames with \ replacing the /. I'd say this is mandatory, so the same build control file will work on all platforms. Then you need to document that Unix filenames must be used, even on Windows. Note: although *Ocaml* basenames cannot have spaces in them, the directories that contain them can. So Ocamlbuild must be sure to quote all filenames, in case they have spaces. This includes allowing quotes in the input specs. Unix file systems allow spaces in filenames too, and many modern Desktops will have 'folders' with spaces in (if a 'doze or fruit user gets Ubuntu in their office). I warn this is a serious PITA if you're building Windows *Native* code, but hosting the build on Cygwin, because executables have to use Unix filenames but arguments have to use Windows filenames, so you have to carefully keep track of which tool is running what. It helps if standard tools translate internally (eg ocamlc). However any build script has to allow for foreign tools (eg Felix uses Dypgen as a parser). A serious nasty here is if you have to use silly names on windows for the tools, eg building Felix: C:\Program Files (x86)\Ocaml\ocamlc and here the spaces, parentheses and C: drive letter are mandatory and must be handled correctly as a native filename. On Windows, Ocaml isn't necessarily even in the path -- because on Windows XP64 I have multiple Ocaml versions and I need to *specify* which one to use, no accidents from PATH please! (Well actually, we do use the PATH but it leads to a mess). -- John Skaller Felix, successor to C++: http://felix.sf.net