caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: proff@iq.org (Julian Assange)
To: Jeremy Fincher <tweedgeezer@hotmail.com>
Cc: caml-list@pauillac.inria.fr
Subject: Re: [Caml-list] Building O'Caml projects properly.
Date: Sun, 30 Sep 2001 07:48:08 +1000 (EST)	[thread overview]
Message-ID: <20010929214808.EB0EA259EF@suburbia.net> (raw)
In-Reply-To: <F117nyxGxTWlEqLjd5j0000e00a@hotmail.com>

> I'm not very experienced with make, so I've been using Markus Mottl's 
> OcamlMakefile in my projects so far.  In one of my projects, I use source 
> files from two other small libraries I've written; at present, I just have a 
> whole lot of files in my SOURCES and a bunch of symlinks to the proper files 
> in the proper directories.  However, I'd really like to be able to improve 
> my build process, and I think a good way to do that is to isolate in 
> directories the other libraries I've written.

Just factor out the common code into a seperate directory and use
OcamlMakefile to create a library out of it, for example:

kosha$ ls -F
CVS/            OcamlMakefile   erlang/         prog/
Makefile        doc/            lib/            sql/

kosha$ cat Makefile
SUBDIRS= lib prog/smtp_test prog/kosha

.PHONY: all
all:
        for dir in $(SUBDIRS); do (cd $$dir && $(MAKE)); done

.PHONY: clean
clean:
        for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) clean); done


kosha$ cd lib
kosha/lib$ cat Makefile
#Note the two targets library dependencies for "all:"
OCAMLMAKEFILE=../OcamlMakefile

SOURCES=utils.ml mylist.ml mylist_test.ml io.ml
RESULT=klib
THREADS=yes

all:    debug-code-library native-code-library

LIBS=unix str netstring

-include $(OCAMLMAKEFILE)


kosha$ cd prog/kosha
kosha/prog/kosha$ cat Makefile
#Note well the two {LIB,INC}DIRS lines, and "klib" on the LIBS line
OCAMLMAKEFILE=../../OcamlMakefile

ocamlnet=ocnMisc.ml tokenize.ml mailmessage.ml

LIBDIRS += ../../lib
INCDIRS += ../../lib

SOURCES=$(ocamlnet) opt.ml match.ml db.ml canary.ml mailtype.ml\
        spamdb.ml mail.ml esmtp_parser.mly esmtp_lexer.mll\
        smtp_server.ml main.ml

RESULT=kosha
THREADS=yes

LIBS=unix str dbm pq netstring threads klib

all: dc

-include $(OCAMLMAKEFILE)

--
 Julian Assange        |If you want to build a ship, don't drum up people
                       |together to collect wood or assign them tasks and
 proff@iq.org          |work, but rather teach them to long for the endless
 proff@gnu.ai.mit.edu  |immensity of the sea. -- Antoine de Saint Exupery
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


  reply	other threads:[~2001-09-30 20:40 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-09-29 20:31 Jeremy Fincher
2001-09-29 21:48 ` Julian Assange [this message]
2001-09-29 22:08 ` Markus Mottl
2001-10-01  7:04 Jeremy Fincher
2001-10-01  8:07 ` Markus Mottl
2001-10-01 11:46 Jeremy Fincher
2001-10-01 12:57 ` Markus Mottl
2001-10-01 13:08   ` Hideo Bannai
2001-10-01 13:47     ` Markus Mottl
2001-10-01 15:17       ` Julian Assange
2001-10-01 14:02 Jeremy Fincher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20010929214808.EB0EA259EF@suburbia.net \
    --to=proff@iq.org \
    --cc=caml-list@pauillac.inria.fr \
    --cc=tweedgeezer@hotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).