From 1735a78561dbe139fd138caef2d44d81f5494fe7 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 4 Apr 2023 12:28:11 -0700 Subject: [PATCH] Make function checks more robust within shared libs Previous attempt to error at link like was with https://github.com/toddr/IO-Tty/commit/1747cdf9f98cfd3aada9bf6c09f9d46297e18a5e this however causes issues with newer clang where it detects the assignment as -Wint-conversion warning which is treated at error and builds with clang fail. So this is an attempt to instruct linker explicitly to error out if the symbol is not found during link time when building a shared library, this fixes both the problems as reported in https://github.com/toddr/IO-Tty/issues/23 as well as https://github.com/toddr/IO-Tty/pull/33#issuecomment-1260147256 Signed-off-by: Khem Raj --- Makefile.PL | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index eaf47e0..2e8338d 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -163,7 +163,8 @@ main () #if defined (__stub_$f) || defined (__stub___$f) choke me #else -f = $f (); +f = $f; +f(); #endif ; @@ -173,7 +174,7 @@ ESQ close(TST); print "Looking for $f()" . "." x (13-length($f)) . " "; - if (system("$cfg{'cc'} $flags $funcs{$f} functest_$f.c > functest_$f.log 2>&1")) { + if (system("$cfg{'cc'} $flags -Wl,--no-undefined $funcs{$f} functest_$f.c > functest_$f.log 2>&1")) { print "not found.\n"; } else { $define{"-DHAVE_\U$f"} = undef;