Page MenuHomePhabricator (Chris)

No OneTemporary

Authored By
Unknown
Size
5 KB
Referenced Files
None
Subscribers
None
diff --git a/SConstruct b/SConstruct
index bbe9f95a..a56ea1bf 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,71 +1,83 @@
import os
import scons.utils
import scons.checks
SetOption('num_jobs', scons.utils.detectCPUs())
includedir = '{0}/include'.format(os.getcwd())
env = Environment(ENV = os.environ, CPPPATH=includedir, tools=['textfile', 'default'])
config = env.Configure(custom_tests = {'CheckAllegro5': scons.checks.checkAllegro5(False),
'CheckFreetype': scons.checks.checkFreetype,
'ConfigChecks': scons.checks.configChecks})
config.CheckAllegro5()
config.CheckFreetype()
config.ConfigChecks()
env = config.Finish()
env = scons.utils.less_verbose(env)
if not env['HAVE_ALLEGRO5']:
Exit(1)
build_dir = 'build'
options = {'networking': False,
'allegro5': True
}
env.VariantDir(build_dir, 'src')
libs = env.SConscript('src/SConscript', variant_dir=build_dir, exports=['env', 'options'])
rtech1 = env.StaticLibrary('lib/r-tech1', libs)
-env.Default(rtech1)
-# Install target and configuration
-env.Install('{0}/lib'.format(env.installPrefix), rtech1)
-env.Install('{0}/include'.format(env.installPrefix), 'include/r-tech1')
-
-# Construct dependency cflags and libraries for pc script
-def createList(content, modifier):
- deps = ''
- for item in content:
- deps += '-{0}{1} '.format(modifier, item) if 'r-tech1' not in item else ''
- return deps
-pcflags = createList(env['CPPPATH'], 'I')
-pclibs = createList(env['LIBS'], 'l')
-pclibpaths = createList(env['LIBPATH'], 'L')
-
-# PC script
-replacelist = {
-'%prefix%': env.installPrefix,
-'%rtech1_version%': '1',
-'%flags%': pcflags,
-'%libs%': pclibs,
-'%libpaths%': pclibpaths
-}
-
-pc_install = '{0}/lib/pkgconfig/r-tech1.pc'.format(env.installPrefix)
-
-pc_copied = Command(build_dir + '/temp.pc.in', 'misc/r-tech1.pc.in', Copy('$TARGET', '$SOURCE'))
-pc_script = env.Substfile(build_dir + '/temp.pc.in', SUBST_DICT = replacelist)
-env.Depends(pc_script, pc_copied)
-pc_mod = Command(build_dir + '/r-tech1.pc', build_dir + '/temp.pc', Copy('$TARGET', '$SOURCE'))
-env.Depends(pc_mod, pc_script)
-env.InstallAs(pc_install, pc_mod)
-
-# Install
-env.Alias('install', [env.installPrefix, pc_install])
-env.Depends([env.installPrefix, pc_mod], rtech1)
-
-# Uninstall target
-env.Command("uninstall", None, Delete(FindInstalledFiles()))
+tests_build_dir = os.path.join(build_dir, 'tests')
+unit_tests = SConscript('tests/SConscript', variant_dir = tests_build_dir, exports = ['env', 'rtech1'], duplicate=0)
+Depends(unit_tests, rtech1)
+
+if os.access(env.installPrefix, os.W_OK):
+ # Install target and configuration
+ env.Install('{0}/lib'.format(env.installPrefix), rtech1)
+ env.Install('{0}/include'.format(env.installPrefix), 'include/r-tech1')
+
+ # Construct dependency cflags and libraries for pc script
+ def createList(content, modifier):
+ deps = ''
+ for item in content:
+ deps += '-{0}{1} '.format(modifier, item) if 'r-tech1' not in item else ''
+ return deps
+ pcflags = createList(env['CPPPATH'], 'I')
+ pclibs = createList(env['LIBS'], 'l')
+ pclibpaths = createList(env['LIBPATH'], 'L')
+
+ # PC script
+ replacelist = {
+ '%prefix%': env.installPrefix,
+ '%rtech1_version%': '1',
+ '%flags%': pcflags,
+ '%libs%': pclibs,
+ '%libpaths%': pclibpaths
+ }
+
+ pc_install = '{0}/lib/pkgconfig/r-tech1.pc'.format(env.installPrefix)
+ pc_copied = Command(build_dir + '/temp.pc.in', 'misc/r-tech1.pc.in', Copy('$TARGET', '$SOURCE'))
+ pc_script = env.Substfile(build_dir + '/temp.pc.in', SUBST_DICT = replacelist)
+ env.Depends(pc_script, pc_copied)
+ pc_mod = Command(build_dir + '/r-tech1.pc', build_dir + '/temp.pc', Copy('$TARGET', '$SOURCE'))
+ env.Depends(pc_mod, pc_script)
+ env.InstallAs(pc_install, pc_mod)
+
+ # Install
+ env.Alias('install', [env.installPrefix, pc_install])
+ env.Depends([env.installPrefix, pc_mod], rtech1)
+
+ # Uninstall target
+ env.Command("uninstall", None, Delete(FindInstalledFiles()))
+else:
+ def needsudo(target, source, env):
+ print 'No write privaleges to {0}, run target [{1}] as sudo'.format(env.installPrefix, target[0])
+ env.Command('install', None, needsudo)
+ env.Command('uninstall', None, needsudo)
+
+# Defaults
+env.Default(rtech1)
+env.Default(unit_tests)
diff --git a/tests/SConscript b/tests/SConscript
new file mode 100644
index 00000000..9f21b0b5
--- /dev/null
+++ b/tests/SConscript
@@ -0,0 +1,3 @@
+Import('env', 'rtech1')
+
+init_test = SConscript('init/SConscript', exports = ['env', 'rtech1'], duplicate=0)
diff --git a/tests/init/SConscript b/tests/init/SConscript
new file mode 100644
index 00000000..c52b576b
--- /dev/null
+++ b/tests/init/SConscript
@@ -0,0 +1,13 @@
+Import('env', 'rtech1')
+import scons.utils
+
+use = env.Clone()
+try:
+ utils.safeParseConfig(use, 'pkg-config r-tech1 --libs --cflags')
+except:
+ use['LIBS'].append(rtech1)
+ use['LIBS'].append(env['LIBS'])
+ pass
+init_test = use.Program('init-test', 'main.cpp')
+
+Return('init_test')
diff --git a/tests/init/SConstruct b/tests/init/SConstruct
deleted file mode 100644
index 66698e00..00000000
--- a/tests/init/SConstruct
+++ /dev/null
@@ -1,3 +0,0 @@
-env = Environment()
-env.ParseConfig('pkg-config r-tech1 --libs --cflags')
-main = env.Program('init-test', 'main.cpp')

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jun 16, 1:39 AM (2 w, 18 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
69867
Default Alt Text
(5 KB)

Event Timeline