This document is a manual for developers who wish to contribute to the HLVM project. It covers topics such as copyright assignment, license, coding style, the build system and project rules.
From rspencer at reidspencer.com Mon Jun 19 00:26:36 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 19 Jun 2006 01:26:36 -0400 Subject: [hlvm-commits] r300 - in docs: . status Message-ID: <200606190526.k5J5QaEi009042@sneezy.swagora.com> Author: reid Date: 2006-06-19 01:26:34 -0400 (Mon, 19 Jun 2006) New Revision: 300 Log: Fix title lines to not duplicate "HLVM" and convert all the titles to use the heading elements not div with class. Modified: docs/Credits.html docs/DevelopersGuide.html docs/FAQ.html docs/GettingStarted.html docs/OpenProjects.html docs/ReleaseNotes.html docs/ReleasePlans.html docs/index.html docs/status/2006-05-25.html docs/status/index.html Modified: docs/Credits.html =================================================================== --- docs/Credits.html 2006-06-19 04:52:49 UTC (rev 299) +++ docs/Credits.html 2006-06-19 05:26:34 UTC (rev 300) @@ -1,4 +1,4 @@ - +
This document is a partial list of the people who have given their time, Modified: docs/DevelopersGuide.html =================================================================== --- docs/DevelopersGuide.html 2006-06-19 04:52:49 UTC (rev 299) +++ docs/DevelopersGuide.html 2006-06-19 05:26:34 UTC (rev 300) @@ -1,4 +1,4 @@ - +
This document is a manual for developers who wish to contribute to the HLVM project. It covers topics such as copyright assignment, license, coding style, the build system and project rules.
Contributions to the HLVM source base are very much appreciated. If you are able to contribute source code, this section provides details about how your contributions will be handled.
The founders of the HLVM project intend for a formal non-profit legal entity to be incorporated that will hold the copyright of all HLVM software. @@ -70,8 +65,7 @@
It is the intention of the HLVM project to release the HLVM software for distribution under the terms of the Lesser General Public License (LGPL). This @@ -93,8 +87,7 @@
See below for the complete text of the LGPL license
The HLVM group welcomes your patches. If you find something wrong with the HLVM software or you wish to make a contribution to extend HLVM, you may send @@ -118,14 +111,12 @@
This section describes the HLVM build system.
The HLVM project uses the scons software construction tool to orchestrate its builds. This gives us superior @@ -137,10 +128,9 @@ section.
Unlike some other build systems (e.g. autoconf/automake), the configuration and construction phases of building are not separated with scons. The configuration parameters are checked every time you build. While @@ -149,7 +139,7 @@ stable. If something changes in your environment, only those pieces affected will get re-configured. This saves a lot of time and hassle by telling you of any configuration errors on the very next build.
-Configuration parameters are specified on the scons command line. The values of these parameters are stored in the options cache which is simply a file named .options_cache in the root source directory. If the file @@ -157,7 +147,7 @@ runs, the values are loaded from this cache and used unless new values are given on the command line. In this way, you only need to specify your options once and then they "stick" from that point forward.
-HLVM has a variety of options to assist with configuring HLVM for your environment and build choices. Each option has a default that will work in many environments but might need adjusting for your environment. The default @@ -276,7 +266,7 @@
When you first run scons against HLVM, if you did not specify the confpath option or the configuration code cannot otherwise find a package it needs, you will be prompted to enter the applicable path names @@ -288,18 +278,18 @@
This subsection describes the various build rules and extensions to SCons that HLVM uses.
-For convenience, and to unclutter the SConscript files, the top level build directory contains a python module that provides the build facilities for HLVM. This module manipulates an SCons environment to set the variables and define the builder rules for HLVM. The public interface to this library is in the hlvm.py module. No other module should be imported into the SConscript files.
-HLVM requires some specialized build rules beyond what SCons provides. While general construction of static libraries, shared libraries, and executables use the standard SCons builders, several more are defined in the @@ -376,8 +366,7 @@
Contributions to HLVM must meet the following Coding Style requirements:
@@ -396,12 +385,10 @@GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Modified: docs/FAQ.html =================================================================== --- docs/FAQ.html 2006-06-19 04:52:49 UTC (rev 299) +++ docs/FAQ.html 2006-06-19 05:26:34 UTC (rev 300) @@ -1,4 +1,4 @@ - +HLVM Frequently Asked Questions
Here's the list of questions we get frequently. Unlike many FAQ's, this is @@ -8,12 +8,12 @@
Question Index
| + | - | + |
Author: Reid Spencer.
- - - - +Here's the quick start for getting up and running quickly with HLVM. Note that this is for experts and the impatient only.
@@ -67,9 +62,7 @@Welcome to HLVM! This document shows you how to get started with the High Level Virtual Machine. Before you do that, lets get some questions answered up @@ -118,12 +111,8 @@
Before you attempt to build HLVM, you need to understand its requirements. HLVM is non-trivial and depends on a number of other software packages. These packages will be required before you can build HLVM. Taking @@ -133,11 +122,11 @@ obtain and build these packages yourself if they are not already present on your system. HLVM won't compile or run without them.
-HLVM supports whatever hardware LLVM supports. For details, please see LLVM's documentation
-Compiling HLVM requires that you have several software packages installed. The table below lists those required packages. The Package column is the usual name for the software package that HLVM depends on. The Version column @@ -272,17 +261,17 @@
It is suggested that you keep a separate installation area for building the things upon which HLVM depends. This is the location in your file system where you will install the built packages. It is the parameter to the --prefix options to the configure programs of those packages. By using a separate install area, you ensure that the HLVM version of required packages doesn't interfere with any of your system installed packages.
-
@@ -328,7 +317,7 @@
might want to use the various --with-* options to tell apr-util
where your packages are located.If you took our advice and built all dependent packages (except llvm-gcc4) into a separate install area, then you can build HLVM quickly by using this command:
@@ -436,7 +423,7 @@ be the Single Separate Install Area where you installed all the other packages such as llvm, apr, apr-util, etc. -About SCons And HLVM
+About SCons And HLVM
HLVM uses the SCons tool for software construction. While make and the various auto* tools were originally used, the full programming language support of SCons (Python) was attractive because of the @@ -469,7 +456,7 @@
The important options that may be given on the scons command line are:
The default build target will simply build all the libraries and tools. There are additional pseudo-targets (aliases in SCons lingo) that you can build:
@@ -571,7 +558,7 @@Once you've made these adjustments you can use the various targets in the Makefile to build HLVM. Note that these targets just convert the target into the appropriate invocation of the scons command.
-You can use the following targets to build HLVM in various ways:
This document is a "TODO" list for HLVM. Each project in this document is something that would be useful for HLVM to have, and would also be a great way @@ -27,9 +24,7 @@ projects to add to this page.
Projects in the list below are related to working on software code
Projects in the list below are related to working on the projects documentation.
@@ -75,9 +68,7 @@Projects in the list below are related to testing software.
Here are some other things that need to get done.
Author: Reid Spencer.
Welcome to the High Level Virtual Machine (HLVM). This document contains the release notes for HLVM. Here we describe what's new, what changed, what @@ -39,9 +36,7 @@ HLVM Developers List
This is the second public release of the High Level Virtual Machine. This is a very early pre-release, version 0.2. That is, HLVM is not complete yet @@ -65,16 +60,13 @@ another platform, please let us know!
The main known problem with this release is that there isn't enough of HLVM implemented to be useful in any significant way.
Please see the Getting Started Guide that accompanies these relese notes.
Modified: docs/ReleasePlans.html =================================================================== --- docs/ReleasePlans.html 2006-06-19 04:52:49 UTC (rev 299) +++ docs/ReleasePlans.html 2006-06-19 05:26:34 UTC (rev 300) @@ -1,4 +1,4 @@ - +Author:Reid Spencer.
This document contains the Release plans for HLVM. Each release is broken down into a set of high-level features that we are intending to implement in @@ -39,10 +44,14 @@ occur in the next few releases.
The table below provides an index into the information for all + releases.
+The table below provides an overview of the planned upcoming releases.
| 0.2 | Turing Complete, JIT Execution | -Features Status | +Features Status |
| 0.3 | @@ -83,9 +92,7 @@
The table below provides a list of the releases already completed.
This section provides the status for the current and previous releases.
+The table below shows the status of the current release. Click the feature name to get a complete description of the feature.
| Feature | Feature | Feature | ||
|---|---|---|---|---|
| Arithmetic Operators Not Started |
+ Arithmetic Operators Implemented. |
Control Flow Operators Not Started |
- Boolean Operators Not Started |
+ Boolean Operators Implemented. |
| Text Operators Not Started |
Program Arguments Not Started |
@@ -123,13 +132,11 @@
This section lists the final status information for previous releases.
| Feature | Feature | Feature |
|---|
This section defines the individual features for all releases.
Below is the master index for all HLVM Documentation.
Modified: docs/status/2006-05-25.html =================================================================== --- docs/status/2006-05-25.html 2006-06-19 04:52:49 UTC (rev 299) +++ docs/status/2006-05-25.html 2006-06-19 05:26:34 UTC (rev 300) @@ -1,4 +1,4 @@ - +HLVM is moving along nicely. We have accomplished much in our first month: Modified: docs/status/index.html =================================================================== --- docs/status/index.html 2006-06-19 04:52:49 UTC (rev 299) +++ docs/status/index.html 2006-06-19 05:26:34 UTC (rev 300) @@ -1,4 +1,4 @@ - +
This section provides the status for the current and previous releases.
The table below shows the status of the current release. Click the feature name to get a complete description of the feature.
_______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 19 00:49:25 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 19 Jun 2006 01:49:25 -0400 Subject: [hlvm-commits] r302 - docs Message-ID: <200606190549.k5J5nPD7009108@sneezy.swagora.com> Author: reid Date: 2006-06-19 01:49:25 -0400 (Mon, 19 Jun 2006) New Revision: 302 Log: One more shot at XHTML compliance. Modified: docs/ReleasePlans.html Modified: docs/ReleasePlans.html =================================================================== --- docs/ReleasePlans.html 2006-06-19 05:47:06 UTC (rev 301) +++ docs/ReleasePlans.html 2006-06-19 05:49:25 UTC (rev 302) @@ -7,16 +7,17 @@+ time in the long run.
The table below shows the software that HLVM depends on. You must obtain and build these packages yourself if they are not already present on your system. HLVM won't compile or run without them.
@@ -206,7 +206,7 @@Notes:
If you took our advice and built all dependent packages (except llvm-gcc4) into a separate install area, then you can build HLVM quickly by using this - command:
+ command:scons -Q mode=debug confpath=/path/to/llvm-gcc4/install:/path/to/install-The confpath option indicates to the HLVM build system some additional places to search for software. The first path should be the location in which the llmv-gcc4 software was installed. The second path should @@ -559,7 +559,7 @@ Makefile to build HLVM. Note that these targets just convert the target into the appropriate invocation of the scons command.
Targets Supported
-You can use the following targets to build HLVM in various ways: +
You can use the following targets to build HLVM in various ways:
HLVM is moving along nicely. We have accomplished much in our first month: +
HLVM is moving along nicely. We have accomplished much in our first +month:
This subsection describes the various build rules and extensions to SCons @@ -366,6 +366,145 @@
Building HLVM is no small feat. It depends on a lot of software that is + quite version dependent. To bring a little sanity to the process, here is a + step-by-step procedure we know to work.
+In building HLVM, you'll be installing compilers and library that may + already exist on your system. You don't want to overwrite your system versions + of these things or it will wreak havoc on your system. So, we suggest that you + start with a fresh directory. In the discussion that follows, we'll call it + /proj (that's what Reid uses). But, it could be anything you want, + as long as its new. ~/hlvm would work just as well. Choosing the + disk location for this should not be taken lightly. You will need upwards of + 40GB of storage to build all this software.
+Once you've found a suitable location for HLVM, create the following + directory structure:
+ cd /proj + mkdir gcc llvm llvm-gcc4 libxml2 apr apru hlvm gperf scons install ++
In the following sections you will build each of these packages and install + them into /proj/install which will keep it separate from anything + else in your system.
+First, start with obtaining GCC 3.4.6. This will be the compiler that you + use for all the remaining compilations. Use the following commands to obtain, + build and install GCC 3.4.6:
+ cd /proj/gcc + mkdir build + svn svn://gcc.gnu.org/svn/gcc/tags/gcc_3_4_6_release src + cd ../build + ../src/configure --prefix=/proj/install + make + make install ++
Now that you have gcc installed in a separate location, you will need to + change your environment to ensure that that version of gcc is the one used in + subsequent builds. Details vary from platform to platform, but on Linux, the + following should work:
+ export PATH=/proj/install/bin:$PATH + export LD_LIBRARY_PATH=/proj/install/lib:$LD_LIBRARY_PATH ++
The essential point is to change your environment so that programs and + libraries installed into /proj/install will be found first. You should do this + in any shell environment in which you'll be building HLVM related software. +
+This package is used for generating perfect hash functions. It is used by + HLVM for fast recognition of XML element and attribute names. Its easy and + fast to build:
+ cd /proj/gperf + wget http://mirrors.kernel.org/gnu/gperf/gperf-2.7.2.tar.gz + tar zxf gperf-2.7.2.tar.gz + mkdir build + cd build + ../gperf-2.7.2/configure --prefix=/proj/install + make + make install ++
This package provides all XML services for HLVM. It is part of GNome and + many other packages and quite stable. It should build quickly and easily for + you. Use these commands:
+ cd /proj/libxml2 + wget ftp://xmlsoft.org/libxml2/libxml2-2.6.24.tar.gz + tar zxf libxml2-2.6.24.tar.gz + mkdir build + cd build + ../libxml2-2.6.24/configure --prefix=/proj/install + make + make install ++
+ cd /proj/apr + wget http://mirror.olnevhost.net/pub/apache/apr/apr-1.2.7.tar.gz + tar zxf apr-1.2.7.tar.gz + mkdir build + cd apr-1.2.7 + ./buildconf + cd ../build + ../apr-1.2.7/configure --prefix=/proj/install --enable-debug \ + --enable-threads --enable-other-child + make + make install ++
+ cd /proj/apru + wget http://mirror.olnevhost.net/pub/apache/apr/apr-util-1.2.7.tar.gz + tar zxf apr-1.2.7.tar.gz + mkdir build + cd apr-util-1.2.7 + ./buildconf + cd ../build + ../apr-util-1.2.7/configure --prefix=/proj/install --enable-debug \ + --enable-threads --enable-other-child + make + make install ++
+ cd /proj/llvm + cvs -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login + <return> + cvs -z3 -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co llvm + mkdir build + cd build + ../llvm/configure --prefix=/proj/install + make tools-only + make install + make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 tools-only ++
+ cd /proj/llvm-gcc4 + svn co svn://anonsvn.opensource.apple.com/svn/llvm cfe + mkdir build install + cd build + ../cfe/configure --prefix=/proj/llvm-gcc4/cfe/install \ + --enable-llvm=/proj/llvm/build --enable-languages=c,c++ + make + make install ++
Note in the following that if you've actually used /proj as your + build area then you don't need to provide any arguments to make as + these paths are the default. Also note that the arguments are only needed the + first time you build HLVM. Subsequently, these options will be remembered. See + the description of SCons above.
++ cd /proj/hlvm + svn co svn://hlvm.org/hlvm hlvm + cd hlvm + make MYMODE=Debug MYPATH=/proj/llvm/cfe/install:/proj/install \ + MYPREFIX=/proj/install/bin ++
Contributions to HLVM must meet the following Coding Style @@ -382,12 +521,13 @@ build related.
GNU LESSER GENERAL PUBLIC LICENSE _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Tue Jun 20 00:38:09 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Tue, 20 Jun 2006 01:38:09 -0400 Subject: [hlvm-commits] r310 - docs Message-ID: <200606200538.k5K5c9sg023605@sneezy.swagora.com> Author: reid Date: 2006-06-20 01:38:08 -0400 (Tue, 20 Jun 2006) New Revision: 310 Log: XHTML corrections and some additonal verbage. Modified: docs/DevelopersGuide.html Modified: docs/DevelopersGuide.html =================================================================== --- docs/DevelopersGuide.html 2006-06-20 05:26:38 UTC (rev 309) +++ docs/DevelopersGuide.html 2006-06-20 05:38:08 UTC (rev 310) @@ -3,7 +3,7 @@HLVM Developer's Guide
CAUTION: This document is a work in progress.-
- Introduction +
- Introduction
- Contributions
-- Build System
+- Build System
-
- About SCONS
- Configuring
@@ -77,7 +77,6 @@ from being incorporated into commercial and proprietary products. The founders wish to encourage HLVM's use both in open source and proprietary projects.- The LGPL protects the contributors by ensuring that distributions of HLVM retain copyright and the LGPL license for any modifications to HLVM.
@@ -383,8 +382,7 @@Once you've found a suitable location for HLVM, create the following directory structure:
cd /proj - mkdir gcc llvm llvm-gcc4 libxml2 apr apru hlvm gperf scons install -+ mkdir gcc llvm llvm-gcc4 libxml2 apr apru hlvm gperf scons install
In the following sections you will build each of these packages and install them into /proj/install which will keep it separate from anything else in your system.
@@ -398,16 +396,14 @@ cd ../build ../src/configure --prefix=/proj/install make - make install - + make installNow that you have gcc installed in a separate location, you will need to change your environment to ensure that that version of gcc is the one used in subsequent builds. Details vary from platform to platform, but on Linux, the following should work:
export PATH=/proj/install/bin:$PATH - export LD_LIBRARY_PATH=/proj/install/lib:$LD_LIBRARY_PATH -+ export LD_LIBRARY_PATH=/proj/install/lib:$LD_LIBRARY_PATH
The essential point is to change your environment so that programs and libraries installed into /proj/install will be found first. You should do this in any shell environment in which you'll be building HLVM related software. @@ -423,8 +419,7 @@ cd build ../gperf-2.7.2/configure --prefix=/proj/install make - make install - + make install
This package provides all XML services for HLVM. It is part of GNome and many other packages and quite stable. It should build quickly and easily for @@ -436,9 +431,12 @@ cd build ../libxml2-2.6.24/configure --prefix=/proj/install make - make install - + make install
The Apache Portable Runtime is a portability layer used within the Apache + HTTP Server. Although it is still undergoing active development, stable + releases are available. HLVM uses APR for portability in the runtime. Build + APR with the following commands:
cd /proj/apr
wget http://mirror.olnevhost.net/pub/apache/apr/apr-1.2.7.tar.gz
@@ -450,9 +448,10 @@
../apr-1.2.7/configure --prefix=/proj/install --enable-debug \
--enable-threads --enable-other-child
make
- make install
-
+ make install
The apr-util package is some additional utilities that go with APR. Build + apr-util with the following commands:
cd /proj/apru
wget http://mirror.olnevhost.net/pub/apache/apr/apr-util-1.2.7.tar.gz
@@ -464,9 +463,15 @@
../apr-util-1.2.7/configure --prefix=/proj/install --enable-debug \
--enable-threads --enable-other-child
make
- make install
-
+ make install
For now, you must build LLVM from the CVS repository. Although LLVM is + actively being developed, it is generally stable and this is safe. If you get + tempted to use a release tarball, it will fail. HLVM depends on post-1.7 + features of LLVM. When you build LLVM, use the "tools-only" target. This will + avoid building the "runtime" portion of LLVM which was necessary for an older + version of llvm-gcc (v3). Since we'll be using llvm-gcc4, this is unnecessary + and will eliminate some chicken-and-egg type problems.
cd /proj/llvm cvs -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login @@ -477,9 +482,12 @@ ../llvm/configure --prefix=/proj/install make tools-only make install - make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 tools-only -+ make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 tools-only
Apple provides a Subversion repository for llvm-gcc4. You need this latest + version because HLVM depends on some of the features. You might find this one + a bit tricky. See the README.LLVM file in the top source directory for + additional help and late breaking news.
cd /proj/llvm-gcc4 svn co svn://anonsvn.opensource.apple.com/svn/llvm cfe @@ -1033,5 +1041,4 @@ That's all there is to it!- _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From saem at hlvm.org Tue Jun 20 01:49:37 2006 From: saem at hlvm.org (saem at hlvm.org) Date: Tue, 20 Jun 2006 02:49:37 -0400 Subject: [hlvm-commits] r311 - docs Message-ID: <200606200649.k5K6nb3F025962@sneezy.swagora.com> Author: saem Date: 2006-06-20 02:49:36 -0400 (Tue, 20 Jun 2006) New Revision: 311 Log: missing the "co" command for the gcc svn checkout instruction Modified: docs/DevelopersGuide.html Modified: docs/DevelopersGuide.html =================================================================== --- docs/DevelopersGuide.html 2006-06-20 05:38:08 UTC (rev 310) +++ docs/DevelopersGuide.html 2006-06-20 06:49:36 UTC (rev 311) @@ -1,6 +1,71 @@ +<<<<<<< .mine + + + + + +
+
+ ![]() + +Contents +
+ Overview
+
+ + Release Plans + Open Projects + Getting Started + Documentation + Doxygen APIs + Credits + FAQ + Feedback + +Search this Site + + + +Releases + + + +Status Updates + + + |
+
+
+HLVM Developer's Guide+=======HLVM Developer's Guide+>>>>>>> .r310CAUTION: This document is a work in progress.
A Sane Build Environment
+<<<<<<< .mine
+
+Building HLVM is no small feat. It depends on a lot of software that is quite version dependent. To bring a little sanity to the process, here is a step-by-step procedure we know to work. @@ -392,6 +458,155 @@ build and install GCC 3.4.6:cd /proj/gcc mkdir build + svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_3_4_6_release src + cd ../build + ../src/configure --prefix=/proj/install + make + make install+ Set Environment+Now that you have gcc installed in a separate location, you will need to + change your environment to ensure that that version of gcc is the one used in + subsequent builds. Details vary from platform to platform, but on Linux, the + following should work: + export PATH=/proj/install/bin:$PATH + export LD_LIBRARY_PATH=/proj/install/lib:$LD_LIBRARY_PATH+ The essential point is to change your environment so that programs and + libraries installed into /proj/install will be found first. You should do this + in any shell environment in which you'll be building HLVM related software. + +Build gperf+This package is used for generating perfect hash functions. It is used by + HLVM for fast recognition of XML element and attribute names. Its easy and + fast to build: + cd /proj/gperf + wget http://mirrors.kernel.org/gnu/gperf/gperf-2.7.2.tar.gz + tar zxf gperf-2.7.2.tar.gz + mkdir build + cd build + ../gperf-2.7.2/configure --prefix=/proj/install + make + make install+ Build libxml2+This package provides all XML services for HLVM. It is part of GNome and + many other packages and quite stable. It should build quickly and easily for + you. Use these commands: + cd /proj/libxml2 + wget ftp://xmlsoft.org/libxml2/libxml2-2.6.24.tar.gz + tar zxf libxml2-2.6.24.tar.gz + mkdir build + cd build + ../libxml2-2.6.24/configure --prefix=/proj/install + make + make install+ Build apr+The Apache Portable Runtime is a portability layer used within the Apache + HTTP Server. Although it is still undergoing active development, stable + releases are available. HLVM uses APR for portability in the runtime. Build + APR with the following commands: ++ cd /proj/apr + wget http://mirror.olnevhost.net/pub/apache/apr/apr-1.2.7.tar.gz + tar zxf apr-1.2.7.tar.gz + mkdir build + cd apr-1.2.7 + ./buildconf + cd ../build + ../apr-1.2.7/configure --prefix=/proj/install --enable-debug \ + --enable-threads --enable-other-child + make + make install+ Build apr-util+The apr-util package is some additional utilities that go with APR. Build + apr-util with the following commands: ++ cd /proj/apru + wget http://mirror.olnevhost.net/pub/apache/apr/apr-util-1.2.7.tar.gz + tar zxf apr-1.2.7.tar.gz + mkdir build + cd apr-util-1.2.7 + ./buildconf + cd ../build + ../apr-util-1.2.7/configure --prefix=/proj/install --enable-debug \ + --enable-threads --enable-other-child + make + make install+ Build LLVM+For now, you must build LLVM from the CVS repository. Although LLVM is + actively being developed, it is generally stable and this is safe. If you get + tempted to use a release tarball, it will fail. HLVM depends on post-1.7 + features of LLVM. When you build LLVM, use the "tools-only" target. This will + avoid building the "runtime" portion of LLVM which was necessary for an older + version of llvm-gcc (v3). Since we'll be using llvm-gcc4, this is unnecessary + and will eliminate some chicken-and-egg type problems. ++ cd /proj/llvm + cvs -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login + <return> + cvs -z3 -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co llvm + mkdir build + cd build + ../llvm/configure --prefix=/proj/install + make tools-only + make install + make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 tools-only+ Build llvm-gcc4+Apple provides a Subversion repository for llvm-gcc4. You need this latest + version because HLVM depends on some of the features. You might find this one + a bit tricky. See the README.LLVM file in the top source directory for + additional help and late breaking news. ++ cd /proj/llvm-gcc4 + svn co svn://anonsvn.opensource.apple.com/svn/llvm cfe + mkdir build install + cd build + ../cfe/configure --prefix=/proj/llvm-gcc4/cfe/install \ + --enable-llvm=/proj/llvm/build --enable-languages=c,c++ + make + make install ++ Build HLVM+Note in the following that if you've actually used /proj as your + build area then you don't need to provide any arguments to make as + these paths are the default. Also note that the arguments are only needed the + first time you build HLVM. Subsequently, these options will be remembered. See + the description of SCons above. ++ cd /proj/hlvm + svn co svn://hlvm.org/hlvm hlvm + cd hlvm + make MYMODE=Debug MYPATH=/proj/llvm/cfe/install:/proj/install \ + MYPREFIX=/proj/install/bin ++ Coding Style+
+=======
+ Building HLVM is no small feat. It depends on a lot of software that is + quite version dependent. To bring a little sanity to the process, here is a + step-by-step procedure we know to work. +Build Separation+In building HLVM, you'll be installing compilers and library that may + already exist on your system. You don't want to overwrite your system versions + of these things or it will wreak havoc on your system. So, we suggest that you + start with a fresh directory. In the discussion that follows, we'll call it + /proj (that's what Reid uses). But, it could be anything you want, + as long as its new. ~/hlvm would work just as well. Choosing the + disk location for this should not be taken lightly. You will need upwards of + 40GB of storage to build all this software. +Once you've found a suitable location for HLVM, create the following + directory structure: + cd /proj + mkdir gcc llvm llvm-gcc4 libxml2 apr apru hlvm gperf scons install+ In the following sections you will build each of these packages and install + them into /proj/install which will keep it separate from anything + else in your system. +Build GCC 3.4.6+First, start with obtaining GCC 3.4.6. This will be the compiler that you + use for all the remaining compilations. Use the following commands to obtain, + build and install GCC 3.4.6: + cd /proj/gcc + mkdir build svn svn://gcc.gnu.org/svn/gcc/tags/gcc_3_4_6_release src cd ../build ../src/configure --prefix=/proj/install @@ -515,6 +730,7 @@ |
+
+ +Resources +
+ Wiki Site
+
+ + Developers List + Commits List + IRC Channel + Latest Source + Web SVN + HLVM Bugzilla + +Random Facts +
+HLVM uses the Libxml2 Library to parse and
+validate XML documents that generate the Abstract Syntax Tree. See the
+hlvm-xml2xml program.
+
+
+
+
+
+ +Notices + + + + |
+
-
- ![]() - -Contents -
- Overview
-
- - Release Plans - Open Projects - Getting Started - Documentation - Doxygen APIs - Credits - FAQ - Feedback - -Search this Site - - - -Releases - - - -Status Updates - - - |
-
-
-HLVM Developer's Guide-=======HLVM Developer's Guide->>>>>>> .r310CAUTION: This document is a work in progress.
A Sane Build Environment
-<<<<<<< .mine
Building HLVM is no small feat. It depends on a lot of software that is quite version dependent. To bring a little sanity to the process, here is a step-by-step procedure we know to work. @@ -581,156 +515,6 @@Coding Style
-=======
-
-
-Building HLVM is no small feat. It depends on a lot of software that is - quite version dependent. To bring a little sanity to the process, here is a - step-by-step procedure we know to work. -Build Separation-In building HLVM, you'll be installing compilers and library that may - already exist on your system. You don't want to overwrite your system versions - of these things or it will wreak havoc on your system. So, we suggest that you - start with a fresh directory. In the discussion that follows, we'll call it - /proj (that's what Reid uses). But, it could be anything you want, - as long as its new. ~/hlvm would work just as well. Choosing the - disk location for this should not be taken lightly. You will need upwards of - 40GB of storage to build all this software. -Once you've found a suitable location for HLVM, create the following - directory structure: - cd /proj - mkdir gcc llvm llvm-gcc4 libxml2 apr apru hlvm gperf scons install- In the following sections you will build each of these packages and install - them into /proj/install which will keep it separate from anything - else in your system. -Build GCC 3.4.6-First, start with obtaining GCC 3.4.6. This will be the compiler that you - use for all the remaining compilations. Use the following commands to obtain, - build and install GCC 3.4.6: - cd /proj/gcc - mkdir build - svn svn://gcc.gnu.org/svn/gcc/tags/gcc_3_4_6_release src - cd ../build - ../src/configure --prefix=/proj/install - make - make install- Set Environment-Now that you have gcc installed in a separate location, you will need to - change your environment to ensure that that version of gcc is the one used in - subsequent builds. Details vary from platform to platform, but on Linux, the - following should work: - export PATH=/proj/install/bin:$PATH - export LD_LIBRARY_PATH=/proj/install/lib:$LD_LIBRARY_PATH- The essential point is to change your environment so that programs and - libraries installed into /proj/install will be found first. You should do this - in any shell environment in which you'll be building HLVM related software. - -Build gperf-This package is used for generating perfect hash functions. It is used by - HLVM for fast recognition of XML element and attribute names. Its easy and - fast to build: - cd /proj/gperf - wget http://mirrors.kernel.org/gnu/gperf/gperf-2.7.2.tar.gz - tar zxf gperf-2.7.2.tar.gz - mkdir build - cd build - ../gperf-2.7.2/configure --prefix=/proj/install - make - make install- Build libxml2-This package provides all XML services for HLVM. It is part of GNome and - many other packages and quite stable. It should build quickly and easily for - you. Use these commands: - cd /proj/libxml2 - wget ftp://xmlsoft.org/libxml2/libxml2-2.6.24.tar.gz - tar zxf libxml2-2.6.24.tar.gz - mkdir build - cd build - ../libxml2-2.6.24/configure --prefix=/proj/install - make - make install- Build apr-The Apache Portable Runtime is a portability layer used within the Apache - HTTP Server. Although it is still undergoing active development, stable - releases are available. HLVM uses APR for portability in the runtime. Build - APR with the following commands: -- cd /proj/apr - wget http://mirror.olnevhost.net/pub/apache/apr/apr-1.2.7.tar.gz - tar zxf apr-1.2.7.tar.gz - mkdir build - cd apr-1.2.7 - ./buildconf - cd ../build - ../apr-1.2.7/configure --prefix=/proj/install --enable-debug \ - --enable-threads --enable-other-child - make - make install- Build apr-util-The apr-util package is some additional utilities that go with APR. Build - apr-util with the following commands: -- cd /proj/apru - wget http://mirror.olnevhost.net/pub/apache/apr/apr-util-1.2.7.tar.gz - tar zxf apr-1.2.7.tar.gz - mkdir build - cd apr-util-1.2.7 - ./buildconf - cd ../build - ../apr-util-1.2.7/configure --prefix=/proj/install --enable-debug \ - --enable-threads --enable-other-child - make - make install- Build LLVM-For now, you must build LLVM from the CVS repository. Although LLVM is - actively being developed, it is generally stable and this is safe. If you get - tempted to use a release tarball, it will fail. HLVM depends on post-1.7 - features of LLVM. When you build LLVM, use the "tools-only" target. This will - avoid building the "runtime" portion of LLVM which was necessary for an older - version of llvm-gcc (v3). Since we'll be using llvm-gcc4, this is unnecessary - and will eliminate some chicken-and-egg type problems. -- cd /proj/llvm - cvs -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm login - <return> - cvs -z3 -d :pserver:anon at llvm-cvs.cs.uiuc.edu:/var/cvs/llvm co llvm - mkdir build - cd build - ../llvm/configure --prefix=/proj/install - make tools-only - make install - make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 tools-only- Build llvm-gcc4-Apple provides a Subversion repository for llvm-gcc4. You need this latest - version because HLVM depends on some of the features. You might find this one - a bit tricky. See the README.LLVM file in the top source directory for - additional help and late breaking news. -- cd /proj/llvm-gcc4 - svn co svn://anonsvn.opensource.apple.com/svn/llvm cfe - mkdir build install - cd build - ../cfe/configure --prefix=/proj/llvm-gcc4/cfe/install \ - --enable-llvm=/proj/llvm/build --enable-languages=c,c++ - make - make install -- Build HLVM-Note in the following that if you've actually used /proj as your - build area then you don't need to provide any arguments to make as - these paths are the default. Also note that the arguments are only needed the - first time you build HLVM. Subsequently, these options will be remembered. See - the description of SCons above. -- cd /proj/hlvm - svn co svn://hlvm.org/hlvm hlvm - cd hlvm - make MYMODE=Debug MYPATH=/proj/llvm/cfe/install:/proj/install \ - MYPREFIX=/proj/install/bin -- Coding Style-
->>>>>>> .r310
Contributions to HLVM must meet the following Coding Style requirements:
|
-
- -Resources -
- Wiki Site
-
- - Developers List - Commits List - IRC Channel - Latest Source - Web SVN - HLVM Bugzilla - -Random Facts -
-HLVM uses the Libxml2 Library to parse and
-validate XML documents that generate the Abstract Syntax Tree. See the
-hlvm-xml2xml program.
-
-
-
-
-
- -Notices - - - - |
-
As noted earlier, HLVM uses the SCons tool for its builds. You need version + 0.96.92. Install it like this:
++ cd /proj/scons + wget http://internap.dl.sourceforge.net/sourceforge/scons/scons-0.96.92.tar.gz + tar zxf scons-0.96.92.tar.gz + python config.py install+
Alternatively, you could use one of the SCons packages, such as:
++ cd /proj/scons + wget http://internap.dl.sourceforge.net/sourceforge/scons/scons-0.96.92-1.noarch.rpm + rpm --install scons-0.96.92-1.noarch.rpm+
Note in the following that if you've actually used /proj as your build area then you don't need to provide any arguments to make as @@ -509,8 +522,7 @@ svn co svn://hlvm.org/hlvm hlvm cd hlvm make MYMODE=Debug MYPATH=/proj/llvm/cfe/install:/proj/install \ - MYPREFIX=/proj/install/bin - + MYPREFIX=/proj/install/bin