I looked at the code and in pcre2_compile.c, you have this code...PCRE2_SPTRPRIV(find_bracket)(PCRE2_SPTR code, BOOL utf, int number){...
and there is extern PCRE2_SPTR _pcre2_find_bracket(PCRE2_SPTR, BOOL, int);
pcre2_internal.h
Obviously, in pcre2_compile.c you have legitimate code like...groupptr = PRIV(find_bracket)(codestart, utf, recno);
...
But pcre_compile.c also has this code...if ((re->overall_options & PCRE2_NO_START_OPTIMIZE) == 0 && PRIV(study)(re) != 0) {...
The only other module that mentions find_bracket is pcre2_study.c that has similar code like...ce = cs = (PCRE2_UCHAR *)PRIV(find_bracket)(startcode, utf, GET2(slot, 0));
...
This means some form of circular dependency.
I am not an expert in auto-tools or make or cmake and they may have ways to handle such a situation. I cannot have that resolved unless I do some dirty tricks and even such tricks won't really work.