[geany/geany] 5e22df: Prepare for meson build system

Thomas Martitz git-noreply at geany.org
Thu Apr 7 20:32:28 UTC 2022


Branch:      refs/heads/master
Author:      Thomas Martitz <thomas.martitz at mailbox.org>
Committer:   Thomas Martitz <thomas.martitz at mailbox.org>
Date:        Mon, 14 Mar 2022 21:08:47 UTC
Commit:      5e22dfae22bc09084ae556b367159e7eaa713591
             https://github.com/geany/geany/commit/5e22dfae22bc09084ae556b367159e7eaa713591

Log Message:
-----------
Prepare for meson build system

Autotools-based builds will be supported for some time. This patch makes
some modifications to the Autotools build system necessary to to co-exist
with meson.

- LOCALEDIR and DATADIR won't be defined, replace with GEANY_* where necessary
- VERSION won't be defined, use PACKAGE_VERSION and PACKAGE_STRING instead
- Doxyfile cannot be generated by configure, which wouldn't run in a meson
  build. Generate both Doxyfile and Doxyfile-gi manually using sed
- actual shell script to generate signallist.i (inline shell not a thing in meson)
- path of signallist.i will change, exclude callbacks.c from doxygen
  to make it happy
- geany icon for 24x24 size such that one exists for all sizes
- install license file for Lexilla
- change how tests are run a bit so that runner.sh will also work for meson
- check for dirent.h, required by ctags


Modified Paths:
--------------
    Makefile.am
    configure.ac
    doc/Doxyfile.in
    doc/Makefile.am
    icons/24x24/Makefile.am
    icons/24x24/geany.png
    plugins/Makefile.am
    plugins/classbuilder.c
    plugins/demoplugin.c
    plugins/export.c
    plugins/filebrowser.c
    plugins/htmlchars.c
    plugins/saveactions.c
    plugins/splitwindow.c
    scripts/gen-signallist.sh
    src/Makefile.am
    src/libmain.c
    src/templates.c
    src/utils.c
    tests/ctags/Makefile.am
    tests/ctags/runner.sh

Modified: Makefile.am
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -15,6 +15,7 @@ WIN32_BUILD_FILES = \
 EXTRA_DIST = \
 	autogen.sh \
 	scripts/gen-api-gtkdoc.py \
+	scripts/gen-signallist.sh \
 	geany.desktop.in \
 	geany.pc.in \
 	ChangeLog.pre-1-22 \


Modified: configure.ac
3 lines changed, 1 insertions(+), 2 deletions(-)
===================================================================
@@ -48,7 +48,7 @@ fi
 AC_CHECK_HEADERS([fcntl.h glob.h stdlib.h sys/time.h errno.h limits.h])
 
 # Checks for dependencies needed by ctags
-AC_CHECK_HEADERS([fnmatch.h direct.h io.h sys/dir.h])
+AC_CHECK_HEADERS([dirent.h fnmatch.h direct.h io.h sys/dir.h])
 AC_DEFINE([HAVE_STDBOOL_H], [1], [whether or not to use <stdbool.h>.])
 AC_CHECK_FUNC([regcomp],
 		[have_regcomp=yes],
@@ -184,7 +184,6 @@ AC_CONFIG_FILES([
 		doc/geany.1
 		geany.pc
 		geany.nsi
-		doc/Doxyfile
 		tests/Makefile
 		tests/ctags/Makefile
 ])


Modified: doc/Doxyfile.in
15 lines changed, 7 insertions(+), 8 deletions(-)
===================================================================
@@ -248,7 +248,7 @@ ALIASES                = "signal=- @ref  " \
                          "signaldesc=" \
                          "signals=@b Signals:  " \
                          "endsignals=  " \
-                         "gironly=@internal"
+                         "gironly=@GIRONLY@"
 
 # Apparently Doxygen doesn't seem to like \<type>only without a previous command, so create a no-op
 ALIASES               += "noop=\if FALSE \endif"
@@ -567,15 +567,15 @@ INLINE_INFO            = NO
 # name. If set to NO the members will appear in declaration order.
 # The default value is: YES.
 
-SORT_MEMBER_DOCS       = YES
+SORT_MEMBER_DOCS       = @SORT@
 
 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
 # descriptions of file, namespace and class members alphabetically by member
 # name. If set to NO the members will appear in declaration order. Note that
 # this will also influence the order of the classes in the class list.
 # The default value is: NO.
 
-SORT_BRIEF_DOCS        = YES
+SORT_BRIEF_DOCS        = @SORT@
 
 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
 # (brief and detailed) documentation of class members so that constructors and
@@ -848,8 +848,7 @@ RECURSIVE              = NO
 # Note that relative paths are relative to the directory from which doxygen is
 # run.
 
-EXCLUDE                = @top_srcdir@/doc/geany-gtkdoc.h \
-                         @top_srcdir@/doc/geany-sciwrappers-gtkdoc.h
+EXCLUDE                = @top_srcdir@/src/callbacks.c
 
 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
 # directories that are symbolic links (a Unix file system feature) are excluded
@@ -1090,7 +1089,7 @@ IGNORE_PREFIX          =
 # If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
 # The default value is: YES.
 
-GENERATE_HTML          = YES
+GENERATE_HTML          = @HTML@
 
 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -1881,7 +1880,7 @@ MAN_LINKS              = NO
 # captures the structure of the code including all documentation.
 # The default value is: NO.
 
-GENERATE_XML           = NO
+GENERATE_XML           = @XML@
 
 # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -2016,7 +2015,7 @@ SEARCH_INCLUDES        = NO
 # preprocessor.
 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
 
-INCLUDE_PATH           = @top_builddir@/src/
+INCLUDE_PATH           =
 
 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
 # patterns (like *.h and *.hpp) to filter out the header-files in the


Modified: doc/Makefile.am
42 lines changed, 29 insertions(+), 13 deletions(-)
===================================================================
@@ -82,17 +82,31 @@ clean-pdf-local:
 
 endif
 
+AT=@
+
 # API Documentation
 if WITH_DOXYGEN
 
+# $(AT) instead of @ so that configure doesn't mess up the rules already
+Doxyfile: Doxyfile.in
+	$(AM_V_GEN)$(SED) \
+		-e 's,$(AT)top_srcdir$(AT),$(top_srcdir),' \
+		-e 's,$(AT)top_builddir$(AT),$(top_builddir),' \
+		-e 's,$(AT)VERSION$(AT),$(VERSION),' \
+		-e 's,$(AT)GIRONLY$(AT), at internal,' \
+		-e 's,$(AT)HTML$(AT),YES,' \
+		-e 's,$(AT)XML$(AT),NO,' \
+		-e 's,$(AT)SORT$(AT),YES,' \
+		$< > $@ || ( $(RM) -f $@ ; exit 1 )
+
 doxygen_sources = \
 	$(srcdir)/plugins.dox \
 	$(srcdir)/pluginsignals.c \
 	$(srcdir)/pluginsymbols.c \
 	$(srcdir)/stash-example.c \
 	$(srcdir)/stash-gui-example.c
 
-EXTRA_DIST += $(doxygen_sources)
+EXTRA_DIST += Doxyfile.in $(doxygen_sources)
 
 doxygen_dependencies = \
 	$(doxygen_sources) \
@@ -114,18 +128,16 @@ clean-api-docs-local:
 
 if ENABLE_GTKDOC_HEADER
 
-# set WARN_IF_UNDOCUMENTED because apparently doxygens warns for undocumented stuff
-# in headers (even though it's correctly documented in the corresponding .c file) only
-# for xml output
-Doxyfile-gi: Doxyfile
+Doxyfile-gi: Doxyfile.in
 	$(AM_V_GEN)$(SED) \
-		-e 's,gironly=@internal,gironly=,' \
-		-e 's,^\(GENERATE_HTML.*\)YES,\1NO,' \
-		-e 's,^\(GENERATE_XML.*\)NO,\1YES,' \
-		-e 's,^\(WARN_IF_UNDOCUMENTED.*\)YES,\1NO,' \
-		-e 's,^\(SORT_MEMBER_DOCS.*\)YES,\1NO,' \
-		-e 's,^\(SORT_BRIEF_DOCS.*\)YES,\1NO,' \
-		$< > $@ || { $(RM) $@ && exit 1; }
+		-e 's,$(AT)top_srcdir$(AT),$(top_srcdir),' \
+		-e 's,$(AT)top_builddir$(AT),$(top_builddir),' \
+		-e 's,$(AT)VERSION$(AT),$(VERSION),' \
+		-e 's,$(AT)GIRONLY$(AT),,' \
+		-e 's,$(AT)HTML$(AT),NO,' \
+		-e 's,$(AT)XML$(AT),YES,' \
+		-e 's,$(AT)SORT$(AT),NO,' \
+		$< > $@ || ( $(RM) -f $@ ; exit 1 )
 
 # we depend on Doxyfile.stamp not have this run in parallel with it to avoid
 # concurrent Doxygen runs, which might overwrite each other's files
@@ -145,7 +157,9 @@ ALL_LOCAL_TARGETS += geany-gtkdoc.h geany-sciwrappers-gtkdoc.h
 CLEAN_LOCAL_TARGETS += clean-gtkdoc-header-local
 
 clean-gtkdoc-header-local:
-	-rm -rf xml/ Doxyfile-gi Doxyfile-gi.stamp geany-gtkdoc.h geany-sciwrappers-gtkdoc.h
+	rm -rf xml/ \
+		Doxyfile Doxyfile.stamp Doxyfile-gi Doxyfile-gi.stamp \
+		geany-gtkdoc.h geany-sciwrappers-gtkdoc.h
 
 endif
 
@@ -158,6 +172,7 @@ uninstall-local:
 	rm -f $(DOCDIR)/html/index.html
 	rm -f $(DOCDIR)/manual.txt
 	rm -f $(DOCDIR)/ScintillaLicense.txt
+	rm -f $(DOCDIR)/LexillaLicense.txt
 
 # manually install some files under another name
 install-data-local:
@@ -171,3 +186,4 @@ endif
 	$(mkinstalldirs) $(DOCDIR)
 	$(INSTALL_DATA) $(srcdir)/geany.txt $(DOCDIR)/manual.txt
 	$(INSTALL_DATA) $(top_srcdir)/scintilla/License.txt $(DOCDIR)/ScintillaLicense.txt
+	$(INSTALL_DATA) $(top_srcdir)/scintilla/lexilla/License.txt $(DOCDIR)/LexillaLicense.txt


Modified: icons/24x24/Makefile.am
7 lines changed, 6 insertions(+), 1 deletions(-)
===================================================================
@@ -1,4 +1,9 @@
-icons_actionsdir = $(datadir)/icons/hicolor/24x24/actions
+iconsdir = $(datadir)/icons/hicolor/24x24
+icons_appsdir = $(iconsdir)/apps
+icons_actionsdir = $(iconsdir)/actions
+
+dist_icons_apps_DATA =		\
+	geany.png
 
 dist_icons_actions_DATA =	\
 	geany-build.png			\


Modified: icons/24x24/geany.png
0 lines changed, 0 insertions(+), 0 deletions(-)
===================================================================
No diff available, check online


Modified: plugins/Makefile.am
7 lines changed, 3 insertions(+), 4 deletions(-)
===================================================================
@@ -43,7 +43,7 @@ saveactions_la_SOURCES   = saveactions.c
 filebrowser_la_SOURCES   = filebrowser.c
 splitwindow_la_SOURCES   = splitwindow.c
 
-demoplugin_la_CFLAGS    = -DG_LOG_DOMAIN=\""Demoplugin"\" -DLOCALEDIR=\""$(LOCALEDIR)"\"
+demoplugin_la_CFLAGS    = -DG_LOG_DOMAIN=\""Demoplugin"\"
 demoproxy_la_CFLAGS     = -DG_LOG_DOMAIN=\""Demoproxy"\"
 classbuilder_la_CFLAGS  = -DG_LOG_DOMAIN=\""Classbuilder"\"
 htmlchars_la_CFLAGS     = -DG_LOG_DOMAIN=\""HTMLChars"\"
@@ -64,10 +64,9 @@ splitwindow_la_LIBADD   = $(top_builddir)/src/libgeany.la $(GTK_LIBS)
 endif # PLUGINS
 
 if MINGW
-# FIXME: why is this define different than the non-MINGW one?
-AM_CPPFLAGS = -DGEANY_DATADIR=\"data\"
+AM_CPPFLAGS = -DGEANY_DATADIR=\"data\" -DGEANY_LOCALEDIR=\"\"
 else
-AM_CPPFLAGS = -DDATADIR=\"$(datadir)\"
+AM_CPPFLAGS = -DGEANY_DATADIR=\"$(datadir)\" -DGEANY_LOCALEDIR=\""$(localedir)"\"
 endif
 
 AM_CPPFLAGS += \


Modified: plugins/classbuilder.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -31,7 +31,7 @@ GeanyData		*geany_data;
 
 PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
 
-PLUGIN_SET_INFO(_("Class Builder"), _("Creates source files for new class types."), VERSION,
+PLUGIN_SET_INFO(_("Class Builder"), _("Creates source files for new class types."), PACKAGE_VERSION,
 	"Alexander Rodin, Ondrej Donek, the Geany developer team")
 
 


Modified: plugins/demoplugin.c
5 lines changed, 4 insertions(+), 1 deletions(-)
===================================================================
@@ -30,6 +30,9 @@
  * - it will be loaded at next startup.
  */
 
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
 
 #include "geanyplugin.h"	/* plugin API, always comes first */
 #include "Scintilla.h"	/* for the SCNotification struct */
@@ -216,7 +219,7 @@ static void demo_cleanup(GeanyPlugin *plugin, gpointer data)
 void geany_load_module(GeanyPlugin *plugin)
 {
 	/* main_locale_init() must be called for your package before any localization can be done */
-	main_locale_init(LOCALEDIR, GETTEXT_PACKAGE);
+	main_locale_init(GEANY_LOCALEDIR, GETTEXT_PACKAGE);
 	plugin->info->name = _("Demo");
 	plugin->info->description = _("Example plugin.");
 	plugin->info->version = "0.4";


Modified: plugins/export.c
8 lines changed, 4 insertions(+), 4 deletions(-)
===================================================================
@@ -33,8 +33,8 @@
 GeanyData		*geany_data;
 
 PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
-PLUGIN_SET_INFO(_("Export"), _("Exports the current file into different formats."), VERSION,
-	_("The Geany developer team"))
+PLUGIN_SET_INFO(_("Export"), _("Exports the current file into different formats."),
+	PACKAGE_VERSION, _("The Geany developer team"))
 
 
 static GtkWidget *main_menu_item = NULL;
@@ -50,7 +50,7 @@ static GtkWidget *main_menu_item = NULL;
 <head>\n\
 	<title>{export_filename}</title>\n\
 	<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />\n\
-	<meta name=\"generator\" content=\"Geany " VERSION "\" />\n\
+	<meta name=\"generator\" content=\"Geany " PACKAGE_VERSION "\" />\n\
 	<meta name=\"date\" content=\"{export_date}\" />\n\
 	<style type=\"text/css\">\n\
 {export_styles}\n\
@@ -65,7 +65,7 @@ static GtkWidget *main_menu_item = NULL;
 </html>\n"
 
 #define TEMPLATE_LATEX "\
-% {export_filename} (LaTeX code generated by Geany " VERSION " on {export_date})\n\
+% {export_filename} (LaTeX code generated by Geany " PACKAGE_VERSION " on {export_date})\n\
 \\documentclass[a4paper]{article}\n\
 \\usepackage[a4paper,margin=2cm]{geometry}\n\
 \\usepackage[utf8]{inputenc}\n\


Modified: plugins/filebrowser.c
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -46,8 +46,8 @@ GeanyData *geany_data;
 
 PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
 
-PLUGIN_SET_INFO(_("File Browser"), _("Adds a file browser tab to the sidebar."), VERSION,
-	_("The Geany developer team"))
+PLUGIN_SET_INFO(_("File Browser"), _("Adds a file browser tab to the sidebar."),
+	PACKAGE_VERSION, _("The Geany developer team"))
 
 
 /* Keybinding(s) */


Modified: plugins/htmlchars.c
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -35,8 +35,8 @@ GeanyData		*geany_data;
 
 PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
 
-PLUGIN_SET_INFO(_("HTML Characters"), _("Inserts HTML character entities like '&'."), VERSION,
-	_("The Geany developer team"))
+PLUGIN_SET_INFO(_("HTML Characters"), _("Inserts HTML character entities like '&'."),
+	PACKAGE_VERSION, _("The Geany developer team"))
 
 
 /* Keybinding(s) */


Modified: plugins/saveactions.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -40,7 +40,7 @@ GeanyData		*geany_data;
 PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
 
 PLUGIN_SET_INFO(_("Save Actions"), _("This plugin provides different actions related to saving of files."),
-	VERSION, _("The Geany developer team"))
+	PACKAGE_VERSION, _("The Geany developer team"))
 
 
 enum


Modified: plugins/splitwindow.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -31,7 +31,7 @@
 
 PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
 PLUGIN_SET_INFO(_("Split Window"), _("Splits the editor view into two windows."),
-	VERSION, _("The Geany developer team"))
+	PACKAGE_VERSION, _("The Geany developer team"))
 
 
 GeanyData		*geany_data;


Modified: scripts/gen-signallist.sh
8 lines changed, 8 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+HEADER="/* This file is auto-generated, do not edit. */"
+TEXT=$(sed -n 's/^.*handler="\([^"]\{1,\}\)".*$/ITEM(\1)/p' "$1" | sort | uniq)
+
+printf "%s\n%s\n" "$HEADER" "$TEXT" > "$2"


Modified: src/Makefile.am
6 lines changed, 1 insertions(+), 5 deletions(-)
===================================================================
@@ -179,11 +179,7 @@ callbacks.c: signallist.i
 glade_file=$(top_srcdir)/data/geany.glade
 
 signallist.i: $(glade_file) Makefile
-	$(AM_V_GEN)( \
-		echo '/* This file is auto-generated, do not edit. */' && \
-		$(SED) -n 's/^.*handler="\([^"]\{1,\}\)".*$$/ITEM(\1)/p' "$(glade_file)" \
-			| $(SORT) | $(UNIQ) \
-	) > $@ || { $(RM) $@ && exit 1; }
+	$(AM_V_GEN)$(top_srcdir)/scripts/gen-signallist.sh $(glade_file) $@
 
 CLEANFILES += signallist.i
 


Modified: src/libmain.c
4 lines changed, 2 insertions(+), 2 deletions(-)
===================================================================
@@ -304,10 +304,10 @@ static void main_init(void)
 
 const gchar *main_get_version_string(void)
 {
-	static gchar full[] = VERSION " (git >= " REVISION ")";
+	static gchar full[] = PACKAGE_VERSION " (git >= " REVISION ")";
 
 	if (utils_str_equal(REVISION, "-1"))
-		return VERSION;
+		return PACKAGE_VERSION;
 	else
 		return full;
 }


Modified: src/templates.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -533,7 +533,7 @@ static void replace_static_values(GString *text)
 	utils_string_replace_all(text, "{mail}", template_prefs.mail);
 	utils_string_replace_all(text, "{company}", template_prefs.company);
 	utils_string_replace_all(text, "{untitled}", GEANY_STRING_UNTITLED);
-	utils_string_replace_all(text, "{geanyversion}", "Geany " VERSION);
+	utils_string_replace_all(text, "{geanyversion}", PACKAGE_STRING);
 }
 
 


Modified: src/utils.c
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -1930,7 +1930,7 @@ gchar *utils_get_help_url(const gchar *suffix)
 	if (! g_file_test(uri + skip, G_FILE_TEST_IS_REGULAR))
 	{	/* fall back to online documentation if it is not found on the hard disk */
 		g_free(uri);
-		uri = g_strconcat(GEANY_HOMEPAGE, "manual/", VERSION, "/index.html", NULL);
+		uri = g_strconcat(GEANY_HOMEPAGE, "manual/", PACKAGE_VERSION, "/index.html", NULL);
 	}
 
 	if (suffix != NULL)


Modified: tests/ctags/Makefile.am
6 lines changed, 4 insertions(+), 2 deletions(-)
===================================================================
@@ -343,6 +343,8 @@ test_results = $(test_sources:=.tags)
 
 TEST_EXTENSIONS = .tags
 TAGS_LOG_COMPILER = $(srcdir)/runner.sh
+AM_TAGS_LOG_FLAGS = $(top_builddir)/src/geany$(EXEEXT)
+AM_TESTS_ENVIRONMENT = top_srcdir=$(top_srcdir) top_builddir=$(top_builddir)
 
 TESTS = $(test_results)
 EXTRA_DIST = $(test_sources) $(test_results)
@@ -353,6 +355,6 @@ check_processing_order_sources = \
 EXTRA_DIST += $(check_processing_order_sources)
 .PHONY: check-processing-order
 check-processing-order: $(check_processing_order_sources)
-	srcdir="$(srcdir)" top_builddir="$(top_builddir)" \
-	$(srcdir)/runner.sh --result $(check_processing_order_sources:%=$(srcdir)/%)
+	$(AM_TESTS_ENVIRONMENT) \
+	$(srcdir)/runner.sh $(top_builddir)/src/geany$(EXEEXT) --result $(check_processing_order_sources:%=$(srcdir)/%)
 check-local: check-processing-order


Modified: tests/ctags/runner.sh
10 lines changed, 5 insertions(+), 5 deletions(-)
===================================================================
@@ -1,10 +1,9 @@
-#!/bin/sh
+#!/bin/bash
 
 # error out on undefined variable expansion, useful for debugging
 set -u
 
-# FIXME: get this from automake so we have $(EXEEXT)
-GEANY="${top_builddir:-../..}/src/geany"
+GEANY="$1"
 TMPDIR=$(mktemp -d) || exit 99
 CONFDIR="$TMPDIR/config/"
 
@@ -14,9 +13,10 @@ trap 'rm -rf "$TMPDIR"' EXIT
 # related configuration files
 mkdir -p "$CONFDIR" || exit 99
 mkdir -p "$CONFDIR/filedefs/" || exit 99
-cp "${srcdir:-.}"/../../data/filetype_extensions.conf "$CONFDIR" || exit 99
-cp "${srcdir:-.}"/../../data/filedefs/filetypes.* "$CONFDIR/filedefs/" || exit 99
+cp "${top_srcdir:-../..}"/data/filetype_extensions.conf "$CONFDIR" || exit 99
+cp "${top_srcdir:-../..}"/data/filedefs/filetypes.* "$CONFDIR/filedefs/" || exit 99
 
+shift
 if [ "$1" = "--result" ]; then
   # --result $result $source...
   [ $# -gt 2 ] || exit 99



--------------
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