1# @(#)bsd.README 8.2 (Berkeley) 4/2/94 2# $FreeBSD$ 3 4This is the README file for the "include" files for the FreeBSD 5source tree. The files are installed in /usr/share/mk, and are by 6convention, named with the suffix ".mk". These files store several 7build options and should be handled with caution. 8 9Note, this file is not intended to replace reading through the .mk 10files for anything tricky. 11 12There are two main types of make include files. One type is the generally 13usable make include files, such as bsd.prog.mk and bsd.lib.mk. The other is 14the internal make include files, such as bsd.files.mk and bsd.man.mk, which 15can not/should not be used directly but are used by the other make include 16files. In most cases it is only interesting to include bsd.prog.mk or 17bsd.lib.mk. 18 19bsd.arch.inc.mk - includes arch-specific Makefile.$arch 20bsd.compiler.mk - defined based on current compiler 21bsd.confs.mk - install of configuration files 22bsd.cpu.mk - sets CPU/arch-related variables (included from sys.mk) 23bsd.crunchgen.mk - building crunched binaries using crunchgen(1) 24bsd.dep.mk - handle Makefile dependencies 25bsd.dirs.mk - handle directory creation 26bsd.doc.mk - building troff system documents 27bsd.endian.mk - TARGET_ENDIAN=1234(little) or 4321 (big) for target 28bsd.files.mk - install of general purpose files 29bsd.incs.mk - install of include files 30bsd.info.mk - building GNU Info hypertext system (deprecated) 31bsd.init.mk - initialization for the make include files 32bsd.kmod.mk - building loadable kernel modules 33bsd.lib.mk - support for building libraries 34bsd.libnames.mk - define library names 35bsd.links.mk - install of links (sym/hard) 36bsd.man.mk - install of manual pages and their links 37bsd.nls.mk - build and install of NLS catalogs 38bsd.obj.mk - creating 'obj' directories and cleaning up 39bsd.own.mk - define common variables 40bsd.port.mk - building ports 41bsd.port.post.mk - building ports 42bsd.port.pre.mk - building ports 43bsd.port.subdir.mk - targets for building subdirectories for ports 44bsd.prog.mk - building programs from source files 45bsd.progs.mk - build multiple programs from sources 46bsd.snmpmod.mk - building modules for the SNMP daemon bsnmpd 47bsd.subdir.mk - targets for building subdirectories 48bsd.sys.mk - common settings used for building FreeBSD sources 49bsd.test.mk - building test programs from source files 50sys.mk - default rules for all makes 51 52This file does not document bsd.port*.mk. They are documented in ports(7). 53 54See also make(1), mkdep(1), style.Makefile(5) and `PMake - A 55Tutorial', located in /usr/share/doc/psd/12.make. 56 57=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 58 59Random things worth knowing about this document: 60 61If appropriate when documenting the variables the default value is 62indicated using square brackets e.g. [gzip]. 63In some cases the default value depend on other values (e.g. system 64architecture). In these cases the most common value is indicated. 65 66This document contains some simple examples of the usage of the BSD make 67include files. For more examples look at the makefiles in the FreeBSD 68source tree. 69 70=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 71 72RANDOM THINGS WORTH KNOWING: 73 74The files are like C-style #include files, and pretty much behave like 75you'd expect. The syntax is slightly different in that a single '.' is 76used instead of the hash mark, i.e. ".include <bsd.prog.mk>". 77 78One difference that will save you lots of debugging time is that inclusion 79of the file is normally done at the *end* of the Makefile. The reason for 80this is because .mk files often modify variables and behavior based on the 81values of variables set in the Makefile. To make this work, remember that 82the FIRST target found is the target that is used, i.e. if the Makefile has: 83 84 a: 85 echo a 86 a: 87 echo a number two 88 89the command "make a" will echo "a". To make things confusing, the SECOND 90variable assignment is the overriding one, i.e. if the Makefile has: 91 92 a= foo 93 a= bar 94 95 b: 96 echo ${a} 97 98the command "make b" will echo "bar". This is for compatibility with the 99way the V7 make behaved. 100 101It's fairly difficult to make the BSD .mk files work when you're building 102multiple programs in a single directory. It's a lot easier to split up 103the programs than to deal with the problem. Most of the agony comes from 104making the "obj" directory stuff work right, not because we switch to a new 105version of make. So, don't get mad at us, figure out a better way to handle 106multiple architectures so we can quit using the symbolic link stuff. 107(Imake doesn't count.) 108 109The file .depend in the source directory is expected to contain dependencies 110for the source files. This file is read automatically by make after reading 111the Makefile. 112 113The variable DESTDIR works as before. It's not set anywhere but will change 114the tree where the file gets installed. 115 116The profiled libraries are no longer built in a different directory than 117the regular libraries. A new suffix, ".po", is used to denote a profiled 118object, and ".pico" denotes a position-independent relocatable object. 119".nossppico" denotes a position-independent relocatable object without 120stack smashing protection. 121 122=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 123 124The following variables are common: 125 126AFLAGS.${SRC} 127 Flags dependent on source file name. 128ACFLAGS.${SRC} 129 Flags dependent on source file name. 130CFLAGS.${SRC} 131 Flags dependent on source file name. 132CFLAGS.${COMPILER_TYPE} 133 Flags dependent on compiler added to CFLAGS. 134CFLAGS.${MACHINE_ARCH} 135 Architectural flags added to CFLAGS. 136CFLAGS_NO_SIMD Add this to CFLAGS for programs that don't want any SIMD 137 instructions generated. It is setup in bsd.cpu.mk to an 138 appropriate value for the compiler and target. 139CXXFLAGS.${COMPILER_TYPE} 140 Flags dependent on compiler added to CXXFLAGS. 141CXXFLAGS.${MACHINE_ARCH} 142 Architectural flags added to CXXFLAGS. 143CXXFLAGS.${SRC} 144 Flags dependent on source file name. 145COMPILER_FEATURES 146 A list of features that the compiler supports. Zero or 147 more of: 148 c++11 Supports full C++ 11 standard. 149 150COMPILER_TYPE Type of compiler, either clang or gcc, though other 151 values are possible. Don't assume != clang == gcc. 152 153COMPILER_VERSION 154 A numeric constant equal to: 155 major * 10000 + minor * 100 + tiny 156 for the compiler's self-reported version. 157 158=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 159 160The include file <sys.mk> has the default rules for all makes, in the BSD 161environment or otherwise. You probably don't want to touch this file. 162 163=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 164 165The include file <bsd.arch.inc.mk> includes other Makefiles for specific 166architectures, if they exist. It will include the first of the following 167files that it finds: Makefile.${MACHINE}, Makefile.${MACHINE_ARCH}, 168Makefile.${MACHINE_CPUARCH} 169 170=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 171 172The include file <bsd.man.mk> handles installing manual pages and their 173links. 174 175It has three targets: 176 177 all-man: 178 build manual pages. 179 maninstall: 180 install the manual pages and their links. 181 manlint: 182 verify the validity of manual pages. 183 184It sets/uses the following variables: 185 186MAN The manual pages to be installed (use a .1 - .9 suffix). 187 188MANDIR Base path for manual installation. 189 190MANGRP Manual group. 191 192MANMODE Manual mode. 193 194MANOWN Manual owner. 195 196MANSUBDIR Subdirectory under the manual page section, i.e. "/vax" 197 or "/tahoe" for machine specific manual pages. 198 199MLINKS List of manual page links (using a .1 - .9 suffix). The 200 linked-to file must come first, the linked file second, 201 and there may be multiple pairs. The files are hard-linked. 202 203The include file <bsd.man.mk> includes a file named "../Makefile.inc" if 204it exists. 205 206=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 207 208The include file <bsd.own.mk> contains the owners, groups, etc. for both 209manual pages and binaries. 210 211It has no targets. 212 213It sets/uses the following variables: 214 215BINGRP Binary group. 216 217BINMODE Binary mode. 218 219BINOWN Binary owner. 220 221MANDIR Base path for manual installation. 222 223MANGRP Manual group. 224 225MANMODE Manual mode. 226 227MANOWN Manual owner. 228 229INSTALL_LINK Command to install a hard link. 230 231INSTALL_SYMLINK Command to install a symbolic link. 232 233INSTALL_RSYMLINK Command to install a relative symbolic link. 234 235LINKOWN Owner of hard links created by INSTALL_LINK. 236 237LINKGRP Group of hard links created by INSTALL_LINK. 238 239LINKMODE Mode of hard links created by INSTALL_LINK. 240 241SYMLINKOWN Owner of hard links created by INSTALL_[R]SYMLINK. 242 243SYMLINKGRP Group of hard links created by INSTALL_[R]SYMLINK. 244 245SYMLINKMODE Mode of hard links created by INSTALL_[R]SYMLINK. 246 247This file is generally useful when building your own Makefiles so that 248they use the same default owners etc. as the rest of the tree. 249 250=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 251 252The include file <bsd.prog.mk> handles building programs from one or 253more source files, along with their manual pages. It has a limited number 254of suffixes, consistent with the current needs of the BSD tree. 255 256It has seven targets: 257 258 all: 259 build the program and its manual page 260 clean: 261 remove the program and any object files. 262 cleandir: 263 remove all of the files removed by the target clean, as 264 well as .depend, tags, and any manual pages. 265 depend: 266 make the dependencies for the source files, and store 267 them in the file .depend. 268 install: 269 install the program and its manual pages; if the Makefile 270 does not itself define the target install, the targets 271 beforeinstall and afterinstall may also be used to cause 272 actions immediately before and after the install target 273 is executed. 274 tags: 275 create a tags file for the source files. 276 277It sets/uses the following variables: 278 279ACFLAGS Flags to the compiler when preprocessing and 280 assembling .S files. 281 282AFLAGS Flags to the assembler when assembling .s files. 283 284BINGRP Binary group. 285 286BINMODE Binary mode. 287 288BINOWN Binary owner. 289 290CFLAGS Flags to the compiler when creating C objects. 291 292CLEANDIRS Additional files (CLEANFILES) and directories (CLEANDIRS) to 293CLEANFILES remove during clean and cleandir targets. "rm -rf" and 294 "rm -f" are used, respectively. 295 296DIRS A list of variables referring to directories. For example: 297 298 DIRS+= FOO 299 FOO= /usr/share/foo 300 301 Owner, Group, Mode and Flags are handled by FOO_OWN, 302 FOO_GRP, FOO_MODE and FOO_FLAGS, respectively. 303 304 This allows FILESDIR to be set to FOO, and the directory 305 will be created before the files are installed and the 306 dependencies will be set correctly. 307 308DPADD Additional dependencies for the program. Usually used for 309 libraries. For example, to depend on the compatibility and 310 utility libraries use: 311 312 DPADD=${LIBCOMPAT} ${LIBUTIL} 313 314 There is a predefined identifier for each (non-profiled, 315 non-shared) library and object. Library file names are 316 transformed to identifiers by removing the extension and 317 converting to upper case. 318 319 There are no special identifiers for profiled or shared 320 libraries or objects. The identifiers for the standard 321 libraries are used in DPADD. This works correctly iff all 322 the libraries are built at the same time. Unfortunately, 323 it causes unnecessary relinks to shared libraries when 324 only the static libraries have changed. Dependencies on 325 shared libraries should be only on the library version 326 numbers. 327 328FILES A list of non-executable files. 329 The installation is controlled by the FILESNAME, FILESOWN, 330 FILESGRP, FILESMODE, FILESDIR variables that can be 331 further specialized by FILES<VAR>_<file>. 332 333LDADD Additional loader objects. Usually used for libraries. 334 For example, to load with the compatibility and utility 335 libraries, use: 336 337 LDADD=-lutil -lcompat 338 339LDFLAGS Additional loader flags. Passed to the loader via CC, 340 since that's used to link programs as well, so loader 341 specific flags need to be prefixed with -Wl, to work. 342 343LIBADD Additional libraries. This is for base system libraries 344 and is only valid inside of the /usr/src tree. 345 Use LIBADD=name instead of LDADD=-lname. 346 347LINKS The list of binary links; should be full pathnames, the 348 linked-to file coming first, followed by the linked 349 file. The files are hard-linked. For example, to link 350 /bin/test and /bin/[, use: 351 352 LINKS= /bin/test /bin/[ 353 354LINKOWN Owner of links created with LINKS [${BINOWN}]. 355 356LINKGRP Group of links created with LINKS [${BINGRP}]. 357 358LINKMODE Mode of links created with LINKS [${BINMODE}]. 359 360 361MAN Manual pages. If no MAN variable is defined, 362 "MAN=${PROG}.1" is assumed. See bsd.man.mk for more details. 363 364PROG The name of the program to build. If not supplied, nothing 365 is built. 366 367PROGNAME The name that the above program will be installed as, if 368 different from ${PROG}. 369 370PROG_CXX If defined, the name of the program to build. Also 371 causes <bsd.prog.mk> to link the program with the 372 standard C++ library. PROG_CXX overrides the value 373 of PROG if PROG is also set. 374 375PROGS When used with <bsd.progs.mk>, allow building multiple 376PROGS_CXX PROG and PROG_CXX in one Makefile. To define 377 individual variables for each program the VAR.prog 378 syntax should be used. For example: 379 380 PROGS= foo bar 381 SRCS.foo= foo_src.c 382 LDADD.foo= -lutil 383 SRCS.bar= bar_src.c 384 385 The supported variables are: 386 - BINDIR 387 - BINGRP 388 - BINMODE 389 - BINOWN 390 - CFLAGS 391 - CXXFLAGS 392 - DEBUG_FLAGS 393 - DPADD 394 - DPSRCS 395 - INTERNALPROG (no installation) 396 - LDADD 397 - LDFLAGS 398 - LIBADD 399 - LINKS 400 - MAN 401 - MLINKS 402 - NO_WERROR 403 - PROGNAME 404 - SRCS 405 - STRIP 406 - WARNS 407 408SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}]. 409 The installation is controlled by the SCRIPTSNAME, SCRIPTSOWN, 410 SCRIPTSGRP, SCRIPTSMODE, SCRIPTSDIR variables that can be 411 further specialized by SCRIPTS<VAR>_<script>. 412 413SRCS List of source files to build the program. If SRCS is not 414 defined, it's assumed to be ${PROG}.c or, if PROG_CXX is 415 defined, ${PROG_CXX}.cc. 416 417STRIP The flag passed to the install program to cause the binary 418 to be stripped. This is to be used when building your 419 own install script so that the entire system can be made 420 stripped/not-stripped using a single nob. 421 422SUBDIR A list of subdirectories that should be built as well. 423 Each of the targets will execute the same target in the 424 subdirectories. 425 426The include file <bsd.prog.mk> includes the file named "../Makefile.inc" 427if it exists, as well as the include file <bsd.man.mk>. 428 429Some simple examples: 430 431To build foo from foo.c with a manual page foo.1, use: 432 433 PROG= foo 434 435 .include <bsd.prog.mk> 436 437To build foo from foo.c with a manual page foo.2, add the line: 438 439 MAN= foo.2 440 441If foo does not have a manual page at all, add the line: 442 443 MAN= 444 445If foo has multiple source files, add the line: 446 447 SRCS= a.c b.c c.c d.c 448 449=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 450 451The include file, <bsd.snmpmod.mk>, handles building MIB modules for bsnmpd 452from one or more source files, along with their manual pages. It has a 453limited number of suffixes, consistent with the current needs of the BSD 454tree. 455 456bsd.snmpmod.mk leverages bsd.lib.mk for building MIB modules and 457bsd.files.mk for installing MIB description and definition files. 458 459It implements the following additional targets: 460 461 smilint: 462 execute smilint on the MIBs defined by BMIBS. 463 464 The net-mgmt/libsmi package must be installed before 465 executing this target. The net-mgmt/net-snmp package 466 should be installed as well to reduce false positives 467 from smilint. 468 469It sets/uses the following variables: 470 471BMIBS The MIB definitions to install. 472 473BMIBSDIR The directory where the MIB definitions are installed. 474 This defaults to `${SHAREDIR}/snmp/mibs`. 475 476DEFS The MIB description files to install. 477 478DEFSDIR The directory where MIB description files are installed. 479 This defaults to `${SHAREDIR}/snmp/defs`. 480 481EXTRAMIBDEFS Extra MIB description files to use as input when 482 generating ${MOD}_oid.h and ${MOD}_tree.[ch]. 483 484EXTRAMIBSYMS Extra MIB definition files used only for extracting 485 symbols. 486 487 EXTRAMIBSYMS are useful when resolving inter-module 488 dependencies and are useful with files containing only 489 enum-definitions. 490 491 See ${MOD}_oid.h for more details. 492 493LOCALBASE The package root where smilint and the net-snmp 494 definitions can be found 495 496MOD The bsnmpd module name. 497 498SMILINT smilint binary to use with the smilint make target. 499 500SMILINT_FLAGS flags to pass to smilint. 501 502SMIPATH A colon-separated directory path where MIBs definitions 503 can be found. See "SMIPATH" in smi_config for more 504 details. 505 506XSYM MIB names to extract symbols for. See ${MOD}_oid.h for 507 more details. 508 509It generates the following files: 510 511${MOD}_tree.c A source file and header which programmatically describes 512${MOD}_tree.h the MIB (type, OID name, ACCESS attributes, etc). 513 514 The files are generated via "gensnmptree -p". 515 516 See gensnmptree(1) for more details. 517 518${MOD}_oid.h A header which programmatically describes the MIB root and 519 MIB tables. 520 521 The files are generated via "gensnmptree -e". 522 523 See gensnmptree(1) for more details. 524 525=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 526 527The include file <bsd.subdir.mk> contains the default targets for building 528subdirectories. It has the same seven targets as <bsd.prog.mk>: all, clean, 529cleandir, depend, install, and tags. For all of the directories listed in the 530variable SUBDIRS, the specified directory will be visited and the target made. 531There is also a default target which allows the command "make subdir" where 532subdir is any directory listed in the variable SUBDIRS. 533 534=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 535 536The include file <bsd.lib.mk> has support for building libraries. It has the 537same seven targets as <bsd.prog.mk>: all, clean, cleandir, depend, install, and 538tags. It has a limited number of suffixes, consistent with the current needs of 539the BSD tree. 540 541It sets/uses the following variables: 542 543LDADD Additional loader objects. 544 545LIB The name of the library to build. Both a shared and static 546 library will be built. NO_PIC can be set to only build a 547 static library. 548 549LIBADD Additional libraries. This is for base system libraries 550 and is only valid inside of the /usr/src tree. 551 Use LIBADD=name instead of LDADD=-lname. 552 553LIBDIR Target directory for libraries. 554 555LIBGRP Library group. 556 557LIBMODE Library mode. 558 559LIBOWN Library owner. 560 561LIBRARIES_ONLY Do not build or install files other than the library. 562 563LIB_CXX The name of the library to build. It also causes 564 <bsd.lib.mk> to link the library with the 565 standard C++ library. LIB_CXX overrides the value 566 of LIB if LIB is also set. Both a shared and static library 567 will be built. NO_PIC can be set to only build a static 568 library. 569 570LINKS The list of binary links; should be full pathnames, the 571 linked-to file coming first, followed by the linked 572 file. The files are hard-linked. For example, to link 573 /bin/test and /bin/[, use: 574 575 LINKS= /bin/test /bin/[ 576 577LINKOWN Owner of links created with LINKS [${LIBOWN}]. 578 579LINKGRP Group of links created with LINKS [${LIBGRP}]. 580 581LINKMODE Mode of links created with LINKS [${LIBMODE}]. 582 583LINTLIBDIR Target directory for lint libraries. 584 585MAN The manual pages to be installed. See bsd.man.mk for more 586 details. 587 588SHLIB Like LIB but only builds a shared library. 589 590SHLIB_CXX Like LIB_CXX but only builds a shared library. 591 592SHLIB_LDSCRIPT Template file to generate shared library linker script. 593 If not defined, a simple symlink is created to the real 594 shared object. 595 596SRCS List of source files to build the library. Suffix types 597 .s, .c, and .f are supported. Note, .s files are preferred 598 to .c files of the same name. (This is not the default for 599 versions of make.) 600 601The include file <bsd.lib.mk> includes the file named "../Makefile.inc" 602if it exists, as well as the include file <bsd.man.mk>. 603 604It has rules for building profiled objects; profiled libraries are 605built by default. 606 607Libraries are ranlib'd before installation. 608 609=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 610 611The include file <bsd.test.mk> handles building one or more test programs 612intended to be used in the FreeBSD Test Suite under /usr/tests/. 613 614It has seven targets: 615 616 all: 617 build the test programs. 618 check: 619 runs the test programs with kyua test. 620 621 The beforecheck and aftercheck targets will be invoked, if 622 defined, to execute commands before and after the realcheck 623 target has been executed, respectively. 624 625 The devel/kyua package must be installed before invoking this 626 target. 627 clean: 628 remove the test programs and any object files. 629 cleandir: 630 remove all of the files removed by the target clean, as 631 well as .depend and tags. 632 depend: 633 make the dependencies for the source files, and store 634 them in the file .depend. 635 install: 636 install the test programs and their data files; if the 637 Makefile does not itself define the target install, the 638 targets beforeinstall and afterinstall may also be used 639 to cause actions immediately before and after the 640 install target is executed. 641 tags: 642 create a tags file for the source files. 643 644It sets/uses the following variables, among many others: 645 646ATF_TESTS_C The names of the ATF C test programs to build. 647 648ATF_TESTS_CXX The names of the ATF C++ test programs to build. 649 650ATF_TESTS_SH The names of the ATF sh test programs to build. 651 652KYUAFILE If 'auto' (the default), generate a Kyuafile out of the 653 test programs defined in the Makefile. If 'yes', then a 654 manually-crafted Kyuafile must be supplied with the 655 sources. If 'no', no Kyuafile is installed (useful for 656 subdirectories providing helper programs or data files 657 only). 658 659LOCALBASE The --prefix for the kyua package. 660 661 The value of LOCALBASE defaults to /usr/local . 662 663NOT_FOR_TEST_SUITE 664 If defined, none of the built test programs get 665 installed under /usr/tests/ and no Kyuafile is 666 automatically generated. Should not be used within the 667 FreeBSD source tree but is provided for the benefit of 668 third-parties. 669 670PLAIN_TESTS_C The names of the plain (legacy) programs to build. 671 672PLAIN_TESTS_CXX The names of the plain (legacy) test programs to build. 673 674PLAIN_TESTS_SH The names of the plain (legacy) test programs to build. 675 676TAP_PERL_INTERPRETER 677 Path to the Perl interpreter to be used for 678 TAP-compliant test programs that are written in Perl. 679 Refer to TAP_TESTS_PERL for details. 680 681TAP_TESTS_C The names of the TAP-compliant C test programs to build. 682 683TAP_TESTS_CXX The names of the TAP-compliant C++ test programs to 684 build. 685 686TAP_TESTS_PERL The names of the TAP-compliant Perl test programs to 687 build. The corresponding source files should end with 688 the .pl extension; the test program is marked as 689 requiring Perl; and TAP_PERL_INTERPRETER is used in the 690 built scripts as the interpreter of choice. 691 692TAP_TESTS_SH The names of the TAP-compliant sh test programs to 693 build. 694 695TESTSBASE Installation prefix for tests. Defaults to /usr/tests 696 697TESTSDIR Path to the installed tests. Must be a subdirectory of 698 TESTSBASE and the subpath should match the relative 699 location of the tests within the src tree. 700 701 The value of TESTSDIR defaults to 702 ${TESTSBASE}/${RELDIR:H} , e.g. /usr/tests/bin/ls when 703 included from bin/ls/tests . 704 705TESTS_SUBDIRS List of subdirectories containing tests into which to 706 recurse. Differs from SUBDIR in that these directories 707 get registered into the automatically-generated 708 Kyuafile (if any). 709 710The actual building of the test programs is performed by <bsd.prog.mk>. 711Please see the documentation above for this other file for additional 712details on the behavior of <bsd.test.mk>. 713