- 23 May, 2003 1 commit
-
-
stolz authored
Two more Solaris fixes: - ln -s -f doesn't really work (but doesn't matter) - 'echo -n' neither necessary nor portable (please merge)
-
- 31 Mar, 2003 1 commit
-
-
simonmar authored
Comments only Submitted by: Urban Boquist <boquist@crt.se>
-
- 20 Feb, 2003 2 commits
- 19 Feb, 2003 1 commit
-
-
sof authored
odir-ify prelude/PrimOp.o dependency
-
- 05 Feb, 2003 2 commits
- 17 Jan, 2003 1 commit
-
-
sof authored
mingw: use cp's -u flag when copying over hi-boot files (or not, as the case might be now.)
-
- 10 Jan, 2003 1 commit
-
-
simonmar authored
Only add -package readline if $(GhcLibsWithReadline) == YES This isn't really the correct solution, since we actually want to know whether the bootstrapping compiler has readline, not this one, but since the most common bootstrapping compiler is going to be the stage1 compiler in this tree it's a good guess that GhcLibsWithReadline is correct.
-
- 12 Dec, 2002 1 commit
-
-
simonmar authored
Fix some issues with hschooks.c, and hopefully clear up (or at least document) the mess regarding which versions of Rts.h and RtsFlags.h are included.
-
- 20 Nov, 2002 1 commit
-
-
simonmar authored
Back out rev. 1.233
-
- 19 Nov, 2002 3 commits
- 18 Nov, 2002 2 commits
-
-
simonpj authored
----------------------------- Perl and control-M's on Win32 ----------------------------- If the Cygwin 'perl' processes a file produced by a Mingw program (such as ghc -M), so that the latter has DOS-style line termination, the Cygwin 'perl' gets confused and adds extra control-M's. This affects a) mkdependC, which processes the .depend file produced by ghc -M b) the perl post-procssing step in ghc/compiler/Makefile, which makes .depend-1 etc from .depend-BASE The solution is to sprinkle few binmode( HANDLE ); statements around in the perl scripts. I think they don't affect the Unix version.
-
simonmar authored
Use -fvia-C when compiling with 4.08.x
-
- 14 Nov, 2002 2 commits
- 13 Nov, 2002 2 commits
-
-
simonmar authored
Add -f to ln -s command
-
simonmar authored
Add support for gcc-style "make bootstrap" which will build the stage 1, 2 and 3 compilers in the same build tree. The idea is to simplify building a stage 2 or 3 compiler (now you only need one build tree), and also speed up the build: there's no need to compile the libraries more than once, because the stage 1 libraries are used for stages 2 & 3. In ghc/compiler, the objects and .hi files are now placed in subdirectories: ghc/compiler/stage1 has the stage1 objects, ghc/compiler/stage2 has the stage2 objects, etc. The story from the top-level (fptools) is this: make all works as before (i.e. builds ghc (stage 1), libraries, etc.) make stage2 builds the stage 2 compiler make stage3 builds the stage 3 compiler make bootstrap does 'make all' followed by 'make stage2' make bootstrap3 does 'make all' followed by 'make stage2; make stage3' In ghc/compiler, the story is now: make all works as before (i.e. builds stage 1 only) make boot generate build dirs and dependencies for stage 1 make boot stage=N generate build dirs and dependencies for stage N make stageN make stage=N builds stage N compiler. Run it in-place using ./stageN/ghc-inplace. I haven't decided what to do about 'make install' yet, and this still needs documenting in the Building Guide. Also, you still get the same $(GhcHcOpts) for each stage.
-
- 09 Oct, 2002 1 commit
-
-
simonpj authored
----------------------------------- Lots more Template Haskell stuff ----------------------------------- At last! Top-level declaration splices work! Syntax is $(f x) not "splice (f x)" as in the paper. Lots jiggling around, particularly with the top-level plumbining. Note the new data type HsDecls.HsGroup.
-
- 16 Sep, 2002 1 commit
-
-
simonmar authored
Instead of trying to convert $(ALL_DIRS) into a colon-separated list of directories to pass to the compiler with -i, put each directory in its own -i option. This is more robust, the previous method was sensitive to extra spaces in the ALL_DIRS list. (should fix the current nightly breakage on the HEAD)
-
- 13 Sep, 2002 1 commit
-
-
simonpj authored
-------------------------------------- Make Template Haskell into the HEAD -------------------------------------- This massive commit transfers to the HEAD all the stuff that Simon and Tim have been doing on Template Haskell. The meta-haskell-branch is no more! WARNING: make sure that you * Update your links if you are using link trees. Some modules have been added, some have gone away. * Do 'make clean' in all library trees. The interface file format has changed, and you can get strange panics (sadly) if GHC tries to read old interface files: e.g. ghc-5.05: panic! (the `impossible' happened, GHC version 5.05): Binary.get(TyClDecl): ForeignType * You need to recompile the rts too; Linker.c has changed However the libraries are almost unaltered; just a tiny change in Base, and to the exports in Prelude. NOTE: so far as TH itself is concerned, expression splices work fine, but declaration splices are not complete. --------------- The main change --------------- The main structural change: renaming and typechecking have to be interleaved, because we can't rename stuff after a declaration splice until after we've typechecked the stuff before (and the splice itself). * Combine the renamer and typecheker monads into one (TcRnMonad, TcRnTypes) These two replace TcMonad and RnMonad * Give them a single 'driver' (TcRnDriver). This driver replaces TcModule.lhs and Rename.lhs * The haskell-src library package has a module Language/Haskell/THSyntax which defines the Haskell data type seen by the TH programmer. * New modules: hsSyn/Convert.hs converts THSyntax -> HsSyn deSugar/DsMeta.hs converts HsSyn -> THSyntax * New module typecheck/TcSplice type-checks Template Haskell splices. ------------- Linking stuff ------------- * ByteCodeLink has been split into ByteCodeLink (which links) ByteCodeAsm (which assembles) * New module ghci/ObjLink is the object-code linker. * compMan/CmLink is removed entirely (was out of place) Ditto CmTypes (which was tiny) * Linker.c initialises the linker when it is first used (no need to call initLinker any more). Template Haskell makes it harder to know when and whether to initialise the linker. ------------------------------------- Gathering the LIE in the type checker ------------------------------------- * Instead of explicitly gathering constraints in the LIE tcExpr :: RenamedExpr -> TcM (TypecheckedExpr, LIE) we now dump the constraints into a mutable varabiable carried by the monad, so we get tcExpr :: RenamedExpr -> TcM TypecheckedExpr Much less clutter in the code, and more efficient too. (Originally suggested by Mark Shields.) ----------------- Remove "SysNames" ----------------- Because the renamer and the type checker were entirely separate, we had to carry some rather tiresome implicit binders (or "SysNames") along inside some of the HsDecl data structures. They were both tiresome and fragile. Now that the typechecker and renamer are more intimately coupled, we can eliminate SysNames (well, mostly... default methods still carry something similar). ------------- Clean up HsPat ------------- One big clean up is this: instead of having two HsPat types (InPat and OutPat), they are now combined into one. This is more consistent with the way that HsExpr etc is handled; there are some 'Out' constructors for the type checker output. So: HsPat.InPat --> HsPat.Pat HsPat.OutPat --> HsPat.Pat No 'pat' type parameter in HsExpr, HsBinds, etc Constructor patterns are nicer now: they use HsPat.HsConDetails for the three cases of constructor patterns: prefix, infix, and record-bindings The *same* data type HsConDetails is used in the type declaration of the data type (HsDecls.TyData) Lots of associated clean-up operations here and there. Less code. Everything is wonderful.
-
- 06 Sep, 2002 1 commit
-
-
simonmar authored
Finally separate the compiler from hslibs. Mainly import wibbles, and use the new POSIX library when bootstrapping.
-
- 29 Aug, 2002 1 commit
-
-
simonmar authored
Housekeeping: - The main goal is to remove dependencies on hslibs for a bootstrapped compiler, leaving only a requirement that the packages base, haskell98 and readline are built in stage 1 in order to bootstrap. We're almost there: Posix is still required for signal handling, but all other dependencies on hslibs are now gone. Uses of Addr and ByteArray/MutableByteArray array are all gone from the compiler. PrimPacked defines the Ptr type for GHC 4.08 (which didn't have it), and it defines simple BA and MBA types to replace uses of ByteArray and MutableByteArray respectively. - Clean up import lists. HsVersions.h now defines macros for some modules which have moved between GHC versions. eg. one now imports 'GLAEXTS' to get at unboxed types and primops in the compiler. Many import lists have been sorted as per the recommendations in the new style guidelines in the commentary. I've built the compiler with GHC 4.08.2, 5.00.2, 5.02.3, 5.04 and itself, and everything still works here. Doubtless I've got something wrong, though.
-
- 14 Jun, 2002 1 commit
-
-
simonpj authored
--------------------------------------- Add a target "count" which counts lines in user source files ---------------------------------------
-
- 29 May, 2002 1 commit
-
-
sof authored
- nuke ghc_{501,502}_at_least defns, no longer used. - mingw/cygwin cross-compilation tweak.
-
- 11 May, 2002 1 commit
-
-
panne authored
Include hschooks.h via a global option to get ghc_strlen's prototype. It's too omnipresent for per-file OPTIONS.
-
- 22 Apr, 2002 2 commits
- 26 Mar, 2002 1 commit
-
-
sof authored
the platform-specific features to use to compile the compiler sources are dependent on the host, not the target platform
-
- 04 Mar, 2002 1 commit
-
-
simonmar authored
Binary Interface Files - stage 1 -------------------------------- This commit changes the default interface file format from text to binary, in order to improve compilation performace. To view an interface file, use 'ghc --show-iface Foo.hi'. utils/Binary.hs is the basic Binary I/O library, based on the nhc98 binary I/O library but much stripped-down and working in terms of bytes rather than bits, and with some special features for GHC: it remembers which Module is being emitted to avoid dumping too many qualified names, and it keeps track of a "dictionary" of FastStrings so that we don't dump the same FastString more than once into the binary file. I'll make a generic version of this for the libraries at some point. main/BinIface.hs contains most of the Binary instances. Some instances are in the same module as the data type (RdrName, Name, OccName in particular). Most instances were generated using a modified version of DrIFT, which I'll commit later. However, editing them by hand isn't hard (certainly easier than modifying ParseIface.y). The first thing in a binary interface is the interface version, so nice error messages will be generated if the binary format changes and you still have old interfaces lying around. The version also now includes the "way" as an extra sanity check. Other changes ------------- I don't like the way FastStrings contain both hashed strings (with O(1) comparison) and literal C strings (with O(n) comparison). So as a first step to separating these I made serveral "literal" type strings into hashed strings. SLIT() still generates a literal, and now FSLIT() generates a hashed string. With DEBUG on, you'll get a warning if you try to compare any SLIT()s with anything, and the compiler will fall over if you try to dump any literal C strings into an interface file (usually indicating a use of SLIT() which should be FSLIT()). mkSysLocal no longer re-encodes its FastString argument each time it is called. I also fixed the -pgm options so that the argument can now optionally be separted from the option. Bugfix: PrelNames declared Names for several comparison primops, eg. eqCharName, eqIntName etc. but these had different uniques from the real primop names. I've moved these to PrimOps and defined them using mkPrimOpIdName instead, and deleted some for which we don't have real primops (Manuel: please check that things still work for you after this change).
-
- 14 Feb, 2002 1 commit
-
-
sof authored
Right, that's it! Nuke rawSystem nonsense, as it turns out the SysTools replacement for it wasn't 4.08 compatible, hence nightly build break. Should you bootstrap with 4.08 under mingw, and subseq. do a stage2 build, you'll run into command-line length probs during the final big linker invocation. Nothing to lose sleep over, there are plenty of newer versions to base a stage1 build on.
-
- 13 Feb, 2002 1 commit
-
-
sof authored
The days of main/rawSystem.c and (its use in) main/SysTools.lhs are almost up..for now, don't bother copying it in if we're booting with 5.02 or later (which we are under mingw, which is the only plat. where this hack matters).
-
- 12 Feb, 2002 1 commit
-
-
simonmar authored
Switch over to the new hierarchical libraries --------------------------------------------- This commit reorganises our libraries to use the new hierarchical module namespace extension. The basic story is this: - fptools/libraries contains the new hierarchical libraries. Everything in here is "clean", i.e. most deprecated stuff has been removed. - fptools/libraries/base is the new base package (replacing "std") and contains roughly what was previously in std, lang, and concurrent, minus deprecated stuff. Things that are *not allowed* in libraries/base include: Addr, ForeignObj, ByteArray, MutableByteArray, _casm_, _ccall_, ``'', PrimIO For ByteArrays and MutableByteArrays we use UArray and STUArray/IOUArray respectively now. Modules previously called PrelFoo are now under fptools/libraries/GHC. eg. PrelBase is now GHC.Base. - fptools/libraries/haskell98 provides the Haskell 98 std. libraries (Char, IO, Numeric etc.) as a package. This package is enabled by default. - fptools/libraries/network is a rearranged version of the existing net package (the old package net is still available; see below). - Other packages will migrate to fptools/libraries in due course. NB. you need to checkout fptools/libraries as well as fptools/hslibs now. The nightly build scripts will need to be tweaked. - fptools/hslibs still contains (almost) the same stuff as before. Where libraries have moved into the new hierarchy, the hslibs version contains a "stub" that just re-exports the new version. The idea is that code will gradually migrate from fptools/hslibs into fptools/libraries as it gets cleaned up, and in a version or two we can remove the old packages altogether. - I've taken the opportunity to make some changes to the build system, ripping out the old hslibs Makefile stuff from mk/target.mk; the new package building Makefile code is in mk/package.mk (auto-included from mk/target.mk). The main improvement is that packages now register themselves at make boot time using ghc-pkg, and the monolithic package.conf in ghc/driver is gone. I've updated the standard packages but haven't tested win32, graphics, xlib, object-io, or OpenGL yet. The Makefiles in these packages may need some further tweaks, and they'll need pkg.conf.in files added. - Unfortunately all this rearrangement meant I had to bump the interface-file version and create a bunch of .hi-boot-6 files :-(
-
- 11 Feb, 2002 1 commit
-
-
chak authored
******************************* * Merging from ghc-ndp-branch * ******************************* This commit merges the current state of the "parallel array extension" and includes the following: * (Almost) completed Milestone 1: - The option `-fparr' activates the H98 extension for parallel arrays. - These changes have a high likelihood of conflicting (in the CVS sense) with other changes to GHC and are the reason for merging now. - ToDo: There are still some (less often used) functions not implemented in `PrelPArr' and a mechanism is needed to automatically import `PrelPArr' iff `-fparr' is given. Documentation that should go into the Commentary is currently in `ghc/compiler/ndpFlatten/TODO'. * Partial Milestone 2: - The option `-fflatten' activates the flattening transformation and `-ndp' selects the "ndp" way (where all libraries have to be compiled with flattening). The way option `-ndp' automagically turns on `-fparr' and `-fflatten'. - Almost all changes are in the new directory `ndpFlatten' and shouldn't affect the rest of the compiler. The only exception are the options and the points in `HscMain' where the flattening phase is called when `-fflatten' is given. - This isn't usable yet, but already implements function lifting, vectorisation, and a new analysis that determines which parts of a module have to undergo the flattening transformation. Missing are data structure and function specialisation, the unboxed array library (including fusion rules), and lots of testing. I have just run the regression tests on the thing without any problems. So, it seems, as if we haven't broken anything crucial.
-
- 08 Feb, 2002 1 commit
-
-
simonmar authored
Remove dependency on package text.
-
- 06 Feb, 2002 1 commit
-
-
simonmar authored
Take into account the patchlevel when figuring out if we're bootstrapping or not.
-
- 01 Feb, 2002 1 commit
-
-
simonmar authored
Include the patchlevel in the hi version number.
-
- 30 Jan, 2002 1 commit
-
-
simonmar authored
Cleanup sweep, we can now use more of the std fptools build system machinery in here.
-