<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Dec 7, 2012 at 2:21 PM, Ruslan Ermilov <span dir="ltr"><<a href="mailto:ru@nginx.com" target="_blank">ru@nginx.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class="im">On Fri, Dec 07, 2012 at 12:24:49PM -0800, Piotr Sikora wrote:<br>
> Fix PCRE detection on OSX.<br>
><br>
> OSX ships with PCRE library in /usr, but without headers for it.<br>
><br>
> OSX default search paths includes both /usr and /usr/local, which<br>
> results in library (from /usr) and headers (from /usr/include)<br>
> mismatch when PCRE is installed via Homebrew and we try to compile<br>
> nginx without "-L/usr/local" parameter.<br>
><br>
> The solution is to skip the detection using default search paths<br>
> on OSX and let ./configure script detect PCRE installed in /usr/local<br>
> or other common prefixes.<br>
<br>
</div>OS X is known to be broken in that respect.  That's why MacPorts<br>
installs stuff into /opt/local by default, instead of /usr/local.<br>
<br>
<a href="https://trac.macports.org/wiki/FAQ#defaultprefix" target="_blank">https://trac.macports.org/wiki/FAQ#defaultprefix</a><br>
<a href="https://trac.macports.org/wiki/FAQ#usrlocal" target="_blank">https://trac.macports.org/wiki/FAQ#usrlocal</a><br>
<br>
But why should nginx care to "fix" this?</blockquote><div> </div><div>They don't, but there is already an exception line in the auto/conf for # Macports, and adding a bit more just makes it easier for people using the other concurrent (and newer) system of packages on Mac OS: Homebrew. </div>

<div><br></div><div>Actually it's worse than that. </div><div>When using homebrew the included pcre.h looks like it will support PCRE_JIT, but the library used for the link doesn't export those symbols. It results in a bad linking error, which might throw off some users that have no idea why this is happening ..</div>

<div><br></div><div>I don't really have a way to fix Mac OS, or homebrew. But we can help making sure Nginx will compile everywhere.</div><div><br></div><div>An alternative is to specifically look for PCRE_JIT functions, and test if the linking will work (see example below), and either throw off an error at ./configure time, or add some exceptions.</div>

<div>And I believe this stays in the style of Nginx to handle "exotic" systems.</div><div><br></div><div>Regards,</div><div>Matthieu.</div><div><br></div><div><br></div><div><br></div><div>Config example for PCRE_JIT detection :</div>

<div><br></div><div><div># Check version of PCRE to turn on PCRE_JIT</div><div><br></div><div>ngx_feature="PCRE_JIT capable PCRE library"</div><div>ngx_feature_name="NGX_PCRE" </div><div>ngx_feature_run=no  </div>

<div>ngx_feature_incs="#include <pcre.h>"</div><div>ngx_feature_path=</div><div>ngx_feature_libs="-lpcre"</div><div>ngx_feature_test="</div><div>/* PCRE_JIT starts after 8.21 */</div><div>#if (PCRE_MAJOR > 8) || (PCRE_MAJOR == 8 && PCRE_MINOR >= 21)</div>

<div>    printf(\"%p\", pcre_free_study);</div><div>#endif<br></div><div>"</div></div><div><br></div></div></div>