xref: /openbsd-src/share/man/man5/port-modules.5 (revision 50857149ad9113f0addb6fdf5f88bf9894eb1d0e)
1.\"	$OpenBSD: port-modules.5,v 1.244 2020/06/26 22:45:22 abieber 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: June 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.It Ev MODGO_MODNAME
1111is the module name as defined in the
1112.Pa go.mod
1113file contained in a project.
1114If this is set,
1115.Ev MODGO_MODULES ,
1116.Ev MODGO_MODFILES
1117and
1118.Ev MODGO_VERSION
1119need to be defined as well.
1120Setting this will also set
1121.Ev ALL_TARGET .
1122When
1123.Ev MODGO_MODFILES
1124is set, and a "cmd" directory is found in
1125.Ev WRKSRC ,
1126"cmd/..." is appended to
1127.Ev ALL_TARGET
1128in
1129.Cm do-build
1130automatically.
1131.It Ev MODGO_VERSION
1132Sets the specific version of a Go module to use.
1133For example: v0.1.3.
1134.It Ev MODGO_MODULES
1135List of modules and their specific versions that an application depends on.
1136.It Ev MODGO_MODFILES
1137List of go.mod files and their versions that are required for dependency
1138resolution.
1139These are required by Go to determine the full dependency graph.
1140.El
1141.Pp
1142Additionally defines
1143.Ev MODGO_PACKAGES ,
1144.Ev MODGO_SOURCES
1145and
1146.Ev MODGO_TOOLS
1147(paths for installed Go packages, sources and tools respectively),
1148.Ev MODGO_CMD
1149and
1150.Ev MODGO_FLAGS
1151(source code build command and flags passed as its arguments),
1152.Ev MODGO_LDFLAGS ,
1153.Ev MODGO_BUILD_CMD
1154and
1155.Ev MODGO_TEST_CMD
1156(commands for building and testing go packages; normally called with canonical
1157Go package names as arguments),
1158.Ev MODGO_{BUILD,INSTALL,TEST}_TARGET
1159and
1160.Ev MODGO_{BUILD,RUN}_DEPENDS .
1161.It lang/lua
1162Sets
1163.Ev MODLUA_BIN ,
1164.Ev MODLUA_DATADIR ,
1165.Ev MODLUA_DEP ,
1166.Ev MODLUA_DEP_VERSION ,
1167.Ev MODLUA_DOCDIR ,
1168.Ev MODLUA_EXAMPLEDIR ,
1169.Ev MODLUA_INCL_DIR ,
1170.Ev MODLUA_LIB ,
1171.Ev MODLUA_LIBDIR ,
1172.Ev MODLUA_VERSION ,
1173.Ev MODLUA_WANTLIB .
1174Appends to
1175.Ev CATEGORIES .
1176Also appends to
1177.Ev BUILD_DEPENDS ,
1178unless
1179.Ev NO_BUILD
1180has been set to Yes.
1181Also appends to
1182.Ev RUN_DEPENDS ,
1183unless
1184.Ev MODLUA_RUNDEP
1185is set to No.
1186Appends
1187.Ev MODLUA_VERSION ,
1188.Ev MODLUA_LIB ,
1189.Ev MODLUA_INCL_DIR ,
1190.Ev MODLUA_EXAMPLEDIR ,
1191.Ev MODLUA_DOCDIR ,
1192.Ev MODLUA_LIBDIR ,
1193.Ev MODLUA_DATADIR ,
1194.Ev MODLUA_DEP ,
1195.Ev MODLUA_DEP_VERSION ,
1196.Ev MODLUA_BIN
1197to
1198.Ev SUBST_VARS .
1199.Ev MODLUA_DEFAULT_VERSION
1200is set to 5.1.
1201.Ev MODLUA_VERSION is set to
1202.Ev MODLUA_DEFAULT_VERSION
1203by default.
1204Ports can be built with several lua versions.
1205If no FLAVOR is set it defaults to MODLUA_DEFAULT_VERSION.
1206Otherwise the FULLPKGNAME is adjusted, if MODLUA_SA is not set.
1207In order to set a build, run or test dependency on a lua port,
1208use the following, which will propagate the currently used flavor:
1209.Ev MODLUA_BUILD_DEPENDS ,
1210.Ev MODLUA_TEST_DEPENDS ,
1211.Ev MODLUA_RUN_DEPENDS .
1212.It lang/mono
1213Sets
1214.Ev MODMONO_ONLY_FOR_ARCHS ,
1215.Ev CONFIGURE_ENV ,
1216.Ev MAKE_FLAGS ,
1217.Ev MODMONO_BUILD_DEPENDS
1218and
1219.Ev MODMONO_RUN_DEPENDS .
1220If
1221.Ev MODMONO_DEPS
1222is set to Yes,
1223.Pa lang/mono
1224is appended to
1225.Ev BUILD_DEPENDS
1226and
1227.Ev RUN_DEPENDS .
1228.Ev DLLMAP_FILES
1229defines in which files the module will substitute hardcoded
1230shared library versions using a
1231.Cm post-configure
1232target.
1233.It lang/node
1234Adds common dependencies to
1235.Ev RUN_DEPENDS
1236and
1237.Ev BUILD_DEPENDS .
1238Recognizes two additional types of
1239.Ev CONFIGURE_STYLE Ns s ,
1240"npm" and "npm ext".
1241"npm ext" should be used for npm packages that contain C++ extensions which
1242need to be compiled.
1243"npm" should be used for other npm packages.
1244If regression tests are included that can be run using
1245.Pa devel/node-expresso ,
1246append "expresso" to
1247.Ev CONFIGURE_STYLE .
1248.Pa devel/node-expresso
1249will be appended to
1250.Ev TEST_DEPENDS
1251and a default
1252.Ev MODNODE_TEST_TARGET
1253will be defined, along with a
1254.Cm do-test
1255target if it has not already been set.
1256If "expresso" isn't appended to
1257.Ev CONFIGURE_STYLE ,
1258.Ev TEST_TARGET
1259will be set to "test".
1260One of these two
1261.Ev CONFIGURE_STYLE Ns s
1262should be used or the module doesn't affect anything except
1263.Ev RUN_DEPENDS
1264and
1265.Ev BUILD_DEPENDS .
1266Requires
1267.Ev NPM_NAME
1268to be set to the name of the npm package.
1269Uses
1270.Ev NPM_NAME
1271and
1272.Ev NPM_VERSION
1273to set
1274.Ev DISTNAME ,
1275and
1276.Ev PKGNAME ,
1277and
1278.Ev MASTER_SITES .
1279If the npm package depends on other npm packages, the npm package names it
1280depends on should be listed in
1281.Ev MODNODE_DEPENDS .
1282Adds default
1283.Cm do_build
1284and
1285.Cm do_install
1286tasks, and you can reference the default implementations via
1287.Ev MODNODE_BUILD_TARGET
1288and
1289.Ev MODNODE_INSTALL_TARGET .
1290.It lang/ocaml
1291Appends to
1292.Ev BUILD_DEPENDS
1293and
1294.Ev MAKE_ENV .
1295This selects a %%native%% plist fragment and
1296.Ev ocaml_native
1297property depending on whether the architecture supports native
1298compilation.
1299If dynamic linking is supported on the native architecture,
1300the %%dynlink%% plist fragment and
1301.Ev ocaml_native_dynlink
1302property is set.
1303When
1304.Ev CONFIGURE_STYLE
1305is set to `oasis',
1306overrides for the
1307.Cm do-build ,
1308.Cm do-install ,
1309and
1310.Cm do-test
1311targets are added.
1312.It lang/php
1313Used for ports using PHP in some way:
1314either extensions to PHP, or software written in PHP.
1315Sets
1316.Ev MODPHP_RUN_DEPENDS ,
1317.Ev MODPHP_LIB_DEPENDS ,
1318.Ev MODPHP_WANTLIB ,
1319.Ev MODPHP_BIN ,
1320.Ev MODPHP_PHPIZE ,
1321.Ev MODPHP_PHP_CONFIG ,
1322.Ev MODPHP_INCDIR
1323and
1324.Ev MODPHP_LIBDIR .
1325Adds to
1326.Ev RUN_DEPENDS
1327and
1328.Ev BUILD_DEPENDS
1329unless
1330.Ev MODPHP_RUNDEP
1331or
1332.Ev MODPHP_BUILDDEP
1333are set.
1334If
1335.Ev MODPHP_DO_PHPIZE
1336is set, prepares a build environment for extensions that use phpize.
1337.Pp
1338Ports using PDO for database connectivity often have a choice of
1339dependencies (pdo_sqlite, pdo_mysql, pdo_pgsql and others).
1340The module constructs
1341.Ev MODPHP_PDO_DEPENDS
1342from the PDO types listed in
1343.Ev MODPHP_PDO_ALLOWED
1344(defaulting to "sqlite mysql pgsql").
1345This can be added to
1346.Ev RUN_DEPENDS
1347and allows any of these PDO packages to satisfy the dependency, with
1348.Ev MODPHP_PDO_PREF
1349(sqlite by default) chosen if none are installed.
1350.It lang/php/pecl
1351Used for ports for PHP PECL extensions.
1352Sets default
1353.Ev MASTER_SITES ,
1354.Ev HOMEPAGE ,
1355.Ev EXTRACT_SUFX ,
1356.Ev DESTDIRNAME ,
1357.Ev MODPHP_DO_SAMPLE ,
1358.Ev MODPHP_DO_PHPIZE ,
1359.Ev AUTOCONF_VERSION ,
1360.Ev AUTOMAKE_VERSION ,
1361.Ev LIBTOOL_FLAGS .
1362Provides a default
1363.Ev TEST_TARGET
1364and
1365.Ev TEST_FLAGS
1366unless
1367.Ev NO_TEST
1368or a
1369.Cm do-test
1370target is defined.
1371Adds common dependencies to
1372.Ev RUN_DEPENDS
1373and
1374.Ev BUILD_DEPENDS .
1375Sets a default
1376.Ev PKGNAME
1377and appends to
1378.Ev CATEGORIES .
1379.It lang/python
1380Sets
1381.Ev MODPY_VERSION ,
1382.Ev MODPY_BIN ,
1383.Ev MODPY_INCDIR ,
1384.Ev MODPY_LIBDIR ,
1385.Ev MODPY_SITEPKG ,
1386.Ev MODPY_SETUP ,
1387.Ev MODPY_TEST_DIR ,
1388.Ev MODPY_TEST_LOCALE ,
1389.Ev MODPY_WANTLIB ,
1390.Ev MODPY_LIB_DEPENDS ,
1391.Ev MODPY_RUN_DEPENDS ,
1392.Ev MODPY_TEST_DEPENDS ,
1393.Ev MODPY_BUILD_DEPENDS ,
1394and
1395.Ev MODPY_ADJ_FILES .
1396Appends to
1397.Ev RUN_DEPENDS
1398unless
1399.Ev MODPY_RUNDEP
1400is set to No.
1401Appends to
1402.Ev BUILD_DEPENDS
1403unless
1404.Ev MODPY_BUILDDEP
1405is set to No or
1406.Ev NO_BUILD
1407is set to Yes.
1408Appends to
1409.Ev TEST_DEPENDS
1410if
1411.Ev MODPY_PYTEST
1412is set to Yes
1413unless
1414.Ev MODPY_TESTDEP
1415is set to No.
1416Appends
1417.Ev MODPY_TEST_LOCALE
1418to
1419.Ev TEST_ENV .
1420Changes to the directory specified in
1421.Ev MODPY_TEST_DIR ,
1422by default WRKSRC, before running tests.
1423.Ev MODPY_VERSION
1424is the default version used by all python modules.
1425Ports which use the setuptools module should set
1426.Ev MODPY_SETUPTOOLS
1427to Yes.
1428Ports which use the pytest module should set
1429.Ev MODPY_PYTEST
1430to Yes.
1431Arguments can be passed to pytest during
1432.Cm test
1433with
1434.Ev MODPY_PYTEST_ARGS .
1435All ports that generate egg-info files should set
1436.Ev MODPY_EGG_VERSION
1437to the version string used by the
1438.Fn setup
1439function in the port's
1440.Pa setup.py .
1441Arguments can be passed to setup.py during
1442.Cm configure
1443with
1444.Ev MODPY_SETUP_ARGS .
1445Extra arguments to the build and install commands can be passed via
1446.Ev MODPY_DISTUTILS_BUILDARGS
1447and
1448.Ev MODPY_DISTUTILS_INSTALLARGS .
1449If any files have a python shebang line which needs to be replaced
1450using MODPY_BIN, list them in
1451.Ev MODPY_ADJ_FILES .
1452These are prefixed with WRKSRC and replaced automatically
1453at the end of
1454.Cm pre-configure .
1455Also affects
1456.Ev CATEGORIES ,
1457.Ev MAKE_ENV ,
1458.Ev CONFIGURE_ENV ,
1459and
1460.Ev SUBST_VARS .
1461May affect the
1462.Cm test
1463target.
1464If
1465.Ev MODPY_PI
1466is set to Yes it will set
1467.Ev HOMEPAGE
1468and
1469.Ev MASTER_SITES .
1470The subdirectory can be overridden with
1471.Ev MODPY_PI_DIR .
1472.Pp
1473Python 2.x places .pyc files in the same directory as the associated .py file.
1474Python 3.x places these in a separate __pycache__ directory and uses an
1475additional suffix.
1476In some cases, an ABI tag is also used for names of compiled extensions.
1477The python module defines variables to allow a single PLIST to be
1478used for both versions.
1479Generate or update the PLIST using the python3
1480.Ev FLAVOR ,
1481then edit it to prefix any lines creating
1482.Ev MODPY_PYCACHE
1483directories with
1484.Ev MODPY_COMMENT .
1485As python2 and python3 packages should permit being installed together,
1486it may be necessary to suffix names of common binaries or directories,
1487or split common files into a subpackage.
1488If updating the PLIST without using the python3 flavor,
1489take care not to remove ${MODPY_PYCACHE}, ${MODPY_PYC_MAGIC_TAG}, or
1490${MODPY_ABI_TAG} variables from the PLIST.
1491.It lang/ruby
1492See
1493.Xr ruby-module 5 .
1494.It lang/tcl
1495Sets
1496.Ev MODTCL_VERSION ,
1497.Ev MODTCL_BIN ,
1498.Ev MODTCL_INCDIR ,
1499.Ev MODTCL_LIBDIR ,
1500.Ev MODTCL_BUILD_DEPENDS ,
1501.Ev MODTCL_RUN_DEPENDS ,
1502.Ev MODTCL_LIB ,
1503.Ev MODTCL_LIB_DEPENDS ,
1504and
1505.Ev MODTCL_CONFIG .
1506.Ev MODTCL_VERSION
1507is the default version used by all Tcl ports and may be overridden.
1508Provides
1509.Ev MODTCL_TCLSH_ADJ
1510and
1511.Ev MODTCL_WISH_ADJ
1512shell fragments to patch the interpreter path in executable scripts.
1513Also affects
1514.Ev CATEGORIES
1515and
1516.Ev SUBST_VARS .
1517.It perl
1518This module is documented in the main
1519.Xr bsd.port.mk 5
1520manpage.
1521.It security/heimdal
1522A link from ${LOCALBASE}/heimdal/bin/krb5-config
1523to
1524.Xr krb5-config 1
1525will be put at the front of the path.
1526Sets
1527.Ev LIB_DEPENDS
1528and
1529.Ev WANTLIB
1530according to the values of
1531.Ev MODHEIMDAL_LIB_DEPENDS ,
1532and
1533.Ev MODHEIMDAL_WANTLIB .
1534.It textproc/intltool
1535Sets
1536.Ev MODINTLTOOL_OVERRIDE .
1537.Pa textproc/intltool
1538is added to
1539.Ev BUILD_DEPENDS .
1540.Ev MODINTLTOOL_OVERRIDE
1541changes the paths of
1542.Ev INTLTOOL_EXTRACT ,
1543.Ev INTLTOOL_MERGE
1544and
1545.Ev INTLTOOL_UPDATE
1546to use the installed versions of intltool-extract,
1547intltool-merge and intltool-update, instead of the version's packages into the
1548distfile of the port using this module.
1549Also affects
1550.Ev CONFIGURE_ENV ,
1551.Ev MAKE_ENV
1552and
1553.Ev MAKE_FLAGS
1554by appending
1555.Ev MODINTLTOOL_OVERRIDE
1556to them.
1557.It www/drupal7
1558Can be used to install plugins (default), themes if
1559.Ev MODDRUPAL_THEME
1560is yes, or languages packs if
1561.Ev DRUPAL_LANG
1562is set to the desired language.
1563.Pp
1564The module may set or add to default values for
1565.Ev HOMEPAGE ,
1566.Ev MASTER_SITES ,
1567.Ev PREFIX ,
1568.Ev DISTNAME ,
1569.Ev DIST_SUBDIR ,
1570.Ev CATEGORIES ,
1571.Ev PKGNAME ,
1572.Ev PKG_ARCH ,
1573.Ev WRKDIST ,
1574.Ev RUN_DEPENDS .
1575Drupal modules normally don't have any build part, just an installation part
1576that defaults to copying the plugin/theme/language files into the right
1577location through
1578.Ev MODDRUPAL_INSTALL .
1579.Pp
1580The module sets
1581.Ev DRUPAL
1582to drupal7,
1583.Ev DRUPAL_ROOT
1584to htdocs/${DRUPAL}
1585.Ev DRUPAL_MODS
1586to ${DRUPAL_ROOT}/site/all/modules
1587.Ev DRUPAL_THEMES
1588to ${DRUPAL_ROOT}/site/all/themes
1589and
1590.Ev DRUPAL_TRANSLATIONS
1591to ${DRUPAL_ROOT}/profiles/standard/translations.
1592So, by default, modules and themes are installed for all sites,
1593and translations are activated at install.
1594.Pp
1595.Ev DRUPAL_OWNER , DRUPAL_GROUP
1596are set to root, daemon, since drupal doesn't need to write
1597to any file except the files/ directory and the site settings (those
1598belong to www instead).
1599.Pp
1600Most modules are actually separate projects on the drupal site.
1601If
1602.Ev MODDRUPAL_PROJECT
1603is set,
1604.Ev HOMEPAGE
1605will lead to the corresponding project.
1606If
1607.Ev MODDRUPAL_VERSION
1608is also set,
1609.Ev DISTNAME
1610will default to
1611.Pa ${MODDRUPAL_PROJECT}-7.x-${MODDRUPAL_VERSION} ,
1612MODDRUPAL_PKGNAME
1613will default to
1614.Pa ${MODDRUPAL_PROJECT}
1615and
1616.Ev PKGNAME
1617will default to
1618.Pa drupal7-${MODDRUPAL_PKGNAME}-${MODDRUPAL_VERSION} .
1619.Pp
1620Translations are handled by setting
1621.Ev DRUPAL_LANG
1622to the language letter code, and by setting
1623.Ev LANGFILES
1624to a list of module names/version pairs.
1625.Pp
1626With drupal7, all translations have been put in separate .po files.
1627It has been deemed simplest to pack all translations for a given language
1628into a single package, since translations for non installed modules won't
1629affect anything.
1630.It www/mozilla
1631Sets
1632.Ev PKGNAME ,
1633.Ev HOMEPAGE ,
1634.Ev MASTER_SITES ,
1635.Ev DISTNAME ,
1636.Ev USE_GMAKE ,
1637and
1638.Ev ONLY_FOR_ARCHS .
1639.Ev EXTRACT_SUFX
1640defaults to .tar.bz2.
1641.Pp
1642Adds common dependencies to
1643.Ev LIB_DEPENDS ,
1644.Ev WANTLIB ,
1645.Ev RUN_DEPENDS
1646and
1647.Ev BUILD_DEPENDS .
1648Sets common
1649.Ev CONFIGURE_ARGS ,
1650.Ev MAKE_ENV
1651and
1652.Ev CONFIGURE_ENV .
1653Sets
1654.Ev MOB
1655variable as source directory
1656and
1657.Ev MOZ
1658as target directory within
1659.Cm do-install .
1660.Pp
1661Individual port Makefile must set
1662.Ev MOZILLA_PROJECT ,
1663.Ev MOZILLA_CODENAME ,
1664.Ev MOZILLA_VERSION ,
1665.Ev MOZILLA_BRANCH ,
1666.Ev MOZILLA_LIBS
1667and
1668.Ev MOZILLA_DATADIRS
1669variables.
1670Port can also append values to
1671.Ev MOZILLA_SUBST_FILES
1672which contains the list of
1673files to run
1674.Ev SUBST_CMD
1675on during
1676.Cm pre-configure ,
1677and
1678.Ev MOZILLA_AUTOCONF_DIRS
1679which
1680contains the list of dirs where
1681.Ev AUTOCONF
1682will be run during
1683.Cm pre-configure .
1684.It www/pear
1685Used for PHP PEAR ports.
1686Sets default
1687.Ev MASTER_SITES ,
1688.Ev EXTRACT_SUFX ,
1689.Ev PKGNAME .
1690Sets
1691.Ev PREFIX
1692to
1693.Pa /var/www .
1694Sets
1695.Ev NO_TEST
1696unless a
1697.Cm do-test
1698target is defined.
1699Adds common dependencies to
1700.Ev RUN_DEPENDS
1701and
1702.Ev BUILD_DEPENDS ,
1703sets
1704.Ev MAKE_FILE
1705and
1706.Ev FAKE_FLAGS
1707appropriately.
1708Makes
1709.Ev PEAR_LIBDIR
1710and
1711.Ev PEAR_PHPBIN
1712available for use in the port.
1713Sets a default
1714.Ev PKGNAME
1715and appends to
1716.Ev CATEGORIES .
1717.It www/plone
1718Sets
1719.Ev MODPLONE_VERSION
1720and
1721.Ev MODZOPE_VERSION .
1722.Ev MODPLONE_VERSION
1723is the default version used by all Plone ports and may be overridden.
1724It appends
1725.Pa www/plone
1726to
1727.Ev RUN_DEPENDS
1728and also sets
1729.Ev NO_TEST
1730to Yes.
1731.It x11/gnome
1732This module has full support for the
1733.Ar gnu ,
1734.Ar simple
1735and
1736.Ar cmake
1737CONFIGURE_STYLE.
1738.Pp
1739If both
1740.Ev GNOME_PROJECT
1741and
1742.Ev GNOME_VERSION
1743are set, this module defines
1744.Ev DISTNAME ,
1745.Ev VERSION ,
1746.Ev MASTER_SITES ,
1747adds x11/gnome to
1748.Ev CATEGORIES
1749and
1750.Ev EXTRACT_SUFX
1751will default to .tar.xz if unset.
1752Unless
1753.Li NO_BUILD=Yes ,
1754.Pa textproc/intltool
1755is also appended to
1756.Ev MODULES
1757and when CONFIGURE_STYLE is set to
1758.Ar gnu
1759or
1760.Ar simple ,
1761.Ev USE_GMAKE
1762is set to "Yes".
1763.Pp
1764When CONFIGURE_STYLE is set to
1765.Ar gnu
1766or
1767.Ar simple ,
1768if none of
1769.Ev AUTOCONF_VERSION
1770nor
1771.Ev AUTOMAKE_VERSION
1772are defined, then "--disable-maintainer-mode" is appended to
1773.Ev CONFIGURE_ARGS .
1774When CONFIGURE_STYLE is set to
1775.Ar cmake ,
1776"-DENABLE_MAINTAINER_MODE=OFF" and -DSYSCONF_INSTALL_DIR=${SYSCONFDIR}
1777are appended to CONFIGURE_ARGS.
1778.Pp
1779MODGNOME_CPPFLAGS and MODGNOME_LDFLAGS can be used to add compiler and linker
1780flags.
1781.Li CPPFLAGS="-I${LOCALBASE}/include"
1782and
1783.Li LDFLAGS="-L${LOCALBASE}/lib"
1784are always appended to
1785.Ev CONFIGURE_ENV .
1786.Pp
1787Certain build/run dependencies and configure arguments and environment
1788can be set by appending desktop-file-utils, docbook, gobject-introspection,
1789gtk-update-icon-cache, shared-mime-info, vala and/or yelp to
1790.Ev MODGNOME_TOOLS .
1791They are disabled otherwise.
1792If
1793.Ev MODGNOME_TOOLS
1794is set to desktop-file-utils,
1795a dependency on
1796.Pa devel/desktop-file-utils
1797is appended to
1798.Ev MODGNOME_RUN_DEPENDS
1799and a link to /usr/bin/true is created under
1800.Pa ${WRKDIR}/bin/desktop-file-validate .
1801If
1802.Ev MODGNOME_TOOLS
1803is set to docbook,
1804.Pa textproc/docbook-xsl
1805is appended to
1806.Ev MODGNOME_BUILD_DEPENDS .
1807This option is used when the generation of the man pages included in the
1808source tarball requires docbook XML/SGML/XSL definitions and stylesheets.
1809If
1810.Ev MODGNOME_TOOLS
1811is set to gtk-update-icon-cache, a dependency on
1812.Pa x11/gtk+3,-guic
1813is appended to
1814.Ev MODGNOME_RUN_DEPENDS .
1815If
1816.Ev MODGNOME_TOOLS
1817is set to shared-mime-info, a dependency on
1818.Pa misc/shared-mime-info
1819is appended to
1820.Ev MODGNOME_RUN_DEPENDS
1821and a link to /usr/bin/true is created under
1822.Pa ${WRKDIR}/bin/update-mime-database .
1823If
1824.Ev MODGNOME_TOOLS
1825is set to yelp,
1826.Pa textproc/itstool
1827and
1828.Pa x11/gnome/doc-utils
1829are appended to
1830.Ev MODGNOME_BUILD_DEPENDS .
1831Furthermore,
1832.Pa x11/gnome/yelp
1833is appended to
1834.Ev MODGNOME_RUN_DEPENDS
1835if
1836.Ev MODGNOME_TOOLS
1837also contains "desktop-file-utils"
1838This option is to be used when any files are installed into
1839.Pa share/gnome/help/
1840or page files are installed into
1841.Pa share/help/ .
1842.Ev MODGNOME_BUILD_DEPENDS
1843and
1844.Ev MODGNOME_RUN_DEPENDS
1845are appended to the
1846corresponding
1847.Ev BUILD_DEPENDS
1848and
1849.Ev RUN_DEPENDS .
1850.Pp
1851Some tools require the following goo in the PLIST:
1852.Pp
1853.Ar desktop-file-utils
1854.Bd -literal -offset indent
1855@exec %D/bin/update-desktop-database
1856@unexec-delete %D/bin/update-desktop-database
1857.Ed
1858.Pp
1859.Ar gtk-update-icon-cache
1860($icon-theme is the theme directory)
1861.Bd -literal -offset indent
1862@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/$icon-theme
1863@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/$icon-theme
1864.Ed
1865.Pp
1866.Ar shared-mime-info
1867.Bd -literal -offset indent
1868@exec %D/bin/update-mime-database %D/share/mime
1869@unexec-delete %D/bin/update-mime-database %D/share/mime
1870.Ed
1871.It x11/gnustep
1872.It x11/kde
1873Used for building KDE3-enabled ports.
1874Main variables there is
1875.Ev MODKDE_VERSION ,
1876which defines what patches and tweaks should be applied,
1877depending of exact KDE version the ported software is build
1878against of.
1879.It x11/kde4
1880Required for building KDE4-enabled ports.
1881Main variables are: MODKDE4_USE,
1882MODKDE4_VERSION, MODKDE4_DEP_DIR, MODKDE4_DEP_VERSION, MODKDE4_FLAVOR.
1883It's used both for KDE4 SC itself and for software built on top of it,
1884e.g., Digikam.
1885This module supports several KDE4 trees at the same time, see below.
1886The following variables are designed to be used in both types of ports:
1887.Bl -tag -width KDE4LIB
1888.It Ev MODKDE4_USE
1889Defines the core components of KDE4 to be used by the port.
1890Could have zero or more of the following values, in any order:
1891.Sq libs ,
1892.Sq runtime ,
1893.Sq pim ,
1894.Sq games ,
1895.Sq workspace .
1896Could be forced to be empty, this will mean no automated dependencies.
1897If
1898.Sq libs
1899is specified, no dependencies on runtime (kde-runtime or kdepim-runtime)
1900will be recorded.
1901The
1902.Sq workspace
1903component implies
1904.Sq runtime .
1905The
1906.Sq games
1907component is to be used by games and affects default HOMEPAGE, too.
1908If neither
1909.Sq libs
1910or
1911.Sq runtime
1912are specified, the
1913.Sq runtime
1914is implied.
1915If both
1916.Sq libs
1917and
1918.Sq runtime
1919are specified, then
1920.Sq runtime
1921takes precedence (actually, it's a libs+ anyway).
1922The
1923.Sq pim libs
1924combination adds dependencies on both kdelibs and kdepimlibs,
1925and
1926.Sq pim runtime (
1927or just
1928.Sq pim )
1929also adds dependencies on both kde-runtime and kdepim-runtime.
1930Defaults to
1931.Sq libs
1932when
1933.Ev MODKDE4_RESOURCES
1934is set to
1935.Sq Yes ,
1936and
1937.Sq runtime
1938otherwise.
1939.It Ev MODKDE4_DEP_DIR
1940Expands to
1941.Sq x11/kdeVERSION
1942where version depends on current
1943.Ev MODKDE4_VERSION ,
1944see below.
1945Read-only.
1946.It Ev MODKDE4_DEP_VERSION
1947Expands to a string to be used in dependency lines, see
1948examples in
1949.Pa x11/kde4/*
1950ports.
1951Read-only.
1952.It Ev MODKDE4_RESOURCES
1953Should be set to
1954.Sq Yes
1955for ports that only provide non-executable stuff like icons,
1956localization files and so on.
1957Affects
1958.Ev FLAVORS ,
1959.Ev MODKDE4_NO_QT ,
1960.Ev MODKDE4_USE ,
1961.Ev MODULES ,
1962.Ev PKG_ARCH
1963and
1964.Ev SUBST_VARS
1965variables.
1966Defaults to
1967.Sq \&No .
1968.It Ev MODKDE4_INCLUDE_DIR
1969Path where KDE4 headers to be placed/searched for, relative to
1970.Ev PREFIX .
1971Read-only.
1972.It Ev MODKDE4_LIB_DIR
1973Path where KDE4 headers to be placed/searched for, relative to
1974.Ev PREFIX .
1975Read-only.
1976.It Ev KDE4LIB
1977Shorter synonym for
1978.Ev MODKDE4_LIB_DIR ,
1979to be used in plists and
1980.Ev WANTLIB
1981declarations.
1982Read-only.
1983.It Ev MODKDE4_FIX_GETTEXT
1984If set to
1985.Sq Yes ,
1986adds an additional step before building the port that
1987searches for KDE-specific uses of the GETTEXT_PROCESS_PO_FILES
1988CMake command and tweaks them to be compatible with the one from the
1989.Pa FindGettext.cmake
1990module provided by CMake itself.
1991Defaults to
1992.Sq Yes .
1993.It Ev MODKDE4_SYSCONF_FILES
1994Some KDE ports install files under
1995.Pa ${SYSCONFDIR} .
1996We want to have them under
1997.Ev ${PREFIX}/share/examples
1998or such, and just be @sample'd under
1999.Pa ${SYSCONFDIR} .
2000So add
2001.Sq file/dir destination
2002pairs to this variable, and appropriate @sample lines to packing list, e.g.:
2003.Bd -literal -offset indent
2004# in Makefile:
2005MODKDE4_SYSCONF_FILES = dbus-1      share/examples
2006
2007# in PLIST:
2008share/examples/dbus-1/system.d/org.kde.baloo.filewatch.conf
2009@sample ${SYSCONFDIR}/dbus-1/system.d/org.kde.baloo.filewatch.conf
2010.Ed
2011.El
2012.Pp
2013The following variables are mostly used only inside KDE4 SC:
2014.Bl -tag -width KDE4LIB
2015.It MODKDE4_LIB_LINKS
2016If set to
2017.Sq Yes ,
2018soft links for shared libraries in
2019.Pa ${PREFIX}/lib
2020to
2021.Pa ${MODKDE4_LIB_DIR}
2022will be created.
2023Used to distinguish libraries from different KDE versions (3, 4...).
2024Defaults to
2025.Sq \&No .
2026.It KDE4_ONLY
2027If set to
2028.Sq Yes ,
2029sets the
2030.Xr dpb 1
2031tag to
2032.Sq kde4 .
2033Defaults to
2034.Sq \&No
2035when
2036.Ev MODKDE4_USE
2037is empty, and to
2038.Sq Yes
2039otherwise.
2040.El
2041.Pp
2042The following variables are likely to be used only outside KDE4 SC:
2043.Bl -tag -width KDE4LIB
2044.It MODKDE4_NO_QT
2045If set to
2046.Sq Yes ,
2047avoids automatic addition of x11/qt4 to
2048.Ev MODULES .
2049.El
2050.Pp
2051The x11/kde4 module supports co-existence of different KDE4 SC version
2052ports subtrees.
2053There always is a so-called stable tree in
2054.Pa ${PORTSDIR}/x11/kde4
2055and additional trees are placed in
2056.Pa ${PORTSDIR}/x11/kdeXYZ ,
2057where
2058.Sq XYZ
2059correspond to the
2060.Sq X.Y.Z
2061KDE version.
2062So, say, KDE 4.12.4 tree should be placed in
2063.Pa ${PORTSDIR}/x11/kde4124
2064directory.
2065The process of preparing a new KDE SC version subtree is automated,
2066just use kde-release-helper script:
2067.Bd -literal -offset indent
2068cd ${PORTSDIR}/x11/kde4
2069\&./kde-release-helper prepare 4.12.4
2070.Ed
2071This will copy the x11/kde4 subtree to x11/kde4124 and strip it:
2072remove
2073.Ev REVISION
2074marks, remove distinfo files and so on.
2075.Pp
2076To access the new version then you'll need to add appropriate
2077values at the top of x11/kde4 module file itself.
2078Then you be able to use automatically created
2079.Sq kdeXYZ
2080.Ev FLAVOR
2081to reference corresponding KDE4 SC version outside x11/kde4*.
2082.Pp
2083The x11/kde4 module sets the following variables unless they're already
2084set by a port:
2085.Ev CONFIGURE_STYLE ,
2086.Ev EXTRACT_SUFX ,
2087.Ev ONLY_FOR_ARCHS ,
2088.Ev PORTHOME ,
2089and
2090.Ev SEPARATE_BUILD .
2091.Pp
2092The x11/kde4 module modifies the following variables if needed:
2093.Ev BUILD_DEPENDS ,
2094.Ev CONFIGURE_ARGS ,
2095.Ev CONFIGURE_ENV ,
2096.Ev LIB_DEPENDS ,
2097.Ev RUN_DEPENDS ,
2098and
2099.Ev WANTLIB .
2100.Pp
2101The x11/kde4 module automatically adds devel/cmake to
2102.Ev MODULES
2103unless
2104.Ev NO_BUILD
2105is set to
2106.Sq Yes .
2107The x11/kde4 module automatically adds x11/qt4 to
2108.Ev MODULES
2109unless
2110.Ev MODKDE4_NO_QT
2111is set to
2112.Sq Yes .
2113The x11/kde4 module automatically adds gcc4 to
2114.Ev MODULES
2115unless
2116.Ev MODKDE4_RESOURCES
2117is set to
2118.Sq Yes .
2119.It x11/qt3, x11/qt4 and x11/qt5
2120All qt* modules share a common
2121.Ev MODQT_*
2122namespace for simple ports.
2123The qt3 module also defines the same variables under
2124.Ev MODQT3_* ,
2125the qt4 module also defines the same variables under
2126.Ev MODQT4_*
2127and the qt5 module also defines the same variables under
2128.Ev MODQT5_* ,
2129to allow ports to use both modules, such as
2130.Pa print/poppler .
2131.Pp
2132Those modules define
2133.Ev MODQT*_LIBDIR
2134as the libraries location,
2135.Ev MODQT*_INCDIR
2136as the include files location,
2137.Ev MODQT*_QTDIR
2138as the global qt directory location,
2139.Ev MODQT*_CONFIGURE_ARGS
2140as standard GNU configure-style parameters to locate the include and libraries.
2141.Pp
2142The location of Qt-specific tools
2143.Nm lrelease ,
2144.Nm moc ,
2145.Nm qmake
2146and
2147.Nm uic
2148is available through
2149.Ev MODQT*_LRELEASE ,
2150.Ev MODQT*_MOC ,
2151.Ev MODQT*_QMAKE
2152and
2153.Ev MODQT*_UIC .
2154.Ev MODQT*_OVERRIDE_UIC
2155controls whether the default setup will force a value of
2156.Ev UIC
2157or not.
2158The value of
2159.Ev MOC
2160is always forced to ${MODQT*_MOC}.
2161.Pp
2162In most cases the
2163.Pa devel/qmake
2164module should be used instead of using
2165.Ev MODQT*_QMAKE
2166directly.
2167.Pp
2168qt4 includes
2169.Xr pkg-config 1
2170files under a specific location recorded in
2171.Ev MODQT_PKG_CONFIG_PATH .
2172Qt3 requires the use of
2173.Ev MODQT3_PLUGINS
2174to correctly locate plugins.
2175.Pp
2176The modules add to
2177.Ev CONFIGURE_ENV , MAKE_ENV
2178and
2179.Ev MAKE_FLAGS .
2180They define appropriate
2181.Ev MODQT*_LIB_DEPENDS
2182and
2183.Ev MODQT*_WANTLIB .
2184.Pp
2185Note that Qt 4 and Qt 5 has their code split over several libraries.
2186For the qt4 module the basic
2187.Ev WANTLIB
2188only refers to QtCore, and other libraries should be added as needed.
2189The qt5 module doesn't set
2190.Ev MODQT*_WANTLIB
2191at all.
2192Also, Qt 5 consists of many so called Qt modules, and qt5 port module
2193only refers to qtbase Qt 5 module; other Qt modules should be added to
2194.Ev LIB_DEPENDS ,
2195.Ev BUILD_DEPENDS
2196or
2197.Ev RUN_DEPENDS
2198manually.
2199.It x11/tk
2200Sets
2201.Ev MODTK_VERSION ,
2202.Ev MODTK_BIN ,
2203.Ev MODTK_INCDIR ,
2204.Ev MODTK_LIBDIR ,
2205.Ev MODTK_BUILD_DEPENDS ,
2206.Ev MODTK_RUN_DEPENDS ,
2207.Ev MODTK_LIB ,
2208.Ev MODTK_LIB_DEPENDS ,
2209and
2210.Ev MODTK_CONFIG .
2211.Ev MODTK_VERSION
2212is the default version used by all Tk ports and
2213may be overridden.
2214Automatically adds the
2215.Pa lang/tcl
2216module, provides a default
2217.Ev MODTCL_VERSION
2218to match
2219.Ev MODTK_VERSION ,
2220and affects
2221.Ev CATEGORIES
2222and
2223.Ev SUBST_VARS .
2224Note the
2225.Ev MODTCL_WISH_ADJ
2226shell fragment in the
2227.Pa lang/tcl
2228module.
2229.It x11/xfce4
2230Sets
2231.Ev DIST_SUBDIR ,
2232.Ev EXTRACT_SUFX ,
2233.Ev CONFIGURE_STYLE ,
2234.Ev CONFIGURE_ENV
2235and
2236.Ev USE_GMAKE .
2237If
2238.Ev MODXFCE_ICON_CACHE
2239is set to yes, it adds
2240.Pa x11/gtk+3,-guic
2241to
2242.Ev RUN_DEPENDS .
2243Unless
2244.Ev XFCE_NO_SRC
2245is set,
2246.Pa textproc/intltool
2247is added to
2248.Ev MODULES .
2249Also affects
2250.Ev CATEGORIES .
2251.Pp
2252Xfce ports can be divided into five categories: core libraries and
2253applications, goodies, artwork, thunar plugins, and panel plugins.
2254.Ev HOMEPAGE ,
2255.Ev MASTER_SITES
2256and
2257.Ev DISTNAME
2258are built using
2259.Ev XFCE_VERSION
2260(which defaults to
2261.Ev XFCE_DESKTOP_VERSION
2262if not set) and either
2263.Ev XFCE_PROJECT ,
2264.Ev XFCE_GOODIE ,
2265.Ev XFCE_ARTWORK ,
2266.Ev THUNAR_PLUGIN
2267or
2268.Ev XFCE_PLUGIN .
2269One of the latter has to be provided by the port Makefile.
2270.El
2271.Sh SEE ALSO
2272.Xr make 1 ,
2273.Xr bsd.port.mk 5 ,
2274.Xr ports 7
2275