Re: suppress "target '*' given more than once in the same rule"

Renaud Pacalet <[email protected]> Wed, 26 Jun 2024 15:38:53 +0200
Newsgroups gmane.comp.gnu.make.general
Organization Telecom ParisTech
Message-ID <[email protected]>

On 6/25/24 18:03, Belliveau, Fran - 0666 - MITLL wrote:
> I have a setup where I use include directives to access makefile content used by multiple “make” situations throughout a large project.
> 
> As I try to replace a bunch of (heavily simplified) things like:
> 
> FOO_DIR?=fd
> BAH_DIR?=bd
> ####
> $(FOO_DIR)/foo: $(F_HDRS)
> mkdir -p $(FOO_DIR)
> genF $@
> 
> $(BAH_DIR)/foo: $(B_HDRS)
> mkdir -p $(BAH_DIR)
> genB $@
> 
> with a something like
> 
> ####
> $(FOO_DIR) $(BAH_DIR):
> mkdir -p $@
> 
> $(FOO_DIR)/foo: $(HDRS) | $(FOO_DIR)
> gen $@
> 
> $(BAH_DIR)/bah: $(B_HDRS) | $(BAH_DIR)
> genB $@
> 
> I run into “make complaints” when multiple directory variables actually point to the same directory.
> This may just be a warning, but it looks like an error to those who do not know what is going on.
> 
> I am wondering if there is a way to suppress this with a directive of some sort?
> Is there a function call I might be able to make like $(unique $(FOO_DIR) $(BAH_DIR)): ?

$(sort $(FOO_DIR) $(BAH_DIR)); it sorts (in your case you don't care) and removes duplicates.

> 
> 
> Francis Belliveau
> Consultant
> Lincoln Laboratory, Massachusetts Institute of Technology
> 244 Wood Street
> Lexington, MA 02421-6426
> 
> 
> 

-- 
Renaud Pacalet
Télécom Paris
Campus SophiaTech
450 Route des Chappes, CS 50193
06904 Biot Sophia Antipolis cedex, FRANCE
Tel : +33 (0) 4 9300 8402
Web : http://www.telecom-paris.fr/
OpenPGP_0xA55E9B3980CD0D02.asc (application/pgp-keys, 4.4 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

xjMEZcoZWhYJKwYBBAHaRw8BAQdA21/OLDsoU1YDZNsczfN1xkcesR867+KUYJ5t
/DXb4F3NMFJlbmF1ZCBQYWNhbGV0IDxyZW5hdWQucGFjYWxldEB0ZWxlY29tLXBh
cmlzLmZyPsKcBBMWCABEAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4H
AheAFiEEFh6sW3UDvmOFxilnpV6bOYDNDQIFAmXKPEICGQEACgkQpV6bOYDNDQIo
7QD9ErQrtlVKzq/HsY1WuB5Rx7X4p1GUm9AtEw4lV++Ejh4BALwNAFw1HZD4vvOg
bByEgstNpBJlitUhSRRSndmFOyYPwpwEExYIAEQCGwMFCQPCZwAFCwkIBwICIgIG
FQoJCAsCBBYCAwECHgcCF4AWIQQWHqxbdQO+Y4XGKWelXps5gM0NAgUCZco5qAIZ
AQAKCRClXps5gM0NAnjdAQDeesXoKXQsYa/oQwn3ZnqgsfQWqM7O05qhQClxRBzg
ggD+PBKT+5Rvl+NPvrKog/CcxBip6UziEPfSO+qINsjjCAvCmQQTFggAQRYhBBYe
rFt1A75jhcYpZ6VemzmAzQ0CBQJlyhlaAhsDBQkDwmcABQsJCAcCAiICBhUKCQgL
AgQWAgMBAh4HAheAAAoJEKVemzmAzQ0COy4A/2lm+2vEHsfwZfK3s5Qq78Hg2GGl
KLe/yDt4RME3f/r3AP0Rul8/j1AvCZYH2ZBzAScP8vn763VkYHskIEd6/eEQBs0p
UmVuYXVkIFBhY2FsZXQgPHBhY2FsZXRAdGVsZWNvbS1wYXJpcy5mcj7CmQQTFggA
QRYhBBYerFt1A75jhcYpZ6VemzmAzQ0CBQJlyhqVAhsDBQkDwmcABQsJCAcCAiIC
BhUKCQgLAgQWAgMBAh4HAheAAAoJEKVemzmAzQ0Cr+kA/2P0pA6EAhtZhXENxarm
VtUmcO9HpcsLEUSJDLlC+v64AP0bBEn4y2PLuZlcSwVw35H/wjEQYIcS5KK6ey3T
pun8Cs00UmVuYXVkIFBhY2FsZXQgPHJlbmF1ZC5wYWNhbGV0QHRlbGVjb20tcGFy
aXN0ZWNoLmZyPsKZBBMWCABBFiEEFh6sW3UDvmOFxilnpV6bOYDNDQIFAmXKGkEC
GwMFCQPCZwAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQpV6bOYDNDQI4
ogD8CrlDv/nIFwFeeZTGKlGpX6cj1IJnV6/0JemcUUmA+6cA/RBT7A7VRSHiHcb5
l5XyTmXb06mhJvJk5GU9CVxBWkMNzSdSZW5hdWQgUGFjYWxldCA8cmVuYXVkLnBh
Y2FsZXRAZW5zdC5mcj7CmQQTFggAQRYhBBYerFt1A75jhcYpZ6VemzmAzQ0CBQJl
yhpcAhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEKVemzmA
zQ0C0fABANBfc/Ahjh124ktHBiLSTVnGf7QGFuwNesl+nAm+s52RAQC2/Hl35cQr
yZdl6jhh+f9bpO/WmZgD9hpuLSPwRy9VC80gUmVuYXVkIFBhY2FsZXQgPHBhY2Fs
ZXRAZW5zdC5mcj7CmQQTFggAQRYhBBYerFt1A75jhcYpZ6VemzmAzQ0CBQJlyhpv
AhsDBQkDwmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEKVemzmAzQ0C
eJ8A/A3sdwJyVs02kwfnBuWiwQu7AjtKxBjV3XuRRXDrWVNzAP9TOYojryw/S/rO
kWs5fC2sk0nhfTFxUNrHShZZJAsqDs0tUmVuYXVkIFBhY2FsZXQgPHBhY2FsZXRA
dGVsZWNvbS1wYXJpc3RlY2guZnI+wpkEExYIAEEWIQQWHqxbdQO+Y4XGKWelXps5
gM0NAgUCZcoahAIbAwUJA8JnAAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAK
CRClXps5gM0NAinBAQCL0fcfsPNK0lxwgVO9yLe+62CH6IstlyDT0tT+jYRZjgEA
sZsUvanMkFPYJ+aVjkg10WlquoHHuIdQjeCNclJZjA/OOARlyhlaEgorBgEEAZdV
AQUBAQdAUVP9IWk2K8D0klnVrRDtgOVFYbGa6zCSgpnl/6ShjBcDAQgHwn4EGBYI
ACYWIQQWHqxbdQO+Y4XGKWelXps5gM0NAgUCZcoZWgIbDAUJA8JnAAAKCRClXps5
gM0NAnO1AQC48Q5PrQxl9FnPgvDjRksUDJq5lrC8NM6g0tqN6m1ssAD9HdDLx0Hn
ftRfz/vjts1KhR9Cd9wgOaAzaPwGtru/GgbOMwRlyx9VFgkrBgEEAdpHDwEBB0BN
O+WUxt6u/Rx/+tx2UEqnYxunUjCJB+W/g7pWh1x2F8LANQQYFggAJhYhBBYerFt1
A75jhcYpZ6VemzmAzQ0CBQJlyx9VAhsiBQkDwmcAAIEJEKVemzmAzQ0CdiAEGRYI
AB0WIQQhdJsBC4Z9kK0VGNKSbM4Ohl6GaAUCZcsfVQAKCRCSbM4Ohl6GaN7fAP9o
RMcB4A80VQHL9bcqdRabBzBtxnZD813PnPeBTSBllQEAtFq2s4aRvggd3SLghQwP
wgbjqtfTw8/HHdmKPKqSkQgGdwEAxLOanREsHCbzmTaEigLWj/DD0QzCOJ4VoB5b
1lhLUCcBAPlcjyju2JGOkmsbCn8a7pJYMtkLBurdF/DSZFAKX4oIzjMEZcsfrRYJ
KwYBBAHaRw8BAQdA21/OLDsoU1YDZNsczfN1xkcesR867+KUYJ5t/DXb4F3CwDUE
GBYIACYWIQQWHqxbdQO+Y4XGKWelXps5gM0NAgUCZcsfrQIbIgUJA8JnAACBCRCl
Xps5gM0NAnYgBBkWCAAdFiEERug3OO69++SUffJ55a5xTPh04ocFAmXLH60ACgkQ
5a5xTPh04ocAHAEA07FZv56pun4jurx7FDwMO2J0BVIVriGQ1rV18jhl8DkBAJfE
sgTo4D5GhkexaPgU/rbpmBP34Gx0pmcOgqAlvZIOOeYA/0S9E0nZW0LzJ26qdjoC
laueT/I8v9fwgyW77QxATRdhAQCAoC9TPxq98U4tmTcDyx65Rsr1oAGP1hSIXwAY
FqTVDc4zBGXLH/EWCSsGAQQB2kcPAQEHQG09pMJnr9gWuOKHIRXXqH2fo8wWRlzc
y+VIaCY3X0/UwsA1BBgWCAAmFiEEFh6sW3UDvmOFxilnpV6bOYDNDQIFAmXLH/EC
GyIFCQPCZwAAgQkQpV6bOYDNDQJ2IAQZFggAHRYhBO+4fqCiX4eRQ6qA6D4QlILR
aP84BQJlyx/xAAoJED4QlILRaP84ELUA/3kQMnKtzuw/PiYkejVTlxIquEW1GgXZ
Eri0ujUvKdKSAP9IU7SYbFiZqAHL+BMpuuQGMck5C8YrCd0YeDfbVY59Bo/+AQCq
4gfrNUYOuqFRcNe1Bq4WCV+gtp0Xdu+NbylicU4jxwD9GdXCnMSuYvLXaxNO87wi
UhXk7eBBq399/5ZYaWpJ0AjOMwRlyyA0FgkrBgEEAdpHDwEBB0DP6CP4fJoqqOOr
Pbr2WVbrx2GDvVH6dHwjnw2sixLMBsLANQQYFggAJhYhBBYerFt1A75jhcYpZ6Ve
mzmAzQ0CBQJlyyA0AhsiBQkDwmcAAIEJEKVemzmAzQ0CdiAEGRYIAB0WIQQkHmPj
fSlGj2VERgPefx871uUc4QUCZcsgNAAKCRDefx871uUc4Z/GAQCn0ngUWZkT/Nof
QyExuOGMQbI0sgTLPYuEXc5JIinMMwD/VSkOPUJ7SkiiBVH2iRABIWV+XZZzkQwI
Lz1Twubx5g/VEAD/dqbK5/qos6TiKolI3NdbP9gMKhIGDKpEQN18i5bdSPwA/i7w
4eLYo6ATg1VzuGODqjeqegKBje9j5z6gwTb9BEIKzjMEZczRWhYJKwYBBAHaRw8B
AQdATT7YsFioTAiqSSSAV//902EVJhBAGyiRYN1467iD9WzCwDUEGBYIACYWIQQW
HqxbdQO+Y4XGKWelXps5gM0NAgUCZczRWgIbIgUJA8JnAACBCRClXps5gM0NAnYg
BBkWCAAdFiEEOuiMEJUWtZJaWYie5VSzsl5U/wEFAmXM0VoACgkQ5VSzsl5U/wF3
/AEAxIHNkBvAFovvcLGPUkr7CtRY46C36A8qQnDnJUm9Li0BALwQyR0F8tEShW6g
HNSsYLAkGusFwUUBaJBhhdmu64oKJu8BALuiRXcCuAjGFLSee8QevTCA6cOrNUTL
T3mmwuyomk3tAP4ljM2x3uuMmSSSCW4MOV01+LHpU51MloQQZZjkWzDGCw==
=5U4Z
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 236 B)
-----BEGIN PGP SIGNATURE-----

wnsEABYIACMWIQQ66IwQlRa1klpZiJ7lVLOyXlT/AQUCZnwZ7QUDAAAAAAAKCRDlVLOyXlT/AR6+
AP41CDhd99JIhKDR2lLFZl5OriimBckqw4h9OvYVcAX+egEA3Kuj6+ZP9MzHwAVkl+vwb/ntCJvs
9q+DqOxoM306mgs=
=I0MM
-----END PGP SIGNATURE-----