+
+def env_nsis(source, target, env, for_signature):
+ ''' Get nsis command line '''
+ def quoteIfSpaced(str):
+ if ' ' in str:
+ return '"' + str + '"'
+ else:
+ return str
+ ret = env['NSIS'] + " /V1 "
+ if env.has_key('NSISFLAGS'):
+ for flag in env['NSISFLAGS']:
+ ret += flag
+ ret += ' '
+ if env.has_key('NSISDEFINES'):
+ for d in env['NSISDEFINES']:
+ ret += '/D'+d
+ if env['NSISDEFINES'][d]:
+ ret += '=' + quoteIfSpaced(env['NSISDEFINES'][d])
+ ret += ' '
+ # bundled?
+ if '-bundle.exe' in str(target[0]):
+ ret += '/DSETUPTYPE_BUNDLE=1 '
+ for s in source:
+ ret += quoteIfSpaced(str(s))
+ return ret
+
+
+def env_toc(target, source, env):
+ '''Generate target from source files'''
+ # this is very tricky because we need to use installed lyx2lyx with
+ # correct lyx2lyx_version.py
+ sys.path.append(env['LYX2LYX_DEST'])
+ sys.path.append(env.Dir('$TOP_SRCDIR/lib/doc').abspath)
+ import doc_toc
+ # build toc
+ doc_toc.build_toc(str(target[0]), [file.abspath for file in source])
+
+
+def env_cat(target, source, env):
+ '''Cat source > target. Avoid pipe to increase portability'''
+ output = open(env.File(target[0]).abspath, 'w')
+ for src in source:
+ input = open(env.File(src).abspath)
+ output.write(input.read())
+ input.close()
+ output.close()
+
+
+def createResFromIcon(env, icon_file, rc_file):
+ ''' create a rc file with icon, and return res file (windows only) '''
+ if os.name == 'nt':
+ rc_name = env.File(rc_file).abspath
+ dir = os.path.split(rc_name)[0]
+ if not os.path.isdir(dir):
+ os.makedirs(dir)
+ rc = open(rc_name, 'w')
+ print >> rc, 'IDI_ICON1 ICON DISCARDABLE "%s"' % \
+ os.path.join(env.Dir('$TOP_SRCDIR').abspath, 'development', 'win32',
+ 'packaging', 'icons', icon_file).replace('\\', '\\\\')
+ rc.close()
+ return env.RES(rc_name)
+ else:
+ return []
+
+