scons: Install libGL.so and respective symlinks.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Sun, 7 Sep 2008 22:54:15 +0000 (07:54 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Sun, 7 Sep 2008 22:54:15 +0000 (07:54 +0900)
scons/gallium.py
src/gallium/winsys/xlib/SConscript

index 342a0879c30b9c57e1a937df08875da8827e983a..abe962493d7070827dc43f994870b4a7d3e61c6d 100644 (file)
@@ -140,6 +140,30 @@ def createCodeGenerateMethod(env):
     env.AddMethod(code_generate, 'CodeGenerate')
 
 
+def symlink(target, source, env):
+    target = str(target[0])
+    source = str(source[0])
+    if os.path.islink(target) or os.path.exists(target):
+        os.remove(target)
+    os.symlink(os.path.basename(source), target)
+
+def install_shared_library(env, source, version = ()):
+    source = str(source[0])
+    version = tuple(map(str, version))
+    target_dir = os.path.join(env['build'], 'lib')
+    target_name = '.'.join((str(source),) + version)
+    last = env.InstallAs(os.path.join(target_dir, target_name), source)
+    while len(version):
+        version = version[:-1]
+        target_name = '.'.join((str(source),) + version)
+        action = SCons.Action.Action(symlink, "$TARGET -> $SOURCE")
+        print os.path.join(target_dir, target_name), last
+        last = env.Command(os.path.join(target_dir, target_name), last, action) 
+
+def createInstallMethods(env):
+    env.AddMethod(install_shared_library, 'InstallSharedLibrary')
+
+
 def generate(env):
     """Common environment generation code"""
 
@@ -426,6 +450,7 @@ def generate(env):
     # Custom builders and methods
     createConvenienceLibBuilder(env)
     createCodeGenerateMethod(env)
+    createInstallMethods(env)
 
     # for debugging
     #print env.Dump()
index 8650f595a72827524ce59e3e2720aba550b8ebe6..324fbef306a585d8a2d0b3db2a7e0109bfb33c81 100644 (file)
@@ -36,8 +36,10 @@ if env['platform'] == 'linux' \
         drivers += [trace]
 
     # TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions
-    env.SharedLibrary(
+    libgl = env.SharedLibrary(
         target ='GL',
         source = sources,
         LIBS = glapi + mesa + drivers + auxiliaries + env['LIBS'],
     )
+
+    env.InstallSharedLibrary(libgl, version=(1, 5))