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