Jérôme Loyet wrote:
> 2009/3/23 Igor Sysoev <is@rambler-co.ru>:
>> On Mon, Mar 23, 2009 at 06:51:50PM +0100, J?r?me Loyet wrote:
>>
>>>>>>>> As your OpenSSL is set in non-standard place (I have just tested building
>>>>>>>> on Debian with standard /usr/include/openssl/md5.h), you should use
>>>>>>>> something like this:
>>>>>>>>
>>>>>>>> --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>>>>>>> it's not working because of the #ifdef in md5.h:
>>>>>>>
>>>>>>> #if (NGX_HAVE_OPENSSL_MD5_H)
>>>>>>> #include <openssl/md5.h>
>>>>>>> #else
>>>>>>> #include <md5.h>
>>>>>>> #endif
>>>>>>>
>>>>>>> Has NGX_HAVE_OPENSSL_MD5_H is not defined, it looks for md5.h instead
>>>>>>> of openssl/md5.h. And if I use
>>>>>>> --with-cc-opt=-I/usr/local/openssl-0.9.6/include/openssl it won't work
>>>>>>> because the function name are from OpenSSL lib and not from BSD kernel
>>>>>>> (MD5_Init vs MD5Init).
>>>>>>>
>>>>>>> I have to make configure to set NGX_HAVE_OPENSSL_MD5_H ... do you have
>>>>>>> any clue ? I'm still searching
>>>>>> - --with-cc-opt=-I/usr/local/openssl-0.9.6/include/openssl
>>>>>> + --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>>>>> Here are configuration options:
>>>>> ./configure --with-http_addition_module --with-http_flv_module
>>>>> --with-http_gzip_static_module --with-http_realip_module
>>>>> --with-http_stub_status_module --with-http_sub_module
>>>>> --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>>>>>
>>>>> And a part of the output:
>>>>> [...]
>>>>> checking for rsaref md5 library ... not found
>>>>> checking for rsaref md library ... not found
>>>>> checking for OpenSSL md5 crypto library ... not found
>>>>> [...]
>>>>> Configuration summary
>>>>> + using system PCRE library
>>>>> + OpenSSL library is not used
>>>>> + md5 library is not found
>>>>> + sha1 library is not used
>>>>> + using system zlib library
>>>> What is in objs/autoconf.err under the line:
>>>> checking for OpenSSL md5 crypto library
>>>> ?
>>>>
>>>>> as OpenSSL md5 crypto library is not found, NGX_HAVE_OPENSSL_MD5_H is
>>>>> not defined by configure. So ngx_md5.h will try to include <md5.h> and
>>>>> not <openssl/md5.h>
>>>>>
>>>>> #if (NGX_HAVE_OPENSSL_MD5_H)
>>>>> #include <openssl/md5.h>
>>>>> #else
>>>>> #include <md5.h>
>>>>> #endif
>>>>>
>>>>> And make stops at compilation time when including ngx_md5.h from
>>>>> ngx_http_file_cache.c
>>>>>
>>>>> How to tell to configure script to lookup in /usr/local/openssl-0.9.6
>>>>> for headers and lib from openssl ?
>>>> This may be not include problem, but library's one.
>>>> Where is md5.h and libcrypto.so on your system:
>>>>
>>>> /usr/local/openssl-0.9.6/include/openssl/md5.h
>>>> /usr/local/openssl-0.9.6/lib/libcrypto.so
>>>>
>>>> ?
>>> I found a small bug which caused my death on this :)
>>>
>>> --- auto/feature.orig Mon Mar 23 18:40:55 2009
>>> +++ auto/feature Mon Mar 23 18:41:11 2009
>>> @@ -39,7 +39,7 @@
>>>
>>>
>>> ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
>>> - -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
>>> + -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_CC_OPT $NGX_LD_OPT
>>> $ngx_feature_libs"
>>>
>>> ngx_feature_inc_path=
>>>
>>>
>>> In auto/feature the NGX_CC_OPT variable (from --with-cc-opt configure
>>> option) was not used. So I could set whatever I wanted through
>>> --with-cc-opt it would never be looked at.
>>>
>>> now everything works fine. In my case I have to specify both
>>> with-cc-opt and with-cc-opt:
>>> --with-cc-opt=-I/usr/local/openssl-0.9.6/include
>>> --with-ld-opt=-L/usr/local/openssl-0.9.6/lib
>>>
>>> Does this patch sound good to you igor ?
>> The $CC_TEST_FLAGS should have $NGX_CC_OPT.
>> What is in objs/autoconf.err ?
>
> Hum ... it seems that yesterday I smoked some very good stuff. As I
> tried many things I got confused myself ... I don't know why the hell
> I found a bug there as it was working .... I'm very sorry to have you
> spent some time on my problem which even didn't exist (except in my
> smoked mind :p)
>
> Thanks you
> ++ Jerome
>
>