summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Config.kmk3
-rw-r--r--SlickEdit/kdev.e39
-rw-r--r--kBuild/footer-inherit-uses-tools.kmk4
-rwxr-xr-xkBuild/retry-10-delay-500ms.sh49
-rw-r--r--kBuild/sdks/MACOSX110.kmk5
-rw-r--r--kBuild/sdks/MACOSX120.kmk66
-rw-r--r--kBuild/sdks/MACOSX120INCS.kmk49
-rw-r--r--kBuild/sdks/MACOSX123.kmk62
-rw-r--r--kBuild/sdks/MACOSX123INCS.kmk49
-rw-r--r--kBuild/sdks/MACOSX130.kmk66
-rw-r--r--kBuild/sdks/MACOSX130INCS.kmk49
-rw-r--r--kBuild/sdks/MACOSX133.kmk63
-rw-r--r--kBuild/sdks/MACOSX133INCS.kmk49
-rw-r--r--kBuild/sdks/MACOSX140.kmk66
-rw-r--r--kBuild/sdks/MACOSX140INCS.kmk49
-rw-r--r--kBuild/sdks/MACOSX150.kmk66
-rw-r--r--kBuild/sdks/MACOSX150INCS.kmk49
-rw-r--r--kBuild/sdks/WINSDK10-UCRTD-STATIC.kmk56
-rw-r--r--kBuild/sdks/WINSDK10-UCRTD.kmk56
-rw-r--r--kBuild/tools/VCC140.kmk7
-rw-r--r--kBuild/tools/VCC140AMD64.kmk9
-rw-r--r--kBuild/tools/VCC140X86.kmk9
-rw-r--r--kBuild/tools/VCC141.kmk7
-rw-r--r--kBuild/tools/VCC141AMD64.kmk9
-rw-r--r--kBuild/tools/VCC141X86.kmk9
-rw-r--r--kBuild/tools/VCC142.kmk7
-rw-r--r--kBuild/tools/VCC142AMD64.kmk9
-rw-r--r--kBuild/tools/VCC142X86.kmk9
-rw-r--r--kBuild/units/qt6.kmk5
-rw-r--r--kBuild/win-common.kmk6
-rw-r--r--src/kash/expand.c15
-rw-r--r--src/kmk/config.h.linux21
-rw-r--r--src/lib/nt/ntopenat.c3
33 files changed, 963 insertions, 57 deletions
diff --git a/Config.kmk b/Config.kmk
index ab77c35..437a4a6 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -1,4 +1,4 @@
-# $Id: Config.kmk 3572 2022-10-24 08:36:35Z bird $
+# $Id: Config.kmk 3600 2023-10-19 14:26:27Z bird $
## @file
# Build Configuration.
#
@@ -145,6 +145,7 @@ DEFS.win += KBUILD_OS_WINDOWS
DEFS.x86 += KBUILD_ARCH_X86
DEFS.amd64 += KBUILD_ARCH_AMD64
+DEFS.arm64 += KBUILD_ARCH_ARM64
#
diff --git a/SlickEdit/kdev.e b/SlickEdit/kdev.e
index 59e497e..8049cbc 100644
--- a/SlickEdit/kdev.e
+++ b/SlickEdit/kdev.e
@@ -1,4 +1,4 @@
-/* $Id: kdev.e 3589 2023-02-20 10:07:39Z bird $ -*- tab-width: 4 c-indent-level: 4 -*- */
+/* $Id: kdev.e 3604 2024-02-04 23:19:33Z bird $ -*- tab-width: 4 c-indent-level: 4 -*- */
/** @file
* Visual SlickEdit Documentation Macros.
*/
@@ -73,6 +73,7 @@ def 'C-S-P' = k_mark_modified_line
def 'C-S-S' = k_box_structs
def 'C-S-T' = k_rebuild_tagfile
def 'C-S-L' = k_style_load
+def 'C-S-\' = k_newline_escape_selection
//optional stuff
//def 'C-S-Q' = klib_klog_file_ask
@@ -1686,6 +1687,42 @@ void k_noref()
_insert_text(sNoRefs);
}
+/* Adds newline escape slashes to the current selection. */
+void k_newline_escape_selection()
+{
+ filter_init();
+ typeless rc = filter_get_string(sLine);
+ if (rc == 0)
+ {
+ _str sPrev = '';
+ do
+ {
+ /* */
+ if (sLine != '')
+ sLine = sLine ' \';
+ else
+ {
+ int offNonWhitespace = pos("[^ \t]", sPrev, 1, 'L');
+ if (offNonWhitespace > 0)
+ sLine = _pad(sLine, offNonWhitespace - 1, ' ');
+ sLine = sLine '\';
+ }
+
+ filter_put_string(sLine);
+
+ /* next line */
+ sPrev = sLine;
+ rc = filter_get_string(sLine);
+ } while (rc == 0);
+
+ }
+ else if (isinteger(rc))
+ message(get_message(rc));
+ else
+ message(rc);
+}
+
+
/*******************************************************************************
* kLIB Logging *
*******************************************************************************/
diff --git a/kBuild/footer-inherit-uses-tools.kmk b/kBuild/footer-inherit-uses-tools.kmk
index 85d2512..bada7f7 100644
--- a/kBuild/footer-inherit-uses-tools.kmk
+++ b/kBuild/footer-inherit-uses-tools.kmk
@@ -1,4 +1,4 @@
-# $Id: footer-inherit-uses-tools.kmk 3121 2017-10-31 10:58:59Z bird $
+# $Id: footer-inherit-uses-tools.kmk 3594 2023-06-01 21:07:11Z bird $
## @file
# kBuild - Footer - Target lists - Pass 2 - Template & Target Inheritance, Uses and Tools.
#
@@ -574,7 +574,7 @@ define def_templates_load_function
ifndef TEMPLATE_$(loading)
TEMPLATE_$(loading)_KMK_FILE := $(firstword $(foreach path, $(KBUILD_TEMPLATE_PATHS) $(KBUILD_PATH)/templates $(KBUILD_DEFAULT_PATHS), $(wildcard $(path)/$(loading).kmk)))
ifeq ($(TEMPLATE_$(loading)_KMK_FILE),)
- $(error kBuild: Cannot find include file for the template '$(loading)'! Searched: $(KBUILD_TEMPLATE_PATHS) $(KBUILD_PATH)/templates $(KBUILD_DEFAULT_PATHS))
+ $(error kBuild: Cannot find include file for the template '$(loading)'! Searched: $(KBUILD_TEMPLATE_PATHS) $(KBUILD_PATH)/templates $(KBUILD_DEFAULT_PATHS) Used by target(s): $(strip $(foreach target, $(_ALL_TARGETS),$(if-expr "$($(target)_TEMPLATE)" == "$(loading)",$(target) (in $(where $(target)_TEMPLATE)),))))
endif
include $(TEMPLATE_$(loading)_KMK_FILE)
ifndef TEMPLATE_$(loading)
diff --git a/kBuild/retry-10-delay-500ms.sh b/kBuild/retry-10-delay-500ms.sh
new file mode 100755
index 0000000..05c75d5
--- /dev/null
+++ b/kBuild/retry-10-delay-500ms.sh
@@ -0,0 +1,49 @@
+#!/usr/bin/env kmk_ash
+# $Id: retry-10-delay-500ms.sh 3597 2023-06-16 20:56:17Z bird $
+## @file
+# kBuild Helper Script - Retry execution of command 10 times with 0.5 seconds delay.
+#
+
+#
+# Copyright (c) 2023 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+# First try...
+"$@" && exit 0
+MY_EXITCODE=$?
+
+# Retry up to five times with a little delay between each.
+for MY_RETRY in 1 2 3 4 5 6 7 8 9;
+do
+ echo "retry-10-delay-500ms.sh: Retry #${MY_RETRY} failed: ${MY_EXITCODE} (cmd: $*)"
+ kmk_sleep 500ms
+ "$@" && exit 0
+ MY_EXITCODE=$?
+done
+echo "retry-10-delay-500ms.sh: Giving up after 10 tries: ${MY_EXITCODE} (cmd: $*)" >&2
+exit ${MY_EXITCODE}
+
diff --git a/kBuild/sdks/MACOSX110.kmk b/kBuild/sdks/MACOSX110.kmk
index 1715f80..e9ee5f9 100644
--- a/kBuild/sdks/MACOSX110.kmk
+++ b/kBuild/sdks/MACOSX110.kmk
@@ -1,4 +1,4 @@
-# $Id: MACOSX110.kmk 3495 2020-12-23 20:18:20Z bird $
+# $Id: MACOSX110.kmk 3603 2024-01-23 09:43:42Z bird $
## @file
# kBuild SDK - Mac OS X v11.0 SDK.
#
@@ -49,7 +49,8 @@ ifeq ($(PATH_SDK_MACOSX110),)
endif
## The MAC_OS_X_VERSION_MIN_REQUIRED and MAC_OS_X_VERSION_MAX_ALLOWED value for this SDK.
-SDK_MACOSX110_VERSION_VALUE := 110000
+SDK_MACOSX110_VERSION_ARG := 11.0
+SDK_MACOSX110_VERSION_VALUE := $(subst .,,$(SDK_MACOSX110_VERSION_ARG))000
# General Properties (used by kBuild)
# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
diff --git a/kBuild/sdks/MACOSX120.kmk b/kBuild/sdks/MACOSX120.kmk
new file mode 100644
index 0000000..106b411
--- /dev/null
+++ b/kBuild/sdks/MACOSX120.kmk
@@ -0,0 +1,66 @@
+# $Id: MACOSX120.kmk 3603 2024-01-23 09:43:42Z bird $
+## @file
+# kBuild SDK - Mac OS X v12.0 SDK.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1201 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef INCLUDED_DARWIN_COMMON_KMK
+ include $(KBUILD_PATH)/darwin-common.kmk
+endif
+
+SDK_MACOSX120 := Mac OS X v12.0 SDK
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX120
+ PATH_SDK_MACOSX120 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX12.0.sdk)
+ ifndef PATH_SDK_MACOSX120
+ PATH_SDK_MACOSX120 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX12.sdk)
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_MACOSX120 := $(PATH_SDK_MACOSX120)
+endif
+ifeq ($(PATH_SDK_MACOSX120),)
+ $(warning $(call DARWINCMN_FN_ERROR_MACOSX_SDK,MacOSX12.0.sdk))
+endif
+
+## The MAC_OS_X_VERSION_MIN_REQUIRED and -mmacosx-version-min values for this SDK.
+SDK_MACOSX120_VERSION_ARG := 12.0
+SDK_MACOSX120_VERSION_VALUE := $(subst .,,$(SDK_MACOSX120_VERSION_ARG))000
+
+# General Properties (used by kBuild)
+# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
+SDK_MACOSX120_DEFS ?= MAC_OS_X_VERSION_MIN_REQUIRED=$(SDK_MACOSX120_VERSION_VALUE)
+SDK_MACOSX120_CFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX120_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX120)"
+SDK_MACOSX120_CXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX120_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX120)"
+SDK_MACOSX120_OBJCFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX120_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX120)"
+SDK_MACOSX120_OBJCXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX120_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX120)"
+SDK_MACOSX120_LDFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX120_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX120)"
+
diff --git a/kBuild/sdks/MACOSX120INCS.kmk b/kBuild/sdks/MACOSX120INCS.kmk
new file mode 100644
index 0000000..7caaf39
--- /dev/null
+++ b/kBuild/sdks/MACOSX120INCS.kmk
@@ -0,0 +1,49 @@
+# $Id: MACOSX120INCS.kmk 3602 2024-01-23 09:35:29Z bird $
+## @file
+# kBuild SDK - Mac OS X v12.0 SDK, includes only.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1201 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_MACOSX120
+ include $(KBUILD_PATH)/sdks/MACOSX120.kmk
+endif
+
+SDK_MACOSX120INCS := Mac OS X v12.0 SDK, include only.
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX120INCS
+ PATH_SDK_MACOSX120INCS := $(PATH_SDK_MACOSX120)
+else
+ PATH_SDK_MACOSX120INCS := $(PATH_SDK_MACOSX120INCS)
+endif
+
+# General Properties (used by kBuild)
+SDK_MACOSX120INCS_INCS = $(PATH_SDK_MACOSX120INCS)/usr/include
+
diff --git a/kBuild/sdks/MACOSX123.kmk b/kBuild/sdks/MACOSX123.kmk
new file mode 100644
index 0000000..670de9d
--- /dev/null
+++ b/kBuild/sdks/MACOSX123.kmk
@@ -0,0 +1,62 @@
+# $Id: MACOSX123.kmk 3596 2023-06-14 08:11:45Z bird $
+## @file
+# kBuild SDK - Mac OS X v12.3 SDK.
+#
+
+#
+# Copyright (c) 2008-2023 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef INCLUDED_DARWIN_COMMON_KMK
+ include $(KBUILD_PATH)/darwin-common.kmk
+endif
+
+SDK_MACOSX123 := Mac OS X v12.3 SDK
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX123
+ PATH_SDK_MACOSX123 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX12.3.sdk)
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_MACOSX123 := $(PATH_SDK_MACOSX123)
+endif
+ifeq ($(PATH_SDK_MACOSX123),)
+ $(warning $(call DARWINCMN_FN_ERROR_MACOSX_SDK,MacOSX12.3.sdk))
+endif
+
+## The MAC_OS_X_VERSION_MIN_REQUIRED and MAC_OS_X_VERSION_MAX_ALLOWED value for this SDK.
+SDK_MACOSX123_VERSION_VALUE := 123000
+
+# General Properties (used by kBuild)
+# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
+SDK_MACOSX123_DEFS ?= MAC_OS_X_VERSION_MIN_REQUIRED=$(SDK_MACOSX123_VERSION_VALUE)
+SDK_MACOSX123_CFLAGS ?= -mmacosx-version-min=12.3 -isysroot "$(PATH_SDK_MACOSX123)"
+SDK_MACOSX123_CXXFLAGS ?= -mmacosx-version-min=12.3 -isysroot "$(PATH_SDK_MACOSX123)"
+SDK_MACOSX123_OBJCFLAGS ?= -mmacosx-version-min=12.3 -isysroot "$(PATH_SDK_MACOSX123)"
+SDK_MACOSX123_OBJCXXFLAGS ?= -mmacosx-version-min=12.3 -isysroot "$(PATH_SDK_MACOSX123)"
+SDK_MACOSX123_LDFLAGS ?= -mmacosx-version-min=12.3 -isysroot "$(PATH_SDK_MACOSX123)"
+
diff --git a/kBuild/sdks/MACOSX123INCS.kmk b/kBuild/sdks/MACOSX123INCS.kmk
new file mode 100644
index 0000000..9e22ccb
--- /dev/null
+++ b/kBuild/sdks/MACOSX123INCS.kmk
@@ -0,0 +1,49 @@
+# $Id: MACOSX123INCS.kmk 3596 2023-06-14 08:11:45Z bird $
+## @file
+# kBuild SDK - Mac OS X v12.3 SDK, includes only.
+#
+
+#
+# Copyright (c) 2008-2023 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_MACOSX123
+ include $(KBUILD_PATH)/sdks/MACOSX123.kmk
+endif
+
+SDK_MACOSX123INCS := Mac OS X v12.3 SDK, include only.
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX123INCS
+ PATH_SDK_MACOSX123INCS := $(PATH_SDK_MACOSX123)
+else
+ PATH_SDK_MACOSX123INCS := $(PATH_SDK_MACOSX123INCS)
+endif
+
+# General Properties (used by kBuild)
+SDK_MACOSX123INCS_INCS = $(PATH_SDK_MACOSX123INCS)/usr/include
+
diff --git a/kBuild/sdks/MACOSX130.kmk b/kBuild/sdks/MACOSX130.kmk
new file mode 100644
index 0000000..8cf8784
--- /dev/null
+++ b/kBuild/sdks/MACOSX130.kmk
@@ -0,0 +1,66 @@
+# $Id: MACOSX130.kmk 3603 2024-01-23 09:43:42Z bird $
+## @file
+# kBuild SDK - Mac OS X v13.0 SDK.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef INCLUDED_DARWIN_COMMON_KMK
+ include $(KBUILD_PATH)/darwin-common.kmk
+endif
+
+SDK_MACOSX130 := Mac OS X v13.0 SDK
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX130
+ PATH_SDK_MACOSX130 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX13.0.sdk)
+ ifndef PATH_SDK_MACOSX130
+ PATH_SDK_MACOSX130 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX13.sdk)
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_MACOSX130 := $(PATH_SDK_MACOSX130)
+endif
+ifeq ($(PATH_SDK_MACOSX130),)
+ $(warning $(call DARWINCMN_FN_ERROR_MACOSX_SDK,MacOSX13.0.sdk))
+endif
+
+## The MAC_OS_X_VERSION_MIN_REQUIRED and -mmacosx-version-min values for this SDK.
+SDK_MACOSX130_VERSION_ARG := 13.0
+SDK_MACOSX130_VERSION_VALUE := $(subst .,,$(SDK_MACOSX130_VERSION_ARG))000
+
+# General Properties (used by kBuild)
+# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
+SDK_MACOSX130_DEFS ?= MAC_OS_X_VERSION_MIN_REQUIRED=$(SDK_MACOSX130_VERSION_VALUE)
+SDK_MACOSX130_CFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX130_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX130)"
+SDK_MACOSX130_CXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX130_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX130)"
+SDK_MACOSX130_OBJCFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX130_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX130)"
+SDK_MACOSX130_OBJCXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX130_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX130)"
+SDK_MACOSX130_LDFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX130_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX130)"
+
diff --git a/kBuild/sdks/MACOSX130INCS.kmk b/kBuild/sdks/MACOSX130INCS.kmk
new file mode 100644
index 0000000..daa4072
--- /dev/null
+++ b/kBuild/sdks/MACOSX130INCS.kmk
@@ -0,0 +1,49 @@
+# $Id: MACOSX130INCS.kmk 3602 2024-01-23 09:35:29Z bird $
+## @file
+# kBuild SDK - Mac OS X v13.0 SDK, includes only.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_MACOSX130
+ include $(KBUILD_PATH)/sdks/MACOSX130.kmk
+endif
+
+SDK_MACOSX130INCS := Mac OS X v13.0 SDK, include only.
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX130INCS
+ PATH_SDK_MACOSX130INCS := $(PATH_SDK_MACOSX130)
+else
+ PATH_SDK_MACOSX130INCS := $(PATH_SDK_MACOSX130INCS)
+endif
+
+# General Properties (used by kBuild)
+SDK_MACOSX130INCS_INCS = $(PATH_SDK_MACOSX130INCS)/usr/include
+
diff --git a/kBuild/sdks/MACOSX133.kmk b/kBuild/sdks/MACOSX133.kmk
new file mode 100644
index 0000000..bc4918f
--- /dev/null
+++ b/kBuild/sdks/MACOSX133.kmk
@@ -0,0 +1,63 @@
+# $Id: MACOSX133.kmk 3603 2024-01-23 09:43:42Z bird $
+## @file
+# kBuild SDK - Mac OS X v13.3 SDK.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef INCLUDED_DARWIN_COMMON_KMK
+ include $(KBUILD_PATH)/darwin-common.kmk
+endif
+
+SDK_MACOSX133 := Mac OS X v13.3 SDK
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX133
+ PATH_SDK_MACOSX133 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX13.3.sdk)
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_MACOSX133 := $(PATH_SDK_MACOSX133)
+endif
+ifeq ($(PATH_SDK_MACOSX133),)
+ $(warning $(call DARWINCMN_FN_ERROR_MACOSX_SDK,MacOSX13.3.sdk))
+endif
+
+## The MAC_OS_X_VERSION_MIN_REQUIRED and -mmacosx-version-min values for this SDK.
+SDK_MACOSX133_VERSION_ARG := 13.3
+SDK_MACOSX133_VERSION_VALUE := $(subst .,,$(SDK_MACOSX133_VERSION_ARG))000
+
+# General Properties (used by kBuild)
+# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
+SDK_MACOSX133_DEFS ?= MAC_OS_X_VERSION_MIN_REQUIRED=$(SDK_MACOSX133_VERSION_VALUE)
+SDK_MACOSX133_CFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX133_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX133)"
+SDK_MACOSX133_CXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX133_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX133)"
+SDK_MACOSX133_OBJCFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX133_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX133)"
+SDK_MACOSX133_OBJCXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX133_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX133)"
+SDK_MACOSX133_LDFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX133_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX133)"
+
diff --git a/kBuild/sdks/MACOSX133INCS.kmk b/kBuild/sdks/MACOSX133INCS.kmk
new file mode 100644
index 0000000..ff81a71
--- /dev/null
+++ b/kBuild/sdks/MACOSX133INCS.kmk
@@ -0,0 +1,49 @@
+# $Id: MACOSX133INCS.kmk 3602 2024-01-23 09:35:29Z bird $
+## @file
+# kBuild SDK - Mac OS X v13.3 SDK, includes only.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_MACOSX133
+ include $(KBUILD_PATH)/sdks/MACOSX133.kmk
+endif
+
+SDK_MACOSX133INCS := Mac OS X v13.3 SDK, include only.
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX133INCS
+ PATH_SDK_MACOSX133INCS := $(PATH_SDK_MACOSX133)
+else
+ PATH_SDK_MACOSX133INCS := $(PATH_SDK_MACOSX133INCS)
+endif
+
+# General Properties (used by kBuild)
+SDK_MACOSX133INCS_INCS = $(PATH_SDK_MACOSX133INCS)/usr/include
+
diff --git a/kBuild/sdks/MACOSX140.kmk b/kBuild/sdks/MACOSX140.kmk
new file mode 100644
index 0000000..a9cd164
--- /dev/null
+++ b/kBuild/sdks/MACOSX140.kmk
@@ -0,0 +1,66 @@
+# $Id: MACOSX140.kmk 3603 2024-01-23 09:43:42Z bird $
+## @file
+# kBuild SDK - Mac OS X v14.0 SDK.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1401 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef INCLUDED_DARWIN_COMMON_KMK
+ include $(KBUILD_PATH)/darwin-common.kmk
+endif
+
+SDK_MACOSX140 := Mac OS X v14.0 SDK
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX140
+ PATH_SDK_MACOSX140 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX14.0.sdk)
+ ifndef PATH_SDK_MACOSX140
+ PATH_SDK_MACOSX140 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX14.sdk)
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_MACOSX140 := $(PATH_SDK_MACOSX140)
+endif
+ifeq ($(PATH_SDK_MACOSX140),)
+ $(warning $(call DARWINCMN_FN_ERROR_MACOSX_SDK,MacOSX14.0.sdk))
+endif
+
+## The MAC_OS_X_VERSION_MIN_REQUIRED and -mmacosx-version-min values for this SDK.
+SDK_MACOSX140_VERSION_ARG := 14.0
+SDK_MACOSX140_VERSION_VALUE := $(subst .,,$(SDK_MACOSX140_VERSION_ARG))000
+
+# General Properties (used by kBuild)
+# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
+SDK_MACOSX140_DEFS ?= MAC_OS_X_VERSION_MIN_REQUIRED=$(SDK_MACOSX140_VERSION_VALUE)
+SDK_MACOSX140_CFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX140_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX140)"
+SDK_MACOSX140_CXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX140_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX140)"
+SDK_MACOSX140_OBJCFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX140_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX140)"
+SDK_MACOSX140_OBJCXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX140_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX140)"
+SDK_MACOSX140_LDFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX140_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX140)"
+
diff --git a/kBuild/sdks/MACOSX140INCS.kmk b/kBuild/sdks/MACOSX140INCS.kmk
new file mode 100644
index 0000000..7072d13
--- /dev/null
+++ b/kBuild/sdks/MACOSX140INCS.kmk
@@ -0,0 +1,49 @@
+# $Id: MACOSX140INCS.kmk 3602 2024-01-23 09:35:29Z bird $
+## @file
+# kBuild SDK - Mac OS X v14.0 SDK, includes only.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1401 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_MACOSX140
+ include $(KBUILD_PATH)/sdks/MACOSX140.kmk
+endif
+
+SDK_MACOSX140INCS := Mac OS X v14.0 SDK, include only.
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX140INCS
+ PATH_SDK_MACOSX140INCS := $(PATH_SDK_MACOSX140)
+else
+ PATH_SDK_MACOSX140INCS := $(PATH_SDK_MACOSX140INCS)
+endif
+
+# General Properties (used by kBuild)
+SDK_MACOSX140INCS_INCS = $(PATH_SDK_MACOSX140INCS)/usr/include
+
diff --git a/kBuild/sdks/MACOSX150.kmk b/kBuild/sdks/MACOSX150.kmk
new file mode 100644
index 0000000..39f4972
--- /dev/null
+++ b/kBuild/sdks/MACOSX150.kmk
@@ -0,0 +1,66 @@
+# $Id: MACOSX150.kmk 3603 2024-01-23 09:43:42Z bird $
+## @file
+# kBuild SDK - Mac OS X v15.0 SDK.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1501 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef INCLUDED_DARWIN_COMMON_KMK
+ include $(KBUILD_PATH)/darwin-common.kmk
+endif
+
+SDK_MACOSX150 := Mac OS X v15.0 SDK
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX150
+ PATH_SDK_MACOSX150 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX15.0.sdk)
+ ifndef PATH_SDK_MACOSX150
+ PATH_SDK_MACOSX150 := $(call DARWINCMN_FN_FIND_MACOSX_SDK,MacOSX15.sdk)
+ endif
+else
+ # Resolve any fancy stuff once and for all.
+ PATH_SDK_MACOSX150 := $(PATH_SDK_MACOSX150)
+endif
+ifeq ($(PATH_SDK_MACOSX150),)
+ $(warning $(call DARWINCMN_FN_ERROR_MACOSX_SDK,MacOSX15.0.sdk))
+endif
+
+## The MAC_OS_X_VERSION_MIN_REQUIRED and -mmacosx-version-min values for this SDK.
+SDK_MACOSX150_VERSION_ARG := 15.0
+SDK_MACOSX150_VERSION_VALUE := $(subst .,,$(SDK_MACOSX150_VERSION_ARG))000
+
+# General Properties (used by kBuild)
+# Note: The MAC_OS_X_VERSION_MAX_ALLOWED is left free for the SDK user to define.
+SDK_MACOSX150_DEFS ?= MAC_OS_X_VERSION_MIN_REQUIRED=$(SDK_MACOSX150_VERSION_VALUE)
+SDK_MACOSX150_CFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX150_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX150)"
+SDK_MACOSX150_CXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX150_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX150)"
+SDK_MACOSX150_OBJCFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX150_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX150)"
+SDK_MACOSX150_OBJCXXFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX150_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX150)"
+SDK_MACOSX150_LDFLAGS ?= -mmacosx-version-min=$(SDK_MACOSX150_VERSION_ARG) -isysroot "$(PATH_SDK_MACOSX150)"
+
diff --git a/kBuild/sdks/MACOSX150INCS.kmk b/kBuild/sdks/MACOSX150INCS.kmk
new file mode 100644
index 0000000..b37b32b
--- /dev/null
+++ b/kBuild/sdks/MACOSX150INCS.kmk
@@ -0,0 +1,49 @@
+# $Id: MACOSX150INCS.kmk 3602 2024-01-23 09:35:29Z bird $
+## @file
+# kBuild SDK - Mac OS X v15.0 SDK, includes only.
+#
+
+#
+# Copyright (c) 2008-2024 knut st. osmundsen <bird-kBuild-spam-xxiii@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1501 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_MACOSX150
+ include $(KBUILD_PATH)/sdks/MACOSX150.kmk
+endif
+
+SDK_MACOSX150INCS := Mac OS X v15.0 SDK, include only.
+
+# SDK Specific Properties
+ifndef PATH_SDK_MACOSX150INCS
+ PATH_SDK_MACOSX150INCS := $(PATH_SDK_MACOSX150)
+else
+ PATH_SDK_MACOSX150INCS := $(PATH_SDK_MACOSX150INCS)
+endif
+
+# General Properties (used by kBuild)
+SDK_MACOSX150INCS_INCS = $(PATH_SDK_MACOSX150INCS)/usr/include
+
diff --git a/kBuild/sdks/WINSDK10-UCRTD-STATIC.kmk b/kBuild/sdks/WINSDK10-UCRTD-STATIC.kmk
new file mode 100644
index 0000000..7f21136
--- /dev/null
+++ b/kBuild/sdks/WINSDK10-UCRTD-STATIC.kmk
@@ -0,0 +1,56 @@
+# $Id: WINSDK10-UCRTD-STATIC.kmk 3590 2023-04-19 12:35:45Z bird $
+## @file
+# kBuild SDK - Derives from WINSDK10.kmk, Universal CRT, static debug library linking.
+#
+
+#
+# Copyright (c) 2006-2020 knut st. osmundsen <bird-kBuild-spam-xx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_WINSDK10
+ include $(KBUILD_PATH)/sdks/WINSDK10.kmk
+endif
+
+SDK_WINSDK10-UCRTD-STATIC := The Microsoft Windows 10 SDK, Universal CRT, static debug library linking.
+SDK_WINSDK10-UCRTD-STATIC_INCS ?= $(PATH_SDK_WINSDK10_UCRT_INC)
+SDK_WINSDK10-UCRTD-STATIC_LIBPATH.x86 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.x86)
+SDK_WINSDK10-UCRTD-STATIC_LIBPATH.amd64 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.amd64)
+SDK_WINSDK10-UCRTD-STATIC_LIBPATH.arm32 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.arm32)
+SDK_WINSDK10-UCRTD-STATIC_LIBPATH.arm64 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.arm64)
+ifndef SDK_WINSDK10-UCRTD-STATIC_LIBS.amd64
+SDK_WINSDK10-UCRTD-STATIC_LIBS.amd64 := $(PATH_SDK_WINSDK10_UCRT_LIB.amd64)/$(SDK_WINSDK10_UCRT_STATIC_DBG_NAME)
+endif
+ifndef SDK_WINSDK10-UCRTD-STATIC_LIBS.arm32
+SDK_WINSDK10-UCRTD-STATIC_LIBS.arm32 := $(PATH_SDK_WINSDK10_UCRT_LIB.arm32)/$(SDK_WINSDK10_UCRT_STATIC_DBG_NAME)
+endif
+ifndef SDK_WINSDK10-UCRTD-STATIC_LIBS.arm64
+SDK_WINSDK10-UCRTD-STATIC_LIBS.arm64 := $(PATH_SDK_WINSDK10_UCRT_LIB.arm32)/$(SDK_WINSDK10_UCRT_STATIC_DBG_NAME)
+endif
+ifndef SDK_WINSDK10-UCRTD-STATIC_LIBS.x86
+SDK_WINSDK10-UCRTD-STATIC_LIBS.x86 := $(PATH_SDK_WINSDK10_UCRT_LIB.x86)/$(SDK_WINSDK10_UCRT_STATIC_DBG_NAME)
+endif
+
diff --git a/kBuild/sdks/WINSDK10-UCRTD.kmk b/kBuild/sdks/WINSDK10-UCRTD.kmk
new file mode 100644
index 0000000..b6dad5f
--- /dev/null
+++ b/kBuild/sdks/WINSDK10-UCRTD.kmk
@@ -0,0 +1,56 @@
+# $Id: WINSDK10-UCRTD.kmk 3590 2023-04-19 12:35:45Z bird $
+## @file
+# kBuild SDK - Derives from WINSDK10.kmk, Universal CRT, Debug DLL linking.
+#
+
+#
+# Copyright (c) 2006-2020 knut st. osmundsen <bird-kBuild-spam-xx@anduin.net>
+#
+# This file is part of kBuild.
+#
+# kBuild is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# kBuild is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with kBuild; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+#
+# As a special exception you are granted permission to include this file, via
+# the kmk include directive, as you wish without this in itself causing the
+# resulting makefile, program or whatever to be covered by the GPL license.
+# This exception does not however invalidate any other reasons why the makefile,
+# program, whatever should not be covered the GPL.
+#
+#
+
+ifndef SDK_WINSDK10
+ include $(KBUILD_PATH)/sdks/WINSDK10.kmk
+endif
+
+SDK_WINSDK10-UCRTD := The Microsoft Windows 10 SDK, Universal CRT, Debug DLL linking.
+SDK_WINSDK10-UCRTD_INCS ?= $(PATH_SDK_WINSDK10_UCRT_INC)
+SDK_WINSDK10-UCRTD_LIBPATH.x86 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.x86)
+SDK_WINSDK10-UCRTD_LIBPATH.amd64 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.amd64)
+SDK_WINSDK10-UCRTD_LIBPATH.arm32 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.arm32)
+SDK_WINSDK10-UCRTD_LIBPATH.arm64 ?= $(PATH_SDK_WINSDK10_UCRT_LIB.arm64)
+ifndef SDK_WINSDK10-UCRTD_LIBS.amd64
+SDK_WINSDK10-UCRTD_LIBS.amd64 := $(PATH_SDK_WINSDK10_UCRT_LIB.amd64)/$(SDK_WINSDK10_UCRT_IMPLIB_DBG_NAME)
+endif
+ifndef SDK_WINSDK10-UCRTD_LIBS.arm32
+SDK_WINSDK10-UCRTD_LIBS.arm32 := $(PATH_SDK_WINSDK10_UCRT_LIB.arm32)/$(SDK_WINSDK10_UCRT_IMPLIB_DBG_NAME)
+endif
+ifndef SDK_WINSDK10-UCRTD_LIBS.arm64
+SDK_WINSDK10-UCRTD_LIBS.arm64 := $(PATH_SDK_WINSDK10_UCRT_LIB.arm32)/$(SDK_WINSDK10_UCRT_IMPLIB_DBG_NAME)
+endif
+ifndef SDK_WINSDK10-UCRTD_LIBS.x86
+SDK_WINSDK10-UCRTD_LIBS.x86 := $(PATH_SDK_WINSDK10_UCRT_LIB.x86)/$(SDK_WINSDK10_UCRT_IMPLIB_DBG_NAME)
+endif
+
diff --git a/kBuild/tools/VCC140.kmk b/kBuild/tools/VCC140.kmk
index 6c222a7..97e9ff5 100644
--- a/kBuild/tools/VCC140.kmk
+++ b/kBuild/tools/VCC140.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC140.kmk 3343 2020-05-20 14:34:15Z bird $
+# $Id: VCC140.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.0 (aka Visual 2015 and MSC v19.0x), default target.
#
@@ -128,8 +128,9 @@ TOOL_VCC140_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140_BIN_QSH)/link.exe
TOOL_VCC140_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140_BIN_QSH)/dumpbin.exe
TOOL_VCC140_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140_BIN_QSH)/editbin.exe
-TOOL_VCC140_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC140_RC_CACHED)
-TOOL_VCC140_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC140_MT_CACHED)
+TOOL_VCC140_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC140_RC_CACHED)
+TOOL_VCC140_MT ?= $(TOOL_VCC140_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC140_MT_CACHED)
+TOOL_VCC140_MT_RETRY ?= $(WINCMN_MT_RETRY)
undefine TOOL_VCC140_USE_KSUBMIT # for now
ifdef TOOL_VCC140_USE_KSUBMIT
diff --git a/kBuild/tools/VCC140AMD64.kmk b/kBuild/tools/VCC140AMD64.kmk
index 9e35463..579c7af 100644
--- a/kBuild/tools/VCC140AMD64.kmk
+++ b/kBuild/tools/VCC140AMD64.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC140AMD64.kmk 3343 2020-05-20 14:34:15Z bird $
+# $Id: VCC140AMD64.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.0 (aka Visual 2015 and MSC v19.0x), targeting AMD64.
#
@@ -85,8 +85,9 @@ TOOL_VCC140AMD64_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140AMD64_BIN_QSH)/l
TOOL_VCC140AMD64_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140AMD64_BIN_QSH)/dumpbin.exe
TOOL_VCC140AMD64_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140AMD64_BIN_QSH)/editbin.exe
-TOOL_VCC140AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC140_RC_CACHED)
-TOOL_VCC140AMD64_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC140_MT_CACHED)
+TOOL_VCC140AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC140_RC_CACHED)
+TOOL_VCC140AMD64_MT ?= $(TOOL_VCC140AMD64_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC140_MT_CACHED)
+TOOL_VCC140AMD64_MT_RETRY ?= $(TOOL_VCC140_MT_RETRY)
undefine TOOL_VCC140AMD64_USE_KSUBMIT # for now
ifdef TOOL_VCC140AMD64_USE_KSUBMIT
@@ -113,7 +114,7 @@ endif
PATH_TOOL_VCC140AMD64_REDIST ?= $(PATH_TOOL_VCC140_REDIST)/x64
PATH_TOOL_VCC140AMD64_REDIST_CRT = $(PATH_TOOL_VCC140AMD64_REDIST)/$(TOOL_VCC140_REDIST_CRT_SUBDIR)
PATH_TOOL_VCC140AMD64_REDIST_DEBUG ?= $(PATH_TOOL_VCC140_REDIST_DEBUG)/x64
-PATH_TOOL_VCC140AMD64_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC140AMD64_REDIST_DEBUG)/$(TOOL_VCC140_REDIST_CRT_SUBDIR)
+PATH_TOOL_VCC140AMD64_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC140AMD64_REDIST_DEBUG)/$(TOOL_VCC140_REDIST_DEBUG_CRT_SUBDIR)
TOOL_VCC140AMD64_REDIST_CRT_DLLS = $(TOOL_VCC140_REDIST_CRT_DLLS.amd64)
TOOL_VCC140AMD64_REDIST_CONCRT_DLLS = $(TOOL_VCC140_REDIST_CONCRT_DLLS.amd64)
TOOL_VCC140AMD64_REDIST_CPP_DLLS = $(TOOL_VCC140_REDIST_CPP_DLLS.amd64)
diff --git a/kBuild/tools/VCC140X86.kmk b/kBuild/tools/VCC140X86.kmk
index 7c0e5a2..12b5ba6 100644
--- a/kBuild/tools/VCC140X86.kmk
+++ b/kBuild/tools/VCC140X86.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC140X86.kmk 3343 2020-05-20 14:34:15Z bird $
+# $Id: VCC140X86.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.0 (aka Visual 2015 and MSC v19.0x), targeting x86.
#
@@ -85,8 +85,9 @@ TOOL_VCC140X86_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140X86_BIN_QSH)/link.
TOOL_VCC140X86_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140X86_BIN_QSH)/dumpbin.exe
TOOL_VCC140X86_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC140X86_BIN_QSH)/editbin.exe
-TOOL_VCC140X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC140_RC_CACHED)
-TOOL_VCC140X86_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC140_MT_CACHED)
+TOOL_VCC140X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC140_RC_CACHED)
+TOOL_VCC140X86_MT ?= $(TOOL_VCC140X86_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC140_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC140_MT_CACHED)
+TOOL_VCC140X86_MT_RETRY ?= $(TOOL_VCC140_MT_RETRY)
undefine TOOL_VCC140X86_USE_KSUBMIT # for now
ifdef TOOL_VCC140X86_USE_KSUBMIT
@@ -113,7 +114,7 @@ endif
PATH_TOOL_VCC140X86_REDIST ?= $(PATH_TOOL_VCC140_REDIST)/x86
PATH_TOOL_VCC140X86_REDIST_CRT = $(PATH_TOOL_VCC140X86_REDIST)/$(TOOL_VCC140_REDIST_CRT_SUBDIR)
PATH_TOOL_VCC140X86_REDIST_DEBUG ?= $(PATH_TOOL_VCC140_REDIST_DEBUG)/x86
-PATH_TOOL_VCC140X86_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC140X86_REDIST_DEBUG)/$(TOOL_VCC140_REDIST_CRT_SUBDIR)
+PATH_TOOL_VCC140X86_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC140X86_REDIST_DEBUG)/$(TOOL_VCC140_REDIST_DEBUG_CRT_SUBDIR)
TOOL_VCC140X64_REDIST_CRT_DLLS = $(TOOL_VCC140_REDIST_CRT_DLLS.x86)
TOOL_VCC140X64_REDIST_CONCRT_DLLS = $(TOOL_VCC140_REDIST_CONCRT_DLLS.x86)
TOOL_VCC140X64_REDIST_CPP_DLLS = $(TOOL_VCC140_REDIST_CPP_DLLS.x86)
diff --git a/kBuild/tools/VCC141.kmk b/kBuild/tools/VCC141.kmk
index d7b19d7..f508edd 100644
--- a/kBuild/tools/VCC141.kmk
+++ b/kBuild/tools/VCC141.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC141.kmk 3342 2020-05-20 14:33:53Z bird $
+# $Id: VCC141.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.1 (aka Visual 2017 and MSC v19.10), default target.
#
@@ -118,8 +118,9 @@ TOOL_VCC141_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/link.exe
TOOL_VCC141_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/dumpbin.exe
TOOL_VCC141_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141_BIN_QSH)/editbin.exe
-TOOL_VCC141_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED)
-TOOL_VCC141_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED)
+TOOL_VCC141_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED)
+TOOL_VCC141_MT ?= $(TOOL_VCC141_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED)
+TOOL_VCC141_MT_RETRY ?= $(WINCMN_MT_RETRY)
undefine TOOL_VCC141_USE_KSUBMIT # for now
ifdef TOOL_VCC141_USE_KSUBMIT
diff --git a/kBuild/tools/VCC141AMD64.kmk b/kBuild/tools/VCC141AMD64.kmk
index 94cf413..d216e58 100644
--- a/kBuild/tools/VCC141AMD64.kmk
+++ b/kBuild/tools/VCC141AMD64.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC141AMD64.kmk 3346 2020-05-22 20:56:11Z bird $
+# $Id: VCC141AMD64.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.1 (aka Visual 2017 and MSC v19.10), targeting AMD64.
#
@@ -88,8 +88,9 @@ TOOL_VCC141AMD64_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/l
TOOL_VCC141AMD64_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/dumpbin.exe
TOOL_VCC141AMD64_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141AMD64_BIN_QSH)/editbin.exe
-TOOL_VCC141AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED)
-TOOL_VCC141AMD64_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED)
+TOOL_VCC141AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED)
+TOOL_VCC141AMD64_MT ?= $(TOOL_VCC141AMD64_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED)
+TOOL_VCC141AMD64_MT_RETRY ?= $(TOOL_VCC141_MT_RETRY)
undefine TOOL_VCC141AMD64_USE_KSUBMIT # for now
ifdef TOOL_VCC141AMD64_USE_KSUBMIT
@@ -116,7 +117,7 @@ endif
PATH_TOOL_VCC141AMD64_REDIST ?= $(PATH_TOOL_VCC141_REDIST)/x64
PATH_TOOL_VCC141AMD64_REDIST_CRT = $(PATH_TOOL_VCC141AMD64_REDIST)/$(TOOL_VCC141_REDIST_CRT_SUBDIR)
PATH_TOOL_VCC141AMD64_REDIST_DEBUG ?= $(PATH_TOOL_VCC141_REDIST_DEBUG)/x64
-PATH_TOOL_VCC141AMD64_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC141AMD64_REDIST_DEBUG)/$(TOOL_VCC141_REDIST_CRT_SUBDIR)
+PATH_TOOL_VCC141AMD64_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC141AMD64_REDIST_DEBUG)/$(TOOL_VCC141_REDIST_DEBUG_CRT_SUBDIR)
TOOL_VCC141AMD64_REDIST_CRT_DLLS = $(TOOL_VCC141_REDIST_CRT_DLLS.amd64)
TOOL_VCC141AMD64_REDIST_CONCRT_DLLS = $(TOOL_VCC141_REDIST_CONCRT_DLLS.amd64)
TOOL_VCC141AMD64_REDIST_CPP_DLLS = $(TOOL_VCC141_REDIST_CPP_DLLS.amd64)
diff --git a/kBuild/tools/VCC141X86.kmk b/kBuild/tools/VCC141X86.kmk
index 8210f40..3cf2773 100644
--- a/kBuild/tools/VCC141X86.kmk
+++ b/kBuild/tools/VCC141X86.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC141X86.kmk 3346 2020-05-22 20:56:11Z bird $
+# $Id: VCC141X86.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.1 (aka Visual 2017 and MSC v19.10), targeting x86.
#
@@ -88,8 +88,9 @@ TOOL_VCC141X86_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141X86_BIN_QSH)/link.
TOOL_VCC141X86_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141X86_BIN_QSH)/dumpbin.exe
TOOL_VCC141X86_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC141X86_BIN_QSH)/editbin.exe
-TOOL_VCC141X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED)
-TOOL_VCC141X86_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED)
+TOOL_VCC141X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC141_RC_CACHED)
+TOOL_VCC141X86_MT ?= $(TOOL_VCC141X86_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC141_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC141_MT_CACHED)
+TOOL_VCC141X86_MT_RETRY ?= $(TOOL_VCC141_MT_RETRY)
undefine TOOL_VCC141X86_USE_KSUBMIT # for now
ifdef TOOL_VCC141X86_USE_KSUBMIT
@@ -116,7 +117,7 @@ endif
PATH_TOOL_VCC141X86_REDIST ?= $(PATH_TOOL_VCC141_REDIST)/x86
PATH_TOOL_VCC141X86_REDIST_CRT = $(PATH_TOOL_VCC141X86_REDIST)/$(TOOL_VCC141_REDIST_CRT_SUBDIR)
PATH_TOOL_VCC141X86_REDIST_DEBUG ?= $(PATH_TOOL_VCC141_REDIST_DEBUG)/x86
-PATH_TOOL_VCC141X86_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC141X86_REDIST_DEBUG)/$(TOOL_VCC141_REDIST_CRT_SUBDIR)
+PATH_TOOL_VCC141X86_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC141X86_REDIST_DEBUG)/$(TOOL_VCC141_REDIST_DEBUG_CRT_SUBDIR)
TOOL_VCC141X64_REDIST_CRT_DLLS = $(TOOL_VCC141_REDIST_CRT_DLLS.x86)
TOOL_VCC141X64_REDIST_CONCRT_DLLS = $(TOOL_VCC141_REDIST_CONCRT_DLLS.x86)
TOOL_VCC141X64_REDIST_CPP_DLLS = $(TOOL_VCC141_REDIST_CPP_DLLS.x86)
diff --git a/kBuild/tools/VCC142.kmk b/kBuild/tools/VCC142.kmk
index b30ee00..9a2a649 100644
--- a/kBuild/tools/VCC142.kmk
+++ b/kBuild/tools/VCC142.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC142.kmk 3553 2022-01-29 02:59:56Z bird $
+# $Id: VCC142.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.2 (aka Visual 2019 and MSC v19.20), default target.
#
@@ -118,8 +118,9 @@ TOOL_VCC142_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142_BIN_QSH)/link.exe
TOOL_VCC142_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142_BIN_QSH)/dumpbin.exe
TOOL_VCC142_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142_BIN_QSH)/editbin.exe
-TOOL_VCC142_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC142_RC_CACHED)
-TOOL_VCC142_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC142_MT_CACHED)
+TOOL_VCC142_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC142_RC_CACHED)
+TOOL_VCC142_MT ?= $(TOOL_VCC142_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC142_MT_CACHED)
+TOOL_VCC142_MT_RETRY ?= $(WINCMN_MT_RETRY)
ifdef TOOL_VCC142_USE_KSUBMIT
ifeq ($(KBUILD_HOST),win)
diff --git a/kBuild/tools/VCC142AMD64.kmk b/kBuild/tools/VCC142AMD64.kmk
index cd2bfc6..a7acde4 100644
--- a/kBuild/tools/VCC142AMD64.kmk
+++ b/kBuild/tools/VCC142AMD64.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC142AMD64.kmk 3370 2020-06-10 10:45:05Z bird $
+# $Id: VCC142AMD64.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.2 (aka Visual 2019 and MSC v19.20), targeting AMD64.
#
@@ -88,8 +88,9 @@ TOOL_VCC142AMD64_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142AMD64_BIN_QSH)/l
TOOL_VCC142AMD64_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142AMD64_BIN_QSH)/dumpbin.exe
TOOL_VCC142AMD64_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142AMD64_BIN_QSH)/editbin.exe
-TOOL_VCC142AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC142_RC_CACHED)
-TOOL_VCC142AMD64_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC142_MT_CACHED)
+TOOL_VCC142AMD64_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC142_RC_CACHED)
+TOOL_VCC142AMD64_MT ?= $(TOOL_VCC142AMD64_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC142_MT_CACHED)
+TOOL_VCC142AMD64_MT_RETRY ?= $(TOOL_VCC142_MT_RETRY)
ifdef TOOL_VCC142AMD64_USE_KSUBMIT
ifeq ($(KBUILD_HOST),win)
@@ -115,7 +116,7 @@ endif
PATH_TOOL_VCC142AMD64_REDIST ?= $(PATH_TOOL_VCC142_REDIST)/x64
PATH_TOOL_VCC142AMD64_REDIST_CRT = $(PATH_TOOL_VCC142AMD64_REDIST)/$(TOOL_VCC142_REDIST_CRT_SUBDIR)
PATH_TOOL_VCC142AMD64_REDIST_DEBUG ?= $(PATH_TOOL_VCC142_REDIST_DEBUG)/x64
-PATH_TOOL_VCC142AMD64_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC142AMD64_REDIST_DEBUG)/$(TOOL_VCC142_REDIST_CRT_SUBDIR)
+PATH_TOOL_VCC142AMD64_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC142AMD64_REDIST_DEBUG)/$(TOOL_VCC142_REDIST_DEBUG_CRT_SUBDIR)
TOOL_VCC142AMD64_REDIST_CRT_DLLS = $(TOOL_VCC142_REDIST_CRT_DLLS.amd64)
TOOL_VCC142AMD64_REDIST_CONCRT_DLLS = $(TOOL_VCC142_REDIST_CONCRT_DLLS.amd64)
TOOL_VCC142AMD64_REDIST_CPP_DLLS = $(TOOL_VCC142_REDIST_CPP_DLLS.amd64)
diff --git a/kBuild/tools/VCC142X86.kmk b/kBuild/tools/VCC142X86.kmk
index 8720fe6..3021d50 100644
--- a/kBuild/tools/VCC142X86.kmk
+++ b/kBuild/tools/VCC142X86.kmk
@@ -1,4 +1,4 @@
-# $Id: VCC142X86.kmk 3370 2020-06-10 10:45:05Z bird $
+# $Id: VCC142X86.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Tool Config - Visual C++ 14.2 (aka Visual 2019 and MSC v19.20), targeting x86.
#
@@ -88,8 +88,9 @@ TOOL_VCC142X86_LD ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142X86_BIN_QSH)/link.
TOOL_VCC142X86_DUMPBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142X86_BIN_QSH)/dumpbin.exe
TOOL_VCC142X86_EDITBIN ?= $(EXEC_X86_WIN32) $(PATH_TOOL_VCC142X86_BIN_QSH)/editbin.exe
-TOOL_VCC142X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC142_RC_CACHED)
-TOOL_VCC142X86_MT ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC142_MT_CACHED)
+TOOL_VCC142X86_RC ?= $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,rc.exe,[Rr][Cc].[Ee][Xx][Ee],TOOL_VCC142_RC_CACHED)
+TOOL_VCC142X86_MT ?= $(TOOL_VCC142X86_MT_RETRY) $(EXEC_X86_WIN32) $(call TOOL_VCC142_FN_FIND_SDK_TOOL,mt.exe,[Mm][Tt].[Ee][Xx][Ee],TOOL_VCC142_MT_CACHED)
+TOOL_VCC142X86_MT_RETRY ?= $(TOOL_VCC142_MT_RETRY)
ifdef TOOL_VCC142X86_USE_KSUBMIT
ifeq ($(KBUILD_HOST),win)
@@ -115,7 +116,7 @@ endif
PATH_TOOL_VCC142X86_REDIST ?= $(PATH_TOOL_VCC142_REDIST)/x86
PATH_TOOL_VCC142X86_REDIST_CRT = $(PATH_TOOL_VCC142X86_REDIST)/$(TOOL_VCC142_REDIST_CRT_SUBDIR)
PATH_TOOL_VCC142X86_REDIST_DEBUG ?= $(PATH_TOOL_VCC142_REDIST_DEBUG)/x86
-PATH_TOOL_VCC142X86_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC142X86_REDIST_DEBUG)/$(TOOL_VCC142_REDIST_CRT_SUBDIR)
+PATH_TOOL_VCC142X86_REDIST_DEBUG_CRT = $(PATH_TOOL_VCC142X86_REDIST_DEBUG)/$(TOOL_VCC142_REDIST_DEBUG_CRT_SUBDIR)
TOOL_VCC142X64_REDIST_CRT_DLLS = $(TOOL_VCC142_REDIST_CRT_DLLS.x86)
TOOL_VCC142X64_REDIST_CONCRT_DLLS = $(TOOL_VCC142_REDIST_CONCRT_DLLS.x86)
TOOL_VCC142X64_REDIST_CPP_DLLS = $(TOOL_VCC142_REDIST_CPP_DLLS.x86)
diff --git a/kBuild/units/qt6.kmk b/kBuild/units/qt6.kmk
index fc3d91c..28d6100 100644
--- a/kBuild/units/qt6.kmk
+++ b/kBuild/units/qt6.kmk
@@ -1,4 +1,4 @@
-# $Id: qt6.kmk 3559 2022-03-02 01:47:27Z bird $
+# $Id: qt6.kmk 3593 2023-05-19 10:39:04Z bird $
## @file
# Qt 6 unit.
#
@@ -1130,9 +1130,6 @@ ifeq ($(bld_trg),darwin)
else
ifeq ($(bld_trg),win)
$(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT6_LIB)/$(qt_prefix)Qt6$(module)$(qt_infix)$(SUFF_LIB)) )
- ifeq ($(tool_do),LINK_PROGRAM)
- $(eval $(target)_LIBS += $(PATH_SDK_QT6_LIB)/$(qt_prefix)qtmain$(qt_infix)$(SUFF_LIB) )
- endif
else
$(eval $(target)_LIBS += $(foreach module,$(qt_modules), $(PATH_SDK_QT6_LIB)/lib$(qt_prefix)Qt6$(module)$(qt_infix)$(SUFF_DLL)) )
endif
diff --git a/kBuild/win-common.kmk b/kBuild/win-common.kmk
index bdba760..f8b0e1a 100644
--- a/kBuild/win-common.kmk
+++ b/kBuild/win-common.kmk
@@ -1,4 +1,4 @@
-# $Id: win-common.kmk 3323 2020-04-16 23:10:45Z bird $
+# $Id: win-common.kmk 3597 2023-06-16 20:56:17Z bird $
## @file
# kBuild Common Windows Definitions - Used by tools and SDKs.
#
@@ -59,3 +59,7 @@ WINCMN_MAP_ARCH.arm64 := arm64
WINCMN_MAP_ARCH.ia64 := ia64
WINCMN_MAP_ARCH.x86 := x86
## @}
+
+## @def WINCMN_MT_RETRY
+## Invocation of script for retrying MT.EXE when it clashes with AV software.
+WINCMN_MT_RETRY = $(ASH) $(KBUILD_PATH)/retry-10-delay-500ms.sh
diff --git a/src/kash/expand.c b/src/kash/expand.c
index ff30455..1131865 100644
--- a/src/kash/expand.c
+++ b/src/kash/expand.c
@@ -1555,15 +1555,15 @@ STATIC char *
cvtnum(shinstance *psh, int num, char *buf)
{
char temp[32];
+ char *p = &temp[sizeof(temp) - 1];
int neg = num < 0;
- char *p = temp + 31;
-
- temp[31] = '\0';
+ if (neg)
+ num = -num;
+ *p = '\0';
do {
*--p = num % 10 + '0';
} while ((num /= 10) != 0);
-
if (neg)
*--p = '-';
@@ -1576,11 +1576,12 @@ STATIC char *
cvtnum64(shinstance *psh, KI64 num, char *buf)
{
char temp[32];
+ char *p = &temp[sizeof(temp) - 1];
int neg = num < 0;
- char *p = temp + 31;
-
- temp[31] = '\0';
+ if (neg)
+ num = -num;
+ *p = '\0';
do {
*--p = num % 10 + '0';
} while ((num /= 10) != 0);
diff --git a/src/kmk/config.h.linux b/src/kmk/config.h.linux
index 99c5fa4..2c7a412 100644
--- a/src/kmk/config.h.linux
+++ b/src/kmk/config.h.linux
@@ -1,5 +1,5 @@
/* config.h. Generated from config.h.in by configure. */
-/* config.h.in. Generated from configure.in by autoheader. */
+/* config.h.in. Generated from configure.ac by autoheader. */
/*
* bird: Move up this bunch so we can include features.h early.
@@ -71,7 +71,9 @@
/* Define to 1 if you have the declaration of `bsd_signal', and to 0 if you
don't. */
-/* #define HAVE_DECL_BSD_SIGNAL 1 */
+#if !defined(KBUILD_ARCH_X86) && !defined(KBUILD_ARCH_AMD64)
+# define HAVE_DECL_BSD_SIGNAL 1
+#endif
/* Define to 1 if you have the declaration of `dlerror', and to 0 if you
don't. */
@@ -348,7 +350,13 @@
#define HAVE_WORKING_VFORK 1
/* Build host information. (not used by kmk) */
-#define MAKE_HOST "i686-pc-linux-gnu"
+#if defined(KBUILD_ARCH_X86)
+# define MAKE_HOST "i686-pc-linux-gnu"
+#elif defined(KBUILD_ARCH_AMD64)
+# define MAKE_HOST "amd64-pc-linux-gnu"
+#else
+# define MAKE_HOST "aarch64-unknown-linux-gnu"
+#endif
/* Define to 1 to enable job server support in GNU make. */
#define MAKE_JOBSERVER 1
@@ -435,7 +443,6 @@
<sys/cpustats.h>. */
/* #undef UMAX4_3 */
-
/* Version number of package */
#define VERSION "4.2.1"
@@ -451,7 +458,11 @@
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
-#define _FILE_OFFSET_BITS 64
+#if defined(KBUILD_ARCH_X86) || defined(KBUILD_ARCH_AMD64)
+# define _FILE_OFFSET_BITS 64
+#else
+/* #undef _FILE_OFFSET_BITS */
+#endif
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
diff --git a/src/lib/nt/ntopenat.c b/src/lib/nt/ntopenat.c
index 6db4de7..07ae561 100644
--- a/src/lib/nt/ntopenat.c
+++ b/src/lib/nt/ntopenat.c
@@ -55,9 +55,10 @@ static int birdOpenInt(const char *pszPath, int fFlags, unsigned __int16 fMode)
* directories as the CRT doesn't allow doing that.
*/
int const iErrnoSaved = errno;
+ int iErrno;
int fd = open(pszPath, fFlags, fMode);
if ( fd < 0
- && (errno == EACCES || errno == ENOENT || errno == EISDIR)
+ && ((iErrno = errno) == EACCES || iErrno == ENOENT || iErrno == EISDIR || iErrno == EINVAL /*CIFS*/)
&& (fFlags & (_O_WRONLY | _O_RDWR | _O_RDONLY)) == _O_RDONLY
&& (fFlags & (_O_CREAT | _O_TRUNC | _O_EXCL)) == 0 )
{