caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Mark Hayden <hayden@cs.cornell.edu>
To: caml-list@pauillac.inria.fr
Subject: Re: Ocamlopt might output files in another directory!
Date: Wed, 11 Dec 1996 12:19:44 -0500	[thread overview]
Message-ID: <199612111719.MAA16014@verdandi.cs.cornell.edu> (raw)
In-Reply-To: Your message of "Tue, 10 Dec 1996 09:07:43 +0100." <199612100807.JAA03588@soleil.serma.cea.fr>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3388 bytes --]


We have this problem as well.  We structure my source files into multiple directories
and want the .cm* files to be put somewhere else.  Our solution is to use a separate
ML program that executes ocamlc/opt and then moves the output files to a destination
directory.  This program essentially implements the -o option found in C
compilers. It would be much nicer if the Ocaml compilers supported such an option
directly.

--Mark

>Hello All,
>
>May I suggest that Ocaml could have the possibility to write all it
>machine or system dependent files elsewhere?
>
>I'm working in a multiplatform environnement. (We have Suns/SunOS5,
>HPs/HPUX10, PC/Linux2 on the same network).
>
>So, in C or related langages, I do like to put object and executable
>files elsewhere. I'm using GNU make and just have to write in my
>GNUmakefile
>
>
>
>    ## the machine suffix
>    ifndef MACHSUFFIX
>    export MACHSUFFIX := $(shell $machsuffix)
>    endif 
>
>    ## the top source directory
>    ifndef TOPDIR
>    export TOPDIR := $(shell pwd)
>    endif 
>
>    ## MACHSUFFIX is "x86-linux" on PC/Linux, "sparc-sunos5" on
>    ##    Sparc/SunOS5, "hppa-hpux10" on "HP/PA/HPUX10
>
>    OBJDIR := $(HOME)/bin.$(MACHSUFFIX)/Objs
>
>    vpath %.o $(OBJDIR)
>
>    $(OBJDIR)/%.o:  %.c
>	    $(COMPILE.c) $< $(OUTPUT_OPTION) 
>
>    sed_depend_objcmd:= 1,$$s:\([a-zA-Z0-9_]*\.o\):\$$(OBJDIR)/\1:
>    sed_depend_inccmd:= 1,$$s:\($(TOPDIR)\):\$$(TOPDIR):
>    define sed_depend
>     $(SED) -e '$(sed_depend_inccmd)' -e '$(sed_depend_objcmd)'
>    endef 
>
>    CSRCFILES = foo.c bar.c
>    COBJFILES := $(patsubst %.c, $(OBJDIR)/%.o, $(CSRCFILES))
>
>    DEPEND:=_depend.$(MACHSUFFIX).mk
>
>    -include $(DEPEND)
>
>    depend: 
>	    date "+ Making depend at %D %T %n"
>	    date "+## $(DEPEND) file generated on %e %b %Y at %R" > $(DEPEND)
>	    $(CC) -MM $(CFLAGS) $(CPPFLAGS)  $(CSRCFILES) | $(sed_depend)  >> $(DEPEND)
>
>
>    $(OBJDIR)/prog: $(COBJFILES)
>	$(LINK.c) -o $@ $< $(LOADIBES)
>
>
>So with this trick I always do make in the source directory, and,
>depending of the machine, it build object and executable file in the
>system dependent $(OBJDIR).
>
>I would like to use a similar trick with ocamlopt. But this requires
>that all system dependent files, include *.cmx and *.o, go elsewhere. -the -o
>ocamlopt flags does not do the trick)
>
>So I wish a -objdir flag to the ocaml driver which gives the output
>directory!
>
>More generally, I think that a compiler should be able to compile in a
>directory in which it just have read, not write, permissions.
>
>
>I believe these changes are easy to fix -in
>ocaml-1.03/driver/{compile,compileopt}.ml- I might even do them if
>some people (besides myself) are interested!
>
>
>
>N.B. Any opinions expressed here are solely mine, and not of my organization.
>N.B. Les opinions exprimees ici me sont personnelles et n engagent pas le CEA.
>
>
>----------------------------------------------------------------------
>Basile STARYNKEVITCH   ----  Commissariat à l Energie Atomique 
>DRN/DMT/SERMA * CEA/Saclay bat.470 * 91191 GIF/YVETTE CEDEX * France
>fax: (33) 01,69.08.85.68; phone: 01,69.08.40.66; home: 01,46.65.45.53
>email: Basile . Starynkevitch @ cea . fr  (but remove white space)
>I speak french, english, russian. Je parle français, anglais, russe.
>----------------------------------------------------------------------
>
>
>





      reply	other threads:[~1996-12-11 17:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-12-10  8:07 Basile STARYNKEVITCH
1996-12-11 17:19 ` Mark Hayden [this message]

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=199612111719.MAA16014@verdandi.cs.cornell.edu \
    --to=hayden@cs.cornell.edu \
    --cc=caml-list@pauillac.inria.fr \
    /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).