check_source_compiles(<lang> <code> <resultVar> [FAIL_REGEX <regex1> [<regex2>...]] [SRC_EXT <extension>])
check_source_compiles(<lang> <code> <resultVar> [FAIL_REGEX <regex1> [<regex2>...]] [SRC_EXT <extension>])
check_source_compiles(CXX
"#include <sched.h>
int main() {
int cpu_id = sched_getcpu();
int num_cpus = 4;
const size_t size = CPU_ALLOC_SIZE(num_cpus);
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(cpu_id, &mask);
int err = sched_setaffinity(0, size, &mask);
return 0;
}"
EXAMPLE_COMPILES)
check_source_compiles(C
"#include <infiniband/verbs.h>
int main(void) { int x = IBV_ACCESS_RELAXED_ORDERING; return 1; }"
HAVE_IBV_ACCESS_RELAXED_ORDERING
)
check_source_compiles(
C "#include <hwloc.h>
int main() { return HWLOC_OBJ_PU; }" HAVE_HWLOC_OBJ_PU
)
check_source_compiles(C "#include <linux/gpio.h>\nint main(void) { GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME; return 0; }" HAVE_GPIO_CDEV_V2)
check_source_compiles(CXX
"#include <filesystem>
int main(){
std::filesystem::path p;
return 0;
}"
STD_FILESYSTEM_EXISTS
)
check_source_compiles(CXX "
#include <cstddef>
#include <cstdint>
extern \"C\" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
{ return 0;}
" haslibfuzzer)
check_source_compiles(${_lang} "${_source}" ${_var} ${_common_patterns})
check_source_compiles(CXX
"#if !__has_cpp_attribute(maybe_unused)
#error \"no maybe_unused attribute\"
#endif"
cpp17_maybe_unused
)
check_source_compiles(<LANG>)
check_source_compiles(CXX "
#include <cstddef>
#include <cstdint>
extern \"C\" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
{ return 0;}
" haslibfuzzer)
check_source_compiles(${_lang}
"${_lang_src}"
${_var}
${_lang_fail_regex}
${_common_patterns}
)
check_source_compiles(CXX
"#if !(__has_attribute(swiftcall) && \
__has_attribute(swift_context) && \
__has_attribute(swift_error_result) && \
__has_attribute(swift_indirect_result))
#error CXX compiler must support Swift calling conventions
#endif
int main(void) { return 0; }"
HAVE_SWIFTCALL)
check_source_compiles ( C
"#include <complex.h>
int main (void)
{
double _Complex z1 = 1.0 ;
double _Complex z2 = 1.0 * I ;
double _Complex z3 = z1 * z2 ;
return ((int) creal (z3)) ;
}"
GxB_HAVE_COMPLEX_C99 )
check_source_compiles ( C
"#include <complex.h>
int main (void)
{
double _Complex z1 = 1.0 ;
double _Complex z2 = 1.0 * I ;
double _Complex z3 = z1 * z2 ;
return ((int) creal (z3)) ;
}"
GxB_HAVE_COMPLEX_C99 )
check_source_compiles ( C
"#include <complex.h>
int main (void)
{
double _Complex z1 = 1.0 ;
double _Complex z2 = 1.0 * I ;
double _Complex z3 = z1 * z2 ;
return ((int) creal (z3)) ;
}"
GxB_HAVE_COMPLEX_C99 )
check_source_compiles(C
"#include <immintrin.h> int main(void) { unsigned long long val; _rdrand64_step(&val); return 0; }"
HAVE_INTEL_RDRAND)