xref: /openbsd-src/share/man/man5/port-modules.5 (revision 58fbf5d6aa35e3d66f2c32c61d2f38824a990e85)
1.\"	$OpenBSD: port-modules.5,v 1.253 2021/02/10 12:44:13 espie 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: February 10 2021 $
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 .
859.Ev TYPEFACE
860should be set to the name of the typeface.
861This sets
862.Ev FONTDIR
863using said typeface name.
864.Ev FONTTYPES
865defaults to `ttf' but can be set to include the extensions of
866fonts which are to be installed.
867Also sets
868.Ev FONT_DISTDIR .
869A
870.Cm do-install
871target is provided if the port tself does not provide it.
872.It fortran
873Sets
874.Ev MODFORTRAN_LIB_DEPENDS ,
875.Ev MODFORTRAN_WANTLIB ,
876.Ev MODFORTRAN_BUILD_DEPENDS .
877Set
878.Ev MODFORTRAN_COMPILER
879to `gfortran', or `flang', depending on what the port requires.
880The default is `gfortran'.
881The dependencies are chosen according to
882.Ev MODFORTRAN_COMPILER .
883.It gcc4
884If
885.Ev COMPILER_VERSION
886is not gcc4 (defined by
887.Pa /usr/share/mk/bsd.own.mk ) ,
888and architecture is in
889.Ev MODGCC4_ARCHS ,
890then the gcc4 compilers will be put at the front of the path.
891By default, only C language support is included by this module.
892If other languages are needed, they must be listed in
893.Ev MODGCC4_LANGS
894(e.g. c++, fortran).
895The
896.Ev MODGCC4_VERSION
897variable can be used to change the version of gcc.
898By default gcc 4.9 is used.
899If
900.Ev MODGCC4_LANGS
901contains c++, this module provides
902.Ev MODGCC4_CPPLIBDEP
903and
904.Ev MODGCC4_CPPWANTLIB .
905.It gnu
906This module is documented in the main
907.Xr bsd.port.mk 5
908manpage.
909.It imake
910This module is documented in the main
911.Xr bsd.port.mk 5
912manpage.
913.It java
914Set
915.Li MODJAVA_VER=x.y
916to use exactly the JDK x.y,
917.Li MODJAVA_VER=x.y+
918to use any x.y or higher version.
919Set
920.Li MODJAVA_JRERUN=Yes
921if the port only needs the JRE at runtime.
922The module sets
923.Ev JAVA_HOME ,
924.Ev ONLY_FOR_ARCHS ,
925.Ev MODJAVA_RUN_DEPENDS ,
926.Ev MODJAVA_SHARE_DIR ,
927.Ev MODJAVA_JAR_DIR ,
928.Ev MODJAVA_EXAMPLE_DIR
929and
930.Ev MODJAVA_DOC_DIR .
931It appends to
932.Ev BUILD_DEPENDS ,
933.Ev RUN_DEPENDS ,
934.Ev CATEGORIES
935and
936.Ev SUBST_VARS .
937If
938.Li MODJAVA_BUILD=ant
939then this module provides
940.Ev MODJAVA_BUILD_DIR ,
941.Ev MODJAVA_BUILD_FILE
942and
943.Ev MODJAVA_BUILD_TARGET_NAME ,
944as well as a
945.Cm do-build
946target (if not already defined).
947It heeds
948.Ev NO_BUILD .
949.It lang/clang
950Similar to gcc3 and gcc4 modules.
951If architecture is in MODCLANG_ARCHS, the CLang compilers will be
952put at the front of the path.
953By default, only C language support is included by this module.
954If other languages are needed, they must be listed in
955.Ev MODCLANG_LANGS
956(e.g. c++).
957Sets
958.Ev MODCLANG_VERSION
959which is also appended to
960.Ev SUBST_VARS .
961.It lang/erlang
962.It lang/ghc
963Sets
964.Ev ONLY_FOR_ARCHS ,
965.Ev MODGHC_VER ,
966.Ev BUILD_DEPENDS ,
967and
968.Ev RUN_DEPENDS .
969Build and further actions are based on the list of values in
970.Ev MODGHC_BUILD :
971.Bl -tag -width register
972.It Ar nort
973no runtime dependency on
974.Pa lang/ghc
975nor the hs- prefix to
976.Ev PKGNAME
977will be added,
978.It Ar cabal
979get the typical Cabal targets defined,
980.It Ar haddock
981generate API documentation using
982.Pa devel/haddock ,
983.It Ar register
984create and include register/unregister scripts,
985.It Ar hackage
986the distfiles are available on Hackage.
987.El
988.Pp
989Also affects
990.Ev CATEGORIES ,
991.Ev CONFIGURE_STYLE
992and
993.Ev SUBST_VARS .
994.Cm do-build ,
995.Cm do-install
996and
997.Cm do-test
998targets are provided if the port itself didn't set them.
999If
1000.Ar register
1001has been set, the PLIST needs to be modified in order to
1002add the relevant @exec/@unexec lines.
1003This module will run the Setup script and ensure the documentation
1004will be built (if
1005.Ar haddock
1006has been set), and that the package is
1007registered as a library usable by
1008.Pa lang/ghc
1009(if
1010.Ar register
1011has been set).
1012Extra arguments and environment additions for the Setup configure
1013command can be specified with
1014.Ev MODGHC_SETUP_CONF_ARGS
1015and
1016.Ev MODGHC_SETUP_CONF_ENV .
1017.It lang/go
1018Adds Go toolchain support.
1019Requires
1020.Ev ALL_TARGET
1021to be set to canonical Go import path of port.
1022(Module sets it automatically for ports that use
1023.Ev GH_ACCOUNT
1024and
1025.Ev GH_PROJECT
1026macros.)
1027.Pp
1028During execution of
1029.Cm pre-configure
1030target module moves source code from
1031.Pa ${MODGO_SUBDIR}
1032to
1033.Pa ${WRKSRC} ,
1034subdirectory of
1035.Pa ${MODGO_WORKSPACE}
1036- specially-crafted Go workspace located at
1037.Pa ${WRKDIR}/go .
1038During
1039.Cm do-build
1040module calls
1041.Dq go install
1042with
1043.Ev GOPATH
1044set to
1045.Pa ${MODGO_WORKSPACE} ,
1046runs its output through sed to prevent writes outside
1047.Ev WRKDIR
1048sandbox and sends output to
1049.Xr sh 1 .
1050During
1051.Cm do-install
1052it copies executables from
1053.Pa ${MODGO_WORKSPACE}/bin
1054to
1055.Pa ${PREFIX}/bin ,
1056and/or directories
1057.Pa ${MODGO_WORKSPACE}/pkg
1058and
1059.Pa ${MODGO_WORKSPACE}/src
1060to
1061.Pa ${PREFIX}/go ,
1062depending on
1063.Ev MODGO_TYPE
1064contents.
1065.Pp
1066Sets
1067.Ev BUILD_DEPENDS ,
1068.Ev RUN_DEPENDS ,
1069.Ev ALL_TARGET ,
1070.Ev TEST_TARGET ,
1071.Ev ONLY_FOR_ARCHS ,
1072.Ev SEPARATE_BUILD ,
1073and
1074.Ev WRKSRC .
1075.Pp
1076Appends to
1077.Ev CATEGORIES .
1078.Pp
1079Defines:
1080.Bl -tag -width MODGO_WORKSPACE
1081.It Ev MODGO_TYPE
1082Type of port.
1083May be any combination of:
1084.Bl -tag -width lib
1085.It bin
1086ordinary binary, which should be installed to
1087.Pa ${PREFIX}/bin ,
1088.It lib
1089library, which should come with source code.
1090.El
1091.Pp
1092Defaults to
1093.Ar bin .
1094.It Ev MODGO_WORKSPACE
1095Path to Go workspace set up for port build process.
1096Defaults to
1097.Pa ${WRKDIR}/go .
1098See Go documentation for details.
1099.It Ev MODGO_SUBDIR
1100Path to Go source code within port's sources tarball.
1101Defaults to
1102.Pa ${WRKDIST} .
1103.It Ev MODGO_SETUP_WORKSPACE
1104Commands setting up Go workspace for building ports.
1105By default, happens during execution of
1106.Cm pre-configure
1107target.
1108.It Ev MODGO_BUILDDEP
1109Controls whether contents of
1110.Ev MODGO_BUILD_DEPENDS
1111are appended to port's
1112.Ev BUILD_DEPENDS .
1113Defaults to
1114.Ar Yes .
1115.It Ev MODGO_MODNAME
1116is the module name as defined in the
1117.Pa go.mod
1118file contained in a project.
1119If this is set,
1120.Ev MODGO_MODULES ,
1121.Ev MODGO_MODFILES
1122and
1123.Ev MODGO_VERSION
1124need to be defined as well.
1125Setting this will also set
1126.Ev ALL_TARGET .
1127When
1128.Ev MODGO_MODFILES
1129is set, and a "cmd" directory is found in
1130.Ev WRKSRC ,
1131"cmd/..." is appended to
1132.Ev ALL_TARGET
1133in
1134.Cm do-build
1135automatically.
1136.It Ev MODGO_VERSION
1137Sets the specific version of a Go module to use.
1138For example: v0.1.3.
1139.It Ev MODGO_MODULES
1140List of modules and their specific versions that an application depends on.
1141.It Ev MODGO_MODFILES
1142List of go.mod files and their versions that are required for dependency
1143resolution.
1144These are required by Go to determine the full dependency graph.
1145.El
1146.Pp
1147Additionally defines
1148.Ev MODGO_PACKAGES ,
1149.Ev MODGO_SOURCES
1150and
1151.Ev MODGO_TOOLS
1152(paths for installed Go packages, sources and tools respectively),
1153.Ev MODGO_CMD
1154and
1155.Ev MODGO_FLAGS
1156(source code build command and flags passed as its arguments),
1157.Ev MODGO_LDFLAGS ,
1158.Ev MODGO_BUILD_CMD
1159and
1160.Ev MODGO_TEST_CMD
1161(commands for building and testing go packages; normally called with canonical
1162Go package names as arguments),
1163.Ev MODGO_{BUILD,INSTALL,TEST}_TARGET
1164and
1165.Ev MODGO_{BUILD,RUN}_DEPENDS .
1166.Pp
1167This module adds one
1168.Xr make 1
1169target:
1170.Bl -tag -width modgo-gen-modules
1171.It Cm modgo-gen-modules
1172Generate the
1173.Ev MODGO_MODULES
1174and the
1175.Ev MODGO_MODFILES
1176lists.
1177.El
1178.It lang/lua
1179Sets
1180.Ev MODLUA_BIN ,
1181.Ev MODLUA_DATADIR ,
1182.Ev MODLUA_DEP ,
1183.Ev MODLUA_DEP_VERSION ,
1184.Ev MODLUA_DOCDIR ,
1185.Ev MODLUA_EXAMPLEDIR ,
1186.Ev MODLUA_INCL_DIR ,
1187.Ev MODLUA_LIB ,
1188.Ev MODLUA_LIBDIR ,
1189.Ev MODLUA_VERSION ,
1190.Ev MODLUA_WANTLIB .
1191Appends to
1192.Ev CATEGORIES .
1193Also appends to
1194.Ev BUILD_DEPENDS ,
1195unless
1196.Ev NO_BUILD
1197has been set to Yes.
1198Also appends to
1199.Ev RUN_DEPENDS ,
1200unless
1201.Ev MODLUA_RUNDEP
1202is set to No.
1203Appends
1204.Ev MODLUA_VERSION ,
1205.Ev MODLUA_LIB ,
1206.Ev MODLUA_INCL_DIR ,
1207.Ev MODLUA_EXAMPLEDIR ,
1208.Ev MODLUA_DOCDIR ,
1209.Ev MODLUA_LIBDIR ,
1210.Ev MODLUA_DATADIR ,
1211.Ev MODLUA_DEP ,
1212.Ev MODLUA_DEP_VERSION ,
1213.Ev MODLUA_BIN
1214to
1215.Ev SUBST_VARS .
1216.Ev MODLUA_DEFAULT_VERSION
1217is set to 5.1.
1218.Ev MODLUA_VERSION is set to
1219.Ev MODLUA_DEFAULT_VERSION
1220by default.
1221Ports can be built with several lua versions.
1222If no FLAVOR is set it defaults to MODLUA_DEFAULT_VERSION.
1223Otherwise the FULLPKGNAME is adjusted, if MODLUA_SA is not set.
1224In order to set a build, run or test dependency on a lua port,
1225use the following, which will propagate the currently used flavor:
1226.Ev MODLUA_BUILD_DEPENDS ,
1227.Ev MODLUA_TEST_DEPENDS ,
1228.Ev MODLUA_RUN_DEPENDS .
1229.It lang/mono
1230Sets
1231.Ev MODMONO_ONLY_FOR_ARCHS ,
1232.Ev CONFIGURE_ENV ,
1233.Ev MAKE_FLAGS ,
1234.Ev MODMONO_BUILD_DEPENDS
1235and
1236.Ev MODMONO_RUN_DEPENDS .
1237If
1238.Ev MODMONO_DEPS
1239is set to Yes,
1240.Pa lang/mono
1241is appended to
1242.Ev BUILD_DEPENDS
1243and
1244.Ev RUN_DEPENDS .
1245.Ev DLLMAP_FILES
1246defines in which files the module will substitute hardcoded
1247shared library versions using a
1248.Cm post-configure
1249target.
1250.It lang/node
1251Adds common dependencies to
1252.Ev RUN_DEPENDS
1253and
1254.Ev BUILD_DEPENDS .
1255Recognizes two additional types of
1256.Ev CONFIGURE_STYLE Ns s ,
1257"npm" and "npm ext".
1258"npm ext" should be used for npm packages that contain C++ extensions which
1259need to be compiled.
1260"npm" should be used for other npm packages.
1261If regression tests are included that can be run using
1262.Pa devel/node-expresso ,
1263append "expresso" to
1264.Ev CONFIGURE_STYLE .
1265.Pa devel/node-expresso
1266will be appended to
1267.Ev TEST_DEPENDS
1268and a default
1269.Ev MODNODE_TEST_TARGET
1270will be defined, along with a
1271.Cm do-test
1272target if it has not already been set.
1273If "expresso" isn't appended to
1274.Ev CONFIGURE_STYLE ,
1275.Ev TEST_TARGET
1276will be set to "test".
1277One of these two
1278.Ev CONFIGURE_STYLE Ns s
1279should be used or the module doesn't affect anything except
1280.Ev RUN_DEPENDS
1281and
1282.Ev BUILD_DEPENDS .
1283Requires
1284.Ev NPM_NAME
1285to be set to the name of the npm package.
1286Uses
1287.Ev NPM_NAME
1288and
1289.Ev NPM_VERSION
1290to set
1291.Ev DISTNAME ,
1292and
1293.Ev PKGNAME ,
1294and
1295.Ev MASTER_SITES .
1296If the npm package depends on other npm packages, the npm package names it
1297depends on should be listed in
1298.Ev MODNODE_DEPENDS .
1299Adds default
1300.Cm do_build
1301and
1302.Cm do_install
1303tasks, and you can reference the default implementations via
1304.Ev MODNODE_BUILD_TARGET
1305and
1306.Ev MODNODE_INSTALL_TARGET .
1307.It lang/ocaml
1308Appends to
1309.Ev BUILD_DEPENDS
1310and
1311.Ev MAKE_ENV .
1312Appends to
1313.Ev RUN_DEPENDS
1314unless
1315.Ev MODOCAML_RUNDEP
1316is set to No, or set to if-not-native and native compilation
1317is supported on this architecture.
1318Including this module selects a %%native%% plist fragment and
1319.Ev ocaml_native
1320property depending on whether the architecture supports native
1321compilation.
1322If dynamic linking is supported on the native architecture,
1323the %%dynlink%% plist fragment and
1324.Ev ocaml_native_dynlink
1325property is set.
1326When
1327.Ev CONFIGURE_STYLE
1328is set to `oasis',
1329overrides for the
1330.Cm do-build ,
1331.Cm do-install ,
1332and
1333.Cm do-test
1334targets are added.
1335.It lang/php
1336Used for ports using PHP in some way:
1337either extensions to PHP, or software written in PHP.
1338Sets
1339.Ev MODPHP_RUN_DEPENDS ,
1340.Ev MODPHP_LIB_DEPENDS ,
1341.Ev MODPHP_WANTLIB ,
1342.Ev MODPHP_BIN ,
1343.Ev MODPHP_PHPIZE ,
1344.Ev MODPHP_PHP_CONFIG ,
1345.Ev MODPHP_INCDIR
1346and
1347.Ev MODPHP_LIBDIR .
1348Adds to
1349.Ev RUN_DEPENDS
1350unless
1351.Ev MODPHP_RUNDEP
1352is set to No.
1353Adds to
1354.Ev BUILD_DEPENDS
1355if
1356.Ev MODPHP_BUILDDEP
1357is set to Yes.
1358If
1359.Ev MODPHP_DO_PHPIZE
1360is set, prepares a build environment for extensions that use phpize.
1361.Pp
1362Ports using PDO for database connectivity often have a choice of
1363dependencies (pdo_sqlite, pdo_mysql, pdo_pgsql and others).
1364The module constructs
1365.Ev MODPHP_PDO_DEPENDS
1366from the PDO types listed in
1367.Ev MODPHP_PDO_ALLOWED
1368(defaulting to "sqlite mysql pgsql").
1369This can be added to
1370.Ev RUN_DEPENDS
1371and allows any of these PDO packages to satisfy the dependency, with
1372.Ev MODPHP_PDO_PREF
1373(sqlite by default) chosen if none are installed.
1374.It lang/php/pecl
1375Used for ports for PHP PECL extensions.
1376Sets default
1377.Ev MASTER_SITES ,
1378.Ev HOMEPAGE ,
1379.Ev EXTRACT_SUFX ,
1380.Ev DESTDIRNAME ,
1381.Ev MODPHP_DO_SAMPLE ,
1382.Ev MODPHP_DO_PHPIZE ,
1383.Ev AUTOCONF_VERSION ,
1384.Ev AUTOMAKE_VERSION ,
1385.Ev LIBTOOL_FLAGS .
1386Provides a default
1387.Ev TEST_TARGET
1388and
1389.Ev TEST_FLAGS
1390unless
1391.Ev NO_TEST
1392or a
1393.Cm do-test
1394target is defined.
1395Adds common dependencies to
1396.Ev RUN_DEPENDS
1397and
1398.Ev BUILD_DEPENDS .
1399Sets a default
1400.Ev PKGNAME
1401and appends to
1402.Ev CATEGORIES .
1403.It lang/python
1404Sets
1405.Ev MODPY_VERSION ,
1406.Ev MODPY_BIN ,
1407.Ev MODPY_INCDIR ,
1408.Ev MODPY_LIBDIR ,
1409.Ev MODPY_SITEPKG ,
1410.Ev MODPY_SETUP ,
1411.Ev MODPY_TEST_DIR ,
1412.Ev MODPY_TEST_LOCALE ,
1413.Ev MODPY_WANTLIB ,
1414.Ev MODPY_LIB_DEPENDS ,
1415.Ev MODPY_RUN_DEPENDS ,
1416.Ev MODPY_TEST_DEPENDS ,
1417.Ev MODPY_BUILD_DEPENDS ,
1418and
1419.Ev MODPY_ADJ_FILES .
1420Appends to
1421.Ev RUN_DEPENDS
1422unless
1423.Ev MODPY_RUNDEP
1424is set to No.
1425Appends to
1426.Ev BUILD_DEPENDS
1427unless
1428.Ev MODPY_BUILDDEP
1429is set to No or
1430.Ev NO_BUILD
1431is set to Yes.
1432Appends to
1433.Ev TEST_DEPENDS
1434if
1435.Ev MODPY_PYTEST
1436is set to Yes
1437unless
1438.Ev MODPY_TESTDEP
1439is set to No.
1440Appends
1441.Ev MODPY_TEST_LOCALE
1442to
1443.Ev TEST_ENV .
1444Changes to the directory specified in
1445.Ev MODPY_TEST_DIR ,
1446by default WRKSRC, before running tests.
1447.Ev MODPY_VERSION
1448is the default version used by all python modules.
1449Ports which use the setuptools module should set
1450.Ev MODPY_SETUPTOOLS
1451to Yes.
1452Ports which use the pytest module should set
1453.Ev MODPY_PYTEST
1454to Yes.
1455Arguments can be passed to pytest during
1456.Cm test
1457with
1458.Ev MODPY_PYTEST_ARGS .
1459All ports that generate egg-info files should set
1460.Ev MODPY_EGG_VERSION
1461to the version string used by the
1462.Fn setup
1463function in the port's
1464.Pa setup.py .
1465Arguments can be passed to setup.py during
1466.Cm configure
1467with
1468.Ev MODPY_SETUP_ARGS .
1469Extra arguments to the build and install commands can be passed via
1470.Ev MODPY_DISTUTILS_BUILDARGS
1471and
1472.Ev MODPY_DISTUTILS_INSTALLARGS .
1473If any files have a python shebang line which needs to be replaced
1474using MODPY_BIN, list them in
1475.Ev MODPY_ADJ_FILES .
1476These are prefixed with WRKSRC and replaced automatically
1477at the end of
1478.Cm pre-configure .
1479Also affects
1480.Ev CATEGORIES ,
1481.Ev MAKE_ENV ,
1482.Ev CONFIGURE_ENV ,
1483and
1484.Ev SUBST_VARS .
1485May affect the
1486.Cm test
1487target.
1488If
1489.Ev MODPY_PI
1490is set to Yes it will set
1491.Ev HOMEPAGE
1492and
1493.Ev MASTER_SITES .
1494The subdirectory can be overridden with
1495.Ev MODPY_PI_DIR .
1496.Pp
1497Python 2.x places .pyc files in the same directory as the associated .py file.
1498Python 3.x places these in a separate __pycache__ directory and uses an
1499additional suffix.
1500In some cases, an ABI tag is also used for names of compiled extensions.
1501The python module defines variables to allow a single PLIST to be
1502used for both versions.
1503Generate or update the PLIST using the python3
1504.Ev FLAVOR ,
1505then edit it to prefix any lines creating
1506.Ev MODPY_PYCACHE
1507directories with
1508.Ev MODPY_COMMENT .
1509As python2 and python3 packages should permit being installed together,
1510it may be necessary to suffix names of common binaries or directories,
1511or split common files into a subpackage.
1512If updating the PLIST without using the python3 flavor,
1513take care not to remove ${MODPY_PYCACHE}, ${MODPY_PYC_MAGIC_TAG}, or
1514${MODPY_ABI_TAG} variables from the PLIST.
1515.It lang/ruby
1516See
1517.Xr ruby-module 5 .
1518.It lang/tcl
1519Sets
1520.Ev MODTCL_VERSION ,
1521.Ev MODTCL_BIN ,
1522.Ev MODTCL_INCDIR ,
1523.Ev MODTCL_LIBDIR ,
1524.Ev MODTCL_BUILD_DEPENDS ,
1525.Ev MODTCL_RUN_DEPENDS ,
1526.Ev MODTCL_LIB ,
1527.Ev MODTCL_LIB_DEPENDS ,
1528and
1529.Ev MODTCL_CONFIG .
1530.Ev MODTCL_VERSION
1531is the default version used by all Tcl ports and may be overridden.
1532Provides
1533.Ev MODTCL_TCLSH_ADJ
1534and
1535.Ev MODTCL_WISH_ADJ
1536shell fragments to patch the interpreter path in executable scripts.
1537Also affects
1538.Ev CATEGORIES
1539and
1540.Ev SUBST_VARS .
1541.It perl
1542This module is documented in the main
1543.Xr bsd.port.mk 5
1544manpage.
1545.It security/heimdal
1546A link from ${LOCALBASE}/heimdal/bin/krb5-config
1547to
1548.Xr krb5-config 1
1549will be put at the front of the path.
1550Sets
1551.Ev LIB_DEPENDS
1552and
1553.Ev WANTLIB
1554according to the values of
1555.Ev MODHEIMDAL_LIB_DEPENDS ,
1556and
1557.Ev MODHEIMDAL_WANTLIB .
1558.It textproc/intltool
1559Sets
1560.Ev MODINTLTOOL_OVERRIDE .
1561.Pa textproc/intltool
1562is added to
1563.Ev BUILD_DEPENDS .
1564.Ev MODINTLTOOL_OVERRIDE
1565changes the paths of
1566.Ev INTLTOOL_EXTRACT ,
1567.Ev INTLTOOL_MERGE
1568and
1569.Ev INTLTOOL_UPDATE
1570to use the installed versions of intltool-extract,
1571intltool-merge and intltool-update, instead of the version's packages into the
1572distfile of the port using this module.
1573Also affects
1574.Ev CONFIGURE_ENV ,
1575.Ev MAKE_ENV
1576and
1577.Ev MAKE_FLAGS
1578by appending
1579.Ev MODINTLTOOL_OVERRIDE
1580to them.
1581.It www/mozilla
1582Sets
1583.Ev PKGNAME ,
1584.Ev HOMEPAGE ,
1585.Ev MASTER_SITES ,
1586.Ev DISTNAME ,
1587.Ev USE_GMAKE ,
1588and
1589.Ev ONLY_FOR_ARCHS .
1590.Ev EXTRACT_SUFX
1591defaults to .tar.bz2.
1592.Pp
1593Adds common dependencies to
1594.Ev LIB_DEPENDS ,
1595.Ev WANTLIB ,
1596.Ev RUN_DEPENDS
1597and
1598.Ev BUILD_DEPENDS .
1599Sets common
1600.Ev CONFIGURE_ARGS ,
1601.Ev MAKE_ENV
1602and
1603.Ev CONFIGURE_ENV .
1604Sets
1605.Ev MOB
1606variable as source directory
1607and
1608.Ev MOZ
1609as target directory within
1610.Cm do-install .
1611.Pp
1612Individual port Makefile must set
1613.Ev MOZILLA_PROJECT ,
1614.Ev MOZILLA_CODENAME ,
1615.Ev MOZILLA_VERSION ,
1616.Ev MOZILLA_BRANCH ,
1617.Ev MOZILLA_LIBS
1618and
1619.Ev MOZILLA_DATADIRS
1620variables.
1621Port can also append values to
1622.Ev MOZILLA_SUBST_FILES
1623which contains the list of
1624files to run
1625.Ev SUBST_CMD
1626on during
1627.Cm pre-configure ,
1628and
1629.Ev MOZILLA_AUTOCONF_DIRS
1630which
1631contains the list of dirs where
1632.Ev AUTOCONF
1633will be run during
1634.Cm pre-configure .
1635.It www/pear
1636Used for PHP PEAR ports.
1637Sets default
1638.Ev MASTER_SITES ,
1639.Ev EXTRACT_SUFX ,
1640.Ev PKGNAME .
1641Sets
1642.Ev PREFIX
1643to
1644.Pa /var/www .
1645Sets
1646.Ev NO_TEST
1647unless a
1648.Cm do-test
1649target is defined.
1650Adds common dependencies to
1651.Ev RUN_DEPENDS
1652and
1653.Ev BUILD_DEPENDS ,
1654sets
1655.Ev MAKE_FILE
1656and
1657.Ev FAKE_FLAGS
1658appropriately.
1659Makes
1660.Ev PEAR_LIBDIR
1661and
1662.Ev PEAR_PHPBIN
1663available for use in the port.
1664Sets a default
1665.Ev PKGNAME
1666and appends to
1667.Ev CATEGORIES .
1668.It www/plone
1669Sets
1670.Ev MODPLONE_VERSION
1671and
1672.Ev MODZOPE_VERSION .
1673.Ev MODPLONE_VERSION
1674is the default version used by all Plone ports and may be overridden.
1675It appends
1676.Pa www/plone
1677to
1678.Ev RUN_DEPENDS
1679and also sets
1680.Ev NO_TEST
1681to Yes.
1682.It x11/gnome
1683This module has full support for the
1684.Ar gnu ,
1685.Ar simple
1686and
1687.Ar cmake
1688CONFIGURE_STYLE.
1689.Pp
1690If both
1691.Ev GNOME_PROJECT
1692and
1693.Ev GNOME_VERSION
1694are set, this module defines
1695.Ev DISTNAME ,
1696.Ev VERSION ,
1697.Ev MASTER_SITES ,
1698adds x11/gnome to
1699.Ev CATEGORIES
1700and
1701.Ev EXTRACT_SUFX
1702will default to .tar.xz if unset.
1703Unless
1704.Li NO_BUILD=Yes ,
1705.Pa textproc/intltool
1706is also appended to
1707.Ev MODULES
1708and when CONFIGURE_STYLE is set to
1709.Ar gnu
1710or
1711.Ar simple ,
1712.Ev USE_GMAKE
1713is set to "Yes".
1714.Pp
1715When CONFIGURE_STYLE is set to
1716.Ar gnu
1717or
1718.Ar simple ,
1719if none of
1720.Ev AUTOCONF_VERSION
1721nor
1722.Ev AUTOMAKE_VERSION
1723are defined, then "--disable-maintainer-mode" is appended to
1724.Ev CONFIGURE_ARGS .
1725When CONFIGURE_STYLE is set to
1726.Ar cmake ,
1727"-DENABLE_MAINTAINER_MODE=OFF" and -DSYSCONF_INSTALL_DIR=${SYSCONFDIR}
1728are appended to CONFIGURE_ARGS.
1729.Pp
1730MODGNOME_CPPFLAGS and MODGNOME_LDFLAGS can be used to add compiler and linker
1731flags.
1732.Li CPPFLAGS="-I${LOCALBASE}/include"
1733and
1734.Li LDFLAGS="-L${LOCALBASE}/lib"
1735are always appended to
1736.Ev CONFIGURE_ENV .
1737.Pp
1738Certain build/run dependencies and configure arguments and environment
1739can be set by appending desktop-file-utils, docbook, gobject-introspection,
1740gtk-update-icon-cache, shared-mime-info, vala and/or yelp to
1741.Ev MODGNOME_TOOLS .
1742They are disabled otherwise.
1743If
1744.Ev MODGNOME_TOOLS
1745is set to desktop-file-utils,
1746a dependency on
1747.Pa devel/desktop-file-utils
1748is appended to
1749.Ev MODGNOME_RUN_DEPENDS
1750and a link to /usr/bin/true is created under
1751.Pa ${WRKDIR}/bin/desktop-file-validate .
1752If
1753.Ev MODGNOME_TOOLS
1754is set to docbook,
1755.Pa textproc/docbook-xsl
1756is appended to
1757.Ev MODGNOME_BUILD_DEPENDS .
1758This option is used when the generation of the man pages included in the
1759source tarball requires docbook XML/SGML/XSL definitions and stylesheets.
1760If
1761.Ev MODGNOME_TOOLS
1762is set to gtk-update-icon-cache, a dependency on
1763.Pa x11/gtk+3,-guic
1764is appended to
1765.Ev MODGNOME_RUN_DEPENDS .
1766If
1767.Ev MODGNOME_TOOLS
1768is set to shared-mime-info, a dependency on
1769.Pa misc/shared-mime-info
1770is appended to
1771.Ev MODGNOME_RUN_DEPENDS
1772and a link to /usr/bin/true is created under
1773.Pa ${WRKDIR}/bin/update-mime-database .
1774If
1775.Ev MODGNOME_TOOLS
1776is set to yelp,
1777.Pa textproc/itstool
1778and
1779.Pa x11/gnome/doc-utils
1780are appended to
1781.Ev MODGNOME_BUILD_DEPENDS .
1782Furthermore,
1783.Pa x11/gnome/yelp
1784is appended to
1785.Ev MODGNOME_RUN_DEPENDS
1786if
1787.Ev MODGNOME_TOOLS
1788also contains "desktop-file-utils"
1789This option is to be used when any files are installed into
1790.Pa share/gnome/help/
1791or page files are installed into
1792.Pa share/help/ .
1793.Ev MODGNOME_BUILD_DEPENDS
1794and
1795.Ev MODGNOME_RUN_DEPENDS
1796are appended to the
1797corresponding
1798.Ev BUILD_DEPENDS
1799and
1800.Ev RUN_DEPENDS .
1801.Pp
1802Some tools require the following goo in the PLIST:
1803.Pp
1804.Ar desktop-file-utils
1805.Bd -literal -offset indent
1806@exec %D/bin/update-desktop-database
1807@unexec-delete %D/bin/update-desktop-database
1808.Ed
1809.Pp
1810.Ar gtk-update-icon-cache
1811($icon-theme is the theme directory)
1812.Bd -literal -offset indent
1813@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/$icon-theme
1814@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/$icon-theme
1815.Ed
1816.Pp
1817.Ar shared-mime-info
1818.Bd -literal -offset indent
1819@exec %D/bin/update-mime-database %D/share/mime
1820@unexec-delete %D/bin/update-mime-database %D/share/mime
1821.Ed
1822.It x11/gnustep
1823.It x11/qt3, x11/qt4 and x11/qt5
1824All qt* modules share a common
1825.Ev MODQT_*
1826namespace for simple ports.
1827The qt3 module also defines the same variables under
1828.Ev MODQT3_* ,
1829the qt4 module also defines the same variables under
1830.Ev MODQT4_*
1831and the qt5 module also defines the same variables under
1832.Ev MODQT5_* ,
1833to allow ports to use both modules, such as
1834.Pa print/poppler .
1835.Pp
1836Those modules define
1837.Ev MODQT*_LIBDIR
1838as the libraries location,
1839.Ev MODQT*_INCDIR
1840as the include files location,
1841.Ev MODQT*_QTDIR
1842as the global qt directory location,
1843.Ev MODQT*_CONFIGURE_ARGS
1844as standard GNU configure-style parameters to locate the include and libraries.
1845.Pp
1846The location of Qt-specific tools
1847.Nm lrelease ,
1848.Nm moc ,
1849.Nm qmake
1850and
1851.Nm uic
1852is available through
1853.Ev MODQT*_LRELEASE ,
1854.Ev MODQT*_MOC ,
1855.Ev MODQT*_QMAKE
1856and
1857.Ev MODQT*_UIC .
1858.Ev MODQT*_OVERRIDE_UIC
1859controls whether the default setup will force a value of
1860.Ev UIC
1861or not.
1862The value of
1863.Ev MOC
1864is always forced to ${MODQT*_MOC}.
1865.Pp
1866In most cases the
1867.Pa devel/qmake
1868module should be used instead of using
1869.Ev MODQT*_QMAKE
1870directly.
1871.Pp
1872qt4 includes
1873.Xr pkg-config 1
1874files under a specific location recorded in
1875.Ev MODQT_PKG_CONFIG_PATH .
1876Qt3 requires the use of
1877.Ev MODQT3_PLUGINS
1878to correctly locate plugins.
1879.Pp
1880The modules add to
1881.Ev CONFIGURE_ENV , MAKE_ENV
1882and
1883.Ev MAKE_FLAGS .
1884They define appropriate
1885.Ev MODQT*_LIB_DEPENDS
1886and
1887.Ev MODQT*_WANTLIB .
1888.Pp
1889Note that Qt 4 and Qt 5 has their code split over several libraries.
1890For the qt4 module the basic
1891.Ev WANTLIB
1892only refers to QtCore, and other libraries should be added as needed.
1893The qt5 module doesn't set
1894.Ev MODQT*_WANTLIB
1895at all.
1896Also, Qt 5 consists of many so called Qt modules, and qt5 port module
1897only refers to qtbase Qt 5 module; other Qt modules should be added to
1898.Ev LIB_DEPENDS ,
1899.Ev BUILD_DEPENDS
1900or
1901.Ev RUN_DEPENDS
1902manually.
1903.It x11/tk
1904Sets
1905.Ev MODTK_VERSION ,
1906.Ev MODTK_BIN ,
1907.Ev MODTK_INCDIR ,
1908.Ev MODTK_LIBDIR ,
1909.Ev MODTK_BUILD_DEPENDS ,
1910.Ev MODTK_RUN_DEPENDS ,
1911.Ev MODTK_LIB ,
1912.Ev MODTK_LIB_DEPENDS ,
1913and
1914.Ev MODTK_CONFIG .
1915.Ev MODTK_VERSION
1916is the default version used by all Tk ports and
1917may be overridden.
1918Automatically adds the
1919.Pa lang/tcl
1920module, provides a default
1921.Ev MODTCL_VERSION
1922to match
1923.Ev MODTK_VERSION ,
1924and affects
1925.Ev CATEGORIES
1926and
1927.Ev SUBST_VARS .
1928Note the
1929.Ev MODTCL_WISH_ADJ
1930shell fragment in the
1931.Pa lang/tcl
1932module.
1933.It x11/xfce4
1934Sets
1935.Ev DIST_SUBDIR ,
1936.Ev EXTRACT_SUFX ,
1937.Ev CONFIGURE_STYLE ,
1938.Ev CONFIGURE_ENV
1939and
1940.Ev USE_GMAKE .
1941If
1942.Ev MODXFCE_ICON_CACHE
1943is set to yes, it adds
1944.Pa x11/gtk+3,-guic
1945to
1946.Ev RUN_DEPENDS .
1947Unless
1948.Ev XFCE_NO_SRC
1949is set,
1950.Pa textproc/intltool
1951is added to
1952.Ev MODULES .
1953Also affects
1954.Ev CATEGORIES .
1955.Pp
1956Xfce ports can be divided into five categories: core libraries and
1957applications, goodies, artwork, thunar plugins, and panel plugins.
1958.Ev HOMEPAGE ,
1959.Ev MASTER_SITES
1960and
1961.Ev DISTNAME
1962are built using
1963.Ev XFCE_VERSION
1964(which defaults to
1965.Ev XFCE_DESKTOP_VERSION
1966if not set) and either
1967.Ev XFCE_PROJECT ,
1968.Ev XFCE_GOODIE ,
1969.Ev XFCE_ARTWORK ,
1970.Ev THUNAR_PLUGIN
1971or
1972.Ev XFCE_PLUGIN .
1973One of the latter has to be provided by the port Makefile.
1974.El
1975.Sh SEE ALSO
1976.Xr make 1 ,
1977.Xr bsd.port.mk 5 ,
1978.Xr ruby-module 5 ,
1979.Xr ports 7
1980