The version of MIO corresponds to commit 509a47dbc in universal-ctags
which contains just minimal changes mostly related to changing MIO from
a library into a single ctags source file:
- replaced the glib types with ordinary C types
- removed the "virtual" calls and replaced them with simple if/else
- made the implementation in a single file
- reformatted the library to more or less match universal-ctags style
- removed the MIO_FORCE_ANSI ifdef as it included some glib file and
we don't really need it
- added mio_flush() - of course makes sense just for the file backend
(calls fflush())
- made mio_free() return error code from fclose()
- changed mio_new_fp() to return NULL when the passed FILE is NULL
(simplifies logic at one place in ctags and makes sense IMO)
Move the tag manager implementation to src as it really is part of Geany
sources and start making the ctags directory structure similar to
the universal-ctags one.
In principle, the patch does
mv tagmanager/src src/tagmanager
mv tagmanager/ctags tagmanager/main
mv tagmanager ctags
plus corresponding Makefile.am and configure.ac updates.
If possible, register signals with the proper argument types (boxed or gobject).
This is required for successful introspection of the signals and important
for GI-based plugins.
As for the marshallers, if available use a predefined one from glib. Otherwise
use the generic marshaller available since 2.30 (in theory all signals could
use that one but it has a bit of overhead).
This builds on the gboxed conversions of earlier commits.
This also bumps the minimum glib requirement.
- g_cclosure_marshal_generic requires 2.30 (if NULL is passed as marshaller
to g_signal_new())
- G_TYPE_KEYFILE requires 2.32
Avoid deprecation warnings from GLib and GTK versions newer than what
we currently require by default.
To undo this and get all deprecation warnings back, undefine
`GLIB_VERSION_MIN_REQUIRED` and `GDK_DISABLE_DEPRECATION_WARNINGS` on
the command line (e.g. using `-U...` in `CFLAGS`).
The script reads the doxygen xml output and generates two headers (optionally
a single header) that contains all of the plugin API in gtk-doc format.
Two headers because it's preferrable to group Scintilla related stuff
into its own namespace. This is a lot easier if g-ir-scanner can
work with a separate header file. If we change minds later on the script is
prepared to generate only one header.
This automatically keeps the installer's idea of Gtk version with the one
used to compile geany in sync.
Traditionally we use the bundles from gtk.org to compile geany, and this
is also used for the installer. With msys2, we can use precompiled
msys2 binaries. These exist for GTK3 as well so we can actually provide a
GTK3 based installer. The installer naturually should reflect this.
Msys2's GTK2 is also newer.
Use the new script gtk-bundle-from-msys2.sh to extract the precompiled
GTK binaries from msys2 / pacman for packing the installer (can also be
used to make a zip for sharing).
mkdir gtk; cd gtk; ../scripts/gtk-bundle-from-msys.sh [-c] [-z] [-2 | -3]
waf is also adapted to process geany.nsi.in. This implies geany.nsi is now
under _build_, not in the root anymore.
libtool apparently builds every object twice by default when shared and
static objects need to be build differently. As we never use the
statically linked objects, avoid building them at all.
Checks if the compiler supports -fvisibility and the linker supports
-dynamic-list arguments and use them instead of hardcoding. The new
geany-lib.m4 also accomodates future use of Libtool versioning.
This will allow plugins to link against the core when accessing API
functions, now that the macro/struct/funcptr stuff is gone.
Also convert the helper libraries into Libtool helper libraries as
linking a shared library against static libraries is (apparently) not
portable.
Uses a Python script to generate a listing used by the linker to
determine which symbols to dynamically export. This provides finer
grained control of which symbols are dynamically exported, limiting
only to the ones needed for GtkBuilder signal connections.
The build system integration could probably be done a little cleaner.
This patch adds the gtk-mac-integration library and uses it to
adjust various paths in Geany to point it inside the app bundle
if Geany runs from inside the bundle.
It adds the utils_resource_dir() utility function to return
correct directories for various kinds of resources for all supported
operating systems. Using this function the patch adjusts all Geany
resource, plugin, icon, doc, and locale paths.
setup_paths() sets app->datadir to $prefix/win32. With mingw-via-autotools,
it installed data to $prefix/share/geany (like on Linux). With this change
data is installed to $prefix/data ($datarootdir is not changed).
This fixes geany startup after make install with autotools.
Linux:
pkgdatadir = ${datarootdir}/geany
GEANY_DATA_DIR = /path/to/prefix/share/geany
Win32:
pkgdatadir = ${prefix}/data
GEANY_DATA_DIR = /path/to/prefix/data
Strict dependency on fnmatch was removed in 52076d19e8fe7ab41ebc92928e.
We still have an optional dependency on it from CTags, but I don't
think we use this code, and anyways the checks we had for the optional
path to be taken were incorrect, so it was never actually used.
So, drop the dependency on libibrety for Windows builds, and fix the
remaining checks for an optional fnmatch so if it is found it can
actually be used.
* Add `--enable-html-docs` and `--enable-pdf-docs` arguments
(off by default)
* Add `RST2HTML`, `RST2LATEX` and `PDFLATEX` to override path to these
tools.
* Add HTML and PDF doc status messages to configure summary
* Add `m4/geany-doxygen.m4` file
* Support `DOXYGEN` environment variable setting which Doxygen to use
* Support `--enable-api-docs` to activate building Doxygen docs
(off by default)
Don't use wildcards to select files to install, nor manually perform
the installation when Automake could do it for us.
Using wildcards makes it hard to know what will really be installed,
and may results in installing files not part of the distribution.
Enable Automake option "subdir-object" to put all object files next to
their source file rather than in the directory containing the Makefile.
This is quite expected, and will be the future behavior of Automake in
all cases, so enabling it now avoids future unexpected change.
The test suite uses a LOG_COMPILER, which requires the parallel-tests
Automake test driver which is the default only since version 1.13, so
explicitly enable it so it is used by earlier versions too.
Moreover, the parallel-tests test diver was introduced by Automake
1.11, as was the option, so we need to depend on it too. It was
released 2009-05-17, which is 2 months after GTK 2.16, the minimum GTK
version we depend on (2009-03-13). If this is a problem, we could
also rework the Automake test layout to use the older and a little
deprecated serial-tests test driver that is the historical one.
Split ctags and tagmanager sources, as follows:
tagmanager/ctags: the parsers, more or less upstream CTags;
tagmanager/mio: local MIO library copy;
tagmanager/src: actual tagmanager sources.
GIO used to bring GModule, but it became a private dependency since
GIO 2.31. So, add explicit checks for GModule so we still build with
GLib/GIO >= 2.31.
Closes#3483388.
This reverts commits fbf77f586d65e319ecc1da11e98dcd932dd88b28 and
3816e40190c2f5331992f795f297669a399803fb.
While having the .rst extension helps GitHub formatting the file, the
renaming broke both Autotools and Waf build systems.