Commit Graph

290 Commits

Author SHA1 Message Date
f037e7ef45 Fix typos found by codespell
- Typos were found by codespell v1.16.0
2019-11-06 09:55:30 -05:00
f745e8fc4d Use functools cache instead of open-coded implementation
Functional behaviour is not identical, because the cache not set
when an exception is thrown. I hope this doesn't matter in practice.
2019-09-25 14:52:07 +02:00
11c1f8644c Drop unused variable 2019-09-25 14:52:07 +02:00
3a6920ebdc Add helper to print warnings once
The helper is general, although in this patch it is only used for
warnings. No functional change intended.
2019-09-25 14:52:07 +02:00
75daed27bc mesonlib.split_args/quote_arg/join_args 2019-09-05 23:42:47 +03:00
edec2ee0ee gnome: Handle overriden g-ir-scanner
When g-ir-scanner is overriden, we can't call it at configure time
but we know what options are avalaible (as it started using meson
after checked options where added) so do not try to call it to retrieve
the version as it will fail.

Also see https://github.com/mesonbuild/meson/issues/3442
2019-08-17 12:07:20 +03:00
172a355b93 Revert "gnome: Use find_program() to get glib-compile-resources"
This reverts commit 0ab3d97566.
2019-08-13 09:34:25 -04:00
0ab3d97566 gnome: Use find_program() to get glib-compile-resources
GLib does not currently use override_find_program() for this tool
because it is compiled and would not work in cross build. But this
prepares Meson for when/if GLib will rewrite it in Python.

See https://gitlab.gnome.org/GNOME/glib/issues/1859.
2019-08-12 04:26:27 +00:00
44ac680e55 gtkdoc: Use find_program() to get gtkdoc tools
This will allow using gtk-doc as a subproject instead of having to
install it on the system. It also has the side effect of failing at
configuration time with a proper message if gtkdoc is not installed,
instead of failing at build time with a python backtrace.
2019-08-04 21:40:55 +03:00
c8a6a44850 compilers: pull sanitzier args into compiler classes
This simplifies and cleans things up.
2019-07-23 09:58:24 +00:00
f5da881126 gtkdoc: Add 'check' kwarg (#5591)
* gtkdoc: Add 'check' kwarg

This runs gtkdoc-check in meson tests.

Also reorganize the gtkdoc test because we cannot reliably build
multiple doc into the same directory. Not all files generated by gtk-doc
are prefixed with the target name.
2019-07-16 22:50:33 +03:00
ecbfc08dca gnome.py: correctly pick the compiler for gtk-doc builds 2019-06-27 09:17:49 -07:00
07777e15d4 Purge is_cross and friends without changing user interfaces
In most cases instead pass `for_machine`, the name of the relevant
machines (what compilers target, what targets run on, etc). This allows
us to use the cross code path in the native case, deduplicating the
code.

As one can see, environment got bigger as more information is kept
structured there, while ninjabackend got a smaller. Overall a few amount
of lines were added, but the hope is what's added is a lot simpler than
what's removed.
2019-06-09 13:13:25 -04:00
20eb948b97 gnome: make sure the target build directory is passed first for linking
determine_rpath_dirs() can return paths to external dependencies not
in the build dir and passing them first as a link path leads to
g-ir-scanner for example linking against the already installed library
instead of the just built one.

This was reported in g-i: https://gitlab.gnome.org/GNOME/gobject-introspection/issues/272
and comes up quite often when a library adds some new symbols which aren't present in the
system library, which then makes linking fail.

The first place where the order is changed is _scan_gir_targets(), which looks like an unintentional
change in the refactoring in 8377ea45aa

The second place in _get_link_args() has always been that way and only the rpath order is changed,
but it looks to me as if the same rules should apply here too.
2019-05-28 20:25:37 +03:00
60f34a1f51 gnome: use g_intern_static_string() for enum/flags type names
We are emitting a static string, so use that shortcut function to
intern it, which will save one allocation.
2019-05-21 21:53:15 +03:00
38b347ecd0 Do not filter out repeated cflags
Using a set breaks certain flags like `--param'.
2019-05-15 14:47:49 +03:00
5dc613d618 Revert "gnome.compile_resources: Add ld binary method"
This reverts commit 59791fc569, reversing
changes made to e26b5a119e.
2019-03-28 23:23:01 +02:00
1a986c90eb Fix #5046 2019-03-17 19:26:11 +02:00
902aaf2ce6 Merge pull request #4626 from Ericson2314/consolidate-properties
Go through coreutils.compiler_options.{build.host.target}
2019-02-04 23:06:46 +01:00
4775dd48a6 Fix required version 2019-02-03 13:14:36 +01:00
0601895032 More robust name generation 2019-02-03 11:49:40 +01:00
b0832c8747 Move some additional functionality into the new function 2019-02-02 23:02:33 +01:00
19f81d3e33 Never access environment.properties downstream
Instead use coredata.compiler_options.<machine>. This brings the cross
and native code paths closer together, since both now use that.

Command line options are interpreted just as before, for backwards
compatibility. This does introduce some funny conditionals. In the
future, I'd like to change the interpretation of command line options so

 - The logic is cross-agnostic, i.e. there are no conditions affected by
   `is_cross_build()`.

 - Compiler args for both the build and host machines can always be
   controlled by the command line.

 - Compiler args for both machines can always be controlled separately.
2019-02-02 13:59:14 -05:00
34191ec018 Use triple quote string for linkerscript 2019-02-02 19:46:32 +01:00
83d78d7b6e Move target generation in new function 2019-02-02 19:45:48 +01:00
b6a6076596 Disable for cross builds 2019-02-02 19:07:06 +01:00
6026a35446 Handle minus sign correctly 2019-02-01 22:02:20 +01:00
1f14a58d3b Add second dependency file for c target 2019-02-01 22:02:20 +01:00
a6f09b9754 Remove dependency file from c target 2019-02-01 22:02:20 +01:00
27edd112e2 Fix code formatting 2019-02-01 22:02:20 +01:00
b4f04a67de gnome.compile_resources: Add ld binary method
Instead of generating a c file that gets compiled,
directly create object file with ld.

See https://gitlab.gnome.org/GNOME/glib/issues/1489
2019-02-01 22:02:19 +01:00
52936e4a46 Add tsan and ubsan to g-ir-scanner workaround.
Both of these need to link to their respective libraries to build.
2019-01-31 22:11:18 +02:00
2b22576fb6 Remove cross_info; cross file is parsed up front and discarded 2019-01-02 16:22:47 -05:00
b4347ca4a9 gi: Handle new --source-top-dirs argument
This allows coherent relative paths in the gir "source-position"
2018-12-16 21:03:58 +02:00
cecbbfab0e gnome.gtkdoc: Fix missing permitted c_args argument
Although `gtkdoc` function has support for `c_args` argument[0], it
produces warning messages due to missing string in the permitted
arguments list.

[0] https://github.com/mesonbuild/meson/pull/4192
2018-11-19 21:05:28 +02:00
46d3ec2e05 gnome: Require GObject-Introspection 1.58.1 for static libraries
Introspecting non-libtool static libraries requires a gir-scanner fix
which is only in 1.58.1 or later.
2018-11-06 13:09:32 -05:00
a2a979cf43 gnome: Use full path for static libraries
Makes it a bit safer.
2018-11-05 21:33:07 -05:00
9da0c6af98 gnome: GIR works fine for static libraries
g-ir-scanner works as well with static libraries as with dynamic
2018-11-05 21:33:07 -05:00
08216a3a86 gnome.compile_resources: Put dependency directories before current source dir
This avoids the problem of generated files with the same name as something in source
existing and using the wrong file.
2018-10-10 19:42:20 +03:00
bb9f60624b gnome: Quote arguments passed to gtkdoc-scangobj
It is possible for compiler flags to include special characters, such as
double quotes which are needed to define macros with -D options. Since
gtkdoc-scangobj uses shlex.split to split arguments passed to --cc,
--ld, --cflags, --ldflags into lists, we can safely use shlex.quote to
properly quote arguments for these options.
2018-10-08 23:12:51 +03:00
ee80620f65 gnome.gtkdoc: Fix static library ldflags
When passing static libraries to gtkdoc, they are also appended as
shared libraries to ldflags, which makes the process to fail.

This has been changed to only append shared libraries to ldflags.

Fixes #3935
2018-09-28 13:02:13 -07:00
fe981b0231 gnome: use target c_args/c_link_args for g-ir-scanner when cross-compiling
When cross-compiling we shouldn't be passing the native c_args/c_link_args to
g-ir-scanner.
2018-09-28 17:18:24 +01:00
47d115f6a8 gnome: add missing cflags/ldflags to gtk-doc when cross-compiling
When cross-compiling the gtk-doc calls were missing the configured c_args and
c_link_args.
2018-09-28 17:18:24 +01:00
8a5671c017 gnome: use project compiler flags in gtkdoc
If add_project_arguments is used, gtkdoc will ignore it, so make sure we
pick these flags for the compiler too.

Fixes #2901
2018-09-25 15:03:09 +02:00
5bec6c28e7 gnome: add support for module_version
gtk-doc for autotools has the concept of module version, that is used to define
the module install path and the devhelp2 basename.

Add a `module_version` parameter to gnome.gtkdoc to replicate the same behavior.
Updated the test checking that the install_dir is properly computed (if not
passed), and that the .devhelp2 file has proper name.

https://gitlab.gnome.org/GNOME/gtk-doc/blob/GTK_DOC_1_29/buildsystems/autotools/gtk-doc.make#L269
2018-09-21 09:13:21 +02:00
eb7ed4dafb gnome.gtkdoc: Add new c_args parameter
gtkdoc-scangobj also accepts compiler arguments. In the same way
that include_directories includes directories, the new c_args
parameter also appends compiler arguments.
2018-09-17 21:27:02 +03:00
d0a7ea5e6e gnome.gtkdoc: Fix dependencies compile_args in gtkdoc
One of the gtkdoc's steps calls to gtkdoc-scangobj that also accepts
compiler arguments by using the cflags option.

Compiler arguments from dependencies are also appended now.
2018-09-17 21:27:02 +03:00
b2f92ea689 gnome: fix generate_gir when linking with libasan
The regression was introduced in my recent refactoring of
that method (8377ea4).

This commit simply restores the ordering of the generated
scan_command, ensuring `-lasan` and other internal linker
flags come before `--library` or `--program`
2018-08-31 08:09:28 -07:00
ab1dbfe57f gnome: Filter LDFLAGS passed to g-ir-scanner
g-ir-scanner is very picky about the flags that it can accept, so the
build fails on macOS if you have Framework external dependencies,
which add -F and -framework arguments.

Also fix incorrect de-duping of -framework arguments for gtkdoc.
2018-08-15 06:16:35 -07:00
d16dca7677 gnome: Filter CFLAGS that are passed to g-ir-scanner
g-ir-scanner barfs on any flags other than -D -I and -U
2018-08-15 06:16:35 -07:00