From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 4A044BB9A for ; Mon, 14 Nov 2005 07:38:29 +0100 (CET) Received: from zproxy.gmail.com (zproxy.gmail.com [64.233.162.192]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id jAE6cSFX017687 for ; Mon, 14 Nov 2005 07:38:28 +0100 Received: by zproxy.gmail.com with SMTP id x3so1248714nzd for ; Sun, 13 Nov 2005 22:38:28 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:subject:cc:in-reply-to:mime-version:content-type:references; b=XyJ2RH4yQPw4TIGRTaTRp6KHU+J53yNlTPpxncsU0xnixVjOSutk7h08yNvApEL4I3LRaDroHx1C7lHdSicxb/lx/R7rbWWSvmDIvwusMq52PugfcpslH5Vyy30vOhLgX5STpmU3CkMObgd4rQ72DrLae5KRl1bJQrZ0Y+mUBFo= Received: by 10.64.210.17 with SMTP id i17mr2399681qbg; Sun, 13 Nov 2005 22:38:27 -0800 (PST) Received: by 10.64.10.5 with HTTP; Sun, 13 Nov 2005 22:38:27 -0800 (PST) Message-ID: Date: Mon, 14 Nov 2005 19:38:27 +1300 From: Jonathan Roewen Subject: Re: [Caml-list] Building a custom compiler environment Cc: caml-list@yquem.inria.fr In-Reply-To: <1131880149.31023.25.camel@gate.lan.gerd-stolpmann.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_16377_23869211.1131950307881" References: <1131880149.31023.25.camel@gate.lan.gerd-stolpmann.de> X-Miltered: at nez-perce with ID 437830E4.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 compiler:01 compiler:01 ocamlc:01 ocaml:01 ocaml:01 makefile:01 ocamlc:01 rocquencourt:01 makefile:01 config:01 stdlib:01 compflags:01 -warn-error:01 linkflags:01 X-Attachments: name="Makefile" name="Makefile" X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_BY_IP autolearn=disabled version=3.0.3 ------=_Part_16377_23869211.1131950307881 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline > No, End_of_file is a predefined exception. Actually, you must not define > it, the compiler does it for you. That's what I thought; so I can't figure out why it's missing. Could it be how I compiled ocamlc? I removed all the bootstrap stuff, and used system ocaml 3.09 compiler tools to build the custom ocaml environment. I'll attach the modified makefile, so it's clear what I've done. And, if this is the case, then what are the correct steps to building ocamlc without requiring a bootstrap cycle? Jonathan ------=_Part_16377_23869211.1131950307881 Content-Type: text/plain; name=Makefile; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="Makefile" ######################################################################### # # # Objective Caml # # # # Xavier Leroy, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999 Institut National de Recherche en Informatique et # # en Automatique. All rights reserved. This file is distributed # # under the terms of the Q Public License version 1.0. # # # ######################################################################### # $Id: Makefile,v 1.199 2005/09/24 16:20:36 xleroy Exp $ # The main Makefile include config/Makefile include stdlib/StdlibModules CAMLC=ocamlc COMPFLAGS=-warn-error A $(INCLUDES) LINKFLAGS= CAMLYACC=ocamlyacc YACCFLAGS=-v CAMLLEX=ocamllex CAMLDEP=ocamldep DEPFLAGS=$(INCLUDES) CAMLRUN=ocamlrun SHELL=/bin/sh MKDIR=mkdir -p INCLUDES=-I utils -I parsing -I typing -I bytecomp -I driver \ -I toplevel UTILS=utils/misc.cmo utils/tbl.cmo utils/config.cmo \ utils/clflags.cmo utils/terminfo.cmo utils/ccomp.cmo utils/warnings.cmo \ utils/consistbl.cmo PARSING=parsing/linenum.cmo parsing/location.cmo parsing/longident.cmo \ parsing/syntaxerr.cmo parsing/parser.cmo \ parsing/lexer.cmo parsing/parse.cmo parsing/printast.cmo TYPING=typing/unused_var.cmo typing/ident.cmo typing/path.cmo \ typing/primitive.cmo typing/types.cmo \ typing/btype.cmo typing/oprint.cmo \ typing/subst.cmo typing/predef.cmo \ typing/datarepr.cmo typing/env.cmo \ typing/typedtree.cmo typing/ctype.cmo \ typing/printtyp.cmo typing/includeclass.cmo \ typing/mtype.cmo typing/includecore.cmo \ typing/includemod.cmo typing/parmatch.cmo \ typing/typetexp.cmo typing/stypes.cmo typing/typecore.cmo \ typing/typedecl.cmo typing/typeclass.cmo \ typing/typemod.cmo COMP=bytecomp/lambda.cmo bytecomp/printlambda.cmo \ bytecomp/typeopt.cmo bytecomp/switch.cmo bytecomp/matching.cmo \ bytecomp/translobj.cmo bytecomp/translcore.cmo \ bytecomp/translclass.cmo bytecomp/translmod.cmo \ bytecomp/simplif.cmo bytecomp/runtimedef.cmo BYTECOMP=bytecomp/meta.cmo bytecomp/instruct.cmo bytecomp/bytegen.cmo \ bytecomp/printinstr.cmo bytecomp/opcodes.cmo bytecomp/emitcode.cmo \ bytecomp/bytesections.cmo bytecomp/dll.cmo bytecomp/symtable.cmo \ bytecomp/bytelink.cmo bytecomp/bytelibrarian.cmo bytecomp/bytepackager.cmo DRIVER=driver/pparse.cmo driver/errors.cmo driver/compile.cmo \ driver/main_args.cmo driver/main.cmo TOPLEVEL=driver/pparse.cmo driver/errors.cmo driver/compile.cmo \ toplevel/genprintval.cmo toplevel/toploop.cmo \ toplevel/trace.cmo toplevel/topdirs.cmo toplevel/topmain.cmo TOPLEVELLIB=toplevel/toplevellib.cma TOPLEVELSTART=toplevel/topstart.cmo COMPOBJS=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(BYTECOMP) $(DRIVER) TOPLIB=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(BYTECOMP) $(TOPLEVEL) TOPOBJS=$(TOPLEVELLIB) $(TOPLEVELSTART) EXPUNGEOBJS=utils/misc.cmo utils/tbl.cmo \ utils/config.cmo utils/clflags.cmo \ typing/ident.cmo typing/path.cmo typing/types.cmo typing/btype.cmo \ typing/predef.cmo bytecomp/runtimedef.cmo bytecomp/bytesections.cmo \ bytecomp/dll.cmo bytecomp/meta.cmo bytecomp/symtable.cmo toplevel/expunge.cmo PERVASIVES=$(STDLIB_MODULES) outcometree topdirs toploop all: runtime ocamlc ocamltools library otherlibraries LIBFILES=stdlib.cma std_exit.cmo *.cmi camlheader # Installation install: FORCE if test -d $(BINDIR); then : ; else $(MKDIR) $(BINDIR); fi if test -d $(LIBDIR); then : ; else $(MKDIR) $(LIBDIR); fi if test -d $(STUBLIBDIR); then : ; else $(MKDIR) $(STUBLIBDIR); fi cd $(LIBDIR); rm -f dllbigarray.so dlllabltk.so dllnums.so \ dllthreads.so dllunix.so dllgraphics.so dllmldbm.so dllstr.so \ dlltkanim.so cd byterun; $(MAKE) install cp ocamlc $(BINDIR)/ocamlc$(EXE) cd stdlib; $(MAKE) install cp toplevel/toplevellib.cma $(LIBDIR)/toplevellib.cma #cp expunge $(LIBDIR)/expunge$(EXE) cp typing/outcometree.cmi typing/outcometree.mli $(LIBDIR) #cp toplevel/topstart.cmo $(LIBDIR) cp toplevel/toploop.cmi toplevel/topdirs.cmi toplevel/topmain.cmi $(LIBDIR) cd tools; $(MAKE) install for i in $(OTHERLIBRARIES); do \ (cd otherlibs/$$i; $(MAKE) install) || exit $$?; \ done cp config/Makefile $(LIBDIR)/Makefile.config clean:: partialclean # The compiler ocamlc: $(COMPOBJS) $(CAMLC) $(LINKFLAGS) -o ocamlc $(COMPOBJS) partialclean:: rm -f ocamlc # The toplevel toplevel/toplevellib.cma: $(TOPLIB) $(CAMLC) -a -o $@ $(TOPLIB) partialclean:: rm -f toplevel/toplevellib.cma # The configuration file utils/config.ml: utils/config.mlp config/Makefile @rm -f utils/config.ml sed -e 's|%%LIBDIR%%|$(LIBDIR)|' \ -e 's|%%BYTERUN%%|$(BINDIR)/ocamlrun|' \ -e 's|%%CCOMPTYPE%%|cc|' \ -e 's|%%BYTECC%%|$(BYTECC) $(BYTECCCOMPOPTS) $(SHAREDCCCOMPOPTS)|' \ -e 's|%%BYTELINK%%|$(BYTECC) $(BYTECCLINKOPTS)|' \ -e 's|%%NATIVECC%%|$(NATIVECC) $(NATIVECCCOMPOPTS)|' \ -e 's|%%NATIVELINK%%|$(NATIVECC) $(NATIVECCLINKOPTS)|' \ -e 's|%%PARTIALLD%%|ld -r $(NATIVECCLINKOPTS)|' \ -e 's|%%PACKLD%%|ld -r $(NATIVECCLINKOPTS)|' \ -e 's|%%BYTECCLIBS%%|$(BYTECCLIBS)|' \ -e 's|%%NATIVECCLIBS%%|$(NATIVECCLIBS)|' \ -e 's|%%RANLIBCMD%%|$(RANLIBCMD)|' \ -e 's|%%CC_PROFILE%%|$(CC_PROFILE)|' \ -e 's|%%ARCH%%|$(ARCH)|' \ -e 's|%%MODEL%%|$(MODEL)|' \ -e 's|%%SYSTEM%%|$(SYSTEM)|' \ -e 's|%%EXT_OBJ%%|.o|' \ -e 's|%%EXT_ASM%%|.s|' \ -e 's|%%EXT_LIB%%|.a|' \ -e 's|%%EXT_DLL%%|.so|' \ -e 's|%%SYSTHREAD_SUPPORT%%|$(SYSTHREAD_SUPPORT)|' \ utils/config.mlp > utils/config.ml @chmod -w utils/config.ml partialclean:: rm -f utils/config.ml beforedepend:: utils/config.ml # The parser parsing/parser.mli parsing/parser.ml: parsing/parser.mly $(CAMLYACC) $(YACCFLAGS) parsing/parser.mly partialclean:: rm -f parsing/parser.mli parsing/parser.ml parsing/parser.output beforedepend:: parsing/parser.mli parsing/parser.ml # The lexer parsing/lexer.ml: parsing/lexer.mll $(CAMLLEX) parsing/lexer.mll partialclean:: rm -f parsing/lexer.ml beforedepend:: parsing/lexer.ml # The auxiliary lexer for counting line numbers parsing/linenum.ml: parsing/linenum.mll $(CAMLLEX) parsing/linenum.mll partialclean:: rm -f parsing/linenum.ml beforedepend:: parsing/linenum.ml # The numeric opcodes bytecomp/opcodes.ml: byterun/instruct.h sed -n -e '/^enum/p' -e 's/,//g' -e '/^ /p' byterun/instruct.h | \ awk -f tools/make-opcodes > bytecomp/opcodes.ml partialclean:: rm -f bytecomp/opcodes.ml beforedepend:: bytecomp/opcodes.ml # The predefined exceptions and primitives byterun/primitives: cd byterun; $(MAKE) primitives bytecomp/runtimedef.ml: byterun/primitives byterun/fail.h (echo 'let builtin_exceptions = [|'; \ sed -n -e 's|.*/\* \("[A-Za-z_]*"\) \*/$$| \1;|p' byterun/fail.h | \ sed -e '$$s/;$$//'; \ echo '|]'; \ echo 'let builtin_primitives = [|'; \ sed -e 's/.*/ "&";/' -e '$$s/;$$//' byterun/primitives; \ echo '|]') > bytecomp/runtimedef.ml partialclean:: rm -f bytecomp/runtimedef.ml beforedepend:: bytecomp/runtimedef.ml #do we need tools/cvt_emit?? tools/cvt_emit: tools/cvt_emit.mll cd tools; \ $(MAKE) CAMLC="../$(CAMLRUN) ../boot/ocamlc -I ../stdlib" cvt_emit # The "expunge" utility expunge: $(EXPUNGEOBJS) $(CAMLC) $(LINKFLAGS) -o expunge $(EXPUNGEOBJS) partialclean:: rm -f expunge # The runtime system for the bytecode compiler runtime: cd byterun; $(MAKE) all if test -f stdlib/libcamlrun.a; then :; else \ ln -s ../byterun/libcamlrun.a stdlib/libcamlrun.a; fi clean:: cd byterun; $(MAKE) clean rm -f stdlib/libcamlrun.a rm -f stdlib/caml alldepend:: cd byterun; $(MAKE) depend # The library library: ocamlc cd stdlib; $(MAKE) all partialclean:: cd stdlib; $(MAKE) clean alldepend:: cd stdlib; $(MAKE) depend # Tools ocamltools: ocamlc cd tools; $(MAKE) all partialclean:: cd tools; $(MAKE) clean alldepend:: cd tools; $(MAKE) depend # The extra libraries otherlibraries: for i in $(OTHERLIBRARIES); do \ (cd otherlibs/$$i; $(MAKE) RUNTIME=$(RUNTIME) all) || exit $$?; \ done partialclean:: for i in $(OTHERLIBRARIES); do \ (cd otherlibs/$$i; $(MAKE) partialclean); \ done clean:: for i in $(OTHERLIBRARIES); do (cd otherlibs/$$i; $(MAKE) clean); done alldepend:: for i in $(OTHERLIBRARIES); do (cd otherlibs/$$i; $(MAKE) depend); done # Check that the stack limit is reasonable. checkstack: @if $(BYTECC) -o tools/checkstack tools/checkstack.c; \ then tools/checkstack; \ else :; \ fi @rm -f tools/checkstack # Default rules .SUFFIXES: .ml .mli .cmo .cmi .cmx .ml.cmo: $(CAMLC) $(COMPFLAGS) -c $< .mli.cmi: $(CAMLC) $(COMPFLAGS) -c $< .ml.cmx: $(CAMLOPT) $(COMPFLAGS) -c $< partialclean:: rm -f utils/*.cm[iox] utils/*.[so] utils/*~ rm -f parsing/*.cm[iox] parsing/*.[so] parsing/*~ rm -f typing/*.cm[iox] typing/*.[so] typing/*~ rm -f bytecomp/*.cm[iox] bytecomp/*.[so] bytecomp/*~ rm -f asmcomp/*.cm[iox] asmcomp/*.[so] asmcomp/*~ rm -f driver/*.cm[iox] driver/*.[so] driver/*~ rm -f toplevel/*.cm[iox] toplevel/*.[so] toplevel/*~ rm -f tools/*.cm[iox] tools/*.[so] tools/*~ rm -f *~ depend: beforedepend (for d in utils parsing typing bytecomp asmcomp driver toplevel; \ do $(CAMLDEP) $(DEPFLAGS) $$d/*.mli $$d/*.ml; \ done) > .depend alldepend:: depend FORCE: include .depend ------=_Part_16377_23869211.1131950307881--