From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 9572A7EE25 for ; Wed, 30 Oct 2013 07:55:26 +0100 (CET) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of michipili@gmail.com) identity=pra; client-ip=74.125.83.44; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="michipili@gmail.com"; x-sender="michipili@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of michipili@gmail.com designates 74.125.83.44 as permitted sender) identity=mailfrom; client-ip=74.125.83.44; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="michipili@gmail.com"; x-sender="michipili@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-ee0-f44.google.com) identity=helo; client-ip=74.125.83.44; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="michipili@gmail.com"; x-sender="postmaster@mail-ee0-f44.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoEDACOscFJKfVMslGdsb2JhbABZgz/AFoEeFg4BAQEBBwsLCRIqgiUBAQVAARscAQEDDAYFCw0JEwMPCQMCAQIBEREBBQEcBg0BBwKHcAEDDwQBCJwHjFeDCoQ3ChknDWSJAQEBBAyPQweELAOPNYhVkB1BhFI X-IPAS-Result: AoEDACOscFJKfVMslGdsb2JhbABZgz/AFoEeFg4BAQEBBwsLCRIqgiUBAQVAARscAQEDDAYFCw0JEwMPCQMCAQIBEREBBQEcBg0BBwKHcAEDDwQBCJwHjFeDCoQ3ChknDWSJAQEBBAyPQweELAOPNYhVkB1BhFI X-IronPort-AV: E=Sophos;i="4.93,599,1378850400"; d="scan'208";a="39607035" Received: from mail-ee0-f44.google.com ([74.125.83.44]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 30 Oct 2013 07:55:13 +0100 Received: by mail-ee0-f44.google.com with SMTP id c4so391943eek.31 for ; Tue, 29 Oct 2013 23:55:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=/VJ2d7tMUeQunkEPzPtliSGytTfT7yI/19XJpeGBFDc=; b=JwU/xVSTWWrn5kpzNDPtgAGQww/jLhJVXi/OPEn2HOUtmXNZ4QuyBN7Vv7PmRYrnG/ jnXgNtviLxAvswOuoBkPIbYZ4XpcidRJE60XIsBrtcFZewGSe/Ttr6K3cMVFWA4ItdF1 /Auu7iqi9YMNd0n8epvIVJlWqNsJvT24kR7EXN3ooYVLREnH72UB8/GrdT4YnnFqTfS0 MFm78AfwmuULDpWeM3BjYxDIr194NVwUw4bZeU78ldFd6gJrnfwS3IDgI3zUyhV/svn8 94JxCi7n27rGHRLg4IeNOZAIoDrfFUcmx+xtKEM5adAIx98ZudJKTisQMQG8RrU1ZFua mGHg== X-Received: by 10.14.3.196 with SMTP id 44mr97376eeh.148.1383116125805; Tue, 29 Oct 2013 23:55:25 -0700 (PDT) Received: from llea.celt.neu (xdsl-89-0-87-17.netcologne.de. [89.0.87.17]) by mx.google.com with ESMTPSA id a6sm79694303eei.10.2013.10.29.23.55.24 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 29 Oct 2013 23:55:25 -0700 (PDT) Message-ID: <5270AD5B.5040406@gmail.com> Date: Wed, 30 Oct 2013 07:55:23 +0100 From: Michael User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Firefox/24.0 SeaMonkey/2.21 MIME-Version: 1.0 To: Francois Berenger CC: caml-list@inria.fr References: <52702C8C.3040900@gmail.com> <52706214.8090504@riken.jp> In-Reply-To: <52706214.8090504@riken.jp> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Caml-list] A useful Makefile collection for OCaml projects Francois Berenger wrote: > Do you know obuild? > https://github.com/vincenthz/obuild There is a lot of other systems that can be used to drive the build of OCaml projects: obuild, ocamlbuild, omake, OMakefile and probably others. I find it valuable to use a Makefile-based approach, because: - It is not specific to OCaml, so I can use the same tool to drive the development cycle of a heterogeneous project. (I can, and I do!) - It is easy to extend, because it focuses on workflows (targets and prerequisites are elements of simple workflows). - It can be tweaked so I can include any custom step I want in my workflow, because it is based on the UNIX shell. So for instance, if I want to do plop plop fizz fizz after the build step, I only need to add do-build-after: do-plop-plop-fizz-fizz do-plop-plop-fizz-fizz: : Shell commands that plop plop fizz fizz at the end of the Makefile. And it does not involve a special feature of the tool but instead, it is just the normal way to do things with make. Also, as I started in 2005, I selected the BSD flavour of make because it has a canonical clear, short and to the point documentation (Adam de Boor's tutorial), an equally good reference (the man page) and has a large literature corpus (BSD's build systems) I could take inspiration from. (I actually started with GNU make and switched because its documentation fails to be so useful as BSD's, despite its length, and because it is hard to find useful examples is the sea of automake-generated files.) Regards, Michael