From rspencer at reidspencer.com Mon Jun 12 01:28:17 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 02:28:17 -0400 Subject: [hlvm-commits] r234 - docs Message-ID: <200606120628.k5C6SHlr012027@sneezy.swagora.com> Author: reid Date: 2006-06-12 02:28:16 -0400 (Mon, 12 Jun 2006) New Revision: 234 Log: Describe how to use scons for building HLVM. Modified: docs/GettingStarted.html Modified: docs/GettingStarted.html =================================================================== --- docs/GettingStarted.html 2006-06-11 19:02:45 UTC (rev 233) +++ docs/GettingStarted.html 2006-06-12 06:28:16 UTC (rev 234) @@ -18,6 +18,7 @@
  • Building Other Packages
  • +
  • Building HLVM With SCons
  • @@ -99,24 +100,19 @@
    -
    Overview
    - -

    HLVM is dependent on a number of other software packages. These -packages will be required before you can build HLVM. Fortunately, the configure -script will tell you which packages you lack. 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.

    - -
    Requirements
    -

    Before you begin to use the HLVM system, review the requirements given below. -This may save you some trouble by knowing ahead of time what hardware and -software you will need.

    - +

    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 + a moment to familiarize yourself with HLVM's requirements may save you some + 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.

    @@ -139,27 +135,39 @@ llvm 1.8cvs2 - optimization, code generation, bytecode, JIT + Low Level Virtual Machine. This compler infrastructure provides the + low level code generation and optimization, linking, bytecode, JIT, + and other facilities HLVM needs. LLVM is HLVM's sister project. + It handles all the low level details for HLVM. - llvm-gcc + llvm-gcc4 4 - C and C++ compilation to llvm bytecode + LLVM C/C++ Frontend, Version 4. This is a full GCC (Gnu Compiler + Collection) compiler but with extensions for generating code via LLVM + instead of GCC's normal RTL-based backend. This tool can compile C, C++, + Objective-C and Objective-C++ languages into either native binary or + LLVM bytecode. In either case, it utilizes LLVM's suite of passes for code + optimization. apr 1.2.7 - runtime environment, OS abstraction, threading, loading, etc. + Apache Portable Runtime. APR is used as the portability layer to + abstract away differences between the various operating systems that + HLVM runs on. This simplifies the HLVM Runtime library implementation + and also endows it with some robustness. It handles various OS + abstraction such as file I/O, threading, locking, loading, etc. apr-util 1.2.7 - additional runtime utilities + Apache Portable Runtime Utilities. Additional runtime utilities. libxml2 2.6.24 - XML parsing and validation toolkit + XML parsing and validation toolkit. gperf @@ -175,14 +183,19 @@ subversion ≥1.1 - Suversion access to HLVM source + Suversion access to HLVM source repository. scons 0.96.92 - Software Construction system used for HLVM's build + Software Construction system used for HLVM's build system. + python + 2.3 + Python programming language, required by scons + + dejagnu 1.4.2 Automated test suite1 @@ -288,5 +301,99 @@ are a few things you need to do correctly. + +
    Building HLVM With SCons
    + +
    +

    HLVM uses the SCons tool for software construction. While make + and the various auto* tools were originally used, the full + programming language support (Python) of SCons was attractive because of the + platform support and the need to do intricate things to build HLVM. If you + are not familiar with SCons, we recommend you take a quick peek at the + SCons User + Manual. While an in depth knowledge is not needed to build HLVM, having + some understanding of scons will definitely help.

    +

    The details on using scons for HLVM can be found in the + Developer's Guide, but here's a precis to + help you get started:

    + +
    _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 02:05:11 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 03:05:11 -0400 Subject: [hlvm-commits] r235 - / Message-ID: <200606120705.k5C75BGK015338@sneezy.swagora.com> Author: reid Date: 2006-06-12 03:05:10 -0400 (Mon, 12 Jun 2006) New Revision: 235 Log: Minor correction. Modified: CREDITS.txt Modified: CREDITS.txt =================================================================== --- CREDITS.txt 2006-06-12 06:28:16 UTC (rev 234) +++ CREDITS.txt 2006-06-12 07:05:10 UTC (rev 235) @@ -1,4 +1,4 @@ -This file is a partial list of people who have contributed to the LLVM +This file is a partial list of people who have contributed to the HLVM project. If you have contributed a patch or made some other contribution to HLVM, please submit a patch to this file to add yourself, and it will be done! _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 02:09:38 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 03:09:38 -0400 Subject: [hlvm-commits] r236 - / Message-ID: <200606120709.k5C79cMN015483@sneezy.swagora.com> Author: reid Date: 2006-06-12 03:09:37 -0400 (Mon, 12 Jun 2006) New Revision: 236 Log: Minor corrections. Modified: README.txt Modified: README.txt =================================================================== --- README.txt 2006-06-12 07:05:10 UTC (rev 235) +++ README.txt 2006-06-12 07:09:37 UTC (rev 236) @@ -5,22 +5,23 @@ Virtual Machine (HLVM). HLVM is a toolkit and a set of executables to assist with the rapid construction of dynamic languages and their virtual machines. It aims to foster domain specific languages, rapid compiler development, and -a common infrastructure upon which those languages can execute. +a common infrastructure upon which those languages can execute and inter- +operate. HLVM is based on LLVM (Low Level Virtual Machine) which endows HLVM with an -optimizing compiler, native code generation, bytecode, makefile system, and -a basic infrastructure on which to build. +optimizing compiler, native code generation, bytecode, and a basic +infrastructure on which to build. Licensing ========= HLVM is open source software. You may freely distribute it under the terms of -the license agreements found in LICENSE.txt files, wherever they may be found -in the source tree. See the top level file, LICENSE.txt, for full details. +the license agreements found in the LICENSE.txt files, wherever they may be +found in the source tree. See the top level file, LICENSE.txt, for full details. Documentation ============= -HLVM comes with full documentation in HTML format. These are provided in the -docs directory. Please open /docs/index.html to get an index of the +HLVM comes with documentation in HTML format. These are provided in the docs +directory. Please open /docs/index.html to get an index of the documentation that is available. You will find conceptual guides as well as build and installation instructions there. _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 02:09:57 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 03:09:57 -0400 Subject: [hlvm-commits] r237 - / Message-ID: <200606120709.k5C79vgj015498@sneezy.swagora.com> Author: reid Date: 2006-06-12 03:09:56 -0400 (Mon, 12 Jun 2006) New Revision: 237 Log: Add debug, optimized, and release targets Modified: Makefile Modified: Makefile =================================================================== --- Makefile 2006-06-12 07:09:37 UTC (rev 236) +++ Makefile 2006-06-12 07:09:56 UTC (rev 237) @@ -13,6 +13,16 @@ all: scons -Q +debug: + scons -Q mode=debug debug=1 assertions=1 optimized=0 inline=0 small=0 + +optimized: + scons -Q mode=optimized debug=0 assertions=1 optimized=1 inline=1 \ + small=0 + +release: + scons -Q mode=release debug=0 assertions=0 optimized=1 inline=1 small=1 + check: all scons -Q check _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 05:50:08 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 06:50:08 -0400 Subject: [hlvm-commits] r238 - / Message-ID: <200606121050.k5CAo8XY026226@sneezy.swagora.com> Author: reid Date: 2006-06-12 06:50:07 -0400 (Mon, 12 Jun 2006) New Revision: 238 Log: Build docs before test Modified: SConstruct Modified: SConstruct =================================================================== --- SConstruct 2006-06-12 07:09:56 UTC (rev 237) +++ SConstruct 2006-06-12 10:50:07 UTC (rev 238) @@ -23,4 +23,4 @@ from build import hlvm env = hlvm.GetBuildEnvironment(COMMAND_LINE_TARGETS,ARGUMENTS) Export('env') -hlvm.Dirs(env,['hlvm','tools','test','docs']) +hlvm.Dirs(env,['hlvm','tools','docs','test']) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 05:51:34 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 06:51:34 -0400 Subject: [hlvm-commits] r240 - docs Message-ID: <200606121051.k5CApYd6026255@sneezy.swagora.com> Author: reid Date: 2006-06-12 06:51:34 -0400 (Mon, 12 Jun 2006) New Revision: 240 Log: Make sure docs get installed too. Modified: docs/SConscript Modified: docs/SConscript =================================================================== --- docs/SConscript 2006-06-12 10:51:09 UTC (rev 239) +++ docs/SConscript 2006-06-12 10:51:34 UTC (rev 240) @@ -40,3 +40,5 @@ env.DoxygenInstall(installtgt,installsrc) env.Alias('doxy-install',installtgt) +if 'install' in COMMAND_LINE_TARGETS: + hlvm.InstallDocs(env,hlvm.GetFiles('*.html')+['hlvm.css']) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 05:51:10 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 06:51:10 -0400 Subject: [hlvm-commits] r239 - build Message-ID: <200606121051.k5CApAYS026239@sneezy.swagora.com> Author: reid Date: 2006-06-12 06:51:09 -0400 (Mon, 12 Jun 2006) New Revision: 239 Log: Fix numerous configuration problems. This now builds easily from a clean configuration without being onerous on the user. The reamining problem is that the "check" alias doesn't properly depend on the tools it uses. Modified: build/check.py build/configure.py build/hlvm.py Modified: build/check.py =================================================================== --- build/check.py 2006-06-12 10:50:07 UTC (rev 238) +++ build/check.py 2006-06-12 10:51:09 UTC (rev 239) @@ -33,13 +33,10 @@ outf.write('set LLVM_bin "' + env['LLVM_bin'] + '"\n') outf.write('set LIBXML2_lib "' + env['LIBXML2_lib'] + '"\n') outf.write('set LIBXML2_inc "' + env['LIBXML2_inc'] + '"\n') - outf.write('set LIBXML2_bin "' + env['LIBXML2_bin'] + '"\n') outf.write('set APR_lib "' + env['APR_lib'] + '"\n') outf.write('set APR_inc "' + env['APR_inc'] + '"\n') - outf.write('set APR_bin "' + env['APR_bin'] + '"\n') outf.write('set APRU_lib "' + env['APRU_lib'] + '"\n') outf.write('set APRU_inc "' + env['APRU_inc'] + '"\n') - outf.write('set APRU_bin "' + env['APRU_bin'] + '"\n') outf.write('set llc "' + env['with_llc'] + '"\n') outf.write('set gccld "' + env['with_gccld'] + '"\n') outf.write('set gxx "' + env['with_gxx'] + '"\n') @@ -77,5 +74,7 @@ env.Check(['#test/' + dir + '.sum','#test/' + dir + '.log'], getTestCases(dir,env)+['#test/site.exp']) env.Alias('check','#test/' + dir + '.log') + env.Depends('check','#tools/hlvm-compiler/hlvm-compiler') + env.Depends('check','#tools/hlvm-xml2xml/hlvm-xml2xml') return 1 Modified: build/configure.py =================================================================== --- build/configure.py 2006-06-12 10:50:07 UTC (rev 238) +++ build/configure.py 2006-06-12 10:51:09 UTC (rev 239) @@ -7,65 +7,27 @@ from os import environ as environ from string import join as sjoin -def _failed(env): - print "*** Configuration Check Failed. Required component missing" - env.Exit(1) - -def _getline(env,msg): - response = raw_input(msg) +def AskForDir(env,pkg): + response = raw_input('Enter directory containing %(pkg)s: ' % {'pkg':pkg }) if response == 'quit' or response == "exit": print "Configuration terminated by user" - _failed(env) + env.Exit(1) + if not isdir(response): + print "'" + response + "' is not a directory. Try again." + return AskForDir(env,pkg) return response -def AskForDirs(context,pkgname,hdr,libs,progs=[]): - hdrdir = _getline(context.env, - 'Enter directory containing %(name)s headers: ' % {'name':pkgname } - ) - hdrpath = pjoin(hdrdir,hdr) - if not isfile(hdrpath): - print "Didn't find ",pkgname," headers in ",hdrpath,". Try again." - return AskForDirs(context,pkgname,hdr,libs,progs) - - libdir = _getline(context.env, - 'Enter directory containing %(name)s libraries: ' % { 'name':pkgname } - ) - for lib in libs: - libpath = pjoin(libdir,context.env['LIBPREFIX']) - libpath += lib - libpath += context.env['LIBSUFFIX'] - if not isfile(libpath): - print "Didn't find ",pkgname," libraries in ",libpath,". Try again." - return AskForDirs(context,pkgname,hdr,libs,progs) - - progdir = None - bindir = None - if len(progs) > 0: - bindir = _getline(context.env, - 'Enter directory containing %(nm)s programs: ' % { 'nm':pkgname } - ) - for prog in progs: - binpath = pjoin(bindir,prog) - if not isfile(binpath): - print "Didn't find ",pkgname," programs in ",bindir,". Try again." - return AskForDirs(context,pkgname,hdr,libs,progs) - - context.env[pkgname + '_lib'] = libdir - context.env[pkgname + '_inc'] = hdrdir - context.env[pkgname + '_bin'] = bindir - context.env.AppendUnique(LIBPATH=[libdir],CPPPATH=[hdrdir],BINPATH=[bindir]) - - return 1 - -def FindPackage(context,pkgname,hdr,libs,code='main(argc,argv);',paths=[], +def FindPackage(ctxt,pkgname,hdr,libs,code='main(argc,argv);',paths=[], objs=[],hdrpfx='',progs=[]): - msg = 'Checking for Package ' + pkgname + '...' - context.Message(msg) - lastLIBS = context.env['LIBS'] - lastLIBPATH = context.env['LIBPATH'] - lastCPPPATH = context.env['CPPPATH'] - lastBINPATH = context.env['BINPATH'] - lastLINKFLAGS = context.env['LINKFLAGS'] + ctxt.Message('Checking for Package ' + pkgname + '...') + ctxt.env[pkgname + '_bin'] = '' + ctxt.env[pkgname + '_lib'] = '' + ctxt.env[pkgname + '_inc'] = '' + lastLIBS = ctxt.env['LIBS'] + lastLIBPATH = ctxt.env['LIBPATH'] + lastCPPPATH = ctxt.env['CPPPATH'] + lastBINPATH = ctxt.env['BINPATH'] + lastLINKFLAGS = ctxt.env['LINKFLAGS'] prog_template = """ #include <%(include)s> int main(int argc, char **argv) { @@ -73,16 +35,16 @@ return 0; } """ - context.env.AppendUnique(LIBS = libs) - if len(context.env['confpath']) > 0: - paths = context.env['confpath'].split(':') + paths + ctxt.env.AppendUnique(LIBS = libs) + if len(ctxt.env['confpath']) > 0: + paths = ctxt.env['confpath'].split(':') + paths paths += [ '/opt/local','/opt/','/sw/local','/sw','/usr/local','/usr','/' ] # Check each path for p in paths: # Clear old settings from previous iterations libdir = '' incdir = '' - bindir = '' + bindir = None objects = [] foundlib = 0 # Check various library directory names @@ -95,8 +57,8 @@ # Check each required library to make sure its a file count = 0 for alib in libs: - library = pjoin(libdir,context.env['LIBPREFIX']) - library += alib + context.env['LIBSUFFIX'] + library = pjoin(libdir,ctxt.env['LIBPREFIX']) + library += alib + ctxt.env['LIBSUFFIX'] if not isfile(library): break else: @@ -111,8 +73,8 @@ count = 0 # Check each of the required object files for o in objs: - obj = pjoin(libdir,context.env['OBJPREFIX']) - obj += o + context.env['OBJSUFFIX'] + obj = pjoin(libdir,ctxt.env['OBJPREFIX']) + obj += o + ctxt.env['OBJSUFFIX'] if not isfile(obj): break else: @@ -166,160 +128,154 @@ continue # We found everything we're looking for, now test it out - context.env.AppendUnique(LIBPATH = [libdir]) - context.env.AppendUnique(CPPPATH = [hdrdir]) - context.env.AppendUnique(BINPATH = [bindir]) - context.env.AppendUnique(LINKFLAGS = objects) - ret = context.TryRun( + ctxt.env.AppendUnique(LIBPATH = [libdir]) + ctxt.env.AppendUnique(CPPPATH = [hdrdir]) + ctxt.env.AppendUnique(BINPATH = [bindir]) + ctxt.env.AppendUnique(LINKFLAGS = objects) + ret = ctxt.TryRun( prog_template % {'include':hdr,'code':code},'.cpp' ) # If the test failed, reset the variables and try next path if not ret: - context.env.Replace(LIBS=lastLIBS, LIBPATH=lastLIBPATH, + ctxt.env.Replace(LIBS=lastLIBS, LIBPATH=lastLIBPATH, CPPPATH=lastCPPPATH, BINPATH=lastBINPATH, LINKFLAGS=lastLINKFLAGS) continue # Otherwise, we've succeded, unset temporary environment settings and # set up the the packages environment variables. - context.env.Replace(LIBS=lastLIBS, LINKFLAGS=lastLINKFLAGS) - context.env[pkgname + '_bin'] = bindir - context.env[pkgname + '_lib'] = libdir - context.env[pkgname + '_inc'] = hdrdir - context.Result('Found: (' + hdrdir + ',' + libdir + ')') - return [libdir,hdrdir,bindir] + ctxt.env.Replace(LIBS=lastLIBS, LINKFLAGS=lastLINKFLAGS) + ctxt.env[pkgname + '_bin'] = bindir + ctxt.env[pkgname + '_lib'] = libdir + ctxt.env[pkgname + '_inc'] = hdrdir + ctxt.Result('Found: (' + hdrdir + ',' + libdir + ')') + return 1 # After processing all paths, we didn't find it - context.Result( 'Not Found' ) + ctxt.Result( 'Not Found' ) - # So, lets try manually asking for it - return AskForDirs(context,pkgname,hdr,libs,progs) + # We didn't find it. Lets ask for a directory name and call ourselves + # again using that directory name + dir = AskForDir(ctxt.env,pkgname) + return FindPackage(ctxt,pkgname,hdr,libs,code,[dir],objs,hdrpfx,progs) -def FindLLVM(conf,env): +def FindLLVM(conf): code = 'new llvm::Module("Name");' conf.FindPackage('LLVM','llvm/Module.h',['LLVMCore','LLVMSystem'],code, - [env['with_llvm']],[],'',['llvm2cpp','llvm-as','llc'] ) + [conf.env['with_llvm']],[],'',['llvm2cpp','llvm-as','llc'] ) -def FindAPR(conf,env): +def FindAPR(conf): code = 'apr_initialize();' return conf.FindPackage('APR',pjoin('apr-1','apr_general.h'),['apr-1'],code, - [env['with_apr']]) + [conf.env['with_apr']]) -def FindAPRU(conf,env): +def FindAPRU(conf): code = 'apu_version_string();' return conf.FindPackage('APRU',pjoin('apr-1','apu_version.h'),['aprutil-1'], - code,[env['with_apru']]) + code,[conf.env['with_apru']]) -def FindLibXML2(conf,env): +def FindLibXML2(conf): code = 'xmlNewParserCtxt();' return conf.FindPackage('LIBXML2',pjoin('libxml','parser.h'),['xml2'],code, - [env['with_xml2']],[],'libxml2') + [conf.env['with_libxml2']],[],'libxml2') -def CheckProgram(context,progname,varname,moredirs=[]): - context.Message("Checking for Program " + progname + "...") - if exists(context.env[varname]): +def CheckProgram(ctxt,progname,varname,moredirs=[],critical=1): + ctxt.Message("Checking for Program " + progname + "...") + if exists(ctxt.env[varname]): ret = 1 else: - paths = sjoin(moredirs,':') + environ['PATH'] - fname = context.env.WhereIs(progname,paths) + paths = sjoin(moredirs,':') + ':' + ctxt.env['ENV']['PATH'] + fname = ctxt.env.WhereIs(progname,paths) ret = fname != None if ret: - context.env[varname] = fname - context.Result(ret) + ctxt.env[varname] = fname + ctxt.Result(ret) + if critical and not ret: + print "Required Program '" + progname + "' is missing." + ctxt.env.Exit(1) return ret -def CheckForHeaders(conf,env): - if not conf.CheckCXXHeader('algorithm'): - _failed(env) - if not conf.CheckCXXHeader('cassert'): - _failed(env) - if not conf.CheckCXXHeader('ios'): - _failed(env) - if not conf.CheckCXXHeader('iostream'): - _failed(env) - if not conf.CheckCXXHeader('istream'): - _failed(env) - if not conf.CheckCXXHeader('map'): - _failed(env) - if not conf.CheckCXXHeader('memory'): - _failed(env) - if not conf.CheckCXXHeader('new'): - _failed(env) - if not conf.CheckCXXHeader('ostream'): - _failed(env) - if not conf.CheckCXXHeader('string'): - _failed(env) - if not conf.CheckCXXHeader('vector'): - _failed(env) - if not conf.CheckCXXHeader('llvm/ADT/StringExtras.h'): - _failed(env) - if not conf.CheckCXXHeader('llvm/System/Path.h'): - _failed(env) - if not conf.CheckCHeader(['apr-1/apr.h','apr-1/apr_pools.h']): - _failed(env) - if not conf.CheckCHeader(['apr-1/apr.h','apr-1/apr_uri.h']): - _failed(env) - if not conf.CheckCHeader('libxml/parser.h'): - _failed(env) - if not conf.CheckCHeader('libxml/relaxng.h'): - _failed(env) - if not conf.CheckCHeader('libxml/xmlwriter.h'): - _failed(env) +def CheckCXXHdr(conf,hdr,critical=1): + ret = conf.CheckCXXHeader(hdr) + if critical and not ret: + print "Required C++ Header <" + hdr + "> is missing." + conf.env.Exit(1) + return ret + +def CheckCHdr(conf,hdr,critical=1): + ret = conf.CheckCHeader(hdr) + if critical and not ret: + print "Required C Header <" + hdr + "> is missing." + conf.env.Exit(1) + return ret + + +def CheckForHeaders(conf): + CheckCXXHdr(conf,'algorithm') + CheckCXXHdr(conf,'cassert') + CheckCXXHdr(conf,'ios') + CheckCXXHdr(conf,'iostream') + CheckCXXHdr(conf,'istream') + CheckCXXHdr(conf,'map') + CheckCXXHdr(conf,'memory') + CheckCXXHdr(conf,'new') + CheckCXXHdr(conf,'ostream') + CheckCXXHdr(conf,'string') + CheckCXXHdr(conf,'vector') + CheckCXXHdr(conf,'llvm/ADT/StringExtras.h') + CheckCXXHdr(conf,'llvm/System/Path.h') + CheckCHdr(conf,['apr-1/apr.h','apr-1/apr_pools.h']) + CheckCHdr(conf,['apr-1/apr.h','apr-1/apr_uri.h']) + CheckCHdr(conf,'libxml/parser.h') + CheckCHdr(conf,'libxml/relaxng.h') + CheckCHdr(conf,'libxml/xmlwriter.h') return 1 -def CheckForPrograms(conf,env): - if not conf.CheckProgram('g++','with_gxx'): - _failed(env) - if not conf.CheckProgram('llc','with_llc'): - _failed(env) - if not conf.CheckProgram('gccld','with_gccld'): - _failed(env) - if not conf.CheckProgram('llvm-dis','with_llvmdis',[env['LLVM_bin']]): - _failed(env) - if not conf.CheckProgram('llvm-as','with_llvmas',[env['LLVM_bin']]): - _failed(env) - if not conf.CheckProgram('llvm-gcc','with_llvmgcc',[env['LLVM_bin']]): - _failed(env) - if not conf.CheckProgram('llvm-g++','with_llvmgxx',[env['LLVM_bin']]): - _failed(env) - if not conf.CheckProgram('llvm2cpp','with_llvm2cpp',[env['LLVM_bin']]): - _failed(env) - if not conf.CheckProgram('llvm-ar','with_llvmar',[env['LLVM_bin']]): - _failed(env) - if not conf.CheckProgram('gperf','with_gperf'): - _failed(env) - if not conf.CheckProgram('runtest','with_runtest'): +def CheckForPrograms(conf): + conf.CheckProgram('g++','with_gxx') + conf.CheckProgram('llc','with_llc',[conf.env['LLVM_bin']]) + conf.CheckProgram('llvm-dis','with_llvmdis',[conf.env['LLVM_bin']]) + conf.CheckProgram('llvm-as','with_llvmas',[conf.env['LLVM_bin']]) + conf.CheckProgram('llvm2cpp','with_llvm2cpp',[conf.env['LLVM_bin']]) + conf.CheckProgram('llvm-ar','with_llvmar',[conf.env['LLVM_bin']]) + conf.CheckProgram('gccld','with_gccld',[conf.env['LLVM_bin']]) + conf.CheckProgram('llvm-gcc','with_llvmgcc') + conf.CheckProgram('llvm-g++','with_llvmgxx') + conf.CheckProgram('gperf','with_gperf') + if not conf.CheckProgram('runtest','with_runtest',[],0): env['with_runtest'] = None print "*** TESTING DISABLED ***" - if not conf.CheckProgram('doxygen','with_doxygen'): + if not conf.CheckProgram('doxygen','with_doxygen',[],0): env['with_runtest'] = None print "*** DOXYGEN DISABLED ***" - if not conf.CheckProgram('xsltproc','with_xsltproc'): + if not conf.CheckProgram('xsltproc','with_xsltproc',[],0): env['with_runtest'] = None print "*** XSLTPROC DISABLED ***" return 1 -#dnl AC_PATH_PROG(path_EGREP, egrep, egrep) -#dnl AC_PATH_PROG(path_GPP, g++, g++) -#dnl AC_PATH_PROG(path_GPROF, gprof, gprof) -#dnl AC_PATH_PROG(path_PERL, perl, perl) -#dnl AC_PATH_PROG(path_PKGDATA, pkgdata, pkgdata) -#dnl AC_PATH_PROG(path_SORT, sort, sort) -#dnl AC_PATH_PROG(path_UNIQ, uniq, uniq) - def ConfigureHLVM(env): + save_path = env['ENV']['PATH'] conf = env.Configure(custom_tests = { - 'FindPackage':FindPackage, 'AskForDirs':AskForDirs, - 'CheckProgram':CheckProgram }, + 'FindPackage':FindPackage, 'CheckProgram':CheckProgram }, conf_dir=pjoin(env['BuildDir'],'conftest'), - log_file=pjoin(env['BuildDir'],'config.log') + log_file=pjoin(env['BuildDir'],'config.log'), + config_h=pjoin(env['BuildDir'],'hlvm','Base','config.h') ) - env['LIBS'] = "" - FindLibXML2(conf,env) - FindAPR(conf,env) - FindAPRU(conf,env) - FindLLVM(conf,env) - CheckForPrograms(conf,env) - CheckForHeaders(conf,env) + rlist = [] + for p in env['confpath'].split(':'): + if p != '' and exists(p) and exists(pjoin(p,'bin')): + rlist = [p] + rlist + for p in rlist: + env['ENV']['PATH'] = pjoin(p,'bin') + ':' + env['ENV']['PATH'] + + env['LIBS'] = '' + + FindLibXML2(conf) + FindAPR(conf) + FindAPRU(conf) + FindLLVM(conf) + CheckForHeaders(conf) + CheckForPrograms(conf) conf.Finish() + env['ENV']['PATH'] = save_path Modified: build/hlvm.py =================================================================== --- build/hlvm.py 2006-06-12 10:50:07 UTC (rev 238) +++ build/hlvm.py 2006-06-12 10:51:09 UTC (rev 239) @@ -77,7 +77,7 @@ env.AppendUnique(LIBPATH=[env.Dir('.')]) if 'install' in COMMAND_LINE_TARGETS: libdir = pjoin(env['prefix'],'lib') - env.Install(dir,lib) + env.Install(libdir,lib.path) return 1 def InstallHeader(env,hdrs): @@ -87,6 +87,11 @@ env.Install(dir,hdrs) return 1 +def InstallDoc(env,docs): + if 'install' in COMMAND_LINE_TARGETS: + dir = pjoin(env['prefix'],'docs') + env.install(dir,docs) + def GetBuildEnvironment(targets,arguments): env = Environment(); env.EnsurePythonVersion(2,3) @@ -99,9 +104,9 @@ buildname = 'default' options_file = '.' + buildname + '_options' if not exists(options_file): - opts = Options('.options_cache') + opts = Options('.options_cache',arguments) else: - opts = Options(options_file) + opts = Options(options_file,arguments) opts.AddOptions( BoolOption('assertions','Include assertions in the code',1), BoolOption('debug','Build with debug options turned on',1), @@ -115,7 +120,7 @@ opts.Add('with_llvm','Specify where LLVM is located','/usr/local') opts.Add('with_apr','Specify where apr is located','/usr/local/apr') opts.Add('with_apru','Specify where apr-utils is located','/usr/local/apr') - opts.Add('with_xml2','Specify where LibXml2 is located','/usr/local') + opts.Add('with_libxml2','Specify where LibXml2 is located','/usr/local') opts.Add('with_gxx','Specify where the GCC C++ compiler is located', '/usr/local/bin/g++') opts.Add('with_llc','Specify where the LLVM compiler is located', @@ -202,7 +207,7 @@ else : VariantName+='o' - BuildDir = 'build.' + VariantName + BuildDir = '_' + buildname env['Variant'] = VariantName env['BuildDir'] = BuildDir env['AbsObjRoot'] = env.Dir('#' + BuildDir).abspath @@ -230,7 +235,7 @@ scons --clean - to remove all derived (built) objects scons check - to run the DejaGnu test suite scons install - to install HLVM to a target directory - scons doxygen - to generate the doxygen documentation + scons docs - to generate the doxygen documentation Options: """ + opts.GenerateHelpText(env,sort=cmp)) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 05:51:57 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 06:51:57 -0400 Subject: [hlvm-commits] r241 - docs Message-ID: <200606121051.k5CApvTR026272@sneezy.swagora.com> Author: reid Date: 2006-06-12 06:51:56 -0400 (Mon, 12 Jun 2006) New Revision: 241 Log: Remove redundant and useless files Removed: docs/HLVM.html docs/HLVM.rng Deleted: docs/HLVM.html =================================================================== --- docs/HLVM.html 2006-06-12 10:51:34 UTC (rev 240) +++ docs/HLVM.html 2006-06-12 10:51:56 UTC (rev 241) @@ -1,10 +0,0 @@ - - - - - Relax NG Grammar Documentation - - - - - Deleted: docs/HLVM.rng =================================================================== --- docs/HLVM.rng 2006-06-12 10:51:34 UTC (rev 240) +++ docs/HLVM.rng 2006-06-12 10:51:56 UTC (rev 241) @@ -1,614 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This is the starting pattern for the HLVM grammar. It - specifies that the pattern named >HLVM.elem - must be matched. - - - - - - - - - - - - - - - - [^:]+ - 1024 - - - - - - [^:]+:[^:]+ - 1024 - - - - - - - TRUE - True - yes - Yes - YES - 1 - FALSE - False - no - No - NO - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - any - bool - char - f32 - f43 - f64 - f80 - f128 - octet - s8 - s16 - s32 - s64 - s128 - u8 - u16 - u32 - u64 - u128 - void - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - appending - external - internal - linkonce - weak - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 1024 - [01]+ - - - - - - - - - - - - - 1 - 1024 - [0-7]+ - - - - - - - - - - - - - 1 - 1024 - [+\-]?\d+ - - - - - - - - - - - - - 1 - 1024 - ([0-9A-Fa-f][0-9A-Fa-f])+ - - - - - - - - - - - - - - - - - 1 - - 5 - [#][0-9A-Fa-f]{4,4} - - - - - - - - - - - - - - 1 - 1024 - ninf|pinf|nan|signan|zero|nzero|[+\-]?0x[0-9A-Fa-f](\.[0-9A-Fa-f]+)?p[-+][0-9]+|#[0-9A-Fa-f]{16}|#[0-9a-fA-F]{8}|[+\-]?\d+\.\d*([Ee][+\-]?\d+)? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 05:52:55 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 06:52:55 -0400 Subject: [hlvm-commits] r242 - hlvm/Reader Message-ID: <200606121052.k5CAqt6a026287@sneezy.swagora.com> Author: reid Date: 2006-06-12 06:52:54 -0400 (Mon, 12 Jun 2006) New Revision: 242 Log: Fix a compilation problem resulting from change in directory location of generated include file. Modified: hlvm/Reader/XMLReader.cpp Modified: hlvm/Reader/XMLReader.cpp =================================================================== --- hlvm/Reader/XMLReader.cpp 2006-06-12 10:51:56 UTC (rev 241) +++ hlvm/Reader/XMLReader.cpp 2006-06-12 10:52:54 UTC (rev 242) @@ -53,7 +53,7 @@ namespace { const char HLVMGrammar[] = -#include +#include ; class XMLReaderImpl : public XMLReader { _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 13:17:44 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 14:17:44 -0400 Subject: [hlvm-commits] r243 - docs Message-ID: <200606121817.k5CIHiqJ017878@sneezy.swagora.com> Author: reid Date: 2006-06-12 14:17:43 -0400 (Mon, 12 Jun 2006) New Revision: 243 Log: Final version of GettingStarted.html for the 0.1 pre-release. Modified: docs/GettingStarted.html Modified: docs/GettingStarted.html =================================================================== --- docs/GettingStarted.html 2006-06-12 10:52:54 UTC (rev 242) +++ docs/GettingStarted.html 2006-06-12 18:17:43 UTC (rev 243) @@ -7,7 +7,6 @@
    Getting Started with the HLVM System
    -
    CAUTION: This document is a work in progress.
    1. Quick Start (For The Impatient)
    2. Overview @@ -17,12 +16,29 @@
    3. Software
    -
  • Building Other Packages
  • -
  • Building HLVM With SCons
  • +
  • Building Other Packages +
      +
    1. Single Separate Install Area
    2. +
    3. apr
    4. +
    5. apr-util
    6. +
    7. llvm
    8. +
    9. llvm-gcc4
    10. +
    11. gperf
    12. +
    13. deja-gnu/
    14. +
    +
  • +
  • Building HLVM With SCons +
      +
    1. Quick Start
    2. +
    3. About SCons And HLVM
    4. +
    5. SCons Options Supported
    6. +
    7. Build Targets
    8. +
    +
  • -

    Author:Reid Spencer.

    +

    Author: Reid Spencer.

    @@ -39,12 +55,15 @@
  • Read the documentation.
  • Remember that you were warned twice about reading the documentation.
  • Obtain, build, and install the dependent packages. You need llvm, - llvm-gcc, apr, apr-util, libxml2, scons and gcc
  • + llvm-gcc4, apr, apr-util, libxml2, scons, gperf, gcc, dejagnu, python, tcl, + and expect.
  • Obtain the HLVM Source Code (svn://hlvm.org/hlvm).
  • -
  • Build hlvm with the "scons -Q" command.
  • +
  • Build hlvm with: scons -Q mode=debug confpath=/paths/to/pkgs
  • The configuration utility might ask you where your 3rd party software is located. Please enter the paths appropriately.
  • -
  • Install hlvm with "scons -Q install prefix=/path/to/put/hlvm".
  • +
  • Run the test suite with: scons -Q check
  • +
  • Install hlvm with: scons -Q mode=debug install + prefix=/path/to/put/hlvm
  • @@ -113,18 +132,12 @@

    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.

    - - - -
    +

    Hardware

    HLVM supports whatever hardware LLVM supports. For details, please see LLVM's documentation

    -
    - - -
    +

    Software

    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 @@ -133,16 +146,23 @@ - - + + + + + + + + It handles all the low level details for - - + + - + - + - + - - - - - - + @@ -198,40 +216,47 @@ - + + + + + + - + - - - - - - + - +
    PackageVersionNotes
    llvm1.8cvs2gcc≥3.4.6 (4.1 recommended)C/C++ compiler for compiling HLVM.
    llvm + 11.8cvs Low Level Virtual Machine. This compler infrastructure provides the low level code generation and optimization, linking, bytecode, JIT, and other facilities HLVM needs. LLVM is HLVM's sister project. - It handles all the low level details for HLVM.
    llvm-gcc44llvm-gcc4 + 14 LLVM C/C++ Frontend, Version 4. This is a full GCC (Gnu Compiler Collection) compiler but with extensions for generating code via LLVM instead of GCC's normal RTL-based backend. This tool can compile C, C++, @@ -162,28 +182,26 @@
    apr-util 1.2.7Apache Portable Runtime Utilities. Additional runtime utilities.Apache Portable Runtime Utilities. Additional runtime utilities for + DBM database access, code set conversion (iconv) and miscellaneous other + utilities.
    libxml2 2.6.24XML parsing and validation toolkit.XML parsing and validation toolkit. This is used for reading and + writing XML forms of the Abstract Syntax Tree.
    gperf 2.7.2 (3.0.1 won't work)GNU Perfect Hash Function Generator, used for recognizing element - and attribute names in XML documents.GNU Perfect Hash Function Generator. This is used for recognizing + element and attribute names in XML documents.
    gcc≥3.4.4C/C++ compiler for compiling HLVM
    subversion ≥1.1Suversion access to HLVM source repository.Subversion source Subversion access to HLVM source repository.
    scons
    dejagnu 1.4.2Automated test suite1Test suite automation package. You only need this if you want to + run the automated test suite.
    expect5.38.0Test scripting language. DejaGnu is based on this. You only need + this if you want to run the automated test suite.
    tcl 8.3, 8.4Automated test suite1Test Control Language. Expect is based on this. You only need this if + you want to run the automated test suite.
    expect5.38.0Automated test suite1
    doxygen ≥1.4.43C/C++ automated documentation generatorC/C++ automated documentation generator for building the XHTML + documentation from the comments in the HLVM header files. You only need + this if you intend to build the documentation.
    xsltproc ≥2.6.243XSLT Processor (comes with libxml2)XSLT Processor (comes with libxml2). This is used to transform the + Relax NG schema for the HLVM Abstract Syntax Tree (AST) into + documentation that describes the AST. You only need this if you intend + to build the documentation.

    Notes:

    @@ -250,65 +275,174 @@
    -

    Separate Install Area

    +

    Single Separate Install Area

    It is suggested that you keep a separate installation area for building the - things that HLVM depends upon. This is the location in your file system where - you will install the built packages. It is used with the --prefix - option to the configure programs of the 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.

    -

    libxml2

    + 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.

    +

    libxml2

      -
    • Always build libxml2 first. It doesn't depend on much else
    • -
    • Use version 2.6.24 or later
    • +
    • If your system doesn't already have a modern version of libxml2, you can + generally build this quite painlessly as it doesn't depend on much + else.
    • +
    • You need a modern version of this package, in the 2.6 series, in order + to successfully build HLVM. HLVM uses the Relax/NG validator that was added + and improved in the 2.6 series of releases. Reid used 2.6.24 to develop HLVM + and you are advised to use that version or a later one.
    • +
    • See the README file in the libxml2 root directory.
    • +
    • Build with:
      +    ./configure --prefix=/where/to/install 
      +    make 
      +    make install
    • +
    • Use ./configure --help to get a full list of libxml2's + configuration options; it has many. Not everything libxml2 provides is + needed. We need the parser, the textwriter and the relaxng validator.
    -

    apr

    +

    apr

      -
    • Optionally use the --enable-debug configure flag.
    • -
    • Required to use the --enable-threads configure flag.
    • -
    • Required to use the --enable-other-child configure flag.
    • +
    • This package builds quite easily as well and doesn't depend on + anything other than your operating system.
    • +
    • You need version 1.2.7 or later.
    • +
    • See the README.dev for build instructions.
    • +
    • Build with:
      +    ./buildconf    #generates the configure script
      +    ./configure --prefix=/where/to/install --enable-threads --enable-other-child
      +    make
      +    make install
    • +
    • Optionally use the --enable-debug configure flag for making + debugging easier (and your HLVM programs run slower).
    -

    apr-util

    -

    No special instructions.

    -

    llvm

    +

    apr-util

      +
    • This package builds quite easily and doesn't depend on much.
    • +
    • Build with:
      +    ./buildconf    #generates the configure script
      +    ./configure --prefix=/where/to/install --with-apr=/path/to/apr
      +    make
      +    make install
    • +
    • apr-util provides ldap, dbm, and iconv services all of which HLVM will + eventually use. apr-util's configure script will generally be able + to figure out what your system has and use it. However, if it can't you + might want to use the various --with-* options to tell apr-util + where your packages are located.
    • +
    +

    llvm

    +
    • You must use the latest CVS version of LLVM. LLVM is HLVM's sister project and the two are intricately connected. Consequently, patches are made to LLVM in order to satisfy HLVM's requirements. At some point, this restriction will be lifted as a released version of LLVM will contain all of HLVM's requirements. However, while in development you should checkout the latest version of LLVM and keep it up to date.
    • -
    • Configure LLVM with --prefix=/path/to/install/llvm
    • -
    • Build LLVM with "make tools-only". You don't need the runtime library - because we will be using llvm-gcc4
    • +
    • Build with:
      +    cd /path/to/llvm/
      +    mkdir ../build
      +    cd ../build
      +    ../llvm/configure --prefix=/install/dir --with-llvmgccdir=/path/to/llvmgcc
      +    make ENABLE_OPTIMIZED=1 tools-only
      +    make tools-only
      +    make install
    • +
    • Note: that you are actually building two copies of LLVM here. + The first one is built with ENABLE_OPTIMIZED=1. This is for llvm-gcc4 to + use and is optimized for quick compiles. The llvm-gcc4 configuration will + know how to find the build targets of this optimized release version. The + second build is a debug build for linking with HLVM. This ensures that you + can debug into LLVM, should you need to.
    • +
    • Note: that we only build the tools-only target. This + saves us from building the llvm-gcc3 runtime libraries and examples that we + won't use. It also gets around a chicken-and-egg problem where the LLVM + runtime libraries depend on llvm-gcc3 but llvm-gcc3 depends on the LLVM + tools being built. Use of llvm-gcc4 completely gets around this problem and + so it is only necessary to build the LLVM tools and not the runtime library.
    -

    llvm-gcc

    +

    llvm-gcc4

      -
    • You must use version for of llvm-gcc, not version 3.
    • +
    • You must use version 4 of llvm-gcc, not version 3. Version 4 is + much better integrated with LLVM, supports more languages, builds native + object files by default, and otherwise looks and acts more like a full gcc + compiler than did llvm-gcc3.
    • Obtain llvm-gcc4 source from http://nondot.org/sabre/2006-06-01-llvm-gcc-4.tar.gz
    • Alternatively, you can obtain a binary version of llvm-gcc4 for - Linux (Fedora Core 3) from + x86 Linux (Fedora Core 3) from http://llvm.org/2006-06-01-llvm-gcc4-linux-x86-binary.tar.gz
    • You must install llvm-gcc4 into an installation area that is not used by any other software, particularly gcc. This is required because you might clobber your compiler's runtime libraries and tools - otherwise.
    • -
    • See the README.llvm in the top of the llvm-gcc4 source bundel + otherwise. Just pick an installation directory where no other software is + installed.
    • +
    • See the README.LLVM in the top of the llvm-gcc4 source tree if you're inclined to build llvm-gcc4 on your own. It isn't hard but there are a few things you need to do correctly.
    • +
    • Basic build steps:
      +    mkdir llvm-gcc
      +    cd llvm-gcc
      +    tar zxf llvm-gcc4-x.y.source.tar.gz
      +    mkdir obj
      +    mkdir install
      +    cd obj
      +    ../llvm-gcc4-x.y.source/configure --prefix=`pwd`/../install/ \
      +      -enable-llvm=$LLVMOBJDIR --enable-languages=c,c++,objc,obj-c++
      +    make
      +    make install
    • +
    • Note: that the -enable-llvm option should specify the root of + the build directory in which LLVM was built. If you built LLVM according to + the instructions above, this directory will contain directories named + Release and Debug. llvm-gcc4 will look for its tools in + the Release directory.
    • +
    • Note: that the --enable-languages option shown above provides + the complete list of languages that could be built with llvm-gcc4. However, + HLVM only needs C and C++ so you can shorten the build for llvm-gcc4 a + little by dropping ,objc,obj-c++ from this option.
    +

    gperf

    +
      +
    • Pretty simple tool to build.
    • +
    • You need version 2.7.2. HLVM hasn't been tried with any other + version.
    • +
    • Build with:
      +    ./configure --prefix=/install/path
      +    make
      +    make install
    • +
    +

    deja-gnu/

    +
      +
    • Simple tool to build
    • +
    • You need version 1.4.4 or later
    • +
    • Build with:
      +    ./configure --prefix=/install/path
      +    make
      +    make install
    • +
    +
    +

    Quick Start

    +

    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:

    +  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 + be the Single Separate Install Area where you installed + all the other packages such as llvm, apr, apr-util, etc.

    + +

    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 (Python) of SCons was attractive because of the - platform support and the need to do intricate things to build HLVM. If you + programming language support of SCons (Python) was attractive because of the + platform support and the need to do intricate things to build HLVM. HLVM's + use of SCons departs a bit from the norm because SCons doesn't provide + everything that HLVM needs. If you are not familiar with SCons, we recommend you take a quick peek at the SCons User Manual. While an in depth knowledge is not needed to build HLVM, having @@ -334,66 +468,68 @@ scons -Q --help option to get a description of all of them.

  • Configuration options are saved in cache files so you don't have to keep repeating them on each invocation of scons
  • -
  • The important options to use are: -
      -
    • -Q. Normally scons is quite verbose about all the - configuration checks it is doing. This option just tells scons to be quiet - about such things.
    • -
    • --prefx=/path/to/install/dir. This option tells the build - system where HLVM should be installed. The default is /usr/local. -
    • -
    • confpath=<path>. This option provides a colon (:) - separated list of paths to search when configuring HLVM. This is handy if - you normally install your software in an unusual place. For example, some - of our developers install software to /proj/install or - /more/install. By using this option, the configuration code will - search the paths for the packages and tools that it is looking for. - Furthermore, it will give priority to the confpath paths over the - regular places that it looks.
    • -
    • mode=<mode_name>. This gives a name to your - configuration. You can replace <mode_name> with any name - you like. For example you might think of your configuration as - "debug" or "optimized". When you name a configuration this way, your - configuration parameters will be saved in a file named - .<mode_name>_options. To repeat the options specified the - first time, simply issue the command scons mode=<mode_name> - and all your configuration options will be read from the cache file.
    • -
    • debug=0|1. This turns debug mode on and off. Debug mode - causes the compiler to emit debug symbols and turns on the HLVM_DEBUG - pre-processor symbol so that debug code can be included.
    • -
    • assertions=0|1. This turns assertions on or off. This is - separate from debug because we might want to have a release or optimized - version that includes assertions but not debug code.
    • -
    • inline=0|1. This controls whether the compiler should emit - inline functions as real functions or attempt to inline them. When - building a version you intend to debug with gdb, it is often - handy to turn this off. You pay a performance penalty but it is also much - easier to debug the code.
    • -
    • optimize. This option tells the compiler to optimize the - generated code. This may make it difficult to debug the resulting program. - However, it will also make the program run much faster.
    • -
    • with_*. There are a variety of options that are prefixed with - with_, for example with_llvm or with_apr. Thise - options allow you to tell scons where a specific package is located on - your system. See the scons -Q --help output for a full list of - these options.
    • -
  • -
  • The default target will simply build all the libraries and tools.
  • -
  • There are additional pseudo-targets (aliases in SCons lingo) that - you can build: -
      -
    • check. This will run the Deja-Gnu test suite located in the - test directory. If you're making changes to HLVM, it is handy to - run this frequently to ensure that you haven't caused any regressions. - Patches that do not pass this test suite will not be accepted.
    • -
    • install. This alias will install the HLVM header files, - libraries, tools and documentation to the install directory (which was - specified with the --prefix= configuration option).
    • -
    • docs. By default, documentation is not built because it is - time consuming and not necessary for each build. When this alias is used, - the doxygen and XSLT generated documentation will be built.
    • -
  • +

    SCons Options Supported

    +

    The important options that may be given on the scons command line are:

    +
      +
    • -Q. Normally scons is quite verbose about all the + configuration checks it is doing. This option just tells scons to be quiet + about such things.
    • +
    • --prefx=/path/to/install/dir. This option tells the build + system where HLVM should be installed. The default is /usr/local. +
    • +
    • confpath=<path>. This option provides a colon (:) + separated list of paths to search when configuring HLVM. This is handy if + you normally install your software in an unusual place. For example, some + of our developers install software to /proj/install or + /more/install. By using this option, the configuration code will + search the paths for the packages and tools that it is looking for. + Furthermore, it will give priority to the confpath paths over the + regular places that it looks.
    • +
    • mode=<mode_name>. This gives a name to your + configuration. You can replace <mode_name> with any name + you like. For example you might think of your configuration as + "debug" or "optimized". When you name a configuration this way, your + configuration parameters will be saved in a file named + .<mode_name>_options. To repeat the options specified the + first time, simply issue the command scons mode=<mode_name> + and all your configuration options will be read from the cache file.
    • +
    • debug=0|1. This turns debug mode on and off. Debug mode + causes the compiler to emit debug symbols and turns on the HLVM_DEBUG + pre-processor symbol so that debug code can be included.
    • +
    • assertions=0|1. This turns assertions on or off. This is + separate from debug because we might want to have a release or optimized + version that includes assertions but not debug code.
    • +
    • inline=0|1. This controls whether the compiler should emit + inline functions as real functions or attempt to inline them. When + building a version you intend to debug with gdb, it is often + handy to turn this off. You pay a performance penalty but it is also much + easier to debug the code.
    • +
    • optimize. This option tells the compiler to optimize the + generated code. This may make it difficult to debug the resulting program. + However, it will also make the program run much faster.
    • +
    • with_*. There are a variety of options that are prefixed with + with_, for example with_llvm or with_apr. Thise + options allow you to tell scons where a specific package is located on + your system. See the scons -Q --help output for a full list of + these options.
    • +
    +

    Build Targets

    +

    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:

    +
      +
    • check. This will run the Deja-Gnu test suite located in the + test directory. If you're making changes to HLVM, it is handy to + run this frequently to ensure that you haven't caused any regressions. + Patches that do not pass this test suite will not be accepted.
    • +
    • install. This alias will install the HLVM header files, + libraries, tools and documentation to the install directory (which was + specified with the --prefix= configuration option).
    • +
    • docs. By default, documentation is not built because it is + time consuming and not necessary for each build. When this alias is used, + the doxygen and XSLT generated documentation will be built.
    • +
    _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 14:47:05 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 15:47:05 -0400 Subject: [hlvm-commits] r244 - hlvm/Reader Message-ID: <200606121947.k5CJl5p9022885@sneezy.swagora.com> Author: reid Date: 2006-06-12 15:47:04 -0400 (Mon, 12 Jun 2006) New Revision: 244 Log: Fix a release mode compile problem where a function didn't return a value because the assert statement was compiled out. Modified: hlvm/Reader/XMLReader.cpp Modified: hlvm/Reader/XMLReader.cpp =================================================================== --- hlvm/Reader/XMLReader.cpp 2006-06-12 18:17:43 UTC (rev 243) +++ hlvm/Reader/XMLReader.cpp 2006-06-12 19:47:04 UTC (rev 244) @@ -220,6 +220,7 @@ default: hlvmDeadCode("Invalid Linkage Type"); } + return ExternalLinkage; } uint64_t _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 14:55:40 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 15:55:40 -0400 Subject: [hlvm-commits] r245 - / Message-ID: <200606121955.k5CJtekc024617@sneezy.swagora.com> Author: reid Date: 2006-06-12 15:55:40 -0400 (Mon, 12 Jun 2006) New Revision: 245 Log: Make this a little more user friendly by handling the confpath option. Also, add some new targets for building Release, Debug, Optimized, and Profile versions. Modified: Makefile Modified: Makefile =================================================================== --- Makefile 2006-06-12 19:47:04 UTC (rev 244) +++ Makefile 2006-06-12 19:55:40 UTC (rev 245) @@ -9,34 +9,45 @@ # make. #------------------------------------------------------------------------------ -.PHONY: all check install hlvm tools +MYMODE := Debug +MYPATH := /proj/llvm/cfe/install:/proj/install + +.PHONY: all debug Debug optimized Optimized release Release check clean \ + install hlvm tools + all: - scons -Q + scons -Q mode=$(MYMODE) -debug: - scons -Q mode=debug debug=1 assertions=1 optimized=0 inline=0 small=0 +debug Debug: + scons -Q mode=Debug debug=1 assertions=1 optimized=0 inline=0 \ + small=0 confpath=$(MYPATH) -optimized: - scons -Q mode=optimized debug=0 assertions=1 optimized=1 inline=1 \ - small=0 +optimized Optimized: + scons -Q mode=Optimized debug=0 assertions=1 optimized=1 inline=1 \ + small=0 strip=0 confpath=$(MYPATH) -release: - scons -Q mode=release debug=0 assertions=0 optimized=1 inline=1 small=1 +release Release: + scons -Q mode=Release debug=0 assertions=0 optimized=1 inline=1 \ + small=1 strip=1 confpath=$(MYPATH) +profile Profile: + scons -Q mode=Profile debug=0 assertions=0 optimized=1 inline=1 \ + small=0 strip=0 profile=1 confpath=$(MYPATH) + check: all - scons -Q check + scons -Q check mode=$(MYMODE) clean: - scons -Q --clean + scons -Q --clean mode=$(MYMODE) install: - scons -Q install + scons -Q install mode=$(MYMODE) doc: - scons -Q docs + scons -Q docs mode=$(MYMODE) hlvm: - cd hlvm ; scons -Q -u + cd hlvm ; scons -Q -u mode=$(MYMODE) tools: - cd tools ; scons -Q -u + cd tools ; scons -Q -u mode=$(MYMODE) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 14:56:26 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 15:56:26 -0400 Subject: [hlvm-commits] r246 - build Message-ID: <200606121956.k5CJuQc7024632@sneezy.swagora.com> Author: reid Date: 2006-06-12 15:56:25 -0400 (Mon, 12 Jun 2006) New Revision: 246 Log: Remove a debug printout and some redundant Depends. Modified: build/check.py Modified: build/check.py =================================================================== --- build/check.py 2006-06-12 19:55:40 UTC (rev 245) +++ build/check.py 2006-06-12 19:56:25 UTC (rev 246) @@ -54,7 +54,6 @@ context = os.path.basename(env.File(target[0]).path) context = re.sub('(.*?)\..*','\\1',context) - print "context=",context os.system('cd ' + pjoin(env['BuildDir'],'test') + '; DEJAGNU="'+pjoin(env['AbsObjRoot'],'test','site.exp')+'" '+ env['with_runtest'] + ' --tool ' + context) @@ -74,7 +73,5 @@ env.Check(['#test/' + dir + '.sum','#test/' + dir + '.log'], getTestCases(dir,env)+['#test/site.exp']) env.Alias('check','#test/' + dir + '.log') - env.Depends('check','#tools/hlvm-compiler/hlvm-compiler') - env.Depends('check','#tools/hlvm-xml2xml/hlvm-xml2xml') return 1 _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 14:56:52 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 15:56:52 -0400 Subject: [hlvm-commits] r247 - tools/hlvm Message-ID: <200606121956.k5CJuq5O024648@sneezy.swagora.com> Author: reid Date: 2006-06-12 15:56:51 -0400 (Mon, 12 Jun 2006) New Revision: 247 Log: Make sure the hlvm tool gets installed. Modified: tools/hlvm/SConscript Modified: tools/hlvm/SConscript =================================================================== --- tools/hlvm/SConscript 2006-06-12 19:56:25 UTC (rev 246) +++ tools/hlvm/SConscript 2006-06-12 19:56:51 UTC (rev 247) @@ -24,7 +24,7 @@ Import('env') hlvm.GetBytecode(env) env.BytecodeArchive('hlvm.bca',hlvm.GetAllCXXFiles(env)) -env.Program('hlvm', hlvm.GetAllCXXFiles(env), +prog = env.Program('hlvm', hlvm.GetAllCXXFiles(env), LIBS=[ 'HLVMRuntime', 'HLVMBase', @@ -35,3 +35,4 @@ 'stdc++' ], ) +hlvm.InstallProgram(env,prog) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 14:57:27 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 15:57:27 -0400 Subject: [hlvm-commits] r248 - build Message-ID: <200606121957.k5CJvRsu024663@sneezy.swagora.com> Author: reid Date: 2006-06-12 15:57:26 -0400 (Mon, 12 Jun 2006) New Revision: 248 Log: Use the correct optiont to llvm-gcc. Its not --emit-llvm, its -emit-llvm Modified: build/codegen.py Modified: build/codegen.py =================================================================== --- build/codegen.py 2006-06-12 19:56:51 UTC (rev 247) +++ build/codegen.py 2006-06-12 19:57:26 UTC (rev 248) @@ -9,7 +9,7 @@ tgt = target[0].path theAction = env.Action( "PATH='" + env['LLVM_bin'] + "' " + env['with_llvmgxx'] + env['CXXFLAGS'] + - " -c --emit-llvm -x c++ " + src + " -o - | " + + " -c -emit-llvm -x c++ " + src + " -o - | " + env['with_llvmdis'] + " -o - | " + env['with_llvm2cpp'] + " " + env['LLVM2CPPFLAGS'] + " -o " + tgt ) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 14:58:43 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 15:58:43 -0400 Subject: [hlvm-commits] r249 - build Message-ID: <200606121958.k5CJwhQn024679@sneezy.swagora.com> Author: reid Date: 2006-06-12 15:58:42 -0400 (Mon, 12 Jun 2006) New Revision: 249 Log: Make installed tools automatically be a dependency of the "check" targets so that the tools will get rebuilt if they are out of date before the test suite is run. Also, add a "strip" option to allow release builds to be stripped of symbols. Modified: build/hlvm.py Modified: build/hlvm.py =================================================================== --- build/hlvm.py 2006-06-12 19:57:26 UTC (rev 248) +++ build/hlvm.py 2006-06-12 19:58:42 UTC (rev 249) @@ -71,6 +71,8 @@ if 'install' in COMMAND_LINE_TARGETS: dir = pjoin(env['prefix'],'bin') env.Install(dir,prog) + if 'check' in COMMAND_LINE_TARGETS: + env.Depends('check',prog[0].path) return 1 def InstallLibrary(env,lib): @@ -114,6 +116,7 @@ BoolOption('optimize','Build object files with optimization',0), BoolOption('profile','Generate profiling aware code',0), BoolOption('small','Generate smaller code rather than faster',0), + BoolOption('strip','Strip executables of their symbols',0), ) opts.Add('prefix','Specify where to install HLVM','/usr/local') opts.Add('confpath','Specify additional configuration dirs to search','') @@ -207,7 +210,13 @@ else : VariantName+='o' - BuildDir = '_' + buildname + if env['strip']: + VariantName +='T' + env['LINKFLAGS'] += ' -s' + else: + VariantName += 't' + + BuildDir = buildname env['Variant'] = VariantName env['BuildDir'] = BuildDir env['AbsObjRoot'] = env.Dir('#' + BuildDir).abspath _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 15:35:11 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 16:35:11 -0400 Subject: [hlvm-commits] r250 - / docs Message-ID: <200606122035.k5CKZBK6026001@sneezy.swagora.com> Author: reid Date: 2006-06-12 16:35:10 -0400 (Mon, 12 Jun 2006) New Revision: 250 Log: Flesh out and document the usage of the Makefile. Modified: Makefile docs/GettingStarted.html Modified: Makefile =================================================================== --- Makefile 2006-06-12 19:58:42 UTC (rev 249) +++ Makefile 2006-06-12 20:35:10 UTC (rev 250) @@ -9,9 +9,15 @@ # make. #------------------------------------------------------------------------------ +# Select the name of the build mode you want to build by default. MYMODE := Debug + +# Specify a path for where the 3rd party software is installed MYPATH := /proj/llvm/cfe/install:/proj/install +# Specify where you want HLVM to be installed +MYPREFIX := /proj/install/hlvm + .PHONY: all debug Debug optimized Optimized release Release check clean \ install hlvm tools @@ -20,19 +26,19 @@ debug Debug: scons -Q mode=Debug debug=1 assertions=1 optimized=0 inline=0 \ - small=0 confpath=$(MYPATH) + small=0 confpath=$(MYPATH) prefix=$(MYPREFIX) optimized Optimized: scons -Q mode=Optimized debug=0 assertions=1 optimized=1 inline=1 \ - small=0 strip=0 confpath=$(MYPATH) + small=0 strip=0 confpath=$(MYPATH) prefix=$(MYPREFIX) release Release: scons -Q mode=Release debug=0 assertions=0 optimized=1 inline=1 \ - small=1 strip=1 confpath=$(MYPATH) + small=1 strip=1 confpath=$(MYPATH) prefix=$(MYPREFIX) profile Profile: scons -Q mode=Profile debug=0 assertions=0 optimized=1 inline=1 \ - small=0 strip=0 profile=1 confpath=$(MYPATH) + small=0 strip=0 profile=1 confpath=$(MYPATH) prefix=$(MYPREFIX) check: all scons -Q check mode=$(MYMODE) Modified: docs/GettingStarted.html =================================================================== --- docs/GettingStarted.html 2006-06-12 19:58:42 UTC (rev 249) +++ docs/GettingStarted.html 2006-06-12 20:35:10 UTC (rev 250) @@ -35,6 +35,11 @@
  • Build Targets
  • +
  • Building HLVM With Make +
      +
    1. Targets Supported
    2. +
    +
  • @@ -531,5 +536,89 @@ the doxygen and XSLT generated documentation will be built.
    + + + + +
    +

    If you don't want to learn how to use SCons, HLVM provides a + Makefile that will invoke it for you. All the usual targets are + provided. To use this facility, simply do a local edit of the Makefile + and adjust the three variables:

    +
    +
    MYMODE
    +
    Indicates the name of the build mode you want to build by default. This + can be any string, but it will be more useful if it is one of these: +
      +
    • Debug - specifies a debug build with assertions turned on and + inline functions turned off. Initialize this build mode with + make Debug.
    • +
    • Optimized - specifies an optimized build with debug turned + off, inline turned on, and assertions turned on. Initialize this build + mode with make Optimized.
    • +
    • Release - specifies an optimized build with assertions turned + off and symbols stripped. Initialize this build with + make Release.
    • +
    • Profile - specifies an optimized profiling build with + assertions turned off, inline turned on and with profiling options + suitable for profiling the tools with gmon. Initialize this build with + make Profile.
    • +
    +
    MYPATH
    +
    This provides a path for the 3rd party software that HLVM depends on. + You should change this path to match your local environment. If you don't + get this right then the first time you run scons, it will ask you to + manually enter paths for things like the APR library and LLVM.
    +
    MYPREFIX
    +
    This provides the directory into which HLVM will be installed. If it is + not specifed, the default will be /usr/local.
    +
    +

    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.

    +

    Targets Supported

    +

    You can use the following targets to build HLVM in various ways: +

    +
    all
    +
    Builds HLVM in the default mode, as specified by MYMODE. + Typically this is a Debug build.
    +
    debug Debug
    +
    This builds HLVM in a mode named "Debug" and sets the various options + appropriately for a debug build. You should use this target the first time + you want a Debug build.
    +
    optimized Optimized
    +
    This builds HLVM in a mode named "Optimized" and sets the various + options appropriately for an optimized build. You should use this target + the first time you want an Optimized build.
    +
    release Release
    +
    This builds HLVM in a mode named "Release" and sets the various options + appropriately for a release build. You should use this target the first + time you want a Release build.
    +
    profile Profile
    +
    This builds HLVM in a mode named "Profile" and sets the various options + appropriately for an profiled build. You should use this target the first + time you want an Profile build.
    +
    check
    +
    This doesn't build HLVM but instead invokes the test suite via dejagnu. + Use this to make sure that your local modifications haven't caused any + regressions.
    +
    clean
    +
    This removes all the build targets that were previously built. The next + time you build the all target, everything will be rebuilt.
    +
    doc
    +
    This builds the documentation for HLVM. It will run doxygen and xsltproc + to build the generated portion of the documentation.
    +
    hlvm
    +
    This provides a partial build of HLVM. It descends into the + hlvm directory and builds only the libraries located there.
    +
    install
    +
    This will installed HLVM libraries, headers and executable tools into + the directory named by the MYPREFIX variable.
    +
    tools
    +
    This provides a partial build of HLVM. It skips building the libraries + in the hlvm directory and instead descends into the tools + and builds the executable tools there.
    +
    +
    _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 16:42:17 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 17:42:17 -0400 Subject: [hlvm-commits] r251 - build docs Message-ID: <200606122142.k5CLgHLP030799@sneezy.swagora.com> Author: reid Date: 2006-06-12 17:42:16 -0400 (Mon, 12 Jun 2006) New Revision: 251 Log: Fix the install target to be repeatable. Modified: build/configure.py build/hlvm.py docs/SConscript Modified: build/configure.py =================================================================== --- build/configure.py 2006-06-12 20:35:10 UTC (rev 250) +++ build/configure.py 2006-06-12 21:42:16 UTC (rev 251) @@ -267,7 +267,7 @@ if p != '' and exists(p) and exists(pjoin(p,'bin')): rlist = [p] + rlist for p in rlist: - env['ENV']['PATH'] = pjoin(p,'bin') + ':' + env['ENV']['PATH'] + env.PrependENVPath('PATH', pjoin(p,'bin')) env['LIBS'] = '' Modified: build/hlvm.py =================================================================== --- build/hlvm.py 2006-06-12 20:35:10 UTC (rev 250) +++ build/hlvm.py 2006-06-12 21:42:16 UTC (rev 251) @@ -5,6 +5,7 @@ from SCons.Script.SConscript import SConsEnvironment as SConsEnvironment from SCons.Script import COMMAND_LINE_TARGETS as COMMAND_LINE_TARGETS from SCons.Environment import Environment as Environment +from SCons.Defaults import Mkdir as Mkdir from configure import ConfigureHLVM as ConfigureHLVM from os.path import join as pjoin from os.path import exists as exists @@ -67,32 +68,40 @@ sconsfile = pjoin(dir,d,'SConscript') env.SConscript(sconsfile) -def InstallProgram(env,prog): +def InstallProgram(env,progs): if 'install' in COMMAND_LINE_TARGETS: dir = pjoin(env['prefix'],'bin') - env.Install(dir,prog) + if not exists(dir): + env.Execute(Mkdir(dir)) + env.Install(dir=env.Dir(dir),source=progs) if 'check' in COMMAND_LINE_TARGETS: - env.Depends('check',prog[0].path) + env.Depends('check',progs) return 1 -def InstallLibrary(env,lib): +def InstallLibrary(env,libs): env.AppendUnique(LIBPATH=[env.Dir('.')]) if 'install' in COMMAND_LINE_TARGETS: libdir = pjoin(env['prefix'],'lib') - env.Install(libdir,lib.path) + if not exists(libdir): + env.Execute(Mkdir(libdir)) + env.Install(dir=env.Dir(libdir),source=libs) return 1 def InstallHeader(env,hdrs): if 'install' in COMMAND_LINE_TARGETS: moddir = strrepl(env.Dir('.').path,pjoin(env['BuildDir'],''),'',1) dir = pjoin(env['prefix'],'include',moddir) - env.Install(dir,hdrs) + if not exists(dir): + env.Execute(Mkdir(dir)) + env.Install(dir=env.Dir(dir),source=hdrs) return 1 -def InstallDoc(env,docs): +def InstallDocs(env,docs): if 'install' in COMMAND_LINE_TARGETS: dir = pjoin(env['prefix'],'docs') - env.install(dir,docs) + if not exists(dir): + env.Execute(Mkdir(dir)) + env.Install(dir=dir,source=docs) def GetBuildEnvironment(targets,arguments): env = Environment(); @@ -232,10 +241,13 @@ env.BuildDir(BuildDir,'#',duplicate=0) env.SConsignFile(pjoin(BuildDir,'sconsign')) if 'install' in COMMAND_LINE_TARGETS: - env.Alias('install',pjoin(env['prefix'],'bin')) - env.Alias('install',pjoin(env['prefix'],'lib')) - env.Alias('install',pjoin(env['prefix'],'include')) - env.Alias('install',pjoin(env['prefix'],'docs')) + env.Alias('install',[ + env.Dir(pjoin(env['prefix'],'bin')), + env.Dir(pjoin(env['prefix'],'lib')), + env.Dir(pjoin(env['prefix'],'include')), + env.Dir(pjoin(env['prefix'],'docs')) + ]) + env.Help(""" HLVM Build Environment Modified: docs/SConscript =================================================================== --- docs/SConscript 2006-06-12 20:35:10 UTC (rev 250) +++ docs/SConscript 2006-06-12 21:42:16 UTC (rev 251) @@ -41,4 +41,4 @@ env.Alias('doxy-install',installtgt) if 'install' in COMMAND_LINE_TARGETS: - hlvm.InstallDocs(env,hlvm.GetFiles('*.html')+['hlvm.css']) + hlvm.InstallDocs(env,hlvm.GetFiles(env,'*.html')+['hlvm.css']) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 16:47:26 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 17:47:26 -0400 Subject: [hlvm-commits] r252 - docs Message-ID: <200606122147.k5CLlQo3030814@sneezy.swagora.com> Author: reid Date: 2006-06-12 17:47:25 -0400 (Mon, 12 Jun 2006) New Revision: 252 Log: Document the strip option. Modified: docs/DevelopersGuide.html Modified: docs/DevelopersGuide.html =================================================================== --- docs/DevelopersGuide.html 2006-06-12 21:42:16 UTC (rev 251) +++ docs/DevelopersGuide.html 2006-06-12 21:47:25 UTC (rev 252) @@ -202,6 +202,12 @@ memory constrained platforms. 0 + strip + Strip executables of their symbols. This can significantly reduce the + size of the executable. Useful for release preparation when trying to + minimize the size of a tarball or RPM package. + 0 + prefix Specify where to install HLVM. This is the root directory of where HLVM will be installed when you run scons install @@ -227,7 +233,7 @@ Specify where apr-utils is installed. /usr/local/apr - with_xml2 + with_libxml2 Specify where LibXml2 is installed. /usr/local _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 16:58:04 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 17:58:04 -0400 Subject: [hlvm-commits] r253 - docs Message-ID: <200606122158.k5CLw412030841@sneezy.swagora.com> Author: reid Date: 2006-06-12 17:58:03 -0400 (Mon, 12 Jun 2006) New Revision: 253 Log: Provide some tips and tricks on using the Makefile. Modified: docs/GettingStarted.html Modified: docs/GettingStarted.html =================================================================== --- docs/GettingStarted.html 2006-06-12 21:47:25 UTC (rev 252) +++ docs/GettingStarted.html 2006-06-12 21:58:03 UTC (rev 253) @@ -38,6 +38,7 @@
  • Building HLVM With Make
    1. Targets Supported
    2. +
    3. Tips And Tricks
  • @@ -619,6 +620,18 @@ in the hlvm directory and instead descends into the tools and builds the executable tools there. +

    Tips And Tricks

    +
      +
    • Override MYMODE. On the make command line you can + override the value of MYMODE makefile variable. This allows you to + use any of the usual targets with a different build mode. For example, + suppose your Makefile specifies a value of "Debug" for + MYMODE. This situation indicates that the "Debug" configuration + will be used for all regular builds. However, if you want to install the + Release version, say, you could issue this command:
      +    make install MYMODE=Release
    • +
    +
    _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 17:01:28 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 18:01:28 -0400 Subject: [hlvm-commits] r254 - docs Message-ID: <200606122201.k5CM1Set030858@sneezy.swagora.com> Author: reid Date: 2006-06-12 18:01:27 -0400 (Mon, 12 Jun 2006) New Revision: 254 Log: Some minor adjustments to the color and length of the H2 tags background. Modified: docs/hlvm.css Modified: docs/hlvm.css =================================================================== --- docs/hlvm.css 2006-06-12 21:58:03 UTC (rev 253) +++ docs/hlvm.css 2006-06-12 22:01:27 UTC (rev 254) @@ -69,13 +69,14 @@ margin-bottom: 0.3em; } H2 { - border-top: 1px solid #0000AA; - border-bottom: 1px solid #0000AA; - background-color: #4444AA; + border-top: 1px solid #000088; + border-bottom: 1px solid #000088; + background-color: #000088; color: #EEEEFF; text-align: left; font-size: 120%; font-weight: bold; + width:60%; } H3 { color: #EEEEFF; _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 18:29:36 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 19:29:36 -0400 Subject: [hlvm-commits] r255 - build Message-ID: <200606122329.k5CNTaWd000480@sneezy.swagora.com> Author: reid Date: 2006-06-12 19:29:35 -0400 (Mon, 12 Jun 2006) New Revision: 255 Log: Add rules for building HTML and man pages from Perl POD pages. Modified: build/configure.py build/documentation.py build/hlvm.py Modified: build/configure.py =================================================================== --- build/configure.py 2006-06-12 22:01:27 UTC (rev 254) +++ build/configure.py 2006-06-12 23:29:35 UTC (rev 255) @@ -190,6 +190,8 @@ ret = fname != None if ret: ctxt.env[varname] = fname + else: + ctxt.env[varname] = None ctxt.Result(ret) if critical and not ret: print "Required Program '" + progname + "' is missing." @@ -243,14 +245,13 @@ conf.CheckProgram('llvm-gcc','with_llvmgcc') conf.CheckProgram('llvm-g++','with_llvmgxx') conf.CheckProgram('gperf','with_gperf') + conf.CheckProgram('pod2html','with_pod2html',[],0) + conf.CheckProgram('pod2man','with_pod2man',[],0) if not conf.CheckProgram('runtest','with_runtest',[],0): - env['with_runtest'] = None print "*** TESTING DISABLED ***" if not conf.CheckProgram('doxygen','with_doxygen',[],0): - env['with_runtest'] = None print "*** DOXYGEN DISABLED ***" if not conf.CheckProgram('xsltproc','with_xsltproc',[],0): - env['with_runtest'] = None print "*** XSLTPROC DISABLED ***" return 1 Modified: build/documentation.py =================================================================== --- build/documentation.py 2006-06-12 22:01:27 UTC (rev 254) +++ build/documentation.py 2006-06-12 23:29:35 UTC (rev 255) @@ -5,6 +5,7 @@ from string import join as sjoin from os.path import join as pjoin from os.path import exists +import os.path as path def getHeaders(env): context = pjoin(env['AbsSrcRoot'],'hlvm') @@ -55,9 +56,9 @@ tarfile = target[0].path tgtdir = target[0].dir.path srcpath = source[0].path - env.Execute(Copy(tarfile,srcpath)) - env.Execute(env['TAR'] + ' zxf ' + tarfile + ' -C ' + tgtdir ) - return 0 + if not env.Execute(Copy(tarfile,srcpath)): + return env.Execute(env['TAR'] + ' zxf ' + tarfile + ' -C ' + tgtdir ) + return 1 def DoxygenInstall(env): doxyInstAction = env.Action(DoxygenInstallAction,DoxygenInstallMessage) @@ -69,10 +70,36 @@ return "Creating " + target[0].path + " via XSLT from " + source[0].path def XSLTAction(target,source,env): - env.Execute( env['with_xsltproc'] + ' ' + source[0].path + ' ' + + return env.Execute( env['with_xsltproc'] + ' ' + source[0].path + ' ' + source[1].path + ' >' + target[0].path ) def XSLTproc(env): xsltAction = env.Action(XSLTAction,XSLTMessage) xsltBuilder = env.Builder(action=xsltAction) env.Append(BUILDERS = {'XSLTproc':xsltBuilder} ) + +def Pod2HtmlMessage(target,source,env): + return "Generating HTML From POD: " + source[0].path + +def Pod2HtmlAction(target,source,env): + title = path.splitext(path.basename(source[0].path))[0] + return env.Execute( env['with_pod2html'] + ' --css=man.css --htmlroot=.' + + ' --podpath=. --noindex --infile=' + source[0].path + + ' --outfile=' + target[0].path + ' --title="' + title + ' command"') + +def Pod2ManMessage(target,source,env): + return "Generating MAN Page From POD: " + source[0].path + +def Pod2ManAction(target,source,env): + title = path.splitext(path.basename(source[0].path))[0] + return env.Execute( env['with_pod2man'] + ' --release=CVS' + + ' --center="HLVM Tools Manual" ' + source[0].path + ' ' + target[0].path ) + +def PodGen(env): + p2hAction = env.Action(Pod2HtmlAction,Pod2HtmlMessage) + p2hBuildr = env.Builder(action=p2hAction,suffix='.html',src_suffix='.pod', + single_source=1) + p2mAction = env.Action(Pod2ManAction,Pod2ManMessage) + p2mBuildr = env.Builder(action=p2mAction,suffix='.1',src_suffix='.pod', + single_source=1) + env.Append(BUILDERS = {'Pod2Html':p2hBuildr, 'Pod2Man':p2mBuildr} ) Modified: build/hlvm.py =================================================================== --- build/hlvm.py 2006-06-12 22:01:27 UTC (rev 254) +++ build/hlvm.py 2006-06-12 23:29:35 UTC (rev 255) @@ -58,6 +58,10 @@ from build import documentation return documentation.XSLTproc(env) +def GetPodGen(env): + from build import documentation + return documentation.PodGen(env) + def Dirs(env,dirlist=[]): dir = env.Dir('.').path if (dir == env.Dir('#').path): @@ -98,11 +102,20 @@ def InstallDocs(env,docs): if 'install' in COMMAND_LINE_TARGETS: - dir = pjoin(env['prefix'],'docs') + moddir = strrepl(env.Dir('.').path,pjoin(env['BuildDir'],''),'',1) + dir = pjoin(env['prefix'],moddir) if not exists(dir): env.Execute(Mkdir(dir)) env.Install(dir=dir,source=docs) +def InstallMan(env,mans): + if 'install' in COMMAND_LINE_TARGETS: + dir = pjoin(env['prefix'],'docs','man','man1') + if not exists(dir): + env.Execute(Mkdir(dir)) + env.Install(dir=dir,source=mans) + + def GetBuildEnvironment(targets,arguments): env = Environment(); env.EnsurePythonVersion(2,3) @@ -159,6 +172,10 @@ '/usr/local/bin/doxygen') opts.Add('with_xsltproc','Specify where the XSLT processor is located', '/usr/local/bin/xsltproc') + opts.Add('with_pod2html','Specify where the POD to HTML generator is located', + '/usr/local/bin/pod2html') + opts.Add('with_pod2man','Specify where the POD to MAN generator is located', + '/usr/local/bin/pod2man') opts.Update(env) env['HLVM_Copyright'] = 'Copyright (c) 2006 Reid Spencer' env['HLVM_Maintainer'] = 'Reid Spencer ' @@ -266,4 +283,3 @@ env['HLVM_ConfigTime'] = now.ctime(); opts.Save(options_file,env) return env - _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 18:30:09 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 19:30:09 -0400 Subject: [hlvm-commits] r256 - docs Message-ID: <200606122330.k5CNU9dv000496@sneezy.swagora.com> Author: reid Date: 2006-06-12 19:30:08 -0400 (Mon, 12 Jun 2006) New Revision: 256 Log: Just build the docs on "install", no need for a separate target. Modified: docs/SConscript Modified: docs/SConscript =================================================================== --- docs/SConscript 2006-06-12 23:29:35 UTC (rev 255) +++ docs/SConscript 2006-06-12 23:30:08 UTC (rev 256) @@ -23,15 +23,16 @@ from build import hlvm from os.path import join as pjoin Import('env') -if 'docs' in COMMAND_LINE_TARGETS: +if 'install' in COMMAND_LINE_TARGETS: hlvm.GetDoxygen(env) hlvm.GetConfigFile(env) hlvm.GetXSLTproc(env) + hlvm.InstallDocs(env,hlvm.GetFiles(env,'*.html')+['hlvm.css']) + env.XSLTproc('HLVM.rng.html',['RngToXHTML.xsl','#hlvm/Reader/HLVM.rng']) + hlvm.InstallDocs(env,'HLVM.rng.html') env.ConfigFile('Doxyfile','Doxyfile.in') env.Doxygen('doxygen.tar.gz','Doxyfile') - env.XSLTproc('HLVM.rng.html',['RngToXHTML.xsl','#hlvm/Reader/HLVM.rng']) - env.Alias('docs','doxygen.tar.gz') - env.Alias('docs','HLVM.rng.html') + hlvm.InstallDocs(env,'doxygen.tar.gz') if 'doxy-install' in COMMAND_LINE_TARGETS: hlvm.GetDoxygenInstall(env) @@ -40,5 +41,4 @@ env.DoxygenInstall(installtgt,installsrc) env.Alias('doxy-install',installtgt) -if 'install' in COMMAND_LINE_TARGETS: - hlvm.InstallDocs(env,hlvm.GetFiles(env,'*.html')+['hlvm.css']) +hlvm.Dirs(env,['tools']) _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Mon Jun 12 18:32:39 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Mon, 12 Jun 2006 19:32:39 -0400 Subject: [hlvm-commits] r257 - in docs: . tools Message-ID: <200606122332.k5CNWdT8000511@sneezy.swagora.com> Author: reid Date: 2006-06-12 19:32:39 -0400 (Mon, 12 Jun 2006) New Revision: 257 Log: Add a directory to contain man page documentation for the tools. Added: docs/tools/ docs/tools/SConscript docs/tools/hlvm.pod docs/tools/man.css Added: docs/tools/SConscript =================================================================== --- docs/tools/SConscript 2006-06-12 23:30:08 UTC (rev 256) +++ docs/tools/SConscript 2006-06-12 23:32:39 UTC (rev 257) @@ -0,0 +1,33 @@ +#===-- Build Script For docs ----------------------------------*- Python -*-===# +# +# High Level Virtual Machine (HLVM) +# +# Copyright (C) 2006 Reid Spencer. All Rights Reserved. +# +# This software is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or (at +# your option) any later version. +# +# This software is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for +# more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this library in the file named LICENSE.txt; if not, write to the +# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA +# +#===----------------------------------------------------------------------===# +from build import hlvm +from os.path import join as pjoin +Import('env') +if 'install' in COMMAND_LINE_TARGETS: + hlvm.GetPodGen(env) + srcs = hlvm.GetFiles(env,'*.pod') + htmls = env.Pod2Html(source=srcs) + mans = env.Pod2Man(source=srcs) + hlvm.InstallDocs(env,htmls) + hlvm.InstallDocs(env,'man.css') + hlvm.InstallMan(env,mans) Added: docs/tools/hlvm.pod =================================================================== --- docs/tools/hlvm.pod 2006-06-12 23:30:08 UTC (rev 256) +++ docs/tools/hlvm.pod 2006-06-12 23:32:39 UTC (rev 257) @@ -0,0 +1,43 @@ +=pod + +=head1 NAME + +hlvm - HLVM Virtual Machine + +=head1 SYNOPSIS + +B [I] I I + +=head1 DESCRIPTION + +B is the virtual machine tool for the High Level Virtual Machine. The +I parameter specifies the name of the program to run. The +I provide options to that program, not the B runtime. The +I control various aspects of how the program is run. These options are +described below. + +=head1 OPTIONS + +=over + +=item B<--help> or B<-h> + +Show the usage help for this tool. + +=item B<--version> or B<-v> + +Show the version number of this tool. + +=back + +=head1 EXIT STATUS + +The B tool will return the exit code of the program that it runs. If a +hard runtime error occurs, it will return the error number corresponding to that +error (see hlvm/Runtime/Errors.h). + +=head1 AUTHORS + +Written by Reid Spencer (L). + +=cut Added: docs/tools/man.css =================================================================== --- docs/tools/man.css 2006-06-12 23:30:08 UTC (rev 256) +++ docs/tools/man.css 2006-06-12 23:32:39 UTC (rev 257) @@ -0,0 +1,256 @@ +/* Based on http://www.perldoc.com/css/perldoc.css */ + + at import url("../llvm.css"); + +body { font-family: Arial,Helvetica; } + +blockquote { margin: 10pt; } + +h1, a { color: #336699; } + + +/*** Top menu style ****/ +.mmenuon { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #ff6600; font-size: 10pt; + } +.mmenuoff { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #ffffff; font-size: 10pt; +} +.cpyright { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #ffffff; font-size: xx-small; +} +.cpyrightText { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #ffffff; font-size: xx-small; +} +.sections { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: 11pt; +} +.dsections { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: 12pt; +} +.slink { + font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; + color: #000000; font-size: 9pt; +} + +.slink2 { font-family: Arial,Helvetica; text-decoration: none; color: #336699; } + +.maintitle { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: 18pt; +} +.dblArrow { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: small; +} +.menuSec { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: small; +} + +.newstext { + font-family: Arial,Helvetica; font-size: small; +} + +.linkmenu { + font-family: Arial,Helvetica; color: #000000; font-weight: bold; + text-decoration: none; +} + +P { + font-family: Arial,Helvetica; +} + +PRE { + font-size: 10pt; +} +.quote { + font-family: Times; text-decoration: none; + color: #000000; font-size: 9pt; font-style: italic; +} +.smstd { font-family: Arial,Helvetica; color: #000000; font-size: x-small; } +.std { font-family: Arial,Helvetica; color: #000000; } +.meerkatTitle { + font-family: sans-serif; font-size: x-small; color: black; } + +.meerkatDescription { font-family: sans-serif; font-size: 10pt; color: black } +.meerkatCategory { + font-family: sans-serif; font-size: 9pt; font-weight: bold; font-style: italic; + color: brown; } +.meerkatChannel { + font-family: sans-serif; font-size: 9pt; font-style: italic; color: brown; } +.meerkatDate { font-family: sans-serif; font-size: xx-small; color: #336699; } + +.tocTitle { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #333333; font-size: 10pt; +} + +.toc-item { + font-family: Arial,Helvetica; font-weight: bold; + color: #336699; font-size: 10pt; text-decoration: underline; +} + +.perlVersion { + font-family: Arial,Helvetica; font-weight: bold; + color: #336699; font-size: 10pt; text-decoration: none; +} + +.podTitle { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #000000; +} + +.docTitle { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #000000; font-size: 10pt; +} +.dotDot { + font-family: Arial,Helvetica; font-weight: bold; + color: #000000; font-size: 9pt; +} + +.docSec { + font-family: Arial,Helvetica; font-weight: normal; + color: #333333; font-size: 9pt; +} +.docVersion { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: 10pt; +} + +.docSecs-on { + font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; + color: #ff0000; font-size: 10pt; +} +.docSecs-off { + font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; + color: #333333; font-size: 10pt; +} + +h2 { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: medium; +} +h1 { + font-family: Verdana,Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: large; +} + +DL { + font-family: Arial,Helvetica; font-weight: normal; text-decoration: none; + color: #333333; font-size: 10pt; +} + +UL > LI > A { + font-family: Arial,Helvetica; font-weight: bold; + color: #336699; font-size: 10pt; +} + +.moduleInfo { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #333333; font-size: 11pt; +} + +.moduleInfoSec { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: 10pt; +} + +.moduleInfoVal { + font-family: Arial,Helvetica; font-weight: normal; text-decoration: underline; + color: #000000; font-size: 10pt; +} + +.cpanNavTitle { + font-family: Arial,Helvetica; font-weight: bold; + color: #ffffff; font-size: 10pt; +} +.cpanNavLetter { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #333333; font-size: 9pt; +} +.cpanCat { + font-family: Arial,Helvetica; font-weight: bold; text-decoration: none; + color: #336699; font-size: 9pt; +} + +.bttndrkblue-bkgd-top { + background-color: #225688; + background-image: url(/global/mvc_objects/images/bttndrkblue_bgtop.gif); +} +.bttndrkblue-bkgd-left { + background-color: #225688; + background-image: url(/global/mvc_objects/images/bttndrkblue_bgleft.gif); +} +.bttndrkblue-bkgd { + padding-top: 0px; + padding-bottom: 0px; + margin-bottom: 0px; + margin-top: 0px; + background-repeat: no-repeat; + background-color: #225688; + background-image: url(/global/mvc_objects/images/bttndrkblue_bgmiddle.gif); + vertical-align: top; +} +.bttndrkblue-bkgd-right { + background-color: #225688; + background-image: url(/global/mvc_objects/images/bttndrkblue_bgright.gif); +} +.bttndrkblue-bkgd-bottom { + background-color: #225688; + background-image: url(/global/mvc_objects/images/bttndrkblue_bgbottom.gif); +} +.bttndrkblue-text a { + color: #ffffff; + text-decoration: none; +} +a.bttndrkblue-text:hover { + color: #ffDD3C; + text-decoration: none; +} +.bg-ltblue { + background-color: #f0f5fa; +} + +.border-left-b { + background: #f0f5fa url(/i/corner-leftline.gif) repeat-y; +} + +.border-right-b { + background: #f0f5fa url(/i/corner-rightline.gif) repeat-y; +} + +.border-top-b { + background: #f0f5fa url(/i/corner-topline.gif) repeat-x; +} + +.border-bottom-b { + background: #f0f5fa url(/i/corner-botline.gif) repeat-x; +} + +.border-right-w { + background: #ffffff url(/i/corner-rightline.gif) repeat-y; +} + +.border-top-w { + background: #ffffff url(/i/corner-topline.gif) repeat-x; +} + +.border-bottom-w { + background: #ffffff url(/i/corner-botline.gif) repeat-x; +} + +.bg-white { + background-color: #ffffff; +} + +.border-left-w { + background: #ffffff url(/i/corner-leftline.gif) repeat-y; +} _______________________________________________ hlvm-commits mailing list hlvm-commits at hlvm.org http://hlvm.org/mailman/listinfo/hlvm-commits From rspencer at reidspencer.com Tue Jun 13 07:20:04 2006 From: rspencer at reidspencer.com (rspencer at reidspencer.com) Date: Tue, 13 Jun 2006 08:20:04 -0400 Subject: [hlvm-commits] r258 - / Message-ID: <200606131220.k5DCK4oY013913@sneezy.swagora.com> Author: reid Date: 2006-06-13 08:20:03 -0400 (Tue, 13 Jun 2006) New Revision: 258 Log: Add an SCONSOPTS variable to control options given to scons on every invocation. This helps with -Q (quiet) and -j (parallel build) options. Modified: Makefile Modified: Makefile =================================================================== --- Makefile 2006-06-12 23:32:39 UTC (rev 257) +++ Makefile 2006-06-13 12:20:03 UTC (rev 258)