gallium: always build drivers/sw
authorJoakim Sindholt <opensource@zhasha.com>
Sat, 5 Jun 2010 14:53:38 +0000 (16:53 +0200)
committerJoakim Sindholt <opensource@zhasha.com>
Sat, 5 Jun 2010 15:19:46 +0000 (17:19 +0200)
SConstruct
src/gallium/drivers/sw/SConscript

index 1c8a00cce95a8f2cb421e6a0c88fd70c06c5c220..76ada41f55c28ba29376bcfaf80ec1924409fd43 100644 (file)
@@ -136,6 +136,8 @@ if 'softpipe' not in env['drivers']:
     env['drivers'].append('softpipe')
 if env['llvm'] and 'llvmpipe' not in env['drivers']:
     env['drivers'].append('llvmpipe')
+if 'sw' not in env['drivers']:
+    env['drivers'].append('sw')
 
 # Includes
 env.Prepend(CPPPATH = [
index 37d0a0d63ce3fea7b24244eb13b5e76e54412c9f..e9ebf751ddd892f5194c46aec0e888d25d041f9a 100644 (file)
@@ -5,32 +5,34 @@
 # rasterizers into a single driver.  A software rasterizer is defined
 # as any driver which takes an sw_winsys pointer as the only argument
 # to create_screen.
-#
-# XXX: unfortunately users of this driver still need to link in any
-# extra libraries needed for the particular driver (eg llvm for
-# llvmpipe).  Not sure how to get around this.
 
 Import('*')
 
 env = env.Clone()
 
+# To avoid targets having to check extensively or add drivers on a whim, append
+# all referenced extra drivers to the exported symbol.
+extra = []
 if True:
     env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
     env.Prepend(LIBS = [softpipe])
+    extra.append(softpipe)
 
 if env['llvm']:
     env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
     env.Tool('udis86')
     env.Prepend(LIBS = [llvmpipe])
-    
+    extra.append(llvmpipe)
+
 if 'cell' in env['drivers']:
     env.Append(CPPDEFINES = 'GALLIUM_CELL')
     env.Prepend(LIBS = [cell])
+    extra.append(cell)
 
 sw = env.ConvenienceLibrary(
        target = 'sw',
        source = [
                'sw.c',
                ]
-    )
-    Export('sw')
+    ) + extra
+Export('sw')