xref: /openbsd-src/share/man/man5/port-modules.5 (revision 99fd087599a8791921855f21bd7e36130f39aadc)
1.\"	$OpenBSD: port-modules.5,v 1.243 2020/01/26 11:11:39 jasper Exp $
2.\"
3.\" Copyright (c) 2008 Marc Espie
4.\"
5.\" All rights reserved.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
17.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
20.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26.\"
27.Dd $Mdocdate: January 26 2020 $
28.Dt PORT-MODULES 5
29.Os
30.Sh NAME
31.Nm port-modules
32.Nd documentation and conventions used in port modules
33.Sh DESCRIPTION
34The
35.Ox
36Ports framework is based on a gigantic makefile named
37.Xr bsd.port.mk 5 .
38.Pp
39In order to curb unwieldy growth, parts of the framework
40that are not always needed have been set apart in optional
41files called
42.Nm port modules ,
43which are retrieved as needed through the
44.Ev MODULES
45variable of
46.Xr bsd.port.mk 5 .
47.Pp
48Some of these modules correspond to basic mechanisms which are not
49always needed, such as GNU autoconf, or perl5.
50.Pp
51For convenience, setting
52.Ev CONFIGURE_STYLE
53in a port's main Makefile is enough to get perl5 or autoconf support, but
54.Ar gnu ,
55.Ar imake
56and
57.Ar perl5
58are actually modules, and there is some glue in
59.Xr bsd.port.mk 5
60that magically adds the required module in that case.
61This doesn't work when parsing modules.
62For instance, if you set
63.Li CONFIGURE_STYLE=gnu
64in a module, you also need to
65.Li MODULES += gnu .
66.Pp
67Other modules correspond to shortcuts for using some other ports as
68dependencies without needing to hardcode too much, such as
69the qt ports.
70.Sh THE MODULES LOOK-UP MECHANISM
71The variable
72.Ev MODULES
73should contain a list of module names.
74Some core modules are a single word, all other modules should be
75${PKGPATH}.
76If the module is
77.Pa some/dir/portname ,
78the ports framework will look for a file named
79.Pa ${PORTSDIR}/some/dir/portname/portname.port.mk
80and include it.
81.Pp
82Most modules should conform to this syntax.
83The historic practice of having a redirection file directly under
84.Pa ${PORTSDIR}/infrastructure/mk
85is deprecated for new modules.
86.Pp
87Modules may refer to each other.
88The modules mechanism has specific recursion handling such that
89adding
90.Li MODULES += foo/bar
91to a module will work as expected.
92.Sh NAMING CONVENTIONS
93Since there is no actual scope in makefiles, everything defined within
94a module will be global to the ports framework, and thus may interfere
95with other ports.
96.Pp
97As far as possible, all variables and targets belonging to a module named
98.Pa some/dir/foo
99should be named
100.Ev MODFOO_*
101and
102.Ar modfoo_* .
103.Pp
104Following the same conventions as
105.Xr bsd.port.mk 5 ,
106internal variables and targets not intended for user consumption should be
107named
108.Ev _MODFOO_*
109and
110.Ar _modfoo_* .
111.Pp
112For instance, if a module wants some value to be available for the rest
113of the world, it should define
114.Ev MODFOO_VARNAME ,
115with a name matching the basic infrastructure as far as possible.
116That is, a port that defines specific dependencies will usually
117define
118.Ev MODFOO_WANTLIB ,
119.Ev MODFOO_LIB_DEPENDS ,
120and
121.Ev MODFOO_RUN_DEPENDS ,
122as appropriate.
123.Pp
124As an exception to the naming mechanism, some ports have several distinct
125versions in the ports tree, say
126.Pa x11/qt3
127and
128.Pa x11/qt4 .
129Instead of using the namespace
130.Ev MODQT3* ,
131variables will usually drop the version suffix and be simply called
132.Ev MODQT_*
133so that a port using the module can be switched from version to version
134without needing to change everything.
135.Pp
136It is highly desirable to define names in both namespaces for such ports,
137for example to define both
138.Ev MODQT3_LIB_DEPENDS
139and
140.Ev MODQT_LIB_DEPENDS .
141Normal client ports will use
142.Ev MODQT_LIB_DEPENDS ,
143but a port may exceptionally import both modules with
144.Li MODULES += x11/qt3 x11/qt4
145and differentiate between qt3 and qt4 needs with
146.Ev MODQT3_LIB_DEPENDS
147and
148.Ev MODQT4_LIB_DEPENDS .
149See
150.Pa print/poppler
151for an example.
152.Sh OVERRIDING TARGET BEHAVIOR
153The main framework contains several hooks that allow ports to override
154normal behavior.
155This evolved as an ad-hoc framework, where only hooks that turned out
156to be needed were added.
157If several modules define the same hook, hook behaviors will be
158invoked in sequence.
159.Bl -tag -width do-configure
160.It Cm extract
161There is a
162.Cm post-extract
163hook that can be activated by defining
164.Ev MODFOO_post-extract .
165It will be run right after
166.Cm post-extract .
167.It Cm patch
168There is a
169.Cm post-patch
170hook that can be activated by defining
171.Ev MODFOO_post-patch .
172It will be run right after
173.Cm post-patch .
174.It Cm gen
175There is a
176.Cm gen
177hook that can be activated by defining
178.Ev MODFOO_gen .
179It will be run right after
180.Cm do-gen
181and before
182.Ev REORDER_DEPENDENCIES
183touches things.
184.It Cm configure
185There is a
186.Cm pre-configure
187hook that can be activated by defining
188.Ev MODFOO_pre-configure .
189It will be run right after
190.Cm pre-configure .
191The normal
192.Cm do-configure
193behavior is to invoke all
194.Ev MODFOO_configure
195contents that are defined in
196.Ev CONFIGURE_STYLE .
197By default,
198.Cm configure
199will do nothing.
200.Pp
201Some
202.Ev CONFIGURE_STYLE
203values, namely perl, gnu, imake, and autoconf,
204will automatically import the correct module.
205User-defined modules must both add to
206.Ev CONFIGURE_STYLE
207and import the correct module to override behavior.
208.Pp
209Contrary to other hooks, module behavior is not invoked in
210addition to
211.Cm do-configure ,
212but as the normal configure process.
213If
214.Cm do-configure
215is overridden, normal hook processing will not happen.
216.It Cm fake
217There is a
218.Cm pre-fake
219hook that can be activated by defining
220.Ev MODFOO_pre-fake .
221This will be invoked right after
222.Xr mtree 8 ,
223and before the normal
224.Cm pre-fake
225behavior.
226.Pp
227This can occasionally be used for ports that require some specific
228fake installation setup that will be provided by runtime dependencies.
229.It Cm install
230There is a
231.Cm post-install
232hook that can be activated by defining
233.Ev MODFOO_post-install .
234This will be invoked at the end of
235.Cm install ,
236right after the normal
237.Cm post-install
238behavior.
239.El
240.Pp
241Some targets, such as
242.Cm do-build
243or
244.Cm do-install ,
245can't be overridden simply.
246A module that, for instance, requires specific
247.Cm do-build
248behavior should do so in two steps:
249.Bl -bullet
250.It
251Define a variable named
252.Ev MODFOO_BUILD_TARGET
253that contains the commands necessary for
254.Cm do-build :
255.Bd -literal -offset indent
256MODFOO_BUILD_TARGET = cmd1; cmd2
257.Ed
258.It
259Override
260.Cm do-build
261only if it's not already defined by the port proper:
262.Bd -literal -offset indent
263\&.if !target(do-build)
264do-build:
265	@${MODFOO_BUILD_TARGET}
266\&.endif
267.Ed
268.El
269That way, if several modules require specific actions for those targets,
270the end user can choose the appropriate order in which to run the actions:
271.Bd -literal -offset indent
272do-build:
273	@${MODBAR_BUILD_TARGET}
274	@${MODFOO_BUILD_TARGET}
275	...
276.Ed
277.Sh OVERRIDING VARIABLE BEHAVIOR
278Some variables can be overridden by modules.
279Be very cautious, as this can make the module difficult to use,
280or interact badly with other modules.
281As a rule, always provide the override as:
282.Pp
283.Dl VARIABLE ?= value
284.Pp
285and provide a module-specific variable with the same value:
286.Pp
287.Dl MODFOO_VARIABLE = value .
288.Pp
289The following variables can be overridden in a relatively safe fashion:
290.Ev ALL_TARGET ,
291.Ev CONFIGURE_SCRIPT ,
292.Ev DESTDIRNAME ,
293.Ev DIST_SUBDIR ,
294.Ev DISTNAME ,
295.Ev DISTFILES ,
296.Ev EXTRACT_SUFX ,
297.Ev FAKE_FLAGS ,
298.Ev FETCH_MANUALLY ,
299.Ev HOMEPAGE ,
300.Ev IGNORE ,
301.Ev IS_INTERACTIVE ,
302.Ev LIBTOOL_FLAGS ,
303.Ev MAKE_FILE ,
304.Ev MASTER_SITES ,
305.Ev MULTI_PACKAGES ,
306.Ev NO_BUILD ,
307.Ev NO_TEST ,
308.Ev PATCH_LIST ,
309.Ev PKG_ARCH ,
310.Ev PKGNAME* ,
311.Ev PREFIX ,
312.Ev TEST_TARGET ,
313.Ev TEST_IS_INTERACTIVE ,
314.Ev REORDER_DEPENDENCIES ,
315.Ev SEPARATE_BUILD ,
316.Ev USE_GMAKE ,
317.Ev USE_LIBTOOL .
318.Pp
319The following variables can be added to in a relatively safe fashion:
320.Ev BUILD_DEPENDS ,
321.Ev CATEGORIES ,
322.Ev CONFIGURE_ARGS ,
323.Ev CONFIGURE_ENV ,
324.Ev ERRORS ,
325.Ev FAKE_FLAGS ,
326.Ev FLAVOR ,
327.Ev FLAVORS ,
328.Ev INSTALL_TARGET ,
329.Ev LIB_DEPENDS ,
330.Ev MAKE_ENV ,
331.Ev MAKE_FLAGS ,
332.Ev PKG_ARGS ,
333.Ev PSEUDO_FLAVORS ,
334.Ev TEST_DEPENDS ,
335.Ev REORDER_DEPENDENCIES ,
336.Ev RUN_DEPENDS ,
337.Ev SUBST_VARS ,
338.Ev WANTLIB .
339.Sh SPECIFIC MODULE INTERACTIONS
340Some modules correspond to extra ports that will be used mostly as
341.Ev BUILD_DEPENDS
342or
343.Ev RUN_DEPENDS .
344Such modules can safely append values directly to the
345.Ev BUILD_DEPENDS ,
346.Ev RUN_DEPENDS ,
347.Ev LIB_DEPENDS ,
348and
349.Ev WANTLIB
350variables, as long as they also define module-specific variables for
351all runtime dependencies.
352.Pp
353Simple client ports will use the module directly, and thus inherit extra
354build and runtime dependencies.
355.Pp
356More sophisticated ports can use
357.Ev MULTI_PACKAGES
358to select specific behavior: build-time dependencies will always be
359needed.
360Runtime dependencies will be selected on a subpackage basis,
361since runtime dependencies such as
362.Ev LIB_DEPENDS-sub
363do not inherit the default
364.Ev LIB_DEPENDS
365value.
366The client port's author must only bear in mind that external modules
367may add values to the default
368.Ev WANTLIB ,
369.Ev LIB_DEPENDS ,
370and
371.Ev RUN_DEPENDS ,
372and thus that it is not safe to inherit from it blindly.
373.Pp
374Modules are imported during
375.Pp
376.Dl .include <bsd.port.mk>
377.Pp
378Thus they can be affected by user choices such as setting a variable
379to Yes or No.
380Modules may make decisions based on documented
381.Ev MODFOO_BEHAVIOR
382values.
383.Pp
384When modules are processed, only a few
385.Xr bsd.port.mk 5
386variables are already defined.
387Modules may depend upon the following variables already having a sane
388value:
389.Ev DISTDIR ,
390.Ev LOCALBASE ,
391.Ev NO_DEPENDS ,
392.Ev PKGPATH ,
393.Ev PORTSDIR ,
394.Ev X11BASE
395and all arch-dependent constants from
396.Xr bsd.port.arch.mk 5 ,
397such as
398.Ev PROPERTIES
399or
400.Ev LP64_ARCHS .
401Note that this is only relevant for tests.
402It is perfectly okay to define variables or targets that depend on the
403basic ports framework without having to care whether that variable is
404already defined, since
405.Xr make 1
406performs lazy evaluation.
407.Sh CORE MODULES DOCUMENTATION
408The following modules are available.
409.Bl -tag -width do-configure
410.It apache-module
411.It cpan
412For perl ports coming from CPAN.
413Wrapper around the normal perl module that fetches the file from
414the correct location depending on
415.Ev DISTNAME ,
416and sets a default
417.Ev PKGNAME .
418Also affects
419.Ev TEST_DEPENDS ,
420.Ev CONFIGURE_STYLE ,
421.Ev PKG_ARCH ,
422and
423.Ev CATEGORIES .
424.Pp
425Some CPAN modules are only indexed by author, set
426.Li CPAN_AUTHOR=ID
427to locate the right directory.
428.Pp
429If no
430.Ev HOMEPAGE
431is defined, it will default to
432.Pa http://search.cpan.org/dist/${DISTNAME:C/-[^-]*$//}/
433.Pp
434User settings: set
435.Ev CPAN_REPORT
436to Yes,
437.Ev CPAN_REPORT_DB
438to a valid directory,
439and
440.Ev CPAN_REPORT_FROM
441to a valid email address to automate the reporting
442of regression tests to CPAN.
443.Pp
444If
445.Ev MODCPAN_EXAMPLES
446is set, the following variables will be set.
447.Ev MODCPAN_EXAMPLES_DIST
448will hold the default directory in the distfile with
449example scripts.
450.Ev MODCPAN_EXAMPLES_DIR
451will be set to the standard installation directory for
452examples.
453Sets the
454.Cm post-install
455target if none has been defined to install the examples,
456otherwise
457.Ev MODCPAN_POST_INSTALL
458should be used as such:
459.Bd -literal
460post-install:
461	...
462	${MODCPAN_POST_INSTALL}
463.Ed
464.It databases/mariadb
465Adds small framework for testing ports that require running MariaDB.
466Defines
467.Ev MODMARIADB_TEST_TARGET
468which consists actual commands to run in
469.Cm do-test
470target.
471If this target isn't defined, it will be added automatically.
472.Pp
473The actual test command to be run could be specified in the
474.Ev MODMARIADB_TEST_CMD .
475Default is similar to what
476.Xr bsd.port.mk 5
477runs itself.
478.Pp
479The MariaDB server being started will listen on UNIX domain socket
480only, minimizing impact on running system.
481The path to socket is recorded in
482.Ev MODMARIADB_TEST_SOCKET .
483Any local user will be able to connect without password.
484.Pp
485If the
486.Ev MODMARIADB_TEST_DBNAME
487variable is set, the database with such name will be set up before
488running actual test command.
489Otherwise (default), the test is responsible to call
490.Xr mysqladmin 1
491itself, if needed.
492.Pp
493The
494.Pa databases/mariadb,-server
495will get added to
496.Ev TEST_DEPENDS ,
497but not to any other
498.Ev *_DEPENDS .
499The
500.Ev MODMARIADB_CLIENT_ARGS
501and
502.Ev MODMARIADB_ADMIN_ARGS
503variables hold arguments for
504.Xr mysql 1
505and
506.Xr mysqladmin 1 ,
507respectively; those argument lists could be used in test scripts
508for connecting to test server, if they aren't satisfied by environment.
509.It databases/postgresql
510Adds small framework for testing ports that require running Postgres.
511Defines
512.Ev MODPOSTGRESQL_TEST_TARGET
513which consists actual commands to run in
514.Cm do-test
515target.
516If this target isn't defined, it will be added automatically.
517.Pp
518The actual test command to be run could be specified in the
519.Ev MODPOSTGRESQL_TEST_CMD .
520Default is similar to what
521.Xr bsd.port.mk 5
522runs itself.
523.Pp
524The Postgres server being started will listen on UNIX domain socket
525only, minimizing impact on running system.
526The path to directory where socket will be created is set by
527.Ev MODPOSTGRESQL_TEST_PGHOST ,
528defaulting to
529.Pa ${WRKDIR} .
530Any local user will be able to connect without password.
531.Pp
532If the
533.Ev MODPOSTGRESQL_TEST_DBNAME
534variable is set, the database with such name will be set up before
535running actual test command.
536Otherwise (default), the test is responsible to call
537.Xr initdb 1
538itself.
539.Pp
540The
541.Pa databases/postgresql,-server
542will get added to
543.Ev TEST_DEPENDS ,
544but not to any other
545.Ev *_DEPENDS .
546.It devel/cmake
547Adds
548.Pa devel/cmake
549to
550.Ev BUILD_DEPENDS
551and fills up
552.Ev CONFIGURE_ARGS ,
553.Ev CONFIGURE_ENV
554and
555.Ev MAKE_ENV .
556Sets up
557.Cm configure
558target.
559If
560.Ev CONFIGURE_STYLE
561was not set before, sets its value to `cmake'.
562Changes default value of
563.Ev SEPARATE_BUILD
564to `Yes' because modern CMake requires out-of-source build anyway.
565Changes
566.Ev TEST_TARGET
567to `test' as this is standard for CMake projects.
568Also this module has the following knobs:
569.Bl -tag -width Ds
570.It MODCMAKE_WANTCOLOR
571If set to `Yes', CMake will colorize its output.
572Should not be used in ports Makefiles.
573Default value is `No'.
574.It MODCMAKE_VERBOSE
575If set to `Yes', CMake will print details during configure and build
576stages about exact command being run, etc.
577Should not be used in ports Makefiles.
578Default value is `Yes'.
579.It MODCMAKE_DEBUG
580If set to `Yes', CMake will produce a debug build instead of a release
581build.
582The exact effects on the build process depend on settings specified in
583the CMake config files.
584Default value is `No'.
585.El
586Also,
587.Sq nojunk
588is added to DPB_PROPERTIES because CMake's include files parser cheats
589too much.
590.It devel/cargo
591Automates download and compilation of dependencies of a Rust project using
592.Xr cargo 1 .
593During
594.Cm fetch ,
595static dependencies ("crates") listed in
596.Ev MODCARGO_CRATES
597are downloaded using
598.Ev MODCARGO_DIST_SUBDIR
599as
600.Ev DIST_SUBDIR .
601During
602.Cm post-extract ,
603crates defined in
604.Ev MODCARGO_CRATES
605are moved to the
606.Ev MODCARGO_VENDOR_DIR
607directory.
608During
609.Cm post-patch ,
610crate-metadata are generated using
611.Pa devel/cargo-generate-vendor .
612With
613.Ev CONFIGURE_STYLE
614set to
615.Sq cargo ,
616cargo is configured to use
617.Ev MODCARGO_VENDOR_DIR
618instead of the standard crates-io network source.
619Finally, any crates listed in
620.Ev MODCARGO_CRATES_UPDATE
621are updated.
622.Ev MODCARGO_RUSTFLAGS
623can be used to pass custom flags to all
624.Xr rustc 1
625invocations.
626.Pp
627.Pa lang/rust ,
628.Pa devel/cargo
629and
630.Pa devel/cargo-generate-vendor
631are added to
632.Ev BUILD_DEPENDS .
633By default
634.Ev MASTER_SITES9
635is used to download the crates.
636.Pp
637This module defines:
638.Bl -tag -width MODCARGO_CRATES_UPDATE
639.It MODCARGO_CARGOTOML
640Path to cargo manifest.
641Defaults to
642.Pa ${WRKSRC}/Cargo.toml .
643.It MODCARGO_CRATES
644Crates that will be downloaded by the module.
645.It MODCARGO_CRATES_UPDATE
646List of crates to update, overriding the version listed in Cargo.lock.
647.It MODCARGO_FEATURES
648List of features to be used when building.
649.It MODCARGO_VENDOR_DIR
650Name of the local directory for vendoring crates.
651Defaults to
652.Pa ${WRKSRC}/modcargo-crates .
653.El
654.Pp
655This module adds three
656.Xr make 1
657targets:
658.Bl -tag -width modcargo-gen-crates-licenses
659.It Cm modcargo-metadata
660Rerun the generation of crates' metadata.
661.It Cm modcargo-gen-crates
662Generate the
663.Ev MODCARGO_CRATES
664list from Cargo.lock (a preliminary crates list is not required).
665.It Cm modcargo-gen-crates-licenses
666Generate the
667.Ev MODCARGO_CRATES
668list with license information from crates present in the
669.Ev MODCARGO_VENDOR_DIR
670directory.
671.El
672.It devel/dconf
673Sets
674.Ev CONFIGURE_ARGS ,
675.Ev BUILD_DEPENDS
676and
677.Ev RUN_DEPENDS .
678This module is used by ports installing gsettings schemas under
679.Pa ${PREFIX}/share/glib-2.0/schemas/ .
680It requires the following goo in the PLIST:
681.Bd -literal -offset indent
682@exec %D/bin/glib-compile-schemas %D/share/glib-2.0/schemas >/dev/null
683@unexec-delete %D/bin/glib-compile-schemas %D/share/glib-2.0/schemas >/dev/null
684.Ed
685.It devel/gconf2
686A link from
687.Xr gconftool-2 1
688to
689.Xr true 1
690will be put at the front of the
691.Ev PATH .
692Sets
693.Ev CONFIGURE_ARGS ,
694.Ev BUILD_DEPENDS
695and
696.Ev RUN_DEPENDS .
697According to the values of
698.Ev MODGCONF2_LIBDEP ,
699sets
700.Ev LIB_DEPENDS .
701User settings: set
702.Ev MODGCONF2_SCHEMAS_DIR
703to the directory name under
704.Pa ${LOCALBASE}/share/schemas/
705where schemas files will be installed.
706.It devel/meson
707Adds
708.Pa devel/meson
709and
710.Pa devel/ninja
711to
712.Ev BUILD_DEPENDS .
713Sets up
714.Cm configure
715target.
716If
717.Ev CONFIGURE_STYLE
718was not set before, sets its value to `meson'.
719Changes default value of
720.Ev SEPARATE_BUILD
721to `Yes' because meson requires out-of-source build.
722If
723.Ev CONFIGURE_STYLE
724is 'meson',
725.Ev MODMESON_CONFIGURE_ARGS
726and
727.Ev MODMESON_CONFIGURE_ENV
728will add default values to
729.Ev CONFIGURE_ARGS
730and
731.Ev CONFIGURE_ENV .
732Also this module has the following knob:
733.Bl -tag -width Ds
734.It MODMESON_WANTCOLOR
735If set to `Yes', meson will colorize its output.
736Should not be used in ports Makefiles.
737Default value is `No'.
738.El
739.It devel/pmk
740Sets
741.Ev CONFIGURE_SCRIPT ,
742.Ev CONFIGURE_ARGS
743and
744.Ev MODPMK_configure .
745It appends
746.Pa devel/pmk
747to
748.Ev BUILD_DEPENDS .
749.It devel/qmake
750This module automates usage of qmake, independently of the actual
751version of Qt being used.
752This module requires that one of the
753.Pa x11/qt3 ,
754.Pa x11/qt4
755or
756.Pa x11/qt5
757to be used as well.
758.Pp
759If
760.Ev CONFIGURE_STYLE
761was not set before, sets its value to
762.Sq qmake .
763If
764.Ev CONFIGURE_STYLE
765contains
766.Sq qmake
767the module will define each of the
768.Ar do-build
769and
770.Ar do-install
771targets, unless port already defines one; also,
772.Ev SEPARATE_BUILD
773will be set to
774.Sq Yes
775unless it's already set to some value.
776Also, unless
777.Ev NO_TEST
778is set, the
779.Ar do-test
780target will be defined.
781.Pp
782The following variables could be used in qmake-based ports:
783.Bl -tag -width 1234
784.It Ev MODQMAKE_ARGS
785Additional arguments for qmake invocation.
786The module already defines some.
787.It Ev MODQMAKE_INSTALL_ROOT
788Root directory for fake install.
789Normally, it's a WRKINST, but some (broken) ports require another value,
790like PREFIX.
791.It Ev MODQMAKE_PROJECTS
792List of qmake project files to be used, relative to WRKSRC.
793Directories containing those projects could be used as well,
794see qmake documentation for details.
795Defaults to
796.Sq \&. ,
797which means the (only) project in WRKSRC directory.
798.It Ev MODQMAKE_RECURSIVE
799If
800.Sq Yes ,
801then qmake will be run recursively during configure stage;
802otherwise, only projects mentioned in
803.Ev MODQMAKE_PROJECTS
804will be processed during configure stage, and their descendants will
805be visited during main build phase.
806Sometimes a qmake project processing depends on files generated
807by other qmake project during build, and recursive builds break this.
808For Qt4+ defaults to
809.Sq Yes ,
810and Qt3 doesn't support recursive configuring.
811.It Ev MODQMAKE_build
812Actual commands that module will use to build all
813.Ev MODQMAKE_PROJECTS
814provided.
815To be used in complicated cases, when port have to use its own
816.Ar do-build
817target or mix different
818.Ev CONFIGURE_STYLE
819values.
820.It Ev MODQMAKE_install
821Same as for
822.Ev MODQMAKE_build ,
823but used in
824.Ar do-install
825stage.
826.El
827.It devel/scons
828Adds
829.Pa devel/scons
830to
831.Ev BUILD_DEPENDS .
832Sets
833.Ev MODSCONS_BIN
834and
835.Ev MODSCONS_ENV .
836Also defines an overridable
837.Ev MODSCONS_FLAGS .
838It provides a
839.Cm do-build
840and
841.Cm do-install
842targets that can be overridden in the port Makefile.
843.It font
844Used for ports which primarily install fonts.
845Affects
846.Ev PKG_ARCH
847and
848.Ev EXTRACT_SUFX .
849Appends to
850.Ev CATEGORIES .
851When
852.Ev TYPEFACE
853is set in combination with
854.Ev V
855or
856.Ev VERSION
857it sets
858.Ev PKGNAME .
859Also sets
860.Ev FONTDIR ,
861.Ev FONTTYPES
862and
863.Ev FONT_DISTDIR .
864A
865.Cm do-install
866target is provided if the port tself does not provide it.
867.It fortran
868Sets
869.Ev MODFORTRAN_LIB_DEPENDS ,
870.Ev MODFORTRAN_WANTLIB ,
871.Ev MODFORTRAN_BUILD_DEPENDS .
872Set
873.Ev MODFORTRAN_COMPILER
874to `gfortran', or `flang', depending on what the port requires.
875The default is `gfortran'.
876The dependencies are chosen according to
877.Ev MODFORTRAN_COMPILER .
878.It gcc4
879If
880.Ev COMPILER_VERSION
881is not gcc4 (defined by
882.Pa /usr/share/mk/bsd.own.mk ) ,
883and architecture is in
884.Ev MODGCC4_ARCHS ,
885then the gcc4 compilers will be put at the front of the path.
886By default, only C language support is included by this module.
887If other languages are needed, they must be listed in
888.Ev MODGCC4_LANGS
889(e.g. c++, fortran).
890The
891.Ev MODGCC4_VERSION
892variable can be used to change the version of gcc.
893By default gcc 4.9 is used.
894If
895.Ev MODGCC4_LANGS
896contains c++, this module provides
897.Ev MODGCC4_CPPLIBDEP
898and
899.Ev MODGCC4_CPPWANTLIB .
900.It gnu
901This module is documented in the main
902.Xr bsd.port.mk 5
903manpage.
904.It imake
905This module is documented in the main
906.Xr bsd.port.mk 5
907manpage.
908.It java
909Set
910.Li MODJAVA_VER=x.y
911to use exactly the JDK x.y,
912.Li MODJAVA_VER=x.y+
913to use any x.y or higher version.
914Set
915.Li MODJAVA_JRERUN=Yes
916if the port only needs the JRE at runtime.
917The module sets
918.Ev JAVA_HOME ,
919.Ev ONLY_FOR_ARCHS ,
920.Ev MODJAVA_RUN_DEPENDS ,
921.Ev MODJAVA_SHARE_DIR ,
922.Ev MODJAVA_JAR_DIR ,
923.Ev MODJAVA_EXAMPLE_DIR
924and
925.Ev MODJAVA_DOC_DIR .
926It appends to
927.Ev BUILD_DEPENDS ,
928.Ev RUN_DEPENDS ,
929.Ev CATEGORIES
930and
931.Ev SUBST_VARS .
932If
933.Li MODJAVA_BUILD=ant
934then this module provides
935.Ev MODJAVA_BUILD_DIR ,
936.Ev MODJAVA_BUILD_FILE
937and
938.Ev MODJAVA_BUILD_TARGET_NAME ,
939as well as a
940.Cm do-build
941target (if not already defined).
942It heeds
943.Ev NO_BUILD .
944.It lang/clang
945Similar to gcc3 and gcc4 modules.
946If architecture is in MODCLANG_ARCHS, the CLang compilers will be
947put at the front of the path.
948By default, only C language support is included by this module.
949If other languages are needed, they must be listed in
950.Ev MODCLANG_LANGS
951(e.g. c++).
952Sets
953.Ev MODCLANG_VERSION
954which is also appended to
955.Ev SUBST_VARS .
956.It lang/erlang
957.It lang/ghc
958Sets
959.Ev ONLY_FOR_ARCHS ,
960.Ev MODGHC_VER ,
961.Ev BUILD_DEPENDS ,
962and
963.Ev RUN_DEPENDS .
964Build and further actions are based on the list of values in
965.Ev MODGHC_BUILD :
966.Bl -tag -width register
967.It Ar nort
968no runtime dependency on
969.Pa lang/ghc
970nor the hs- prefix to
971.Ev PKGNAME
972will be added,
973.It Ar cabal
974get the typical Cabal targets defined,
975.It Ar haddock
976generate API documentation using
977.Pa devel/haddock ,
978.It Ar register
979create and include register/unregister scripts,
980.It Ar hackage
981the distfiles are available on Hackage.
982.El
983.Pp
984Also affects
985.Ev CATEGORIES ,
986.Ev CONFIGURE_STYLE
987and
988.Ev SUBST_VARS .
989.Cm do-build ,
990.Cm do-install
991and
992.Cm do-test
993targets are provided if the port itself didn't set them.
994If
995.Ar register
996has been set, the PLIST needs to be modified in order to
997add the relevant @exec/@unexec lines.
998This module will run the Setup script and ensure the documentation
999will be built (if
1000.Ar haddock
1001has been set), and that the package is
1002registered as a library usable by
1003.Pa lang/ghc
1004(if
1005.Ar register
1006has been set).
1007Extra arguments and environment additions for the Setup configure
1008command can be specified with
1009.Ev MODGHC_SETUP_CONF_ARGS
1010and
1011.Ev MODGHC_SETUP_CONF_ENV .
1012.It lang/go
1013Adds Go toolchain support.
1014Requires
1015.Ev ALL_TARGET
1016to be set to canonical Go import path of port.
1017(Module sets it automatically for ports that use
1018.Ev GH_ACCOUNT
1019and
1020.Ev GH_PROJECT
1021macros.)
1022.Pp
1023During execution of
1024.Cm pre-configure
1025target module moves source code from
1026.Pa ${MODGO_SUBDIR}
1027to
1028.Pa ${WRKSRC} ,
1029subdirectory of
1030.Pa ${MODGO_WORKSPACE}
1031- specially-crafted Go workspace located at
1032.Pa ${WRKDIR}/go .
1033During
1034.Cm do-build
1035module calls
1036.Dq go install
1037with
1038.Ev GOPATH
1039set to
1040.Pa ${MODGO_WORKSPACE} ,
1041runs its output through sed to prevent writes outside
1042.Ev WRKDIR
1043sandbox and sends output to
1044.Xr sh 1 .
1045During
1046.Cm do-install
1047it copies executables from
1048.Pa ${MODGO_WORKSPACE}/bin
1049to
1050.Pa ${PREFIX}/bin ,
1051and/or directories
1052.Pa ${MODGO_WORKSPACE}/pkg
1053and
1054.Pa ${MODGO_WORKSPACE}/src
1055to
1056.Pa ${PREFIX}/go ,
1057depending on
1058.Ev MODGO_TYPE
1059contents.
1060.Pp
1061Sets
1062.Ev BUILD_DEPENDS ,
1063.Ev RUN_DEPENDS ,
1064.Ev ALL_TARGET ,
1065.Ev TEST_TARGET ,
1066.Ev ONLY_FOR_ARCHS ,
1067.Ev SEPARATE_BUILD ,
1068and
1069.Ev WRKSRC .
1070.Pp
1071Appends to
1072.Ev CATEGORIES .
1073.Pp
1074Defines:
1075.Bl -tag -width MODGO_WORKSPACE
1076.It Ev MODGO_TYPE
1077Type of port.
1078May be any combination of:
1079.Bl -tag -width lib
1080.It bin
1081ordinary binary, which should be installed to
1082.Pa ${PREFIX}/bin ,
1083.It lib
1084library, which should come with source code.
1085.El
1086.Pp
1087Defaults to
1088.Ar bin .
1089.It Ev MODGO_WORKSPACE
1090Path to Go workspace set up for port build process.
1091Defaults to
1092.Pa ${WRKDIR}/go .
1093See Go documentation for details.
1094.It Ev MODGO_SUBDIR
1095Path to Go source code within port's sources tarball.
1096Defaults to
1097.Pa ${WRKDIST} .
1098.It Ev MODGO_SETUP_WORKSPACE
1099Commands setting up Go workspace for building ports.
1100By default, happens during execution of
1101.Cm pre-configure
1102target.
1103.It Ev MODGO_BUILDDEP
1104Controls whether contents of
1105.Ev MODGO_BUILD_DEPENDS
1106are appended to port's
1107.Ev BUILD_DEPENDS .
1108Defaults to
1109.Ar Yes .
1110.El
1111.Pp
1112Additionally defines
1113.Ev MODGO_PACKAGES ,
1114.Ev MODGO_SOURCES
1115and
1116.Ev MODGO_TOOLS
1117(paths for installed Go packages, sources and tools respectively),
1118.Ev MODGO_CMD
1119and
1120.Ev MODGO_FLAGS
1121(source code build command and flags passed as its arguments),
1122.Ev MODGO_LDFLAGS ,
1123.Ev MODGO_BUILD_CMD
1124and
1125.Ev MODGO_TEST_CMD
1126(commands for building and testing go packages; normally called with canonical
1127Go package names as arguments),
1128.Ev MODGO_{BUILD,INSTALL,TEST}_TARGET
1129and
1130.Ev MODGO_{BUILD,RUN}_DEPENDS .
1131.It lang/lua
1132Sets
1133.Ev MODLUA_BIN ,
1134.Ev MODLUA_DATADIR ,
1135.Ev MODLUA_DEP ,
1136.Ev MODLUA_DEP_VERSION ,
1137.Ev MODLUA_DOCDIR ,
1138.Ev MODLUA_EXAMPLEDIR ,
1139.Ev MODLUA_INCL_DIR ,
1140.Ev MODLUA_LIB ,
1141.Ev MODLUA_LIBDIR ,
1142.Ev MODLUA_VERSION ,
1143.Ev MODLUA_WANTLIB .
1144Appends to
1145.Ev CATEGORIES .
1146Also appends to
1147.Ev BUILD_DEPENDS ,
1148unless
1149.Ev NO_BUILD
1150has been set to Yes.
1151Also appends to
1152.Ev RUN_DEPENDS ,
1153unless
1154.Ev MODLUA_RUNDEP
1155is set to No.
1156Appends
1157.Ev MODLUA_VERSION ,
1158.Ev MODLUA_LIB ,
1159.Ev MODLUA_INCL_DIR ,
1160.Ev MODLUA_EXAMPLEDIR ,
1161.Ev MODLUA_DOCDIR ,
1162.Ev MODLUA_LIBDIR ,
1163.Ev MODLUA_DATADIR ,
1164.Ev MODLUA_DEP ,
1165.Ev MODLUA_DEP_VERSION ,
1166.Ev MODLUA_BIN
1167to
1168.Ev SUBST_VARS .
1169.Ev MODLUA_DEFAULT_VERSION
1170is set to 5.1.
1171.Ev MODLUA_VERSION is set to
1172.Ev MODLUA_DEFAULT_VERSION
1173by default.
1174Ports can be built with several lua versions.
1175If no FLAVOR is set it defaults to MODLUA_DEFAULT_VERSION.
1176Otherwise the FULLPKGNAME is adjusted, if MODLUA_SA is not set.
1177In order to set a build, run or test dependency on a lua port,
1178use the following, which will propagate the currently used flavor:
1179.Ev MODLUA_BUILD_DEPENDS ,
1180.Ev MODLUA_TEST_DEPENDS ,
1181.Ev MODLUA_RUN_DEPENDS .
1182.It lang/mono
1183Sets
1184.Ev MODMONO_ONLY_FOR_ARCHS ,
1185.Ev CONFIGURE_ENV ,
1186.Ev MAKE_FLAGS ,
1187.Ev MODMONO_BUILD_DEPENDS
1188and
1189.Ev MODMONO_RUN_DEPENDS .
1190If
1191.Ev MODMONO_DEPS
1192is set to Yes,
1193.Pa lang/mono
1194is appended to
1195.Ev BUILD_DEPENDS
1196and
1197.Ev RUN_DEPENDS .
1198.Ev DLLMAP_FILES
1199defines in which files the module will substitute hardcoded
1200shared library versions using a
1201.Cm post-configure
1202target.
1203.It lang/node
1204Adds common dependencies to
1205.Ev RUN_DEPENDS
1206and
1207.Ev BUILD_DEPENDS .
1208Recognizes two additional types of
1209.Ev CONFIGURE_STYLE Ns s ,
1210"npm" and "npm ext".
1211"npm ext" should be used for npm packages that contain C++ extensions which
1212need to be compiled.
1213"npm" should be used for other npm packages.
1214If regression tests are included that can be run using
1215.Pa devel/node-expresso ,
1216append "expresso" to
1217.Ev CONFIGURE_STYLE .
1218.Pa devel/node-expresso
1219will be appended to
1220.Ev TEST_DEPENDS
1221and a default
1222.Ev MODNODE_TEST_TARGET
1223will be defined, along with a
1224.Cm do-test
1225target if it has not already been set.
1226If "expresso" isn't appended to
1227.Ev CONFIGURE_STYLE ,
1228.Ev TEST_TARGET
1229will be set to "test".
1230One of these two
1231.Ev CONFIGURE_STYLE Ns s
1232should be used or the module doesn't affect anything except
1233.Ev RUN_DEPENDS
1234and
1235.Ev BUILD_DEPENDS .
1236Requires
1237.Ev NPM_NAME
1238to be set to the name of the npm package.
1239Uses
1240.Ev NPM_NAME
1241and
1242.Ev NPM_VERSION
1243to set
1244.Ev DISTNAME ,
1245and
1246.Ev PKGNAME ,
1247and
1248.Ev MASTER_SITES .
1249If the npm package depends on other npm packages, the npm package names it
1250depends on should be listed in
1251.Ev MODNODE_DEPENDS .
1252Adds default
1253.Cm do_build
1254and
1255.Cm do_install
1256tasks, and you can reference the default implementations via
1257.Ev MODNODE_BUILD_TARGET
1258and
1259.Ev MODNODE_INSTALL_TARGET .
1260.It lang/ocaml
1261Appends to
1262.Ev BUILD_DEPENDS
1263and
1264.Ev MAKE_ENV .
1265This selects a %%native%% plist fragment and
1266.Ev ocaml_native
1267property depending on whether the architecture supports native
1268compilation.
1269If dynamic linking is supported on the native architecture,
1270the %%dynlink%% plist fragment and
1271.Ev ocaml_native_dynlink
1272property is set.
1273When
1274.Ev CONFIGURE_STYLE
1275is set to `oasis',
1276overrides for the
1277.Cm do-build ,
1278.Cm do-install ,
1279and
1280.Cm do-test
1281targets are added.
1282.It lang/php
1283Used for ports using PHP in some way:
1284either extensions to PHP, or software written in PHP.
1285Sets
1286.Ev MODPHP_RUN_DEPENDS ,
1287.Ev MODPHP_LIB_DEPENDS ,
1288.Ev MODPHP_WANTLIB ,
1289.Ev MODPHP_BIN ,
1290.Ev MODPHP_PHPIZE ,
1291.Ev MODPHP_PHP_CONFIG ,
1292.Ev MODPHP_INCDIR
1293and
1294.Ev MODPHP_LIBDIR .
1295Adds to
1296.Ev RUN_DEPENDS
1297and
1298.Ev BUILD_DEPENDS
1299unless
1300.Ev MODPHP_RUNDEP
1301or
1302.Ev MODPHP_BUILDDEP
1303are set.
1304If
1305.Ev MODPHP_DO_PHPIZE
1306is set, prepares a build environment for extensions that use phpize.
1307.Pp
1308Ports using PDO for database connectivity often have a choice of
1309dependencies (pdo_sqlite, pdo_mysql, pdo_pgsql and others).
1310The module constructs
1311.Ev MODPHP_PDO_DEPENDS
1312from the PDO types listed in
1313.Ev MODPHP_PDO_ALLOWED
1314(defaulting to "sqlite mysql pgsql").
1315This can be added to
1316.Ev RUN_DEPENDS
1317and allows any of these PDO packages to satisfy the dependency, with
1318.Ev MODPHP_PDO_PREF
1319(sqlite by default) chosen if none are installed.
1320.It lang/php/pecl
1321Used for ports for PHP PECL extensions.
1322Sets default
1323.Ev MASTER_SITES ,
1324.Ev HOMEPAGE ,
1325.Ev EXTRACT_SUFX ,
1326.Ev DESTDIRNAME ,
1327.Ev MODPHP_DO_SAMPLE ,
1328.Ev MODPHP_DO_PHPIZE ,
1329.Ev AUTOCONF_VERSION ,
1330.Ev AUTOMAKE_VERSION ,
1331.Ev LIBTOOL_FLAGS .
1332Provides a default
1333.Ev TEST_TARGET
1334and
1335.Ev TEST_FLAGS
1336unless
1337.Ev NO_TEST
1338or a
1339.Cm do-test
1340target is defined.
1341Adds common dependencies to
1342.Ev RUN_DEPENDS
1343and
1344.Ev BUILD_DEPENDS .
1345Sets a default
1346.Ev PKGNAME
1347and appends to
1348.Ev CATEGORIES .
1349.It lang/python
1350Sets
1351.Ev MODPY_VERSION ,
1352.Ev MODPY_BIN ,
1353.Ev MODPY_INCDIR ,
1354.Ev MODPY_LIBDIR ,
1355.Ev MODPY_SITEPKG ,
1356.Ev MODPY_SETUP ,
1357.Ev MODPY_TEST_DIR ,
1358.Ev MODPY_TEST_LOCALE ,
1359.Ev MODPY_WANTLIB ,
1360.Ev MODPY_LIB_DEPENDS ,
1361.Ev MODPY_RUN_DEPENDS ,
1362.Ev MODPY_TEST_DEPENDS ,
1363.Ev MODPY_BUILD_DEPENDS ,
1364and
1365.Ev MODPY_ADJ_FILES .
1366Appends to
1367.Ev RUN_DEPENDS
1368unless
1369.Ev MODPY_RUNDEP
1370is set to No.
1371Appends to
1372.Ev BUILD_DEPENDS
1373unless
1374.Ev MODPY_BUILDDEP
1375is set to No or
1376.Ev NO_BUILD
1377is set to Yes.
1378Appends to
1379.Ev TEST_DEPENDS
1380if
1381.Ev MODPY_PYTEST
1382is set to Yes
1383unless
1384.Ev MODPY_TESTDEP
1385is set to No.
1386Appends
1387.Ev MODPY_TEST_LOCALE
1388to
1389.Ev TEST_ENV .
1390Changes to the directory specified in
1391.Ev MODPY_TEST_DIR ,
1392by default WRKSRC, before running tests.
1393.Ev MODPY_VERSION
1394is the default version used by all python modules.
1395Ports which use the setuptools module should set
1396.Ev MODPY_SETUPTOOLS
1397to Yes.
1398Ports which use the pytest module should set
1399.Ev MODPY_PYTEST
1400to Yes.
1401Arguments can be passed to pytest during
1402.Cm test
1403with
1404.Ev MODPY_PYTEST_ARGS .
1405All ports that generate egg-info files should set
1406.Ev MODPY_EGG_VERSION
1407to the version string used by the
1408.Fn setup
1409function in the port's
1410.Pa setup.py .
1411Arguments can be passed to setup.py during
1412.Cm configure
1413with
1414.Ev MODPY_SETUP_ARGS .
1415Extra arguments to the build and install commands can be passed via
1416.Ev MODPY_DISTUTILS_BUILDARGS
1417and
1418.Ev MODPY_DISTUTILS_INSTALLARGS .
1419If any files have a python shebang line which needs to be replaced
1420using MODPY_BIN, list them in
1421.Ev MODPY_ADJ_FILES .
1422These are prefixed with WRKSRC and replaced automatically
1423at the end of
1424.Cm pre-configure .
1425Also affects
1426.Ev CATEGORIES ,
1427.Ev MAKE_ENV ,
1428.Ev CONFIGURE_ENV ,
1429and
1430.Ev SUBST_VARS .
1431May affect the
1432.Cm test
1433target.
1434If
1435.Ev MODPY_PI
1436is set to Yes it will set
1437.Ev HOMEPAGE
1438and
1439.Ev MASTER_SITES .
1440The subdirectory can be overridden with
1441.Ev MODPY_PI_DIR .
1442.Pp
1443Python 2.x places .pyc files in the same directory as the associated .py file.
1444Python 3.x places these in a separate __pycache__ directory and uses an
1445additional suffix.
1446In some cases, an ABI tag is also used for names of compiled extensions.
1447The python module defines variables to allow a single PLIST to be
1448used for both versions.
1449Generate or update the PLIST using the python3
1450.Ev FLAVOR ,
1451then edit it to prefix any lines creating
1452.Ev MODPY_PYCACHE
1453directories with
1454.Ev MODPY_COMMENT .
1455As python2 and python3 packages should permit being installed together,
1456it may be necessary to suffix names of common binaries or directories,
1457or split common files into a subpackage.
1458If updating the PLIST without using the python3 flavor,
1459take care not to remove ${MODPY_PYCACHE}, ${MODPY_PYC_MAGIC_TAG}, or
1460${MODPY_ABI_TAG} variables from the PLIST.
1461.It lang/ruby
1462See
1463.Xr ruby-module 5 .
1464.It lang/tcl
1465Sets
1466.Ev MODTCL_VERSION ,
1467.Ev MODTCL_BIN ,
1468.Ev MODTCL_INCDIR ,
1469.Ev MODTCL_LIBDIR ,
1470.Ev MODTCL_BUILD_DEPENDS ,
1471.Ev MODTCL_RUN_DEPENDS ,
1472.Ev MODTCL_LIB ,
1473.Ev MODTCL_LIB_DEPENDS ,
1474and
1475.Ev MODTCL_CONFIG .
1476.Ev MODTCL_VERSION
1477is the default version used by all Tcl ports and may be overridden.
1478Provides
1479.Ev MODTCL_TCLSH_ADJ
1480and
1481.Ev MODTCL_WISH_ADJ
1482shell fragments to patch the interpreter path in executable scripts.
1483Also affects
1484.Ev CATEGORIES
1485and
1486.Ev SUBST_VARS .
1487.It perl
1488This module is documented in the main
1489.Xr bsd.port.mk 5
1490manpage.
1491.It security/heimdal
1492A link from ${LOCALBASE}/heimdal/bin/krb5-config
1493to
1494.Xr krb5-config 1
1495will be put at the front of the path.
1496Sets
1497.Ev LIB_DEPENDS
1498and
1499.Ev WANTLIB
1500according to the values of
1501.Ev MODHEIMDAL_LIB_DEPENDS ,
1502and
1503.Ev MODHEIMDAL_WANTLIB .
1504.It textproc/intltool
1505Sets
1506.Ev MODINTLTOOL_OVERRIDE .
1507.Pa textproc/intltool
1508is added to
1509.Ev BUILD_DEPENDS .
1510.Ev MODINTLTOOL_OVERRIDE
1511changes the paths of
1512.Ev INTLTOOL_EXTRACT ,
1513.Ev INTLTOOL_MERGE
1514and
1515.Ev INTLTOOL_UPDATE
1516to use the installed versions of intltool-extract,
1517intltool-merge and intltool-update, instead of the version's packages into the
1518distfile of the port using this module.
1519Also affects
1520.Ev CONFIGURE_ENV ,
1521.Ev MAKE_ENV
1522and
1523.Ev MAKE_FLAGS
1524by appending
1525.Ev MODINTLTOOL_OVERRIDE
1526to them.
1527.It www/drupal7
1528Can be used to install plugins (default), themes if
1529.Ev MODDRUPAL_THEME
1530is yes, or languages packs if
1531.Ev DRUPAL_LANG
1532is set to the desired language.
1533.Pp
1534The module may set or add to default values for
1535.Ev HOMEPAGE ,
1536.Ev MASTER_SITES ,
1537.Ev PREFIX ,
1538.Ev DISTNAME ,
1539.Ev DIST_SUBDIR ,
1540.Ev CATEGORIES ,
1541.Ev PKGNAME ,
1542.Ev PKG_ARCH ,
1543.Ev WRKDIST ,
1544.Ev RUN_DEPENDS .
1545Drupal modules normally don't have any build part, just an installation part
1546that defaults to copying the plugin/theme/language files into the right
1547location through
1548.Ev MODDRUPAL_INSTALL .
1549.Pp
1550The module sets
1551.Ev DRUPAL
1552to drupal7,
1553.Ev DRUPAL_ROOT
1554to htdocs/${DRUPAL}
1555.Ev DRUPAL_MODS
1556to ${DRUPAL_ROOT}/site/all/modules
1557.Ev DRUPAL_THEMES
1558to ${DRUPAL_ROOT}/site/all/themes
1559and
1560.Ev DRUPAL_TRANSLATIONS
1561to ${DRUPAL_ROOT}/profiles/standard/translations.
1562So, by default, modules and themes are installed for all sites,
1563and translations are activated at install.
1564.Pp
1565.Ev DRUPAL_OWNER , DRUPAL_GROUP
1566are set to root, daemon, since drupal doesn't need to write
1567to any file except the files/ directory and the site settings (those
1568belong to www instead).
1569.Pp
1570Most modules are actually separate projects on the drupal site.
1571If
1572.Ev MODDRUPAL_PROJECT
1573is set,
1574.Ev HOMEPAGE
1575will lead to the corresponding project.
1576If
1577.Ev MODDRUPAL_VERSION
1578is also set,
1579.Ev DISTNAME
1580will default to
1581.Pa ${MODDRUPAL_PROJECT}-7.x-${MODDRUPAL_VERSION} ,
1582MODDRUPAL_PKGNAME
1583will default to
1584.Pa ${MODDRUPAL_PROJECT}
1585and
1586.Ev PKGNAME
1587will default to
1588.Pa drupal7-${MODDRUPAL_PKGNAME}-${MODDRUPAL_VERSION} .
1589.Pp
1590Translations are handled by setting
1591.Ev DRUPAL_LANG
1592to the language letter code, and by setting
1593.Ev LANGFILES
1594to a list of module names/version pairs.
1595.Pp
1596With drupal7, all translations have been put in separate .po files.
1597It has been deemed simplest to pack all translations for a given language
1598into a single package, since translations for non installed modules won't
1599affect anything.
1600.It www/mozilla
1601Sets
1602.Ev PKGNAME ,
1603.Ev HOMEPAGE ,
1604.Ev MASTER_SITES ,
1605.Ev DISTNAME ,
1606.Ev USE_GMAKE ,
1607and
1608.Ev ONLY_FOR_ARCHS .
1609.Ev EXTRACT_SUFX
1610defaults to .tar.bz2.
1611.Pp
1612Adds common dependencies to
1613.Ev LIB_DEPENDS ,
1614.Ev WANTLIB ,
1615.Ev RUN_DEPENDS
1616and
1617.Ev BUILD_DEPENDS .
1618Sets common
1619.Ev CONFIGURE_ARGS ,
1620.Ev MAKE_ENV
1621and
1622.Ev CONFIGURE_ENV .
1623Sets
1624.Ev MOB
1625variable as source directory
1626and
1627.Ev MOZ
1628as target directory within
1629.Cm do-install .
1630.Pp
1631Individual port Makefile must set
1632.Ev MOZILLA_PROJECT ,
1633.Ev MOZILLA_CODENAME ,
1634.Ev MOZILLA_VERSION ,
1635.Ev MOZILLA_BRANCH ,
1636.Ev MOZILLA_LIBS
1637and
1638.Ev MOZILLA_DATADIRS
1639variables.
1640Port can also append values to
1641.Ev MOZILLA_SUBST_FILES
1642which contains the list of
1643files to run
1644.Ev SUBST_CMD
1645on during
1646.Cm pre-configure ,
1647and
1648.Ev MOZILLA_AUTOCONF_DIRS
1649which
1650contains the list of dirs where
1651.Ev AUTOCONF
1652will be run during
1653.Cm pre-configure .
1654.It www/pear
1655Used for PHP PEAR ports.
1656Sets default
1657.Ev MASTER_SITES ,
1658.Ev EXTRACT_SUFX ,
1659.Ev PKGNAME .
1660Sets
1661.Ev PREFIX
1662to
1663.Pa /var/www .
1664Sets
1665.Ev NO_TEST
1666unless a
1667.Cm do-test
1668target is defined.
1669Adds common dependencies to
1670.Ev RUN_DEPENDS
1671and
1672.Ev BUILD_DEPENDS ,
1673sets
1674.Ev MAKE_FILE
1675and
1676.Ev FAKE_FLAGS
1677appropriately.
1678Makes
1679.Ev PEAR_LIBDIR
1680and
1681.Ev PEAR_PHPBIN
1682available for use in the port.
1683Sets a default
1684.Ev PKGNAME
1685and appends to
1686.Ev CATEGORIES .
1687.It www/plone
1688Sets
1689.Ev MODPLONE_VERSION
1690and
1691.Ev MODZOPE_VERSION .
1692.Ev MODPLONE_VERSION
1693is the default version used by all Plone ports and may be overridden.
1694It appends
1695.Pa www/plone
1696to
1697.Ev RUN_DEPENDS
1698and also sets
1699.Ev NO_TEST
1700to Yes.
1701.It x11/gnome
1702This module has full support for the
1703.Ar gnu ,
1704.Ar simple
1705and
1706.Ar cmake
1707CONFIGURE_STYLE.
1708.Pp
1709If both
1710.Ev GNOME_PROJECT
1711and
1712.Ev GNOME_VERSION
1713are set, this module defines
1714.Ev DISTNAME ,
1715.Ev VERSION ,
1716.Ev MASTER_SITES ,
1717adds x11/gnome to
1718.Ev CATEGORIES
1719and
1720.Ev EXTRACT_SUFX
1721will default to .tar.xz if unset.
1722Unless
1723.Li NO_BUILD=Yes ,
1724.Pa textproc/intltool
1725is also appended to
1726.Ev MODULES
1727and when CONFIGURE_STYLE is set to
1728.Ar gnu
1729or
1730.Ar simple ,
1731.Ev USE_GMAKE
1732is set to "Yes".
1733.Pp
1734When CONFIGURE_STYLE is set to
1735.Ar gnu
1736or
1737.Ar simple ,
1738if none of
1739.Ev AUTOCONF_VERSION
1740nor
1741.Ev AUTOMAKE_VERSION
1742are defined, then "--disable-maintainer-mode" is appended to
1743.Ev CONFIGURE_ARGS .
1744When CONFIGURE_STYLE is set to
1745.Ar cmake ,
1746"-DENABLE_MAINTAINER_MODE=OFF" and -DSYSCONF_INSTALL_DIR=${SYSCONFDIR}
1747are appended to CONFIGURE_ARGS.
1748.Pp
1749MODGNOME_CPPFLAGS and MODGNOME_LDFLAGS can be used to add compiler and linker
1750flags.
1751.Li CPPFLAGS="-I${LOCALBASE}/include"
1752and
1753.Li LDFLAGS="-L${LOCALBASE}/lib"
1754are always appended to
1755.Ev CONFIGURE_ENV .
1756.Pp
1757Certain build/run dependencies and configure arguments and environment
1758can be set by appending desktop-file-utils, docbook, gobject-introspection,
1759gtk-update-icon-cache, shared-mime-info, vala and/or yelp to
1760.Ev MODGNOME_TOOLS .
1761They are disabled otherwise.
1762If
1763.Ev MODGNOME_TOOLS
1764is set to desktop-file-utils,
1765a dependency on
1766.Pa devel/desktop-file-utils
1767is appended to
1768.Ev MODGNOME_RUN_DEPENDS
1769and a link to /usr/bin/true is created under
1770.Pa ${WRKDIR}/bin/desktop-file-validate .
1771If
1772.Ev MODGNOME_TOOLS
1773is set to docbook,
1774.Pa textproc/docbook-xsl
1775is appended to
1776.Ev MODGNOME_BUILD_DEPENDS .
1777This option is used when the generation of the man pages included in the
1778source tarball requires docbook XML/SGML/XSL definitions and stylesheets.
1779If
1780.Ev MODGNOME_TOOLS
1781is set to gtk-update-icon-cache, a dependency on
1782.Pa x11/gtk+3,-guic
1783is appended to
1784.Ev MODGNOME_RUN_DEPENDS .
1785If
1786.Ev MODGNOME_TOOLS
1787is set to shared-mime-info, a dependency on
1788.Pa misc/shared-mime-info
1789is appended to
1790.Ev MODGNOME_RUN_DEPENDS
1791and a link to /usr/bin/true is created under
1792.Pa ${WRKDIR}/bin/update-mime-database .
1793If
1794.Ev MODGNOME_TOOLS
1795is set to yelp,
1796.Pa textproc/itstool
1797and
1798.Pa x11/gnome/doc-utils
1799are appended to
1800.Ev MODGNOME_BUILD_DEPENDS .
1801Furthermore,
1802.Pa x11/gnome/yelp
1803is appended to
1804.Ev MODGNOME_RUN_DEPENDS
1805if
1806.Ev MODGNOME_TOOLS
1807also contains "desktop-file-utils"
1808This option is to be used when any files are installed into
1809.Pa share/gnome/help/
1810or page files are installed into
1811.Pa share/help/ .
1812.Ev MODGNOME_BUILD_DEPENDS
1813and
1814.Ev MODGNOME_RUN_DEPENDS
1815are appended to the
1816corresponding
1817.Ev BUILD_DEPENDS
1818and
1819.Ev RUN_DEPENDS .
1820.Pp
1821Some tools require the following goo in the PLIST:
1822.Pp
1823.Ar desktop-file-utils
1824.Bd -literal -offset indent
1825@exec %D/bin/update-desktop-database
1826@unexec-delete %D/bin/update-desktop-database
1827.Ed
1828.Pp
1829.Ar gtk-update-icon-cache
1830($icon-theme is the theme directory)
1831.Bd -literal -offset indent
1832@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/$icon-theme
1833@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/$icon-theme
1834.Ed
1835.Pp
1836.Ar shared-mime-info
1837.Bd -literal -offset indent
1838@exec %D/bin/update-mime-database %D/share/mime
1839@unexec-delete %D/bin/update-mime-database %D/share/mime
1840.Ed
1841.It x11/gnustep
1842.It x11/kde
1843Used for building KDE3-enabled ports.
1844Main variables there is
1845.Ev MODKDE_VERSION ,
1846which defines what patches and tweaks should be applied,
1847depending of exact KDE version the ported software is build
1848against of.
1849.It x11/kde4
1850Required for building KDE4-enabled ports.
1851Main variables are: MODKDE4_USE,
1852MODKDE4_VERSION, MODKDE4_DEP_DIR, MODKDE4_DEP_VERSION, MODKDE4_FLAVOR.
1853It's used both for KDE4 SC itself and for software built on top of it,
1854e.g., Digikam.
1855This module supports several KDE4 trees at the same time, see below.
1856The following variables are designed to be used in both types of ports:
1857.Bl -tag -width KDE4LIB
1858.It Ev MODKDE4_USE
1859Defines the core components of KDE4 to be used by the port.
1860Could have zero or more of the following values, in any order:
1861.Sq libs ,
1862.Sq runtime ,
1863.Sq pim ,
1864.Sq games ,
1865.Sq workspace .
1866Could be forced to be empty, this will mean no automated dependencies.
1867If
1868.Sq libs
1869is specified, no dependencies on runtime (kde-runtime or kdepim-runtime)
1870will be recorded.
1871The
1872.Sq workspace
1873component implies
1874.Sq runtime .
1875The
1876.Sq games
1877component is to be used by games and affects default HOMEPAGE, too.
1878If neither
1879.Sq libs
1880or
1881.Sq runtime
1882are specified, the
1883.Sq runtime
1884is implied.
1885If both
1886.Sq libs
1887and
1888.Sq runtime
1889are specified, then
1890.Sq runtime
1891takes precedence (actually, it's a libs+ anyway).
1892The
1893.Sq pim libs
1894combination adds dependencies on both kdelibs and kdepimlibs,
1895and
1896.Sq pim runtime (
1897or just
1898.Sq pim )
1899also adds dependencies on both kde-runtime and kdepim-runtime.
1900Defaults to
1901.Sq libs
1902when
1903.Ev MODKDE4_RESOURCES
1904is set to
1905.Sq Yes ,
1906and
1907.Sq runtime
1908otherwise.
1909.It Ev MODKDE4_DEP_DIR
1910Expands to
1911.Sq x11/kdeVERSION
1912where version depends on current
1913.Ev MODKDE4_VERSION ,
1914see below.
1915Read-only.
1916.It Ev MODKDE4_DEP_VERSION
1917Expands to a string to be used in dependency lines, see
1918examples in
1919.Pa x11/kde4/*
1920ports.
1921Read-only.
1922.It Ev MODKDE4_RESOURCES
1923Should be set to
1924.Sq Yes
1925for ports that only provide non-executable stuff like icons,
1926localization files and so on.
1927Affects
1928.Ev FLAVORS ,
1929.Ev MODKDE4_NO_QT ,
1930.Ev MODKDE4_USE ,
1931.Ev MODULES ,
1932.Ev PKG_ARCH
1933and
1934.Ev SUBST_VARS
1935variables.
1936Defaults to
1937.Sq \&No .
1938.It Ev MODKDE4_INCLUDE_DIR
1939Path where KDE4 headers to be placed/searched for, relative to
1940.Ev PREFIX .
1941Read-only.
1942.It Ev MODKDE4_LIB_DIR
1943Path where KDE4 headers to be placed/searched for, relative to
1944.Ev PREFIX .
1945Read-only.
1946.It Ev KDE4LIB
1947Shorter synonym for
1948.Ev MODKDE4_LIB_DIR ,
1949to be used in plists and
1950.Ev WANTLIB
1951declarations.
1952Read-only.
1953.It Ev MODKDE4_FIX_GETTEXT
1954If set to
1955.Sq Yes ,
1956adds an additional step before building the port that
1957searches for KDE-specific uses of the GETTEXT_PROCESS_PO_FILES
1958CMake command and tweaks them to be compatible with the one from the
1959.Pa FindGettext.cmake
1960module provided by CMake itself.
1961Defaults to
1962.Sq Yes .
1963.It Ev MODKDE4_SYSCONF_FILES
1964Some KDE ports install files under
1965.Pa ${SYSCONFDIR} .
1966We want to have them under
1967.Ev ${PREFIX}/share/examples
1968or such, and just be @sample'd under
1969.Pa ${SYSCONFDIR} .
1970So add
1971.Sq file/dir destination
1972pairs to this variable, and appropriate @sample lines to packing list, e.g.:
1973.Bd -literal -offset indent
1974# in Makefile:
1975MODKDE4_SYSCONF_FILES = dbus-1      share/examples
1976
1977# in PLIST:
1978share/examples/dbus-1/system.d/org.kde.baloo.filewatch.conf
1979@sample ${SYSCONFDIR}/dbus-1/system.d/org.kde.baloo.filewatch.conf
1980.Ed
1981.El
1982.Pp
1983The following variables are mostly used only inside KDE4 SC:
1984.Bl -tag -width KDE4LIB
1985.It MODKDE4_LIB_LINKS
1986If set to
1987.Sq Yes ,
1988soft links for shared libraries in
1989.Pa ${PREFIX}/lib
1990to
1991.Pa ${MODKDE4_LIB_DIR}
1992will be created.
1993Used to distinguish libraries from different KDE versions (3, 4...).
1994Defaults to
1995.Sq \&No .
1996.It KDE4_ONLY
1997If set to
1998.Sq Yes ,
1999sets the
2000.Xr dpb 1
2001tag to
2002.Sq kde4 .
2003Defaults to
2004.Sq \&No
2005when
2006.Ev MODKDE4_USE
2007is empty, and to
2008.Sq Yes
2009otherwise.
2010.El
2011.Pp
2012The following variables are likely to be used only outside KDE4 SC:
2013.Bl -tag -width KDE4LIB
2014.It MODKDE4_NO_QT
2015If set to
2016.Sq Yes ,
2017avoids automatic addition of x11/qt4 to
2018.Ev MODULES .
2019.El
2020.Pp
2021The x11/kde4 module supports co-existence of different KDE4 SC version
2022ports subtrees.
2023There always is a so-called stable tree in
2024.Pa ${PORTSDIR}/x11/kde4
2025and additional trees are placed in
2026.Pa ${PORTSDIR}/x11/kdeXYZ ,
2027where
2028.Sq XYZ
2029correspond to the
2030.Sq X.Y.Z
2031KDE version.
2032So, say, KDE 4.12.4 tree should be placed in
2033.Pa ${PORTSDIR}/x11/kde4124
2034directory.
2035The process of preparing a new KDE SC version subtree is automated,
2036just use kde-release-helper script:
2037.Bd -literal -offset indent
2038cd ${PORTSDIR}/x11/kde4
2039\&./kde-release-helper prepare 4.12.4
2040.Ed
2041This will copy the x11/kde4 subtree to x11/kde4124 and strip it:
2042remove
2043.Ev REVISION
2044marks, remove distinfo files and so on.
2045.Pp
2046To access the new version then you'll need to add appropriate
2047values at the top of x11/kde4 module file itself.
2048Then you be able to use automatically created
2049.Sq kdeXYZ
2050.Ev FLAVOR
2051to reference corresponding KDE4 SC version outside x11/kde4*.
2052.Pp
2053The x11/kde4 module sets the following variables unless they're already
2054set by a port:
2055.Ev CONFIGURE_STYLE ,
2056.Ev EXTRACT_SUFX ,
2057.Ev ONLY_FOR_ARCHS ,
2058.Ev PORTHOME ,
2059and
2060.Ev SEPARATE_BUILD .
2061.Pp
2062The x11/kde4 module modifies the following variables if needed:
2063.Ev BUILD_DEPENDS ,
2064.Ev CONFIGURE_ARGS ,
2065.Ev CONFIGURE_ENV ,
2066.Ev LIB_DEPENDS ,
2067.Ev RUN_DEPENDS ,
2068and
2069.Ev WANTLIB .
2070.Pp
2071The x11/kde4 module automatically adds devel/cmake to
2072.Ev MODULES
2073unless
2074.Ev NO_BUILD
2075is set to
2076.Sq Yes .
2077The x11/kde4 module automatically adds x11/qt4 to
2078.Ev MODULES
2079unless
2080.Ev MODKDE4_NO_QT
2081is set to
2082.Sq Yes .
2083The x11/kde4 module automatically adds gcc4 to
2084.Ev MODULES
2085unless
2086.Ev MODKDE4_RESOURCES
2087is set to
2088.Sq Yes .
2089.It x11/qt3, x11/qt4 and x11/qt5
2090All qt* modules share a common
2091.Ev MODQT_*
2092namespace for simple ports.
2093The qt3 module also defines the same variables under
2094.Ev MODQT3_* ,
2095the qt4 module also defines the same variables under
2096.Ev MODQT4_*
2097and the qt5 module also defines the same variables under
2098.Ev MODQT5_* ,
2099to allow ports to use both modules, such as
2100.Pa print/poppler .
2101.Pp
2102Those modules define
2103.Ev MODQT*_LIBDIR
2104as the libraries location,
2105.Ev MODQT*_INCDIR
2106as the include files location,
2107.Ev MODQT*_QTDIR
2108as the global qt directory location,
2109.Ev MODQT*_CONFIGURE_ARGS
2110as standard GNU configure-style parameters to locate the include and libraries.
2111.Pp
2112The location of Qt-specific tools
2113.Nm lrelease ,
2114.Nm moc ,
2115.Nm qmake
2116and
2117.Nm uic
2118is available through
2119.Ev MODQT*_LRELEASE ,
2120.Ev MODQT*_MOC ,
2121.Ev MODQT*_QMAKE
2122and
2123.Ev MODQT*_UIC .
2124.Ev MODQT*_OVERRIDE_UIC
2125controls whether the default setup will force a value of
2126.Ev UIC
2127or not.
2128The value of
2129.Ev MOC
2130is always forced to ${MODQT*_MOC}.
2131.Pp
2132In most cases the
2133.Pa devel/qmake
2134module should be used instead of using
2135.Ev MODQT*_QMAKE
2136directly.
2137.Pp
2138qt4 includes
2139.Xr pkg-config 1
2140files under a specific location recorded in
2141.Ev MODQT_PKG_CONFIG_PATH .
2142Qt3 requires the use of
2143.Ev MODQT3_PLUGINS
2144to correctly locate plugins.
2145.Pp
2146The modules add to
2147.Ev CONFIGURE_ENV , MAKE_ENV
2148and
2149.Ev MAKE_FLAGS .
2150They define appropriate
2151.Ev MODQT*_LIB_DEPENDS
2152and
2153.Ev MODQT*_WANTLIB .
2154.Pp
2155Note that Qt 4 and Qt 5 has their code split over several libraries.
2156For the qt4 module the basic
2157.Ev WANTLIB
2158only refers to QtCore, and other libraries should be added as needed.
2159The qt5 module doesn't set
2160.Ev MODQT*_WANTLIB
2161at all.
2162Also, Qt 5 consists of many so called Qt modules, and qt5 port module
2163only refers to qtbase Qt 5 module; other Qt modules should be added to
2164.Ev LIB_DEPENDS ,
2165.Ev BUILD_DEPENDS
2166or
2167.Ev RUN_DEPENDS
2168manually.
2169.It x11/tk
2170Sets
2171.Ev MODTK_VERSION ,
2172.Ev MODTK_BIN ,
2173.Ev MODTK_INCDIR ,
2174.Ev MODTK_LIBDIR ,
2175.Ev MODTK_BUILD_DEPENDS ,
2176.Ev MODTK_RUN_DEPENDS ,
2177.Ev MODTK_LIB ,
2178.Ev MODTK_LIB_DEPENDS ,
2179and
2180.Ev MODTK_CONFIG .
2181.Ev MODTK_VERSION
2182is the default version used by all Tk ports and
2183may be overridden.
2184Automatically adds the
2185.Pa lang/tcl
2186module, provides a default
2187.Ev MODTCL_VERSION
2188to match
2189.Ev MODTK_VERSION ,
2190and affects
2191.Ev CATEGORIES
2192and
2193.Ev SUBST_VARS .
2194Note the
2195.Ev MODTCL_WISH_ADJ
2196shell fragment in the
2197.Pa lang/tcl
2198module.
2199.It x11/xfce4
2200Sets
2201.Ev DIST_SUBDIR ,
2202.Ev EXTRACT_SUFX ,
2203.Ev CONFIGURE_STYLE ,
2204.Ev CONFIGURE_ENV
2205and
2206.Ev USE_GMAKE .
2207If
2208.Ev MODXFCE_ICON_CACHE
2209is set to yes, it adds
2210.Pa x11/gtk+3,-guic
2211to
2212.Ev RUN_DEPENDS .
2213Unless
2214.Ev XFCE_NO_SRC
2215is set,
2216.Pa textproc/intltool
2217is added to
2218.Ev MODULES .
2219Also affects
2220.Ev CATEGORIES .
2221.Pp
2222Xfce ports can be divided into five categories: core libraries and
2223applications, goodies, artwork, thunar plugins, and panel plugins.
2224.Ev HOMEPAGE ,
2225.Ev MASTER_SITES
2226and
2227.Ev DISTNAME
2228are built using
2229.Ev XFCE_VERSION
2230(which defaults to
2231.Ev XFCE_DESKTOP_VERSION
2232if not set) and either
2233.Ev XFCE_PROJECT ,
2234.Ev XFCE_GOODIE ,
2235.Ev XFCE_ARTWORK ,
2236.Ev THUNAR_PLUGIN
2237or
2238.Ev XFCE_PLUGIN .
2239One of the latter has to be provided by the port Makefile.
2240.El
2241.Sh SEE ALSO
2242.Xr make 1 ,
2243.Xr bsd.port.mk 5 ,
2244.Xr ports 7
2245