Merge pull request #41 from thequux/install-target
Added install target
This commit is contained in:
commit
274cbe38a9
2 changed files with 40 additions and 3 deletions
32
SConstruct
32
SConstruct
|
|
@ -1,8 +1,36 @@
|
||||||
# -*- python -*-
|
# -*- python -*-
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
import sys
|
||||||
|
|
||||||
env = Environment(ENV = {'PATH' : os.environ['PATH']})
|
env = Environment(ENV = {'PATH' : os.environ['PATH']})
|
||||||
|
|
||||||
|
vars = Variables(None, ARGUMENTS)
|
||||||
|
vars.Add(PathVariable('DESTDIR', "Root directory to install in (useful for packaging scripts)", None, PathVariable.PathIsDirCreate))
|
||||||
|
vars.Add(PathVariable('prefix', "Where to install in the FHS", "/usr/local", PathVariable.PathAccept))
|
||||||
|
|
||||||
|
env = Environment(variables=vars)
|
||||||
|
|
||||||
|
def calcInstallPath(*elements):
|
||||||
|
path = os.path.abspath(os.path.join(*map(env.subst, elements)))
|
||||||
|
if 'DESTDIR' in env:
|
||||||
|
path = os.path.join(env['DESTDIR'], os.path.relpath(path, start="/"))
|
||||||
|
return path
|
||||||
|
|
||||||
|
rel_prefix = not os.path.isabs(env['prefix'])
|
||||||
|
env['prefix'] = os.path.abspath(env['prefix'])
|
||||||
|
if 'DESTDIR' in env:
|
||||||
|
env['DESTDIR'] = os.path.abspath(env['DESTDIR'])
|
||||||
|
if rel_prefix:
|
||||||
|
print >>sys.stderr, "--!!-- You used a relative prefix with a DESTDIR. This is probably not what you"
|
||||||
|
print >>sys.stderr, "--!!-- you want; files will be installed in"
|
||||||
|
print >>sys.stderr, "--!!-- %s" % (calcInstallPath("$prefix"),)
|
||||||
|
|
||||||
|
|
||||||
|
env['libpath'] = calcInstallPath("$prefix", "lib")
|
||||||
|
env['incpath'] = calcInstallPath("$prefix", "include", "hammer")
|
||||||
|
# TODO: Add pkgconfig
|
||||||
|
|
||||||
env.MergeFlags("-std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-attributes -lrt")
|
env.MergeFlags("-std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-attributes -lrt")
|
||||||
|
|
||||||
if not env['PLATFORM'] == 'darwin':
|
if not env['PLATFORM'] == 'darwin':
|
||||||
|
|
@ -50,8 +78,10 @@ if os.getenv("CC") == "clang" or env['PLATFORM'] == 'darwin':
|
||||||
|
|
||||||
Export('env')
|
Export('env')
|
||||||
|
|
||||||
|
|
||||||
env.SConscript(["src/SConscript"], variant_dir='build/$VARIANT/src')
|
env.SConscript(["src/SConscript"], variant_dir='build/$VARIANT/src')
|
||||||
env.SConscript(["examples/SConscript"], variant_dir='build/$VARIANT/examples')
|
env.SConscript(["examples/SConscript"], variant_dir='build/$VARIANT/examples')
|
||||||
|
|
||||||
env.Command('test', 'build/$VARIANT/src/test_suite', 'env LD_LIBRARY_PATH=build/$VARIANT/src $SOURCE')
|
env.Command('test', 'build/$VARIANT/src/test_suite', 'env LD_LIBRARY_PATH=build/$VARIANT/src $SOURCE')
|
||||||
|
|
||||||
|
env.Alias("install", "$libpath")
|
||||||
|
env.Alias("install", "$incpath")
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,12 @@ Import('env')
|
||||||
|
|
||||||
bindings = []
|
bindings = []
|
||||||
|
|
||||||
|
dist_headers = [
|
||||||
|
"hammer.h",
|
||||||
|
"allocator.h",
|
||||||
|
"glue.h"
|
||||||
|
]
|
||||||
|
|
||||||
parsers = ['parsers/%s.c'%s for s in
|
parsers = ['parsers/%s.c'%s for s in
|
||||||
['action',
|
['action',
|
||||||
'and',
|
'and',
|
||||||
|
|
@ -55,13 +61,14 @@ tests = ['t_benchmark.c',
|
||||||
libhammer_shared = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
|
libhammer_shared = env.SharedLibrary('hammer', parsers + backends + misc_hammer_parts)
|
||||||
libhammer_static = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
|
libhammer_static = env.StaticLibrary('hammer', parsers + backends + misc_hammer_parts)
|
||||||
|
|
||||||
|
env.Install("$libpath", [libhammer_static, libhammer_shared])
|
||||||
|
env.Install("$incpath", dist_headers)
|
||||||
|
|
||||||
testenv = env.Clone()
|
testenv = env.Clone()
|
||||||
testenv.ParseConfig('pkg-config --cflags --libs glib-2.0')
|
testenv.ParseConfig('pkg-config --cflags --libs glib-2.0')
|
||||||
testenv.Append(LIBS=['hammer'], LIBPATH=['.'])
|
testenv.Append(LIBS=['hammer'], LIBPATH=['.'])
|
||||||
testenv.Program('test_suite', tests + ['test_suite.c'])
|
testenv.Program('test_suite', tests + ['test_suite.c'])
|
||||||
|
|
||||||
Export("libhammer_static libhammer_shared")
|
Export("libhammer_static libhammer_shared")
|
||||||
|
|
||||||
for b in bindings:
|
for b in bindings:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue