On 02/26/09 06:27, Jeff Trawick wrote:
> Seema Alevoor wrote:
>>
>> Jeff Trawick wrote:
>>> Seema Alevoor wrote:
>>>>
>>>>
>>>> On 02/24/09 21:22, Jeff Trawick wrote:
>>>>> Seema Alevoor wrote:
>>>>>>
>>>>>>
>>>>>> On 02/24/09 06:29, Jeff Trawick wrote:
>>>>>>> Seema Alevoor wrote:
>>>>>>>> Please review the webrev at
>>>>>>>> http://cr.opensolaris.org/~seema/6782613/
>>>>>>>>
>>>>>>>> Main changes:
>>>>>>>> * --cflags includes CFLAGS and EXTRA_CFLAGS
>>>>>>>> * --link-ld and --link-libtool options includes --ldflags option
>>>>>>>> value.
>>>>>>>>
>>>>>>> These all sound like APR fixes, and not issues with our
>>>>>>> integration. Is that right? What was broken? I just see the
>>>>>>> -m32/-m64 issue in the CR.
>>>>>>>
>>>>>> Evaluation has details about why --ldflags change was necessary.
>>>>>>
>>>>>>> I understand that --cflags without the user-specified CFLAGS
>>>>>>> broke with 64-bit builds, and I've posted to dev at apr asking about
>>>>>>> the history (it is a hindrance people have put up with for too
>>>>>>> long).
>>>>>
>>>>> According to a highly esteemed APR colleague, the usual solution
>>>>> for 64-bit builds, and ABI issues in general, is to include such
>>>>> flags in CC. CFLAGS may include flags not appropriate to pass on
>>>>> to applications. I've tweaked my personal Apache/APR build scripts
>>>>> to move "-m64" from CFLAGS to CC, and can avoid the ugly "apxs
>>>>> -Wl,-m64 -Wc,-m64 ..." hack, and apr-1-config output looks good too.
>>>>>
>>>>> For our build we own all these settings and can determine whether
>>>>> we only include items in CFLAGS that can be passed on to
>>>>> applications so the choice isn't absolutely critical, but it would
>>>>> be great to follow the normal path.
>>>>>
>>>> For our builds, common flags are defined in the master makefile and
>>>> they are all
>>>> part of CFLAGS variable.
>>>
>>> Okay, so we clearly have to do something out of the ordinary.
>>>
>>> I'd rather see us edit the --cc value in apr-1-config to match a
>>> recommended APR build than extend the meaning of --cflags/--cppflags
>>> in both apr-1-config and apu-1-config.
>>>
>> When we use libtool to compile a module, it will use build time
>> CFLAGS. Shouldn't the user be exposed to same set of flags while using
>> apr-1-config/apu-1-config ?
> The apr-1-config flags seem safer, since as we bump up optimization on
> our code (verified by our testing) we don't affect the optimization of
> the user's code, possibly breaking it or rendering it difficult to debug.
>
> I don't know this with absolute certainty, but in general I trust that
> what's good for APR on other platforms is good for OpenSolaris too.
>
> I did eyeball the compile difference between apxs (which uses libtool)
> vs. building the command using apr-1-config and didn't notice anything
> harmful.
>
>
So, you are suggesting that we change
1. the --cc option to include the essential build time CFLAGS
2. retain apr-1-config's CFLAGS as EXTRA_CFLAGS (back out the --cflags and
--cppflags changes)
3. no change to libtool flags ,
right ?
>> Or are you suggesting that we change the libtool flags, too ?
>>>
>>>>
>>>>> If for some reason CC can't include -m64/-m32 because of our own
>>>>> build requirements, it could be patched into apr-1-config's CC in
>>>>> lieu of the existing patch for CFLAGS and CPPFLAGS.
>>>>>
>>>>>>>
>>>>>>> Why should --link-ld and --link-libtool include the --ldflags
>>>>>>> value too?
>>>>>>>
>>>>>> This is related to CR 6772796.
>>>>>
>>>>> I'd expect that the user needs to call "apr-1-config --ldflags"
>>>>> themselves when putting together the command-line.
>>>>>
>>>> I think more common usage is to call "apu-1-config --link-(libtool |
>>>> ld) --libs" .
>>>> It could be because of the Usage text.
>>>
>>> I didn't mean "--ldflags" instead of "--link-(libtool | ld) --libs";
>>> I meant in addition to. The variables have different meanings. The
>>> help output shows building a list of required libraries via
>>> "apu-1-config --link-(libtool | ld) --libs". It also says the
>>> application should use the --ldflags value too.
>>>
>>>>
>>>>> --link-ld and --link-libtool specify the arguments for referring to
>>>>> the library, for when ld is used directly or for when libtool is used.
>>>>>
>>>>> I'm having trouble reproducing that Solaris 10 CR. I would think
>>>>> that /usr/sfw/lib/libexpat would be in the default search path.
>>>>
>>>> It will not be in the system default search path.
>>>>
>>>>> "apr-1-config --ldflags" is empty anyway (using the GA build on
>>>>> Solaris 10 or 2008.11).
>>>>
>>>> "apu-1-config --ldflags" on S10 has /usr/sfw/lib
>>>> On OpenSolaris, it will be empty. But earlier, even on OpenSolaris,
>>>> some dependent libs were in /usr/sfw/lib.
>>>
>>> Oops, I was checking apr-1-config instead of apu-1-config; I now
>>> follow you with how implicitly adding the --ldflags will make a
>>> difference with apu-1-config; I just don't think it is appropriate,
>>> since the application's build process is supposed to query --ldflags
>>> on its own.
>>>
>> Then, do you think we should change the 'Usage' text to highlight its
>> usage while linking ?
>> ------
>> When linking with libtool, an application should do something like:
>> APR_LIBS="`apr-1-config --link-libtool --ldflags --libs`"
>> or when linking directly:
>> APR_LIBS="`apr-1-config --link-ld --ldflags --libs`"
>> ------
>
> "--ldflags" doesn't give you libraries, right?
Right, but includes the lib path (like 'apr-1-config --link-libtool').
> APR_LIBS is getting set to a list of libraries in the documented
> invocations
>
Fine. I will back out the --ldflags changes.
Thanks,
Seema.
>>
>>
>> Thanks,
>> Seema.
>>
>>>>>> Why is the following change needed? (add -L$libdir if apr-1-config
>>>>>>> hasn't been installed to its usual place)
>>>>>>
>>>>>> When the command "apr-1-config --link-ld --libs" is run from the
>>>>>> proto area, it should not
>>>>>> include the runpath value as it points to the proto area.
>>>>>> This is similar to the --link-libtool change.
>>>>>>
>>>>>> Thanks,
>>>>>> Seema.
>>>>>>
>>>>>>>
>>>>>>> ++ if test -n "$install_root"; then
>>>>>>> ++ flags="$flags -L$libdir -l${APR_LIBNAME}"
>>>>>>> ++ else
>>>>>>> ++ flags="$flags -L$libdir -R$libdir -l${APR_LIBNAME}"
>>>>>>> ++ fi
>>>>>
>>>>> _______________________________________________
>>>>>
>>>>>
>>>>> webstack-discuss mailing list
>>>>> webstack-discuss at opensolaris.org
>>>>> http://mail.opensolaris.org/mailman/listinfo/webstack-discuss
>>>
>>> _______________________________________________
>>>
>>>
>>> webstack-discuss mailing list
>>> webstack-discuss at opensolaris.org
>>> http://mail.opensolaris.org/mailman/listinfo/webstack-discuss
>
> _______________________________________________
>
>
> webstack-discuss mailing list
> webstack-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/webstack-discuss