Hi timesir –
This is how the build system generates the .d (dependency) files for each of the source files. See
https://github.com/epics-base/epics-base/blob/7.0/configure/CONFIG_COMMON#L135 for the definition.
The HDEPENDS.c is the mechanism to generate these files; these are also in the same file, see
https://github.com/epics-base/epics-base/blob/7.0/configure/CONFIG_COMMON#L378. For example, if HDEPENDS_METHOD = COMP then it uses the C/C++ compiler to generate these files; otherwise it uses mkmf (included in tools)
For certain architectures (e.g. gnu ones), these are used to compile source files, see here:
https://github.com/epics-base/epics-base/blob/7.0/configure/RULES_BUILD#L117 – this will attempt to include all of these .d file and if (as above) HDEPENDS_METHOD = COMP then it will try to generate those .d files by running $(HDEPENDS.c) (a.k.a. the actual
compiler), which will generate both the dependency file and the resulting object file at the same time.
Cheers,
Simon
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of timesir via Tech-talk <tech-talk at aps.anl.gov>
Reply to: timesir <mrlong336 at gmail.com>
Date: Thursday, 25 May 2023 at 16:00
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Subject: makefile question about HDEPENDS
Dear community:
%$(DEP):%.c
@$(RM) $@
$(HDEPENDS.c) $<
How to understand these makefile statement from epics-base/configure/RULES_BUILD file? Especially what's the meaning of HDEPENDS?