[geany/geany] 34088f: Drop Waf build system support
Enrico Tröger
git-noreply at xxxxx
Sun Mar 13 12:36:42 UTC 2016
Branch: refs/heads/master
Author: Enrico Tröger <enrico.troeger at uvena.de>
Committer: Enrico Tröger <enrico.troeger at uvena.de>
Date: Sun, 13 Dec 2015 13:36:12 UTC
Commit: 34088fbbb8535539e588520756aa418934b80941
https://github.com/geany/geany/commit/34088fbbb8535539e588520756aa418934b80941
Log Message:
-----------
Drop Waf build system support
See #768.
Modified Paths:
--------------
.gitignore
HACKING
Makefile.am
doc/geany.txt
doc/making-a-release
geany.spec.in
scripts/wafinit.sh
waf
wscript
Modified: .gitignore
7 lines changed, 0 insertions(+), 7 deletions(-)
===================================================================
@@ -10,7 +10,6 @@
deps.mak
.deps/
.libs/
-.lock-waf_*
Makefile
Makefile.in
.dirstamp
@@ -20,7 +19,6 @@ Makefile.in
#-----------------------------------------------------------------------
/aclocal.m4
/autom4te.cache
-/_build_
/build-aux/
/build-stamp
/codenames
@@ -48,8 +46,6 @@ Makefile.in
/intltool-*
/libtool
/localwin32.mk
-/.lock-wscript
-/.lock-wafbuild
/ltmain.sh
/m4/lt*.m4
/m4/intltool.m4
@@ -63,9 +59,6 @@ Makefile.in
/stamp-h.in
/*.tar.*
/TODO.*
-# extracted Waf directory (without dot on Windows)
-/.waf-*
-/waf-*
#-----------------------------------------------------------------------
# /po/
Modified: HACKING
9 lines changed, 3 insertions(+), 6 deletions(-)
===================================================================
@@ -171,9 +171,9 @@ Geany requires GTK >= 2.24 and GLib >= 2.28. API symbols from newer
GTK/GLib versions should be avoided or made optional to keep the source
code building on older systems.
-It is recommended to use the 2.24 API documentation of the GTK
-libs (including GLib, GDK and Pango) has the advantages
-that you don't get confused by any newer API additions and you
+It is recommended to use the 2.24 API documentation of the GTK
+libs (including GLib, GDK and Pango) has the advantages
+that you don't get confused by any newer API additions and you
don't have to take care about whether you can use them or not.
Coding
@@ -484,7 +484,6 @@ Adding a source file foo.[hc] in src/ or plugins/
-------------------------------------------------
* Add foo.c, foo.h to SRCS in path/Makefile.am.
* Add foo.o to OBJS in path/makefile.win32.
-* Add path/foo.c to geany_sources in wscript.
* Add path/foo.c to po/POTFILES.in (for string translation).
Adding a filetype
@@ -548,7 +547,6 @@ When adding a lexer, update:
* scintilla/Makefile.am
* scintilla/makefile.win32
-* wscript
* scintilla/src/Catalogue.cxx - add a LINK_LEXER command *manually*
For syntax highlighting, you will need to edit highlighting.c and
@@ -637,7 +635,6 @@ Method
``````
* Add foo.c to SRCS in Makefile.am.
* Add foo.o to OBJS in makefile.win32.
-* Add path/foo.c to geany_sources in wscript.
* Add Foo to parsers.h
* Add TM_PARSER_FOO to tagmanager/src/tm_parser.h. The list here must follow
exactly the order in parsers.h.
Modified: Makefile.am
2 lines changed, 0 insertions(+), 2 deletions(-)
===================================================================
@@ -15,8 +15,6 @@ WIN32_BUILD_FILES = \
EXTRA_DIST = \
autogen.sh \
- wscript \
- waf \
geany.desktop.in \
geany.pc.in \
geany.spec \
Modified: doc/geany.txt
67 lines changed, 1 insertions(+), 66 deletions(-)
===================================================================
@@ -132,8 +132,7 @@ of these tools are recommended.
Autotools based build system
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The Autotools based build system is very mature and has been well tested.
-To use it, you just need the Make tool, preferably GNU Make.
+To compile Geany yourself, you just need the Make tool, preferably GNU Make.
Then run the following commands::
@@ -148,65 +147,6 @@ Or via sudo::
% sudo make install
-Waf based build system
-^^^^^^^^^^^^^^^^^^^^^^
-
-The Waf build system is still quite young and under heavy development but already in a
-usable state. In contrast to the Autotools system, Waf needs Python. So before using Waf, you need
-to install Python on your system.
-The advantage of the Waf build system over the Autotools based build system is that the whole
-build process might be a bit faster. Especially when you use the Waf
-cache feature for repetitive builds (e.g. when changing only a few source files
-to test something) will become much faster since Waf will cache and re-use the
-unchanged built files and only compile the changed code again. See `Waf Cache`_ for details.
-To build Geany with Waf as run::
-
- $ ./waf configure
- $ ./waf build
-
-Then as root::
-
- % ./waf install
-
-Waf cache
-`````````
-
-The Waf build system has a nice and interesting feature which can help to avoid
-a lot of unnecessary rebuilding of unchanged code. This often happens when developing new features
-or trying to debug something in Geany.
-Waf is able to store and retrieve the object files from a cache. This cache is declared
-using the environment variable ``WAFCACHE``.
-A possible location of the cache directory could be ``~/.cache/waf``. In order to make use of
-this, you first need to create this directory::
-
- $ mkdir -p ~/.cache/waf
-
-then add the environment variable to your shell configuration (the following example is for
-Bash and should be adjusted to your used shell)::
-
- export WAFCACHE=/home/username/.cache/waf
-
-Remember to replace ``username`` with your actual username.
-
-More information about the Waf cache feature are available at
-http://code.google.com/p/waf/wiki/CacheObjectFiles.
-
-Cleaning the cache
-******************
-You should be careful about the size of the cache directory as it may
-grow rapidly over time.
-Waf doesn't do any cleaning or other house-keeping of the cache yet, so you need to keep it
-clean by yourself.
-An easy way to keep it clean is to run the following command regularly to remove old
-cached files::
-
- $ find /home/username/.cache/waf -mtime +14 -exec rm {} \;
-
-This will delete all files in the cache directory which are older than 14 days.
-
-For details about the ``find`` command and its options, check its manual page.
-
-
Custom installation
^^^^^^^^^^^^^^^^^^^
The configure script supports several common options, for a detailed
@@ -214,11 +154,6 @@ list, type::
$ ./configure --help
-or::
-
- $ ./waf --help
-
-(depending on which build system you use).
You may also want to read the INSTALL file for advanced installation
options.
Modified: doc/making-a-release
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -9,7 +9,7 @@ to filter commits by a particular developer name.
Ensure version numbers are all updated in:
configure.ac geany_private.rc geany.exe.manifest
- win32-config.h wscript doc/geany.txt
+ win32-config.h doc/geany.txt
Ensure release date is updated in:
NEWS doc/geany.txt doc/geany.1.in
Check GEANY_CODENAME is set in src/geany.h.
Modified: geany.spec.in
4 lines changed, 0 insertions(+), 4 deletions(-)
===================================================================
@@ -62,10 +62,6 @@ Geany plug-ins. You do not need to install this package to use Geany.
%prep
%setup -q
-# remove waf since this isn't needed for the build, we're building the package
-# with autotools
-rm -f waf
-rm -f wscript
%build
%configure
Modified: scripts/wafinit.sh
72 lines changed, 0 insertions(+), 72 deletions(-)
===================================================================
@@ -1,72 +0,0 @@
-#! /bin/sh
-#
-# This script creates a "configure" script and a Makefile to imitate autotools
-# but Waf is actually used to build
-
-WAF="./waf"
-
-# Makefile
-cat > Makefile << EOF
-
-.PHONY: build configure
-
-all: build
-
-build:
- @$WAF build
-
-install:
- @if test -n "\$(DESTDIR)"; then \\
- ./waf install --destdir="\$(DESTDIR)"; \\
- else \\
- ./waf install; \\
- fi;
-
-uninstall:
- @if test -n "\$(DESTDIR)"; then \\
- $WAF uninstall --destdir="\$(DESTDIR)"; \\
- else \\
- $WAF uninstall; \\
- fi;
-
-clean:
- @$WAF clean
-
-distclean:
- @$WAF distclean
- @-rm -f Makefile
-
-htmldoc:
- @$WAF --htmldoc
-
-apidoc:
- @$WAF --apidoc
-
-configure:
- @$WAF configure
-
-EOF
-
-template="
-all: build
-
-build:
- cd .. && $WAF build
-
-"
-
-echo "$template" > src/Makefile
-echo "$template" > tagmanager/Makefile
-echo "$template" > scintilla/Makefile
-echo "$template" > plugins/Makefile
-
-
-# configure
-cat > configure << EOF
-#!/bin/sh
-
-$WAF configure \$@
-
-EOF
-
-chmod 755 configure
Modified: waf
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online
Modified: wscript
981 lines changed, 0 insertions(+), 981 deletions(-)
===================================================================
@@ -1,981 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# WAF build script - this file is part of Geany, a fast and lightweight IDE
-#
-# Copyright 2008-2012 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
-# Copyright 2008-2012 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-"""
-This is a WAF build script (http://code.google.com/p/waf/).
-It can be used as an alternative build system to autotools
-for Geany. It does not (yet) cover all of the autotools tests and
-configure options but all important things are working.
-"make dist" should be done with autotools, most other targets and
-functions should work better (regarding performance and flexibility)
-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).
-
-The code of this file itself loosely follows PEP 8 with some exceptions
-(line width 100 characters and some other minor things).
-
-Requires WAF 1.6.1 and Python 2.5 (or later).
-"""
-
-
-import sys
-import os
-import tempfile
-from waflib import Logs, Options, Scripting, Utils
-from waflib.Build import BuildContext
-from waflib.Configure import ConfigurationContext
-from waflib.Errors import ConfigurationError, WafError
-from waflib.TaskGen import feature, before_method
-from waflib.Tools.compiler_c import c_compiler
-from waflib.Tools.compiler_cxx import cxx_compiler
-
-
-APPNAME = 'geany'
-VERSION = '1.26'
-LINGUAS_FILE = os.path.join('po', 'LINGUAS')
-MINIMUM_GTK_VERSION = '2.24.0'
-MINIMUM_GTK3_VERSION = '3.0.0'
-MINIMUM_GLIB_VERSION = '2.28.0'
-
-GEANY_LIB_VERSION = '0.0.0'
-
-top = '.'
-out = '_build_'
-
-mio_sources = set(['tagmanager/mio/mio.c'])
-
-ctags_sources = set([
- 'tagmanager/ctags/abaqus.c',
- 'tagmanager/ctags/args.c',
- 'tagmanager/ctags/abc.c',
- 'tagmanager/ctags/actionscript.c',
- 'tagmanager/ctags/asciidoc.c',
- 'tagmanager/ctags/asm.c',
- 'tagmanager/ctags/basic.c',
- 'tagmanager/ctags/c.c',
- 'tagmanager/ctags/cobol.c',
- 'tagmanager/ctags/conf.c',
- 'tagmanager/ctags/css.c',
- 'tagmanager/ctags/ctags.c',
- 'tagmanager/ctags/diff.c',
- 'tagmanager/ctags/docbook.c',
- 'tagmanager/ctags/erlang.c',
- 'tagmanager/ctags/entry.c',
- 'tagmanager/ctags/fortran.c',
- 'tagmanager/ctags/get.c',
- 'tagmanager/ctags/go.c',
- 'tagmanager/ctags/haskell.c',
- 'tagmanager/ctags/haxe.c',
- 'tagmanager/ctags/html.c',
- 'tagmanager/ctags/js.c',
- 'tagmanager/ctags/json.c',
- 'tagmanager/ctags/keyword.c',
- 'tagmanager/ctags/latex.c',
- 'tagmanager/ctags/lregex.c',
- 'tagmanager/ctags/lua.c',
- 'tagmanager/ctags/make.c',
- 'tagmanager/ctags/markdown.c',
- 'tagmanager/ctags/matlab.c',
- 'tagmanager/ctags/nsis.c',
- 'tagmanager/ctags/nestlevel.c',
- 'tagmanager/ctags/objc.c',
- 'tagmanager/ctags/options.c',
- 'tagmanager/ctags/parse.c',
- 'tagmanager/ctags/pascal.c',
- 'tagmanager/ctags/r.c',
- 'tagmanager/ctags/perl.c',
- 'tagmanager/ctags/php.c',
- 'tagmanager/ctags/powershell.c',
- 'tagmanager/ctags/python.c',
- 'tagmanager/ctags/read.c',
- 'tagmanager/ctags/rest.c',
- 'tagmanager/ctags/ruby.c',
- 'tagmanager/ctags/rust.c',
- 'tagmanager/ctags/sh.c',
- 'tagmanager/ctags/sort.c',
- 'tagmanager/ctags/sql.c',
- 'tagmanager/ctags/strlist.c',
- 'tagmanager/ctags/txt2tags.c',
- 'tagmanager/ctags/tcl.c',
- 'tagmanager/ctags/vhdl.c',
- 'tagmanager/ctags/verilog.c',
- 'tagmanager/ctags/vstring.c'])
-
-tagmanager_sources = set([
- 'tagmanager/src/tm_source_file.c',
- 'tagmanager/src/tm_tag.c',
- 'tagmanager/src/tm_workspace.c'])
-
-scintilla_sources = set(['scintilla/gtk/scintilla-marshal.c'])
-
-geany_sources = set([
- '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/geanyentryaction.c',
- 'src/geanymenubuttonaction.c', 'src/geanyobject.c', 'src/geanywraplabel.c',
- 'src/highlighting.c', 'src/keybindings.c',
- 'src/keyfile.c', 'src/log.c', 'src/libmain.c', 'src/msgwindow.c', 'src/navqueue.c', 'src/notebook.c', 'src/osx.c',
- 'src/plugins.c', 'src/pluginutils.c', 'src/prefix.c', 'src/prefs.c', 'src/printing.c', 'src/project.c',
- 'src/sciwrappers.c', 'src/search.c', 'src/socket.c', 'src/spawn.c', 'src/stash.c',
- 'src/symbols.c',
- 'src/templates.c', 'src/toolbar.c', 'src/tools.c', 'src/sidebar.c',
- 'src/ui_utils.c', 'src/utils.c'])
-
-geany_bin_sources = set(['src/main.c'])
-
-geany_icons = {
- 'hicolor/16x16/apps': ['16x16/classviewer-class.png',
- '16x16/classviewer-macro.png',
- '16x16/classviewer-member.png',
- '16x16/classviewer-method.png',
- '16x16/classviewer-namespace.png',
- '16x16/classviewer-other.png',
- '16x16/classviewer-struct.png',
- '16x16/classviewer-var.png',
- '16x16/geany.png'],
- 'hicolor/16x16/actions': ['16x16/geany-build.png',
- '16x16/geany-close-all.png',
- '16x16/geany-save-all.png'],
- 'hicolor/24x24/actions': ['24x24/geany-build.png',
- '24x24/geany-close-all.png',
- '24x24/geany-save-all.png'],
- 'hicolor/32x32/actions': ['32x32/geany-build.png',
- '32x32/geany-close-all.png',
- '32x32/geany-save-all.png'],
- 'hicolor/32x32/apps': ['32x32/geany.png'],
- 'hicolor/48x48/actions': ['48x48/geany-build.png',
- '48x48/geany-close-all.png',
- '48x48/geany-save-all.png'],
- 'hicolor/48x48/apps': ['48x48/geany.png'],
- 'hicolor/scalable/apps': ['scalable/geany.svg'],
- 'hicolor/scalable/actions': ['scalable/geany-build.svg',
- 'scalable/geany-close-all.svg',
- 'scalable/geany-save-all.svg'],
- 'Tango/16x16/actions': ['tango/16x16/geany-save-all.png'],
- 'Tango/24x24/actions': ['tango/24x24/geany-save-all.png'],
- 'Tango/32x32/actions': ['tango/32x32/geany-save-all.png'],
- 'Tango/48x48/actions': ['tango/48x48/geany-save-all.png'],
- 'Tango/scalable/actions': ['tango/scalable/geany-save-all.svg']
-}
-geany_icons_indexes = {
- 'hicolor': ['index.theme'],
- 'Tango': ['tango/index.theme']
-}
-
-
-def configure(conf):
-
- conf.check_waf_version(mini='1.6.1')
-
- conf.load('compiler_c')
- _check_c99(conf)
- is_win32 = _target_is_win32(conf)
-
- visibility_hidden_supported = conf.check_cc(cflags=['-Werror', '-fvisibility=hidden'], mandatory=False)
- conf.check_cc(header_name='fcntl.h', mandatory=False)
- conf.check_cc(header_name='fnmatch.h', mandatory=False)
- conf.check_cc(header_name='glob.h', mandatory=False)
- conf.check_cc(header_name='sys/time.h', mandatory=False)
- conf.check_cc(header_name='sys/types.h', mandatory=False)
- conf.check_cc(header_name='sys/stat.h', mandatory=False)
- conf.define('HAVE_STDLIB_H', 1) # are there systems without stdlib.h?
- conf.define('STDC_HEADERS', 1) # an optimistic guess ;-)
- _add_to_env_and_define(conf, 'HAVE_REGCOMP', 1) # needed for CTags
-
- conf.check_cc(function_name='fgetpos', header_name='stdio.h', mandatory=False)
- conf.check_cc(function_name='fnmatch', header_name='fnmatch.h', mandatory=False)
- conf.check_cc(function_name='ftruncate', header_name='unistd.h', mandatory=False)
- conf.check_cc(function_name='mkstemp', header_name='stdlib.h', mandatory=False)
- conf.check_cc(function_name='strstr', header_name='string.h')
-
- conf.check_cc(function_name='pow', header_name='math.h', lib='m', uselib_store='M')
-
- # check sunOS socket support
- if Options.platform == 'sunos':
- conf.check_cc(function_name='socket', lib='socket',
- header_name='sys/socket.h', uselib_store='SUNOS_SOCKET', mandatory=True)
-
- # check for cxx after the header and function checks have been done to ensure they are
- # checked with cc not cxx
- conf.load('compiler_cxx')
- if is_win32:
- conf.load('winres')
- _load_intltool_if_available(conf)
-
- # GTK / GIO version check
- gtk_package_name = 'gtk+-3.0' if conf.options.use_gtk3 else 'gtk+-2.0'
- minimum_gtk_version = MINIMUM_GTK3_VERSION if conf.options.use_gtk3 else MINIMUM_GTK_VERSION
- conf.check_cfg(package=gtk_package_name, atleast_version=minimum_gtk_version, uselib_store='GTK',
- mandatory=True, args='--cflags --libs')
- conf.check_cfg(package='glib-2.0', atleast_version=MINIMUM_GLIB_VERSION, uselib_store='GLIB',
- mandatory=True, args='--cflags --libs')
- conf.check_cfg(package='gmodule-2.0', uselib_store='GMODULE',
- mandatory=True, args='--cflags --libs')
- conf.check_cfg(package='gio-2.0', uselib_store='GIO', args='--cflags --libs', mandatory=True)
- gtk_version = conf.check_cfg(modversion=gtk_package_name, uselib_store='GTK') or 'Unknown'
- conf.check_cfg(package='gthread-2.0', uselib_store='GTHREAD', args='--cflags --libs')
- if conf.options.enable_mac_integration:
- pkgname = 'gtk-mac-integration-gtk3' if conf.options.use_gtk3 else 'gtk-mac-integration-gtk2'
- conf.check_cfg(package=pkgname, uselib_store='MAC_INTEGRATION',
- mandatory=True, args='--cflags --libs')
- # remember GTK version for the build step
- conf.env['gtk_package_name'] = gtk_package_name
- conf.env['gtk_version'] = gtk_version
- conf.env['minimum_gtk_version'] = minimum_gtk_version
- conf.env['use_gtk3'] = conf.options.use_gtk3
-
- revision = _get_git_rev(conf)
-
- # rst2html for the HTML manual
- if not conf.options.no_html_doc and revision is not None:
- try:
- conf.env['RST2HTML'] = _find_rst2html(conf)
- except WafError:
- error_msg = '''Documentation enabled but rst2html not found.
-You can explicitly disable building of the HTML manual with --disable-html-docs,
-but you then may not have a local copy of the HTML manual.'''
- raise WafError(error_msg)
-
- # Windows specials
- if is_win32:
- if conf.env['PREFIX'].lower() == tempfile.gettempdir().lower():
- # overwrite default prefix on Windows (tempfile.gettempdir() is the Waf default)
- new_prefix = os.path.join(str(conf.root), '%s-%s' % (APPNAME, VERSION))
- _add_to_env_and_define(conf, 'PREFIX', new_prefix, quote=True)
- _add_to_env_and_define(conf, 'BINDIR', os.path.join(new_prefix, 'bin'), quote=True)
- _add_to_env_and_define(conf, 'DOCDIR', os.path.join(conf.env['PREFIX'], 'doc'), quote=True)
- _add_to_env_and_define(conf, 'LIBDIR', '%s/lib' % conf.env['PREFIX'], quote=True)
- conf.define('LOCALEDIR', os.path.join('share' 'locale'), quote=True)
- # overwrite LOCALEDIR to install message catalogues properly
- conf.env['LOCALEDIR'] = os.path.join(conf.env['PREFIX'], 'share', 'locale')
- # DATADIR is defined in objidl.h, so we remove it from config.h but keep it in env
- conf.undefine('DATADIR')
- conf.env['DATADIR'] = os.path.join(conf.env['PREFIX'], 'data')
- conf.env.append_value('LINKFLAGS_cprogram', [
- '-mwindows',
- '-static-libgcc',
- '-static-libstdc++'])
- conf.env.append_value('LIB_WIN32', ['wsock32', 'uuid', 'ole32', 'comdlg32'])
- else:
- conf.env['cshlib_PATTERN'] = '%s.so'
- # DATADIR and LOCALEDIR are defined by the intltool tool
- # but they are not added to the environment, so we need to
- _add_define_to_env(conf, 'DATADIR')
- _add_define_to_env(conf, 'LOCALEDIR')
- docdir = os.path.join(conf.env['DATADIR'], 'doc', 'geany')
- libdir = os.path.join(conf.env['PREFIX'], 'lib')
- mandir = os.path.join(conf.env['DATADIR'], 'man')
- _define_from_opt(conf, 'DOCDIR', conf.options.docdir, docdir)
- _define_from_opt(conf, 'LIBDIR', conf.options.libdir, libdir)
- _define_from_opt(conf, 'MANDIR', conf.options.mandir, mandir)
-
- conf.define('ENABLE_NLS', 1)
- conf.define('GEANY_LOCALEDIR', '' if is_win32 else conf.env['LOCALEDIR'], quote=True)
- conf.define('GEANY_DATADIR', 'data' if is_win32 else conf.env['DATADIR'], quote=True)
- conf.define('GEANY_DOCDIR', conf.env['DOCDIR'], quote=True)
- conf.define('GEANY_LIBDIR', '' if is_win32 else conf.env['LIBDIR'], quote=True)
- conf.define('GEANY_PREFIX', '' if is_win32 else conf.env['PREFIX'], quote=True)
- conf.define('PACKAGE', APPNAME, quote=True)
- conf.define('VERSION', VERSION, quote=True)
- conf.define('REVISION', revision or '-1', quote=True)
-
- conf.define('GETTEXT_PACKAGE', APPNAME, quote=True)
-
- # no VTE on Windows
- if is_win32:
- conf.options.no_vte = True
-
- _define_from_opt(conf, 'HAVE_PLUGINS', not conf.options.no_plugins, None)
- _define_from_opt(conf, 'HAVE_SOCKET', not conf.options.no_socket, None)
- _define_from_opt(conf, 'HAVE_VTE', not conf.options.no_vte, None)
-
- conf.write_config_header('config.h', remove=False)
-
- # GEANY_EXPORT_SYMBOL and GEANY_API_SYMBOL
- if is_win32:
- geanyexport_cflags = []
- geanyexport_defines = ['GEANY_EXPORT_SYMBOL=__declspec(dllexport)']
- elif visibility_hidden_supported:
- geanyexport_cflags = ['-fvisibility=hidden']
- geanyexport_defines = ['GEANY_EXPORT_SYMBOL=__attribute__((visibility("default")))']
- else: # unknown, define to nothing
- geanyexport_cflags = []
- geanyexport_defines = ['GEANY_EXPORT_SYMBOL=']
- geanyexport_defines.append('GEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL')
- conf.env['DEFINES_geanyexport'] = geanyexport_defines
- conf.env['CFLAGS_geanyexport'] = geanyexport_cflags
- conf.env['CXXFLAGS_geanyexport'] = geanyexport_cflags
-
- # some more compiler flags
- conf.env.append_value('CFLAGS', ['-DHAVE_CONFIG_H'])
- if conf.env['CC_NAME'] == 'gcc' and '-O' not in ''.join(conf.env['CFLAGS']):
- conf.env.append_value('CFLAGS', ['-O2'])
- if revision is not None:
- conf.env.append_value('CFLAGS', ['-g', '-DGEANY_DEBUG'])
- # Scintilla flags
- conf.env.append_value('CFLAGS', ['-DGTK'])
- conf.env.append_value('CXXFLAGS',
- ['-DNDEBUG', '-DGTK', '-DSCI_LEXER', '-DG_THREADS_IMPL_NONE'])
- if conf.env['CXX_NAME'] == 'gcc' and '-O' not in ''.join(conf.env['CXXFLAGS']):
- conf.env.append_value('CXXFLAGS', ['-O2'])
- if revision is not None:
- conf.env.append_value('CXXFLAGS', ['-g'])
-
- # summary
- Logs.pprint('BLUE', 'Summary:')
- conf.msg('Install Geany ' + VERSION + ' in', conf.env['PREFIX'])
- conf.msg('Using GTK version', gtk_version)
- conf.msg('Build with plugin support', conf.options.no_plugins and 'no' or 'yes')
- conf.msg('Use virtual terminal support', conf.options.no_vte and 'no' or 'yes')
- if revision is not None:
- conf.msg('Compiling Git revision', revision)
- # deprecation warning
- _show_deprecation_warning(conf)
-
-
-def _show_deprecation_warning(ctx):
- Logs.pprint(
- 'RED',
- 'The Waf build system is deprecated and will be removed in the removed in Geany 1.27. '
- 'Please use the Autotools build system.')
-
-
-def options(opt):
- # Disable MSVC detection on win32: building Geany with MSVC is currently not supported
- # If anyone wants to add support for building with MSVC, this hack should be removed.
- c_compiler['win32'] = ['gcc']
- cxx_compiler['win32'] = ['g++']
-
- opt.load('compiler_cc')
- opt.load('compiler_cxx')
- opt.load('intltool')
-
- # Option
- opt.add_option('--no-scm', action='store_true', default=False,
- help='Disable SCM detection [default: No]', dest='no_scm')
- # 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-gtk3', action='store_true', default=False,
- help='compile with GTK3 support (experimental) [[default: No]',
- dest='use_gtk3')
- opt.add_option('--enable-mac-integration', action='store_true', default=False,
- help='use gtk-mac-integration to enable improved OS X integration [[default: No]',
- dest='enable_mac_integration')
- opt.add_option('--disable-html-docs', action='store_true', default=False,
- help='do not generate HTML documentation using rst2html [[default: No]',
- dest='no_html_doc')
- # 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')
-
-
-def build(bld):
- is_win32 = _target_is_win32(bld)
- bld.add_post_fun(_show_deprecation_warning)
-
- if bld.cmd == 'clean':
- _remove_linguas_file()
- if bld.cmd in ('install', 'uninstall'):
- bld.add_post_fun(_post_install)
-
- def build_plugin(plugin_name, install=True, uselib_add=[]):
- if install:
- instpath = '${LIBDIR}/geany'
- else:
- instpath = None
-
- bld(
- features = ['c', 'cshlib'],
- source = 'plugins/%s.c' % plugin_name,
- includes = ['.', 'src/', 'scintilla/include', 'tagmanager/src'],
- defines = 'G_LOG_DOMAIN="%s"' % plugin_name,
- target = plugin_name,
- uselib = ['GTK', 'GLIB', 'GMODULE', 'C99'] + uselib_add,
- use = ['geany'],
- install_path = instpath)
-
- # CTags
- bld.objects(
- features = ['c'],
- source = ctags_sources,
- name = 'ctags',
- target = 'ctags',
- includes = ['.', 'tagmanager', 'tagmanager/ctags'],
- defines = 'G_LOG_DOMAIN="CTags"',
- uselib = ['cshlib', 'GLIB', 'geanyexport', 'C99'])
-
- # Tagmanager
- bld.objects(
- features = ['c'],
- source = tagmanager_sources,
- name = 'tagmanager',
- target = 'tagmanager',
- includes = ['.', 'tagmanager', 'tagmanager/ctags'],
- defines = ['GEANY_PRIVATE', 'G_LOG_DOMAIN="Tagmanager"'],
- uselib = ['cshlib', 'GTK', 'GLIB', 'geanyexport', 'C99'])
-
- # MIO
- bld.objects(
- features = ['c'],
- source = mio_sources,
- name = 'mio',
- target = 'mio',
- includes = ['.', 'tagmanager/mio/'],
- defines = 'G_LOG_DOMAIN="MIO"',
- uselib = ['cshlib', 'GTK', 'GLIB', 'geanyexport'])
-
- # Scintilla
- files = bld.srcnode.ant_glob('scintilla/**/*.cxx', src=True, dir=False)
- scintilla_sources.update([file.path_from(bld.srcnode) for file in files])
- bld.objects(
- features = ['c', 'cxx'],
- name = 'scintilla',
- target = 'scintilla',
- source = scintilla_sources,
- includes = ['.', 'scintilla/include', 'scintilla/src', 'scintilla/lexlib'],
- uselib = ['cshlib', 'cxxshlib', 'GTK', 'GLIB', 'GMODULE', 'M', 'geanyexport'])
-
- # Geany
- if bld.env['HAVE_VTE'] == 1:
- geany_sources.add('src/vte.c')
- if is_win32:
- geany_sources.add('src/win32.c')
- geany_bin_sources.add('geany_private.rc')
-
- def gen_signallist(task):
- from xml.etree import ElementTree
-
- def find_handlers(xml_filename):
- tree = ElementTree.parse(xml_filename)
- signals = tree.getroot().findall(".//signal")
- return [sig.attrib["handler"] for sig in signals]
-
- handlers = []
- for node in task.inputs:
- handlers += find_handlers(node.abspath())
- handlers = sorted(set(handlers))
-
- for node in task.outputs:
- node.write("/* This file is auto-generated, do not edit. */\n" +
- ''.join(["ITEM(%s)\n" % h for h in handlers]))
-
- # signallist.i
- bld(
- source = 'data/geany.glade',
- target = bld.path.get_bld().make_node('src/signallist.i'),
- name = 'signallist.i',
- rule = gen_signallist)
-
- base_uselibs = ['GTK', 'GLIB', 'GMODULE', 'GIO', 'GTHREAD', 'WIN32', 'MAC_INTEGRATION', 'SUNOS_SOCKET', 'M', 'C99']
-
- # libgeany
- bld.shlib(
- features = ['c', 'cxx'],
- name = 'geany',
- target = 'geany',
- source = geany_sources,
- includes = ['.', 'scintilla/include', 'tagmanager/src', 'src'],
- defines = ['G_LOG_DOMAIN="Geany"', 'GEANY_PRIVATE'],
- uselib = base_uselibs + ['geanyexport'],
- use = ['scintilla', 'ctags', 'tagmanager', 'mio'],
- linkflags = bld.env['LINKFLAGS_cprogram'],
- vnum = GEANY_LIB_VERSION,
- install_path = '${PREFIX}/bin' if is_win32 else '${LIBDIR}')
-
- # geany executable
- t = bld.program(
- features = ['c', 'cxx'],
- name = 'geany_bin',
- target = 'geany',
- source = geany_bin_sources,
- includes = ['.', 'scintilla/include', 'tagmanager/src'],
- defines = ['G_LOG_DOMAIN="Geany"', 'GEANY_PRIVATE'],
- uselib = base_uselibs + ['geanyexport'],
- use = ['geany'])
- if not is_win32:
- # http://www.freehackers.org/~tnagy/testdoc/single.html#common_c
- t.rpath = bld.env['LIBDIR']
-
- # Plugins
- if bld.env['HAVE_PLUGINS'] == 1:
- build_plugin('classbuilder')
- build_plugin('demoplugin', False)
- build_plugin('export', uselib_add=['M'])
- build_plugin('filebrowser')
- build_plugin('htmlchars')
- build_plugin('saveactions')
- build_plugin('splitwindow')
-
- # Translations
- if bld.env['INTLTOOL']:
- bld(
- features = ['linguas', 'intltool_po'],
- podir = 'po',
- install_path = '${LOCALEDIR}',
- appname = 'geany')
-
- # HTML documentation (build if it is not part of the tree already, as it is required for install)
- html_doc_filename = os.path.join(bld.out_dir, 'doc', 'geany.html')
- if bld.env['RST2HTML']:
- rst2html = bld.env['RST2HTML']
- bld(
- source = ['doc/geany.txt'],
- deps = ['doc/geany.css'],
- target = bld.path.get_bld().make_node('doc/geany.html'),
- name = 'geany.html',
- cwd = os.path.join(bld.path.abspath(), 'doc'),
- rule = '%s -stg --stylesheet=geany.css geany.txt %s' % (rst2html, html_doc_filename))
-
- # geany.pc
- if is_win32:
- # replace backward slashes by forward slashes as they could be interepreted as escape
- # characters
- geany_pc_prefix = bld.env['PREFIX'].replace('\\', '/')
- else:
- geany_pc_prefix = bld.env['PREFIX']
- bld(
- source = 'geany.pc.in',
- dct = {'VERSION': VERSION,
- 'DEPENDENCIES': '%s >= %s glib-2.0 >= %s' % \
- (bld.env['gtk_package_name'],
- bld.env['minimum_gtk_version'],
- MINIMUM_GLIB_VERSION),
- 'prefix': geany_pc_prefix,
- 'exec_prefix': '${prefix}',
- 'libdir': '${exec_prefix}/lib',
- 'includedir': '${prefix}/include',
- 'datarootdir': '${prefix}/share',
- 'datadir': '${datarootdir}',
- 'localedir': '${datarootdir}/locale'})
-
- # geany.nsi
- bld(
- features = 'subst',
- source = 'geany.nsi.in',
- target = 'geany.nsi',
- dct = {'VERSION': VERSION,
- 'GTK_VERSION': bld.env['gtk_version']},
- install_path = None)
-
- if not is_win32:
- # geany.desktop
- if bld.env['INTLTOOL']:
- bld(
- features = 'intltool_in',
- source = 'geany.desktop.in',
- flags = ['-d', '-q', '-u', '-c'],
- install_path = '${DATADIR}/applications')
-
- # geany.1
- bld(
- features = 'subst',
- source = 'doc/geany.1.in',
- target = 'geany.1',
- dct = {'VERSION': VERSION,
- 'GEANY_DATA_DIR': bld.env['DATADIR'] + '/geany'},
- install_path = '${MANDIR}/man1')
-
- # geany.spec
- bld(
- features = 'subst',
- source = 'geany.spec.in',
- target = 'geany.spec',
- install_path = None,
- dct = {'VERSION': VERSION})
-
- # Doxyfile
- bld(
- features = 'subst',
- source = 'doc/Doxyfile.in',
- target = 'doc/Doxyfile',
- install_path = None,
- dct = {'VERSION': VERSION,
- 'top_builddir': bld.out_dir,
- 'top_srcdir': bld.top_dir,})
-
- # disable build/install phase interleaving
- bld.add_group()
-
- ###
- # Install files
- ###
- # Headers
- bld.install_files('${PREFIX}/include/geany', '''
- src/app.h
- src/build.h
- 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/main.h
- src/msgwindow.h
- src/navqueue.h
- src/plugindata.h
- src/pluginutils.h
- src/prefs.h
- src/project.h
- src/sciwrappers.h
- src/search.h
- src/spawn.h
- src/stash.h
- src/support.h
- src/symbols.h
- src/templates.h
- src/toolbar.h
- src/ui_utils.h
- src/utils.h
- src/gtkcompat.h
- plugins/geanyplugin.h
- plugins/geanyfunctions.h
- ''')
- bld.install_files('${PREFIX}/include/geany/scintilla', '''
- scintilla/include/SciLexer.h scintilla/include/Scintilla.h
- scintilla/include/Scintilla.iface scintilla/include/ScintillaWidget.h
- scintilla/include/Sci_Position.h ''')
- bld.install_files('${PREFIX}/include/geany/tagmanager', '''
- tagmanager/src/tm_source_file.h
- tagmanager/src/tm_tag.h
- tagmanager/src/tm_tagmanager.h
- tagmanager/src/tm_workspace.h ''')
- # Docs
- base_dir = '${PREFIX}' if is_win32 else '${DOCDIR}'
- ext = '.txt' if is_win32 else ''
- for filename in 'AUTHORS ChangeLog COPYING README NEWS THANKS TODO'.split():
- basename = _uc_first(filename, bld)
- destination_filename = '%s%s' % (basename, ext)
- destination = os.path.join(base_dir, destination_filename)
- bld.install_as(destination, filename)
-
- # install HTML documentation only if it exists, i.e. it was built before
- # local_html_doc_filename supports installing HTML doc from in-tree geany.html if it exists
- local_html_doc_filename = os.path.join(bld.path.abspath(), 'doc', 'geany.html')
- if os.path.exists(html_doc_filename) or os.path.exists(local_html_doc_filename):
- html_dir = '' if is_win32 else 'html/'
- html_name = 'Manual.html' if is_win32 else 'index.html'
- start_dir = bld.path.find_dir('doc/images')
- bld.install_files('${DOCDIR}/%simages' % html_dir, start_dir.ant_glob('*.png'), cwd=start_dir)
- bld.install_as('${DOCDIR}/%s%s' % (html_dir, html_name), 'doc/geany.html')
-
- bld.install_as('${DOCDIR}/%s' % _uc_first('manual.txt', bld), 'doc/geany.txt')
- bld.install_as('${DOCDIR}/ScintillaLicense.txt', 'scintilla/License.txt')
- if is_win32:
- bld.install_as('${DOCDIR}/ReadMe.I18n.txt', 'README.I18N')
- bld.install_as('${DOCDIR}/Hacking.txt', 'HACKING')
- # Data
- data_dir = '' if is_win32 else 'geany'
- start_dir = bld.path.find_dir('data')
- bld.install_as('${DATADIR}/%s/GPL-2' % data_dir, 'COPYING')
- bld.install_files('${DATADIR}/%s' % data_dir, start_dir.ant_glob('filetype*'), cwd=start_dir)
- bld.install_files('${DATADIR}/%s' % data_dir, start_dir.ant_glob('*.tags'), cwd=start_dir)
- bld.install_files('${DATADIR}/%s' % data_dir, 'data/geany.glade')
- bld.install_files('${DATADIR}/%s' % data_dir, 'data/snippets.conf')
- bld.install_files('${DATADIR}/%s' % data_dir, 'data/ui_toolbar.xml')
- if bld.env['use_gtk3']:
- bld.install_files('${DATADIR}/%s' % data_dir, 'data/geany.css')
- else:
- bld.install_files('${DATADIR}/%s' % data_dir, 'data/geany.gtkrc')
-
- start_dir = bld.path.find_dir('data/colorschemes')
- template_dest = '${DATADIR}/%s/colorschemes' % data_dir
- bld.install_files(template_dest, start_dir.ant_glob('*'), cwd=start_dir)
- start_dir = bld.path.find_dir('data/templates')
- template_dest = '${DATADIR}/%s/templates' % data_dir
- bld.install_files(template_dest, start_dir.ant_glob('**/*'), cwd=start_dir, relative_trick=True)
- # Icons
- for dest, srcs in geany_icons.items():
- dest_dir = os.path.join('${PREFIX}/share/icons' if is_win32 else '${DATADIR}/icons', dest)
- bld.install_files(dest_dir, srcs, cwd=bld.path.find_dir('icons'))
- # install theme indexes on Windows
- if is_win32:
- for dest, srcs in geany_icons_indexes.items():
- bld.install_files(os.path.join('${PREFIX}/share/icons', dest), srcs, cwd=bld.path.find_dir('icons'))
-
-
-def distclean(ctx):
- Scripting.distclean(ctx)
- _remove_linguas_file()
-
-
-def _remove_linguas_file():
- # remove LINGUAS file as well
- try:
- os.unlink(LINGUAS_FILE)
- except OSError:
- pass
-
-
- at feature('linguas')
- at before_method('apply_intltool_po')
-def write_linguas_file(self):
- if os.path.exists(LINGUAS_FILE):
- return
- linguas = ''
- if 'LINGUAS' in self.env:
- files = self.env['LINGUAS']
- for po_filename in files.split(' '):
- if os.path.exists('po/%s.po' % po_filename):
- linguas += '%s ' % po_filename
- else:
- files = os.listdir('%s/po' % self.path.abspath())
- files.sort()
- for filename in files:
- if filename.endswith('.po'):
- linguas += '%s ' % filename[:-3]
- file_h = open(LINGUAS_FILE, 'w')
- file_h.write('# This file is autogenerated. Do not edit.\n%s\n' % linguas)
- file_h.close()
-
-
-def _post_install(ctx):
- is_win32 = _target_is_win32(ctx)
- if is_win32:
- return
- for d in 'hicolor', 'Tango':
- theme_dir = Utils.subst_vars('${DATADIR}/icons/' + d, ctx.env)
- icon_cache_updated = False
- if not ctx.options.destdir:
- ctx.exec_command('gtk-update-icon-cache -q -f -t %s' % theme_dir)
- Logs.pprint('GREEN', 'GTK icon cache updated.')
- icon_cache_updated = True
- if not icon_cache_updated:
- Logs.pprint('YELLOW', 'Icon cache not updated. After install, run this:')
- Logs.pprint('YELLOW', 'gtk-update-icon-cache -q -f -t %s' % theme_dir)
-
-
-def updatepo(ctx):
- """update the message catalogs for internationalization"""
- potfile = '%s.pot' % APPNAME
- os.chdir('%s/po' % top)
- try:
- try:
- old_size = os.stat(potfile).st_size
- except OSError:
- old_size = 0
- ctx.exec_command('intltool-update --pot -g %s' % APPNAME)
- size_new = os.stat(potfile).st_size
- if size_new != old_size:
- Logs.pprint('CYAN', 'Updated POT file.')
- Logs.pprint('CYAN', 'Updating translations')
- ret = ctx.exec_command('intltool-update -r -g %s' % APPNAME)
- if ret != 0:
- Logs.pprint('RED', 'Updating translations failed')
- else:
- Logs.pprint('CYAN', 'POT file is up to date.')
- except OSError:
- Logs.pprint('RED', 'Failed to generate pot file.')
-
-
-def apidoc(ctx):
- """generate API reference documentation"""
- ctx = BuildContext() # create our own context to have ctx.top_dir
- basedir = ctx.top_dir
- doxygen = _find_program(ctx, 'doxygen')
- doxyfile = '%s/doc/Doxyfile' % ctx.out_dir
- Logs.pprint('CYAN', 'Generating API documentation')
- ret = ctx.exec_command('%s %s' % (doxygen, doxyfile))
- if ret != 0:
- raise WafError('Generating API documentation failed')
-
-
-def hackingdoc(ctx):
- """generate HACKING documentation"""
- ctx = BuildContext() # create our own context to have ctx.top_dir
- Logs.pprint('CYAN', 'Generating HACKING documentation')
- cmd = _find_rst2html(ctx)
- hacking_file = os.path.join(ctx.top_dir, 'HACKING')
- hacking_html_file = os.path.join(ctx.top_dir, 'doc', 'hacking.html')
- stylesheet = os.path.join(ctx.top_dir, 'doc', 'geany.css')
- ret = ctx.exec_command('%s -stg --stylesheet=%s %s %s' % (
- cmd, stylesheet, hacking_file, hacking_html_file))
- if ret != 0:
- raise WafError('Generating HACKING documentation failed')
-
-
-def _find_program(ctx, cmd, **kw):
- def noop(*args):
- pass
-
- if ctx is None or not isinstance(ctx, ConfigurationContext):
- ctx = ConfigurationContext()
- ctx.to_log = noop
- ctx.msg = noop
- return ctx.find_program(cmd, **kw)
-
-
-def _find_rst2html(ctx):
- cmds = ['rst2html', 'rst2html2']
- for command in cmds:
- cmd = _find_program(ctx, command, mandatory=False, exts=',.py')
- if cmd:
- break
- if not cmd:
- raise WafError(
- 'rst2html.py could not be found. Please install the Python docutils package.')
- return cmd
-
-
-def _add_define_to_env(conf, key):
- value = conf.get_define(key)
- # strip quotes
- value = value.replace('"', '')
- conf.env[key] = value
-
-
-def _add_to_env_and_define(conf, key, value, quote=False):
- conf.define(key, value, quote)
- conf.env[key] = value
-
-
-def _define_from_opt(conf, define_name, opt_value, default_value, quote=1):
- value = default_value
- if opt_value:
- if isinstance(opt_value, bool):
- opt_value = 1
- value = opt_value
-
- if value is not None:
- _add_to_env_and_define(conf, define_name, value, quote)
- else:
- conf.undefine(define_name)
-
-
-def _get_git_rev(conf):
- if conf.options.no_scm:
- return
-
- if not os.path.isdir('.git'):
- return
-
- try:
- cmd = 'git rev-parse --short --revs-only HEAD'
- revision = conf.cmd_and_log(cmd).strip()
- except WafError:
- return None
- else:
- return revision
-
-
-def _load_intltool_if_available(conf):
- try:
- conf.load('intltool')
- if 'LINGUAS' in os.environ:
- conf.env['LINGUAS'] = os.environ['LINGUAS']
- except WafError:
- # on Windows, we don't hard depend on intltool, on all other platforms raise an error
- if not _target_is_win32(conf):
- raise
-
-
-def _target_is_win32(ctx):
- if 'is_win32' in ctx.env:
- # cached
- return ctx.env['is_win32']
- is_win32 = None
- if sys.platform == 'win32':
- is_win32 = True
- if is_win32 is None:
- if ctx.env and 'CC' in ctx.env:
- env_cc = ctx.env['CC']
- if not isinstance(env_cc, str):
- env_cc = ''.join(env_cc)
- is_win32 = (env_cc.find('mingw') != -1)
- if is_win32 is None:
- is_win32 = False
- # cache for future checks
- ctx.env['is_win32'] = is_win32
- return is_win32
-
-
-def _uc_first(string, ctx):
- if _target_is_win32(ctx):
- return string.title()
- return string
-
-
-# Copied from Geany-Plugins
-def _check_c99(conf):
- # FIXME: improve some checks?
- # TODO: look at Autoconf's C99 checks?
- fragment = '''
- // single-line comments
-
- #include <stdbool.h>
-
- struct s { int a, b; };
-
- // inlines
- static inline void fun_inline(struct s param) {}
-
- int main(void) {
- _Bool b = false;
-
- // variable declaration in for body
- for (int i = 0; i < 2; i++);
-
- // compound literals
- fun_inline((struct s) { 1, 2 });
-
- // mixed declarations and code
- int mixed = 0;
-
- // named initializers
- struct s name_inited = {
- .a = 42,
- .b = 64
- };
-
- return (b || mixed || ! name_inited.a);
- }
- '''
-
- exc = None
- # list of flags is stolen from Autoconf 2.69
- flags = ['', '-std=gnu99', '-std=c99', '-c99', '-AC99',
- '-D_STDC_C99=', '-qlanglvl=extc99']
- for flag in flags:
- try:
- desc = ['with flag %s' % flag, 'with no flags'][not flag]
- conf.check_cc(fragment=fragment, uselib_store='C99', cflags=flag,
- msg="Checking for C99 support (%s)" % desc)
- exc = None
- break
- except ConfigurationError as e:
- exc = e
- if exc:
- raise exc
- return True
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list