Gbuild explanation
David Tardon
dtardon at redhat.com
Wed May 15 21:07:32 PDT 2013
Hi,
On Thu, May 16, 2013 at 01:22:10AM +0200, Mat M wrote:
> Hello
>
> I have a GNU make question, actually:
>
> How this should be read ?
> $(dir $(call gb_AutoInstallLibs_get_target,%)).dir :
> $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
We use rules to automatically create directory hierarchies for file
targets in gbuild. This is the rule for creating the top-level directory
of the AutoInstallLibs class in $(WORKDIR). There is a line like
$(call gb_AutoInstallLibs_get_target,$(1)) :| $(dir $(call gb_AutoInstallLibs_get_target,$(1))).dir
elsewhere in the makefile, that creates the (order-only) dependency.
Note that $(dir $(call gb_AutoInstallLibs_get_target,%)).dir expands to
$(WORKDIR)/AutoInstallLibs/.dir , so this is not a pattern rule. If
there were any hierarchy needed in the directory, the rule would be
accompanied by
$(dir $(call gb_AutoInstallLibs_get_target,%))%/.dir :
$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
, that expands to $(WORKDIR)/AutoInstallLibs/%/.dir . The recipe checks
if the directory (without the .dir suffix) exists and creates it if it
does not.
Last thing, the .dir suffix is a workaround needed for make 3.81, that
does not handle directory rules. Otherwise it could just be
$(dir $(call gb_AutoInstallLibs_get_target,%)) :
mkdir -p $@
D.
More information about the LibreOffice
mailing list