1# $MidnightBSD: mports/Mk/docs/bsd.mport.mk.pod,v 1.15 2010/12/30 02:12:13 laffer1 Exp $
2
3=head1 NAME
4
5bsd.mport.mk - Ports Tree Master Makefile
6
7=head1 SYNOPSIS
8
9.include <bsd.mport.mk>
10
11bsd.mport.mk is the master makefile for the ports tree.  This man pages
12documents the public targets and variables used by users and individual
13ports.
14
15=head1 TARGETS
16
17Default targets and their behaviors:
18
19=over 4
20
21=item fetch			-
22
23Retrieves ${DISTFILES} (and ${PATCHFILES} if defined) into ${DISTDIR} as
24necessary.
25
26=item fetch-list
27
28Show list of files that would be retrieved by fetch.
29
30=item fetch-recursive
31
32Retrieves ${DISTFILES} (and ${PATCHFILES} if defined), for port and
33dependencies into ${DISTDIR} as necessary.
34
35=item fetch-recursive-list
36
37Show list of files that would be retrieved by fetch-recursive.
38
39=item fetch-required-list
40
41Show list of files that would be retrieved by fetch-required.
42
43=item fetch-required
44
45Retrieves ${DISTFILES} (and ${PATCHFILES} if defined), for port and
46dependencies that are not already installed into ${DISTDIR}.
47
48=item all-depends-list
49
50Show all directories which are dependencies for this port.
51
52=item build-depends-list
53
54Show all directories which are build-dependencies for this port.
55
56=item package-depends-list
57
58Show all directories which are package-dependencies for this port.
59
60=item run-depends-list
61
62Show all directories which are run-dependencies for this port.
63
64=item extract
65
66Unpacks ${DISTFILES} into ${WRKDIR}.
67
68=item patch
69
70Apply any provided patches to the source.
71
72=item configure
73
74Runs either GNU configure, one or more local configure scripts or nothing,
75depending on what's available.
76
77=item build
78
79Actually compile the sources.
80
81=item fake
82
83Install the results of the build into a temporary directory.
84
85=item refake
86
87Delete the temporary directory and run make fake again.
88
89=item check-fake
90
91Run basic tests to see if the files were installed in the right location,
92and do not include the fake temporary directory.
93
94=item package
95
96Create a package from the contents of the temporary directory.
97
98=item install
99
100Install the package.
101
102=item reinstall
103
104Install the results of a build, ignoring "already installed" flag.
105
106=item deinstall
107
108Remove the installation.
109
110=item deinstall-all
111
112Remove all installations with the same PKGORIGIN.
113
114=item describe
115
116Generate a one-line description for each port for use in INDEX files and the
117like.
118
119=item describe-yaml
120
121Generate a description for the port in the YAML markup language.
122
123=item checkpatch
124
125Do a "patch -C" instead of a "patch".  Note that it may give incorrect
126results if multiple patches deal with the same file.
127
128=item checksum
129
130Use distinfo to ensure that your distfiles are valid.
131
132=item checksum-recursive
133
134Run checksum in this port and all dependencies.
135
136=item makesum
137
138Generate distinfo (only do this for your own ports!).
139
140=item clean
141
142Remove ${WRKDIR} and other temporary files used for building for this
143port and its dependencies.
144
145=item config
146
147Configure options for this port (using ${DIALOG}). Automatically run prior
148to extract, patch, configure, build, install, and package.
149
150=item config-recursive
151
152Configure options for this port for this port and all dependencies.
153
154=item showconfig
155
156Display options config for this port.
157
158=item rmconfig
159
160Remove the options config for this port.
161
162=item rmconfig-recursive
163
164Remove the options config for this port and all dependencies.
165
166=item makeplist
167
168Attempt to construct a plist from the contents of a faked install.  This
169generated plist will need editing before it can be used.
170
171=back
172
173Default sequence for "all" is:
174
175    check-sanity fetch checksum extract patch configure build
176
177Please read the comments in the targets section below; you
178should be able to use the pre-* or post-* targets/scripts
179(which are available for every stage except checksum) or
180override the do-* targets to do pretty much anything you want.
181
182Many of the do-* targets are wrappers around run-* targets.
183run-* targets cannot be overridden, they are the default action for the given
184do-* target.  This way, you can override do-foo, twiddle some variables
185and then call 'make run-foo'.
186
187B<NEVER> override the "regular" targets unless you want to open
188a major can of worms.
189
190=head1 VARIABLES
191
192=head2 Global Knobs
193
194The following change globals behavoirs for the mports system.
195
196=over 4
197
198=item PACKAGE_BUILDING
199
200If set, the mport system goes into package building mode.  The options
201framework is disabled, and the defaults for OPTIONS are used instead.  Some
202ports may define extra depends in order to create a complete install.
203Probing of the system for versions of installed software (such as apache or
204perl) is disabled.
205
206=item USE_MPORT_TOOLS
207
208If set, the mport system will use libmport to make and install mport
209archives.  The mport binary system will also be used as the package
210database.
211
212=item MPORT_MAINTAINER_MODE
213
214If set, the mports system will perform checks to see if several steps are
215successfully completed.
216
217=back
218
219=head2 Meta Variables
220
221These are meta-variables that are automatically set to the system
222you are running on.  These are provided in case you need to take
223different actions for different values.
224
225=over 4
226
227=item ARCH
228
229The architecture of the target machine, such as would be returned by "uname
230-p".  (Note: Ports should test against ARCH, and not the host machine's
231architecture which is MACHINE_ARCH, to enable ports to be cross-built.)
232
233=item OPSYS
234
235Portability clause.  This is the operating system the makefile is being used
236on.  Automatically set to "MidnightBSD", "FreeBSD," "NetBSD," or "OpenBSD"
237as appropriate.
238
239=item OSREL
240
241The release version (numeric) of the operating system.
242
243=item OSVERSION
244
245The value of __MidnightBSD_version.
246
247=item PORTOBJFORMAT
248
249The object format ("aout" or "elf").
250
251=back
252
253=head2 Fundemental Variables
254
255This is the beginning of the list of all variables that need to be
256defined in a port, listed in order that they should be included
257to fit in with existing conventions.  (Exception: MAINTAINER actually
258should appear after EXTRACT_ONLY and before MASTER_SITE_BACKUP).
259
260These variables are used to identify your port.
261
262=over 4
263
264=item PORTNAME
265
266Name of software.  Mandatory.
267
268=item PORTVERSION
269
270Version of software.  Mandatory when no DISTVERSION is given.
271
272=item PORTREVISION
273
274Version of port.  Optional.  Commonly used to indicate that an update has
275happened that affects the port framework itself, but not the distributed
276software (e.g., local patches or Makefile changes).
277
278=item PORTEPOCH
279
280Optional.  In certain odd cases, the PORTREVISION logic can be fooled by
281ports that appear to go backwards numerically (e.g. if port-0.3 is newer
282than port-1998). In this case, incrementing PORTEPOCH forces the revision.
283
284Default: 0 (no effect).
285
286=item PKGBASE
287
288Defined as ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
289
290Do not define this in your Makefile.
291
292=item PKGNAME
293
294Defined as ${PKGSUBNAME}-${PORTVERSION}
295
296Do not define this or PKGSUBNAME  in your Makefile.
297
298=item PKGNAMEPREFIX
299
300Prefix to specify that port is language-specific, etc. Optional.
301
302=item PKGNAMESUFFIX
303
304Suffix to specify compilation options.  Optional.
305
306=item PKGVERSION
307
308Always defined as ${PORTVERSION}[_${PKGREVISION}][,${PORTEPOCH}]
309
310Do not define this in your Makefile.
311
312=item UNIQUENAME
313
314A name for your port that is globally unique.
315
316Default: ${LATEST_LINK} when LATEST_LINK is set, ${PKGNAMEPREFIX}${PORTNAME}
317otherwise.
318
319=item DISTVERSION
320
321Vendor version of the distribution.
322
323Default: ${PORTVERSION}
324
325=item DISTNAME
326
327Name of port or distribution used in generating WRKSRC and DISTFILES below.
328
329Default: ${PORTNAME}-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}
330
331=item CATEGORIES
332
333A list of descriptive categories into which this port falls. Mandatory.
334
335=back
336
337=head2 Path Variables
338
339Various directory definitions and variables to control them.
340You rarely need to redefine any of these except WRKSRC and NO_WRKSUBDIR.
341
342=over 4
343
344=item DESTDIR
345
346The path to the environment we are installing to.  This is only used during
347the final package install, at which point mport.install is run chroot'ed
348into the DESTDIR.
349
350=item LOCALBASE
351
352Where almost all  ports install things.
353
354Default: /usr/local
355
356=item LINUXBASE
357
358Where Linux ports install things.
359
360Default: /compat/linux
361
362=item PREFIX
363
364Where B<this> port installs its files.
365
366Default: ${LINUXBASE} if USE_LINUX_PREFIX is set, otherwise ${LOCALBASE}
367
368=item IGNORE_PATH_CHECKS
369
370There are some sanity checks against PREFIX and DESTDIR. You can diasble
371these checks with defining this variable, but this is not recommended! Only
372do this if you really know what you are doing.  These sanity checks are the
373following:
374
375=over 8
376
377=item DESTDIR can't be /.
378
379Just leave it undefined if you want to install to /.
380
381=item DESTDIR has to be an absolute path.
382
383=item DESTDIR can't have a trailing slash.
384
385=item PREFIX has to be an absolute path.
386
387=item PREFIX can't have a trailing slash.
388
389=back
390
391=item MASTERDIR
392
393Where the port finds patches, package files, etc.  Define this is you have
394two or more ports that share most of the files.
395
396Default: ${.CURDIR}
397
398=item PORTSDIR
399
400The root of the ports tree.
401
402Default: /usr/mports
403
404=item DISTDIR
405
406Where to search for and store copies of original sources
407
408Default: ${PORTSDIR}/Distfiles
409
410=item PACKAGES
411
412A top level directory where all packages go (rather than going locally to
413each port). Default: ${PORTSDIR}/Packages/${ARCH}
414
415=item WRKDIRPREFIX
416
417The place to root the temporary working directory hierarchy.
418
419Default: none
420
421=item WRKDIR
422
423A temporary working directory that gets B<clobbered> on clean
424
425Default: ${WRKDIRPREFIX}${.CURDIR}/work
426
427=item WRKSRC
428
429A subdirectory of ${WRKDIR} where the distribution actually unpacks to.
430
431Default: ${WRKDIR}/${DISTNAME} unless NO_WRKSUBDIR is set, in which case
432simply ${WRKDIR}
433
434=item NO_WRKSUBDIR
435
436Assume port unpacks directly into ${WRKDIR}.
437
438=item PATCHDIR
439
440A directory containing any additional patches you made to port this software
441to MidnightBSD.
442
443Default: ${MASTERDIR}/files
444
445=item SCRIPTDIR
446
447A directory containing any auxiliary scripts
448
449Default: ${MASTERDIR}/scripts
450
451=item FILESDIR
452
453A directory containing any miscellaneous additional files.
454
455Default: ${MASTERDIR}/files
456
457=item PKGDIR
458
459A directory containing any package creation files.
460
461Default: ${MASTERDIR}
462
463=back
464
465=head2 Distfile Variables
466
467These variable describe how to fetch files required for building the port.
468
469=over 4
470
471=item DISTFILES
472
473Name(s) of archive file(s) containing distribution. Set this to an empty
474string if the port doesn't require it.
475
476Default: ${DISTNAME}${EXTRACT_SUFX}
477
478=item EXTRACT_SUFX
479
480Suffix for archive names. You never have to set both DISTFILES and
481EXTRACT_SUFX.
482
483Default: .tar.bz2 if USE_BZIP2 is set, .zip if USE_ZIP is set,
484.tar.xz if USE_XZ is set, .tar.gz otherwise.
485
486=item MASTER_SITES
487
488Primary location(s) for distribution files if not found locally.  See
489sites.mk for common choices for MASTER_SITES.
490
491=item MASTER_SITE_SUBDIR
492
493Subdirectory of MASTER_SITES. Will sometimes need to be set to ${PORTNAME}
494for (e.g.) MASTER_SITE_SOURCEFORGE. Only guaranteed to work for choices of
495${MASTER_SITES} defined in sites.mk.
496
497Default: not set.
498
499=item PATCHFILES
500
501Name(s) of additional files that contain distribution patches. Make will
502look for them at PATCH_SITES (see below). They will automatically be
503uncompressed before patching if the names end with ".gz", ".bz2" or ".Z".
504
505Default: not set.
506
507=item PATCH_SITES
508
509Primary location(s) for distribution patch files if not found locally.
510
511=item DIST_SUBDIR
512
513Suffix to ${DISTDIR}.  If set, all ${DISTFILES} and ${PATCHFILES} will be
514put in this subdirectory of ${DISTDIR} (see below).  Also they will be
515fetched in this subdirectory from FreeBSD mirror sites.
516
517=item ALLFILES
518
519All of ${DISTFILES} and ${PATCHFILES}.
520
521=item IGNOREFILES
522
523If set, don't perform checksum checks on these files.
524
525=item NOFETCHFILES
526
527If set, don't download these files from the ${MASTER_SITES} or
528${MASTER_SITE_BACKUP} (but do from ${MASTER_SITE_OVERRIDE})
529
530=item EXTRACT_ONLY
531
532If set, a subset of ${DISTFILES} you want to actually extract.
533
534=item ALWAYS_KEEP_DISTFILES
535
536If set, the package building cluster will save the distfiles along with the
537packages. This may be required to comply with some licenses, e.g. GPL in
538some cases.
539
540Default: not set.
541
542=back
543
544(NOTE: by convention, the MAINTAINER entry (see above) should go here.)
545
546These variables are typically set in /etc/make.conf to indicate
547the user's preferred location to fetch files from.  You should
548rarely need to set these.
549
550=over 4
551
552=item MASTER_SITE_BACKUP
553
554Backup location(s) for distribution files and patch files if not found
555locally and ${MASTER_SITES}/${PATCH_SITES}
556
557Default: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
558
559=item MASTER_SITE_OVERRIDE
560
561If set, override the MASTER_SITES setting with this value.
562
563=item MASTER_SITE_FREEBSD
564
565If set, only use ${MASTER_SITE_BACKUP} for MASTER_SITES.
566
567=item CD_MOUNTPTS
568
569List of CDROM mountpoints to look for distfiles under. This variable
570supercedes CD_MOUNTPT, which is obsolete.
571
572=item DISABLE_SECURITY_CHECK
573
574Speed up port installation on old hardware by not running security checks.
575Not recommended.
576
577=back
578
579=head2 Licenses And Restrictions
580
581Set these if your port should not be built under certain circumstances.
582These are string variables; you should set them to the reason why
583they are necessary.  Over time, many of the variables will be replaced
584by the LICENSE variable.
585
586=over 4
587
588=item LICENSE
589
590The license of the third-party software.  This variable is required. Run
591'make license-list' to see the list of valid licenses.
592
593=item RESTRICTED
594
595Prevent the distribution of distfiles and packages to the FTP sites or on
596CDROM (e.g. forbidden by license considerations).
597
598=item NO_CDROM
599
600Packages and distfiles may not go on CDROM (e.g. must not be re-sold) but
601can go on FTP sites.
602
603=item NO_PACKAGE
604
605Port should not be packaged for ftp sites or CDROMs, but distfiles can be
606put on ftp sites and CDROMs.
607
608=item FORBIDDEN
609
610Package build should not be attempted because of security vulnerabilities.
611
612=item IGNORE
613
614Package build should be skipped entirely (e.g. because of serious unfixable
615problems in the build, because it cannot be manually fetched, etc).  Minimal
616error logs will appear on magus, so this should be used sparingly.
617
618=item BROKEN
619
620Port is believed to be broken.  Packaage builds will still be attempted on
621the magus build cluster to test this assumption.
622
623=item DEPRECATED
624
625Port is deprecated to install. Advisory only.
626
627=item EXPIRATION_DATE
628
629If DEPRECATED is set, determines a date when the port is planed to remove.
630The date format is ISO 8601 (YYYY-MM-DD).
631
632=item DISABLE_VULNERABILITIES
633
634If set, do not check if the port is listed in the vulnerabilities database.
635
636=back
637
638In addition to RESTRICTED or NO_CDROM, if only a subset of distfiles or
639patchfiles have redistribution restrictions, set the following to the list
640of such files.
641
642=over 4
643
644=item RESTRICTED_FILES
645
646List of files that cannot be redistributed. Default: "${DISTFILES}
647${PATCHFILES}" if RESTRICTED or NO_CDROM is set, empty otherwise.
648
649These variables are booleans, so you don't need to set them to the reason.
650
651=item IS_INTERACTIVE
652
653Set this if your port needs to interact with the user during any step in a
654package build.  User can then decide to skip this port by setting ${BATCH},
655or compiling only the interactive ports by setting ${INTERACTIVE}.
656
657Default: not set.
658
659=back
660
661Set these if your port only makes sense to certain architectures.
662They are lists containing names for them (e.g., "amd64 i386").
663(Defaults: not set.)
664
665=over 4
666
667=item ONLY_FOR_ARCHS
668
669Only build ports if ${ARCH} matches one of these.
670
671=item NOT_FOR_ARCHS
672
673Only build ports if ${ARCH} doesn't match one of these.
674
675=item ONLY_FOR_ARCHS_REASON
676=item ONLY_FOR_ARCHS_REASON_${ARCH}
677
678Reason why it's only for ${ONLY_FOR_ARCHS}s.
679
680=item NOT_FOR_ARCHS_REASON
681=item NOT_FOR_ARCHS_REASON_${ARCH}
682
683Reason why it's not for ${NOT_FOR_ARCHS}s.
684
685=item IA32_BINARY_PORT
686
687Set this instead of ONLY_FOR_ARCHS if the given port fetches and installs
688compiled i386 binaries.
689
690=back
691
692=head2 Dependency Variables
693
694Dependency checking.  Use these if your port requires another port
695not in the list below.  (Default: empty.)
696
697=over 4
698
699=item EXTRACT_DEPENDS
700
701A list of "path:dir[:target]" tuples of other ports this package depends on
702in the "extract" stage.  "path" is the name of a file if it starts with a
703slash (/), an executable otherwise.  make will test for the existence (if it
704is a full pathname) or search for it in your $PATH (if it is an executable)
705and go into "dir" to do a "make all install" if it's not found.  If the
706third field ("target") exists, it will be used instead of ${DEPENDS_TARGET}.
707
708=item PATCH_DEPENDS
709
710A list of "path:dir[:target]" tuples of other ports this package depends on
711in the "patch" stage.  "path" is the name of a file if it starts with a
712slash (/), an executable otherwise.  make will test for the existence (if it
713is a full pathname) or search for it in your $PATH (if it is an executable)
714and go into "dir" to do a "make all install" if it's not found.  If the
715third field ("target") exists, it will be used instead of ${DEPENDS_TARGET}.
716
717=item FETCH_DEPENDS
718
719A list of "path:dir[:target]" tuples of other ports this package depends in
720the "fetch" stage.  "path" is the name of a file if it starts with a slash
721(/), an executable otherwise.  make will test for the existence (if it is a
722full pathname) or search for it in your $PATH (if it is an executable) and
723go into "dir" to do a "make all install" if it's not found.  If the third
724field ("target") exists, it will be used instead of ${DEPENDS_TARGET}.
725
726=item BUILD_DEPENDS
727
728A list of "path:dir[:target]" tuples of other ports this package depends to
729build (between the "extract" and "build" stages, inclusive).  The test done
730to determine the existence of the dependency is the same as FETCH_DEPENDS.
731If the third field ("target") exists, it will be used instead of
732${DEPENDS_TARGET}.
733
734=item RUN_DEPENDS
735
736A list of "path:dir[:target]" tuples of other ports this package depends to
737run.  The test done to determine the existence of the dependency is the same
738as FETCH_DEPENDS.  This will be checked during the "install" stage and the
739name of the dependency will be put into the package as well.  If the third
740field ("target") exists, it will be used instead of ${DEPENDS_TARGET}.
741
742=item LIB_DEPENDS
743
744A list of "lib:dir[:target]" tuples of other ports this package depends on.
745"lib" is the name of a shared library. make will use "ldconfig -r" to search
746for the library. lib can contain extended regular expressions.
747
748=item DEPENDS
749
750A list of "dir[:target]" tuples of other ports this package depends on being
751made first.  Use this only for things that don't fall into the above four
752categories. If the second field ("target") exists, it will be used instead
753of ${DEPENDS_TARGET}.
754
755=item DEPENDS_TARGET
756
757The default target to execute when a port is calling a dependency.
758
759Default: cached-install
760
761=item NO_DEPENDS
762
763Don't verify build of dependencies.
764
765=item USE_PACKAGE_DEPENDS
766
767Install dependencies from existing packages instead of building the port
768from scratch.
769
770
771=back
772
773=head2 Built-In Depends
774
775These variables control options about how a port gets built and/or
776are shorthand notations for common sets of dependencies.
777Use these if your port uses some of the common software packages. By
778convention these should be set to 'yes', although they only need to be
779defined. Defaults: not set, unless explicitly indicated below.
780
781This approach to built-in dependencies is going away in the future.  Soon a
782declaration like:
783
784 USE_GHOSTSCRIPT_RUN=yes
785
786will be replaced by
787
788RUN_DEPENDS +=	@ghostscript
789
790However, some of these so called "depends" actually change the behavoir of
791the mports system.  For example, USE_GMAKE not only add a dependcy for gmake,
792but it uses gmake instead of make to build and install the software.  Options
793like USE_GMAKE will remain; as USE_* variable will be variables that add
794functionality to the system.  See extensions for more information.
795
796B<NOTE>:  These ideas are still in maturation.  Changes expected!
797
798Note: the distinction between the USE_* and WANT_* variables, and the
799WITH_* and WITHOUT_* variables, are that the former are restricted to
800usage inside the ports framework, and the latter are reserved for user-
801settable options.  (Setting USE_* in /etc/make.conf is always wrong).
802
803=over 4
804
805=item USE_ICONV
806
807If set, this port uses libiconv.
808
809=item USES=gettext
810
811If set, this port uses GNU gettext (libintl).
812
813=item USE_GHOSTSCRIPT
814
815If set, this port needs ghostscript to both build and run.
816
817=item USE_GHOSTSCRIPT_BUILD
818
819If set, this port needs ghostscript to build.
820
821=item USE_GHOSTSCRIPT_RUN
822
823If set, this port needs ghostscript to run.
824
825=item GHOSTSCRIPT_PORT
826
827The port that provides postscript functionality. Some installations may wish
828to override the default to specify a version without X11 and/or localized
829versions for their nationality.
830
831=item WITH_GHOSTSCRIPT_GPL
832
833If set, this port uses the GPL version of the ghostscript software instead
834of the GNU version, which is used otherwise.
835
836=item WITH_GHOSTSCRIPT_AFPL
837
838If set, this port uses the AFPL version of the ghostscript software instead
839of the GNU version, which is used otherwise.
840
841=item USE_BISON
842
843If set to build, adds a build dependancy on bison. run implies a run
844depends, both adds a build and run depends.  The legacy option yes is
845deprecated (but implies build for now).
846
847=item USE_XLIB
848
849If set, this port uses the X libraries. In the USE_LINUX
850case the linux X libraries are referenced.  In general this is deprecated
851in favor of USE_XORG.
852
853=item USE_FREETYPE
854
855If set, this port uses the freetype print libraries.
856
857=item USE_GL
858
859If set, this port uses libGL.
860
861=item USE_MOTIF
862
863If set, this port uses a Motif toolkit.
864
865=item NO_OPENMOTIF
866
867If set, this port uses a custom Motif toolkit instead of Openmotif.  Used
868only when USE_MOTIF is set.
869
870=item WANT_LESSTIF
871
872If set, this port uses Lesstif as Motif toolkit.  Used only when USE_MOTIF
873is set.  Implies NO_OPENMOTIF.
874
875=item USE_CSTD
876
877If set, overrides the -std= c standard in effect for the mport.  This
878might be useful if we have multiple system compilers to force a
879version like c89 or c99 always with a port.
880
881=back
882
883=head2 Extension Variables
884
885Extensions are additional logic that some ports need to function.  Some
886extensions are in the mport system core, while others are in the extensions
887directory.
888
889For the larger extensions, the code is located in the extentions
890directory. See the extension files sectio for details.
891
892=over 4
893
894=item EXTENSIONS
895
896A list of extension files to pull in.  These files are in
897${PORTSDIR}/Mk/extension, and are named in a format like L<lt>extL<gt>.mk.
898Loading an extension in this manner should not cause the extension to
899perform any actions.
900
901Example:
902
903 EXTENSIONS+=	perl5 python
904
905This would load perl5.mk and python.mk from the extensions directory.
906
907=item USE_BZIP2
908
909If set, this port tarballs use bzip2, not gzip, for compression.
910
911=item USE_XZ
912
913If set, this port tarballs use xz (lzma), not gzip, for compression.
914
915=item USE_ZIP
916
917If set, this port distfile uses zip, not tar w/[bg]zip for compression.
918
919=item USE_DOS2UNIX
920
921If set to "YES", remove the ^M from all files under ${WRKSRC}. If set to a
922string, remove in all files under ${WRKSRC} with one of these names the ^Ms.
923
924=item USE_GCC
925
926If set, this port requires this version of gcc, either in the system or
927installed from a port.  Loads gcc.mk from the extensions directory.
928
929=item USE_GCPIO
930
931If set, uses GNU cpio.  Changes the value of ${CPIO}.
932
933=item USE_GMAKE
934
935If set, this port uses gmake.
936
937=item GMAKE
938
939Set to path of GNU make if not in $PATH.
940
941Default: gmake
942
943=item USE_IMAKE
944
945If set, this port uses imake.  Implies USE_X_PREFIX
946
947=item XMKMF
948
949Set to path of `xmkmf' if not in $PATH
950
951Default: xmkmf -a
952
953=item USE_SDL
954
955If set, this port uses the sdl libraries.  Loads the sdl extension.  See
956sdl.mk for more information.
957
958=item USE_XFCE
959
960If set, this port uses the XFCE libraries.  Loads the xfce extension.  See
961xfce.mk for more information.
962
963=item USE_OPENSSL
964
965If set, this port relies on the OpenSSL package.  Loads the openssl
966extension.  See openssl.mk for more information.
967
968=item USE_OPENLDAP
969
970If set, this port uses the OpenLDAP libraries.
971
972Implies: WANT_OPENLDAP_VER?=23
973
974=item WANT_OPENLDAP_VER
975
976Legal values are: 22, 23, 24
977
978If set to an unkown value, the port is marked BROKEN.
979
980=item WANT_OPENLDAP_SASL
981
982If set, the system should use OpenLDAP libraries with SASL support.
983
984=item USE_FAM
985
986If set, this port uses the File Alteration Monitor.
987
988=item WANT_FAM_SYSTEM
989
990Legal values are: gamin (default),fam
991
992If set to an unknown value, the port is marked IGNORE.
993
994=item USE_SCONS
995
996If set, this port uses the Python-based SCons build system.  Loads the scons
997extension.  See scons.mk for more details.
998
999=item USE_JAVA
1000
1001If set, this port relies on the Java language. Implies inclusion of
1002java.mk.  (Also see that file for more information on USE_JAVA_*).
1003
1004=item USE_PYTHON
1005
1006If set, this port relies on the Python language.  Implies inclusion of
1007python.mk. (Also see that file for more information on USE_PYTHON_* and
1008USE_PYDISTUTILS).
1009
1010=item USE_RUBY
1011
1012If set, this port relies on the Ruby language. Implies inclusion of
1013ruby.mk.  (Also see that file for more information on USE_RUBY_*).
1014
1015=item USE_GNUSTEP
1016
1017If set, this port relies on the GNUstep system. Implies the inclusion of
1018bsd.gnustep.mk. (Also see that file for more information on USE_GNUSTEP_*).
1019
1020=item USE_GNOME
1021
1022A list of the Gnome dependencies the port has (e.g., glib12, gtk12). Implies
1023that the port needs Gnome. Implies inclusion of gnome.mk.  See gnome.mk or
1024http://www.FreeBSD.org/gnome/docs/porting.html for more details.
1025
1026=item USE_WX
1027
1028If set, this port uses the WxWidgets library and related components.  See
1029wx.mk for more details.
1030
1031=item USE_KDEBASE_VER
1032
1033Set to 3 to use the KDE windowing system. Implies inclusion of kde.mk.
1034
1035=item USE_KDELIBS_VER
1036
1037Set to 3 to use the KDE libraries. Implies inclusion of bsd.kde.mk.
1038
1039=item USE_QT_VER
1040
1041Set to 3 to use the QT3 libraries which implies kde.mk.
1042
1043Set to 4 to use QT4 which implies qt.mk.
1044
1045=item USE_LINUX
1046
1047Set to yes to say the port needs the default linux base port. Set to value
1048E<lt>XE<gt>, if the port needs emulators/linux_base-<X>. If set to "7", a dependency
1049is registered to emulators/linux_base. Implies appropriate settings for
1050STRIP and STRIP_CMD.
1051
1052=item USE_LINUX_PREFIX
1053
1054Controls the action of PREFIX (see below). Only use this if the port is a
1055linux infrastructure port (e.g. contains libs or a sound server which
1056supports the FreeBSD native one), use the default or the X11 prefix if it's
1057a leaf port (e.g. a game or program).
1058
1059Implies NO_MTREE=yes, and if INSTALLS_SHLIB is defined then USE_LINUX=yes
1060and an appropriate invocation of the Linux ldconfig is also implied.
1061
1062=item USE_LINUX_RPM
1063
1064Set to yes to pull in variables and targets useful to Linux RPM ports.
1065Implies inclusion of linux-rpm.mk.
1066
1067=item AUTOMATIC_PLIST
1068
1069Set to yes to enable automatic packing list generation. Currently has no
1070effect unless USE_LINUX_RPM is set.
1071
1072=item OVERRIDE_LINUX_BASE_PORT
1073
1074This specifies the default linux base to use, for valid values have a look
1075at the description of USE_LINUX. This is an user-only variable. Don't use it
1076in any port, it's meant to be used in make.conf.
1077
1078=item LINUX_BASE_PORT
1079
1080This is a read-only variable, it gets set to a value which is usable in
1081*_DEPENDS (e.g. BUILD_DEPENDS=${LINUX_BASE_PORT}). It honors USE_LINUX=foo
1082and OVERRIDE_LINUX_BASE_PORT.
1083
1084=item USE_XORG
1085
1086Set to a list of xorg module dependancies.  Implies includsion of xorg.mk
1087
1088=item USE_RC_SUBR
1089
1090If set, the ports startup/shutdown script uses the common routines found in
1091etc/rc.subr and may need to depend on the sysutils/rc_subr port. If this is
1092set to a list of files, these files will be automatically added to
1093${SUB_FILES}, some %%VAR%%'s will automatically be expanded, they will be
1094installed in ${PREFIX}/etc/rc.d and added to the packing list.
1095
1096=item USE_RCORDER
1097
1098 List of rc.d startup scripts to be called early in the boot process. This
1099acts exactly like USE_RC_SUBR except that scripts are installed in
1100/etc/rc.d.
1101
1102=item RC_SUBR
1103
1104Set to path of rc.subr.
1105
1106Default: ${LOCALBASE}/etc/rc.subr.
1107
1108=item USE_APACHE
1109
1110If set, this port relies on an apache webserver.  Loads the apache
1111extension.  See apache.mk for more information.
1112
1113=back
1114
1115=head2 Conflict checking.
1116
1117Use if your port cannot be installed at the same time as
1118another package.
1119
1120=over 4
1121
1122=item CONFLICTS
1123
1124A list of package name patterns that the port conflicts with, separated by
1125blanks.  The names may include shell pattern meta-characters "*", "?", "[",
1126"]", and "!". Example: apache*-1.2* apache*-1.3.[012345] apache-*+ssl_*
1127
1128=back
1129
1130=head2 Fake System
1131
1132The following are used by the fake system.  The fake system installs a dist's files into
1133a temporary directory before final installatioin.
1134
1135=over 4
1136
1137=item FAKE_OPTS
1138
1139Set options for fake.  Available options:
1140
1141=over 8
1142
1143=item libs
1144
1145Fake targets need access to the port's shared libs.
1146
1147=item bin
1148
1149Fake targets need the port's binaries in $PATH
1150
1151=item trueprefix
1152
1153Set this when the dist's makefile correctly honors PREFIX and DESTDIR. (Note
1154case)
1155
1156=item prefixhack
1157
1158overide prefix, mandir and infodir at fake time.
1159
1160=back
1161
1162=item FAKE_INSTALLDIR
1163
1164A relative directory used to by fake. An install is "faked" into this dir.
1165
1166Default: "fake-inst-${ARCH}"
1167
1168=item FAKE_DESTDIR
1169
1170The absolute fake directory.  Thou shalt not set this, but it can
1171be useful for targets like do-install or post-install.
1172
1173Default: ${WRKDIR}/${FAKE_INSTALLDIR}
1174
1175=item FAKE_MAKEARGS
1176
1177Arguments passed to the dist's makefile by the default fake target.
1178
1179Default: ${DESTDIRNAME}=${FAKE_DESTDIR}
1180
1181=item FAKE_TARGET
1182
1183When fake runs the dist's makefile, this is the target used.
1184
1185Default: ${INSTALL_TARGET}
1186
1187=item FAKE_SETUP
1188
1189A list of environment variables used to create the fake environment,
1190suitable for use with env.  This variable should be considered read- only.
1191It is documented because often it is useful for calling make in
1192{pre,post}-install.
1193
1194=item SKIP_FAKE_CHECK
1195
1196If MPORT_MAINTAINER_MODE is set, then each file in the plist will checked to
1197see if it contains ${FAKE_DESTDIR}.  Sometimes this produces false positives
1198(a file contains the fake destdir, but its presence is harmless).  This
1199variable is a list of files that will not be checked.
1200
1201=back
1202
1203=head2 Install Programs
1204
1205Variables that serve as convenient "aliases" for your *-install targets.
1206Use these like: "${INSTALL_PROGRAM} ${WRKSRC}/prog ${PREFIX}/bin".
1207
1208=over 4
1209
1210=item INSTALL_PROGRAM
1211
1212A command to install binary executables.  (By default, also strips them,
1213unless ${STRIP} is overridden to be the empty string).
1214
1215=item INSTALL_KLD
1216
1217Same as INSTALL_PROGRAM, but without the STRIP.
1218
1219=item INSTALL_SCRIPT
1220
1221A command to install executable scripts.
1222
1223=item INSTALL_DATA
1224
1225A command to install sharable data.
1226
1227=item INSTALL_MAN
1228
1229A command to install manpages.  May or not compress, depending on the value
1230of MANCOMPRESSED (see below).
1231
1232=back
1233
1234=head2 Port Docs
1235
1236=over 4
1237
1238=item NO_INSTALL_MANPAGES
1239
1240If set, this port doesn't want to install any manpages.
1241Default: not set, i.e. manpages are installed by default.
1242
1243=back
1244
1245Set the following to specify all manpages that your port installs.
1246These manpages will be automatically listed in ${PLIST}.  Depending
1247on the setting of NOMANCOMPRESS, the make rules will compress the
1248manpages for you.
1249
1250=over 4
1251
1252=item MANE<lt>sectE<gt>
1253
1254A list of manpages, categorized by section.  For example, if your port has
1255"man/man1/foo.1" and "man/mann/bar.n", set "MAN1=foo.1" and "MANN=bar.n".
1256The available sections chars are "123456789LN".
1257
1258=item MLINKS
1259
1260A list of E<lt>source, targetE<gt> tuples for creating links for manpages.
1261For example, "MLINKS= a.1 b.1 c.3 d.3" will do an "ln -sf a.1 b.1" and "ln
1262-sf c.3 d.3" in appropriate directories.  (Use this even if the port
1263installs its own manpage links so they will show up correctly in ${PLIST}.)
1264
1265
1266=item MANE<lt>sectE<gt>PREFIX
1267
1268=item MANCOMPRESSED
1269
1270This variable can take values "yes", "no" or "maybe".  "yes" means manpages
1271are installed compressed; "no" means they are not; "maybe" means it changes
1272depending on the value of NOMANCOMPRESS. Default: "yes" if USE_IMAKE is set
1273and NO_INSTALL_MANPAGES is not set, and "no" otherwise.
1274
1275=item INFO
1276
1277A list of .info files (omitting the trailing ".info"); only one entry per
1278document!
1279
1280=item INFO_PATH
1281
1282Path, where all .info files will be installed by your port, relative to
1283${PREFIX}
1284
1285Default: "share/info" if ${PREFIX} is equal to /usr and "info" otherwise.
1286
1287=item PORTDOCS
1288
1289A list of files and directories relative to DOCSDIR. Shell glob patterns can
1290be used, directories include the entire subtree of contained files and
1291directories. Should not be set when no documentation files are installed
1292(for example because NOPORTDOCS is defined). Useful for dynamically
1293generated documentation.
1294
1295=back
1296
1297=head2 Skipping Steps
1298
1299Set these variables if your port doesn't need some of the steps.
1300Note that there are no NO_PATCH or NO_CONFIGURE variables because
1301those steps are empty by default.  NO_EXTRACT is not allowed anymore
1302since we need to at least create ${WRKDIR}.  Also, NO_CHECKSUM is a user
1303variable and is not to be set in a port's Makefile.  See above for NO_PACKAGE.
1304
1305=over 4
1306
1307=item NO_BUILD
1308
1309Use a dummy (do-nothing) build target.
1310
1311=item NO_INSTALL
1312
1313Use a dummy (do-nothing) fake target.  This may sound confusing, but
1314typically this will do what you want.
1315
1316=back
1317
1318=head2 Target Specific Variables
1319
1320=head3 config
1321
1322=over 4
1323
1324=item OPTIONS
1325
1326List  of what WITH_<option> options this port accept.  The
1327format is <option> "<description>" [on|off]
1328
1329Example:
1330    FLEXRESP "Flexible response to events" off
1331
1332Which tells that an option WITH_FLEXRESP exists for this port, that by
1333default it is not defined, and that the description to show to a user in the
1334config dialog is "Flexible response to events".  If you have more than one
1335option, just chain them into a single variable.  NOTE: To make options work,
1336you need to include bsd.port.pre.mk or bsd.mport.options.mk before you start
1337testing the WITH_xyz and WITHOUT_xyz variables.
1338
1339=item PORT_DBDIR
1340
1341Where port configuration options are recorded.
1342
1343Default: ${DESTDIR}/var/db/ports
1344
1345=back
1346
1347=head3 fetch
1348
1349=over 4
1350
1351=item FETCH_CMD
1352
1353Full path to ftp/http fetch command if not in $PATH.
1354
1355Default: "/usr/bin/fetch -ARr"
1356
1357=item FETCH_BEFORE_ARGS
1358
1359Arguments to ${FETCH_CMD} before filename.
1360
1361Default: none
1362
1363=item FETCH_AFTER_ARGS
1364
1365Arguments to ${FETCH_CMD} following filename.
1366
1367Default: none
1368
1369=item FETCH_ENV
1370
1371Environment to pass to ${FETCH_CMD}.
1372
1373Default: none
1374
1375=item FETCH_REGET
1376
1377Times to retry fetching of files on checksum errors.
1378
1379Default: 1
1380
1381=item DISABLE_SIZE
1382
1383Do not check the size of a distfile even if the SIZE field has been
1384specified in distinfo.  This is useful when using an alternate FETCH_CMD.
1385
1386=item CHECKSUM_ALGORITHMS
1387
1388Different checksum algorithms to check for verifying the integrity of the
1389distfiles. The absence of the algorithm in distinfo doesn't make it fail.
1390
1391Default: md5 sha256 rmd160
1392
1393=item NO_CHECKSUM
1394
1395Don't verify the checksum.  Typically used when when you noticed the
1396distfile you just fetched has a different checksum and you intend to verify
1397if the port still works with it.
1398
1399
1400=back
1401
1402=head3 extract
1403
1404=over 4
1405
1406=item EXTRACT_CMD
1407
1408Command for extracting archive: "bzip2" if USE_BZIP2 is set, "unzip" if
1409USE_ZIP is set, "gzip" otherwise.
1410
1411=item EXTRACT_BEFORE_ARGS
1412
1413Arguments to ${EXTRACT_CMD} before filename.
1414
1415Default: "-dc"
1416
1417=item EXTRACT_AFTER_ARGS
1418
1419Arguments to ${EXTRACT_CMD} following filename.
1420
1421Default: "| tar -xf -"
1422
1423=back
1424
1425=head3 makesum
1426
1427=over 4
1428
1429=item NO_SIZE
1430
1431Don't record size data in distinfo, needed when the master site does not
1432report file sizes, or when multiple valid versions of a distfile, having
1433different sizes, exist.
1434
1435=back
1436
1437=head3 patch
1438
1439=over 4
1440
1441=item EXTRA_PATCHES
1442
1443Define this variable if you have patches not in ${PATCHDIR}.  This usually
1444happens when you need to do some pre-processing before some distribution
1445patches can be applied.  In that case, fetch them as extra distfiles, put
1446the processed results in ${WRKDIR}, then point EXTRA_PATCHES to them. The
1447patches specified by this variable will be applied after the normal
1448distribution patches but before those in ${PATCHDIR}.
1449
1450=item PATCH_WRKSRC
1451
1452Directory to apply patches in.
1453
1454Default: ${WRKSRC}
1455
1456=item PATCH_DEBUG
1457
1458If set, print out more information about the patches as it attempts to apply
1459them.
1460
1461=back
1462
1463=head3 configure
1464
1465=over 4
1466
1467=item HAS_CONFIGURE
1468
1469If set, this port has its own configure script.  The configure stage will
1470not do anything if this is not set.
1471
1472=item GNU_CONFIGURE
1473
1474If set, you are using GNU configure (optional).  Implies HAS_CONFIGURE.
1475
1476=item PERL_CONFIGURE
1477
1478Configure using Perl's MakeMaker.  Implies USE_PERL5.
1479
1480=item CONFIGURE_WRKSRC
1481
1482Directory to run configure in.
1483
1484Default: ${WRKSRC}
1485
1486=item CONFIGURE_SCRIPT
1487
1488Name of configure script, relative to ${CONFIGURE_WRKSRC}.
1489
1490Default: configure
1491
1492=item CONFIGURE_TARGET
1493
1494The name of target to call when GNU_CONFIGURE is defined.
1495
1496Default: ${ARCH}-portbld-freebsd${OSREL}
1497
1498=item CONFIGURE_ARGS
1499
1500Pass these args to configure if ${HAS_CONFIGURE} is set. Default if
1501GNU_CONFIGURE is set:
1502
1503 "--prefix=${PREFIX} ${CONFIGURE_TARGET}"
1504
1505If supported by the configure script, the following will also be in the
1506default:
1507
1508 "--mandir=${PREFIX}/share/man --infodir=${PREFIX}/${INFO_PATH}"
1509
1510If GNU_CONFIGURE is not set, CONFIGURE_ARGS defaults to empty.
1511
1512=item CONFIGURE_ENV
1513
1514Pass these env (shell-like) to configure if ${HAS_CONFIGURE} is set.
1515
1516=item CONFIGURE_LOG
1517
1518The name of configure log file. It will be printed to the screen if
1519configure fails.
1520
1521Default: config.log
1522
1523=item CONFIGURE_FAIL_MESSAGE
1524
1525A message displayed to users when configure fails (note: this assumes the
1526do-configure target has not been overwritten).  This message will be passed
1527through /usr/bin/fmt before being shown to the user.
1528
1529=back
1530
1531=head3 build
1532
1533=over 4
1534
1535=item MAKEFILE
1536
1537Name of the makefile.
1538
1539Default: Makefile
1540
1541=item ALL_TARGET
1542
1543Default target for dist's makefile in build stage.
1544
1545Default: all
1546
1547=item BUILD_WRKSRC
1548
1549Directory to do build in (default: ${WRKSRC}).
1550
1551=item MAKE_ENV
1552
1553Additional environment vars passed to make process in build
1554and fake stages.
1555
1556=item MAKE_ARGS
1557
1558Any extra arguments to sub-make in build and install stages.
1559
1560Default: none
1561
1562=item MAKE_JOBS_SAFE
1563
1564This port can be built on multiple CPUs in parallel. Make will
1565be invoked with -jX parameter where X is the MAKE_JOBS_NUMBER
1566set.
1567
1568=item MAKE_JOBS_UNSAFE
1569
1570Disallow multiple jobs even when a global override is in affect
1571to work around broken ports.
1572
1573=item DISABLE_MAKE_JOBS
1574
1575Set to disable multiple jobs feature.  This is a user defined
1576setting.
1577
1578=item FORCE_MAKE_JOBS
1579
1580Set to enable multiple jobs for all ports except those marked
1581unsafe with MAKE_JOBS_UNSAFE
1582
1583=item MAKE_JOBS_NUMBER
1584
1585The number of make jobs to be used; the make -jX setting that
1586defaults to the number of CPU cores present from
1587the sysctl kern.smp.cpus
1588
1589=back
1590
1591=head3 fake
1592
1593=over 4
1594
1595=item INSTALL_WRKSRC
1596
1597Directory to install from.
1598
1599Default: ${WRKSRC}
1600
1601=item NO_MTREE
1602
1603If set, will not invoke mtree from bsd.mport.mk for the "fake" target.
1604
1605=item MTREE_FILE
1606
1607The name of the mtree file.
1608
1609Default: /etc/mtree/BSD.local.dist
1610
1611=item PLIST_DIRS
1612
1613Directories to be added to packing list
1614
1615=item PLIST_FILES
1616
1617Files and symbolic links to be added to packing list
1618
1619=item PLIST
1620
1621Name of the `packing list' file. Change this to ${WRKDIR}/PLIST or something
1622if you need to write to it.  (It is not a good idea for a port to write to
1623any file outside ${WRKDIR} during a normal build.)
1624
1625Default: ${PKGDIR}/pkg-plist
1626
1627=item TMPPLIST
1628
1629Name of the `packing list' file after processing
1630
1631Default: ${WRKDIR}/.PLIST.mktmp
1632
1633=item PLIST_SUB
1634
1635List of "variable=value" pair for substitution in ${PLIST}
1636
1637=item SUB_FILES
1638
1639Files that should be passed through sed and redirected to ${WRKDIR}.
1640
1641=over 8
1642
1643=item *
1644
1645For each file specified in SUB_FILES, there must be a corresponding file in
1646${FILESDIR} whose suffix is ".in". For instance, if the Makefile specifies
1647"SUB_FILES= pkg-message" then there must be a file called pkg-message.in in
1648${FILESDIR}.
1649
1650=item *
1651
1652The substitution process is the same as PLIST_FILES, as described below
1653except that any line beginning with @comment is deleted.
1654
1655=back
1656
1657=item SUB_LIST
1658
1659List of "variable=value" pair for substitution in ${SUB_FILES}
1660
1661Some pairs are added by default: eg. PREFIX=${PREFIX}
1662
1663=item INSTALLS_SHLIB
1664
1665B<deprecated>.  Use USE_LDCONFIG instead.
1666
1667If set, bsd.mport.mk will automatically run ldconfig commands
1668from post-install and also add appropriate @exec/@unexec
1669directives to directories listed in LDCONFIG_DIRS.
1670
1671If USE_LINUX_PREFIX is defined, the Linux version of ldconfig
1672will be used instead of the native FreeBSD version (in such
1673case, LDCONFIG_DIRS is ignored).
1674
1675=item LDCONFIG_DIRS
1676
1677List of directories to run ldconfig if INSTALLS_SHLIB is set. Note that this
1678is passed through sed just like the rest of PLIST, so ${PLIST_SUB}
1679substitutions also apply here.  It is recommended that you use
1680%%PREFIX%% for ${PREFIX}, %%LOCALBASE%% for
1681${LOCALBASE_REL} and %%X11BASE%% for ${X11BASE_REL}.
1682Default: %%PREFIX%%/lib
1683
1684=item USE_LDCONFIG
1685
1686If set to "yes", it replaces the old variable INSTALLS_SHLIB. Otherwise, it
1687can be set to a list of directories to be added to
1688${PREFIX}/libdata/ldconfig/${UNIQUENAME}. Note that this directory is used
1689by ldconfig startup script, it is meant to replace ldconfig scripts
1690installed by some ports as (sometimes) 000.${UNQUENAME}.sh.  If
1691USE_LINUX_PREFIX is defined, then the Linux version of ldconfig will be used
1692instead (and LDCONFIG_DIRS is ignored).
1693
1694=item USE_LDCONFIG32
1695
1696Same as USE_LDCONFIG but the target file is
1697${PREFIX}/libdata/ldconfig32/${UNIQUENAME} instead.
1698
1699Note: that should only be used on 64-bit architectures.
1700
1701=item DOCSDIR
1702
1703Name of the directory to install the packages docs in.
1704
1705Default: ${PREFIX}/share/doc/${PORTNAME}
1706
1707=item EXAMPLESDIR
1708
1709Name of the directory to install the packages examples in.
1710
1711Default: ${PREFIX}/share/examples/${PORTNAME}
1712
1713=item DATADIR
1714
1715Name of the directory to install the packages shared data in.
1716
1717Default: ${PREFIX}/share/${PORTNAME}
1718
1719=item WWWDIR
1720
1721Name of the directory to install the packages www data in.
1722
1723Default: ${PREFIX}/www/${PORTNAME}
1724
1725=item ETCDIR
1726
1727Name of the directory to install the packages etc data in.
1728
1729Default: ${PREFIX}/etc/${PORTNAME}
1730
1731=item DESKTOPDIR
1732
1733Name of the directory to install ${DESKTOP_ENTRIES} in.
1734
1735Default: ${PREFIX}/share/applications
1736
1737=item DESKTOP_ENTRIES
1738
1739List of desktop entry files to generate and install in ${DESKTOPDIR}. The
1740format is"Name" "Comment" "Icon" "Exec" "Categories" StartupNotify
1741
1742Rules:
1743
1744=over 8
1745
1746=item *
1747
1748Only add desktop entries for applications which do not require a terminal
1749(ie. X applications).
1750
1751=item *
1752
1753If the upstream distribution already installs .desktop files, you do not
1754need to use this.
1755
1756=item *
1757
1758If you require a more elaborate .desktop file than this variable permits,
1759write it yourself and install it in ${DESKTOPDIR}.
1760
1761=back
1762
1763Notes:
1764
1765=over 8
1766
1767=item *
1768
1769Comment and Icon may be empty strings (""). Categories may be an empty
1770string in some cases (see below). The other fields are mandatory.
1771
1772=item *
1773
1774If Categories is an empty string, bsd.port.mk will try to deduce a default
1775value using the CATEGORIES variable. If the deduction fails, you will have
1776to set Categories manually. You should check the generated value using "make
1777desktop-categories", and override it if necessary.
1778
1779=item *
1780
1781Exec will also be used to name the .desktop file.
1782
1783=item *
1784
1785The files will be automatically added to ${PLIST}.
1786
1787Example:
1788 "X Window Information" \
1789 "Get information about X windows" \
1790 "wininfo.png" \
1791 "wininfo" \
1792 "Application;System;" \
1793 true
1794
1795See http://standards.freedesktop.org/desktop-entry-spec/ for an explanation
1796of the fields. If you need to create more than one file, just chain them
1797into a single variable.
1798
1799=back
1800
1801=back
1802
1803Note that the fake target will automatically add manpages (see above) and
1804also substitute special sequences of characters (delimited by "%%") as
1805defined in PLIST_SUB to generate ${TMPPLIST}.  For instance,
1806"OSREL=${OSREL}" in PLIST_SUB causes all occurrences of "%%OSREL%%" in
1807${PLIST} to be substituted by the value of OSREL. ${TMPPLIST} is generated
1808before the do-install stage.  If you are generating the packing list
1809on-the-fly, make sure it's generated before do-install is called!
1810
1811=head3 package
1812
1813=over 4
1814
1815=item NO_LATEST_LINK
1816
1817Do not install the "Latest" link for package.  Define this if this port is a
1818beta version of another stable port which is also in the tree.
1819
1820=item LATEST_LINK
1821
1822Install the "Latest" link for the package as ___.  Define this if the
1823"Latest" link name will be incorrectly determined.
1824
1825=back
1826
1827=head2 Miscellaneous Variables
1828
1829=over 4
1830
1831=item SCRIPTS_ENV
1832
1833Additional environment vars passed to scripts in ${SCRIPTDIR} executed by
1834bsd.mport.mk.
1835
1836Default: see below
1837
1838=item ECHO_MSG
1839
1840Used to print all the '===>' style prompts - override this to turn them off.
1841
1842Default: ${ECHO_CMD}
1843
1844
1845=item USE_SUBMAKE
1846
1847Set this if you want that each of the port's main 6 targets (extract, patch,
1848configure, build, install and package) to be executed in a separate make(1)
1849process. Useful when one of the stages needs to influence make(1) variables
1850of the later stages using ${WRKDIR}/Makefile.inc generated on the fly.
1851
1852Default: not set.
1853
1854
1855=item WITH_DEBUG
1856
1857If set, debugging flags are added to CFLAGS and the binaries don't get
1858stripped by INSTALL_PROGRAM. Besides, individual ports might add their
1859specific to produce binaries for debugging purposes. You can override the
1860debug flags that are passed to the compiler by setting DEBUG_FLAGS. It is
1861set to "-g" at default.
1862
1863=back
1864
1865=head1 HISTORY
1866
1867bsd.mport.mk is based on bsd.port.mk from FreeBSD 6.0.  It diverged when the fake
1868framework was introduced.  The fake framekwork was greatly influenced by OpenBSD's
1869port system.
1870
1871After the fake framework was introduced work has concentrated on standardizing
1872the behavoirs of the various extensions and reorganizing the makefiles that
1873comprise the mports framework.
1874
1875=head1 SEE ALSO
1876
1877L<pkg_add(1)>, L<pkg_create(1)>
1878
1879=head1 BUGS
1880
1881Many.
1882
1883