# vim:syntax=python import os import re from subprocess import * install_dir = '/usr/lib/gnome-screensaver/gnome-screensaver' desktop_dir = os.getenv('HOME') + '/.local/share/applications/screensavers' load_files = ['logo/dwlogo.obj', 'logo/dwlogo.mtl', Glob('shaders/*')] env = Environment(CPPPATH = ['.']) env.ParseConfig("pkg-config --cflags --libs glib-2.0 gdk-2.0 atk gtk+-2.0 gtkglext-1.0") env.Append(CPPFLAGS = ['-Isrc', '-DGL_GLEXT_PROTOTYPES']) # modes builder def gen_modes(target, source, env): f = open(str(target[0]), 'w') for s in source: f.write("#include \"%s\"\n" % str(s)) f.close() return None; genModes = Builder(action = gen_modes) env.Append(BUILDERS = {'Modes' : genModes}) # CFS builder def CFS(target, source, env): source_list = [] for s in source: source_list.append(str(s)) Popen(['./cfs_gen/cfs_gen.py', str(target[0])] + source_list).wait() return None def CFS_emitter(target, source, env): target.append(re.sub(r'\.cc?', '.h', str(target[0]))) return target, source env.Append(BUILDERS = {'CFS' : Builder(action = CFS, emitter = CFS_emitter)}) # source file list sources = [ 'cfs.cc', Glob('src/*.c'), Glob('src/*.cc'), Glob('LoadFile/*.cc'), Glob('modes/*.cc'), Glob('wfobj/WFObj.cc'), Glob('glslUtil/*.c'), ] env.CFS('cfs.cc', load_files) env.Depends('cfs.cc', 'cfs_gen/cfs_gen.py') env.Modes('modes.h', Glob('modes/*.h')) dwss = env.Program('dwss', sources) env.Install(install_dir, dwss) env.Install(desktop_dir, 'dwss.desktop') install_bin = env.Alias('install-bin', install_dir) install_desktop = env.Alias('install-desktop', desktop_dir) env.Alias('install', [install_bin, install_desktop])