Use Tabs for indentation.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@3048 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
Enrico Tröger 2008-10-06 18:37:22 +00:00
parent bed14c6353
commit 4c339cc656

730
wscript
View File

@ -32,7 +32,7 @@ or at least equally.
Missing features: --enable-binreloc, make targets: dist, pdf (in doc/)
Known issues: Dependency handling is buggy, e.g. if src/document.h is
changed, depending source files are not rebuilt (maybe Waf bug).
changed, depending source files are not rebuilt (maybe Waf bug).
Requires WAF 1.5 (SVN r4661 or later) and Python 2.4 (or later).
"""
@ -51,426 +51,426 @@ blddir = 'build'
tagmanager_sources = [
'tagmanager/args.c', 'tagmanager/asm.c', 'tagmanager/basic.c', 'tagmanager/c.c',
'tagmanager/conf.c', 'tagmanager/css.c', 'tagmanager/ctags.c', 'tagmanager/diff.c',
'tagmanager/docbook.c', 'tagmanager/entry.c', 'tagmanager/fortran.c', 'tagmanager/get.c',
'tagmanager/haskell.c', 'tagmanager/haxe.c', 'tagmanager/html.c', 'tagmanager/js.c',
'tagmanager/keyword.c', 'tagmanager/latex.c', 'tagmanager/lregex.c', 'tagmanager/lua.c',
'tagmanager/make.c', 'tagmanager/options.c', 'tagmanager/parse.c', 'tagmanager/pascal.c',
'tagmanager/perl.c', 'tagmanager/php.c', 'tagmanager/python.c', 'tagmanager/read.c',
'tagmanager/rest.c', 'tagmanager/ruby.c', 'tagmanager/sh.c', 'tagmanager/sort.c',
'tagmanager/sql.c', 'tagmanager/strlist.c', 'tagmanager/tcl.c', 'tagmanager/tm_file_entry.c',
'tagmanager/tm_project.c', 'tagmanager/tm_source_file.c', 'tagmanager/tm_symbol.c',
'tagmanager/tm_tag.c', 'tagmanager/tm_tagmanager.c', 'tagmanager/tm_work_object.c',
'tagmanager/tm_workspace.c', 'tagmanager/vhdl.c', 'tagmanager/vstring.c' ]
'tagmanager/args.c', 'tagmanager/asm.c', 'tagmanager/basic.c', 'tagmanager/c.c',
'tagmanager/conf.c', 'tagmanager/css.c', 'tagmanager/ctags.c', 'tagmanager/diff.c',
'tagmanager/docbook.c', 'tagmanager/entry.c', 'tagmanager/fortran.c', 'tagmanager/get.c',
'tagmanager/haskell.c', 'tagmanager/haxe.c', 'tagmanager/html.c', 'tagmanager/js.c',
'tagmanager/keyword.c', 'tagmanager/latex.c', 'tagmanager/lregex.c', 'tagmanager/lua.c',
'tagmanager/make.c', 'tagmanager/options.c', 'tagmanager/parse.c', 'tagmanager/pascal.c',
'tagmanager/perl.c', 'tagmanager/php.c', 'tagmanager/python.c', 'tagmanager/read.c',
'tagmanager/rest.c', 'tagmanager/ruby.c', 'tagmanager/sh.c', 'tagmanager/sort.c',
'tagmanager/sql.c', 'tagmanager/strlist.c', 'tagmanager/tcl.c', 'tagmanager/tm_file_entry.c',
'tagmanager/tm_project.c', 'tagmanager/tm_source_file.c', 'tagmanager/tm_symbol.c',
'tagmanager/tm_tag.c', 'tagmanager/tm_tagmanager.c', 'tagmanager/tm_work_object.c',
'tagmanager/tm_workspace.c', 'tagmanager/vhdl.c', 'tagmanager/vstring.c' ]
scintilla_sources = [
'scintilla/AutoComplete.cxx', 'scintilla/CallTip.cxx', 'scintilla/CellBuffer.cxx',
'scintilla/CharClassify.cxx', 'scintilla/ContractionState.cxx', 'scintilla/Decoration.cxx',
'scintilla/DocumentAccessor.cxx', 'scintilla/Document.cxx', 'scintilla/Editor.cxx',
'scintilla/ExternalLexer.cxx', 'scintilla/Indicator.cxx', 'scintilla/KeyMap.cxx',
'scintilla/KeyWords.cxx', 'scintilla/LexAsm.cxx', 'scintilla/LexBash.cxx',
'scintilla/LexBasic.cxx', 'scintilla/LexCaml.cxx', 'scintilla/LexCPP.cxx',
'scintilla/LexCrontab.cxx', 'scintilla/LexCSS.cxx', 'scintilla/LexD.cxx',
'scintilla/LexFortran.cxx', 'scintilla/LexHaskell.cxx', 'scintilla/LexHTML.cxx',
'scintilla/LexLua.cxx', 'scintilla/LexOMS.cxx', 'scintilla/LexOthers.cxx',
'scintilla/LexPascal.cxx', 'scintilla/LexPerl.cxx', 'scintilla/LexPython.cxx',
'scintilla/LexR.cxx',
'scintilla/LexRuby.cxx', 'scintilla/LexSQL.cxx', 'scintilla/LexTCL.cxx',
'scintilla/LexVHDL.cxx', 'scintilla/LineMarker.cxx', 'scintilla/PlatGTK.cxx',
'scintilla/PositionCache.cxx', 'scintilla/PropSet.cxx', 'scintilla/RESearch.cxx',
'scintilla/RunStyles.cxx', 'scintilla/ScintillaBase.cxx', 'scintilla/ScintillaGTK.cxx',
'scintilla/scintilla-marshal.c', 'scintilla/StyleContext.cxx', 'scintilla/Style.cxx',
'scintilla/UniConversion.cxx', 'scintilla/ViewStyle.cxx', 'scintilla/WindowAccessor.cxx',
'scintilla/XPM.cxx' ]
'scintilla/AutoComplete.cxx', 'scintilla/CallTip.cxx', 'scintilla/CellBuffer.cxx',
'scintilla/CharClassify.cxx', 'scintilla/ContractionState.cxx', 'scintilla/Decoration.cxx',
'scintilla/DocumentAccessor.cxx', 'scintilla/Document.cxx', 'scintilla/Editor.cxx',
'scintilla/ExternalLexer.cxx', 'scintilla/Indicator.cxx', 'scintilla/KeyMap.cxx',
'scintilla/KeyWords.cxx', 'scintilla/LexAsm.cxx', 'scintilla/LexBash.cxx',
'scintilla/LexBasic.cxx', 'scintilla/LexCaml.cxx', 'scintilla/LexCPP.cxx',
'scintilla/LexCrontab.cxx', 'scintilla/LexCSS.cxx', 'scintilla/LexD.cxx',
'scintilla/LexFortran.cxx', 'scintilla/LexHaskell.cxx', 'scintilla/LexHTML.cxx',
'scintilla/LexLua.cxx', 'scintilla/LexOMS.cxx', 'scintilla/LexOthers.cxx',
'scintilla/LexPascal.cxx', 'scintilla/LexPerl.cxx', 'scintilla/LexPython.cxx',
'scintilla/LexR.cxx',
'scintilla/LexRuby.cxx', 'scintilla/LexSQL.cxx', 'scintilla/LexTCL.cxx',
'scintilla/LexVHDL.cxx', 'scintilla/LineMarker.cxx', 'scintilla/PlatGTK.cxx',
'scintilla/PositionCache.cxx', 'scintilla/PropSet.cxx', 'scintilla/RESearch.cxx',
'scintilla/RunStyles.cxx', 'scintilla/ScintillaBase.cxx', 'scintilla/ScintillaGTK.cxx',
'scintilla/scintilla-marshal.c', 'scintilla/StyleContext.cxx', 'scintilla/Style.cxx',
'scintilla/UniConversion.cxx', 'scintilla/ViewStyle.cxx', 'scintilla/WindowAccessor.cxx',
'scintilla/XPM.cxx' ]
geany_sources = [
'src/about.c', 'src/build.c', 'src/callbacks.c', 'src/dialogs.c', 'src/document.c',
'src/editor.c', 'src/encodings.c', 'src/filetypes.c', 'src/geanyobject.c',
'src/geanywraplabel.c', 'src/highlighting.c', 'src/interface.c', 'src/keybindings.c',
'src/keyfile.c', 'src/log.c', 'src/main.c', 'src/msgwindow.c', 'src/navqueue.c', 'src/notebook.c',
'src/plugins.c', 'src/prefix.c', 'src/prefs.c', 'src/printing.c', 'src/project.c',
'src/sciwrappers.c', 'src/search.c', 'src/socket.c', 'src/support.c', 'src/symbols.c',
'src/templates.c', 'src/tools.c', 'src/treeviews.c', 'src/ui_utils.c', 'src/utils.c' ]
'src/about.c', 'src/build.c', 'src/callbacks.c', 'src/dialogs.c', 'src/document.c',
'src/editor.c', 'src/encodings.c', 'src/filetypes.c', 'src/geanyobject.c',
'src/geanywraplabel.c', 'src/highlighting.c', 'src/interface.c', 'src/keybindings.c',
'src/keyfile.c', 'src/log.c', 'src/main.c', 'src/msgwindow.c', 'src/navqueue.c', 'src/notebook.c',
'src/plugins.c', 'src/prefix.c', 'src/prefs.c', 'src/printing.c', 'src/project.c',
'src/sciwrappers.c', 'src/search.c', 'src/socket.c', 'src/support.c', 'src/symbols.c',
'src/templates.c', 'src/tools.c', 'src/treeviews.c', 'src/ui_utils.c', 'src/utils.c' ]
def configure(conf):
def conf_get_svn_rev():
# try GIT
if os.path.exists('.git'):
cmds = [ 'git svn find-rev HEAD 2>/dev/null',
'git svn find-rev origin/trunk 2>/dev/null',
'git svn find-rev trunk 2>/dev/null',
'git svn find-rev master 2>/dev/null' ]
for c in cmds:
try:
stdout = Utils.cmd_output(c)
if stdout:
return stdout.strip()
except:
pass
# try SVN
elif os.path.exists('.svn'):
try:
stdout = Utils.cmd_output('svn info --non-interactive', {'LANG' : 'C'})
lines = stdout.splitlines(True)
for line in lines:
if line.startswith('Last Changed Rev'):
key, value = line.split(': ', 1)
return value.strip()
except:
pass
else:
pass
return '-1'
def conf_get_svn_rev():
# try GIT
if os.path.exists('.git'):
cmds = [ 'git svn find-rev HEAD 2>/dev/null',
'git svn find-rev origin/trunk 2>/dev/null',
'git svn find-rev trunk 2>/dev/null',
'git svn find-rev master 2>/dev/null' ]
for c in cmds:
try:
stdout = Utils.cmd_output(c)
if stdout:
return stdout.strip()
except:
pass
# try SVN
elif os.path.exists('.svn'):
try:
stdout = Utils.cmd_output('svn info --non-interactive', {'LANG' : 'C'})
lines = stdout.splitlines(True)
for line in lines:
if line.startswith('Last Changed Rev'):
key, value = line.split(': ', 1)
return value.strip()
except:
pass
else:
pass
return '-1'
def conf_define_from_opt(define_name, opt_name, default_value, quote=1):
if opt_name:
if isinstance(opt_name, bool):
opt_name = 1
conf.define(define_name, opt_name, quote)
elif default_value:
conf.define(define_name, default_value, quote)
def conf_define_from_opt(define_name, opt_name, default_value, quote=1):
if opt_name:
if isinstance(opt_name, bool):
opt_name = 1
conf.define(define_name, opt_name, quote)
elif default_value:
conf.define(define_name, default_value, quote)
conf.check_tool('compiler_cc')
conf.check_tool('compiler_cc')
conf.check(header_name='fcntl.h')
conf.check(header_name='fnmatch.h')
conf.check(header_name='glob.h')
conf.check(header_name='sys/time.h')
conf.check(header_name='sys/types.h')
conf.check(header_name='sys/stat.h')
conf.define('HAVE_STDLIB_H', 1) # are there systems without stdlib.h?
conf.define('STDC_HEADERS', 1) # an optimistic guess ;-)
conf.check(header_name='fcntl.h')
conf.check(header_name='fnmatch.h')
conf.check(header_name='glob.h')
conf.check(header_name='sys/time.h')
conf.check(header_name='sys/types.h')
conf.check(header_name='sys/stat.h')
conf.define('HAVE_STDLIB_H', 1) # are there systems without stdlib.h?
conf.define('STDC_HEADERS', 1) # an optimistic guess ;-)
if Options.options.gnu_regex:
conf.define('HAVE_REGCOMP', 1, 0)
conf.define('USE_INCLUDED_REGEX', 1, 0)
else:
conf.check(header_name='regex.h')
if conf.env['HAVE_REGEX_H'] == 1:
conf.check(function_name='regcomp', header_name='regex.h')
# fallback to included regex lib
if conf.env['HAVE_REGCOMP'] != 1 or conf.env['HAVE_REGEX_H'] != 1:
conf.define('HAVE_REGCOMP', 1, 0)
conf.define('USE_INCLUDED_REGEX', 1, 0)
Utils.pprint('YELLOW', 'Using included GNU regex library.')
if Options.options.gnu_regex:
conf.define('HAVE_REGCOMP', 1, 0)
conf.define('USE_INCLUDED_REGEX', 1, 0)
else:
conf.check(header_name='regex.h')
if conf.env['HAVE_REGEX_H'] == 1:
conf.check(function_name='regcomp', header_name='regex.h')
# fallback to included regex lib
if conf.env['HAVE_REGCOMP'] != 1 or conf.env['HAVE_REGEX_H'] != 1:
conf.define('HAVE_REGCOMP', 1, 0)
conf.define('USE_INCLUDED_REGEX', 1, 0)
Utils.pprint('YELLOW', 'Using included GNU regex library.')
conf.check(function_name='fgetpos', header_name='stdio.h')
conf.check(function_name='ftruncate', header_name='unistd.h')
conf.check(function_name='gethostname', header_name='unistd.h')
conf.check(function_name='mkstemp', header_name='stdlib.h')
conf.check(function_name='strstr', header_name='string.h', mandatory=True)
conf.check(function_name='fgetpos', header_name='stdio.h')
conf.check(function_name='ftruncate', header_name='unistd.h')
conf.check(function_name='gethostname', header_name='unistd.h')
conf.check(function_name='mkstemp', header_name='stdlib.h')
conf.check(function_name='strstr', header_name='string.h', mandatory=True)
# check for cxx after the header and function checks have been done to ensure they are
# checked with cc not cxx
conf.check_tool('compiler_cxx intltool misc')
# check for cxx after the header and function checks have been done to ensure they are
# checked with cc not cxx
conf.check_tool('compiler_cxx intltool misc')
conf.check_cfg(package='gtk+-2.0', atleast_version='2.6.0', uselib_store='GTK')
conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='GTK')
conf.check_cfg(package='gtk+-2.0', atleast_version='2.6.0', uselib_store='GTK')
conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='GTK')
# GTK version check
have_gtk_210 = False
gtk_version = conf.check_cfg(modversion='gtk+-2.0', uselib_store='GTK')
if gtk_version:
if version.LooseVersion(gtk_version) >= version.LooseVersion('2.10.0'):
have_gtk_210 = True
else:
gtk_version = 'Unknown'
# GTK version check
have_gtk_210 = False
gtk_version = conf.check_cfg(modversion='gtk+-2.0', uselib_store='GTK')
if gtk_version:
if version.LooseVersion(gtk_version) >= version.LooseVersion('2.10.0'):
have_gtk_210 = True
else:
gtk_version = 'Unknown'
conf_define_from_opt('LIBDIR', Options.options.libdir, conf.env['PREFIX'] + '/lib')
conf_define_from_opt('DOCDIR', Options.options.docdir, conf.env['DATADIR'] + '/doc/geany')
conf_define_from_opt('MANDIR', Options.options.mandir, conf.env['DATADIR'] + '/man')
conf_define_from_opt('LIBDIR', Options.options.libdir, conf.env['PREFIX'] + '/lib')
conf_define_from_opt('DOCDIR', Options.options.docdir, conf.env['DATADIR'] + '/doc/geany')
conf_define_from_opt('MANDIR', Options.options.mandir, conf.env['DATADIR'] + '/man')
svn_rev = conf_get_svn_rev()
conf.define('ENABLE_NLS', 1)
conf.define('GEANY_LOCALEDIR', 'LOCALEDIR', 0)
conf.define('GEANY_DATADIR', 'DATADIR', 0)
conf.define('GEANY_DOCDIR', 'DOCDIR', 0)
conf.define('GEANY_LIBDIR', 'LIBDIR', 0)
conf.define('GEANY_PREFIX', conf.env['PREFIX'], 1)
conf.define('PACKAGE', APPNAME, 1)
conf.define('VERSION', VERSION, 1)
conf.define('REVISION', svn_rev, 1)
svn_rev = conf_get_svn_rev()
conf.define('ENABLE_NLS', 1)
conf.define('GEANY_LOCALEDIR', 'LOCALEDIR', 0)
conf.define('GEANY_DATADIR', 'DATADIR', 0)
conf.define('GEANY_DOCDIR', 'DOCDIR', 0)
conf.define('GEANY_LIBDIR', 'LIBDIR', 0)
conf.define('GEANY_PREFIX', conf.env['PREFIX'], 1)
conf.define('PACKAGE', APPNAME, 1)
conf.define('VERSION', VERSION, 1)
conf.define('REVISION', svn_rev, 1)
conf.define('GETTEXT_PACKAGE', APPNAME, 1)
conf.define('GETTEXT_PACKAGE', APPNAME, 1)
conf_define_from_opt('HAVE_PLUGINS', not Options.options.no_plugins, None, 0)
conf_define_from_opt('HAVE_SOCKET', not Options.options.no_socket, None, 0)
conf_define_from_opt('HAVE_VTE', not Options.options.no_vte, None, 0)
conf_define_from_opt('HAVE_PLUGINS', not Options.options.no_plugins, None, 0)
conf_define_from_opt('HAVE_SOCKET', not Options.options.no_socket, None, 0)
conf_define_from_opt('HAVE_VTE', not Options.options.no_vte, None, 0)
conf.write_config_header('config.h')
conf.write_config_header('config.h')
Utils.pprint('BLUE', 'Summary:')
print_message('Install Geany ' + VERSION + ' in', conf.env['PREFIX'])
print_message('Using GTK version', gtk_version)
print_message('Build with GTK printing support', have_gtk_210 and 'yes' or 'no')
print_message('Build with plugin support', Options.options.no_plugins and 'no' or 'yes')
print_message('Use virtual terminal support', Options.options.no_vte and 'no' or 'yes')
if svn_rev != '-1':
print_message('Compiling Subversion revision', svn_rev)
conf.env.append_value('CCFLAGS', '-g -DGEANY_DEBUG')
Utils.pprint('BLUE', 'Summary:')
print_message('Install Geany ' + VERSION + ' in', conf.env['PREFIX'])
print_message('Using GTK version', gtk_version)
print_message('Build with GTK printing support', have_gtk_210 and 'yes' or 'no')
print_message('Build with plugin support', Options.options.no_plugins and 'no' or 'yes')
print_message('Use virtual terminal support', Options.options.no_vte and 'no' or 'yes')
if svn_rev != '-1':
print_message('Compiling Subversion revision', svn_rev)
conf.env.append_value('CCFLAGS', '-g -DGEANY_DEBUG')
conf.env.append_value('CCFLAGS', '-DHAVE_CONFIG_H')
conf.env.append_value('CXXFLAGS', '-DNDEBUG -DGTK -DGTK2 -DSCI_LEXER -DG_THREADS_IMPL_NONE \
-Wno-missing-braces -Wno-char-subscripts') # Scintilla flags
conf.env.append_value('CCFLAGS', '-DHAVE_CONFIG_H')
conf.env.append_value('CXXFLAGS', '-DNDEBUG -DGTK -DGTK2 -DSCI_LEXER -DG_THREADS_IMPL_NONE \
-Wno-missing-braces -Wno-char-subscripts') # Scintilla flags
def set_options(opt):
opt.tool_options('compiler_cc')
opt.tool_options('compiler_cxx')
opt.tool_options('intltool')
opt.tool_options('compiler_cc')
opt.tool_options('compiler_cxx')
opt.tool_options('intltool')
if 'configure' in sys.argv:
# Features
opt.add_option('--disable-plugins', action='store_true', default=False,
help='compile without plugin support [default: No]', dest='no_plugins')
opt.add_option('--disable-socket', action='store_true', default=False,
help='compile without support to detect a running instance [[default: No]', dest='no_socket')
opt.add_option('--disable-vte', action='store_true', default=False,
help='compile without support for an embedded virtual terminal [[default: No]', dest='no_vte')
opt.add_option('--enable-gnu-regex', action='store_true', default=False,
help='compile with included GNU regex library [default: No]', dest='gnu_regex')
# Paths
opt.add_option('--mandir', type='string', default='',
help='man documentation', dest='mandir')
opt.add_option('--docdir', type='string', default='',
help='documentation root', dest='docdir')
opt.add_option('--libdir', type='string', default='',
help='object code libraries', dest='libdir')
# Actions
opt.add_option('--htmldoc', action='store_true', default=False,
help='generate HTML documentation', dest='htmldoc')
opt.add_option('--apidoc', action='store_true', default=False,
help='generate API reference documentation', dest='apidoc')
opt.add_option('--update-po', action='store_true', default=False,
help='update the message catalogs for translation', dest='update_po')
if 'configure' in sys.argv:
# Features
opt.add_option('--disable-plugins', action='store_true', default=False,
help='compile without plugin support [default: No]', dest='no_plugins')
opt.add_option('--disable-socket', action='store_true', default=False,
help='compile without support to detect a running instance [[default: No]', dest='no_socket')
opt.add_option('--disable-vte', action='store_true', default=False,
help='compile without support for an embedded virtual terminal [[default: No]', dest='no_vte')
opt.add_option('--enable-gnu-regex', action='store_true', default=False,
help='compile with included GNU regex library [default: No]', dest='gnu_regex')
# Paths
opt.add_option('--mandir', type='string', default='',
help='man documentation', dest='mandir')
opt.add_option('--docdir', type='string', default='',
help='documentation root', dest='docdir')
opt.add_option('--libdir', type='string', default='',
help='object code libraries', dest='libdir')
# Actions
opt.add_option('--htmldoc', action='store_true', default=False,
help='generate HTML documentation', dest='htmldoc')
opt.add_option('--apidoc', action='store_true', default=False,
help='generate API reference documentation', dest='apidoc')
opt.add_option('--update-po', action='store_true', default=False,
help='update the message catalogs for translation', dest='update_po')
def build(bld):
def build_plugin(plugin_name, install = True):
obj = bld.new_task_gen('cc', 'shlib')
obj.source = 'plugins/' + plugin_name + '.c'
obj.includes = '. plugins/ src/ scintilla/include tagmanager/include'
obj.env['shlib_PATTERN'] = '%s.so'
obj.target = plugin_name
obj.uselib = 'GTK'
if install:
obj.install_path = '${LIBDIR}/geany/'
else:
obj.install_path = 0
#~ obj.want_libtool = 1
def build_plugin(plugin_name, install = True):
obj = bld.new_task_gen('cc', 'shlib')
obj.source = 'plugins/' + plugin_name + '.c'
obj.includes = '. plugins/ src/ scintilla/include tagmanager/include'
obj.env['shlib_PATTERN'] = '%s.so'
obj.target = plugin_name
obj.uselib = 'GTK'
if install:
obj.install_path = '${LIBDIR}/geany/'
else:
obj.install_path = 0
#~ obj.want_libtool = 1
# Tagmanager
if bld.env['USE_INCLUDED_REGEX'] == 1:
tagmanager_sources.append('tagmanager/regex.c')
obj = bld.new_task_gen('cc', 'staticlib')
obj.name = 'tagmanager'
obj.target = 'tagmanager'
obj.source = tagmanager_sources
obj.includes = '. tagmanager/ tagmanager/include/'
obj.uselib = 'GTK'
obj.install_path = 0 # do not install this library
# Tagmanager
if bld.env['USE_INCLUDED_REGEX'] == 1:
tagmanager_sources.append('tagmanager/regex.c')
obj = bld.new_task_gen('cc', 'staticlib')
obj.name = 'tagmanager'
obj.target = 'tagmanager'
obj.source = tagmanager_sources
obj.includes = '. tagmanager/ tagmanager/include/'
obj.uselib = 'GTK'
obj.install_path = 0 # do not install this library
# Scintilla
obj = bld.new_task_gen('cxx', 'staticlib')
obj.features.append('cc')
obj.name = 'scintilla'
obj.target = 'scintilla'
obj.source = scintilla_sources
obj.includes = 'scintilla/ scintilla/include/'
obj.uselib = 'GTK'
obj.install_path = 0 # do not install this library
# Scintilla
obj = bld.new_task_gen('cxx', 'staticlib')
obj.features.append('cc')
obj.name = 'scintilla'
obj.target = 'scintilla'
obj.source = scintilla_sources
obj.includes = 'scintilla/ scintilla/include/'
obj.uselib = 'GTK'
obj.install_path = 0 # do not install this library
# Geany
if bld.env['HAVE_VTE'] == 1:
geany_sources.append('src/vte.c')
if sys.platform == "win32":
geany_sources.append('src/win32.c')
obj = bld.new_task_gen('cxx', 'program')
obj.features.append('cc')
obj.name = 'geany'
obj.target = 'geany'
obj.source = geany_sources
obj.includes = '. src/ scintilla/include/ tagmanager/include/'
obj.uselib = 'GTK'
obj.uselib_local = 'scintilla tagmanager'
# Geany
if bld.env['HAVE_VTE'] == 1:
geany_sources.append('src/vte.c')
if sys.platform == "win32":
geany_sources.append('src/win32.c')
obj = bld.new_task_gen('cxx', 'program')
obj.features.append('cc')
obj.name = 'geany'
obj.target = 'geany'
obj.source = geany_sources
obj.includes = '. src/ scintilla/include/ tagmanager/include/'
obj.uselib = 'GTK'
obj.uselib_local = 'scintilla tagmanager'
# Plugins
if bld.env['HAVE_PLUGINS'] == 1:
build_plugin('classbuilder')
build_plugin('demoplugin', False)
build_plugin('export')
build_plugin('filebrowser')
build_plugin('htmlchars')
build_plugin('saveactions')
build_plugin('splitwindow')
build_plugin('vcdiff')
# Plugins
if bld.env['HAVE_PLUGINS'] == 1:
build_plugin('classbuilder')
build_plugin('demoplugin', False)
build_plugin('export')
build_plugin('filebrowser')
build_plugin('htmlchars')
build_plugin('saveactions')
build_plugin('splitwindow')
build_plugin('vcdiff')
# Translations
obj = bld.new_task_gen('intltool_po')
obj.podir = 'po'
obj.appname = 'geany'
# Translations
obj = bld.new_task_gen('intltool_po')
obj.podir = 'po'
obj.appname = 'geany'
# geany.desktop
obj = bld.new_task_gen('intltool_in')
obj.source = 'geany.desktop.in'
obj.flags = '-d'
obj.install_path = '${DATADIR}/applications'
# geany.desktop
obj = bld.new_task_gen('intltool_in')
obj.source = 'geany.desktop.in'
obj.flags = '-d'
obj.install_path = '${DATADIR}/applications'
# geany.pc
obj = bld.new_task_gen('subst')
obj.source = 'geany.pc.in'
obj.target = 'geany.pc'
obj.dict = { 'VERSION' : VERSION,
'prefix': bld.env['PREFIX'],
'exec_prefix': '${prefix}',
'libdir': '${exec_prefix}/lib',
'includedir': '${prefix}/include',
'datarootdir': '${prefix}/share',
'datadir': '${datarootdir}',
'localedir': '${datarootdir}/locale' }
# seems currently broken in Waf
#~ obj.install_path = '${LIBDIR}/pkgconfig'
obj.install_path = 0
bld.install_files('${LIBDIR}/pkgconfig', 'geany.pc')
# geany.pc
obj = bld.new_task_gen('subst')
obj.source = 'geany.pc.in'
obj.target = 'geany.pc'
obj.dict = { 'VERSION' : VERSION,
'prefix': bld.env['PREFIX'],
'exec_prefix': '${prefix}',
'libdir': '${exec_prefix}/lib',
'includedir': '${prefix}/include',
'datarootdir': '${prefix}/share',
'datadir': '${datarootdir}',
'localedir': '${datarootdir}/locale' }
# seems currently broken in Waf
#~ obj.install_path = '${LIBDIR}/pkgconfig'
obj.install_path = 0
bld.install_files('${LIBDIR}/pkgconfig', 'geany.pc')
# geany.1
obj = bld.new_task_gen('subst')
obj.source = 'doc/geany.1.in'
obj.target = 'geany.1'
obj.dict = { 'VERSION' : VERSION,
'GEANY_DATA_DIR': bld.env['DATADIR'] + '/geany' }
# seems currently broken in Waf
#~ obj.install_path = '${MANDIR}/man1'
obj.install_path = 0
bld.install_files('${MANDIR}/man1', 'doc/geany.1')
# geany.1
obj = bld.new_task_gen('subst')
obj.source = 'doc/geany.1.in'
obj.target = 'geany.1'
obj.dict = { 'VERSION' : VERSION,
'GEANY_DATA_DIR': bld.env['DATADIR'] + '/geany' }
# seems currently broken in Waf
#~ obj.install_path = '${MANDIR}/man1'
obj.install_path = 0
bld.install_files('${MANDIR}/man1', 'doc/geany.1')
# geany.spec
obj = bld.new_task_gen('subst')
obj.source = 'geany.spec.in'
obj.target = 'geany.spec'
obj.install_path = 0
obj.dict = { 'VERSION' : VERSION }
# geany.spec
obj = bld.new_task_gen('subst')
obj.source = 'geany.spec.in'
obj.target = 'geany.spec'
obj.install_path = 0
obj.dict = { 'VERSION' : VERSION }
# Doxyfile
obj = bld.new_task_gen('subst')
obj.source = 'doc/Doxyfile.in'
obj.target = 'Doxyfile'
obj.install_path = 0
obj.dict = { 'VERSION' : VERSION }
# Doxyfile
obj = bld.new_task_gen('subst')
obj.source = 'doc/Doxyfile.in'
obj.target = 'Doxyfile'
obj.install_path = 0
obj.dict = { 'VERSION' : VERSION }
###
# Install files
###
# Headers
bld.install_files('${PREFIX}/include/geany', '''
src/dialogs.h src/document.h src/editor.h src/encodings.h src/filetypes.h src/geany.h
src/highlighting.h src/keybindings.h src/msgwindow.h src/plugindata.h src/plugins.h
src/prefs.h src/project.h src/sciwrappers.h src/search.h src/support.h src/templates.h
src/ui_utils.h src/utils.h
plugins/pluginmacros.h ''')
bld.install_files('${PREFIX}/include/geany/scintilla', '''
scintilla/include/SciLexer.h scintilla/include/Scintilla.h scintilla/include/Scintilla.iface
scintilla/include/ScintillaWidget.h ''')
bld.install_files('${PREFIX}/include/geany/tagmanager', '''
tagmanager/include/tm_file_entry.h tagmanager/include/tm_project.h tagmanager/include/tm_source_file.h
tagmanager/include/tm_symbol.h tagmanager/include/tm_tag.h tagmanager/include/tm_tagmanager.h
tagmanager/include/tm_work_object.h tagmanager/include/tm_workspace.h ''')
# Docs
bld.install_files('${DOCDIR}', 'AUTHORS ChangeLog COPYING README NEWS THANKS TODO')
bld.install_files('${DOCDIR}/html/images', 'doc/images/*.png')
bld.install_as('${DOCDIR}/manual.txt', 'doc/geany.txt')
bld.install_as('${DOCDIR}/html/index.html', 'doc/geany.html')
bld.install_as('${DOCDIR}/ScintillaLicense.txt', 'scintilla/License.txt')
# Data
bld.install_files('${DATADIR}/geany', 'data/filetype*')
bld.install_files('${DATADIR}/geany', 'data/*.tags')
bld.install_files('${DATADIR}/geany', 'data/snippets.conf')
bld.install_as('${DATADIR}/geany/GPL-2', 'COPYING')
# Icons
bld.install_files('${DATADIR}/pixmaps', 'pixmaps/geany.png')
bld.install_files('${DATADIR}/icons/hicolor/16x16/apps', 'icons/16x16/*.png')
###
# Install files
###
# Headers
bld.install_files('${PREFIX}/include/geany', '''
src/dialogs.h src/document.h src/editor.h src/encodings.h src/filetypes.h src/geany.h
src/highlighting.h src/keybindings.h src/msgwindow.h src/plugindata.h src/plugins.h
src/prefs.h src/project.h src/sciwrappers.h src/search.h src/support.h src/templates.h
src/ui_utils.h src/utils.h
plugins/pluginmacros.h ''')
bld.install_files('${PREFIX}/include/geany/scintilla', '''
scintilla/include/SciLexer.h scintilla/include/Scintilla.h scintilla/include/Scintilla.iface
scintilla/include/ScintillaWidget.h ''')
bld.install_files('${PREFIX}/include/geany/tagmanager', '''
tagmanager/include/tm_file_entry.h tagmanager/include/tm_project.h tagmanager/include/tm_source_file.h
tagmanager/include/tm_symbol.h tagmanager/include/tm_tag.h tagmanager/include/tm_tagmanager.h
tagmanager/include/tm_work_object.h tagmanager/include/tm_workspace.h ''')
# Docs
bld.install_files('${DOCDIR}', 'AUTHORS ChangeLog COPYING README NEWS THANKS TODO')
bld.install_files('${DOCDIR}/html/images', 'doc/images/*.png')
bld.install_as('${DOCDIR}/manual.txt', 'doc/geany.txt')
bld.install_as('${DOCDIR}/html/index.html', 'doc/geany.html')
bld.install_as('${DOCDIR}/ScintillaLicense.txt', 'scintilla/License.txt')
# Data
bld.install_files('${DATADIR}/geany', 'data/filetype*')
bld.install_files('${DATADIR}/geany', 'data/*.tags')
bld.install_files('${DATADIR}/geany', 'data/snippets.conf')
bld.install_as('${DATADIR}/geany/GPL-2', 'COPYING')
# Icons
bld.install_files('${DATADIR}/pixmaps', 'pixmaps/geany.png')
bld.install_files('${DATADIR}/icons/hicolor/16x16/apps', 'icons/16x16/*.png')
def shutdown():
# the following code was taken from midori's WAF script, thanks
if Options.commands['install'] or Options.commands['uninstall']:
dir = Build.bld.get_install_path('${DATADIR}/icons/hicolor')
icon_cache_updated = False
if not Options.options.destdir:
try:
subprocess.call(['gtk-update-icon-cache', '-q', '-f', '-t', dir])
Utils.pprint('GREEN', 'GTK icon cache updated.')
icon_cache_updated = True
except:
Utils.pprint('YELLOW', 'Failed to update icon cache for ' + dir + '.')
if not icon_cache_updated and not Options.options.destdir:
print 'Icon cache not updated. After install, run this:'
print 'gtk-update-icon-cache -q -f -t %s' % dir
# the following code was taken from midori's WAF script, thanks
if Options.commands['install'] or Options.commands['uninstall']:
dir = Build.bld.get_install_path('${DATADIR}/icons/hicolor')
icon_cache_updated = False
if not Options.options.destdir:
try:
subprocess.call(['gtk-update-icon-cache', '-q', '-f', '-t', dir])
Utils.pprint('GREEN', 'GTK icon cache updated.')
icon_cache_updated = True
except:
Utils.pprint('YELLOW', 'Failed to update icon cache for ' + dir + '.')
if not icon_cache_updated and not Options.options.destdir:
print 'Icon cache not updated. After install, run this:'
print 'gtk-update-icon-cache -q -f -t %s' % dir
if Options.options.apidoc:
doxyfile = os.path.join(Build.bld.srcnode.abspath( \
Build.bld.env), 'doc', 'Doxyfile')
os.chdir('doc')
launch('doxygen ' + doxyfile, 'Generating API reference documentation')
if Options.options.apidoc:
doxyfile = os.path.join(Build.bld.srcnode.abspath( \
Build.bld.env), 'doc', 'Doxyfile')
os.chdir('doc')
launch('doxygen ' + doxyfile, 'Generating API reference documentation')
if Options.options.htmldoc:
os.chdir('doc')
# first try rst2html.py as it is the upstream default
ret = launch('rst2html.py -stg --stylesheet=geany.css geany.txt geany.html',
'Generating HTML documentation')
if not ret == 0:
launch('rst2html -stg --stylesheet=geany.css geany.txt geany.html',
'Generating HTML documentation (using fallback "rst2html")')
if Options.options.htmldoc:
os.chdir('doc')
# first try rst2html.py as it is the upstream default
ret = launch('rst2html.py -stg --stylesheet=geany.css geany.txt geany.html',
'Generating HTML documentation')
if not ret == 0:
launch('rst2html -stg --stylesheet=geany.css geany.txt geany.html',
'Generating HTML documentation (using fallback "rst2html")')
if Options.options.update_po:
# the following code was taken from midori's WAF script, thanks
os.chdir('./po')
try:
try:
size_old = os.stat('geany.pot').st_size
except:
size_old = 0
subprocess.call(['intltool-update', '--pot'])
size_new = os.stat('geany.pot').st_size
if size_new != size_old:
Utils.pprint('CYAN', 'Updated POT file.')
launch('intltool-update -r', 'Updating translations', 'CYAN')
else:
Utils.pprint('CYAN', 'POT file is up to date.')
except:
Utils.pprint('RED', 'Failed to generate pot file.')
os.chdir('..')
if Options.options.update_po:
# the following code was taken from midori's WAF script, thanks
os.chdir('./po')
try:
try:
size_old = os.stat('geany.pot').st_size
except:
size_old = 0
subprocess.call(['intltool-update', '--pot'])
size_new = os.stat('geany.pot').st_size
if size_new != size_old:
Utils.pprint('CYAN', 'Updated POT file.')
launch('intltool-update -r', 'Updating translations', 'CYAN')
else:
Utils.pprint('CYAN', 'POT file is up to date.')
except:
Utils.pprint('RED', 'Failed to generate pot file.')
os.chdir('..')
# Simple function to execute a command and print its exit status
def launch(command, status, success_color='GREEN'):
ret = 0
Utils.pprint(success_color, status)
try:
ret = subprocess.call(command.split())
except OSError, e:
ret = 1
print str(e), ":", command
except:
ret = 1
ret = 0
Utils.pprint(success_color, status)
try:
ret = subprocess.call(command.split())
except OSError, e:
ret = 1
print str(e), ":", command
except:
ret = 1
if ret != 0:
Utils.pprint('RED', status + ' failed')
if ret != 0:
Utils.pprint('RED', status + ' failed')
return ret
return ret
line_len = 0
def print_message(msg, result, color = 'GREEN'):
global line_len
if line_len == 0:
line_len = Configure.ConfigurationContext().line_just
global line_len
if line_len == 0:
line_len = Configure.ConfigurationContext().line_just
line_len = max(line_len, len(msg))
print "%s :" % msg.ljust(line_len),
Utils.pprint(color, result)
Runner.print_log(msg, '\n\n')
line_len = max(line_len, len(msg))
print "%s :" % msg.ljust(line_len),
Utils.pprint(color, result)
Runner.print_log(msg, '\n\n')