This chapter explains the GNOME framework as used by ports. The framework can be loosely divided into the base components, GNOME desktop components, and a few special macros that simplify the work of port maintainers.
Adding this variable to the port allows the use of
	the macros and components defined in
	bsd.gnome.mk.  The code in
	bsd.gnome.mk adds the needed
	build-time, run-time or library dependencies
	or the handling of special files.
	GNOME applications under FreeBSD use the
	USE_GNOME infrastructure.  Include all the
	needed components as a space-separated list.  The
	USE_GNOME components are divided into
	these virtual lists: basic components, GNOME 3 components
	and legacy components.  If the port needs only GTK3 libraries,
	this is the shortest way to define it:
USE_GNOME= gtk30
USE_GNOME components automatically
	add the dependencies they need.  Please see
	Section 6.11, “GNOME Components” for an exhaustive
	list of all USE_GNOME components and which
	other components they imply and their dependencies.
Here is an example Makefile for a
	GNOME port that uses many of the techniques outlined in this
	document.  Please use it as a guide for creating new
	ports.
# $FreeBSD$ PORTNAME= regexxer DISTVERSION= 0.10 CATEGORIES= devel textproc gnome MASTER_SITES= GNOME MAINTAINER= kwm@FreeBSD.org COMMENT= Interactive tool for performing search and replace operations USES= gettext gmake localbase:ldflags pathfix pkgconfig tar:xz GNU_CONFIGURE= yes USE_GNOME= gnomeprefix intlhack gtksourceviewmm3 INSTALLS_ICONS= yes GLIB_SCHEMAS= org.regexxer.gschema.xml .include <bsd.port.mk>
The USE_GNOME macro without any
	  arguments does not add any dependencies to the port.
	  USE_GNOME cannot be set after
	  bsd.port.pre.mk.
This section explains which macros are available and how
	they are used.  Like they are used in the above example.  The
	Section 6.11, “GNOME Components” has a more in-depth
	explanation.  USE_GNOME has to be set for
	these macros to be of use.
INSTALLS_ICONSGTK+ ports which install
	      Freedesktop-style icons to
	      ${LOCALBASE}/share/icons should use
	      this macro to ensure that the icons are cached and will
	      display correctly.  The cache file is named
	      icon-theme.cache.  Do not include
	      that file in pkg-plist.  This macro
	      handles that automatically.  This macro is not needed
	      for Qt, which uses an
	      internal method.
GLIB_SCHEMASList of all the glib schema files the port installs. The macro will add the files to the port plist and handle the registration of these files on install and deinstall.
The glib schema files are written in
	      XML and end with the
	      gschema.xml extension.  They are
	      installed in the
	      share/glib-2.0/schemas/ directory.
	      These schema files contain all application config values
	      with their default settings.  The actual database used
	      by the applications is built by
	      glib-compile-schema, which is
	      run by the GLIB_SCHEMAS macro.
GLIB_SCHEMAS=foo.gschema.xml
Do not add glib schemas to the
		pkg-plist.  If they are listed in
		pkg-plist, they will not be
		registered and the applications might not work
		properly.
GCONF_SCHEMASList all the gconf schema files. The macro will add the schema files to the port plist and will handle their registration on install and deinstall.
GConf is the XML-based database
	      that virtually all GNOME applications use for storing
	      their settings.  These files are installed into the
	      etc/gconf/schemas directory.  This
	      database is defined by installed schema files that are
	      used to generate %gconf.xml key
	      files.  For each schema file installed by the port,
	      there must be an entry in the
	      Makefile:
GCONF_SCHEMAS=my_app.schemas my_app2.schemas my_app3.schemas
Gconf schemas are listed in the
		GCONF_SCHEMAS macro rather than
		pkg-plist.  If they are listed in
		pkg-plist, they will not be
		registered and the applications might not work
		properly.
INSTALLS_OMFOpen Source Metadata Framework
	      (OMF) files are commonly used by
	      GNOME 2 applications.  These files contain the
	      application help file information, and require special
	      processing by ScrollKeeper/rarian.  To properly register
	      OMF files when installing GNOME
	      applications from packages, make sure that
	      omf files are listed in
	      pkg-plist and that the port
	      Makefile has
	      INSTALLS_OMF defined:
INSTALLS_OMF=yes
When set, bsd.gnome.mk
	      automatically scans pkg-plist and
	      adds appropriate @exec and
	      @unexec directives for each
	      .omf to track in the
	      OMF registration database.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
    documentation may be
    sent to <freebsd-questions@FreeBSD.org>.
    Send questions about this document to <freebsd-doc@FreeBSD.org>.