-
-
Notifications
You must be signed in to change notification settings - Fork 626
/
sconscript
66 lines (57 loc) · 2.14 KB
/
sconscript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
###
#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<package>.*)\], \[(?P<version>.*)\], \[(?P<bugReport>.*)\], \[(?P<tarName>.*)\], \[(?P<url>.*)\]\)")
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="/W2")
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",
"logging.c",
"pattern.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")
])