freebsd-ports/Mk/bsd.gnome.mk
Maxim Sobolev 68d6899ca1 Workarround a bug in make(1) that leads results in --datadir/--localstatedir
not being set properly for some ports. The problem is that ":S" modifier
collapses spaces, even if the regex doesn't match. The following piece of
make(1) "code" illustrates the problem:

foo=    a  b

.if ${foo} != ${foo:S/x//}
all:
        @${ECHO} 'BAD!'
.endif
2001-07-04 18:29:48 +00:00

313 lines
9.1 KiB
Makefile

#-*- mode: Fundamental; tab-width: 4; -*-
# ex:ts=4
#
# $FreeBSD$
# $NetBSD: $
#
# Please view me with 4 column tabs!
.if !defined(_POSTMKINCLUDED)
# Please make sure all changes to this file are past through the maintainer.
# Do not commit them yourself (unless of course you're the Port's Wraith ;).
Gnome_Include_MAINTAINER= gnome@FreeBSD.org
# This section keeps tests for optional software. These work off four
# types of of variables. WANT_, WITH_, HAVE_ and USE_. The logic of
# this is that a port can WANT support for a package, a user specifies
# if they want ports compiles WITH certain features. This section tests
# if we HAVE these features, and the port is then free to USE them.
# The logic of this section is like this:
#
# .if defined(WANT_FOO)
# .if defined(WITH_FOO)
# HAVE_FOO=yes
# .elif defined(WITHOUT_FOO)
# .undef HAVE_FOO
# .elif (if FOO installed)
# HAVE_FOO=yes
# .else
# Print option message
# .endif
# .endif
#
# Although it apears a little more convoluted in the tests.
# Ports can make use of this like so:
#
# WANT_FOO= yes
#
# .include <bsd.port.pre.mk>
#
# .if defined(HAVE_FOO)
# ... Do some things ...
# USE_FOO= yes
# .else
# ... Do some other things ...
# .endif
# The following defines are for the various levels of libraries in the
# GLib/GTK+/GNOME group of software. There are the following options:
#
# WITH_GLIB, WITH_GTK, WITH_ESOUND, WITH_IMLIB, WITH_GNOME:
# - Only set by the user, indicates that they always want
# this setting.
# WITHOUT_GLIB, WITHOUT_GTK, WITHOUT_ESOUND, WITHOUT_IMLIB, WITHOUT_GNOME:
# - Only set by the user, indicates that they never want
# this setting.
#
# The following variables might be set:
#
# HAVE_GLIB, HAVE_GTK:
# yes - found GLib/GTK+ 1.2.x or WITH_GLIB/WITH_GTK set to yes.
# HAVE_ESOUND:
# yes - either found ESound or WITH_ESOUND set to yes.
# HAVE_IMLIB:
# yes - either found Imlib or WITH_IMLIB set to yes.
# HAVE_GNOME:
# yes - either found GNOME or WITH_GNOME set to yes.
.if defined(WANT_ESOUND) && !defined(WITHOUT_ESOUND) && !defined(WITHOUT_ALL)
.if defined(HAVE_ESOUND)
.undef HAVE_ESOUND
.endif
.if defined(WITH_ESOUND) || defined(WITH_ALL)
HAVE_ESOUND= yes
.else
ESD_CONFIG?= ${LOCALBASE}/bin/esd-config
.if exists(${ESD_CONFIG})
HAVE_ESOUND= yes
.else
pre-everything::
@${ECHO_MSG}
@${ECHO_MSG} "If you want to compile with ESound support,"
@${ECHO_MSG} "hit Ctrl-C right now and use \"make WITH_ESOUND=yes\""
@${ECHO_MSG}
.endif
.endif
.endif
.if defined(WANT_GLIB) && !defined(WITHOUT_GLIB) && !defined(WITHOUT_ALL)
.if defined(HAVE_GLIB)
.undef HAVE_GLIB
.endif
.if defined(WITH_GLIB) || defined(WITH_ALL)
HAVE_GLIB= yes
.else
GLIB_CONFIG?= ${LOCALBASE}/bin/glib12-config
.if exists(${GLIB_CONFIG})
HAVE_GLIB= yes
.else
pre-everything::
@${ECHO_MSG}
@${ECHO_MSG} "If you want to compile with GLib support,"
@${ECHO_MSG} "hit Ctrl-C right now and use \"make WITH_GLIB=yes\""
@${ECHO_MSG}
.endif
.endif
.endif
.if defined(WANT_GTK) && !defined(WITHOUT_GTK) && !defined(WITHOUT_ALL)
.if defined(HAVE_GTK)
.undef HAVE_GTK
.endif
.if defined(WITH_GTK) || defined(WITH_ALL)
HAVE_GTK= yes
.else
GTK_CONFIG?= ${X11BASE}/bin/gtk12-config
.if exists(${GTK_CONFIG})
HAVE_GTK= yes
.else
pre-everything::
@${ECHO_MSG}
@${ECHO_MSG} "If you want to compile with GTK+ support,"
@${ECHO_MSG} "hit Ctrl-C right now and use \"make WITH_GTK=yes\""
@${ECHO_MSG}
.endif
.endif
.endif
.if defined(WANT_IMLIB) && !defined(WITHOUT_IMLIB) && !defined(WITHOUT_ALL)
.if defined(HAVE_IMLIB)
.undef HAVE_IMLIB
.endif
.if defined(WITH_IMLIB) || defined(WITH_ALL)
HAVE_IMLIB= yes
.else
IMLIB_CONFIG?= ${X11BASE}/bin/imlib-config
.if exists(${IMLIB_CONFIG})
HAVE_IMLIB= yes
.else
pre-everything::
@${ECHO_MSG}
@${ECHO_MSG} "If you want to compile with Imlib support,"
@${ECHO_MSG} "hit Ctrl-C right now and use \"make WITH_IMLIB=yes\""
@${ECHO_MSG}
.endif
.endif
.endif
.if defined(WANT_GNOME) && !defined(WITHOUT_GNOME) && !defined(WITHOUT_ALL)
.if defined(HAVE_GNOME)
.undef HAVE_GNOME
.endif
.if defined(WITH_GNOME) || defined (WITH_ALL)
HAVE_GNOME= yes
.else
GNOME_CONFIG?= ${X11BASE}/bin/gnome-config
.if exists(${GNOME_CONFIG})
HAVE_GNOME= yes
.else
pre-everything::
@${ECHO_MSG}
@${ECHO_MSG} "If you want to compile with GNOME support,"
@${ECHO_MSG} "hit Ctrl-C right now and use \"make WITH_GNOME=yes\""
@${ECHO_MSG}
.endif
.endif
.endif
.endif
# End of optional part.
.if defined(_POSTMKINCLUDED)
# This section contains the USE_ definitions. These also pass any HAVE_
# options through to the build process so that ports can use them for
# conditional building of components. Also, if optional support has been
# requested, add a packagename suffix, to indicate the change in the port's
# behaviour.
# USE_ESOUND - Says that the port uses ESound.
# USE_GLIB - Says that the port uses the GLib package.
# USE_GTK - Says that the port uses the GTK+ toolkit.
# USE_IMLIB - Says that the port uses the Imlib library.
# USE_GNOMELIBS - Says that the port uses the GNOME libraries.
# USE_GNOMECTRL - Says that the port uses the GNOME control center.
# USE_GNOME - Says that the port uses the GNOME desktop environment.
# These are the only "entry points" into the GNOME distribution that will
# be supported. If you need to use a port that is (say) part of
# the controlcenter metaport, then simply request USE_GNOMECTRL=YES.
#
# Any explicit depends on any of the ports that make up the x11/gnome
# metaport will be periodically eradicated by marking the port BROKEN.
# Please use the guidelines above to help everybody maintain a cohesive
# FreeBSD/GNOME environment.
#
# Unless you're experienced with the GNOME system, we highly recommend
# simply using USE_GNOME=yes if you have GNOME related ports you wish
# to commit. This will certainly be a *guaranteed* interface that won't
# be broken without significant warning. Practically all of your target
# audience will already have the x11/gnome metaport installed, so there
# will be minimal inconvenience in terms of excessive downloads.
#
# Ports using GNOME should also have USE_X_PREFIX defined.
# (Perhaps we should add it?? XXX: aDe)
.if defined(USE_GNOME)
USE_GNOMECTRL= yes
.endif
.if defined(USE_GNOMECTRL)
USE_GNOMELIBS= yes
.endif
.if defined(USE_GNOMELIBS)
USE_IMLIB= yes
USE_ESOUND= yes
.endif
.if defined(USE_IMLIB)
USE_GTK= yes
.endif
.if defined(USE_GTK)
USE_GLIB= yes
.endif
.if defined(USE_ESOUND)
LIB_DEPENDS+= esd.2:${PORTSDIR}/audio/esound
ESD_CONFIG?= ${LOCALBASE}/bin/esd-config
CONFIGURE_ENV+= ESD_CONFIG="${ESD_CONFIG}"
MAKE_ENV+= ESD_CONFIG="${ESD_CONFIG}"
.if defined(HAVE_ESOUND)
PKGNAMESUFFIX= -esound
CONFIGURE_ENV+= HAVE_ESOUND=${HAVE_ESOUND}
MAKE_ENV+= HAVE_ESOUND=${HAVE_ESOUND}
.endif
.endif
.if defined(USE_GLIB)
LIB_DEPENDS+= glib12.3:${PORTSDIR}/devel/glib12
GLIB_CONFIG?= ${LOCALBASE}/bin/glib12-config
CONFIGURE_ENV+= GLIB_CONFIG="${GLIB_CONFIG}"
MAKE_ENV+= GLIB_CONFIG="${GLIB_CONFIG}"
.if defined(HAVE_GLIB)
PKGNAMESUFFIX= -glib
CONFIGURE_ENV+= HAVE_GLIB=${HAVE_GLIB}
MAKE_ENV+= HAVE_GLIB=${HAVE_GLIB}
.endif
.endif
.if defined(USE_GTK)
LIB_DEPENDS+= gtk12.2:${PORTSDIR}/x11-toolkits/gtk12
GTK_CONFIG?= ${X11BASE}/bin/gtk12-config
CONFIGURE_ENV+= GTK_CONFIG="${GTK_CONFIG}"
MAKE_ENV+= GTK_CONFIG="${GTK_CONFIG}"
.if defined(HAVE_GTK)
PKGNAMESUFFIX= -gtk
CONFIGURE_ENV+= HAVE_GTK=${HAVE_GTK}
MAKE_ENV+= HAVE_GTK=${HAVE_GTK}
.endif
.endif
.if defined(USE_IMLIB)
LIB_DEPENDS+= Imlib.5:${PORTSDIR}/graphics/imlib
IMLIB_CONFIG?= ${X11BASE}/bin/imlib-config
CONFIGURE_ENV+= IMLIB_CONFIG="${IMLIB_CONFIG}"
MAKE_ENV+= IMLIB_CONFIG="${IMLIB_CONFIG}"
.if defined(HAVE_IMLIB)
PKGNAMESUFFIX= -imlib
CONFIGURE_ENV+= HAVE_IMLIB=${HAVE_IMLIB}
MAKE_ENV+= HAVE_IMLIB=${HAVE_IMLIB}
.endif
.endif
# Ports which optionally depend on GNOME can add '--datadir=${PREFIX}/share'
# to CONFIGURE_ARGS before including <bsd.port.post.mk> if they do not wish
# to install their data files in /usr/X11R6/share/gnome. Please be aware
# that you will need to make non standard patches to get the rest of the
# files into the correct places. Specifically, the help files and pixmaps
# must still go into /usr/X11R6/share/gnome/help and
# /usr/X11R6/share/gnome/pixmaps respectively. %%DATADIR%% will still be
# defined for you to use.
.if defined(USE_GNOMELIBS)
CONFIGURE_ARGS+=--with-gnome=${PREFIX}
.if !defined(HAVE_GNOME) && ${CONFIGURE_ARGS:S/--localstatedir=//} == ${CONFIGURE_ARGS:S/ / /g}
CONFIGURE_ARGS+=--localstatedir=${PREFIX}/share/gnome
.endif
.if !defined(HAVE_GNOME) && ${CONFIGURE_ARGS:S/--datadir=//} == ${CONFIGURE_ARGS:S/ / /g}
CONFIGURE_ARGS+=--datadir=${PREFIX}/share/gnome
.endif
LIB_DEPENDS+= gnome.5:${PORTSDIR}/x11/gnomelibs
GNOME_CONFIG?= ${X11BASE}/bin/gnome-config
CONFIGURE_ENV+= GNOME_CONFIG="${GNOME_CONFIG}"
MAKE_ENV+= GNOME_CONFIG="${GNOME_CONFIG}"
.if defined(HAVE_GNOME)
PKGNAMESUFFIX= -gnome
CONFIGURE_ENV+= HAVE_GNOME=${HAVE_GNOME}
MAKE_ENV+= HAVE_GNOME=${HAVE_GNOME}
PLIST_SUB+= GNOME:="" NOGNOME:="@comment " DATADIR="share/gnome"
.endif
.endif
.if defined(USE_GNOMECTRL)
LIB_DEPENDS+= capplet.5:${PORTSDIR}/sysutils/gnomecontrolcenter
.endif
.if defined(USE_GNOME)
LIB_DEPENDS+= panel_applet.5:${PORTSDIR}/x11/gnomecore
.endif
.if defined(WANT_GNOME) && !defined(HAVE_GNOME)
PLIST_SUB+= GNOME:="@comment " NOGNOME:="" DATADIR="share"
.endif
.endif
# End of use part.