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