Yhc/Building: Difference between revisions
m (pointer to darcsweb browsable repo) |
mNo edit summary |
||
Line 5: | Line 5: | ||
You need a C compiler - both gcc and MS Visual C are known to be OK. | You need a C compiler - both gcc and MS Visual C are known to be OK. | ||
If you want to build the yhc compiler itself (not strictly necessary), you will need a very recent Haskell compiler, e.g. ghc >= 6.4 or nhc98 >= 1.18. | If you want to build the yhc compiler itself (not strictly necessary), you will need a very recent Haskell compiler, e.g. ghc >= 6.4 or nhc98 >= 1.18. The supplied configure script will not detect if your compiler version is too old, and will not accept alternative names like ghc-6.4 instead of ghc. | ||
== Getting the Code == | == Getting the Code == |
Revision as of 13:55, 20 January 2006
Part of Yhc |
Requirements
You need a C compiler - both gcc and MS Visual C are known to be OK.
If you want to build the yhc compiler itself (not strictly necessary), you will need a very recent Haskell compiler, e.g. ghc >= 6.4 or nhc98 >= 1.18. The supplied configure script will not detect if your compiler version is too old, and will not accept alternative names like ghc-6.4 instead of ghc.
Getting the Code
The first step is to get the source code. There are two branches, stable and development. Stable should always build and give you a working compiler, but development is the one we are putting new things into. We can't generally guarantee that the development branch will always even compile so stable is likely most useful to people. It is hoped that the stable branch will be no more than a week or so behind development.
The source code is stored in a darcs repo, to get the stable version do:
darcs get http://www.cs.york.ac.uk/fp/darcs/yhc/
To get the development version do:
darcs get http://www.cs.york.ac.uk/fp/darcs/yhc-devel/
You can browse the code and its history on-line through a darcsweb interface.
Building on Windows
Open a console at the root of the yhc tree. There is a file called Makefile.bat, which is used to build the various components. Just typing Makefile should give you a list of the options.
The modes are:
- yhc - build the compiler, requires GHC
- yhi - build the runtime, requires Visual Studio 2003 (ask for support for other compilers)
- yhe - build the evaluator, requires GHC
- gyhe - build the graphic evaluator, requires GHC and Gtk2Hs
- doc - build the documentation, requires haddock and GHC
- lib - build the base libraries
- test - run the standard tests, option 98 is useful to just run the conformance tests
The standard options are:
- debug - build in debug mode [default]
- release - build in release mode
All compiled binaries will go into \inst\bin. To compile and run the test suite do:
$ Makefile yhc $ Makefile yhi $ Makefile yht $ Makefile test 98
Building on Linux/Unix
The standard unix thing will should get you most of the way.
chmod +x configure # because darcs does't record the executable bit ./configure make
There currently isn't a 'make install', but it is fairly trivial: simply copy the contents of the 'inst' directory into where everything should be installed. If it complains about the YHC_BASE_PATH environment variables, set this in by editing /etc/bash.bashrc and add the line
export YHC_BASE_PATH=/usr/lib/yhc/
(if your system uses bash as the default shell), where /usr/lib/yhc is wherever you put your /inst folder.
If you get that working but it complains about Data/Ratio.hbc missing, copy
.../src/yhc/bootstrap/packages/yhc-base/1.0/Data/Ratio.hbc
to
/usr/lib/yhc/lib/yhc/packages/haskell98/1.0/Data/
where .../src/ is where you put the YHC sources.
A correct Makefile should be forthcoming, and other changes are constantly being made, so the story's not over yet.
Building on Mac OS X
You will need to have libraries like GMP (Gnu multi-precision arithmetic) installed. Most people do this with Fink or DarwinPorts, or some such. You need the header files in addition to the library archive, and these are often distributed in a 'devel' version of the package.
If your packaging system uses a separate directory hierarchy (Fink uses /sw) then you may need to set up some environment variables so that the C compiler can find the includes and libraries:
LD_LIBRARY_PATH=/sw/lib # for dylibs LIBRARY_PATH=/sw/lib # for static linking CPATH=/sw/include # for header files
Then just follow the usual unix-like procedure, as above.