# # Under compilers with WERRORFLAG, MakeMakefile.try_compile treats warnings as errors, so we can # use append_cflags to test whether the public header files emit warnings with certain flags turned # on. # def check_append_cflags(flag, msg = nil) msg ||= "flag #{flag} is not acceptable" if $CFLAGS.include?(flag) raise("flag #{flag} already present in $CFLAGS") end append_cflags(flag) unless $CFLAGS.include?(flag) system("cat mkmf.log") raise(msg) end end if %w[gcc clang].include?(RbConfig::CONFIG['CC']) config_string("WERRORFLAG") or raise("expected WERRORFLAG to be defined") # should be acceptable on all modern C compilers check_append_cflags("-D_TEST_OK", "baseline compiler warning test failed") # Feature #20507: Allow compilation of C extensions with -Wconversion check_append_cflags("-Wconversion", "-Wconversion raising warnings in public headers") end create_makefile("-test-/public_header_warnings")