diff mbox series

configure: check for bison, flex before dtc submodule build

Message ID 20200407111618.17241-1-cfontana@suse.de
State New
Headers show
Series configure: check for bison, flex before dtc submodule build | expand

Commit Message

Claudio Fontana April 7, 2020, 11:16 a.m. UTC
if fdt is required, and the system DTC (libfdt) is not usable,
check for the dtc submodule requirements before trying to build it,
and error out with a helpful message in case the dependencies are not met.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
---
 configure | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Peter Maydell April 7, 2020, 11:20 a.m. UTC | #1
On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
>
> if fdt is required, and the system DTC (libfdt) is not usable,
> check for the dtc submodule requirements before trying to build it,
> and error out with a helpful message in case the dependencies are not met.
>
> Signed-off-by: Claudio Fontana <cfontana@suse.de>

Does the dtc module actually need bison/flex, or does it just
print an ugly warning about it? We only want the 'libfdt' part
of dtc, which doesn't need the parser, we don't need to build
the actual dtc compiler.

thanks
-- PMM
Claudio Fontana April 7, 2020, 3:21 p.m. UTC | #2
On 4/7/20 1:20 PM, Peter Maydell wrote:
> On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
>>
>> if fdt is required, and the system DTC (libfdt) is not usable,
>> check for the dtc submodule requirements before trying to build it,
>> and error out with a helpful message in case the dependencies are not met.
>>
>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> 
> Does the dtc module actually need bison/flex, or does it just
> print an ugly warning about it? We only want the 'libfdt' part
> of dtc, which doesn't need the parser, we don't need to build
> the actual dtc compiler.
> 
> thanks
> -- PMM
> 

Hi Peter,

indeed, it was just an ugly warning that I mistook for an actual error.

I'll try to see if I can get rid of the warning somehow by playing with the build system a bit,

but otherwise all green.

Thanks,

Claudio
David Gibson April 8, 2020, 1:57 a.m. UTC | #3
On Tue, Apr 07, 2020 at 12:20:15PM +0100, Peter Maydell wrote:
> On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
> >
> > if fdt is required, and the system DTC (libfdt) is not usable,
> > check for the dtc submodule requirements before trying to build it,
> > and error out with a helpful message in case the dependencies are not met.
> >
> > Signed-off-by: Claudio Fontana <cfontana@suse.de>
> 
> Does the dtc module actually need bison/flex, or does it just
> print an ugly warning about it? We only want the 'libfdt' part
> of dtc, which doesn't need the parser, we don't need to build
> the actual dtc compiler.

Assuming we're just invoking "make libfdt" within the submodule,
rather than "make" which will build dtc as well, then bison / flex
shouldn't be needed.
Claudio Fontana April 8, 2020, 7:52 a.m. UTC | #4
On 4/8/20 3:57 AM, David Gibson wrote:
> On Tue, Apr 07, 2020 at 12:20:15PM +0100, Peter Maydell wrote:
>> On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
>>>
>>> if fdt is required, and the system DTC (libfdt) is not usable,
>>> check for the dtc submodule requirements before trying to build it,
>>> and error out with a helpful message in case the dependencies are not met.
>>>
>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>
>> Does the dtc module actually need bison/flex, or does it just
>> print an ugly warning about it? We only want the 'libfdt' part
>> of dtc, which doesn't need the parser, we don't need to build
>> the actual dtc compiler.
> 
> Assuming we're just invoking "make libfdt" within the submodule,
> rather than "make" which will build dtc as well, then bison / flex
> shouldn't be needed.
> 

Indeed; I just sent a patch that works for me,
tried a few in-tree and out-of-tree full builds, and it seems to work as intended.
patchew complains about docker builds/tests though, although running the same TEST SCRIPTs manually with docker works for me.

The libfdt target inside dtc/Makefile actually causes more than just libfdt to be built:

~/git/qemu/dtc> make libdtc
	 DEP tests/dumptrees.c
	 DEP tests/trees.S
	 DEP tests/testutils.c
	 DEP tests/value-labels.c
	 DEP tests/asm_tree_dump.c
	 DEP tests/truncated_memrsv.c
	 DEP tests/truncated_string.c
	 DEP tests/truncated_property.c
	 DEP tests/check_full.c
	 DEP tests/check_header.c
	 DEP tests/check_path.c
	 DEP tests/overlay_bad_fixup.c
	 DEP tests/overlay.c
	 DEP tests/subnode_iterate.c
	 DEP tests/property_iterate.c
	 DEP tests/integer-expressions.c
	 DEP tests/utilfdt_test.c
	 DEP tests/path_offset_aliases.c
	 DEP tests/add_subnode_with_nops.c
	 DEP tests/dtbs_equal_unordered.c
	 DEP tests/dtb_reverse.c
	 DEP tests/dtbs_equal_ordered.c
	 DEP tests/extra-terminating-null.c
	 DEP tests/incbin.c
	 DEP tests/boot-cpuid.c
	 DEP tests/phandle_format.c
	 DEP tests/path-references.c
	 DEP tests/references.c
	 DEP tests/string_escapes.c
	 DEP tests/propname_escapes.c
	 DEP tests/appendprop2.c
	 DEP tests/appendprop1.c
	 DEP tests/del_node.c
	 DEP tests/del_property.c
	 DEP tests/setprop.c
	 DEP tests/set_name.c
	 DEP tests/rw_tree1.c
	 DEP tests/open_pack.c
	 DEP tests/nopulate.c
	 DEP tests/mangle-layout.c
	 DEP tests/move_and_save.c
	 DEP tests/sw_states.c
	 DEP tests/sw_tree1.c
	 DEP tests/nop_node.c
	 DEP tests/nop_property.c
	 DEP tests/setprop_inplace.c
	 DEP tests/stringlist.c
	 DEP tests/addr_size_cells2.c
	 DEP tests/addr_size_cells.c
	 DEP tests/notfound.c
	 DEP tests/sized_cells.c
	 DEP tests/char_literal.c
	 DEP tests/get_alias.c
	 DEP tests/node_offset_by_compatible.c
	 DEP tests/node_check_compatible.c
	 DEP tests/node_offset_by_phandle.c
	 DEP tests/node_offset_by_prop_value.c
	 DEP tests/parent_offset.c
	 DEP tests/supernode_atdepth_offset.c
	 DEP tests/get_path.c
	 DEP tests/get_phandle.c
	 DEP tests/getprop.c
	 DEP tests/get_name.c
	 DEP tests/path_offset.c
	 DEP tests/subnode_offset.c
	 DEP tests/find_property.c
	 DEP tests/root_node.c
	 DEP tests/get_mem_rsv.c
	 DEP libfdt/fdt_overlay.c
	 DEP libfdt/fdt_addresses.c
	 DEP libfdt/fdt_empty_tree.c
	 DEP libfdt/fdt_strerror.c
	 DEP libfdt/fdt_rw.c
	 DEP libfdt/fdt_sw.c
	 DEP libfdt/fdt_wip.c
	 DEP libfdt/fdt_ro.c
	 DEP libfdt/fdt.c
	 DEP util.c
	 DEP fdtoverlay.c
	 DEP fdtput.c
	 DEP fdtget.c
	 DEP fdtdump.c
	 LEX convert-dtsv0-lexer.lex.c
make: flex: Command not found
	 DEP srcpos.c
	 BISON dtc-parser.tab.c
make: bison: Command not found
	 LEX dtc-lexer.lex.c
make: flex: Command not found
	 DEP treesource.c
	 DEP livetree.c
	 DEP fstree.c
	 DEP flattree.c
	 DEP dtc.c
	 DEP data.c
	 DEP checks.c
	CHK version_gen.h
	 LEX convert-dtsv0-lexer.lex.c
make: flex: Command not found
	 BISON dtc-parser.tab.c
make: bison: Command not found
	 LEX dtc-lexer.lex.c
make: flex: Command not found
make: *** No rule to make target 'libdtc'.  Stop.


so I just used dtc/libfdt/Makefile.libfdt directly and removed the recursion altogether.

Let me know what you think about the idea in general, or if anybody knows what is wrong in the patch that makes patchew complain?

Ciao,

Claudio
David Gibson April 8, 2020, 8 a.m. UTC | #5
On Wed, Apr 08, 2020 at 09:52:40AM +0200, Claudio Fontana wrote:
> On 4/8/20 3:57 AM, David Gibson wrote:
> > On Tue, Apr 07, 2020 at 12:20:15PM +0100, Peter Maydell wrote:
> >> On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
> >>>
> >>> if fdt is required, and the system DTC (libfdt) is not usable,
> >>> check for the dtc submodule requirements before trying to build it,
> >>> and error out with a helpful message in case the dependencies are not met.
> >>>
> >>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> >>
> >> Does the dtc module actually need bison/flex, or does it just
> >> print an ugly warning about it? We only want the 'libfdt' part
> >> of dtc, which doesn't need the parser, we don't need to build
> >> the actual dtc compiler.
> > 
> > Assuming we're just invoking "make libfdt" within the submodule,
> > rather than "make" which will build dtc as well, then bison / flex
> > shouldn't be needed.
> > 
> 
> Indeed; I just sent a patch that works for me,
> tried a few in-tree and out-of-tree full builds, and it seems to work as intended.
> patchew complains about docker builds/tests though, although running the same TEST SCRIPTs manually with docker works for me.
> 
> The libfdt target inside dtc/Makefile actually causes more than just libfdt to be built:
> 
> ~/git/qemu/dtc> make libdtc
> 	 DEP tests/dumptrees.c
> 	 DEP tests/trees.S
> 	 DEP tests/testutils.c
> 	 DEP tests/value-labels.c
> 	 DEP tests/asm_tree_dump.c
> 	 DEP tests/truncated_memrsv.c
> 	 DEP tests/truncated_string.c
> 	 DEP tests/truncated_property.c
> 	 DEP tests/check_full.c
> 	 DEP tests/check_header.c
> 	 DEP tests/check_path.c
> 	 DEP tests/overlay_bad_fixup.c
> 	 DEP tests/overlay.c
> 	 DEP tests/subnode_iterate.c
> 	 DEP tests/property_iterate.c
> 	 DEP tests/integer-expressions.c
> 	 DEP tests/utilfdt_test.c
> 	 DEP tests/path_offset_aliases.c
> 	 DEP tests/add_subnode_with_nops.c
> 	 DEP tests/dtbs_equal_unordered.c
> 	 DEP tests/dtb_reverse.c
> 	 DEP tests/dtbs_equal_ordered.c
> 	 DEP tests/extra-terminating-null.c
> 	 DEP tests/incbin.c
> 	 DEP tests/boot-cpuid.c
> 	 DEP tests/phandle_format.c
> 	 DEP tests/path-references.c
> 	 DEP tests/references.c
> 	 DEP tests/string_escapes.c
> 	 DEP tests/propname_escapes.c
> 	 DEP tests/appendprop2.c
> 	 DEP tests/appendprop1.c
> 	 DEP tests/del_node.c
> 	 DEP tests/del_property.c
> 	 DEP tests/setprop.c
> 	 DEP tests/set_name.c
> 	 DEP tests/rw_tree1.c
> 	 DEP tests/open_pack.c
> 	 DEP tests/nopulate.c
> 	 DEP tests/mangle-layout.c
> 	 DEP tests/move_and_save.c
> 	 DEP tests/sw_states.c
> 	 DEP tests/sw_tree1.c
> 	 DEP tests/nop_node.c
> 	 DEP tests/nop_property.c
> 	 DEP tests/setprop_inplace.c
> 	 DEP tests/stringlist.c
> 	 DEP tests/addr_size_cells2.c
> 	 DEP tests/addr_size_cells.c
> 	 DEP tests/notfound.c
> 	 DEP tests/sized_cells.c
> 	 DEP tests/char_literal.c
> 	 DEP tests/get_alias.c
> 	 DEP tests/node_offset_by_compatible.c
> 	 DEP tests/node_check_compatible.c
> 	 DEP tests/node_offset_by_phandle.c
> 	 DEP tests/node_offset_by_prop_value.c
> 	 DEP tests/parent_offset.c
> 	 DEP tests/supernode_atdepth_offset.c
> 	 DEP tests/get_path.c
> 	 DEP tests/get_phandle.c
> 	 DEP tests/getprop.c
> 	 DEP tests/get_name.c
> 	 DEP tests/path_offset.c
> 	 DEP tests/subnode_offset.c
> 	 DEP tests/find_property.c
> 	 DEP tests/root_node.c
> 	 DEP tests/get_mem_rsv.c
> 	 DEP libfdt/fdt_overlay.c
> 	 DEP libfdt/fdt_addresses.c
> 	 DEP libfdt/fdt_empty_tree.c
> 	 DEP libfdt/fdt_strerror.c
> 	 DEP libfdt/fdt_rw.c
> 	 DEP libfdt/fdt_sw.c
> 	 DEP libfdt/fdt_wip.c
> 	 DEP libfdt/fdt_ro.c
> 	 DEP libfdt/fdt.c
> 	 DEP util.c
> 	 DEP fdtoverlay.c
> 	 DEP fdtput.c
> 	 DEP fdtget.c
> 	 DEP fdtdump.c
> 	 LEX convert-dtsv0-lexer.lex.c
> make: flex: Command not found
> 	 DEP srcpos.c
> 	 BISON dtc-parser.tab.c
> make: bison: Command not found
> 	 LEX dtc-lexer.lex.c
> make: flex: Command not found
> 	 DEP treesource.c
> 	 DEP livetree.c
> 	 DEP fstree.c
> 	 DEP flattree.c
> 	 DEP dtc.c
> 	 DEP data.c
> 	 DEP checks.c
> 	CHK version_gen.h
> 	 LEX convert-dtsv0-lexer.lex.c
> make: flex: Command not found
> 	 BISON dtc-parser.tab.c
> make: bison: Command not found
> 	 LEX dtc-lexer.lex.c
> make: flex: Command not found
> make: *** No rule to make target 'libdtc'.  Stop.
> 
> 
> so I just used dtc/libfdt/Makefile.libfdt directly and removed the
> recursion altogether.

The Makefile setup of dtc/libfdt is a bit weird (mostly to allow for
Makefile fragments to be used in weird build environments).  But for
this case you might be better off still doing the recursion, but just
changing the target from 'all' to 'libfdt'.

> Let me know what you think about the idea in general, or if anybody knows what is wrong in the patch that makes patchew complain?
> 
> Ciao,
> 
> Claudio
>
Claudio Fontana April 8, 2020, 8:08 a.m. UTC | #6
On 4/8/20 10:00 AM, David Gibson wrote:
> On Wed, Apr 08, 2020 at 09:52:40AM +0200, Claudio Fontana wrote:
>> On 4/8/20 3:57 AM, David Gibson wrote:
>>> On Tue, Apr 07, 2020 at 12:20:15PM +0100, Peter Maydell wrote:
>>>> On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
>>>>>
>>>>> if fdt is required, and the system DTC (libfdt) is not usable,
>>>>> check for the dtc submodule requirements before trying to build it,
>>>>> and error out with a helpful message in case the dependencies are not met.
>>>>>
>>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>>
>>>> Does the dtc module actually need bison/flex, or does it just
>>>> print an ugly warning about it? We only want the 'libfdt' part
>>>> of dtc, which doesn't need the parser, we don't need to build
>>>> the actual dtc compiler.
>>>
>>> Assuming we're just invoking "make libfdt" within the submodule,
>>> rather than "make" which will build dtc as well, then bison / flex
>>> shouldn't be needed.
>>>
>>
>> Indeed; I just sent a patch that works for me,
>> tried a few in-tree and out-of-tree full builds, and it seems to work as intended.
>> patchew complains about docker builds/tests though, although running the same TEST SCRIPTs manually with docker works for me.
>>
>> The libfdt target inside dtc/Makefile actually causes more than just libfdt to be built:
>>
>> ~/git/qemu/dtc> make libdtc
>> 	 DEP tests/dumptrees.c
>> 	 DEP tests/trees.S
>> 	 DEP tests/testutils.c
>> 	 DEP tests/value-labels.c
>> 	 DEP tests/asm_tree_dump.c
>> 	 DEP tests/truncated_memrsv.c
>> 	 DEP tests/truncated_string.c
>> 	 DEP tests/truncated_property.c
>> 	 DEP tests/check_full.c
>> 	 DEP tests/check_header.c
>> 	 DEP tests/check_path.c
>> 	 DEP tests/overlay_bad_fixup.c
>> 	 DEP tests/overlay.c
>> 	 DEP tests/subnode_iterate.c
>> 	 DEP tests/property_iterate.c
>> 	 DEP tests/integer-expressions.c
>> 	 DEP tests/utilfdt_test.c
>> 	 DEP tests/path_offset_aliases.c
>> 	 DEP tests/add_subnode_with_nops.c
>> 	 DEP tests/dtbs_equal_unordered.c
>> 	 DEP tests/dtb_reverse.c
>> 	 DEP tests/dtbs_equal_ordered.c
>> 	 DEP tests/extra-terminating-null.c
>> 	 DEP tests/incbin.c
>> 	 DEP tests/boot-cpuid.c
>> 	 DEP tests/phandle_format.c
>> 	 DEP tests/path-references.c
>> 	 DEP tests/references.c
>> 	 DEP tests/string_escapes.c
>> 	 DEP tests/propname_escapes.c
>> 	 DEP tests/appendprop2.c
>> 	 DEP tests/appendprop1.c
>> 	 DEP tests/del_node.c
>> 	 DEP tests/del_property.c
>> 	 DEP tests/setprop.c
>> 	 DEP tests/set_name.c
>> 	 DEP tests/rw_tree1.c
>> 	 DEP tests/open_pack.c
>> 	 DEP tests/nopulate.c
>> 	 DEP tests/mangle-layout.c
>> 	 DEP tests/move_and_save.c
>> 	 DEP tests/sw_states.c
>> 	 DEP tests/sw_tree1.c
>> 	 DEP tests/nop_node.c
>> 	 DEP tests/nop_property.c
>> 	 DEP tests/setprop_inplace.c
>> 	 DEP tests/stringlist.c
>> 	 DEP tests/addr_size_cells2.c
>> 	 DEP tests/addr_size_cells.c
>> 	 DEP tests/notfound.c
>> 	 DEP tests/sized_cells.c
>> 	 DEP tests/char_literal.c
>> 	 DEP tests/get_alias.c
>> 	 DEP tests/node_offset_by_compatible.c
>> 	 DEP tests/node_check_compatible.c
>> 	 DEP tests/node_offset_by_phandle.c
>> 	 DEP tests/node_offset_by_prop_value.c
>> 	 DEP tests/parent_offset.c
>> 	 DEP tests/supernode_atdepth_offset.c
>> 	 DEP tests/get_path.c
>> 	 DEP tests/get_phandle.c
>> 	 DEP tests/getprop.c
>> 	 DEP tests/get_name.c
>> 	 DEP tests/path_offset.c
>> 	 DEP tests/subnode_offset.c
>> 	 DEP tests/find_property.c
>> 	 DEP tests/root_node.c
>> 	 DEP tests/get_mem_rsv.c
>> 	 DEP libfdt/fdt_overlay.c
>> 	 DEP libfdt/fdt_addresses.c
>> 	 DEP libfdt/fdt_empty_tree.c
>> 	 DEP libfdt/fdt_strerror.c
>> 	 DEP libfdt/fdt_rw.c
>> 	 DEP libfdt/fdt_sw.c
>> 	 DEP libfdt/fdt_wip.c
>> 	 DEP libfdt/fdt_ro.c
>> 	 DEP libfdt/fdt.c
>> 	 DEP util.c
>> 	 DEP fdtoverlay.c
>> 	 DEP fdtput.c
>> 	 DEP fdtget.c
>> 	 DEP fdtdump.c
>> 	 LEX convert-dtsv0-lexer.lex.c
>> make: flex: Command not found
>> 	 DEP srcpos.c
>> 	 BISON dtc-parser.tab.c
>> make: bison: Command not found
>> 	 LEX dtc-lexer.lex.c
>> make: flex: Command not found
>> 	 DEP treesource.c
>> 	 DEP livetree.c
>> 	 DEP fstree.c
>> 	 DEP flattree.c
>> 	 DEP dtc.c
>> 	 DEP data.c
>> 	 DEP checks.c
>> 	CHK version_gen.h
>> 	 LEX convert-dtsv0-lexer.lex.c
>> make: flex: Command not found
>> 	 BISON dtc-parser.tab.c
>> make: bison: Command not found
>> 	 LEX dtc-lexer.lex.c
>> make: flex: Command not found
>> make: *** No rule to make target 'libdtc'.  Stop.
>>
>>
>> so I just used dtc/libfdt/Makefile.libfdt directly and removed the
>> recursion altogether.
> 
> The Makefile setup of dtc/libfdt is a bit weird (mostly to allow for
> Makefile fragments to be used in weird build environments).  But for
> this case you might be better off still doing the recursion, but just
> changing the target from 'all' to 'libfdt'.

Hi David,

that approach (recursing the same way, just building libfdt instead of all) is what I tried first,
however as showcased above the libfdt target seems to cause more stuff to be built than necessary.

Do you think we should change the external module to make the minimal build of libfdt work, instead of removing the recursion?

Thanks,

Claudio


> 
>> Let me know what you think about the idea in general, or if anybody knows what is wrong in the patch that makes patchew complain?
>>
>> Ciao,
>>
>> Claudio
>>
>
David Gibson April 8, 2020, 8:36 a.m. UTC | #7
On Wed, Apr 08, 2020 at 10:08:57AM +0200, Claudio Fontana wrote:
> On 4/8/20 10:00 AM, David Gibson wrote:
> > On Wed, Apr 08, 2020 at 09:52:40AM +0200, Claudio Fontana wrote:
> >> On 4/8/20 3:57 AM, David Gibson wrote:
> >>> On Tue, Apr 07, 2020 at 12:20:15PM +0100, Peter Maydell wrote:
> >>>> On Tue, 7 Apr 2020 at 12:16, Claudio Fontana <cfontana@suse.de> wrote:
> >>>>>
> >>>>> if fdt is required, and the system DTC (libfdt) is not usable,
> >>>>> check for the dtc submodule requirements before trying to build it,
> >>>>> and error out with a helpful message in case the dependencies are not met.
> >>>>>
> >>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
> >>>>
> >>>> Does the dtc module actually need bison/flex, or does it just
> >>>> print an ugly warning about it? We only want the 'libfdt' part
> >>>> of dtc, which doesn't need the parser, we don't need to build
> >>>> the actual dtc compiler.
> >>>
> >>> Assuming we're just invoking "make libfdt" within the submodule,
> >>> rather than "make" which will build dtc as well, then bison / flex
> >>> shouldn't be needed.
> >>>
> >>
> >> Indeed; I just sent a patch that works for me,
> >> tried a few in-tree and out-of-tree full builds, and it seems to work as intended.
> >> patchew complains about docker builds/tests though, although running the same TEST SCRIPTs manually with docker works for me.
> >>
> >> The libfdt target inside dtc/Makefile actually causes more than just libfdt to be built:
> >>
> >> ~/git/qemu/dtc> make libdtc
> >> 	 DEP tests/dumptrees.c
> >> 	 DEP tests/trees.S
> >> 	 DEP tests/testutils.c
> >> 	 DEP tests/value-labels.c
> >> 	 DEP tests/asm_tree_dump.c
> >> 	 DEP tests/truncated_memrsv.c
> >> 	 DEP tests/truncated_string.c
> >> 	 DEP tests/truncated_property.c
> >> 	 DEP tests/check_full.c
> >> 	 DEP tests/check_header.c
> >> 	 DEP tests/check_path.c
> >> 	 DEP tests/overlay_bad_fixup.c
> >> 	 DEP tests/overlay.c
> >> 	 DEP tests/subnode_iterate.c
> >> 	 DEP tests/property_iterate.c
> >> 	 DEP tests/integer-expressions.c
> >> 	 DEP tests/utilfdt_test.c
> >> 	 DEP tests/path_offset_aliases.c
> >> 	 DEP tests/add_subnode_with_nops.c
> >> 	 DEP tests/dtbs_equal_unordered.c
> >> 	 DEP tests/dtb_reverse.c
> >> 	 DEP tests/dtbs_equal_ordered.c
> >> 	 DEP tests/extra-terminating-null.c
> >> 	 DEP tests/incbin.c
> >> 	 DEP tests/boot-cpuid.c
> >> 	 DEP tests/phandle_format.c
> >> 	 DEP tests/path-references.c
> >> 	 DEP tests/references.c
> >> 	 DEP tests/string_escapes.c
> >> 	 DEP tests/propname_escapes.c
> >> 	 DEP tests/appendprop2.c
> >> 	 DEP tests/appendprop1.c
> >> 	 DEP tests/del_node.c
> >> 	 DEP tests/del_property.c
> >> 	 DEP tests/setprop.c
> >> 	 DEP tests/set_name.c
> >> 	 DEP tests/rw_tree1.c
> >> 	 DEP tests/open_pack.c
> >> 	 DEP tests/nopulate.c
> >> 	 DEP tests/mangle-layout.c
> >> 	 DEP tests/move_and_save.c
> >> 	 DEP tests/sw_states.c
> >> 	 DEP tests/sw_tree1.c
> >> 	 DEP tests/nop_node.c
> >> 	 DEP tests/nop_property.c
> >> 	 DEP tests/setprop_inplace.c
> >> 	 DEP tests/stringlist.c
> >> 	 DEP tests/addr_size_cells2.c
> >> 	 DEP tests/addr_size_cells.c
> >> 	 DEP tests/notfound.c
> >> 	 DEP tests/sized_cells.c
> >> 	 DEP tests/char_literal.c
> >> 	 DEP tests/get_alias.c
> >> 	 DEP tests/node_offset_by_compatible.c
> >> 	 DEP tests/node_check_compatible.c
> >> 	 DEP tests/node_offset_by_phandle.c
> >> 	 DEP tests/node_offset_by_prop_value.c
> >> 	 DEP tests/parent_offset.c
> >> 	 DEP tests/supernode_atdepth_offset.c
> >> 	 DEP tests/get_path.c
> >> 	 DEP tests/get_phandle.c
> >> 	 DEP tests/getprop.c
> >> 	 DEP tests/get_name.c
> >> 	 DEP tests/path_offset.c
> >> 	 DEP tests/subnode_offset.c
> >> 	 DEP tests/find_property.c
> >> 	 DEP tests/root_node.c
> >> 	 DEP tests/get_mem_rsv.c
> >> 	 DEP libfdt/fdt_overlay.c
> >> 	 DEP libfdt/fdt_addresses.c
> >> 	 DEP libfdt/fdt_empty_tree.c
> >> 	 DEP libfdt/fdt_strerror.c
> >> 	 DEP libfdt/fdt_rw.c
> >> 	 DEP libfdt/fdt_sw.c
> >> 	 DEP libfdt/fdt_wip.c
> >> 	 DEP libfdt/fdt_ro.c
> >> 	 DEP libfdt/fdt.c
> >> 	 DEP util.c
> >> 	 DEP fdtoverlay.c
> >> 	 DEP fdtput.c
> >> 	 DEP fdtget.c
> >> 	 DEP fdtdump.c
> >> 	 LEX convert-dtsv0-lexer.lex.c
> >> make: flex: Command not found
> >> 	 DEP srcpos.c
> >> 	 BISON dtc-parser.tab.c
> >> make: bison: Command not found
> >> 	 LEX dtc-lexer.lex.c
> >> make: flex: Command not found
> >> 	 DEP treesource.c
> >> 	 DEP livetree.c
> >> 	 DEP fstree.c
> >> 	 DEP flattree.c
> >> 	 DEP dtc.c
> >> 	 DEP data.c
> >> 	 DEP checks.c
> >> 	CHK version_gen.h
> >> 	 LEX convert-dtsv0-lexer.lex.c
> >> make: flex: Command not found
> >> 	 BISON dtc-parser.tab.c
> >> make: bison: Command not found
> >> 	 LEX dtc-lexer.lex.c
> >> make: flex: Command not found
> >> make: *** No rule to make target 'libdtc'.  Stop.
> >>
> >>
> >> so I just used dtc/libfdt/Makefile.libfdt directly and removed the
> >> recursion altogether.
> > 
> > The Makefile setup of dtc/libfdt is a bit weird (mostly to allow for
> > Makefile fragments to be used in weird build environments).  But for
> > this case you might be better off still doing the recursion, but just
> > changing the target from 'all' to 'libfdt'.
> 
> Hi David,
> 
> that approach (recursing the same way, just building libfdt instead
> of all) is what I tried first, however as showcased above the libfdt
> target seems to cause more stuff to be built than necessary.

Ah, right.  I had a look at this in dtc upstream.  It looks like the
problem is that we're always doing dependency generation for
everything, including on the flex and bison generated files.

> Do you think we should change the external module to make the
> minimal build of libfdt work, instead of removing the recursion?

It'd be nice to fix this upstream as well, which would also fix it
here.  Unfortunately, I'm not really sure how to do that.
diff mbox series

Patch

diff --git a/configure b/configure
index 22870f3867..68b95b8e94 100755
--- a/configure
+++ b/configure
@@ -4276,6 +4276,14 @@  EOF
           git_submodules="${git_submodules} dtc"
       fi
       if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
+          for binary in ${BISON:-bison} ${LEX:-flex} ; do
+              if ! has $binary ; then
+                  error_exit "DTC (libfdt) version >= 1.4.2 not present on the system,\n" \
+                             "and using the dtc submodule replacement requires '${binary}'.\n" \
+                             "Please install the DTC (libfdt) devel package,\n" \
+                             "or the required binary '${binary}' to use the dtc submodule instead.\n"
+              fi
+          done
           fdt=git
           mkdir -p dtc
           if [ "$pwd_is_source_path" != "y" ] ; then