On Sat, 2 Oct 2021 at 21:27, Quentin Monnet <quentin@xxxxxxxxxxxxx> wrote: > > On Sat, 2 Oct 2021 at 00:20, Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > > > On Fri, Oct 1, 2021 at 4:09 AM Quentin Monnet <quentin@xxxxxxxxxxxxx> wrote: > > > > > > API headers from libbpf should not be accessed directly from the > > > library's source directory. Instead, they should be exported with "make > > > install_headers". Let's make sure that bpf/preload/iterators/Makefile > > > installs the headers properly when building. > > > > > > > -$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT) > > > +$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) \ > > > + | $(LIBBPF_OUTPUT) $(LIBBPF_INCLUDE) > > > > Would it make sense for libbpf's Makefile to create include and output > > directories on its own? We wouldn't need to have these order-only > > dependencies everywhere, right? > > Good point, I'll have a look at it. > Quentin So libbpf already creates the include (and parent $(DESTDIR)) directory, so I can get rid of the related dependencies. But I don't see an easy solution for the output directory for the object files. The issue is that libbpf's Makefile includes tools/scripts/Makefile.include, which checks $(OUTPUT) and errors out if the directory does not exist. This prevents us from creating the directory as part of the regular targets. We could create it unconditionally before running any target, but it's ugly; and I don't see any simple workaround. So I'll remove the deps on $(LIBBPF_INCLUDE) and keep the ones on $(LIBBPF_OUTPUT).