Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCompiler: Add missing return statements in some compiled tests #3582

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions mesonbuild/compilers/c.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ def has_header_symbol(self, hname, symbol, prefix, env, extra_args=None, depende
#ifndef {symbol}
{symbol};
#endif
return 0;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting CFLAGS in the environment does not cause those flags to be added to compiler checks. Are you sure this is needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It certainly seemed to cause GLib to fail to build when I tested it quickly.

Copy link
Member

@nirbheek nirbheek May 17, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was wrong, but we should probably also add '-Wno-error' to compilers/c.py:get_compiler_check_args() because some of our tests do funky stuff that will never pass through a strict compiler, f.ex. has_function().

See compilers/c.py:_get_compiler_check_args() (note the underscore in this one) for a list of all source from which compiler arguments are gathered for compiler checks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... and we should also add a unit test for this to ensure that passing -Werror in CFLAGS does not cause a compiler check that is known to error out with it to fail.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 to those suggestions. This was only a drive-by patch and I don’t currently have time to do a good job of fixing this properly. Feel free to close this PR unmerged if you have time to implement the full fix.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What’s the status of this now that #3720 is fixed?

}}'''
return self.compiles(t.format(**fargs), env, extra_args, dependencies)

Expand Down Expand Up @@ -452,6 +453,7 @@ def cross_sizeof(self, typename, prefix, env, extra_args=None, dependencies=None
{prefix}
int main(int argc, char **argv) {{
{type} something;
return 0;
}}'''
if not self.compiles(t.format(**fargs), env, extra_args, dependencies):
return -1
Expand Down Expand Up @@ -484,6 +486,7 @@ def cross_alignment(self, typename, prefix, env, extra_args=None, dependencies=N
{prefix}
int main(int argc, char **argv) {{
{type} something;
return 0;
}}'''
if not self.compiles(t.format(**fargs), env, extra_args, dependencies):
return -1
Expand Down Expand Up @@ -554,6 +557,7 @@ def get_return_value(self, fname, rtype, prefix, env, extra_args, dependencies):
#include <stdio.h>
int main(int argc, char *argv[]) {{
printf ("{fmt}", {cast} {f}());
return 0;
}}'''.format(**fargs)
res = self.run(code, env, extra_args, dependencies)
if not res.compiled:
Expand Down Expand Up @@ -704,6 +708,7 @@ def has_function(self, funcname, prefix, env, extra_args=None, dependencies=None
#error "No definition for __builtin_{func} found in the prefix"
#endif
#endif
return 0;
}}'''
return self.links(t.format(**fargs), env, extra_args, dependencies)

Expand Down