From 34088fbbb8535539e588520756aa418934b80941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrico=20Tr=C3=B6ger?= Date: Sun, 22 Nov 2015 23:53:12 +0100 Subject: [PATCH] Drop Waf build system support See #768. --- .gitignore | 7 - HACKING | 9 +- Makefile.am | 2 - doc/geany.txt | 67 +-- doc/making-a-release | 2 +- geany.spec.in | 4 - scripts/wafinit.sh | 72 ---- waf | Bin 91846 -> 0 bytes wscript | 981 ------------------------------------------- 9 files changed, 5 insertions(+), 1139 deletions(-) delete mode 100755 scripts/wafinit.sh delete mode 100755 waf delete mode 100644 wscript diff --git a/.gitignore b/.gitignore index 0d579ae7..d3e3996e 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/HACKING b/HACKING index eedeca0d..4efb0f5e 100644 --- a/HACKING +++ b/HACKING @@ -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. diff --git a/Makefile.am b/Makefile.am index 677251b7..d7609024 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,8 +15,6 @@ WIN32_BUILD_FILES = \ EXTRA_DIST = \ autogen.sh \ - wscript \ - waf \ geany.desktop.in \ geany.pc.in \ geany.spec \ diff --git a/doc/geany.txt b/doc/geany.txt index 693c671b..4922dd0d 100644 --- a/doc/geany.txt +++ b/doc/geany.txt @@ -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. diff --git a/doc/making-a-release b/doc/making-a-release index 3c7b9eef..c2b43ef4 100644 --- a/doc/making-a-release +++ b/doc/making-a-release @@ -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. diff --git a/geany.spec.in b/geany.spec.in index 45f449a1..0e33eec2 100644 --- a/geany.spec.in +++ b/geany.spec.in @@ -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 diff --git a/scripts/wafinit.sh b/scripts/wafinit.sh deleted file mode 100755 index 27d3bd0f..00000000 --- a/scripts/wafinit.sh +++ /dev/null @@ -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 diff --git a/waf b/waf deleted file mode 100755 index 89e1ca8b7d35fec345627df5caedfe4cce6346e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91846 zcmcG#by!sI)&>kHC0s}(7lyvvE z2R*-Y-t)fS_5Jm60ejCAEADkaYpuOSFb$i#s|%YM!hsF$-~n>-cC&VLcmM{$9n2jq z5Dr#?Aee>Izaewen^Lak8`XuyC?-a6WiIOH2De9d3beb#pffF^Auc0D4Sayg`AWwvwHOSHB?&|37_P`!c zX^Aj5MG9aBnYzG1PH-1{gqs`O0_5c4=z*{RZrrR*-GEpwvFmkoe- z7VZE>|38?4i~t}O>5YY>xw}2w!R-!Ur0r|~_>RD&3&`Ho4eo+4wR8P9(09>68uXuW z1)Sny1$Y1lIhfkRk!T=Sn7RYBK??CkA_g*pBSQ~_$`Rm^g`*2V17H^L(caMwi0PfL zZmxG00ZKi9m6pKVACO%gE!{kkQADZ-NC9$nf}0~*0qjE{x#EK4gTo(YxVi#C2TanG zgK2;?RAe-D#MPw%#)4GURkUGJ(o!G^J&>lHG)P=aQ%*%4L@TZV%+i9ym8F0mJ&?4n zs=Bm>21rHy0Zd6%5e94kB&drkYr>>8m_aaQNkuIwn6fN0NJ2{!q^zO|QiLhNG=XKB zD$I9+|89Hm?`!X&j6#nnNo zTI#AQ8i0-J(hsCy8j_0QFePazRzN$T5hSfGt*i;skP}x_{7+9LqybaJB^0Iq$OC+l zf~iYOYBE27DgV7gnh#(ASfR)a(omI_gduOFb)^AM#nttg0k1)lD#{wtYFfY|U=k!H zt|Trit?_{2|HE+rT}drT5>hBPyvK~wxrF(3i}1egYlkkHbA-9ZCW)|6IP*HYDlsVFl(kW>thBPEG}0Osq!b;PhBPA(5g1^ZECA`9S{-pfC%^+hFOpM$Rex^(gL?qJ zK)gUO8IZV?HXs8q`EKz8Ai^53zia@8G_)k;{=&_AmpvaK?42B4fb;^SMOSav2M++x zH2@eyXgOHV|tE+!#3iig0&uGBvj~2JE#!xG(@eNO6`(ubkix49MlC zE><1}?1s$rE@t$A1an}H-rUi}#ofsbs5Iu*KpFxuKrI*nlRd2wc5n~}AOYJB;Q$9# zTC%#pO)Zcg0GqL~0q>D%4*6LSgtVUC#oYk}C}*)l7LGsJ%oJImEP&JslnZ2uK^7`t zi5=ojKT^gY;UWOI^k5MY(dQ2INUO22-MrlXx6Xel1t$OKGzY){+y~YJqW;rB5X~Qv z!XhGfBJV6juI9X3Z3ehv`{4f+#|13-qa65cz#+)OVF)cxyaQSVkQcIs8PIDwI@-C?GlS^iUT!X?uJnd?XaQ8VH?;+t4;NPk zBzKWQfi-`jW(Ij73G-hn0J+Gp(Mp;+AOrb_J;>+)F);&_0fh@7or4mxA3%-*>P_z| zkEt2J3_t9y^e<%K03|RXYt$#`T;}?)C{s{Pgi{ihw{dXMy zLahV9X#NLoGoU@VJFjpHW{|lx+}su@{XkP^c4w@syVG4J1R5?U7q~0XuFxU@{_Ea9 zbO26)8;}D4BAB}Y$?4zVA))vW`2N}O|H7ZUzyXctAMX4^8!v#<+ycOX0QmghxlZ^$ zbKPAoLMBciJ_i4re~gBpr+29mxdbrn@8PgScsY4<0-yifumYEV$a6;~7q~q@J_dj< zfNTGd>n;d?PZF>mQ0eY~K=!hKNpEjv?urcOAG!;I{^vCXom7U$p>Obysyv&0LY!zsKi)AJ>1Y0uG6VF>p*7kje6{2^F~m_-}%L zfNf?9^qc>#X8=yfRSf^F2|0L|ufP^?57)bA6$ntcfaVFP03vq|0b78FB7_UjV*=HZ zf&R}lG6Nwq9g-NHg2)F5WKHx0m;wfJ#h(&zH;L2$2(WNPwz3RJYWw%I+Vp0Uh*ESC+eP zWc6eKmNJ9>_7=>bfAtiAdgM7l+~wK7%>y$%^2w0?&xOs-(cIJy`N7f2?N8$U$9@FB zaC$Z%B5d@)-CxE3heQ9u2Px^!K)|@W1A_#B8FW{rfm-7RSYnT?Ve|kgxj55-2R0Pg=o#XmLxS^w^bCY=A3Z(7)OB0NFL%aTDR- z3U_g1UZMb1(p~C>CMI4*a@gxZVbTb{*T!FqYK#^JOE4RTMKZA>(OcGVVMz9pl!|E z-rm;nS_A@@e|@0@foLs;6N=GMVCXa`C~~I5&rfzv_Lflo*Vpn}gwky5jM_I7!Q6Gs z(d}A8IOzSoQnimII`dh~DP;1*T7}lbe7+98p@Y-&RPpjZS(W>m0sj z%rr2L%3NB=(GKq7o-}T52U*|SnXlVg^l!af(ZqbSwX)z^ZEUVxALL;_ZZmi4`T_;j zj`-fU&-m1al=o3krcfM(oXS39>NGo#Op$31DKinH_JE-_#|=g&+B4fI+!)|dd1BO! z{O|RjoKR_0L!YHqkgC5^e*uQRLy^y~_^f8l4ThXfcZDZ>yI8QY`uM?}t6})Z2OF!V zhJkU06UU~{XP2UJYNxKT;jSAkWLTJ6``9Am@zgs|PE+Jzc>HnHh^T2gpDhq_;!wJ_)7wONCfdfK`&eq2YjIhmb1zA|a( z?49E$GP213<2%!I#?0x{#^6^RHD=Y1lXn(Qh8%sh4nO{EXldWsgD%9h9?pmS@ZHrx zY$aC{7%Nk@basEm&fJ#mU+^t&b=}!H`8so{e!TPbRocnHyJ>Y;Ew$05!hFzBDDOnE zqqqADybTf8Y@wYCyoK@kH{mEK=-&ajr9je(8R#@DB^XmHTTNef_3LaF99-t>o=DFN z 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%0D>9_e*8b>o%O^mfAm!Crqai!?@zxjW^ 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 A#{d8T diff --git a/wscript b/wscript deleted file mode 100644 index d7cabeb7..00000000 --- a/wscript +++ /dev/null @@ -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 -# Copyright 2008-2012 Nick Treleaven -# -# 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 - - -@feature('linguas') -@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 - - 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