Seema Alevoor wrote:
>
>
> 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 ?
right
This should bring us in alignment with a normal APR build.
For CC, the only essential build time flag missing AFAICT is -m64. It
is in CFLAGS for us because our build setup doesn't follow the
recommended APR mechanism -- setting CC to "cc -m64" for 64-bit builds.
>
>>> 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