commit c47e98d

xplshn  ·  2026-07-02 08:29:57 +0000 UTC
parent a9a2328
fix build

Signed-off-by: xplshn <anto@xplshn.com.ar>
6 files changed,  +112, -858
+1, -0
1@@ -32,4 +32,5 @@ cmd/dev/version.h
2 # build system generated files
3 scripts/mk/config.mk
4 scripts/mk/config.kv
5+scripts/mk/rules.mk
6 deps.mk
+23, -223
  1@@ -1,5 +1,4 @@
  2-.POSIX:
  3-include scripts/mk/config.mk
  4+-include scripts/mk/config.mk
  5 
  6 .SUFFIXES: .y .o .c
  7 HDR =\
  8@@ -488,197 +487,23 @@ BIN_pidof_1 = cmd/pseudo/pidof
  9 BIN_pwdx_1 = cmd/pseudo/pwdx
 10 BIN_uptime_1 = cmd/pseudo/uptime
 11 
 12-POSIX_BIN = \
 13-	$(BIN_basename_$(BUILD_POSIX_BASENAME)) \
 14-	$(BIN_cal_$(BUILD_POSIX_CAL)) \
 15-	$(BIN_cat_$(BUILD_POSIX_CAT)) \
 16-	$(BIN_chgrp_$(BUILD_POSIX_CHGRP)) \
 17-	$(BIN_chmod_$(BUILD_POSIX_CHMOD)) \
 18-	$(BIN_chown_$(BUILD_POSIX_CHOWN)) \
 19-	$(BIN_cksum_$(BUILD_POSIX_CKSUM)) \
 20-	$(BIN_cmp_$(BUILD_POSIX_CMP)) \
 21-	$(BIN_comm_$(BUILD_POSIX_COMM)) \
 22-	$(BIN_cp_$(BUILD_POSIX_CP)) \
 23-	$(BIN_cut_$(BUILD_POSIX_CUT)) \
 24-	$(BIN_date_$(BUILD_POSIX_DATE)) \
 25-	$(BIN_dd_$(BUILD_POSIX_DD)) \
 26-	$(BIN_df_$(BUILD_POSIX_DF)) \
 27-	$(BIN_diff_$(BUILD_POSIX_DIFF)) \
 28-	$(BIN_patch_$(BUILD_POSIX_PATCH)) \
 29-	$(BIN_dirname_$(BUILD_POSIX_DIRNAME)) \
 30-	$(BIN_du_$(BUILD_POSIX_DU)) \
 31-	$(BIN_echo_$(BUILD_POSIX_ECHO)) \
 32-	$(BIN_ed_$(BUILD_POSIX_ED)) \
 33-	$(BIN_env_$(BUILD_POSIX_ENV)) \
 34-	$(BIN_expand_$(BUILD_POSIX_EXPAND)) \
 35-	$(BIN_expr_$(BUILD_POSIX_EXPR)) \
 36-	$(BIN_false_$(BUILD_POSIX_FALSE)) \
 37-	$(BIN_find_$(BUILD_POSIX_FIND)) \
 38-	$(BIN_fold_$(BUILD_POSIX_FOLD)) \
 39-	$(BIN_getconf_$(BUILD_POSIX_GETCONF)) \
 40-	$(BIN_grep_$(BUILD_POSIX_GREP)) \
 41-	$(BIN_head_$(BUILD_POSIX_HEAD)) \
 42-	$(BIN_id_$(BUILD_POSIX_ID)) \
 43-	$(BIN_join_$(BUILD_POSIX_JOIN)) \
 44-	$(BIN_kill_$(BUILD_POSIX_KILL)) \
 45-	$(BIN_link_$(BUILD_POSIX_LINK)) \
 46-	$(BIN_ln_$(BUILD_POSIX_LN)) \
 47-	$(BIN_logger_$(BUILD_POSIX_LOGGER)) \
 48-	$(BIN_logname_$(BUILD_POSIX_LOGNAME)) \
 49-	$(BIN_ls_$(BUILD_POSIX_LS)) \
 50-	$(BIN_mesg_$(BUILD_POSIX_MESG)) \
 51-	$(BIN_mkdir_$(BUILD_POSIX_MKDIR)) \
 52-	$(BIN_mkfifo_$(BUILD_POSIX_MKFIFO)) \
 53-	$(BIN_mv_$(BUILD_POSIX_MV)) \
 54-	$(BIN_nice_$(BUILD_POSIX_NICE)) \
 55-	$(BIN_nl_$(BUILD_POSIX_NL)) \
 56-	$(BIN_nohup_$(BUILD_POSIX_NOHUP)) \
 57-	$(BIN_od_$(BUILD_POSIX_OD)) \
 58-	$(BIN_paste_$(BUILD_POSIX_PASTE)) \
 59-	$(BIN_pathchk_$(BUILD_POSIX_PATHCHK)) \
 60-	$(BIN_printf_$(BUILD_POSIX_PRINTF)) \
 61-	$(BIN_ps_$(BUILD_POSIX_PS)) \
 62-	$(BIN_pwd_$(BUILD_POSIX_PWD)) \
 63-	$(BIN_readlink_$(BUILD_POSIX_READLINK)) \
 64-	$(BIN_renice_$(BUILD_POSIX_RENICE)) \
 65-	$(BIN_rm_$(BUILD_POSIX_RM)) \
 66-	$(BIN_rmdir_$(BUILD_POSIX_RMDIR)) \
 67-	$(BIN_sed_$(BUILD_POSIX_SED)) \
 68-	$(BIN_sleep_$(BUILD_POSIX_SLEEP)) \
 69-	$(BIN_sort_$(BUILD_POSIX_SORT)) \
 70-	$(BIN_split_$(BUILD_POSIX_SPLIT)) \
 71-	$(BIN_tail_$(BUILD_POSIX_TAIL)) \
 72-	$(BIN_tee_$(BUILD_POSIX_TEE)) \
 73-	$(BIN_test_$(BUILD_POSIX_TEST)) \
 74-	$(BIN_time_$(BUILD_POSIX_TIME)) \
 75-	$(BIN_touch_$(BUILD_POSIX_TOUCH)) \
 76-	$(BIN_tr_$(BUILD_POSIX_TR)) \
 77-	$(BIN_true_$(BUILD_POSIX_TRUE)) \
 78-	$(BIN_tsort_$(BUILD_POSIX_TSORT)) \
 79-	$(BIN_tty_$(BUILD_POSIX_TTY)) \
 80-	$(BIN_uname_$(BUILD_POSIX_UNAME)) \
 81-	$(BIN_unexpand_$(BUILD_POSIX_UNEXPAND)) \
 82-	$(BIN_uniq_$(BUILD_POSIX_UNIQ)) \
 83-	$(BIN_unlink_$(BUILD_POSIX_UNLINK)) \
 84-	$(BIN_uudecode_$(BUILD_POSIX_UUDECODE)) \
 85-	$(BIN_uuencode_$(BUILD_POSIX_UUENCODE)) \
 86-	$(BIN_wc_$(BUILD_POSIX_WC)) \
 87-	$(BIN_who_$(BUILD_POSIX_WHO)) \
 88-	$(BIN_xargs_$(BUILD_POSIX_XARGS)) \
 89-	$(BIN_awk_$(BUILD_POSIX_AWK)) \
 90-	$(BIN_sh_$(BUILD_POSIX_SH)) \
 91-	$(BIN_pax_$(BUILD_POSIX_PAX)) \
 92-	$(BIN_make_$(BUILD_POSIX_MAKE)) \
 93-	$(BIN_bc_$(BUILD_POSIX_BC))
 94-
 95-LINUX_BIN = \
 96-	$(BIN_blkdiscard_$(BUILD_LINUX_BLKDISCARD)) \
 97-	$(BIN_chvt_$(BUILD_LINUX_CHVT)) \
 98-	$(BIN_ctrlaltdel_$(BUILD_LINUX_CTRLALTDEL)) \
 99-	$(BIN_eject_$(BUILD_LINUX_EJECT)) \
100-	$(BIN_freeramdisk_$(BUILD_LINUX_FREERAMDISK)) \
101-	$(BIN_fsfreeze_$(BUILD_LINUX_FSFREEZE)) \
102-	$(BIN_hwclock_$(BUILD_LINUX_HWCLOCK)) \
103-	$(BIN_insmod_$(BUILD_LINUX_INSMOD)) \
104-	$(BIN_lsmod_$(BUILD_LINUX_LSMOD)) \
105-	$(BIN_lsusb_$(BUILD_LINUX_LSUSB)) \
106-	$(BIN_modprobe_$(BUILD_LINUX_MODPROBE)) \
107-	$(BIN_depmod_$(BUILD_LINUX_DEPMOD)) \
108-	$(BIN_mkswap_$(BUILD_LINUX_MKSWAP)) \
109-	$(BIN_mount_$(BUILD_LINUX_MOUNT)) \
110-	$(BIN_mountpoint_$(BUILD_LINUX_MOUNTPOINT)) \
111-	$(BIN_pivot_root_$(BUILD_LINUX_PIVOT_ROOT)) \
112-	$(BIN_readahead_$(BUILD_LINUX_READAHEAD)) \
113-	$(BIN_rmmod_$(BUILD_LINUX_RMMOD)) \
114-	$(BIN_swaplabel_$(BUILD_LINUX_SWAPLABEL)) \
115-	$(BIN_swapoff_$(BUILD_LINUX_SWAPOFF)) \
116-	$(BIN_swapon_$(BUILD_LINUX_SWAPON)) \
117-	$(BIN_switch_root_$(BUILD_LINUX_SWITCH_ROOT)) \
118-	$(BIN_sysctl_$(BUILD_LINUX_SYSCTL)) \
119-	$(BIN_tunctl_$(BUILD_LINUX_TUNCTL)) \
120-	$(BIN_umount_$(BUILD_LINUX_UMOUNT)) \
121-	$(BIN_unshare_$(BUILD_LINUX_UNSHARE)) \
122-	$(BIN_vtallow_$(BUILD_LINUX_VTALLOW))
123-
124-NET_BIN = \
125-	$(BIN_netcat_$(BUILD_NET_NETCAT)) \
126-	$(BIN_tftp_$(BUILD_NET_TFTP)) \
127-	$(BIN_wget_$(BUILD_NET_WGET)) \
128-	$(BIN_ping_$(BUILD_NET_PING)) \
129-	$(BIN_sdhcp_$(BUILD_NET_SDHCP)) \
130-	$(BIN_ifconfig_$(BUILD_NET_IFCONFIG)) \
131-	$(BIN_host_$(BUILD_NET_HOST)) \
132-	$(BIN_httpd_$(BUILD_NET_HTTPD)) \
133-	$(BIN_ip_$(BUILD_NET_IP))
134-
135-XSI_BIN = \
136-	$(BIN_mknod_$(BUILD_XSI_MKNOD)) \
137-	$(BIN_passwd_$(BUILD_XSI_PASSWD)) \
138-	$(BIN_su_$(BUILD_XSI_SU))
139-
140-PSEUDO_BIN = \
141-	$(BIN_chroot_$(BUILD_PSEUDO_CHROOT)) \
142-	$(BIN_clear_$(BUILD_PSEUDO_CLEAR)) \
143-	$(BIN_cols_$(BUILD_PSEUDO_COLS)) \
144-	$(BIN_cron_$(BUILD_PSEUDO_CRON)) \
145-	$(BIN_flock_$(BUILD_PSEUDO_FLOCK)) \
146-	$(BIN_getty_$(BUILD_PSEUDO_GETTY)) \
147-	$(BIN_halt_$(BUILD_PSEUDO_HALT)) \
148-	$(BIN_hostname_$(BUILD_PSEUDO_HOSTNAME)) \
149-	$(BIN_killall5_$(BUILD_PSEUDO_KILLALL5)) \
150-	$(BIN_last_$(BUILD_PSEUDO_LAST)) \
151-	$(BIN_lastlog_$(BUILD_PSEUDO_LASTLOG)) \
152-	$(BIN_login_$(BUILD_PSEUDO_LOGIN)) \
153-	$(BIN_md5sum_$(BUILD_PSEUDO_MD5SUM)) \
154-	$(BIN_mktemp_$(BUILD_PSEUDO_MKTEMP)) \
155-	$(BIN_nologin_$(BUILD_PSEUDO_NOLOGIN)) \
156-	$(BIN_pagesize_$(BUILD_PSEUDO_PAGESIZE)) \
157-	$(BIN_printenv_$(BUILD_PSEUDO_PRINTENV)) \
158-	$(BIN_respawn_$(BUILD_PSEUDO_RESPAWN)) \
159-	$(BIN_rev_$(BUILD_PSEUDO_REV)) \
160-	$(BIN_seq_$(BUILD_PSEUDO_SEQ)) \
161-	$(BIN_setsid_$(BUILD_PSEUDO_SETSID)) \
162-	$(BIN_sha1sum_$(BUILD_PSEUDO_SHA1SUM)) \
163-	$(BIN_sha224sum_$(BUILD_PSEUDO_SHA224SUM)) \
164-	$(BIN_sha256sum_$(BUILD_PSEUDO_SHA256SUM)) \
165-	$(BIN_sha384sum_$(BUILD_PSEUDO_SHA384SUM)) \
166-	$(BIN_sha512sum_$(BUILD_PSEUDO_SHA512SUM)) \
167-	$(BIN_sha512_224sum_$(BUILD_PSEUDO_SHA512_224SUM)) \
168-	$(BIN_sha512_256sum_$(BUILD_PSEUDO_SHA512_256SUM)) \
169-	$(BIN_sponge_$(BUILD_PSEUDO_SPONGE)) \
170-	$(BIN_stat_$(BUILD_PSEUDO_STAT)) \
171-	$(BIN_tar_$(BUILD_PSEUDO_TAR)) \
172-	$(BIN_truncate_$(BUILD_PSEUDO_TRUNCATE)) \
173-	$(BIN_watch_$(BUILD_PSEUDO_WATCH)) \
174-	$(BIN_which_$(BUILD_PSEUDO_WHICH)) \
175-	$(BIN_whoami_$(BUILD_PSEUDO_WHOAMI)) \
176-	$(BIN_xinstall_$(BUILD_PSEUDO_XINSTALL)) \
177-	$(BIN_yes_$(BUILD_PSEUDO_YES)) \
178-	$(BIN_base64_$(BUILD_PSEUDO_BASE64)) \
179-	$(BIN_mkpasswd_$(BUILD_PSEUDO_MKPASSWD)) \
180-	$(BIN_b3sum_$(BUILD_EXTRA_B3SUM)) \
181-	$(BIN_blkid_$(BUILD_EXTRA_BLKID)) \
182-	$(BIN_lsblk_$(BUILD_EXTRA_LSBLK)) \
183-	$(BIN_fdisk_$(BUILD_EXTRA_FDISK)) \
184-	$(BIN_sync_$(BUILD_EXTRA_SYNC)) \
185-	$(BIN_yap_$(BUILD_EXTRA_YAP)) \
186-	$(BIN_diff3_$(BUILD_PSEUDO_DIFF3)) \
187-	$(BIN_ar_$(BUILD_DEV_AR)) \
188-	$(BIN_as_$(BUILD_DEV_CC)) \
189-	$(BIN_ld_$(BUILD_DEV_LD)) \
190-	$(BIN_cc_$(BUILD_DEV_CC)) \
191-	$(BIN_dmesg_$(BUILD_PSEUDO_DMESG)) \
192-	$(BIN_fallocate_$(BUILD_PSEUDO_FALLOCATE)) \
193-	$(BIN_free_$(BUILD_PSEUDO_FREE)) \
194-	$(BIN_pidof_$(BUILD_PSEUDO_PIDOF)) \
195-	$(BIN_pwdx_$(BUILD_PSEUDO_PWDX)) \
196-	$(BIN_uptime_$(BUILD_PSEUDO_UPTIME))
197+POSIX_BIN = $(POSIX_BIN_CONFIG)
198+
199+LINUX_BIN = $(LINUX_BIN_CONFIG)
200+
201+NET_BIN = $(NET_BIN_CONFIG)
202+
203+XSI_BIN = $(XSI_BIN_CONFIG)
204+
205+PSEUDO_BIN = $(PSEUDO_BIN_CONFIG) $(EXTRA_BIN_CONFIG) $(DEV_BIN_CONFIG)
206+
207 
208 OBJ = $(LIBUTFOBJ) $(LIBUTILOBJ) $(MAKEOBJ)
209 
210 all: $(LIB) $(POSIX_BIN) $(LINUX_BIN) $(NET_BIN) $(XSI_BIN) $(PSEUDO_BIN)
211 
212-include deps.mk
213+-include deps.mk
214+-include scripts/mk/rules.mk
215 
216 $(POSIX_BIN_ALL) $(LINUX_BIN_ALL) $(NET_BIN_ALL) $(XSI_BIN_ALL) $(PSEUDO_BIN_ALL): $(LIB)
217 
218@@ -694,7 +519,7 @@ $(OBJ) $(POSIX_BIN_ALL) $(LINUX_BIN_ALL) $(NET_BIN_ALL) $(XSI_BIN_ALL) $(PSEUDO_
219 	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIB) $(LDLIBS)
220 
221 cmd/posix/bc.c: cmd/posix/bc.y
222-	$(YACC) -d -o $@ $<
223+	$(YACC) -d -o $@ cmd/posix/bc.y
224 
225 cmd/posix/bc: cmd/posix/bc.c
226 	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ cmd/posix/bc.c $(LIB) $(LDLIBS)
227@@ -899,9 +724,6 @@ cmd/posix/awk/proctab.c: cmd/posix/awk/maketab
228 
229 $(AWKOBJ): cmd/posix/awk/awk.h cmd/posix/awk/awkgram.tab.h cmd/posix/awk/proto.h
230 
231-cmd/posix/awk/%.o: cmd/posix/awk/%.c
232-	$(CC) $(CPPFLAGS) -Icmd/posix/awk $(CFLAGS) -o $@ -c $<
233-
234 cmd/posix/awk/awk: $(AWKOBJ) $(LIB)
235 	$(CC) $(LDFLAGS) -o $@ $(AWKOBJ) $(LIB) $(LDLIBS) -lm
236 
237@@ -925,15 +747,9 @@ cmd/posix/sh/token.h: cmd/posix/sh/mktokens
238 
239 $(SHOBJ): $(SH_GENHDRS)
240 
241-cmd/posix/sh/%.o: cmd/posix/sh/%.c
242-	$(CC) $(CPPFLAGS) -DSHELL -Icmd/posix/sh $(CFLAGS) -o $@ -c $<
243-
244 cmd/posix/sh/sh: $(SHOBJ) $(LIB)
245 	$(CC) $(LDFLAGS) -o $@ $(SHOBJ) $(LIB) $(LDLIBS)
246 
247-cmd/extra/yap/%.o: cmd/extra/yap/%.c
248-	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
249-
250 cmd/extra/yap/yap: $(YAPOBJ) $(LIB)
251 	$(CC) $(LDFLAGS) -o $@ $(YAPOBJ) $(LIB) $(LDLIBS) -ltinfo
252 
253@@ -946,12 +762,6 @@ cmd/net/wget: cmd/net/wget.o $(LIB)
254 cmd/dev/ar/ar: cmd/dev/ar/ar.o $(LIB)
255 	$(CC) $(LDFLAGS) -o $@ cmd/dev/ar/ar.o $(LIB) $(LDLIBS)
256 
257-cmd/dev/ar/%.o: cmd/dev/ar/%.c
258-	$(CC) $(CPPFLAGS) -Icmd/dev/ar $(CFLAGS) -o $@ -c $<
259-
260-cmd/dev/xcutil/%.o: cmd/dev/xcutil/%.c
261-	$(CC) -Icmd/dev/xcutil $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
262-
263 LD_OBJ =\
264 	cmd/dev/xcutil/util.o\
265 	cmd/dev/xcutil/table.o\
266@@ -960,9 +770,6 @@ LD_OBJ =\
267 	cmd/dev/ld/ld.o\
268 	cmd/dev/ld/elfobj.o
269 
270-cmd/dev/ld/%.o: cmd/dev/ld/%.c
271-	$(CC) -Icmd/dev/xcutil -Icmd/dev/ld $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
272-
273 cmd/dev/ld/ld: $(LD_OBJ) $(LIB)
274 	$(CC) $(LDFLAGS) -o $@ $(LD_OBJ) $(LIB) $(LDLIBS)
275 
276@@ -981,9 +788,6 @@ AS_OBJ =\
277 	cmd/dev/as/arch/x64/ir_asm_x64.o\
278 	cmd/dev/as/arch/x64/parse_x64.o
279 
280-# headers shared across the assembler sources. listing them as prerequisites
281-# of every .o stops stale objects when a header changes (inst.h, parse_asm.h),
282-# which otherwise produced silently-wrong builds
283 AS_HDRS =\
284 	cmd/dev/as/parse_asm.h\
285 	cmd/dev/as/ir_asm.h\
286@@ -991,17 +795,10 @@ AS_HDRS =\
287 	cmd/dev/as/asm_code.h\
288 	cmd/dev/as/arch/x64/inst.h
289 
290-cmd/dev/as/%.o: cmd/dev/as/%.c $(AS_HDRS) cmd/dev/config.h
291-	$(CC) -Icmd/dev/xcutil -Icmd/dev/as $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
292-
293-cmd/dev/as/arch/x64/%.o: cmd/dev/as/arch/x64/%.c $(AS_HDRS) cmd/dev/config.h
294-	$(CC) -Icmd/dev/xcutil -Icmd/dev/as -Icmd/dev/as/arch/x64 $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
295-
296 cmd/dev/as/as: $(AS_OBJ) $(LIB)
297 	$(CC) $(LDFLAGS) -o $@ $(AS_OBJ) $(LIB) $(LDLIBS)
298 
299-cmd/dev/cc/driver.o: cmd/dev/cc/driver.c cmd/dev/cc/config.h
300-	$(CC) -Icmd/dev/cc $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
301+cmd/dev/cc/driver.o: cmd/dev/cc/config.h
302 
303 cmd/dev/cc/cc: cmd/dev/cc/driver.o cmd/dev/cc/util.o $(LIB) cmd/dev/cc/cc1 cmd/dev/cc/cpp cmd/dev/as/as cmd/dev/ld/ld
304 	$(CC) $(LDFLAGS) -o $@ cmd/dev/cc/driver.o cmd/dev/cc/util.o $(LIB) $(LDLIBS)
305@@ -1045,21 +842,24 @@ CPP_OBJ =\
306 	cmd/dev/cc/utf.o\
307 	cmd/dev/cc/util.o
308 
309-cmd/dev/cc/%.o: cmd/dev/cc/%.c
310-	$(CC) -Icmd/dev/cc $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
311-
312 cmd/dev/cc/cc1: $(CC1_OBJ) $(LIB)
313 	$(CC) $(LDFLAGS) -o $@ $(CC1_OBJ) $(LIB) $(LDLIBS)
314 
315 cmd/dev/cc/cpp: cmd/dev/cc/cpp.o $(CPP_OBJ) $(LIB)
316 	$(CC) $(LDFLAGS) -o $@ cmd/dev/cc/cpp.o $(CPP_OBJ) $(LIB) $(LDLIBS)
317 
318-cmd/dev/config.h cmd/dev/cc/config.h cmd/dev/version.h: cmd/dev/configure
319+cmd/dev/config.h: cmd/dev/configure
320 	sh cmd/dev/configure
321 
322+cmd/dev/cc/config.h: cmd/dev/config.h ;
323+cmd/dev/version.h: cmd/dev/config.h ;
324+
325 $(AS_OBJ) $(LD_OBJ) $(CC1_OBJ) $(CPP_OBJ) cmd/dev/ar/ar.o cmd/dev/cc/cpp.o: cmd/dev/config.h
326 
327-scripts/mk/config.mk scripts/mk/config.kv: build.cfg scripts/genconfig.sh
328+scripts/mk/config.mk: build.cfg scripts/genconfig.sh
329 	sh scripts/genconfig.sh
330 
331+scripts/mk/config.kv: scripts/mk/config.mk ;
332+scripts/mk/rules.mk: scripts/mk/config.mk ;
333+
334 Makefile: ;
+4, -3
 1@@ -498,7 +498,7 @@ nextline(void)
 2 {
 3   int   c;
 4   FILE *fp;
 5-  char *s, *lim;
 6+  char *s, *lim, d[BUFSIZ];
 7 
 8   assert(input->type == FTFILE);
 9 
10@@ -530,9 +530,10 @@ repeat:
11 
12   /* bmake style .include / .sinclude / .-include */
13   if (input->buf[0] == '.') {
14-    char  *d = input->buf + 1;
15     size_t dl;
16-    /* strip trailing whitespace/newline so strcmp works */
17+    /* copy and strip trailing whitespace/newline so strcmp works */
18+    strncpy(d, input->buf + 1, sizeof(d) - 1);
19+    d[sizeof(d) - 1] = '\0';
20     dl = strlen(d);
21     while (dl > 0 && isspace((unsigned char)d[dl - 1]))
22       d[--dl] = '\0';
+84, -6
  1@@ -54,35 +54,36 @@ done
  2 # dynamic tool discovery function
  3 list_tools() {
  4         local catg="$1" dirs="" files="" d f b
  5-        # Find all subdirectories
  6+        # find all subdirectories
  7         for d in "cmd/$catg"/*; do
  8                 if [ -d "$d" ]; then
  9                         dirs="$dirs ${d##*/}"
 10                 fi
 11         done
 12-        # Find all .c and .y files
 13+        # find all .c and .y files
 14         for f in "cmd/$catg"/*.c "cmd/$catg"/*.y; do
 15                 [ -f "$f" ] || continue
 16                 b=${f##*/}
 17                 b=${b%.c}
 18                 b=${b%.y}
 19                 case "$b" in
 20-                        # Exclude intermediate files or helper generators
 21+                        # exclude intermediate files or helper generators
 22                         maketab|mknodes|mksyntax|y.tab|*gram.tab) continue ;;
 23                 esac
 24                 files="$files $b"
 25         done
 26 
 27-        # Output sorted unique list of uppercase names
 28+        # output sorted unique list of tool names
 29         # shellcheck disable=SC2086
 30-        printf '%s %s\n' $dirs $files | tr ' ' '\n' | sort -u | tr 'a-z-' 'A-Z_' | grep -v '^$'
 31+        printf '%s %s\n' $dirs $files | tr ' ' '\n' | sort -u | grep -v '^$'
 32 }
 33 
 34 write_subtarget() {
 35         group="$1"
 36         tool="$2"
 37         u_group=$(echo "$group" | tr '[:lower:]' '[:upper:]')
 38-        var_name="BUILD_${u_group}_${tool}"
 39+        u_tool=$(echo "$tool" | tr 'a-z-' 'A-Z_')
 40+        var_name="BUILD_${u_group}_${u_tool}"
 41 
 42         eval "has_override=\${$var_name+yes}"
 43         eval "val=\${$var_name:-}"
 44@@ -106,6 +107,49 @@ for catg in posix xsi net pseudo extra linux dev; do
 45         for t in $tools; do
 46                 write_subtarget "$catg" "$t"
 47         done
 48+
 49+        # build the enabled list using lowercase tools
 50+        enabled=""
 51+        for t in $tools; do
 52+                u_group=$(echo "$catg" | tr '[:lower:]' '[:upper:]')
 53+                u_tool=$(echo "$t" | tr 'a-z-' 'A-Z_')
 54+
 55+                # special cases for dev tools mapping to different variables
 56+                if [ "$catg" = "dev" ] && [ "$u_tool" = "AS" ]; then
 57+                        var_name="BUILD_DEV_CC"
 58+                else
 59+                        var_name="BUILD_${u_group}_${u_tool}"
 60+                fi
 61+
 62+                eval "has_override=\${$var_name+yes}"
 63+                eval "val=\${$var_name:-}"
 64+                if [ "$has_override" != "yes" ]; then
 65+                        if [ "$catg" = "dev" ] && [ "$u_tool" = "AS" ]; then
 66+                                eval "val=\$BUILD_DEV"
 67+                        else
 68+                                eval "val=\$BUILD_${u_group}"
 69+                        fi
 70+                fi
 71+
 72+                if [ "$val" = "1" ]; then
 73+                        # map to the correct path
 74+                        case "$catg/$t" in
 75+                                posix/awk)  path="cmd/posix/awk/awk" ;;
 76+                                posix/sh)   path="cmd/posix/sh/sh" ;;
 77+                                posix/make) path="cmd/posix/make/make" ;;
 78+                                extra/yap)  path="cmd/extra/yap/yap" ;;
 79+                                dev/ar)     path="cmd/dev/ar/ar" ;;
 80+                                dev/as)     path="cmd/dev/as/as" ;;
 81+                                dev/ld)     path="cmd/dev/ld/ld" ;;
 82+                                dev/cc)     path="cmd/dev/cc/cc" ;;
 83+                                *)          path="cmd/$catg/$t" ;;
 84+                        esac
 85+                        enabled="$enabled $path"
 86+                fi
 87+        done
 88+        u_catg=$(echo "$catg" | tr '[:lower:]' '[:upper:]')
 89+        # write the list of enabled binaries
 90+        echo "${u_catg}_BIN_CONFIG =${enabled}" >> "${mk_file}"
 91 done
 92 
 93 # write feature flags
 94@@ -154,3 +198,37 @@ echo "CC = ${CC:-cc}" >> "${mk_file}"
 95 echo "CFLAGS = ${CFLAGS:-}" >> "${mk_file}"
 96 echo "LDFLAGS = ${LDFLAGS:-} \$(LDFLAGS_TLS)" >> "${mk_file}"
 97 echo "LDLIBS = ${LDLIBS:-} \$(LDLIBS_TLS)" >> "${mk_file}"
 98+
 99+# write compilation rules for subdirectories that need special flags or nested structures
100+rules_file="scripts/mk/rules.mk"
101+echo "# autogenerated compilation rules" > "${rules_file}"
102+
103+gen_dir_rules() {
104+        local dir="$1" flags="$2" extra_files="$3" f obj files uniq_files
105+        files=""
106+        for f in "$dir"/*.c; do
107+                if [ -f "$f" ]; then
108+                        files="$files $f"
109+                fi
110+        done
111+        for f in ${extra_files}; do
112+                files="$files $f"
113+        done
114+        uniq_files=$(echo "$files" | tr ' ' '\n' | sort -u | grep -v '^$')
115+        for f in $uniq_files; do
116+                obj="${f%.c}.o"
117+                echo "${obj}: ${f}" >> "${rules_file}"
118+                echo "	\$(CC) \$(CPPFLAGS) ${flags} \$(CFLAGS) -o \$@ -c ${f}" >> "${rules_file}"
119+        done
120+}
121+
122+echo "" >> "${rules_file}"
123+gen_dir_rules "cmd/posix/awk" "-Icmd/posix/awk" "cmd/posix/awk/awkgram.tab.c cmd/posix/awk/proctab.c"
124+gen_dir_rules "cmd/posix/sh" "-DSHELL -Icmd/posix/sh" "cmd/posix/sh/syntax.c cmd/posix/sh/nodes.c cmd/posix/sh/builtins.c"
125+gen_dir_rules "cmd/extra/yap" "" ""
126+gen_dir_rules "cmd/dev/ar" "-Icmd/dev/ar" ""
127+gen_dir_rules "cmd/dev/xcutil" "-Icmd/dev/xcutil" ""
128+gen_dir_rules "cmd/dev/ld" "-Icmd/dev/xcutil -Icmd/dev/ld" ""
129+gen_dir_rules "cmd/dev/as" "-Icmd/dev/xcutil -Icmd/dev/as" ""
130+gen_dir_rules "cmd/dev/as/arch/x64" "-Icmd/dev/xcutil -Icmd/dev/as -Icmd/dev/as/arch/x64" ""
131+gen_dir_rules "cmd/dev/cc" "-Icmd/dev/cc" ""
+0, -262
  1@@ -1,262 +0,0 @@
  2-VERSION="2026-06-08T05-53-UTC-03"
  3-PREFIX="/usr/local"
  4-MANPREFIX="/usr/local/share/man"
  5-RANLIB="ranlib"
  6-AR="ar"
  7-ARFLAGS="rc"
  8-BUILD_POSIX="1"
  9-BUILD_XSI="1"
 10-BUILD_NET="1"
 11-BUILD_PSEUDO="1"
 12-BUILD_EXTRA="1"
 13-BUILD_LINUX="1"
 14-BUILD_DEV="0"
 15-BUILD_POSIX_AWK="1"
 16-BUILD_POSIX_BASENAME="1"
 17-BUILD_POSIX_BC="1"
 18-BUILD_POSIX_CAL="1"
 19-BUILD_POSIX_CAT="1"
 20-BUILD_POSIX_CHGRP="1"
 21-BUILD_POSIX_CHMOD="1"
 22-BUILD_POSIX_CHOWN="1"
 23-BUILD_POSIX_CKSUM="1"
 24-BUILD_POSIX_CMP="1"
 25-BUILD_POSIX_COMM="1"
 26-BUILD_POSIX_CP="1"
 27-BUILD_POSIX_CUT="1"
 28-BUILD_POSIX_DATE="1"
 29-BUILD_POSIX_DD="1"
 30-BUILD_POSIX_DF="1"
 31-BUILD_POSIX_DIFF="1"
 32-BUILD_POSIX_DIRNAME="1"
 33-BUILD_POSIX_DU="1"
 34-BUILD_POSIX_ECHO="1"
 35-BUILD_POSIX_ED="1"
 36-BUILD_POSIX_ENV="1"
 37-BUILD_POSIX_EXPAND="1"
 38-BUILD_POSIX_EXPR="1"
 39-BUILD_POSIX_FALSE="1"
 40-BUILD_POSIX_FIND="1"
 41-BUILD_POSIX_FOLD="1"
 42-BUILD_POSIX_GETCONF="1"
 43-BUILD_POSIX_GREP="1"
 44-BUILD_POSIX_HEAD="1"
 45-BUILD_POSIX_ID="1"
 46-BUILD_POSIX_JOIN="1"
 47-BUILD_POSIX_KILL="1"
 48-BUILD_POSIX_LINK="1"
 49-BUILD_POSIX_LN="1"
 50-BUILD_POSIX_LOGGER="1"
 51-BUILD_POSIX_LOGNAME="1"
 52-BUILD_POSIX_LS="1"
 53-BUILD_POSIX_MAKE="1"
 54-BUILD_POSIX_MESG="1"
 55-BUILD_POSIX_MKDIR="1"
 56-BUILD_POSIX_MKFIFO="1"
 57-BUILD_POSIX_MV="1"
 58-BUILD_POSIX_NICE="1"
 59-BUILD_POSIX_NL="1"
 60-BUILD_POSIX_NOHUP="1"
 61-BUILD_POSIX_OD="1"
 62-BUILD_POSIX_PASTE="1"
 63-BUILD_POSIX_PATCH="1"
 64-BUILD_POSIX_PATHCHK="1"
 65-BUILD_POSIX_PAX="1"
 66-BUILD_POSIX_PRINTF="1"
 67-BUILD_POSIX_PS="1"
 68-BUILD_POSIX_PWD="1"
 69-BUILD_POSIX_READLINK="1"
 70-BUILD_POSIX_RENICE="1"
 71-BUILD_POSIX_RM="1"
 72-BUILD_POSIX_RMDIR="1"
 73-BUILD_POSIX_SED="1"
 74-BUILD_POSIX_SH="1"
 75-BUILD_POSIX_SLEEP="1"
 76-BUILD_POSIX_SORT="1"
 77-BUILD_POSIX_SPLIT="1"
 78-BUILD_POSIX_TAIL="1"
 79-BUILD_POSIX_TEE="1"
 80-BUILD_POSIX_TEST="1"
 81-BUILD_POSIX_TIME="1"
 82-BUILD_POSIX_TOUCH="1"
 83-BUILD_POSIX_TR="1"
 84-BUILD_POSIX_TRUE="1"
 85-BUILD_POSIX_TSORT="1"
 86-BUILD_POSIX_TTY="1"
 87-BUILD_POSIX_UNAME="1"
 88-BUILD_POSIX_UNEXPAND="1"
 89-BUILD_POSIX_UNIQ="1"
 90-BUILD_POSIX_UNLINK="1"
 91-BUILD_POSIX_UUDECODE="1"
 92-BUILD_POSIX_UUENCODE="1"
 93-BUILD_POSIX_WC="1"
 94-BUILD_POSIX_WHO="1"
 95-BUILD_POSIX_XARGS="1"
 96-BUILD_XSI_MKNOD="1"
 97-BUILD_XSI_PASSWD="1"
 98-BUILD_XSI_SU="1"
 99-BUILD_NET_HOST="1"
100-BUILD_NET_HTTPD="1"
101-BUILD_NET_IFCONFIG="1"
102-BUILD_NET_IP="1"
103-BUILD_NET_NETCAT="1"
104-BUILD_NET_PING="1"
105-BUILD_NET_SDHCP="1"
106-BUILD_NET_TFTP="1"
107-BUILD_NET_WGET="1"
108-BUILD_PSEUDO_BASE64="1"
109-BUILD_PSEUDO_CHROOT="1"
110-BUILD_PSEUDO_CLEAR="1"
111-BUILD_PSEUDO_COLS="1"
112-BUILD_PSEUDO_CRON="1"
113-BUILD_PSEUDO_DIFF3="1"
114-BUILD_PSEUDO_DMESG="1"
115-BUILD_PSEUDO_FALLOCATE="1"
116-BUILD_PSEUDO_FLOCK="1"
117-BUILD_PSEUDO_FREE="1"
118-BUILD_PSEUDO_GETTY="1"
119-BUILD_PSEUDO_HALT="1"
120-BUILD_PSEUDO_HOSTNAME="1"
121-BUILD_PSEUDO_KILLALL5="1"
122-BUILD_PSEUDO_LAST="1"
123-BUILD_PSEUDO_LASTLOG="1"
124-BUILD_PSEUDO_LOGIN="1"
125-BUILD_PSEUDO_MD5SUM="1"
126-BUILD_PSEUDO_MKPASSWD="1"
127-BUILD_PSEUDO_MKTEMP="1"
128-BUILD_PSEUDO_NOLOGIN="1"
129-BUILD_PSEUDO_PAGESIZE="1"
130-BUILD_PSEUDO_PIDOF="1"
131-BUILD_PSEUDO_PRINTENV="1"
132-BUILD_PSEUDO_PWDX="1"
133-BUILD_PSEUDO_RESPAWN="1"
134-BUILD_PSEUDO_REV="1"
135-BUILD_PSEUDO_SEQ="1"
136-BUILD_PSEUDO_SETSID="1"
137-BUILD_PSEUDO_SHA1SUM="1"
138-BUILD_PSEUDO_SHA224SUM="1"
139-BUILD_PSEUDO_SHA256SUM="1"
140-BUILD_PSEUDO_SHA384SUM="1"
141-BUILD_PSEUDO_SHA512_224SUM="1"
142-BUILD_PSEUDO_SHA512_256SUM="1"
143-BUILD_PSEUDO_SHA512SUM="1"
144-BUILD_PSEUDO_SPONGE="1"
145-BUILD_PSEUDO_STAT="1"
146-BUILD_PSEUDO_TAR="1"
147-BUILD_PSEUDO_TRUNCATE="1"
148-BUILD_PSEUDO_UPTIME="1"
149-BUILD_PSEUDO_WATCH="1"
150-BUILD_PSEUDO_WHICH="1"
151-BUILD_PSEUDO_WHOAMI="1"
152-BUILD_PSEUDO_XINSTALL="1"
153-BUILD_PSEUDO_YES="1"
154-BUILD_EXTRA_B3SUM="1"
155-BUILD_EXTRA_BLKID="1"
156-BUILD_EXTRA_FDISK="1"
157-BUILD_EXTRA_LSBLK="1"
158-BUILD_EXTRA_SYNC="1"
159-BUILD_EXTRA_YAP="1"
160-BUILD_LINUX_BLKDISCARD="1"
161-BUILD_LINUX_CHVT="1"
162-BUILD_LINUX_CTRLALTDEL="1"
163-BUILD_LINUX_DEPMOD="1"
164-BUILD_LINUX_EJECT="1"
165-BUILD_LINUX_FREERAMDISK="1"
166-BUILD_LINUX_FSFREEZE="1"
167-BUILD_LINUX_HWCLOCK="1"
168-BUILD_LINUX_INSMOD="1"
169-BUILD_LINUX_LSMOD="1"
170-BUILD_LINUX_LSUSB="1"
171-BUILD_LINUX_MKSWAP="1"
172-BUILD_LINUX_MODPROBE="1"
173-BUILD_LINUX_MOUNT="1"
174-BUILD_LINUX_MOUNTPOINT="1"
175-BUILD_LINUX_PIVOT_ROOT="1"
176-BUILD_LINUX_READAHEAD="1"
177-BUILD_LINUX_RMMOD="1"
178-BUILD_LINUX_SWAPLABEL="1"
179-BUILD_LINUX_SWAPOFF="1"
180-BUILD_LINUX_SWAPON="1"
181-BUILD_LINUX_SWITCH_ROOT="1"
182-BUILD_LINUX_SYSCTL="1"
183-BUILD_LINUX_TUNCTL="1"
184-BUILD_LINUX_UMOUNT="1"
185-BUILD_LINUX_UNSHARE="1"
186-BUILD_LINUX_VTALLOW="1"
187-BUILD_DEV_AR="0"
188-BUILD_DEV_AS="0"
189-BUILD_DEV_CC="0"
190-BUILD_DEV_LD="0"
191-BUILD_DEV_SCRATCHPAD="0"
192-BUILD_DEV_XCUTIL="0"
193-FEATURE_CAL_EXT="1"
194-FEATURE_DEPMOD_ALIAS="1"
195-FEATURE_DEPMOD_SYMBOLS="1"
196-FEATURE_DIFF3_EDSCRIPT="1"
197-FEATURE_DIFF3_MERGE="1"
198-FEATURE_DIFF_BRIEF="1"
199-FEATURE_DIFF_CONTEXT="1"
200-FEATURE_DIFF_ED="1"
201-FEATURE_DIFF_SIDEBYSIDE="1"
202-FEATURE_DIFF_UNIFIED="1"
203-FEATURE_FIND_AMIN="1"
204-FEATURE_FIND_CMIN="1"
205-FEATURE_FIND_DELETE="1"
206-FEATURE_FIND_EMPTY="1"
207-FEATURE_FIND_INAME="1"
208-FEATURE_FIND_INUM="1"
209-FEATURE_FIND_IPATH="1"
210-FEATURE_FIND_MAXDEPTH="1"
211-FEATURE_FIND_MINDEPTH="1"
212-FEATURE_FIND_MMIN="1"
213-FEATURE_FIND_PRINT0="1"
214-FEATURE_FIND_QUIT="1"
215-FEATURE_FIND_REGEX="1"
216-FEATURE_FIND_SAMEFILE="1"
217-FEATURE_GREP_CONTEXT="1"
218-FEATURE_GREP_MAX_COUNT="1"
219-FEATURE_INPROC_EXEC="0"
220-FEATURE_INPROC_EXEC_OVERRIDE="0"
221-FEATURE_IP_ADDR_FLUSH="1"
222-FEATURE_IP_LINK_SET="1"
223-FEATURE_IP_ROUTE_ADD_DEL="1"
224-FEATURE_LS_COLOR="1"
225-FEATURE_MODPROBE_BLACKLIST="1"
226-FEATURE_MODPROBE_DIR_OVERRIDE="1"
227-FEATURE_MODPROBE_SHOW_DEPENDS="1"
228-FEATURE_MODPROBE_SYSLOG="1"
229-FEATURE_OD_ENDIAN="1"
230-FEATURE_PATCH_BACKUP="1"
231-FEATURE_PATCH_FUZZ="1"
232-FEATURE_PATCH_STRIP_CR="1"
233-FEATURE_READLINK_REALPATH="1"
234-FEATURE_SED_INPLACE="1"
235-FEATURE_SED_PRESERVE_NEWLINE="1"
236-FEATURE_SH_EASTER="0"
237-FEATURE_SH_HISTEDIT="1"
238-FEATURE_SH_LET="1"
239-FEATURE_SH_LOCAL="1"
240-FEATURE_SH_SETVAR="1"
241-FEATURE_SH_ULIMIT="1"
242-FEATURE_SH_WORDEXP="1"
243-FEATURE_SORT_BIG="1"
244-FEATURE_SORT_STABLE="1"
245-FEATURE_STAT_FILESYSTEM="1"
246-FEATURE_STAT_FORMAT="1"
247-FEATURE_TAR_CREATE="1"
248-FEATURE_TAR_EXCLUDE="1"
249-FEATURE_TAR_EXCLUDE_FROM="1"
250-FEATURE_TAR_FILES_FROM="1"
251-FEATURE_TAR_KEEP_OLD="1"
252-FEATURE_TAR_NOFOLLOW="1"
253-FEATURE_TAR_STRIP_COMPONENTS="1"
254-FEATURE_TAR_TO_STDOUT="1"
255-FEATURE_TAR_TTY_SAFE="1"
256-FEATURE_UMOUNT_OPTIONS="1"
257-FEATURE_USE_BEARSSL="0"
258-FEATURE_USE_LIBRESSL="0"
259-FEATURE_USE_OPENSSL="0"
260-FEATURE_USE_SSL="1"
261-CPPFLAGS_TLS=""
262-LDFLAGS_TLS=""
263-LDLIBS_TLS=""
+0, -364
  1@@ -1,364 +0,0 @@
  2-VERSION = 2026-06-08T05-53-UTC-03
  3-PREFIX = /usr/local
  4-MANPREFIX = /usr/local/share/man
  5-RANLIB = ranlib
  6-AR = ar
  7-ARFLAGS = rc
  8-
  9-# build toggles
 10-BUILD_POSIX = 1
 11-BUILD_XSI = 1
 12-BUILD_NET = 1
 13-BUILD_PSEUDO = 1
 14-BUILD_EXTRA = 1
 15-BUILD_LINUX = 1
 16-BUILD_DEV = 0
 17-
 18-# posix subtargets
 19-BUILD_POSIX_AWK = $(BUILD_POSIX)
 20-BUILD_POSIX_BASENAME = $(BUILD_POSIX)
 21-BUILD_POSIX_BC = $(BUILD_POSIX)
 22-BUILD_POSIX_CAL = $(BUILD_POSIX)
 23-BUILD_POSIX_CAT = $(BUILD_POSIX)
 24-BUILD_POSIX_CHGRP = $(BUILD_POSIX)
 25-BUILD_POSIX_CHMOD = $(BUILD_POSIX)
 26-BUILD_POSIX_CHOWN = $(BUILD_POSIX)
 27-BUILD_POSIX_CKSUM = $(BUILD_POSIX)
 28-BUILD_POSIX_CMP = $(BUILD_POSIX)
 29-BUILD_POSIX_COMM = $(BUILD_POSIX)
 30-BUILD_POSIX_CP = $(BUILD_POSIX)
 31-BUILD_POSIX_CUT = $(BUILD_POSIX)
 32-BUILD_POSIX_DATE = $(BUILD_POSIX)
 33-BUILD_POSIX_DD = $(BUILD_POSIX)
 34-BUILD_POSIX_DF = $(BUILD_POSIX)
 35-BUILD_POSIX_DIFF = $(BUILD_POSIX)
 36-BUILD_POSIX_DIRNAME = $(BUILD_POSIX)
 37-BUILD_POSIX_DU = $(BUILD_POSIX)
 38-BUILD_POSIX_ECHO = $(BUILD_POSIX)
 39-BUILD_POSIX_ED = $(BUILD_POSIX)
 40-BUILD_POSIX_ENV = $(BUILD_POSIX)
 41-BUILD_POSIX_EXPAND = $(BUILD_POSIX)
 42-BUILD_POSIX_EXPR = $(BUILD_POSIX)
 43-BUILD_POSIX_FALSE = $(BUILD_POSIX)
 44-BUILD_POSIX_FIND = $(BUILD_POSIX)
 45-BUILD_POSIX_FOLD = $(BUILD_POSIX)
 46-BUILD_POSIX_GETCONF = $(BUILD_POSIX)
 47-BUILD_POSIX_GREP = $(BUILD_POSIX)
 48-BUILD_POSIX_HEAD = $(BUILD_POSIX)
 49-BUILD_POSIX_ID = $(BUILD_POSIX)
 50-BUILD_POSIX_JOIN = $(BUILD_POSIX)
 51-BUILD_POSIX_KILL = $(BUILD_POSIX)
 52-BUILD_POSIX_LINK = $(BUILD_POSIX)
 53-BUILD_POSIX_LN = $(BUILD_POSIX)
 54-BUILD_POSIX_LOGGER = $(BUILD_POSIX)
 55-BUILD_POSIX_LOGNAME = $(BUILD_POSIX)
 56-BUILD_POSIX_LS = $(BUILD_POSIX)
 57-BUILD_POSIX_MAKE = $(BUILD_POSIX)
 58-BUILD_POSIX_MESG = $(BUILD_POSIX)
 59-BUILD_POSIX_MKDIR = $(BUILD_POSIX)
 60-BUILD_POSIX_MKFIFO = $(BUILD_POSIX)
 61-BUILD_POSIX_MV = $(BUILD_POSIX)
 62-BUILD_POSIX_NICE = $(BUILD_POSIX)
 63-BUILD_POSIX_NL = $(BUILD_POSIX)
 64-BUILD_POSIX_NOHUP = $(BUILD_POSIX)
 65-BUILD_POSIX_OD = $(BUILD_POSIX)
 66-BUILD_POSIX_PASTE = $(BUILD_POSIX)
 67-BUILD_POSIX_PATCH = $(BUILD_POSIX)
 68-BUILD_POSIX_PATHCHK = $(BUILD_POSIX)
 69-BUILD_POSIX_PAX = $(BUILD_POSIX)
 70-BUILD_POSIX_PRINTF = $(BUILD_POSIX)
 71-BUILD_POSIX_PS = $(BUILD_POSIX)
 72-BUILD_POSIX_PWD = $(BUILD_POSIX)
 73-BUILD_POSIX_READLINK = $(BUILD_POSIX)
 74-BUILD_POSIX_RENICE = $(BUILD_POSIX)
 75-BUILD_POSIX_RM = $(BUILD_POSIX)
 76-BUILD_POSIX_RMDIR = $(BUILD_POSIX)
 77-BUILD_POSIX_SED = $(BUILD_POSIX)
 78-BUILD_POSIX_SH = $(BUILD_POSIX)
 79-BUILD_POSIX_SLEEP = $(BUILD_POSIX)
 80-BUILD_POSIX_SORT = $(BUILD_POSIX)
 81-BUILD_POSIX_SPLIT = $(BUILD_POSIX)
 82-BUILD_POSIX_TAIL = $(BUILD_POSIX)
 83-BUILD_POSIX_TEE = $(BUILD_POSIX)
 84-BUILD_POSIX_TEST = $(BUILD_POSIX)
 85-BUILD_POSIX_TIME = $(BUILD_POSIX)
 86-BUILD_POSIX_TOUCH = $(BUILD_POSIX)
 87-BUILD_POSIX_TR = $(BUILD_POSIX)
 88-BUILD_POSIX_TRUE = $(BUILD_POSIX)
 89-BUILD_POSIX_TSORT = $(BUILD_POSIX)
 90-BUILD_POSIX_TTY = $(BUILD_POSIX)
 91-BUILD_POSIX_UNAME = $(BUILD_POSIX)
 92-BUILD_POSIX_UNEXPAND = $(BUILD_POSIX)
 93-BUILD_POSIX_UNIQ = $(BUILD_POSIX)
 94-BUILD_POSIX_UNLINK = $(BUILD_POSIX)
 95-BUILD_POSIX_UUDECODE = $(BUILD_POSIX)
 96-BUILD_POSIX_UUENCODE = $(BUILD_POSIX)
 97-BUILD_POSIX_WC = $(BUILD_POSIX)
 98-BUILD_POSIX_WHO = $(BUILD_POSIX)
 99-BUILD_POSIX_XARGS = $(BUILD_POSIX)
100-
101-# xsi subtargets
102-BUILD_XSI_MKNOD = $(BUILD_XSI)
103-BUILD_XSI_PASSWD = $(BUILD_XSI)
104-BUILD_XSI_SU = $(BUILD_XSI)
105-
106-# net subtargets
107-BUILD_NET_HOST = $(BUILD_NET)
108-BUILD_NET_HTTPD = $(BUILD_NET)
109-BUILD_NET_IFCONFIG = $(BUILD_NET)
110-BUILD_NET_IP = $(BUILD_NET)
111-BUILD_NET_NETCAT = $(BUILD_NET)
112-BUILD_NET_PING = $(BUILD_NET)
113-BUILD_NET_SDHCP = $(BUILD_NET)
114-BUILD_NET_TFTP = $(BUILD_NET)
115-BUILD_NET_WGET = $(BUILD_NET)
116-
117-# pseudo subtargets
118-BUILD_PSEUDO_BASE64 = $(BUILD_PSEUDO)
119-BUILD_PSEUDO_CHROOT = $(BUILD_PSEUDO)
120-BUILD_PSEUDO_CLEAR = $(BUILD_PSEUDO)
121-BUILD_PSEUDO_COLS = $(BUILD_PSEUDO)
122-BUILD_PSEUDO_CRON = $(BUILD_PSEUDO)
123-BUILD_PSEUDO_DIFF3 = $(BUILD_PSEUDO)
124-BUILD_PSEUDO_DMESG = $(BUILD_PSEUDO)
125-BUILD_PSEUDO_FALLOCATE = $(BUILD_PSEUDO)
126-BUILD_PSEUDO_FLOCK = $(BUILD_PSEUDO)
127-BUILD_PSEUDO_FREE = $(BUILD_PSEUDO)
128-BUILD_PSEUDO_GETTY = $(BUILD_PSEUDO)
129-BUILD_PSEUDO_HALT = $(BUILD_PSEUDO)
130-BUILD_PSEUDO_HOSTNAME = $(BUILD_PSEUDO)
131-BUILD_PSEUDO_KILLALL5 = $(BUILD_PSEUDO)
132-BUILD_PSEUDO_LAST = $(BUILD_PSEUDO)
133-BUILD_PSEUDO_LASTLOG = $(BUILD_PSEUDO)
134-BUILD_PSEUDO_LOGIN = $(BUILD_PSEUDO)
135-BUILD_PSEUDO_MD5SUM = $(BUILD_PSEUDO)
136-BUILD_PSEUDO_MKPASSWD = $(BUILD_PSEUDO)
137-BUILD_PSEUDO_MKTEMP = $(BUILD_PSEUDO)
138-BUILD_PSEUDO_NOLOGIN = $(BUILD_PSEUDO)
139-BUILD_PSEUDO_PAGESIZE = $(BUILD_PSEUDO)
140-BUILD_PSEUDO_PIDOF = $(BUILD_PSEUDO)
141-BUILD_PSEUDO_PRINTENV = $(BUILD_PSEUDO)
142-BUILD_PSEUDO_PWDX = $(BUILD_PSEUDO)
143-BUILD_PSEUDO_RESPAWN = $(BUILD_PSEUDO)
144-BUILD_PSEUDO_REV = $(BUILD_PSEUDO)
145-BUILD_PSEUDO_SEQ = $(BUILD_PSEUDO)
146-BUILD_PSEUDO_SETSID = $(BUILD_PSEUDO)
147-BUILD_PSEUDO_SHA1SUM = $(BUILD_PSEUDO)
148-BUILD_PSEUDO_SHA224SUM = $(BUILD_PSEUDO)
149-BUILD_PSEUDO_SHA256SUM = $(BUILD_PSEUDO)
150-BUILD_PSEUDO_SHA384SUM = $(BUILD_PSEUDO)
151-BUILD_PSEUDO_SHA512_224SUM = $(BUILD_PSEUDO)
152-BUILD_PSEUDO_SHA512_256SUM = $(BUILD_PSEUDO)
153-BUILD_PSEUDO_SHA512SUM = $(BUILD_PSEUDO)
154-BUILD_PSEUDO_SPONGE = $(BUILD_PSEUDO)
155-BUILD_PSEUDO_STAT = $(BUILD_PSEUDO)
156-BUILD_PSEUDO_TAR = $(BUILD_PSEUDO)
157-BUILD_PSEUDO_TRUNCATE = $(BUILD_PSEUDO)
158-BUILD_PSEUDO_UPTIME = $(BUILD_PSEUDO)
159-BUILD_PSEUDO_WATCH = $(BUILD_PSEUDO)
160-BUILD_PSEUDO_WHICH = $(BUILD_PSEUDO)
161-BUILD_PSEUDO_WHOAMI = $(BUILD_PSEUDO)
162-BUILD_PSEUDO_XINSTALL = $(BUILD_PSEUDO)
163-BUILD_PSEUDO_YES = $(BUILD_PSEUDO)
164-
165-# extra subtargets
166-BUILD_EXTRA_B3SUM = $(BUILD_EXTRA)
167-BUILD_EXTRA_BLKID = $(BUILD_EXTRA)
168-BUILD_EXTRA_FDISK = $(BUILD_EXTRA)
169-BUILD_EXTRA_LSBLK = $(BUILD_EXTRA)
170-BUILD_EXTRA_SYNC = $(BUILD_EXTRA)
171-BUILD_EXTRA_YAP = $(BUILD_EXTRA)
172-
173-# linux subtargets
174-BUILD_LINUX_BLKDISCARD = $(BUILD_LINUX)
175-BUILD_LINUX_CHVT = $(BUILD_LINUX)
176-BUILD_LINUX_CTRLALTDEL = $(BUILD_LINUX)
177-BUILD_LINUX_DEPMOD = $(BUILD_LINUX)
178-BUILD_LINUX_EJECT = $(BUILD_LINUX)
179-BUILD_LINUX_FREERAMDISK = $(BUILD_LINUX)
180-BUILD_LINUX_FSFREEZE = $(BUILD_LINUX)
181-BUILD_LINUX_HWCLOCK = $(BUILD_LINUX)
182-BUILD_LINUX_INSMOD = $(BUILD_LINUX)
183-BUILD_LINUX_LSMOD = $(BUILD_LINUX)
184-BUILD_LINUX_LSUSB = $(BUILD_LINUX)
185-BUILD_LINUX_MKSWAP = $(BUILD_LINUX)
186-BUILD_LINUX_MODPROBE = $(BUILD_LINUX)
187-BUILD_LINUX_MOUNT = $(BUILD_LINUX)
188-BUILD_LINUX_MOUNTPOINT = $(BUILD_LINUX)
189-BUILD_LINUX_PIVOT_ROOT = $(BUILD_LINUX)
190-BUILD_LINUX_READAHEAD = $(BUILD_LINUX)
191-BUILD_LINUX_RMMOD = $(BUILD_LINUX)
192-BUILD_LINUX_SWAPLABEL = $(BUILD_LINUX)
193-BUILD_LINUX_SWAPOFF = $(BUILD_LINUX)
194-BUILD_LINUX_SWAPON = $(BUILD_LINUX)
195-BUILD_LINUX_SWITCH_ROOT = $(BUILD_LINUX)
196-BUILD_LINUX_SYSCTL = $(BUILD_LINUX)
197-BUILD_LINUX_TUNCTL = $(BUILD_LINUX)
198-BUILD_LINUX_UMOUNT = $(BUILD_LINUX)
199-BUILD_LINUX_UNSHARE = $(BUILD_LINUX)
200-BUILD_LINUX_VTALLOW = $(BUILD_LINUX)
201-
202-# dev subtargets
203-BUILD_DEV_AR = $(BUILD_DEV)
204-BUILD_DEV_AS = $(BUILD_DEV)
205-BUILD_DEV_CC = $(BUILD_DEV)
206-BUILD_DEV_LD = $(BUILD_DEV)
207-BUILD_DEV_SCRATCHPAD = $(BUILD_DEV)
208-BUILD_DEV_XCUTIL = $(BUILD_DEV)
209-
210-# feature flags
211-FEATURE_CAL_EXT = 1
212-FEATURE_DEPMOD_ALIAS = 1
213-FEATURE_DEPMOD_SYMBOLS = 1
214-FEATURE_DIFF3_EDSCRIPT = 1
215-FEATURE_DIFF3_MERGE = 1
216-FEATURE_DIFF_BRIEF = 1
217-FEATURE_DIFF_CONTEXT = 1
218-FEATURE_DIFF_ED = 1
219-FEATURE_DIFF_SIDEBYSIDE = 1
220-FEATURE_DIFF_UNIFIED = 1
221-FEATURE_FIND_AMIN = 1
222-FEATURE_FIND_CMIN = 1
223-FEATURE_FIND_DELETE = 1
224-FEATURE_FIND_EMPTY = 1
225-FEATURE_FIND_INAME = 1
226-FEATURE_FIND_INUM = 1
227-FEATURE_FIND_IPATH = 1
228-FEATURE_FIND_MAXDEPTH = 1
229-FEATURE_FIND_MINDEPTH = 1
230-FEATURE_FIND_MMIN = 1
231-FEATURE_FIND_PRINT0 = 1
232-FEATURE_FIND_QUIT = 1
233-FEATURE_FIND_REGEX = 1
234-FEATURE_FIND_SAMEFILE = 1
235-FEATURE_GREP_CONTEXT = 1
236-FEATURE_GREP_MAX_COUNT = 1
237-FEATURE_INPROC_EXEC = 0
238-FEATURE_INPROC_EXEC_OVERRIDE = 0
239-FEATURE_IP_ADDR_FLUSH = 1
240-FEATURE_IP_LINK_SET = 1
241-FEATURE_IP_ROUTE_ADD_DEL = 1
242-FEATURE_LS_COLOR = 1
243-FEATURE_MODPROBE_BLACKLIST = 1
244-FEATURE_MODPROBE_DIR_OVERRIDE = 1
245-FEATURE_MODPROBE_SHOW_DEPENDS = 1
246-FEATURE_MODPROBE_SYSLOG = 1
247-FEATURE_OD_ENDIAN = 1
248-FEATURE_PATCH_BACKUP = 1
249-FEATURE_PATCH_FUZZ = 1
250-FEATURE_PATCH_STRIP_CR = 1
251-FEATURE_READLINK_REALPATH = 1
252-FEATURE_SED_INPLACE = 1
253-FEATURE_SED_PRESERVE_NEWLINE = 1
254-FEATURE_SH_EASTER = 0
255-FEATURE_SH_HISTEDIT = 1
256-FEATURE_SH_LET = 1
257-FEATURE_SH_LOCAL = 1
258-FEATURE_SH_SETVAR = 1
259-FEATURE_SH_ULIMIT = 1
260-FEATURE_SH_WORDEXP = 1
261-FEATURE_SORT_BIG = 1
262-FEATURE_SORT_STABLE = 1
263-FEATURE_STAT_FILESYSTEM = 1
264-FEATURE_STAT_FORMAT = 1
265-FEATURE_TAR_CREATE = 1
266-FEATURE_TAR_EXCLUDE = 1
267-FEATURE_TAR_EXCLUDE_FROM = 1
268-FEATURE_TAR_FILES_FROM = 1
269-FEATURE_TAR_KEEP_OLD = 1
270-FEATURE_TAR_NOFOLLOW = 1
271-FEATURE_TAR_STRIP_COMPONENTS = 1
272-FEATURE_TAR_TO_STDOUT = 1
273-FEATURE_TAR_TTY_SAFE = 1
274-FEATURE_UMOUNT_OPTIONS = 1
275-FEATURE_USE_BEARSSL = 0
276-FEATURE_USE_LIBRESSL = 0
277-FEATURE_USE_OPENSSL = 0
278-FEATURE_USE_SSL = 1
279-
280-CPPFLAGS_TLS = 
281-LDFLAGS_TLS = 
282-LDLIBS_TLS = 
283-
284-CPPFLAGS =\
285-        -Ishared\
286-        -DPREFIX=\"\$(PREFIX)\"\
287-        -D_DEFAULT_SOURCE\
288-        -D_GNU_SOURCE\
289-        -D_NETBSD_SOURCE\
290-        -D_BSD_SOURCE\
291-        -D_XOPEN_SOURCE=700\
292-        -D_FILE_OFFSET_BITS=64\
293-        -DFEATURE_CAL_EXT=$(FEATURE_CAL_EXT)\
294-        -DFEATURE_DEPMOD_ALIAS=$(FEATURE_DEPMOD_ALIAS)\
295-        -DFEATURE_DEPMOD_SYMBOLS=$(FEATURE_DEPMOD_SYMBOLS)\
296-        -DFEATURE_DIFF3_EDSCRIPT=$(FEATURE_DIFF3_EDSCRIPT)\
297-        -DFEATURE_DIFF3_MERGE=$(FEATURE_DIFF3_MERGE)\
298-        -DFEATURE_DIFF_BRIEF=$(FEATURE_DIFF_BRIEF)\
299-        -DFEATURE_DIFF_CONTEXT=$(FEATURE_DIFF_CONTEXT)\
300-        -DFEATURE_DIFF_ED=$(FEATURE_DIFF_ED)\
301-        -DFEATURE_DIFF_SIDEBYSIDE=$(FEATURE_DIFF_SIDEBYSIDE)\
302-        -DFEATURE_DIFF_UNIFIED=$(FEATURE_DIFF_UNIFIED)\
303-        -DFEATURE_FIND_AMIN=$(FEATURE_FIND_AMIN)\
304-        -DFEATURE_FIND_CMIN=$(FEATURE_FIND_CMIN)\
305-        -DFEATURE_FIND_DELETE=$(FEATURE_FIND_DELETE)\
306-        -DFEATURE_FIND_EMPTY=$(FEATURE_FIND_EMPTY)\
307-        -DFEATURE_FIND_INAME=$(FEATURE_FIND_INAME)\
308-        -DFEATURE_FIND_INUM=$(FEATURE_FIND_INUM)\
309-        -DFEATURE_FIND_IPATH=$(FEATURE_FIND_IPATH)\
310-        -DFEATURE_FIND_MAXDEPTH=$(FEATURE_FIND_MAXDEPTH)\
311-        -DFEATURE_FIND_MINDEPTH=$(FEATURE_FIND_MINDEPTH)\
312-        -DFEATURE_FIND_MMIN=$(FEATURE_FIND_MMIN)\
313-        -DFEATURE_FIND_PRINT0=$(FEATURE_FIND_PRINT0)\
314-        -DFEATURE_FIND_QUIT=$(FEATURE_FIND_QUIT)\
315-        -DFEATURE_FIND_REGEX=$(FEATURE_FIND_REGEX)\
316-        -DFEATURE_FIND_SAMEFILE=$(FEATURE_FIND_SAMEFILE)\
317-        -DFEATURE_GREP_CONTEXT=$(FEATURE_GREP_CONTEXT)\
318-        -DFEATURE_GREP_MAX_COUNT=$(FEATURE_GREP_MAX_COUNT)\
319-        -DFEATURE_INPROC_EXEC=$(FEATURE_INPROC_EXEC)\
320-        -DFEATURE_INPROC_EXEC_OVERRIDE=$(FEATURE_INPROC_EXEC_OVERRIDE)\
321-        -DFEATURE_IP_ADDR_FLUSH=$(FEATURE_IP_ADDR_FLUSH)\
322-        -DFEATURE_IP_LINK_SET=$(FEATURE_IP_LINK_SET)\
323-        -DFEATURE_IP_ROUTE_ADD_DEL=$(FEATURE_IP_ROUTE_ADD_DEL)\
324-        -DFEATURE_LS_COLOR=$(FEATURE_LS_COLOR)\
325-        -DFEATURE_MODPROBE_BLACKLIST=$(FEATURE_MODPROBE_BLACKLIST)\
326-        -DFEATURE_MODPROBE_DIR_OVERRIDE=$(FEATURE_MODPROBE_DIR_OVERRIDE)\
327-        -DFEATURE_MODPROBE_SHOW_DEPENDS=$(FEATURE_MODPROBE_SHOW_DEPENDS)\
328-        -DFEATURE_MODPROBE_SYSLOG=$(FEATURE_MODPROBE_SYSLOG)\
329-        -DFEATURE_OD_ENDIAN=$(FEATURE_OD_ENDIAN)\
330-        -DFEATURE_PATCH_BACKUP=$(FEATURE_PATCH_BACKUP)\
331-        -DFEATURE_PATCH_FUZZ=$(FEATURE_PATCH_FUZZ)\
332-        -DFEATURE_PATCH_STRIP_CR=$(FEATURE_PATCH_STRIP_CR)\
333-        -DFEATURE_READLINK_REALPATH=$(FEATURE_READLINK_REALPATH)\
334-        -DFEATURE_SED_INPLACE=$(FEATURE_SED_INPLACE)\
335-        -DFEATURE_SED_PRESERVE_NEWLINE=$(FEATURE_SED_PRESERVE_NEWLINE)\
336-        -DFEATURE_SH_EASTER=$(FEATURE_SH_EASTER)\
337-        -DFEATURE_SH_HISTEDIT=$(FEATURE_SH_HISTEDIT)\
338-        -DFEATURE_SH_LET=$(FEATURE_SH_LET)\
339-        -DFEATURE_SH_LOCAL=$(FEATURE_SH_LOCAL)\
340-        -DFEATURE_SH_SETVAR=$(FEATURE_SH_SETVAR)\
341-        -DFEATURE_SH_ULIMIT=$(FEATURE_SH_ULIMIT)\
342-        -DFEATURE_SH_WORDEXP=$(FEATURE_SH_WORDEXP)\
343-        -DFEATURE_SORT_BIG=$(FEATURE_SORT_BIG)\
344-        -DFEATURE_SORT_STABLE=$(FEATURE_SORT_STABLE)\
345-        -DFEATURE_STAT_FILESYSTEM=$(FEATURE_STAT_FILESYSTEM)\
346-        -DFEATURE_STAT_FORMAT=$(FEATURE_STAT_FORMAT)\
347-        -DFEATURE_TAR_CREATE=$(FEATURE_TAR_CREATE)\
348-        -DFEATURE_TAR_EXCLUDE=$(FEATURE_TAR_EXCLUDE)\
349-        -DFEATURE_TAR_EXCLUDE_FROM=$(FEATURE_TAR_EXCLUDE_FROM)\
350-        -DFEATURE_TAR_FILES_FROM=$(FEATURE_TAR_FILES_FROM)\
351-        -DFEATURE_TAR_KEEP_OLD=$(FEATURE_TAR_KEEP_OLD)\
352-        -DFEATURE_TAR_NOFOLLOW=$(FEATURE_TAR_NOFOLLOW)\
353-        -DFEATURE_TAR_STRIP_COMPONENTS=$(FEATURE_TAR_STRIP_COMPONENTS)\
354-        -DFEATURE_TAR_TO_STDOUT=$(FEATURE_TAR_TO_STDOUT)\
355-        -DFEATURE_TAR_TTY_SAFE=$(FEATURE_TAR_TTY_SAFE)\
356-        -DFEATURE_UMOUNT_OPTIONS=$(FEATURE_UMOUNT_OPTIONS)\
357-        -DFEATURE_USE_BEARSSL=$(FEATURE_USE_BEARSSL)\
358-        -DFEATURE_USE_LIBRESSL=$(FEATURE_USE_LIBRESSL)\
359-        -DFEATURE_USE_OPENSSL=$(FEATURE_USE_OPENSSL)\
360-        $(CPPFLAGS_TLS)
361-
362-CC = cc
363-CFLAGS = -std=c99 -Wall -Wextra -pedantic
364-LDFLAGS =  $(LDFLAGS_TLS)
365-LDLIBS = -lcrypt -lresolv $(LDLIBS_TLS)