1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-03 06:04:53 +00:00
freebsd-ports/Mk/Uses/magick.mk
Felix Palmen 326005b3bb Mk/Uses/magick.mk: Improve readability
Improve readability by replacing the AT&T-style expansions with some
explicit logic. This also avoids incompatibility with very old make
versions where % in these expansions also matches empty strings.

Approved by:		tcberner (mentor)
Differential Revision:	https://reviews.freebsd.org/D39986
2023-05-09 08:20:49 +02:00

126 lines
3.8 KiB
Makefile

# Handle dependency on ImageMagick
#
# Feature: magick
# Usage: USES=magick:ARGS
# Valid ARGS: [version],[flavor],[kinds]
#
# version The chooseable versions are <none>, 6 and 7.
# USES=magick -- depend on version from DEFAULT_VERSIONS
# USES=magick:6 -- depend on ImageMagick6
# USES=magick:7 -- depend on ImageMagick7
#
# flavor The flavors are <none>, x11 and nox11
# USES=magick -- depend on flavor from DEFAULT_VERSIONS
# USES=magick:x11 -- depend on the x11 flavor
# USES=magick:nox11 -- depend on the nox11 flavor
#
# kinds The dependency kinds are <none>, lib, build, run and test
# USES=magick -- add a LIB_DEPENDS (default)
# USES=magick:lib -- add a LIB_DEPENDS
# USES=magick:build -- add a BUILD_DEPENDS
# USES=magick:run -- add a RUN_DEPENDS
# USES=magick:test -- add a TEST_DEPENDS
# USES=magick:build,run -- add a BUILD_- and RUN_DEPENDS
#
# In short, on a default ports tree without custom DEFAULT_VERSIONS
# USES=magick
# is equivalent to
# USES=magick:7,x11,lib
#
# Make sure to only add arguments strictly needed, as [version] and [flavor]
# will override user configuration in DEFAULT_VERSIONS.
#
# MAINTAINER: tcberner@FreeBSD.org
#
.if ! defined(_INCLUDE_USES_MAGICK_MK)
_INCLUDE_USES_MAGICK_MK= YES
#=== Version selection ===
_magick_versions= 6 7
_magick_version= #
. for _ver in ${_magick_versions:O:u}
. if ${magick_ARGS:M${_ver}}
. if empty(_magick_version)
_magick_version= ${_ver}
. else
IGNORE= Incorrect USES=magick:${magick_ARGS} - multiple versions defined
. endif
. endif
. endfor
# Fallback to the default version
. if empty(_magick_version)
_magick_version= ${IMAGEMAGICK_DEFAULT:C/-.*//}
. endif
. if !${_magick_versions:M${_magick_version}}
IGNORE= Invalid version of ImageMagick: "${_magick_version}"
. endif
#=== Flavor selection ===
_magick_flavors= x11 nox11
_magick_flavor= #
_magick_portflavor= #
_magick_pkgflavor= #
. for _flavor in ${_magick_flavors:O:u}
. if ${magick_ARGS:M${_flavor}}
. if empty(_magick_flavor)
_magick_flavor= ${_flavor}
. else
IGNORE= Incorrect USES=magick:${magick_ARGS} - multiple flavors defined
. endif
. endif
. endfor
# Fallback to the default flavor
. if empty(_magick_flavor) && ${IMAGEMAGICK_DEFAULT:M*-*}
_magick_flavor= ${IMAGEMAGICK_DEFAULT:C/.*-//}
. endif
. if !empty(_magick_flavor)
. if !${_magick_flavors:M${_magick_flavor}}
IGNORE= Invalid flavor of ImageMagick: "${_magick_flavor}"
. else
_magick_portflavor= @${_magick_flavor}
. if ${_magick_flavor:Mnox11}
_magick_pkgflavor= -nox11
. endif
. endif
. endif
#=== Dependency selection ===
_magick_depends= lib build run test
_magick_depend= #
. for _depend in ${_magick_depends:O:u}
. if ${magick_ARGS:M${_depend}}
_magick_depend+= ${_depend}
. endif
. endfor
. if empty(_magick_depend)
_magick_depend= lib
. endif
#=== Check for invalid arguments ===
_magick_unknown_args:= ${magick_ARGS:N${_magick_version}:N${_magick_flavor}}
. for _depend in ${_magick_depend}
_magick_unknown_args:= ${_magick_unknown_args:N${_depend}}
. endfor
. if !empty(_magick_unknown_args)
IGNORE= Invalid USES=magick - unsupported argument(s): ${_magick_unknown_args}
. endif
#=== Dependency setup ===
_MAGICK_PORT= graphics/ImageMagick${_magick_version}${_magick_portflavor}
_MAGICK_LIB= libMagick++-${_magick_version}.so
_MAGICK_PKG= ImageMagick${_magick_version}${_magick_pkgflavor}
_MAGICK_BUILD_DEPENDS= ${_MAGICK_PKG}>=${_magick_version}:${_MAGICK_PORT}
_MAGICK_LIB_DEPENDS= ${_MAGICK_LIB}:${_MAGICK_PORT}
_MAGICK_RUN_DEPENDS= ${_MAGICK_PKG}>=${_magick_version}:${_MAGICK_PORT}
_MAGICK_TEST_DEPENDS= ${_MAGICK_PKG}>=${_magick_version}:${_MAGICK_PORT}
#=== Actual dependency creation ===
. for _kind in ${_magick_depend}
${_kind:tu}_DEPENDS+= ${_MAGICK_${_kind:tu}_DEPENDS}
. endfor
.endif