ardupilot/Tools/ardupilotwaf/cxx_checks.py
Lucas De Marchi cc24f323d2 waf: add messages to the things we are checking for
Before:
Checking for code snippet                : yes
Checking for code snippet                : yes
Checking for code snippet                : yes
Checking for code snippet                : yes
Checking for code snippet                : no
Checking for code snippet                : no

After:
Checking for HAVE_CMATH_ISFINITE         : yes
Checking for HAVE_CMATH_ISINF            : yes
Checking for HAVE_CMATH_ISNAN            : yes
Checking for NEED_CMATH_ISFINITE_STD_NAMESPACE : yes
Checking for NEED_CMATH_ISINF_STD_NAMESPACE    : no
Checking for NEED_CMATH_ISNAN_STD_NAMESPACE    : no
2016-04-05 21:06:25 -07:00

91 lines
2.7 KiB
Python

"""
WAF Tool that checks cxx parameters, creating the ap_config.h
header file.
This tool needs compiler_cxx to be loaded, make sure you
load them before this tool.
Example::
def configure(cfg):
cfg.load('cxx_checks')
"""
def configure(cfg):
cfg.check_cxx(fragment='''
#include <cmath>
int main() {
return std::isfinite(1.0f);
}''',
define_name="HAVE_CMATH_ISFINITE",
msg="Checking for HAVE_CMATH_ISFINITE",
mandatory=False)
cfg.check_cxx(fragment='''
#include <cmath>
int main() {
return std::isinf(1.0f);
}''',
define_name="HAVE_CMATH_ISINF",
msg="Checking for HAVE_CMATH_ISINF",
mandatory=False)
cfg.check_cxx(fragment='''
#include <cmath>
int main() {
return std::isnan(1.0f);
}''',
define_name="HAVE_CMATH_ISNAN",
msg="Checking for HAVE_CMATH_ISNAN",
mandatory=False)
# NEED_CMATH_FUNCTION_STD_NAMESPACE checks are needed due to
# new gcc versions being more restrictive.
#
# Here we check if we need to add 'using std::function' to
# the function.
#
# Without these checks, in some cases, gcc points this as
# overloads or function duplication in scope.
cfg.check_cxx(fragment='''
#include <math.h>
#include <cmath>
using std::isfinite;
int main() {
return isfinite((double)1);
}''',
define_name="NEED_CMATH_ISFINITE_STD_NAMESPACE",
msg="Checking for NEED_CMATH_ISFINITE_STD_NAMESPACE",
mandatory=False)
cfg.check_cxx(fragment='''
#include <math.h>
#include <cmath>
using std::isinf;
int main() {
return isinf((double)1);
}''',
define_name="NEED_CMATH_ISINF_STD_NAMESPACE",
msg="Checking for NEED_CMATH_ISINF_STD_NAMESPACE",
mandatory=False)
cfg.check_cxx(fragment='''
#include <math.h>
#include <cmath>
using std::isnan;
int main() {
return isnan((double)1);
}''',
define_name="NEED_CMATH_ISNAN_STD_NAMESPACE",
msg="Checking for NEED_CMATH_ISNAN_STD_NAMESPACE",
mandatory=False)