[dpdk-dev] Build failure on FreeBSD-10.1-RELEASE

Tetsuya Mukawa mukawa at igel.co.jp
Thu Mar 5 08:08:34 CET 2015


On 2015/03/04 19:15, Bruce Richardson wrote:
> On Wed, Mar 04, 2015 at 10:33:14AM +0100, Olivier MATZ wrote:
>> Hi Tetsuya, Hi Bruce,
>>
>> On 03/04/2015 04:34 AM, Tetsuya Mukawa wrote:
>>> On 2015/03/02 19:22, Bruce Richardson wrote:
>>>> On Mon, Mar 02, 2015 at 12:47:42PM +0900, Tetsuya Mukawa wrote:
>>>>> Hi,
>>>>>
>>>>> I got a error while building master branch on FreeBSD.
>>>>> Here is a log.
>>>>>
>>>>> $ gmake T=x86_64-native-bsdapp-clang config
>>>>> cc: error: unknown argument: '-fdirectives-only'
>>>>> cp: /usr/home/mukawa/work/dpdk/build/.config_tmp: No such file or directory
>>>>> cp: /usr/home/mukawa/work/dpdk/build/.config_tmp: No such file or directory
>>>>> gmake[3]: Nothing to be done for 'depdirs'.
>>>>> Configuration done
>>>>>
>>>>>
>>>>> Here is log came from 'uname'
>>>>>
>>>>> $ uname -a
>>>>> FreeBSD eris.hq.igel.co.jp 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401:
>>>>> Tue Nov 11 21:02:49 UTC 2014
>>>>>
>>>>>
>>>>> I've tried to remove '-fdirectives-only' from mk/rte.sdkconfig.mk like
>>>>> below.
>>>>> With the fixing,  It seems I can compile and run testpmd.
>>>>> (Obviously, we should not merge below patch, but I've done just for testing)
>>>>>
>>>>> diff --git a/mk/rte.sdkconfig.mk b/mk/rte.sdkconfig.mk
>>>>> index d43c430..f8d95b1 100644
>>>>> --- a/mk/rte.sdkconfig.mk
>>>>> +++ b/mk/rte.sdkconfig.mk
>>>>> @@ -75,7 +75,7 @@ else
>>>>>  $(RTE_OUTPUT)/.config: $(RTE_CONFIG_TEMPLATE) FORCE | $(RTE_OUTPUT)
>>>>>         $(Q)if [ "$(RTE_CONFIG_TEMPLATE)" != "" -a -f
>>>>> "$(RTE_CONFIG_TEMPLATE)" ]; then \
>>>>>                 $(CPP) -undef -P -x assembler-with-cpp \
>>>>> -               -fdirectives-only -ffreestanding \
>>>>> +               -ffreestanding \
>>>>>                 -o $(RTE_OUTPUT)/.config_tmp $(RTE_CONFIG_TEMPLATE) ; \
>>>>>                 if ! cmp -s $(RTE_OUTPUT)/.config_tmp
>>>>> $(RTE_OUTPUT)/.config; then \
>>>>>                         cp $(RTE_OUTPUT)/.config_tmp
>>>>> $(RTE_OUTPUT)/.config ; \
>>>>>
>>>>>
>>>>> Also, I've checked /usr/ports/net/dpdk, and found below line.
>>>>> (It seems above ports dpdk package is based on DPDK-1.8.)
>>>>>
>>>>>
>>>>>                 $(CPP) -undef -P -x assembler-with-cpp \
>>>>>                  -ffreestanding \
>>>>>                -o $(RTE_OUTPUT)/.config_tmp $(RTE_CONFIG_TEMPLATE) ; \
>>>>>
>>>>> So, I guess we should not add '-fdirectives-only' for flags of $(CPP)
>>>>> for BSD system like dpdk package of ports.
>>>>>
>>>>> Thanks,
>>>>> Tetsuya
>>>>>
>>>> Yes, that is correct. In most cases I have tested, the extra flag only gives a
>>>> warning but it appears its now an error. We should conditionally include or
>>>> omit the flag for BSD vs Linux, I think.
>>>>
>>>> /Bruce
>>> Hi Bruce,
>>>
>>> It seems we cannot use CONFIG_RTE_EXEC_ENV_LINUXAPP/BSDAPP definition here.
>>> Now I am looking for other way to check target OS.
>>> Is it not so good to use $(T) definition value here?
>> Indeed, it seems that the -fdirectives-only option does not exist in
>> freebsd. This is probably because the default cpp is not GNU cpp:
>>
>> On my version, I have:
>>  FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610
>>  Target: x86_64-unknown-freebsd10.0
>>  Thread model: posix
>>
>> To decide whether using the option, we could check the return value of
>> cpp -fdirectives-only /dev/null > /dev/null 2>/dev/null

It’s a great idea.

>> But I don't really think it's an issue to remove the option for all
>> OSes. In my opinion, expanding macros when parsing the config files
>> won't add any issue, and it's probably better to have no differences
>> between FreeBSD and Linux.
>>
>> Regards,
>> Olivier
>>
> +1 
> I was just going to suggest that this morning! :-)

Thanks for suggestions.
I will send a patch that just removes '-fdirectives-only'.

Thanks,
Tetsuya



More information about the dev mailing list