summaryrefslogtreecommitdiff
path: root/Mk/Uses/mysql.mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk/Uses/mysql.mk')
-rw-r--r--Mk/Uses/mysql.mk136
1 files changed, 136 insertions, 0 deletions
diff --git a/Mk/Uses/mysql.mk b/Mk/Uses/mysql.mk
new file mode 100644
index 000000000000..b5e8549232ef
--- /dev/null
+++ b/Mk/Uses/mysql.mk
@@ -0,0 +1,136 @@
+# $FreeBSD$
+#
+# Provide support for MySQL
+# Feature: mysql
+# Usage: USES=mysql or USES=mysql:args
+# Valid ARGS: <version>, server, embedded
+#
+# version If no version is given (by the maintainer via the port), try to
+# find the currently installed version. Fall back to default if
+# necessary (MySQL-5.6 = 56).
+# server/embedded
+# Depend on the server at run/build time. If none of these is
+# set, depends on the client.
+#
+# IGNORE_WITH_MYSQL
+# This variable can be defined if the ports does not support one
+# or more versions of MySQL.
+# WITH_MYSQL_VER
+# User defined variable to set MySQL version.
+# MYSQL_VER
+# Detected MySQL version.
+#
+# MAINTAINER: ports@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_MYSQL_MK)
+_INCLUDE_USES_MYSQL_MK= yes
+
+.include "${PORTSDIR}/Mk/bsd.default-versions.mk"
+
+.if !empty(mysql_ARGS)
+.undef _WANT_MYSQL_VER
+.undef _WANT_MYSQL_SERVER
+.undef _WANT_MYSQL_EMBEDDED
+_MYSQL_ARGS= ${mysql_ARGS:S/,/ /g}
+.if ${_MYSQL_ARGS:Mserver}
+_WANT_MYSQL_SERVER= yes
+_MYSQL_ARGS:= ${_MYSQL_ARGS:Nserver}
+.endif
+.if ${_MYSQL_ARGS:Membedded}
+_WANT_MYSQL_EMBEDDED= yes
+_MYSQL_ARGS:= ${_MYSQL_ARGS:Nembedded}
+.endif
+
+# Port requested a version
+.if !empty(_MYSQL_ARGS)
+_WANT_MYSQL_VER= ${_MYSQL_ARGS}
+.endif
+.endif # !empty(mysql_ARGS)
+
+.if defined(DEFAULT_MYSQL_VER)
+WARNING+= "DEFAULT_MYSQL_VER is defined, consider using DEFAULT_VERSIONS=mysql=${DEFAULT_MYSQL_VER} instead"
+.endif
+
+DEFAULT_MYSQL_VER?= ${MYSQL_DEFAULT:S/.//}
+# MySQL client version currently supported.
+# When adding a version, please keep the comment in
+# Mk/bsd.default-versions.mk in sync.
+MYSQL51_LIBVER= 16
+MYSQL55_LIBVER= 18
+MYSQL55m_LIBVER= 18
+MYSQL55p_LIBVER= 18
+MYSQL56_LIBVER= 18
+MYSQL56p_LIBVER= 18
+MYSQL57_LIBVER= 20
+MYSQL100m_LIBVER= 18
+MYSQL101m_LIBVER= 18
+
+# Setting/finding MySQL version we want.
+.if exists(${LOCALBASE}/bin/mysql)
+_MYSQL!= ${LOCALBASE}/bin/mysql --version | ${SED} -e 's/.*Distrib \([0-9]\{1,2\}\)\.\([0-9]*\).*/\1\2/'
+_PERCONA!= ${LOCALBASE}/bin/mysql --version | ${GREP} Percona | wc -l
+_MARIADB!= ${LOCALBASE}/bin/mysql --version | ${GREP} MariaDB | wc -l
+
+.if ${_PERCONA} == 1
+_MYSQL_VER= ${_MYSQL}p
+.elif ${_MARIADB} == 1
+_MYSQL_VER= ${_MYSQL}m
+.else
+_MYSQL_VER= ${_MYSQL}
+.endif
+.endif
+
+.if defined(_WANT_MYSQL_VER)
+.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER} != ${_WANT_MYSQL_VER}
+IGNORE= cannot install: the port wants mysql${_WANT_MYSQL_VER}-client and you try to install mysql${WITH_MYSQL_VER}-client
+.endif
+MYSQL_VER= ${_WANT_MYSQL_VER}
+.elif defined(WITH_MYSQL_VER)
+MYSQL_VER= ${WITH_MYSQL_VER}
+.else
+.if defined(_MYSQL_VER)
+MYSQL_VER= ${_MYSQL_VER}
+.else
+MYSQL_VER= ${DEFAULT_MYSQL_VER}
+.endif
+.endif # _WANT_MYSQL_VER
+
+.if defined(_MYSQL_VER)
+.if ${_MYSQL_VER} != ${MYSQL_VER}
+IGNORE= cannot install: MySQL versions mismatch: mysql${_MYSQL_VER}-client is installed and wanted version is mysql${MYSQL_VER}-client
+.endif
+.endif
+
+.if (${MYSQL_VER:C/[0-9]*//} == "m")
+_MYSQL_FLAVOUR= mariadb
+.elif (${MYSQL_VER:C/[0-9]*//} == "p")
+_MYSQL_FLAVOUR= percona
+.else
+_MYSQL_FLAVOUR= mysql
+.endif
+
+_MYSQL_CLIENT= databases/${_MYSQL_FLAVOUR}${MYSQL_VER:C/[mp]//}-client
+_MYSQL_SERVER= databases/${_MYSQL_FLAVOUR}${MYSQL_VER:C/[mp]//}-server
+
+# And now we are checking if we can use it
+.if defined(MYSQL${MYSQL_VER}_LIBVER)
+.if defined(IGNORE_WITH_MYSQL)
+. for VER in ${IGNORE_WITH_MYSQL}
+. if (${MYSQL_VER} == "${VER}")
+IGNORE= cannot install: does not work with MySQL version ${MYSQL_VER} (MySQL ${IGNORE_WITH_MYSQL} not supported)
+. endif
+. endfor
+.endif # IGNORE_WITH_MYSQL
+.if defined(_WANT_MYSQL_SERVER) || defined(_WANT_MYSQL_EMBEDDED)
+RUN_DEPENDS+= ${LOCALBASE}/libexec/mysqld:${_MYSQL_SERVER}
+.if defined(_WANT_MYSQL_EMBEDDED)
+BUILD_DEPENDS+= ${LOCALBASE}/lib/mysql/libmysqld.a:${_MYSQL_SERVER}
+.endif
+.else
+LIB_DEPENDS+= libmysqlclient.so.${MYSQL${MYSQL_VER}_LIBVER}:${_MYSQL_CLIENT}
+.endif
+.else
+IGNORE= cannot install: unknown MySQL version: ${MYSQL_VER}
+.endif # Check for correct libs
+
+.endif