From 0224cfd5e5c8157e5bc74a81027fa508687abfbf Mon Sep 17 00:00:00 2001
From: Ron Yorston <rmy@pobox.com>
Date: Mon, 27 May 2024 14:05:45 +0100
Subject: make: improved support for POSIX levels

The default POSIX level to be enforced in strict mode is now a
configuration option.

Print details of supported POSIX levels in the usage message.

Adds 56-64 bytes.
---
 configs/mingw32_defconfig  |  4 +++-
 configs/mingw64_defconfig  |  4 +++-
 configs/mingw64a_defconfig |  4 +++-
 configs/mingw64u_defconfig |  4 +++-
 miscutils/make.c           | 26 +++++++++++++++++++++++++-
 5 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/configs/mingw32_defconfig b/configs/mingw32_defconfig
index eca0dc7fc..c9343d577 100644
--- a/configs/mingw32_defconfig
+++ b/configs/mingw32_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Busybox version: 1.37.0.git
-# Sun Feb 11 11:01:45 2024
+# Mon May 27 13:59:40 2024
 #
 CONFIG_HAVE_DOT_CONFIG=y
 # CONFIG_PLATFORM_POSIX is not set
@@ -852,6 +852,8 @@ CONFIG_FEATURE_LESS_ENV=y
 CONFIG_MAKE=y
 CONFIG_PDPMAKE=y
 CONFIG_FEATURE_MAKE_POSIX=y
+CONFIG_FEATURE_MAKE_POSIX_2017=y
+# CONFIG_FEATURE_MAKE_POSIX_202X is not set
 # CONFIG_MAKEDEVS is not set
 # CONFIG_FEATURE_MAKEDEVS_LEAF is not set
 # CONFIG_FEATURE_MAKEDEVS_TABLE is not set
diff --git a/configs/mingw64_defconfig b/configs/mingw64_defconfig
index d71d2abf9..0bd7d7a81 100644
--- a/configs/mingw64_defconfig
+++ b/configs/mingw64_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Busybox version: 1.37.0.git
-# Sun Feb 11 11:01:45 2024
+# Mon May 27 13:59:40 2024
 #
 CONFIG_HAVE_DOT_CONFIG=y
 # CONFIG_PLATFORM_POSIX is not set
@@ -852,6 +852,8 @@ CONFIG_FEATURE_LESS_ENV=y
 CONFIG_MAKE=y
 CONFIG_PDPMAKE=y
 CONFIG_FEATURE_MAKE_POSIX=y
+CONFIG_FEATURE_MAKE_POSIX_2017=y
+# CONFIG_FEATURE_MAKE_POSIX_202X is not set
 # CONFIG_MAKEDEVS is not set
 # CONFIG_FEATURE_MAKEDEVS_LEAF is not set
 # CONFIG_FEATURE_MAKEDEVS_TABLE is not set
diff --git a/configs/mingw64a_defconfig b/configs/mingw64a_defconfig
index 4d554ec75..32f8a02b2 100644
--- a/configs/mingw64a_defconfig
+++ b/configs/mingw64a_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Busybox version: 1.37.0.git
-# Sun Feb 11 11:01:45 2024
+# Mon May 27 13:59:40 2024
 #
 CONFIG_HAVE_DOT_CONFIG=y
 # CONFIG_PLATFORM_POSIX is not set
@@ -852,6 +852,8 @@ CONFIG_FEATURE_LESS_ENV=y
 CONFIG_MAKE=y
 CONFIG_PDPMAKE=y
 CONFIG_FEATURE_MAKE_POSIX=y
+CONFIG_FEATURE_MAKE_POSIX_2017=y
+# CONFIG_FEATURE_MAKE_POSIX_202X is not set
 # CONFIG_MAKEDEVS is not set
 # CONFIG_FEATURE_MAKEDEVS_LEAF is not set
 # CONFIG_FEATURE_MAKEDEVS_TABLE is not set
diff --git a/configs/mingw64u_defconfig b/configs/mingw64u_defconfig
index 977c6966d..f31e1e82f 100644
--- a/configs/mingw64u_defconfig
+++ b/configs/mingw64u_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Busybox version: 1.37.0.git
-# Sun Feb 11 11:01:45 2024
+# Mon May 27 13:59:40 2024
 #
 CONFIG_HAVE_DOT_CONFIG=y
 # CONFIG_PLATFORM_POSIX is not set
@@ -852,6 +852,8 @@ CONFIG_FEATURE_LESS_ENV=y
 CONFIG_MAKE=y
 CONFIG_PDPMAKE=y
 CONFIG_FEATURE_MAKE_POSIX=y
+CONFIG_FEATURE_MAKE_POSIX_2017=y
+# CONFIG_FEATURE_MAKE_POSIX_202X is not set
 # CONFIG_MAKEDEVS is not set
 # CONFIG_FEATURE_MAKEDEVS_LEAF is not set
 # CONFIG_FEATURE_MAKEDEVS_TABLE is not set
diff --git a/miscutils/make.c b/miscutils/make.c
index 45cdac400..056cb2909 100644
--- a/miscutils/make.c
+++ b/miscutils/make.c
@@ -29,6 +29,19 @@
 //config:	- PDPMAKE_POSIXLY_CORRECT environment variable
 //config:	Enable this if you want to check whether your makefiles are
 //config:	POSIX compliant.  This adds about 1.7 kb.
+//config:
+//config:choice
+//config:	prompt "Default POSIX level to enforce"
+//config:	depends on FEATURE_MAKE_POSIX
+//config:	default FEATURE_MAKE_POSIX_2017
+//config:
+//config:config FEATURE_MAKE_POSIX_2017
+//config:	bool "2017"
+//config:
+//config:config FEATURE_MAKE_POSIX_202X
+//config:	bool "202X"
+//config:
+//config:endchoice
 
 //applet:IF_MAKE(APPLET(make, BB_DIR_USR_BIN, BB_SUID_DROP))
 //applet:IF_PDPMAKE(APPLET_ODDNAME(pdpmake, make, BB_DIR_USR_BIN, BB_SUID_DROP, make))
@@ -64,6 +77,15 @@
 //usage:     "\n    -s       Make silently"
 //usage:     "\n    -S       Stop on error"
 //usage:     "\n    -t       Touch files instead of making them"
+//usage:	IF_FEATURE_MAKE_POSIX(
+//usage:     "\n\nThis build supports: non-POSIX extensions, POSIX 202X, POSIX 2017"
+//usage:	)
+//usage:	IF_FEATURE_MAKE_POSIX_2017(
+//usage:     "\nIn strict POSIX mode the 2017 standard is enforced by default"
+//usage:	)
+//usage:	IF_FEATURE_MAKE_POSIX_202X(
+//usage:     "\nIn strict POSIX mode the 202X standard is enforced by default"
+//usage:	)
 
 #include "libbb.h"
 #include "bb_archive.h"
@@ -76,8 +98,10 @@
 
 #define POSIX_2017 (posix && posix_level == STD_POSIX_2017)
 
-#ifndef DEFAULT_POSIX_LEVEL
+#if ENABLE_FEATURE_MAKE_POSIX_2017
 # define DEFAULT_POSIX_LEVEL STD_POSIX_2017
+#else
+# define DEFAULT_POSIX_LEVEL STD_POSIX_202X
 #endif
 
 #define OPTSTR1 "eij:+knqrsSt"
-- 
cgit v1.2.3-55-g6feb