diff options
Diffstat (limited to 'Mk')
-rw-r--r-- | Mk/bsd.apache.mk | 354 | ||||
-rw-r--r-- | Mk/bsd.database.mk | 231 | ||||
-rw-r--r-- | Mk/bsd.java.mk | 9 | ||||
-rw-r--r-- | Mk/bsd.port.mk | 674 | ||||
-rw-r--r-- | Mk/bsd.port.subdir.mk | 2 | ||||
-rw-r--r-- | Mk/bsd.tcl.mk | 145 |
6 files changed, 1090 insertions, 325 deletions
diff --git a/Mk/bsd.apache.mk b/Mk/bsd.apache.mk new file mode 100644 index 000000000000..5f7c906b1412 --- /dev/null +++ b/Mk/bsd.apache.mk @@ -0,0 +1,354 @@ +#-*- mode: makefile; tab-width: 4; -*- +# ex:ts=4 +# +# $FreeBSD$ +# +# bsd.apache.mk - Apache related macros. +# Author: Clement Laforet <clement@FreeBSD.org> +# +# Please view me with 4 column tabs! + +########################################################################## +# +# Variables definition +# USE_APACHE: Call this script. Values can be: +# <version>: 1.3/13/2.0/20/2.1/1.3+/2.0+/2.1+ +# common*: common13, common20 and common21 +# +# +# +.if defined(APACHE_COMPAT) +USE_APACHE=yes +.endif + +# Print warnings +_ERROR_MSG= : Error from bsd.apache.mk. +APACHE_SUPPORTED_VERSION= 13 20 21 +.if ${USE_APACHE:Mcommon*} != "" +AP_PORT_IS_SERVER= YES +.elif ${USE_APACHE:L} == apr +APR_DEPS= YES +.elif ${USE_APACHE:C/\.//:C/\+//:M[12][310]} != "" +AP_PORT_IS_MODULE= YES + +#### for backward compatibility +.elif ${USE_APACHE:L} == yes +. if defined(WITH_APACHE2) +APACHE_PORT?= www/apache2 +. else +APACHE_PORT?= www/apache13 +. endif +APXS?= ${LOCALBASE}/sbin/apxs +.if !defined(APACHE_COMPAT) +BUILD_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT} +RUN_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT} +.endif +#### End of backward compatibility + +.else +IGNORE= ${_ERROR_MSG} Illegal use of USE_APACHE +.endif + +.if defined(AP_PORT_IS_SERVER) +# For slave ports: +.if defined(SLAVE_DESIGNED_FOR) && ${PORTVERSION} != ${SLAVE_DESIGNED_FOR} +IGNORE= "Sorry, ${SLAVENAME} and ${PORTNAME} versions are out of sync" +.endif + +.if defined(SLAVE_PORT_MODULES) +DEFAULT_MODULES_CATEGORIES+= SLAVE_PORT +ALL_MODULES_CATEGORIES+= SLAVE_PORT +.endif + +# Module selection +.for category in ${DEFAULT_MODULES_CATEGORIES} +DEFAULT_MODULES+= ${${category}_MODULES} +WITH_${category}_MODULES= YES +.endfor + +.for category in ${ALL_MODULES_CATEGORIES} +AVAILABLE_MODULES+= ${${category}_MODULES} +.endfor + +# Setting "@comment " as default. +.for module in ${AVAILABLE_MODULES} +${module}_PLIST_SUB= "@comment " +.endfor + +# Configure +# dirty hacks to make sure all modules are disabled before we select them +.if ${USE_APACHE} == common13 +CONFIGURE_ARGS+= --disable-module="all" +.elif ${USE_APACHE} == common20 +CONFIGURE_ARGS+= --disable-access --disable-auth \ + --disable-charset-lite --disable-include \ + --disable-log-config --disable-env --disable-setenvif \ + --disable-mime --disable-status --disable-autoindex \ + --disable-asis --disable-cgid --disable-cgi \ + --disable-negotiation --disable-dir --disable-imap \ + --disable-actions --disable-userdir --disable-alias +.elif ${USE_APACHE} == common21 +CONFIGURE_ARGS+= --disable-authn-file --disable-authn-default \ + --disable-authz-host --disable-authz-groupfile \ + --disable-authz-user --disable-authz-default \ + --disable-auth-basic --disable-charset-lite \ + --disable-include --disable-log-config --disable-env \ + --disable-setenvif --disable-mime --disable-status \ + --disable-autoindex --disable-asis --disable-cgid \ + --disable-cgi --disable-negotiation --disable-dir \ + --disable-imagemap --disable-actions --disable-userdir \ + --disable-alias +.endif + +.if defined(WITH_MODULES) +_APACHE_MODULES+= ${WITH_MODULES} +.else +.for category in ${ALL_MODULES_CATEGORIES} +.if defined (WITHOUT_${category}_MODULES) || defined (WITH_CUSTOM_${category}) +. if defined(WITH_${category}_MODULES}) +. undef WITH_${category}_MODULES +. endif +. if defined (WITH_CUSTOM_${category}) +_APACHE_MODULES+= ${WITH_CUSTOM_${category}} +. endif +.elif defined(WITH_${category}_MODULES) +_APACHE_MODULES+= ${${category}_MODULES} +.endif +.endfor +. if defined(WITH_EXTRA_MODULES) +_APACHE_MODULES+= ${WITH_EXTRA_MODULES} +. endif +.endif + +.if !defined(WITH_STATIC_APACHE) +. if ${USE_APACHE:Mcommon2*} != "" +# FYI +#DYNAMIC_MODULES= so +CONFIGURE_ARGS+= --enable-so +. endif +.else +. if ${USE_APACHE:Mcommon2*} != "" +CONFIGURE_ARGS+= --disable-so +. endif +WITH_ALL_STATIC_MODULES= YES +.endif + +.if defined(WITH_SUEXEC) || defined(WITH_SUEXEC_MODULES) +.if ${USE_APACHE} == common13 +SUEXEC_CONFARGS= suexec +CONFIGURE_ARGS+= --enable-suexec +.elif ${USE_APACHE:Mcommon2*} != "" +SUEXEC_CONFARGS= with-suexec +.endif + +# From now we're defaulting to apache 2.* +SUEXEC_DOCROOT?= ${PREFIX}/www/data +SUEXEC_USERDIR?= public_html +SUEXEC_SAFEPATH?= ${PREFIX}/bin:${LOCALBASE}/bin:/usr/bin:/bin +SUEXEC_LOGFILE?= /var/log/httpd-suexec.log +SUEXEC_UIDMIN?= 1000 +SUEXEC_GIDMIN?= 1000 +SUEXEC_CALLER?= ${WWWOWN} +_APACHE_MODULES+= ${SUEXEC_MODULES} +CONFIGURE_ARGS+= --${SUEXEC_CONFARGS}-caller=${SUEXEC_CALLER} \ + --${SUEXEC_CONFARGS}-uidmin=${SUEXEC_UIDMIN} \ + --${SUEXEC_CONFARGS}-gidmin=${SUEXEC_GIDMIN} \ + --${SUEXEC_CONFARGS}-userdir="${SUEXEC_USERDIR}" \ + --${SUEXEC_CONFARGS}-docroot="${SUEXEC_DOCROOT}" \ + --${SUEXEC_CONFARGS}-safepath="${SUEXEC_SAFEPATH}" \ + --${SUEXEC_CONFARGS}-logfile="${SUEXEC_LOGFILE}" \ + --${SUEXEC_CONFARGS}-bin="${PREFIX}/sbin/suexec" +. if defined(WITH_SUEXEC_UMASK) +CONFIGURE_ARGS+= --${SUEXEC_CONFARGS}-umask=${WITH_SUEXEC_UMASK} +. endif +.endif + +.if !defined(WITHOUT_MODULES) +APACHE_MODULES= ${_APACHE_MODULES} +.else +APACHE_MODULES!= \ + for module in ${_APACHE_MODULES}; do \ + ${ECHO_CMD} ${WITHOUT_MODULES} | ${GREP} -wq $${module} 2> /dev/null || \ + ${ECHO_CMD} $${module}; \ + done +.endif + +.if defined(WITH_STATIC_MODULES) +. if ${USE_APACHE} == common13 +STATIC_MODULE_CONFARG= --enable-module=$${module} +DSO_MODULE_CONFARG= --enable-module=$${module} --enable-shared=$${module} +. else +STATIC_MODULE_CONFARG= --enable-$${module} +DSO_MODULE_CONFARG= --enable-$${module}=shared +.endif +_CONFIGURE_ARGS!= \ + for module in ${APACHE_MODULES} ; do \ + ${ECHO_CMD} ${WITH_STATIC_MODULES} | \ + ${GREP} -wq $${module} 2> /dev/null ; \ + if [ "$${?}" = "0" ] ; then \ + ${ECHO_CMD} "${STATIC_MODULE_CONFARG}"; \ + else \ + ${ECHO_CMD} "${DSO_MODULE_CONFARG}"; \ + fi; done +CONFIGURE_ARGS+= ${_CONFIGURE_ARGS} +.elif defined(WITH_STATIC_APACHE) || defined(WITH_ALL_STATIC_MODULES) +WITH_STATIC_MODULES= ${APACHE_MODULES} +. if ${USE_APACHE} == common13 +. for module in ${APACHE_MODULES} +CONFIGURE_ARGS+= --enable-module=${module} +. endfor +. else +CONFIGURE_ARGS+= --enable-modules="${APACHE_MODULES}" +. endif +.else +. if ${USE_APACHE} == common13 +. for module in ${APACHE_MODULES} +CONFIGURE_ARGS+= --enable-module=${module} --enable-shared=${module} +. endfor +. else +CONFIGURE_ARGS+= --enable-mods-shared="${APACHE_MODULES}" +. endif +.endif + +.if defined(WITH_STATIC_MODULES) +_SHARED_MODULES!= \ + for module in ${APACHE_MODULES} ; do \ + ${ECHO_CMD} ${WITH_STATIC_MODULES} | ${GREP} -wq $${module} 2> /dev/null || \ + ${ECHO_CMD} $${module}; \ + done +SHARED_MODULES= ${_SHARED_MODULES} +.elif !defined(WITH_ALL_STATIC_MODULES) +SHARED_MODULES= ${APACHE_MODULES} +.endif + +. for module in ${SHARED_MODULES} +${module}_PLIST_SUB= "" +. endfor + +.for module in ${AVAILABLE_MODULES} +PLIST_SUB+= MOD_${module:U}=${${module}_PLIST_SUB} +.endfor +####End of PORT_IS_SERVER #### + +.elif defined(APR_DEPS) +IGNORE= ${_ERROR_MSG} apr support is not yet implemented + +.elif defined(AP_PORT_IS_MODULE) +AP_VERSION= ${USE_APACHE:C/\.//} + +APXS?= ${LOCALBASE}/sbin/apxs +HTTPD?= ${LOCALBASE}/sbin/httpd + +MODULENAME?= ${PORTNAME} +SHORTMODNAME?= ${MODULENAME:S/mod_//} +SRC_FILE?= ${MODULENAME}.c +OVERRIDABLE_VARS= SRC_FILE MODULENAME SHORTMODNAME WRKSRC \ + PKGNAMESUFFIX + +.if exists(${HTTPD}) +AP_CUR_VERSION!= ${HTTPD} -V | ${SED} -ne 's/^Server version: Apache\/\([0-9]\)\.\([0-9]*\).*/\1\2/p' +. if ${AP_CUR_VERSION} > 13 +APACHE_MPM!= ${APXS} -q MPM_NAME +. endif +.elif defined(APACHE_PORT) +AP_CUR_VERSION!= ${ECHO_CMD} ${APACHE_PORT} | ${SED} -ne 's,.*/apache\([0-9]*\).*,\1,p' +.endif + +.if defined(AP_CUR_VERSION) +VERSION_CHECK!= eval `${ECHO_CMD} "[ ${AP_VERSION} -eq ${AP_CUR_VERSION} ]" | ${SED} -e 's/- -eq/ -ge/ ; s/+ -eq/ -le/' ` ; ${ECHO_CMD} $${?} +. if ${VERSION_CHECK} == 1 +IGNORE= ${_ERROR_MSG} apache${AP_CUR_VERSION} is installed (or APACHE_PORT is defined) and port requires ${USE_APACHE} +. endif +APACHE_VERSION= ${AP_CUR_VERSION} +.else +AP_CUR_VERSION= none +. if !defined(APACHE_PORT) +#Fallback to smallest version... +APACHE_VERSION= ${AP_VERSION:C/\+//} +. endif +.endif + +.if exists(${APXS}) +APXS_PREFIX!= ${APXS} -q prefix 2> /dev/null || echo NULL +. if ${APXS_PREFIX} == NULL +IGNORE= : Your apache does not support DSO modules +. endif +. if defined(AP_GENPLIST) && ${APXS_PREFIX} != ${PREFIX} +IGNORE?= PREFIX must be egal to APXS_PREFIX. +. endif +.endif + +.if ${APACHE_VERSION} == "20" +AP_BUILDEXT= la +PLIST_SUB+= APACHEMODDIR="libexec/apache2" \ + APACHEINCLUDEDIR="include/apache2" +# XXX We postpone www/apache2 => www/apache20 migration +#APACHE_PORT= www/apache${APACHE_VERSION} +APACHE_PORT= www/apache2 +.elif ${APACHE_VERSION} == "21" +AP_BUILDEXT= la +PLIST_SUB+= APACHEMODDIR="libexec/apache${APACHE_VERSION}" \ + APACHEINCLUDEDIR="include/apache${APACHE_VERSION}" +APACHE_PORT= www/apache${APACHE_VERSION} +.else +AP_BUILDEXT= so +PLIST_SUB+= APACHEMODDIR="libexec/apache" \ + APACHEINCLUDEDIR="include/apache" +APACHE_PORT?= www/apache13 +.endif +.for VAR in ${OVERRIDABLE_VARS} +. if defined(AP${APACHE_VERSION}_${VAR}) +${VAR} =${AP${APACHE_VERSION}_${VAR}} +. endif +.endfor + +BUILD_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT} +RUN_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT} +PLIST_SUB+= AP_NAME="${SHORTMODNAME}" +PLIST_SUB+= AP_MODULE="${MODULENAME}.so" + +.if defined(AP_GENPLIST) +PLIST?= ${WRKDIR}/ap-plist +.endif + +.if defined(AP_INC) +AP_EXTRAS+= -I ${AP_INC} +.endif +.if defined(AP_LIB) +AP_EXTRAS+= -L ${AP_LIB} +.endif + +.endif + +.if defined(AP_PORT_IS_SERVER) +.elif defined(AP_PORT_IS_MODULE) + +.if defined(AP_FAST_BUILD) +.if !target(ap-gen-plist) +ap-gen-plist: +.if defined(AP_GENPLIST) +. if !exists(${PLIST}) + @${ECHO} "===> Generating apache plist" + @${ECHO} "@unexec %D/sbin/apxs -e -A -n %%AP_NAME%% %D/%%APACHEMODDIR%%/%%AP_MODULE%%" > ${PLIST} + @${ECHO} "%%APACHEMODDIR%%/%%AP_MODULE%%" >> ${PLIST} + @${ECHO} "@exec %D/sbin/apxs -e -A -n %%AP_NAME%% %D/%F" >> ${PLIST} + @${ECHO} "@unexec echo \"Don't forget to remove all ${MODULENAME}-related directives in your httpd.conf\"">> ${PLIST} +. endif +.else + @${DO_NADA} +.endif +.endif + +.if !target(do-build) +do-build: ap-gen-plist + @cd ${WRKSRC} && ${APXS} -c ${AP_EXTRAS} -o ${MODULENAME}.${AP_BUILDEXT} ${SRC_FILE} +.endif + +.if !target(do-install) +do-install: + @${APXS} -i -A -n ${SHORTMODNAME} ${WRKSRC}/${MODULENAME}.${AP_BUILDEXT} +.endif + +.endif + +.endif diff --git a/Mk/bsd.database.mk b/Mk/bsd.database.mk new file mode 100644 index 000000000000..02b07bd0c291 --- /dev/null +++ b/Mk/bsd.database.mk @@ -0,0 +1,231 @@ +# -*- mode: Makefile; tab-width: 4; -*- +# ex: ts=4 +# +# $FreeBSD$ +# + +.if defined(_POSTMKINCLUDED) && !defined(Database_Post_Include) + +Database_Post_Include= bsd.database.mk +Database_Include_MAINTAINER= vsevolod@FreeBSD.org + +# This file contains some routines to interact with different databases, such +# as mysql, postgresql and berkley DB. For including this file define macro +# USE_[DATABASE], for example USE_MYSQL. Defining macro like USE_[DATABASE]_VER +# or WANT_[DATABSE]_VER will include this file too. +# +## +# USE_MYSQL - Add MySQL client dependency. +# If no version is given (by the maintainer via the port or +# by the user via defined variable), try to find the +# currently installed version. Fall back to default if +# necessary (MySQL4.1 = 41). +# DEFAULT_MYSQL_VER +# - MySQL default version. Can be overriden within a port. +# Default: 41. +# WANT_MYSQL_VER +# - Maintainer can set an arbitrary version of MySQL by using it. +# BROKEN_WITH_MYSQL +# - This variable can be defined if the ports doesn't support +# one or more version of MySQL. +# MYSQL_VER - Internal variable for MySQL version. +# WITH_MYSQL_VER +# - User defined variable to set MySQL version. +## +# USE_PGSQL - Add PostgreSQL client dependency. +# If no version is given (by the maintainer via the port or +# by the user via defined variable), try to find the +# currently installed version. Fall back to default if +# necessary (PostgreSQL-7.4 = 74). +# DEFAULT_PGSQL_VER +# - PostgreSQL default version. Can be overridden within a port. +# Default: 74. +# WANT_PGSQL_VER +# - Maintainer can set an arbitrary version of PostgreSQL by +# using it. +# BROKEN_WITH_PGSQL +# - This variable can be defined if the ports doesn't support +# one or more versions of PostgreSQL. +## +# USE_BDB - Add Berkley DB library dependency. +# If no version is given (by the maintainer via the port or +# by the user via defined variable), try to find the +# currently installed version. Fall back to default if +# necessary (db41+). +## +# USE_SQLITE - Add dependency on sqlite library. Valid values are: +# 3 and 2. If version is not specified directly then +# sqlite3 is used (if USE_SQLITE= yes). + +.if defined(USE_MYSQL) +DEFAULT_MYSQL_VER?= 41 +# MySQL client version currently supported. +MYSQL323_LIBVER= 10 +MYSQL40_LIBVER= 12 +MYSQL41_LIBVER= 14 +MYSQL50_LIBVER= 15 + +# Setting/finding MySQL version we want. +.if exists(${LOCALBASE}/bin/mysql) +_MYSQL_VER!= ${LOCALBASE}/bin/mysql --version | ${SED} -e 's/.*Distrib \([0-9]\)\.\([0-9]*\).*/\1\2/' +.endif + +.if defined(WANT_MYSQL_VER) +.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER} != ${WANT_MYSQL_VER} +BROKEN= 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} +BROKEN= MySQL versions mismatch: mysql${_MYSQL_VER}-client is installed and wanted version is mysql${MYSQL_VER}-client +.endif +.endif + +# And now we are checking if we can use it +.if defined(MYSQL${MYSQL_VER}_LIBVER) +.if defined(BROKEN_WITH_MYSQL) +. for VER in ${BROKEN_WITH_MYSQL} +. if (${MYSQL_VER} == "${VER}") +IGNORE= "Doesn't work with MySQL version : ${MYSQL_VER} (Doesn't support MySQL ${BROKEN_WITH_MYSQL})" +. endif +. endfor +.endif # BROKEN_WITH_MYSQL +LIB_DEPENDS+= mysqlclient.${MYSQL${MYSQL_VER}_LIBVER}:${PORTSDIR}/databases/mysql${MYSQL_VER}-client +.else +IGNORE= "Unknown MySQL version: ${MYSQL_VER}" +.endif # Check for correct libs +.endif # USE_MYSQL + +.if defined(USE_PGSQL) +DEFAULT_PGSQL_VER?= 74 +PGSQL73_LIBVER= 3 +PGSQL74_LIBVER= 3 +PGSQL80_LIBVER= 4 +PGSQL81_LIBVER= 4 + +# Setting/finding PostgreSQL version we want. +.if exists(${LOCALBASE}/bin/pg_config) +_PGSQL_VER!= ${LOCALBASE}/bin/pg_config --version | ${SED} -n 's/PostgreSQL[^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\)[^0-9].*/\1\2/p' +.endif + +.if defined(WANT_PGSQL_VER) && defined(_PGSQL_VER) && ${WANT_PGSQL_VER} != ${_PGSQL_VER} +BROKEN= the port wants postgresql${WANT_PGSQL_VER}-client but you have postgresql${_PGSQL_VER}-client installed +.endif + +.if defined(_PGSQL_VER) +PGSQL_VER= ${_PGSQL_VER} +.elif defined(WANT_PGSQL_VER) +PGSQL_VER= ${WANT_PGSQL_VER} +.else +PGSQL_VER= ${DEFAULT_PGSQL_VER} +.endif + +# And now we are checking if we can use it +.if defined(PGSQL${PGSQL_VER}_LIBVER) +.if defined(BROKEN_WITH_PGSQL) +. for VER in ${BROKEN_WITH_PGSQL} +. if (${PGSQL_VER} == "${VER}") +IGNORE= "Does not work with postgresql${PGSQL_VER}-client PostgresSQL \(${BROKEN_WITH_PGSQL} not supported\)" +. endif +. endfor +.endif # BROKEN_WITH_PGSQL +LIB_DEPENDS+= pq.${PGSQL${PGSQL_VER}_LIBVER}:${PORTSDIR}/databases/postgresql${PGSQL_VER}-client +.else +IGNORE= "Unknown PostgreSQL version: ${PGSQL_VER}" +.endif # Check for correct version +CPPFLAGS+= -I${LOCALBASE}/include +LDFLAGS+= -L${LOCALBASE}/lib +CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" +.endif # USE_PGSQL + + +.if defined(USE_BDB) + +_DB_PORTS= 2 3 40 41 42 43 40+ 41+ 42+ 43+ +# Dependence lines for different db versions +db2_DEPENDS= db2.0:${PORTSDIR}/databases/db2 +db3_DEPENDS= db3.3:${PORTSDIR}/databases/db3 +db40_DEPENDS= db4.0:${PORTSDIR}/databases/db4 +db41_DEPENDS= db41.1:${PORTSDIR}/databases/db41 +db42_DEPENDS= db-4.2.2:${PORTSDIR}/databases/db42 +db43_DEPENDS= db-4.3.0:${PORTSDIR}/databases/db43 +# Detect db4 versions by finding some files +db40_FIND= ${PREFIX}/include/db4/db.h +db41_FIND= ${PREFIX}/include/db41/db.h +db42_FIND= ${PREFIX}/include/db42/db.h +db43_FIND= ${PREFIX}/include/db43/db.h + +# For specifying 40+ 41+ 42+ +_DB_40P= 40 41 42 43 +_DB_41P= 41 42 43 +_DB_42P= 42 43 + +_WANT_BDB_VER= ${USE_BDB} + +# Assume the default bdb version as 41 +.if ${USE_BDB} == "yes" +_WANT_BDB_VER= 41+ +.endif + +# Detect bdb version +_FOUND= no + +.for bdb in ${_DB_PORTS} +.if ${_WANT_BDB_VER} == "${bdb}" && ${_FOUND} == "no" +_MATCHED_DB_VER:= ${bdb:S/+//} +. if ${_MATCHED_DB_VER} == "${bdb}" +# USE_BDB is exactly specified +LIB_DEPENDS+= ${db${bdb}_DEPENDS} +_FOUND= yes +.else +# USE_BDB is specified as VER+ +. for db4 in ${_DB_${_MATCHED_DB_VER}P} +. if exists(${db${db4}_FIND}) && ${_FOUND} == "no" +LIB_DEPENDS+= ${db${db4}_DEPENDS} +_FOUND= yes +. endif +. endfor +. if ${_FOUND} == "no" +# No existing db4 version is detected in system +LIB_DEPENDS+= ${db${_MATCHED_DB_VER}_DEPENDS} +_FOUND= yes +. endif +. endif +.endif +.endfor + +# USE_BDB is specified incorrectly, so mark this as BROKEN +.if ${_FOUND} == "no" +IGNORE= "Unknown bdb version: ${USE_BDB}" +.endif + +.endif # USE_BDB + +# Handling sqlite dependency +.if defined(USE_SQLITE) + +.if ${USE_SQLITE} == "yes" +_SQLITE_VER= 3 +.else +_SQLITE_VER= ${USE_SQLITE} +.endif + +.if ${_SQLITE_VER} != "3" && ${_SQLITE_VER} != "2" +IGNORE= "Unknown sqlite version: ${_SQLITE_VER}" +.endif + +LIB_DEPENDS+= sqlite${_SQLITE_VER}:${PORTSDIR}/databases/sqlite${_SQLITE_VER} + +.endif # defined(USE_SQLITE) + +.endif # defined(_POSTMKINCLUDED) && !defined(Database_Post_Include) diff --git a/Mk/bsd.java.mk b/Mk/bsd.java.mk index 25997a76eef1..114a8a6047f4 100644 --- a/Mk/bsd.java.mk +++ b/Mk/bsd.java.mk @@ -216,17 +216,12 @@ _JAVA_OS_native= Native _JAVA_OS_linux= Linux # Enforce preferred Java ports according to OS -. if ${OSVERSION} >= 400000 -. if ${ARCH} == "amd64" +. if ${ARCH} == "amd64" _JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_BSDJAVA_JDK_1_5 -. else -_JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_BSDJAVA_JDK_1_4 -. endif . else -_JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_BSDJAVA_JDK_1_1 +_JAVA_PREFERRED_PORTS+= JAVA_PORT_NATIVE_BSDJAVA_JDK_1_4 . endif - # List all JDK ports __JAVA_PORTS_ALL= JAVA_PORT_NATIVE_BSDJAVA_JDK_1_5 \ JAVA_PORT_NATIVE_BSDJAVA_JDK_1_4 \ diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk index 2d30ffc896ee..57f0175caf5c 100644 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -201,6 +201,66 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # - Only build ports if ${ARCH} matches one of these. # NOT_FOR_ARCHS - Only build ports if ${ARCH} doesn't match one of these. # +# Dependency checking. Use these if your port requires another port +# not in the list below. (Default: empty.) +# +# EXTRACT_DEPENDS +# - A list of "path:dir[:target]" tuples of other ports this +# package depends on in the "extract" stage. "path" is +# the name of a file if it starts with a slash (/), an +# executable otherwise. make will test for the existence +# (if it is a full pathname) or search for it in your +# $PATH (if it is an executable) and go into "dir" to do +# a "make all install" if it's not found. If the third +# field ("target") exists, it will be used instead of +# ${DEPENDS_TARGET}. +# PATCH_DEPENDS - A list of "path:dir[:target]" tuples of other ports this +# package depends on in the "patch" stage. "path" is the +# name of a file if it starts with a slash (/), an +# executable otherwise. make will test for the existence +# (if it is a full pathname) or search for it in your +# $PATH (if it is an executable) and go into "dir" to do +# a "make all install" if it's not found. If the third +# field ("target") exists, it will be used instead of +# ${DEPENDS_TARGET}. +# FETCH_DEPENDS - A list of "path:dir[:target]" tuples of other ports this +# package depends in the "fetch" stage. "path" is the +# name of a file if it starts with a slash (/), an +# executable otherwise. make will test for the +# existence (if it is a full pathname) or search for +# it in your $PATH (if it is an executable) and go +# into "dir" to do a "make all install" if it's not +# found. If the third field ("target") exists, it will +# be used instead of ${DEPENDS_TARGET}. +# BUILD_DEPENDS - A list of "path:dir[:target]" tuples of other ports this +# package depends to build (between the "extract" and +# "build" stages, inclusive). The test done to +# determine the existence of the dependency is the +# same as FETCH_DEPENDS. If the third field ("target") +# exists, it will be used instead of ${DEPENDS_TARGET}. +# RUN_DEPENDS - A list of "path:dir[:target]" tuples of other ports this +# package depends to run. The test done to determine +# the existence of the dependency is the same as +# FETCH_DEPENDS. This will be checked during the +# "install" stage and the name of the dependency will +# be put into the package as well. If the third field +# ("target") exists, it will be used instead of +# ${DEPENDS_TARGET}. +# LIB_DEPENDS - A list of "lib:dir[:target]" tuples of other ports this +# package depends on. "lib" is the name of a shared library. +# make will use "ldconfig -r" to search for the library. +# lib can contain extended regular expressions. +# DEPENDS - A list of "dir[:target]" tuples of other ports this +# package depends on being made first. Use this only for +# things that don't fall into the above four categories. +# If the second field ("target") exists, it will be used +# instead of ${DEPENDS_TARGET}. +# +# DEPENDS_TARGET +# - The default target to execute when a port is calling a +# dependency. +# Default: install +# # These variables control options about how a port gets built and/or # are shorthand notations for common sets of dependencies. # Use these if your port uses some of the common software packages. By @@ -371,39 +431,6 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # LINUX_BASE_PORT - This is a read-only variable, it gets set to a value which # is usable in *_DEPENDS (e.g. BUILD_DEPENDS=${LINUX_BASE_PORT}). # It honors USE_LINUX=foo and OVERRIDE_LINUX_BASE_PORT. -## -# USE_MYSQL - Add MySQL client dependency. -# If no version is given (by the maintainer via the port or -# by the user via defined variable), try to find the -# currently installed version. Fall back to default if -# necessary (MySQL4.1 = 41). -# DEFAULT_MYSQL_VER -# - MySQL default version. Can be overriden within a port. -# Default: 41. -# WANT_MYSQL_VER -# - Maintainer can set an arbitrary version of MySQL by using it. -# BROKEN_WITH_MYSQL -# - This variable can be defined if the ports doesn't support -# one or more version of MySQL. -# MYSQL_VER - Internal variable for MySQL version. -# WITH_MYSQL_VER -# - User defined variable to set MySQL version. -## -# USE_PGSQL - Add PostgreSQL client dependency. -# If no version is given (by the maintainer via the port or -# by the user via defined variable), try to find the -# currently installed version. Fall back to default if -# necessary (PostgreSQL-7.4 = 74). -# DEFAULT_PGSQL_VER -# - PostgreSQL default version. Can be overridden within a port. -# Default: 74. -# WANT_PGSQL_VER -# - Maintainer can set an arbitrary version of PostgreSQL by -# using it. -# BROKEN_WITH_PGSQL -# - This variable can be defined if the ports doesn't support -# one or more versions of PostgreSQL. -## # USE_RC_SUBR - If set, the ports startup/shutdown script uses the common # routines found in etc/rc.subr and may need to # depend on the sysutils/rc_subr port. @@ -413,79 +440,13 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # ${PREFIX}/etc/rc.d and added to the packing list. # pairs will be added to ${SUB_LIST}. These files will be # installed in ${PREFIX}/etc/rc.d and added to the packing list. -# RC_ORDER - List of rcNG startup scripts to be called early in the boot +# USE_RCORDER - List of rcNG startup scripts to be called early in the boot # process. This acts exactly like USE_RC_SUBR except that # scripts are installed in /etc/rc.d. # RC_SUBR - Set to path of rc.subr. # Default: ${LOCALBASE}/etc/rc.subr. ## # USE_APACHE - If set, this port relies on an apache webserver. -# APACHE_PORT - CATEGORY and portname of the prefered port for apache. -# Default: www/apache13 -# If WITH_APACHE2 is defined defaults to www/apache2 -# APXS - Full path to the prefered apxs binary to configure -# apache modules. -# Default: ${LOCALBASE}/sbin/apxs -# -# -# Dependency checking. Use these if your port requires another port -# not in the list above. (Default: empty.) -# -# EXTRACT_DEPENDS -# - A list of "path:dir[:target]" tuples of other ports this -# package depends on in the "extract" stage. "path" is -# the name of a file if it starts with a slash (/), an -# executable otherwise. make will test for the existence -# (if it is a full pathname) or search for it in your -# $PATH (if it is an executable) and go into "dir" to do -# a "make all install" if it's not found. If the third -# field ("target") exists, it will be used instead of -# ${DEPENDS_TARGET}. -# PATCH_DEPENDS - A list of "path:dir[:target]" tuples of other ports this -# package depends on in the "patch" stage. "path" is the -# name of a file if it starts with a slash (/), an -# executable otherwise. make will test for the existence -# (if it is a full pathname) or search for it in your -# $PATH (if it is an executable) and go into "dir" to do -# a "make all install" if it's not found. If the third -# field ("target") exists, it will be used instead of -# ${DEPENDS_TARGET}. -# FETCH_DEPENDS - A list of "path:dir[:target]" tuples of other ports this -# package depends in the "fetch" stage. "path" is the -# name of a file if it starts with a slash (/), an -# executable otherwise. make will test for the -# existence (if it is a full pathname) or search for -# it in your $PATH (if it is an executable) and go -# into "dir" to do a "make all install" if it's not -# found. If the third field ("target") exists, it will -# be used instead of ${DEPENDS_TARGET}. -# BUILD_DEPENDS - A list of "path:dir[:target]" tuples of other ports this -# package depends to build (between the "extract" and -# "build" stages, inclusive). The test done to -# determine the existence of the dependency is the -# same as FETCH_DEPENDS. If the third field ("target") -# exists, it will be used instead of ${DEPENDS_TARGET}. -# RUN_DEPENDS - A list of "path:dir[:target]" tuples of other ports this -# package depends to run. The test done to determine -# the existence of the dependency is the same as -# FETCH_DEPENDS. This will be checked during the -# "install" stage and the name of the dependency will -# be put into the package as well. If the third field -# ("target") exists, it will be used instead of -# ${DEPENDS_TARGET}. -# LIB_DEPENDS - A list of "lib:dir[:target]" tuples of other ports this -# package depends on. "lib" is the name of a shared library. -# make will use "ldconfig -r" to search for the library. -# lib can contain extended regular expressions. -# DEPENDS - A list of "dir[:target]" tuples of other ports this -# package depends on being made first. Use this only for -# things that don't fall into the above four categories. -# If the second field ("target") exists, it will be used -# instead of ${DEPENDS_TARGET}. -# DEPENDS_TARGET -# - The default target to execute when a port is calling a -# dependency. -# Default: install # # Conflict checking. Use if your port cannot be installed at the same time as # another package. @@ -775,7 +736,7 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # CONFIGURE_TARGET # - The name of target to call when GNU_CONFIGURE is # defined. -# Default: ${MACHINE_ARCH}-portbld-freebsd${OSREL} +# Default: ${ARCH}-portbld-freebsd${OSREL} # CONFIGURE_ARGS # - Pass these args to configure if ${HAS_CONFIGURE} is set. # Default: "--prefix=${PREFIX} ${CONFIGURE_TARGET}" if @@ -866,6 +827,36 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # DATADIR - Name of the directory to install the packages shared data in. # Default: ${PREFIX}/share/${PORTNAME} # +# DESKTOPDIR - Name of the directory to install ${DESKTOP_ENTRIES} in. +# Default: ${PREFIX}/share/applications +# DESKTOP_ENTRIES +# - List of desktop entry files to generate and install in +# ${DESKTOPDIR}. The format is +# "Name" "Comment" "Icon" "Exec" "Categories" StartupNotify +# Rules: +# * Only add desktop entries for applications which do not +# require a terminal (ie. X applications). +# * If the upstream distribution already installs .desktop +# files, you do not need to use this. +# * If you require a more elaborate .desktop file than this +# variable permits, write it yourself and install it +# in ${DESKTOPDIR}. +# Notes: +# * Comment and Icon may be empty strings (""). The other +# fields are mandatory. +# * Exec will also be used to name the .desktop file. +# * The files will be automatically added to ${PLIST}. +# Example: +# "X Window Information" \ +# "Get information about X windows" \ +# "wininfo.png" \ +# "wininfo" \ +# "Application;System;" \ +# true +# See http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html +# for an explanation of the fields. If you need to create more +# than one file, just chain them into a single variable. +# # Note that the install target will automatically add manpages (see # above) and also substitute special sequences of characters (delimited # by "%%") as defined in PLIST_SUB to generate ${TMPPLIST}. For @@ -909,6 +900,11 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # - If set, it will overwrite any existing package # registration information in ${PKG_DBDIR}/${PKGNAME}. # NO_DEPENDS - Don't verify build of dependencies. +# CHECKSUM_ALGORITHMS +# - Different checksum algorithms to check for verifying the +# integrity of the distfiles. The absence of the algorithm +# in distinfo doesn't make it fail. +# Default: md5 # NO_CHECKSUM - Don't verify the checksum. Typically used when # when you noticed the distfile you just fetched has # a different checksum and you intend to verify if @@ -927,6 +923,26 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # Most port authors should not need to understand anything after this point. # +# Look for ${WRKSRC}/.../*.orig files, and (re-)create +# ${FILEDIR}/patch-* files from them. + +.if !target(makepatch) +makepatch: + @cd ${.CURDIR} && ${MKDIR} ${FILESDIR} + @(cd ${WRKSRC}; \ + for i in `find . -type f -name '*.orig'`; do \ + ORG=$$i; \ + NEW=$${i%.orig}; \ + OUT=${FILESDIR}`${ECHO} $${NEW} | \ + ${SED} -e 's|/|__|g' \ + -e 's|^\.__|/patch-|'`; \ + ${ECHO} ${DIFF} -ud $${ORG} $${NEW} '>' $${OUT}; \ + ${DIFF} -ud $${ORG} $${NEW} > $${OUT} || ${TRUE}; \ + done \ + ) +.endif + + # Start of pre-makefile section. .if !defined(AFTERPORTMK) @@ -965,6 +981,7 @@ CPIO?= /usr/bin/cpio CUT?= /usr/bin/cut DC?= /usr/bin/dc DIALOG?= /usr/bin/dialog +DIFF?= /usr/bin/diff DIRNAME?= /usr/bin/dirname EGREP?= /usr/bin/egrep EXPR?= /bin/expr @@ -1187,10 +1204,8 @@ X11BASE?= ${DESTDIR}/usr/X11R6 LINUXBASE?= ${DESTDIR}/compat/linux DISTDIR?= ${PORTSDIR}/distfiles _DISTDIR?= ${DISTDIR}/${DIST_SUBDIR} -.if ${OSVERSION} >= 600000 -INDEXFILE?= INDEX-6 -.elif ${OSVERSION} >= 500036 -INDEXFILE?= INDEX-5 +.if ${OSVERSION} >= 500036 +INDEXFILE?= INDEX-${OSVERSION:C/([0-9]).*/\1/} .else INDEXFILE?= INDEX .endif @@ -1235,17 +1250,6 @@ PREFIX?= ${LOCALBASE} PKGCOMPATDIR?= ${LOCALBASE}/lib/compat/pkg -.if defined(WITH_APACHE2) -APACHE_PORT?= www/apache2 -.else -APACHE_PORT?= www/apache13 -.endif -APXS?= ${LOCALBASE}/sbin/apxs -.if defined(USE_APACHE) -BUILD_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT} -RUN_DEPENDS+= ${APXS}:${PORTSDIR}/${APACHE_PORT} -.endif - .if ${OSVERSION} >= 500036 PERL_VERSION?= 5.8.7 PERL_VER?= 5.8.7 @@ -1258,11 +1262,7 @@ PERL_VER?= 5.6.1 PERL_VERSION?= 5.6.0 PERL_VER?= 5.6.0 .else -.if ${OSVERSION} >= 300000 PERL_VERSION?= 5.00503 -.else -PERL_VERSION?= 5.00502 -.endif PERL_VER?= 5.005 .endif .endif @@ -1339,6 +1339,14 @@ PERL= ${LOCALBASE}/bin/perl .include "${PORTSDIR}/Mk/bsd.ruby.mk" .endif +.if defined(USE_TCL) || defined(USE_TK) +.include "${PORTSDIR}/Mk/bsd.tcl.mk" +.endif + +.if defined(USE_APACHE) || defined(APACHE_COMPAT) +.include "${PORTSDIR}/Mk/bsd.apache.mk" +.endif + .if defined(USE_QT_VER) || defined(USE_KDELIBS_VER) || defined(USE_KDEBASE_VER) .include "${PORTSDIR}/Mk/bsd.kde.mk" .endif @@ -1424,7 +1432,7 @@ MAKE_SHELL?= ${SH} CONFIGURE_ENV+= SHELL=${SH} CONFIG_SHELL=${SH} PORTOBJFORMAT=${PORTOBJFORMAT} SCRIPTS_ENV+= PORTOBJFORMAT=${PORTOBJFORMAT} -MAKE_ENV+= SHELL=${SH} PORTOBJFORMAT=${PORTOBJFORMAT} +MAKE_ENV+= SHELL=${SH} PORTOBJFORMAT=${PORTOBJFORMAT} NO_LINT=YES PLIST_SUB+= PORTOBJFORMAT=${PORTOBJFORMAT} .if defined(MANCOMPRESSED) @@ -1479,8 +1487,6 @@ _OPENLDAP_FLAVOUR= .endif .if ${WANT_OPENLDAP_VER} == 22 LIB_DEPENDS+= ldap-2.2.7:${PORTSDIR}/net/openldap22${_OPENLDAP_FLAVOUR}-client -.elif ${WANT_OPENLDAP_VER} == 21 -LIB_DEPENDS+= ldap.2:${PORTSDIR}/net/openldap21${_OPENLDAP_FLAVOUR}-client .elif ${WANT_OPENLDAP_VER} == 23 LIB_DEPENDS+= ldap-2.3.1:${PORTSDIR}/net/openldap23${_OPENLDAP_FLAVOUR}-client .else @@ -1679,10 +1685,8 @@ LIB_DEPENDS+= glut.3:${PORTSDIR}/graphics/libglut .endif .if defined(USE_BISON) -.if ${OSVERSION} >= 400014 BUILD_DEPENDS+= bison:${PORTSDIR}/devel/bison .endif -.endif PLIST_SUB+= PERL_VERSION=${PERL_VERSION} \ PERL_VER=${PERL_VER} \ @@ -1725,100 +1729,16 @@ RUN_DEPENDS+= ${PERL5}:${PORTSDIR}/lang/${PERL_PORT} .endif .endif -.if defined(USE_MYSQL) -DEFAULT_MYSQL_VER?= 41 -# MySQL client version currently supported. -MYSQL323_LIBVER= 10 -MYSQL40_LIBVER= 12 -MYSQL41_LIBVER= 14 -MYSQL50_LIBVER= 15 - -# Setting/finding MySQL version we want. -.if exists(${LOCALBASE}/bin/mysql) -_MYSQL_VER!= ${LOCALBASE}/bin/mysql --version | ${SED} -e 's/.*Distrib \([0-9]\)\.\([0-9]*\).*/\1\2/' -.endif - -.if defined(WANT_MYSQL_VER) -.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER} != ${WANT_MYSQL_VER} -BROKEN= 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} -BROKEN= MySQL versions mismatch: mysql${_MYSQL_VER}-client is installed and wanted version is mysql${MYSQL_VER}-client -.endif -.endif - -# And now we are checking if we can use it -.if defined(MYSQL${MYSQL_VER}_LIBVER) -.if defined(BROKEN_WITH_MYSQL) -. for VER in ${BROKEN_WITH_MYSQL} -. if (${MYSQL_VER} == "${VER}") -IGNORE= Doesn't work with MySQL version : ${MYSQL_VER} (Doesn't support MySQL ${BROKEN_WITH_MYSQL}) -. endif -. endfor -.endif # BROKEN_WITH_MYSQL -LIB_DEPENDS+= mysqlclient.${MYSQL${MYSQL_VER}_LIBVER}:${PORTSDIR}/databases/mysql${MYSQL_VER}-client -.else -BROKEN= "unknown MySQL version: ${MYSQL_VER}" -.endif # Check for correct libs -.endif # USE_MYSQL - -.if defined(USE_PGSQL) -DEFAULT_PGSQL_VER?= 74 -PGSQL73_LIBVER= 3 -PGSQL74_LIBVER= 3 -PGSQL80_LIBVER= 4 - -# Setting/finding PostgreSQL version we want. -.if exists(${LOCALBASE}/bin/pg_config) -_PGSQL_VER!= ${LOCALBASE}/bin/pg_config --version | ${SED} -n 's/PostgreSQL[^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\..*/\1\2/p' -.endif - -.if defined(WANT_PGSQL_VER) && defined(_PGSQL_VER) && ${WANT_PGSQL_VER} != ${_PGSQL_VER} -IGNORE= "The port wants postgresql${WANT_PGSQL_VER}-client but you have postgresql${_PGSQL_VER}-client installed" -.endif - -.if defined(_PGSQL_VER) -PGSQL_VER= ${_PGSQL_VER} -.elif defined(WANT_PGSQL_VER) -PGSQL_VER= ${WANT_PGSQL_VER} -.else -PGSQL_VER= ${DEFAULT_PGSQL_VER} -.endif - -# And now we are checking if we can use it -.if defined(PGSQL${PGSQL_VER}_LIBVER) -.if defined(BROKEN_WITH_PGSQL) -. for VER in ${BROKEN_WITH_PGSQL} -. if (${PGSQL_VER} == "${VER}") -IGNORE= "Does not work with postgresql${PGSQL_VER}-client PostgresSQL \(${BROKEN_WITH_PGSQL} not supported\)" -. endif -. endfor -.endif # BROKEN_WITH_PGSQL -LIB_DEPENDS+= pq.${PGSQL${PGSQL_VER}_LIBVER}:${PORTSDIR}/databases/postgresql${PGSQL_VER}-client -.else -BROKEN= "unknown PostgreSQL version: ${PGSQL_VER}" -.endif # Check for correct version -CPPFLAGS+= -I${LOCALBASE}/include -LDFLAGS+= -L${LOCALBASE}/lib -CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" -.endif # USE_PGSQL - # XXX: (not yet): .if defined(USE_AUTOTOOLS) .include "${PORTSDIR}/Mk/bsd.autotools.mk" # XXX: (not yet): .endif +.if defined(USE_MYSQL) || defined(WANT_MYSQL_VER) || \ + defined(USE_PGSQL) || defined(WANT_PGSQL_VER) || \ + defined(USE_BDB) || defined(USE_SQLITE) +.include "${PORTSDIR}/Mk/bsd.database.mk" +.endif + .if defined(WANT_GNOME) || defined(USE_GNOME) || defined(USE_GTK) .include "${PORTSDIR}/Mk/bsd.gnome.mk" .endif @@ -1835,6 +1755,14 @@ CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" .include "${PORTSDIR}/Mk/bsd.python.mk" .endif +.if defined(USE_TCL) || defined(USE_TK) +.include "${PORTSDIR}/Mk/bsd.tcl.mk" +.endif + +.if defined(USE_APACHE) || defined(APACHE_COMPAT) +.include "${PORTSDIR}/Mk/bsd.apache.mk" +.endif + .if exists(${PORTSDIR}/../Makefile.inc) .include "${PORTSDIR}/../Makefile.inc" USE_SUBMAKE= yes @@ -1887,13 +1815,8 @@ RUN_DEPENDS+= gs:${PORTSDIR}/${GHOSTSCRIPT_PORT} # Special macro for doing in-place file editing using regexps .if defined(USE_REINPLACE) REINPLACE_ARGS?= -i.bak -.if ${OSVERSION} < 460101 || ( ${OSVERSION} >= 500000 && ${OSVERSION} < 500036 ) -PATCH_DEPENDS+= ${LOCALBASE}/bin/sed_inplace:${PORTSDIR}/textproc/sed_inplace -REINPLACE_CMD?= ${LOCALBASE}/bin/sed_inplace ${REINPLACE_ARGS} -.else REINPLACE_CMD?= ${SED} ${REINPLACE_ARGS} .endif -.endif # Names of cookies used to skip already completed stages EXTRACT_COOKIE?= ${WRKDIR}/.extract_done.${PKGNAME}.${PREFIX:S/\//_/g} @@ -1922,6 +1845,16 @@ MD5?= /usr/bin/md5 .else MD5?= md5 .endif +.if exists(/sbin/sha256) +SHA256?= /sbin/sha256 +.elif exists(${LOCALBASE}/sbin/sha256) +SHA256?= ${LOCALBASE}/sbin/sha256 +.else +SHA256?= NO +.endif + +CHECKSUM_ALGORITHMS?= md5 sha256 + MD5_FILE?= ${MASTERDIR}/distinfo MAKE_FLAGS?= -f @@ -1940,13 +1873,8 @@ PTHREAD_LIBS?= -pthread .endif .if exists(/usr/bin/fetch) -# avoid -A for 2.2 -- it's not ported to that branch -.if ${OSVERSION} < 300000 -FETCH_CMD?= /usr/bin/fetch -.else FETCH_CMD?= /usr/bin/fetch -ARr FETCH_REGET?= 1 -.endif .if ${OSVERSION} >= 480000 && !defined(DISABLE_SIZE) # Avoid -S for 4.7 and earlier since it causes fetch errors FETCH_BEFORE_ARGS+= $${CKSIZE:+-S $$CKSIZE} @@ -2081,7 +2009,7 @@ SCRIPTS_ENV+= ${INSTALL_MACROS} .undef NO_PACKAGE .endif -COMMENTFILE?= ${PKGDIR}/pkg-comment +COMMENTFILE?= ${PKGDIR}/pkg-comment DESCR?= ${PKGDIR}/pkg-descr PLIST?= ${PKGDIR}/pkg-plist PKGINSTALL?= ${PKGDIR}/pkg-install @@ -2091,14 +2019,12 @@ PKGMESSAGE?= ${PKGDIR}/pkg-message TMPPLIST?= ${WRKDIR}/.PLIST.mktmp -.if ${OSVERSION} >= 400000 .for _CATEGORY in ${CATEGORIES} PKGCATEGORY?= ${_CATEGORY} .endfor _PORTDIRNAME= ${.CURDIR:T} PORTDIRNAME?= ${_PORTDIRNAME} PKGORIGIN?= ${PKGCATEGORY}/${PORTDIRNAME} -.endif .if exists(${LOCALBASE}/sbin/pkg_info) PKG_CMD?= ${LOCALBASE}/sbin/pkg_create @@ -2106,13 +2032,6 @@ PKG_ADD?= ${LOCALBASE}/sbin/pkg_add PKG_DELETE?= ${LOCALBASE}/sbin/pkg_delete PKG_INFO?= ${LOCALBASE}/sbin/pkg_info PKG_VERSION?= ${LOCALBASE}/sbin/pkg_version -.elif ${OSVERSION} < 460102 && ${PKGORIGIN} != "sysutils/pkg_install" -BUILD_DEPENDS+= ${LOCALBASE}/sbin/pkg_info:${PORTSDIR}/sysutils/pkg_install -PKG_CMD?= ${LOCALBASE}/sbin/pkg_create -PKG_ADD?= ${LOCALBASE}/sbin/pkg_add -PKG_DELETE?= ${LOCALBASE}/sbin/pkg_delete -PKG_INFO?= ${LOCALBASE}/sbin/pkg_info -PKG_VERSION?= ${LOCALBASE}/sbin/pkg_version .else PKG_CMD?= /usr/sbin/pkg_create PKG_ADD?= /usr/sbin/pkg_add @@ -2597,7 +2516,7 @@ VALID_CATEGORIES+= accessibility afterstep arabic archivers astro audio \ deskutils devel dns editors elisp emulators finance french ftp \ games german gnome graphics haskell hebrew hungarian \ ipv6 irc japanese java kde korean lang linux lisp \ - mail math mbone misc multimedia net net-mgmt news \ + mail math mbone misc multimedia net net-im net-mgmt news \ offix palm parallel pear perl5 picobsd plan9 polish portuguese print \ python ruby russian \ scheme science security shells sysutils \ @@ -2651,7 +2570,7 @@ MAN3PREFIX?= ${PREFIX}/lib/perl5/${PERL_VERSION} .endif CONFIGURE_SCRIPT?= configure -CONFIGURE_TARGET?= ${MACHINE_ARCH}-portbld-freebsd${OSREL} +CONFIGURE_TARGET?= ${ARCH}-portbld-freebsd${OSREL} CONFIGURE_LOG?= config.log # A default message to print if do-configure fails. @@ -2788,6 +2707,14 @@ PLIST_SUB+= DOCSDIR="${DOCSDIR:S,^${PREFIX}/,,}" \ EXAMPLESDIR="${EXAMPLESDIR:S,^${PREFIX}/,,}" \ DATADIR="${DATADIR:S,^${PREFIX}/,,}" +DESKTOPDIR?= ${PREFIX}/share/applications +_DESKTOPDIR_REL= ${DESKTOPDIR:S,^${PREFIX}/,,}/ + +.if ${_DESKTOPDIR_REL} == ${DESKTOPDIR}/ +# DESKTOPDIR is not beneath PREFIX +_DESKTOPDIR_REL= +.endif + # Put this as far down as possible so it will catch all PLIST_SUB definitions. .if defined(INSTALLS_SHLIB) @@ -2823,14 +2750,9 @@ LDCONFIG_RUNLIST!= ${ECHO_CMD} ${LDCONFIG_PLIST} | ${SED} -e "s!%D!${PREFIX}!g" # Don't build a port if the system is too old. ################################################################ -.if ${OSVERSION} < 420000 -# You need an upgrade kit or make world newer than this -IGNORE= ": Your system is too old to use this bsd.port.mk. You need a fresh make world or an upgrade kit. Please go to http://www.FreeBSD.org/ports/ or a mirror site and follow the instructions" -.endif - .if defined(ONLY_FOR_ARCHS) .for __ARCH in ${ONLY_FOR_ARCHS} -.if ${MACHINE_ARCH:M${__ARCH}} != "" +.if ${ARCH:M${__ARCH}} != "" __ARCH_OK?= 1 .endif .endfor @@ -2840,7 +2762,7 @@ __ARCH_OK?= 1 .if defined(NOT_FOR_ARCHS) .for __NARCH in ${NOT_FOR_ARCHS} -.if ${MACHINE_ARCH:M${__NARCH}} != "" +.if ${ARCH:M${__NARCH}} != "" .undef __ARCH_OK .endif .endfor @@ -3073,10 +2995,6 @@ check-deprecated: # Check if the port is listed in the vulnerability database -.if ${PKGINSTALLVER} < 20040125 || ${OSVERSION} < 420001 || ${OSVERSION} >= 500000 && ${OSVERSION} < 500014 -DISABLE_VULNERABILITIES= yes -.endif - AUDITFILE?= /var/db/portaudit/auditfile.tbz _EXTRACT_AUDITFILE= ${TAR} -jxOf "${AUDITFILE}" auditfile @@ -3624,7 +3542,7 @@ security-check: # -@${RM} -f ${WRKDIR}/.PLIST.setuid ${WRKDIR}/.PLIST.writable ${WRKDIR}/.PLIST.objdump; \ ${AWK} -v prefix='${PREFIX}' ' \ - match($$0, /^@cwd /) { prefix = substr($$0, RSTART + RLENGTH); next; } \ + match($$0, /^@cwd /) { prefix = substr($$0, RSTART + RLENGTH); if (prefix == "/") prefix=""; next; } \ /^@/ { next; } \ /^\// { print; next; } \ { print prefix "/" $$0; } \ @@ -3783,10 +3701,10 @@ _INSTALL_SEQ= install-message check-conflicts \ run-depends lib-depends apply-slist pre-install \ pre-install-script generate-plist check-already-installed _INSTALL_SUSEQ= check-umask install-mtree pre-su-install \ - pre-su-install-script do-install post-install \ - post-install-script add-plist-info add-plist-docs \ - add-plist-post install-rc-script compress-man run-ldconfig \ - fake-pkg security-check + pre-su-install-script do-install install-desktop-entries \ + post-install post-install-script add-plist-info \ + add-plist-docs add-plist-post install-rc-script compress-man \ + run-ldconfig fake-pkg security-check _PACKAGE_DEP= install _PACKAGE_SEQ= package-message pre-package pre-package-script \ do-package post-package-script @@ -4156,88 +4074,174 @@ update-patches: # Checksumming utilities +check-checksum-algorithms: + @ \ + ${checksum_init} \ + \ + for alg in ${CHECKSUM_ALGORITHMS:U}; do \ + eval alg_executable=\$$$$alg; \ + if [ -z "$$alg_executable" ]; then \ + ${ECHO_CMD} "Checksum algorithm $$alg: Couldn't find the executable."; \ + ${ECHO_CMD} "Set $$alg=/path/to/$$alg in /etc/make.conf and try again."; \ + exit 1; \ + fi; \ + done; \ + +checksum_init=\ + SHA256=${SHA256}; \ + MD5=${MD5}; + .if !target(makesum) -makesum: +makesum: check-checksum-algorithms @cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} fetch NO_CHECKSUM=yes \ DISABLE_SIZE=yes @if [ -f ${MD5_FILE} ]; then ${CAT} /dev/null > ${MD5_FILE}; fi - @(cd ${DISTDIR}; \ - for file in ${_CKSUMFILES}; do \ - ${MD5} $$file >> ${MD5_FILE}; \ - if [ -z "${NO_SIZE}" ]; then \ - ${ECHO_CMD} "SIZE ($$file) = "`${LS} -ALln $$file | ${AWK} '{print $$5}'` >> ${MD5_FILE}; \ - fi; \ - done) + @( \ + cd ${DISTDIR}; \ + \ + ${checksum_init} \ + \ + for file in ${_CKSUMFILES}; do \ + for alg in ${CHECKSUM_ALGORITHMS:U}; do \ + eval alg_executable=\$$$$alg; \ + \ + if [ $$alg_executable != "NO" ]; then \ + $$alg_executable $$file >> ${MD5_FILE}; \ + fi; \ + done; \ + if [ -z "${NO_SIZE}" ]; then \ + ${ECHO_CMD} "SIZE ($$file) = "`${LS} -ALln $$file | ${AWK} '{print $$5}'` >> ${MD5_FILE}; \ + fi; \ + done \ + ) @for file in ${_IGNOREFILES}; do \ - ${ECHO_CMD} "MD5 ($$file) = IGNORE" >> ${MD5_FILE}; \ + for alg in ${CHECKSUM_ALGORITHMS:U}; do \ + ${ECHO_CMD} "$$alg ($$file) = IGNORE" >> ${MD5_FILE}; \ + done; \ done .endif - .if !target(checksum) -checksum: fetch - @if [ -f ${MD5_FILE} ]; then \ - (cd ${DISTDIR}; OK=""; \ - for file in ${_CKSUMFILES}; do \ +checksum: fetch check-checksum-algorithms + @ \ + \ + ${checksum_init} \ + \ + if [ -f ${MD5_FILE} ]; then \ + ( cd ${DISTDIR}; OK=""; \ + for file in ${_CKSUMFILES}; do \ pattern="`${ECHO_CMD} $$file | ${SED} -e 's/\./\\\\./g'`"; \ - CKSUM=`${MD5} < $$file`; \ - CKSUM2=`${GREP} "^MD5 ($$pattern)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ - if [ -z "$$CKSUM2" ]; then \ - ${ECHO_MSG} "=> No checksum recorded for $$file."; \ - OK="false"; \ - elif [ "$$CKSUM2" = "IGNORE" ]; then \ - ${ECHO_MSG} "=> Checksum for $$file is set to IGNORE in distinfo file even though"; \ - ${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \ - OK="false"; \ - else \ - ckmatch=${FALSE}; \ - for cksum2 in $$CKSUM2; do \ - if [ "$$cksum2" = "$$CKSUM" ]; then \ - ckmatch=${TRUE}; \ - break; \ - fi; \ - done; \ - if $$ckmatch; then \ - ${ECHO_MSG} "=> Checksum OK for $$file."; \ + \ + ignored="true"; \ + for alg in ${CHECKSUM_ALGORITHMS:U}; do \ + ignore="false"; \ + eval alg_executable=\$$$$alg; \ + \ + if [ $$alg_executable != "NO" ]; then \ + MKSUM=`$$alg_executable < $$file`; \ + CKSUM=`${GREP} "^$$alg ($$pattern)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ else \ - ${ECHO_MSG} "=> Checksum mismatch for $$file."; \ - refetchlist="$$refetchlist$$file "; \ - OK="$${OK:-retry}"; \ + ignore="true"; \ + fi; \ + \ + if [ $$ignore = "false" -a -z "$$CKSUM" ]; then \ + ${ECHO_MSG} "=> No $$alg checksum recorded for $$file."; \ + ignore="true"; \ fi; \ + \ + if [ "$$CKSUM" = "IGNORE" ]; then \ + ${ECHO_MSG} "=> $$alg Checksum for $$file is set to IGNORE in distinfo file even though"; \ + ${ECHO_MSG} " the file is not in the "'$$'"{IGNOREFILES} list."; \ + ignore="true"; \ + OK=${FALSE}; \ + fi; \ + \ + if [ $$ignore = "false" ]; then \ + match="false"; \ + for chksum in $$CKSUM; do \ + if [ "$$chksum" = "$$MKSUM" ]; then \ + match="true"; \ + break; \ + fi; \ + done; \ + if [ $$match = "true" ]; then \ + ${ECHO_MSG} "=> $$alg Checksum OK for $$file."; \ + ignored="false"; \ + else \ + ${ECHO_MSG} "=> $$alg Checksum mismatch for $$file."; \ + refetchlist="$$refetchlist$$file "; \ + OK="$${OK:-retry}"; \ + ignored="false"; \ + fi; \ + fi; \ + done; \ + \ + if [ $$ignored = "true" ]; then \ + ${ECHO_MSG} "=> No suitable checksum found for $$file."; \ + OK="${FALSE}"; \ fi; \ - done; \ - for file in ${_IGNOREFILES}; do \ + \ + done; \ + \ + for file in ${_IGNOREFILES}; do \ pattern="`${ECHO_CMD} $$file | ${SED} -e 's/\./\\\\./g'`"; \ - CKSUM2=`${GREP} "($$pattern)" ${MD5_FILE} | ${AWK} '{if(NR<2)print $$4}'`; \ - if [ "$$CKSUM2" = "" ]; then \ - ${ECHO_MSG} "=> No checksum recorded for $$file, file is in "'$$'"{IGNOREFILES} list."; \ - OK="false"; \ - elif [ "$$CKSUM2" != "IGNORE" ]; then \ - ${ECHO_MSG} "=> Checksum for $$file is not set to IGNORE in distinfo file even though"; \ - ${ECHO_MSG} " the file is in the "'$$'"{IGNOREFILES} list."; \ + \ + ignored="true"; \ + alreadymatched="false"; \ + for alg in ${CHECKSUM_ALGORITHMS:U}; do \ + ignore="false"; \ + eval alg_executable=\$$$$alg; \ + \ + if [ $$alg_executable != "NO" ]; then \ + CKSUM=`${GREP} "^$$alg ($$pattern)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + else \ + ignore="true"; \ + fi; \ + \ + if [ $$ignore = "false" ]; then \ + if [ -z "$$CKSUM" ]; then \ + ${ECHO_MSG} "=> No $$alg checksum for $$file recorded (expected IGNORE)"; \ + OK="$$alreadymatched"; \ + elif [ $$CKSUM != "IGNORE" ]; then \ + ${ECHO_MSG} "=> $$alg Checksum for $$file is not set to IGNORE in distinfo file even though"; \ + ${ECHO_MSG} " the file is in the "'$$'"{IGNOREFILES} list."; \ + OK="false"; \ + else \ + ignored="false"; \ + alreadymatched="true"; \ + fi; \ + fi; \ + done; \ + \ + if ( [ $$ignored = "true" ]) ; then \ + ${ECHO_MSG} "=> No suitable checksum found for $$file."; \ OK="false"; \ fi; \ - done; \ - if [ "$${OK:=true}" = "retry" ] && [ ${FETCH_REGET} -gt 0 ]; then \ - ${ECHO_MSG} "===> Refetch for ${FETCH_REGET} more times files: $$refetchlist"; \ - if ( cd ${.CURDIR} && \ + \ + done; \ + \ + if [ "$${OK:=true}" = "retry" ] && [ ${FETCH_REGET} -gt 0 ]; then \ + ${ECHO_MSG} "===> Refetch for ${FETCH_REGET} more times files: $$refetchlist"; \ + if ( cd ${.CURDIR} && \ ${MAKE} ${.MAKEFLAGS} FORCE_FETCH="$$refetchlist" FETCH_REGET="`${EXPR} ${FETCH_REGET} - 1`" fetch); then \ if ( cd ${.CURDIR} && \ ${MAKE} ${.MAKEFLAGS} FETCH_REGET="`${EXPR} ${FETCH_REGET} - 1`" checksum ); then \ OK="true"; \ fi; \ - fi; \ - fi ; \ - if [ "$$OK" != "true" -a ${FETCH_REGET} -eq 0 ]; then \ - ${ECHO_MSG} "===> Giving up on fetching files: $$refetchlist"; \ - ${ECHO_MSG} "Make sure the Makefile and distinfo file (${MD5_FILE})"; \ - ${ECHO_MSG} "are up to date. If you are absolutely sure you want to override this"; \ - ${ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."; \ - exit 1; \ - fi; \ - if [ "$$OK" != "true" ]; then \ - exit 1; \ - fi); \ + fi; \ + fi ; \ + \ + if [ "$$OK" != "true" -a ${FETCH_REGET} -eq 0 ]; then \ + ${ECHO_MSG} "===> Giving up on fetching files: $$refetchlist"; \ + ${ECHO_MSG} "Make sure the Makefile and distinfo file (${MD5_FILE})"; \ + ${ECHO_MSG} "are up to date. If you are absolutely sure you want to override this"; \ + ${ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."; \ + exit 1; \ + fi; \ + if [ "$$OK" != "true" ]; then \ + exit 1; \ + fi \ + ); \ elif [ -n "${_CKSUMFILES:M*}" ]; then \ ${ECHO_MSG} "=> No checksum file (${MD5_FILE})."; \ fi @@ -4652,11 +4656,7 @@ PACKAGE-DEPENDS-LIST?= \ # Print out package names. package-depends: -.if ${OSVERSION} >= 460102 || exists(${LOCALBASE}/sbin/pkg_info) @${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1":"$$3}' -.else - @${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1}' -.endif # Build packages for port and dependencies @@ -5231,5 +5231,43 @@ rmconfig-recursive: done .endif +.if !target(install-desktop-entries) +install-desktop-entries: +.if defined(DESKTOP_ENTRIES) + @(${MKDIR} "${DESKTOPDIR}" 2> /dev/null) || \ + (${ECHO_MSG} "===> Cannot create ${DESKTOPDIR}, check permissions"; exit 1) + @set ${DESKTOP_ENTRIES} XXX; \ + if [ -z "${_DESKTOPDIR_REL}" ]; then \ + ${ECHO_CMD} "@cwd ${DESKTOPDIR}" >> ${TMPPLIST}; \ + fi; \ + while [ $$# -gt 6 ]; do \ + filename="$$4.desktop"; \ + pathname="${DESKTOPDIR}/$$filename"; \ + ${ECHO_CMD} "${_DESKTOPDIR_REL}$$filename" >> ${TMPPLIST}; \ + ${ECHO_CMD} "[Desktop Entry]" > $$pathname; \ + ${ECHO_CMD} "Type=Application" >> $$pathname; \ + ${ECHO_CMD} "Version=0.9.4" >> $$pathname; \ + ${ECHO_CMD} "Encoding=UTF-8" >> $$pathname; \ + ${ECHO_CMD} "Name=$$1" >> $$pathname; \ + if [ -n "$$2" ]; then \ + ${ECHO_CMD} "Comment=$$2" >> $$pathname; \ + fi; \ + if [ -n "$$3" ]; then \ + ${ECHO_CMD} "Icon=$$3" >> $$pathname; \ + fi; \ + ${ECHO_CMD} "Exec=$$4" >> $$pathname; \ + ${ECHO_CMD} "Categories=$$5" >> $$pathname; \ + ${ECHO_CMD} "StartupNotify=$$6" >> $$pathname; \ + shift 6; \ + done; \ + ${ECHO_CMD} "@unexec rmdir ${DESKTOPDIR} 2>/dev/null || true" >> ${TMPPLIST}; \ + if [ -z "${_DESKTOPDIR_REL}" ]; then \ + ${ECHO_CMD} "@cwd ${PREFIX}" >> ${TMPPLIST}; \ + fi +.else + @${DO_NADA} +.endif +.endif + .endif # End of post-makefile section. diff --git a/Mk/bsd.port.subdir.mk b/Mk/bsd.port.subdir.mk index 8d01b37fabc3..b3f988016f6a 100644 --- a/Mk/bsd.port.subdir.mk +++ b/Mk/bsd.port.subdir.mk @@ -107,6 +107,7 @@ TARGETS+= ignorelist TARGETS+= makesum TARGETS+= maintainer TARGETS+= package +TARGETS+= package-recursive TARGETS+= realinstall TARGETS+= reinstall TARGETS+= tags @@ -365,6 +366,7 @@ search: ${PORTSDIR}/${INDEXFILE} -v xkeylim="$${xkeylim:-${PORTSEARCH_XKEYLIM}}" \ -v display="$${display:-${PORTSEARCH_DISPLAY_FIELDS}}" \ 'BEGIN { \ + gsub(/\+/,"\\+",name); \ if (substr(there, 1, length(top)) == top) \ there = "${PORTSDIR}" substr(there, 1 + length(top)); \ therelen = length(there); \ diff --git a/Mk/bsd.tcl.mk b/Mk/bsd.tcl.mk new file mode 100644 index 000000000000..c0bfed148156 --- /dev/null +++ b/Mk/bsd.tcl.mk @@ -0,0 +1,145 @@ +# -*- mode: Makefile; tab-width: 4; -*- +# ex: ts=4 +# +# $FreeBSD$ +# + +.if !defined(_POSTMKINCLUDED) && !defined(Tcl_Pre_Include) + +Tcl_Pre_Include= bsd.tcl.mk +Tcl_Include_MAINTAINER= vsevolod@FreeBSD.org + +# USE_TCL: Depend on tcl to run. In case of incompatible APIs of different +# TCL versions the version can be specified directly. If version +# is not specified (USE_TCL=yes) then the latest version is +# used (8.4 currently). +# Available values are: 84, 83, 82, 81 and 80. +# +# USE_TK: Depend on tk to run. In case of incompatible APIs of different +# TK versions the version can be specified directly. If version +# is not specified (USE_TK=yes) then the latest version is +# used (8.4 currently). +# Available values are: 84, 83, 82, 81 and 80. +## +# TCL_LIBDIR: Path where tcl libraries can be found +# +# TCL_INCLUDEDIR: Path where tcl C headers can be found +## +# TK_LIBDIR: Path where tk libraries can be found +# +# TK_INCLUDEDIR: Path where tk C headers can be found +## +# TCLSH: Path to tclsh executable respecting tcl version +# +# WISH: Path to wish executable respecting tk version +## +# PATCH_TCL_SCRIPTS: List of tcl scripts that need to be patched to replace tclsh +# calls to tclsh${TK_VER} calls. Note that this implies USE_REINPLACE +# as REINPLACE_CMD is used for patching. Also note that post-patch +# target is used. +# +# PATCH_TK_SCRIPTS: List of tcl scripts that need to be patched to replace wish +# calls to wish${TK_VER} calls. Note that this implies USE_REINPLACE +# as REINPLACE_CMD is used for patching. Also note that post-patch +# target is used. + +.if defined(USE_TCL) || defined(USE_TCL_BUILD) + +_TCL_VERSIONS= 84 83 82 81 80 + +.if defined(USE_TCL_BUILD) +USE_TCL= ${USE_TCL_BUILD} +_BUILD= yes +.endif + +.if ${USE_TCL} == "yes" +USE_TCL= 84 +.endif + +TCL_VER:= ${USE_TCL:S/8/8./} + +# Special case +.if ${USE_TCL} == "81" +USE_TCL= tcl81-thread +.endif + +_FOUND= no +.for ver in ${_TCL_VERSIONS} +. if ${USE_TCL} == ${ver} +_FOUND= yes +. if defined(_BUILD) +BUILD_DEPENDS+= tclsh${TCL_VER}:${PORTSDIR}/lang/tcl${USE_TCL} +. else +RUN_DEPENDS+= tclsh${TCL_VER}:${PORTSDIR}/lang/tcl${USE_TCL} +. endif +TCL_INCLUDEDIR= ${LOCALBASE}/include/tcl${TCL_VER} +TCL_LIBDIR= ${LOCALBASE}/lib/tcl${TCL_VER} +TCLSH= ${LOCALBASE}/bin/tclsh${TCL_VER} +. endif +.endfor + +.if ${_FOUND} == "no" +IGNORE= "Unknown TCL version specified: ${USE_TCL}" +.endif +.endif # defined(USE_TCL) + +.if defined(USE_TK) + +_TK_VERSIONS= 84 83 82 81 80 + +.if ${USE_TK} == "yes" +USE_TK= 84 +.endif + +TK_VER:= ${USE_TK:S/8/8./} + +.if defined(USE_TCL) && ${TCL_VER} != ${TK_VER} +IGNORE= "TCL and TK versions must be equal (${TCL_VER} vs ${TK_VER})" +.endif + +_FOUND= no +.for ver in ${_TK_VERSIONS} +. if ${USE_TK} == ${ver} +_FOUND= yes +RUN_DEPENDS+= wish${TK_VER}:${PORTSDIR}/x11-toolkits/tk${USE_TK} +TCL_INCLUDEDIR= ${LOCALBASE}/include/tcl${TK_VER} +TCL_LIBDIR= ${LOCALBASE}/lib/tcl${TK_VER} +TK_INCLUDEDIR= ${LOCALBASE}/include/tk${TK_VER} +TK_LIBDIR= ${LOCALBASE}/lib/tk${TK_VER} +TCLSH= ${LOCALBASE}/bin/tclsh${TK_VER} +WISH= ${LOCALBASE}/bin/wish${TK_VER} +. endif +.endfor + +.if ${_FOUND} == "no" +IGNORE= "Unknown TK version specified: ${USE_TK}" +.endif +.endif # defined(USE_TK) + +.if defined(PATCH_TCL_SCRIPTS) || defined (PATCH_TK_SCRIPTS) +USE_REINPLACE= yes +.endif + +.endif # !defined(_POSTMKINCLUDED) && !defined(Tcl_Pre_Include) + +.if defined(_POSTMKINCLUDED) && !defined(Tcl_Post_Include) + +Tcl_Post_Include= bsd.tcl.mk + +.if defined(PATCH_TCL_SCRIPTS) || defined (PATCH_TK_SCRIPTS) +.if !target(post-patch) +post-patch: +.if defined(PATCH_TCL_SCRIPTS) && defined(TCLSH) +. for tcl_script in ${PATCH_TCL_SCRIPTS} + @${REINPLACE_CMD} -e 's,tclsh,${TCLSH},' ${WRKSRC}/${tcl_script} +. endfor +.endif +.if defined(PATCH_TK_SCRIPTS) && defined(WISH) +. for tk_script in ${PATCH_TK_SCRIPTS} + @${REINPLACE_CMD} -e 's,wish,${WISH},' ${WRKSRC}/${tk_script} +. endfor +.endif +.endif # !target(post-patch) +.endif # defined(PATCH_TCL_SCRIPTS) || defined (PATCH_TK_SCRIPTS) + +.endif # defined(_POSTMKINCLUDED) && !defined(Tcl_Post_Include) |