[liblouis-liblouisxml] Re: James Teh and others: SCONS

  • From: "John J. Boyer" <john.boyer@xxxxxxxxxxxxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Tue, 28 Feb 2012 20:21:22 -0600

Hi Jamie,

This will be helpoful, in spite of all the caveats. I'll keep them in 
mind.

Thanks,
John

On Wed, Feb 29, 2012 at 10:55:53AM +1000, James Teh wrote:
> Hi John,
> 
> I've attached our liblouis sconscript. However:
> * This can't be used stand-alone. Rather, it is called from NVDA's 
> sconstruct. Therefore, some of the required set up is not included in 
> this file (although that's probably only a few lines).
> * This is written for NVDA, so it outputs files in NVDA specific 
> directories and only builds the dll, Python bindings and tables. The 
> tools, documentation, tests, etc. are not handled at all.
> * There is one compiler flag specific to Windows, but that is only 
> because of the way we build NVDA.
> * This uses configure.ac and the *.in files used by automake. If you 
> were moving to scons completely, I'd guess it might be neater to get rid 
> of these and instead pass compiler defines, though there are a few 
> exceptions to this.
> * Scons in-built support for the Windows SDK tends to break from time to 
> time (I'm not sure what the current status is), so we have written our 
> own. I can provide this, though it's currently under the terms of the 
> GPL (not LGPL).
> 
> Jamie
> 
> On 29/02/2012 10:10 AM, John J. Boyer wrote:
> >Hi Jamie,
> >
> >There has been considerable discussion on the BrailleBlaster list of
> >SCONS in preparation for the next release. I am also thinking of using
> >it for liblouisutdml Could you send your SCONS files for liblouis as
> >attachments to this list? That would help us get started.
> >
> >Thanks,
> >John
> >
> 
> -- 
> James Teh
> Director, NV Access Limited
> Email: jamie@xxxxxxxxxxxx
> Web site: http://www.nvaccess.org/
> Phone: +61 7 5667 8372

> ###
> #This file is a part of the NVDA project.
> #URL: http://www.nvda-project.org/
> #Copyright 2006-2012 NVDA contributers.
> #This program is free software: you can redistribute it and/or modify
> #it under the terms of the GNU General Public License version 2.0, as 
> published by
> #the Free Software Foundation.
> #This program 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.
> #This license can be found at:
> #http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
> ###
> 
> import os
> import re
> 
> Import([
>       "env",
>       "sourceDir",
> ])
> 
> louisRootDir = env.Dir("#include/liblouis")
> louisSourceDir = louisRootDir.Dir("liblouis")
> outDir = sourceDir.Dir("louis")
> 
> RE_AC_INIT = re.compile(r"^AC_INIT\((?P<name>.*), (?P<version>.*), 
> (?P<maintainer>.*)\)")
> def getLouisVersion():
>       # Get the version from configure.ac.
>       with file(louisRootDir.File("configure.ac").abspath) as f:
>               for line in f:
>                       m = RE_AC_INIT.match(line)
>                       if m:
>                               return m.group("version")
>       return "unknown"
> 
> env = env.Clone()
> env.Append(CCFLAGS="/W0")
> env.Append(CPPDEFINES=[
>       ("PACKAGE_VERSION", r'\"%s\"' % getLouisVersion()),
>       ("UNICODE_BITS", 16),
> ])
> env.Prepend(CPPPATH=[".", louisSourceDir])
> 
> liblouisH = env.Substfile("liblouis.h", louisSourceDir.File("liblouis.h.in"),
>       SUBST_DICT={"@WIDECHAR_TYPE@": "unsigned short int"})
> 
> sourceFiles = [
>       "compileTranslationTable.c",
>       "lou_translateString.c",
>       "lou_backTranslateString.c",
>       "wrappers.c",
> ]
> objs = [env.Object("%s.obj" % f, louisSourceDir.File(f)) for f in sourceFiles]
> louisLib = env.SharedLibrary("liblouis", objs + ["liblouis.def"])
> env.Install(sourceDir, louisLib)
> 
> louisPython = env.Substfile(outDir.File("__init__.py"), 
> louisRootDir.File("python/louis/__init__.py.in"),
>       SUBST_DICT={"###LIBLOUIS_SONAME###": louisLib[0].name})
> 
> env.Install(outDir.Dir("tables"),
>       [f for f in env.Glob("%s/tables/*" % louisRootDir)
>               if f.name not in ("Makefile", "Makefile.am", "Makefile.in", 
> "README", "maketablelist.sh")
>       ])


-- 
John J. Boyer; President, Chief Software Developer
Abilitiessoft, Inc.
http://www.abilitiessoft.com
Madison, Wisconsin USA
Developing software for people with disabilities

For a description of the software, to download it and links to
project pages go to http://www.abilitiessoft.com

Other related posts: