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.
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to