xref: /freebsd/lib/libbsdconf/bsdconf_format_src.c (revision 3fe5961a0b708da599d42cbb6b5e4f030c28ea45)
1*3fe5961aSDevin Teske /*
2*3fe5961aSDevin Teske  * Copyright (c) 2013-2026 Devin Teske <dteske@FreeBSD.org>
3*3fe5961aSDevin Teske  * Copyright (c) 2021-2026 Faraz Vahedi <kfv@FreeBSD.org>
4*3fe5961aSDevin Teske  *
5*3fe5961aSDevin Teske  * SPDX-License-Identifier: BSD-2-Clause
6*3fe5961aSDevin Teske  */
7*3fe5961aSDevin Teske 
8*3fe5961aSDevin Teske #include "bsdconf_formats.h"
9*3fe5961aSDevin Teske 
10*3fe5961aSDevin Teske /*
11*3fe5961aSDevin Teske  * BSDCONF_FORMAT_SRC: /usr/src build audience
12*3fe5961aSDevin Teske  *
13*3fe5961aSDevin Teske  * Make(1) syntax, matching make.conf(5) / src.conf(5).  The FreeBSD source
14*3fe5961aSDevin Teske  * tree consults three configuration files in order (see src.sys.env.mk,
15*3fe5961aSDevin Teske  * sys.mk, and src.sys.mk): src-env.conf, make.conf, then src.conf.  New
16*3fe5961aSDevin Teske  * directives are written to src.conf (def->path); later files override
17*3fe5961aSDevin Teske  * earlier ones for `=' and accumulate for `+='.  Environment overrides
18*3fe5961aSDevin Teske  * (SRC_ENV_CONF, __MAKE_CONF, SRCCONF) are applied by sysconf(8).
19*3fe5961aSDevin Teske  *
20*3fe5961aSDevin Teske  * sys.mk / local.sys.mk and `.if' / control flow are intentionally out of
21*3fe5961aSDevin Teske  * scope: conf files may contain them, but this format does not evaluate
22*3fe5961aSDevin Teske  * them (see LIMITATIONS in sysconf(8)).
23*3fe5961aSDevin Teske  */
24*3fe5961aSDevin Teske static const struct bsdconf_source bsdconf_src_sources[] = {
25*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE, "/etc/src-env.conf" },
26*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE, "/etc/make.conf" },
27*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE, "/etc/src.conf" },
28*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE, NULL },
29*3fe5961aSDevin Teske };
30*3fe5961aSDevin Teske 
31*3fe5961aSDevin Teske const struct bsdconf_format_def bsdconf_format_src_def = {
32*3fe5961aSDevin Teske 	.keyword	= "src",
33*3fe5961aSDevin Teske 	.path		= "/etc/src.conf",
34*3fe5961aSDevin Teske 	.sources	= bsdconf_src_sources,
35*3fe5961aSDevin Teske 	.processing	= BSDCONF_BREAK_ON_EQUALS | BSDCONF_CASE_SENSITIVE |
36*3fe5961aSDevin Teske 			  BSDCONF_OPERATOR_EQUALS,
37*3fe5961aSDevin Teske 	.put		= BSDCONF_PUT_UNQUOTED | BSDCONF_PUT_ALLOW_EMPTY,
38*3fe5961aSDevin Teske };
39