pkgsrc/mk/tools/perl.mk
rillig 10f1774814 mk/tools/perl.mk: allow to silence the USE_TOOLS+=perl warning
Packages that don't declare USE_TOOLS+=perl and whose configure script
invokes perl produce a warning.

Usually warnings are ignored, but they can also be configured as errors,
for example during a strict bulk build.  In this situation it is
necessary to override the default behavior of the perl tool to fail
silently.  Up to now, defining both TOOLS_BROKEN+=perl and
TOOLS_FAIL+=perl produced a duplicate make target.

To handle this situation, let TOOLS_BROKEN+=perl take precedence over
TOOLS_FAIL+=perl.  This is much easier than finding out in each case how
to disable the perl check in the configure script, which is most often
done by adding any of the following to CONFIGURE_ENV: PERL=#none,
ac_cv_prog_PERL=#none, ac_cv_path_PERL=#none.
2020-05-10 06:05:35 +00:00

69 lines
2.6 KiB
Makefile

# $NetBSD: perl.mk,v 1.26 2020/05/10 06:05:35 rillig Exp $
#
# Copyright (c) 2005 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by Johnny C. Lam.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# Packages that need perl as a tool should:
#
# USE_TOOLS+= perl # (or perl:run)
#
# Otherwise they get a warning whenever the perl tool is used, usually in
# the configure phase. To suppress this warning in case perl is not
# actually needed:
#
# TOOLS_BROKEN+= perl
#
# Keywords: perl USE_TOOLS
.if defined(_USE_TOOLS) && !empty(_USE_TOOLS:Mperl)
#
# Define PERL5_* variables that locate the site directories for
# ${PERL5}. These variables depend on PERL5 being properly defined
# and existing on the filesystem.
#
. include "../../lang/perl5/vars.mk"
.elif !${TOOLS_BROKEN:U:Mperl}
#
# If a package doesn't explicitly say it uses perl, then create a "broken"
# perl in the tools directory.
#
TOOLS_FAIL+= perl
TOOLS_PATH.perl= ${TOOLS_CMD.perl}
#
# Some packages want the path to the perl tool, even if they don't have
# dependency on perl, e.g. devel/cvs.
#
. if defined(TOOLS_PLATFORM.perl) && !empty(TOOLS_PLATFORM.perl)
TOOLS_${_TOOLS_VARNAME.perl}?= ${TOOLS_PLATFORM.perl}
. else
TOOLS_${_TOOLS_VARNAME.perl}?= ${LOCALBASE}/bin/perl
. endif
. if !defined(${_TOOLS_VARNAME.perl})
${_TOOLS_VARNAME.perl}?= ${TOOLS_${_TOOLS_VARNAME.perl}}
. endif
.endif