File x3270-notparallel.patch of Package x3270

From 52b12ec61a980487f23f589a54454ec777cf86fb Mon Sep 17 00:00:00 2001
From: Paul Mattes <paul.mattes@case.edu>
Date: Sun, 25 May 2025 13:38:21 -0500
Subject: [PATCH] Makefile rule overhaul

---
 Common/doxygen/Doxyfile.tmpl |   2 +-
 Makefile.aux                 | 150 ++++-----------
 Makefile.in                  | 344 ++++++++++++-----------------------
 Webpage/Makefile             |  18 +-
 Webpage/Makefile.obj         |  33 +---
 b3270/Makefile.in            |  15 +-
 c3270/Makefile.in            |  15 +-
 ibm_hosts/Makefile           |  16 +-
 lib/3270/Makefile.in         |  11 +-
 lib/3270/Makefile.test.in    |  15 +-
 lib/3270i/Makefile.in        |  11 +-
 lib/3270stubs/Makefile.in    |  11 +-
 lib/32xx/Makefile.in         |  11 +-
 lib/32xx/Makefile.test.in    |  15 +-
 lib/Makefile.aux             |  18 +-
 lib/libexpat/Makefile        |  10 +-
 lib/w3270/Makefile           |  10 +-
 lib/w3270/Makefile.test      |  10 +-
 lib/w3270i/Makefile          |  10 +-
 lib/w3270stubs/Makefile      |  10 +-
 lib/w32xx/Makefile           |  10 +-
 lib/w32xx/Makefile.test      |  10 +-
 mitm/Makefile.in             |  15 +-
 playback/Makefile.in         |  11 +-
 pr3287/Makefile.in           |  15 +-
 s3270/Makefile.in            |  15 +-
 tcl3270/Makefile.in          |  15 +-
 wb3270/Makefile              |  10 +-
 wc3270/Makefile              |  10 +-
 wmitm/Makefile               |  10 +-
 wplayback/Makefile           |  10 +-
 wpr3287/Makefile             |  10 +-
 ws3270/Makefile              |  10 +-
 wx3270if/Makefile            |  10 +-
 x3270/Makefile.in            |  15 +-
 x3270if/Makefile.in          |  15 +-
 36 files changed, 279 insertions(+), 647 deletions(-)

diff --git a/Common/doxygen/Doxyfile.tmpl b/Common/doxygen/Doxyfile.tmpl
index 3af5f168..0ba91fb5 100644
--- a/Common/doxygen/Doxyfile.tmpl
+++ b/Common/doxygen/Doxyfile.tmpl
@@ -51,7 +51,7 @@ PROJECT_BRIEF          =
 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
 # the logo to the output directory.
 
-PROJECT_LOGO           = x3270/html/x3270.jpg
+PROJECT_LOGO           = Common/x3270.jpg
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
 # into which the generated documentation will be written. If a relative path is
diff --git a/Makefile.aux b/Makefile.aux
index 7d6d233d..98f5fb03 100644
--- a/Makefile.aux
+++ b/Makefile.aux
@@ -38,141 +38,53 @@ src.tgz: prepare man Webpage program-src
 prepare: configure
 configure: configure.in
 	autoconf
-prepare: lib-prepare c3270-prepare s3270-prepare b3270-prepare tcl3270-prepare x3270-prepare pr3287-prepare x3270if-prepare ibm_hosts-prepare mitm-prepare Webpage-prepare ws3270-prepare wc3270-prepare wb3270-prepare
-lib-prepare:
-	cd lib && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-c3270-prepare:
-	cd c3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-s3270-prepare:
-	cd s3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-b3270-prepare:
-	cd b3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-tcl3270-prepare:
-	cd tcl3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-x3270-prepare:
-	cd x3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-pr3287-prepare:
-	cd pr3287 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-x3270if-prepare:
-	cd x3270if && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-ibm_hosts-prepare:
-	cd ibm_hosts && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-mitm-prepare:
-	cd mitm && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-Webpage-prepare:
-	cd Webpage && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-ws3270-prepare:
-	cd ws3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-wc3270-prepare:
-	cd wc3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
-wb3270-prepare:
-	cd wb3270 && $(MAKE) -f Makefile.aux prepare VPATH=../Common -I../Common
+PREPARE = Webpage-prepare b3270-prepare c3270-prepare ibm_hosts-prepare \
+	lib-prepare mitm-prepare pr3287-prepare s3270-prepare tcl3270-prepare \
+	wb3270-prepare wc3270-prepare ws3270-prepare x3270-prepare \
+	x3270if-prepare
+prepare: $(PREPARE)
+$(PREPARE):
+	$(MAKE) -C $(@:-prepare=) -f Makefile.aux prepare VPATH=../Common -I../Common
 
 man: prepare
-man: c3270-man s3270-man b3270-man tcl3270-man x3270-man pr3287-man x3270if-man ibm_hosts-man mitm-man wc3270-man ws3270-man wb3270-man wpr3287-man wx3270if-man wmitm-man
-c3270-man:
-	cd c3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-s3270-man:
-	cd s3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-b3270-man:
-	cd b3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-tcl3270-man:
-	cd tcl3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-x3270-man:
-	cd x3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-pr3287-man:
-	cd pr3287 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-x3270if-man:
-	cd x3270if && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-ibm_hosts-man:
-	cd ibm_hosts && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-mitm-man:
-	cd mitm && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-wc3270-man:
-	cd wc3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-ws3270-man:
-	cd ws3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-wb3270-man:
-	cd wb3270 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-wpr3287-man:
-	cd wpr3287 && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-wx3270if-man:
-	cd wx3270if && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
-wmitm-man:
-	cd wmitm && $(MAKE) -f Makefile.aux man VPATH=../Common -I../Common
+MAN = b3270-man c3270-man ibm_hosts-man mitm-man pr3287-man s3270-man \
+	tcl3270-man wb3270-man wc3270-man wmitm-man wpr3287-man ws3270-man \
+	wx3270if-man x3270-man x3270if-man
+man: $(MAN)
+$(MAN):
+	$(MAKE) -C $(@:-man=) -f Makefile.aux man VPATH=../Common -I../Common
 
 Webpage: program-src man FORCE
-	cd Webpage && $(MAKE) VPATH=../Common -I../Common
+	$(MAKE) -C Webpage VPATH=../Common -I../Common
 
-program-src: c3270-src.tgz s3270-src.tgz b3270-src.tgz tcl3270-src.tgz x3270-src.tgz pr3287-src.tgz x3270if-src.tgz ibm_hosts-src.tgz mitm-src.tgz wc3270-src.tgz ws3270-src.tgz wb3270-src.tgz wpr3287-src.tgz wx3270if-src.tgz wmitm-src.tgz lib-src.tgz
-lib-src.tgz:
-	cd lib && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-c3270-src.tgz:
-	cd c3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-s3270-src.tgz:
-	cd s3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-b3270-src.tgz:
-	cd b3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-tcl3270-src.tgz:
-	cd tcl3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-x3270-src.tgz:
-	cd x3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-pr3287-src.tgz:
-	cd pr3287 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-x3270if-src.tgz:
-	cd x3270if && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-ibm_hosts-src.tgz:
-	cd ibm_hosts && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-mitm-src.tgz:
-	cd mitm && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-wc3270-src.tgz:
-	cd wc3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-ws3270-src.tgz:
-	cd ws3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-wb3270-src.tgz:
-	cd wb3270 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-wpr3287-src.tgz:
-	cd wpr3287 && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-wx3270if-src.tgz:
-	cd wx3270if && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
-wmitm-src.tgz:
-	cd wmitm && $(MAKE) -f Makefile.aux src.tgz VPATH=../Common -I../Common
+PROGRAMSRC = b3270-src.tgz c3270-src.tgz ibm_hosts-src.tgz lib-src.tgz \
+	mitm-src.tgz playback-src.tgz pr3287-src.tgz s3270-src.tgz \
+	tcl3270-src.tgz wb3270-src.tgz wc3270-src.tgz wmitm-src.tgz \
+	wpr3287-src.tgz ws3270-src.tgz wx3270if-src.tgz x3270-src.tgz \
+	x3270if-src.tgz
+program-src: $(PROGRAMSRC)
+$(PROGRAMSRC):
+	$(MAKE) -C $(@:-src.tgz=) -f Makefile.aux src.tgz VPATH=../Common -I../Common
 
 # Target for building the Inno Setup .exe file and the .zip file.
 windows-release: man
 	$(MAKE) windows
-	cd wc3270 && $(MAKE) -f Makefile.aux $@ VPATH=../Common -I../Common
+	$(MAKE) -C wc3270 -f Makefile.aux $@ VPATH=../Common -I../Common
 
 clean: release-clean doxygen-clean
 
 release-clean:
 	rm -rf obj/release/*
 
-doxygen: doxygen-b3270 doxygen-c3270 doxygen-pr3287 doxygen-s3270 doxygen-wb3270 doxygen-wc3270 doxygen-wpr3287 doxygen-ws3270 doxygen-x3270 doxygen-x3270if doxygen-wx3270if doxygen-wizard
-DOXY=Common/doxygen/mkdoxy -v Common/version.txt -t Common/doxygen/Doxyfile.tmpl
-doxygen-b3270:
-	$(DOXY) -p b3270/Doxygen.opts -o obj/doxygen/posix/b3270
-doxygen-c3270:
-	$(DOXY) -p c3270/Doxygen.opts -o obj/doxygen/posix/c3270
-doxygen-pr3287:
-	$(DOXY) -p pr3287/Doxygen.opts -o obj/doxygen/posix/pr3287
-doxygen-s3270:
-	$(DOXY) -p s3270/Doxygen.opts -o obj/doxygen/posix/s3270
-doxygen-wb3270:
-	$(DOXY) -p wb3270/Doxygen.opts -o obj/doxygen/windows/b3270
-doxygen-wc3270:
-	$(DOXY) -p wc3270/Doxygen.opts -o obj/doxygen/windows/wc3270
+DOXY = Common/doxygen/mkdoxy -v Common/version.txt -t Common/doxygen/Doxyfile.tmpl
+UDOXYGEN = doxygen-b3270 doxygen-c3270 doxygen-pr3287 doxygen-s3270 doxygen-x3270 doxygen-x3270if
+WDOXYGEN = doxygen-wb3270 doxygen-wc3270 doxygen-wpr3287 doxygen-ws3270 doxygen-wx3270if
+doxygen: $(UDOXYGEN) $(WDOXYGEN) doxygen-wizard
+$(UDOXYGEN):
+	$(DOXY) -p $(@:doxygen-%=%)/Doxygen.opts -o obj/doxygen/posix/$(@:doxygen-%=%)
+$(WDOXYGEN):
+	$(DOXY) -p $(@:doxygen-%=%)/Doxygen.opts -o obj/doxygen/windows/$(@:doxygen-w%=%)
 doxygen-wizard:
 	$(DOXY) -p wc3270/Doxygen-wizard.opts -o obj/doxygen/windows/wizard
-doxygen-wpr3287:
-	$(DOXY) -p wpr3287/Doxygen.opts -o obj/doxygen/windows/pr3287
-doxygen-ws3270:
-	$(DOXY) -p ws3270/Doxygen.opts -o obj/doxygen/windows/s3270
-doxygen-wx3270if:
-	$(DOXY) -p wx3270if/Doxygen.opts -o obj/doxygen/windows/x3270if
-doxygen-x3270:
-	$(DOXY) -p x3270/Doxygen.opts -o obj/doxygen/posix/x3270
-doxygen-x3270if:
-	$(DOXY) -p x3270if/Doxygen.opts -o obj/doxygen/posix/x3270if
 doxygen-clean:
 	rm -rf obj/doxygen/*
diff --git a/Makefile.in b/Makefile.in
index 0b38b997..bfb7fa01 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -123,95 +123,89 @@ tcl3270: s3270
 unix-lib: lib3270 lib3270i lib32xx lib3270stubs
 windows-lib: libw3270 libw3270i libw32xx libw3270stubs libexpat
 lib: @T_LIB@
-lib3270:
-	cd lib/3270 && $(MAKE)
-lib3270i:
-	cd lib/3270i && $(MAKE)
-lib32xx:
-	cd lib/32xx && $(MAKE)
-lib3270stubs:
-	cd lib/3270stubs && $(MAKE)
+lib3270 lib3270i lib32xx lib3270stubs:
+	$(MAKE) -C lib/$(@:lib%=%)
 libw3270: libw3270@WIN32_SUFFIX@ libw3270@WIN64_SUFFIX@
 libw3270-32:
-	cd lib/w3270 && $(MAKE)
+	$(MAKE) -C lib/w3270
 libw3270-64:
-	cd lib/w3270 && $(MAKE) WIN64=1
+	$(MAKE) -C lib/w3270 WIN64=1
 libw3270i: libw3270i@WIN32_SUFFIX@ libw3270i@WIN64_SUFFIX@
 libw3270i-32:
-	cd lib/w3270i && $(MAKE)
+	$(MAKE) -C lib/w3270
 libw3270i-64:
-	cd lib/w3270i && $(MAKE) WIN64=1
+	$(MAKE) -C lib/w3270i WIN64=1
 libw32xx: libw32xx@WIN32_SUFFIX@ libw32xx@WIN64_SUFFIX@
 libw32xx-32:
-	cd lib/w32xx && $(MAKE)
+	$(MAKE) -C lib/w32xx
 libw32xx-64:
-	cd lib/w32xx && $(MAKE) WIN64=1
+	$(MAKE) -C lib/w32xx WIN64=1
 libw3270stubs: libw3270stubs@WIN32_SUFFIX@ libw3270stubs@WIN64_SUFFIX@
 libw3270stubs-32:
-	cd lib/w3270stubs && $(MAKE)
+	$(MAKE) -C lib/w3270stubs
 libw3270stubs-64:
-	cd lib/w3270stubs && $(MAKE) WIN64=1
+	$(MAKE) -C lib/w3270stubs WIN64=1
 libexpat: libexpat@WIN32_SUFFIX@ libexpat@WIN64_SUFFIX@
 libexpat-32:
-	cd lib/libexpat && $(MAKE)
+	$(MAKE) -C lib/libexpat
 libexpat-64:
-	cd lib/libexpat && $(MAKE) WIN64=1
+	$(MAKE) -C lib/libexpat WIN64=1
 .NOTPARALLEL: libexpat@WIN32_SUFFIX@ libexpat@WIN64_SUFFIX@
 c3270: lib3270 lib3270i lib32xx
-	cd c3270 && $(MAKE)
+	$(MAKE) -C $@
 s3270: lib3270 lib32xx
-	cd s3270 && $(MAKE)
+	$(MAKE) -C $@
 b3270: lib3270 lib32xx
-	cd b3270 && $(MAKE)
+	$(MAKE) -C $@
 tcl3270: lib3270 lib32xx
-	cd tcl3270 && $(MAKE)
+	$(MAKE) -C $@
 x3270: lib3270 lib3270i lib32xx
-	cd x3270 && $(MAKE)
+	$(MAKE) -C $@
 pr3287: lib32xx
-	cd pr3287 && $(MAKE)
+	$(MAKE) -C $@
 x3270if:
-	cd x3270if && $(MAKE)
+	$(MAKE) -C $@
 playback: lib3270 lib32xx
-	cd playback && $(MAKE)
+	$(MAKE) -C $@
 mitm: lib32xx
-	cd mitm && $(MAKE)
+	$(MAKE) -C $@
 ibm_hosts:
-	cd ibm_hosts && $(MAKE)
+	$(MAKE) -C $@
 wc3270: wc3270@WIN32_SUFFIX@ wc3270@WIN64_SUFFIX@
 wc3270-32: libw3270-32 libw3270i-32 libw32xx-32
-	cd wc3270 && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C wc3270 @WINDRES_SET@
 wc3270-64: libw3270-64 libw3270i-64 libw32xx-64
-	cd wc3270 && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C wc3270 WIN64=1 @WINDRES_SET@
 ws3270: ws3270@WIN32_SUFFIX@ ws3270@WIN64_SUFFIX@
 ws3270-32: libw3270-32 libw32xx-32
-	cd ws3270 && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C ws3270 @WINDRES_SET@
 ws3270-64: libw3270-64 libw32xx-64
-	cd ws3270 && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C ws3270 WIN64=1 @WINDRES_SET@
 wb3270: wb3270@WIN32_SUFFIX@ wb3270@WIN64_SUFFIX@
 wb3270-32: libw3270-32 libw32xx-32
-	cd wb3270 && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C wb3270 @WINDRES_SET@
 wb3270-64: libw3270-64 libw32xx-64
-	cd wb3270 && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C wb3270 WIN64=1 @WINDRES_SET@
 wpr3287: wpr3287@WIN32_SUFFIX@ wpr3287@WIN64_SUFFIX@
 wpr3287-32: libw32xx-32
-	cd wpr3287 && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C wpr3287 @WINDRES_SET@
 wpr3287-64: libw32xx-64
-	cd wpr3287 && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C wpr3287 WIN64=1 @WINDRES_SET@
 wx3270if: wx3270if@WIN32_SUFFIX@ wx3270if@WIN64_SUFFIX@
 wx3270if-32:
-	cd wx3270if && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C wx3270if @WINDRES_SET@
 wx3270if-64:
-	cd wx3270if && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C wx3270if WIN64=1 @WINDRES_SET@
 wplayback: wplayback@WIN32_SUFFIX@ wplayback@WIN64_SUFFIX@
 wplayback-32: libw3270-32 libw32xx-32
-	cd wplayback && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C wplayback @WINDRES_SET@
 wplayback-64: libw3270-64 libw32xx-64
-	cd wplayback && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C wplayback WIN64=1 @WINDRES_SET@
 wmitm: wmitm@WIN32_SUFFIX@ wmitm@WIN64_SUFFIX@
 wmitm-32: libw32xx-32
-	cd wmitm && $(MAKE) @WINDRES_SET@
+	$(MAKE) -C wmitm @WINDRES_SET@
 wmitm-64: libw32xx-64
-	cd wmitm && $(MAKE) WIN64=1 @WINDRES_SET@
+	$(MAKE) -C wmitm WIN64=1 @WINDRES_SET@
 
 FORCE:
 
@@ -221,136 +215,92 @@ windows: @T_WINDOWS_ALL@
 # Installation
 install unix-install: @T_INSTALL@
 x3270-install: x3270 pr3287-install x3270if-install ibm_hosts-install
-	cd x3270 && $(MAKE) install
+	$(MAKE) -C x3270 install
 c3270-install: c3270 pr3287-install x3270if-install ibm_hosts-install
-	cd c3270 && $(MAKE) install
+	$(MAKE) -C c3270 install
 s3270-install: s3270 pr3287-install x3270if-install
-	cd s3270 && $(MAKE) install
+	$(MAKE) -C s3270 install
 b3270-install: b3270 pr3287-install x3270if-install
-	cd b3270 && $(MAKE) install
+	$(MAKE) -C b3270 install
 tcl3270-install: tcl3270 pr3287-install s3270-install x3270if-install
-	cd tcl3270 && $(MAKE) install
+	$(MAKE) -C tcl3270 install
 pr3287-install: pr3287
-	cd pr3287 && $(MAKE) install
+	$(MAKE) -C pr3287 install
 x3270if-install: x3270if
-	cd x3270if && $(MAKE) install
+	$(MAKE) -C x3270if install
 ibm_hosts-install:
-	cd ibm_hosts && $(MAKE) install
+	$(MAKE) -C ibm_hosts install
 
 # Manual page install
 install.man unix-install.man: @T_INSTALL_MAN@
 x3270-install.man: x3270 pr3287-install.man x3270if-install.man ibm_hosts-install.man
-	cd x3270 && $(MAKE) install.man
+	$(MAKE) -C x3270 install.man
 c3270-install.man: c3270 pr3287-install.man x3270if-install.man ibm_hosts-install.man
-	cd c3270 && $(MAKE) install.man
+	$(MAKE) -C c3270 install.man
 s3270-install.man: s3270 pr3287-install.man x3270if-install.man
-	cd s3270 && $(MAKE) install.man
+	$(MAKE) -C s3270 install.man
 b3270-install.man: b3270 pr3287-install.man x3270if-install.man
-	cd b3270 && $(MAKE) install.man
+	$(MAKE) -C b3270 install.man
 tcl3270-install.man: tcl3270 pr3287-install.man s3270-install.man x3270if-install.man
-	cd tcl3270 && $(MAKE) install.man
+	$(MAKE) -C tcl3270 install.man
 pr3287-install.man: pr3287
-	cd pr3287 && $(MAKE) install.man
+	$(MAKE) -C pr3287 install.man
 x3270if-install.man: x3270if
-	cd x3270if && $(MAKE) install.man
+	$(MAKE) -C x3270if install.man
 ibm_hosts-install.man:
-	cd ibm_hosts && $(MAKE) install.man
+	$(MAKE) -C ibm_hosts install.man
 
 # Clean and clobber targets
+
+# Transform a Unix library -clean or -clobber target to its directory.
+ulb = $(subst $(1),,$(2:lib%=lib/%))
+
+# Transform a Windows library -clean or -clobber target to its directory.
+wlb = $(subst -64,,$(subst -32,,$(subst $(1),,$(2:lib%=lib/%))))
+
+# Transform a Windows program -clean or -clobber target to its directory.
+wx = $(subst -64,,$(subst -32,,$(subst $(1),,$(2))))
+
 clean: @T_CLEAN@
 unix-lib-clean: lib3270-clean lib3270i-clean lib32xx-clean lib3270stubs-clean unix-lib-test-clean
 windows-lib-clean: libw3270-clean libw3270i-clean libw32xx-clean libw3270stubs-clean windows-lib-test-clean libexpat-clean
 lib-clean: @T_LIB_CLEAN@
 unix-clean: @T_UNIX_CLEAN@
 windows-clean: @T_WINDOWS_CLEAN@
-lib3270-clean:
-	cd lib/3270 && $(MAKE) clean && $(MAKE) -f Makefile.test clean
-lib3270i-clean:
-	cd lib/3270i && $(MAKE) clean
-lib32xx-clean:
-	cd lib/32xx && $(MAKE) clean && $(MAKE) -f Makefile.test clean
-lib3270stubs-clean:
-	cd lib/3270stubs && $(MAKE) clean
+
+lib3270-clean lib3270i-clean lib32xx-clean lib3270stubs-clean:
+	$(MAKE) -C $(call ulb,-clean,$@) clean
+	[ ! -f $(call ulb,-clean,$@)/Makefile.test ] || $(MAKE) -C $(call ulb,-clean,$@) -f Makefile.test clean
+
 libw3270-clean: libw3270-clean@WIN32_SUFFIX@ libw3270-clean@WIN64_SUFFIX@
-libw3270-clean-32:
-	cd lib/w3270 && $(MAKE) clean && $(MAKE) -f Makefile.test clean
-libw3270-clean-64:
-	cd lib/w3270 && $(MAKE) clean WIN64=1 && $(MAKE) -f Makefile.test clean WIN64=1
 libw3270i-clean: libw3270i-clean@WIN32_SUFFIX@ libw3270i-clean@WIN64_SUFFIX@
-libw3270i-clean-32:
-	cd lib/w3270i && $(MAKE) clean
-libw3270i-clean-64:
-	cd lib/w3270i && $(MAKE) clean WIN64=1
 libw32xx-clean: libw32xx-clean@WIN32_SUFFIX@ libw32xx-clean@WIN64_SUFFIX@
-libw32xx-clean-32:
-	cd lib/w32xx && $(MAKE) clean && $(MAKE) -f Makefile.test clean
-libw32xx-clean-64:
-	cd lib/w32xx && $(MAKE) clean WIN64=1 && $(MAKE) -f Makefile.test clean WIN64=1
 libw3270stubs-clean: libw3270stubs-clean@WIN32_SUFFIX@ libw3270stubs-clean@WIN64_SUFFIX@
-libw3270stubs-clean-32:
-	cd lib/w3270stubs && $(MAKE) clean
-libw3270stubs-clean-64:
-	cd lib/w3270stubs && $(MAKE) clean WIN64=1
+libw3270-clean-32 libw3270i-clean-32 libw32xx-clean-32 libw3270stubs-clean-32:
+	$(MAKE) -C $(call wlb,-clean,$@) clean
+libw3270-clean-64 libw3270i-clean-64 libw32xx-clean-64 libw3270stubs-clean-64:
+	$(MAKE) -C $(call wlb,-clean,$@) clean WIN64=1
+
 libexpat-clean: libexpat-clean@WIN32_SUFFIX@ libexpat-clean@WIN64_SUFFIX@
 libexpat-clean-32:
-	cd lib/libexpat && $(MAKE) clean
+	$(MAKE) -C lib/libexpat clean
 libexpat-clean-64:
-	cd lib/libexpat && $(MAKE) clean WIN64=1
-x3270-clean:
-	cd x3270 && $(MAKE) clean
-c3270-clean:
-	cd c3270 && $(MAKE) clean
-s3270-clean:
-	cd s3270 && $(MAKE) clean
-b3270-clean:
-	cd b3270 && $(MAKE) clean
-tcl3270-clean:
-	cd tcl3270 && $(MAKE) clean
-pr3287-clean:
-	cd pr3287 && $(MAKE) clean
-x3270if-clean:
-	cd x3270if && $(MAKE) clean
-playback-clean:
-	cd playback && $(MAKE) clean
-mitm-clean:
-	cd mitm && $(MAKE) clean
-ibm_hosts-clean:
-	cd ibm_hosts && $(MAKE) clean
+	$(MAKE) -C lib/libexpat clean WIN64=1
+
+x3270-clean c3270-clean s3270-clean b3270-clean tcl3270-clean pr3287-clean x3270if-clean playback-clean mitm-clean ibm_hosts-clean:
+	$(MAKE) -C $(subst -clean,,$@) clean
+
 wc3270-clean: wc3270-clean@WIN32_SUFFIX@ wc3270-clean@WIN64_SUFFIX@
-wc3270-clean-32:
-	cd wc3270 && $(MAKE) clean
-wc3270-clean-64:
-	cd wc3270 && $(MAKE) clean WIN64=1
 ws3270-clean: ws3270-clean@WIN32_SUFFIX@ ws3270-clean@WIN64_SUFFIX@
-ws3270-clean-32:
-	cd ws3270 && $(MAKE) clean
-ws3270-clean-64:
-	cd ws3270 && $(MAKE) clean WIN64=1
 wb3270-clean: wb3270-clean@WIN32_SUFFIX@ wb3270-clean@WIN64_SUFFIX@
-wb3270-clean-32:
-	cd wb3270 && $(MAKE) clean
-wb3270-clean-64:
-	cd wb3270 && $(MAKE) clean WIN64=1
 wpr3287-clean: wpr3287-clean@WIN32_SUFFIX@ wpr3287-clean@WIN64_SUFFIX@
-wpr3287-clean-32:
-	cd wpr3287 && $(MAKE) clean
-wpr3287-clean-64:
-	cd wpr3287 && $(MAKE) clean WIN64=1
 wx3270if-clean: wx3270if-clean@WIN32_SUFFIX@ wx3270if-clean@WIN64_SUFFIX@
-wx3270if-clean-32:
-	cd wx3270if && $(MAKE) clean
-wx3270if-clean-64:
-	cd wx3270if && $(MAKE) clean WIN64=1
 wplayback-clean: wplayback-clean@WIN32_SUFFIX@ wplayback-clean@WIN64_SUFFIX@
-wplayback-clean-32:
-	cd wplayback && $(MAKE) clean
-wplayback-clean-64:
-	cd wplayback && $(MAKE) clean WIN64=1
 wmitm-clean: wmitm-clean@WIN32_SUFFIX@ wmitm-clean@WIN64_SUFFIX@
-wmitm-clean-32:
-	cd wmitm && $(MAKE) clean
-wmitm-clean-64:
-	cd wmitm && $(MAKE) clean WIN64=1
+wc3270-clean-32 ws3270-clean-32 wb3270-clean-32 wpr3287-clean-32 wx3270if-clean-32 wplayback-clean-32 wmitm-clean-32:
+	$(MAKE) -C $(call wx,-clean,$@) clean
+wc3270-clean-64 ws3270-clean-64 wb3270-clean-64 wpr3287-clean-64 wx3270if-clean-64 wplayback-clean-64 wmitm-clean-64:
+	$(MAKE) -C $(call wx,-clean,$@) clean WIN64=1
 
 clobber:
 	rm -rf obj
@@ -360,133 +310,79 @@ windows-lib-clobber: libw3270-clobber libw3270i-clobber libw32xx-clobber libw327
 lib-clobber: @T_LIB_CLOBBER@
 unix-clobber: @T_UNIX_CLOBBER@ ibm_hosts-clobber
 windows-clobber: @T_WINDOWS_CLOBBER@
-lib3270-clobber:
-	cd lib/3270 && $(MAKE) clobber && $(MAKE) -f Makefile.test clobber
-lib3270i-clobber:
-	cd lib/3270i && $(MAKE) clobber
-lib32xx-clobber:
-	cd lib/32xx && $(MAKE) clobber && $(MAKE) -f Makefile.test clobber
-lib3270stubs-clobber:
-	cd lib/3270stubs && $(MAKE) clobber
+
+lib3270-clobber lib3270i-clobber lib32xx-clobber lib3270stubs-clobber:
+	$(MAKE) -C $(call ulb,-clobber,$@) clobber
+	[ ! -f $(call ulb,-clobber,$@)/Makefile.test ] || $(MAKE) -C $(call ulb,-clobber,$@) -f Makefile.test clobber
+
 libw3270-clobber: libw3270-clobber@WIN32_SUFFIX@ libw3270-clobber@WIN64_SUFFIX@
-libw3270-clobber-32:
-	cd lib/w3270 && $(MAKE) clobber
-libw3270-clobber-64:
-	cd lib/w3270 && $(MAKE) clobber WIN64=1
 libw3270i-clobber: libw3270i-clobber@WIN32_SUFFIX@ libw3270i-clobber@WIN64_SUFFIX@
-libw3270i-clobber-32:
-	cd lib/w3270i && $(MAKE) clobber
-libw3270i-clobber-64:
-	cd lib/w3270i && $(MAKE) clobber WIN64=1
 libw32xx-clobber: libw32xx-clobber@WIN32_SUFFIX@ libw32xx-clobber@WIN64_SUFFIX@
-libw32xx-clobber-32:
-	cd lib/w32xx && $(MAKE) clobber
-libw32xx-clobber-64:
-	cd lib/w32xx && $(MAKE) clobber WIN64=1
 libw3270stubs-clobber: libw3270stubs-clobber@WIN32_SUFFIX@ libw3270stubs-clobber@WIN64_SUFFIX@
-libw3270stubs-clobber-32:
-	cd lib/w3270stubs && $(MAKE) clobber
-libw3270stubs-clobber-64:
-	cd lib/w3270stubs && $(MAKE) clobber WIN64=1
+libw3270-clobber-32 libw3270i-clobber-32 libw32xx-clobber-32 libw3270stubs-clobber-32:
+	$(MAKE) -C $(call wlb,-clobber,$@) clobber
+libw3270-clobber-64 libw3270i-clobber-64 libw32xx-clobber-64 libw3270stubs-clobber-64:
+	$(MAKE) -C $(call wlb,-clobber,$@) clobber WIN64=1
+
 libexpat-clobber: libexpat-clobber@WIN32_SUFFIX@ libexpat-clobber@WIN64_SUFFIX@
 libexpat-clobber-32:
-	cd lib/libexpat && $(MAKE) clobber
+	$(MAKE) -C lib/libexpat clobber
 libexpat-clobber-64:
-	cd lib/libexpat && $(MAKE) clobber WIN64=1
-x3270-clobber:
-	cd x3270 && $(MAKE) clobber
-c3270-clobber:
-	cd c3270 && $(MAKE) clobber
-s3270-clobber:
-	cd s3270 && $(MAKE) clobber
-b3270-clobber:
-	cd b3270 && $(MAKE) clobber
-tcl3270-clobber:
-	cd tcl3270 && $(MAKE) clobber
-pr3287-clobber:
-	cd pr3287 && $(MAKE) clobber
-x3270if-clobber:
-	cd x3270if && $(MAKE) clobber
-playback-clobber:
-	cd playback && $(MAKE) clobber
-mitm-clobber:
-	cd mitm && $(MAKE) clobber
-ibm_hosts-clobber:
-	cd ibm_hosts && $(MAKE) clobber
+	$(MAKE) -C lib/libexpat clobber WIN64=1
+
+x3270-clobber c3270-clobber s3270-clobber b3270-clobber tcl3270-clobber pr3287-clobber x3270if-clobber playback-clobber mitm-clobber ibm_hosts-clobber:
+	$(MAKE) -C $(subst -clobber,,$@) clobber
+
 wc3270-clobber: wc3270-clobber@WIN32_SUFFIX@ wc3270-clobber@WIN64_SUFFIX@
-wc3270-clobber-32:
-	cd wc3270 && $(MAKE) clobber
-wc3270-clobber-64:
-	cd wc3270 && $(MAKE) clobber WIN64=1
 ws3270-clobber: ws3270-clobber@WIN32_SUFFIX@ ws3270-clobber@WIN64_SUFFIX@
-ws3270-clobber-32:
-	cd ws3270 && $(MAKE) clobber
-ws3270-clobber-64:
-	cd ws3270 && $(MAKE) clobber WIN64=1
 wb3270-clobber: wb3270-clobber@WIN32_SUFFIX@ wb3270-clobber@WIN64_SUFFIX@
-wb3270-clobber-32:
-	cd wb3270 && $(MAKE) clobber
-wb3270-clobber-64:
-	cd wb3270 && $(MAKE) clobber WIN64=1
 wpr3287-clobber: wpr3287-clobber@WIN32_SUFFIX@ wpr3287-clobber@WIN64_SUFFIX@
-wpr3287-clobber-32:
-	cd wpr3287 && $(MAKE) clobber
-wpr3287-clobber-64:
-	cd wpr3287 && $(MAKE) clobber WIN64=1
 wx3270if-clobber: wx3270if-clobber@WIN32_SUFFIX@ wx3270if-clobber@WIN64_SUFFIX@
-wx3270if-clobber-32:
-	cd wx3270if && $(MAKE) clobber
-wx3270if-clobber-64:
-	cd wx3270if && $(MAKE) clobber WIN64=1
 wplayback-clobber: wplayback-clobber@WIN32_SUFFIX@ wplayback-clobber@WIN64_SUFFIX@
-wplayback-clobber-32:
-	cd wplayback && $(MAKE) clobber
-wplayback-clobber-64:
-	cd wplayback && $(MAKE) clobber WIN64=1
 wmitm-clobber: wmitm-clobber@WIN32_SUFFIX@ wmitm-clobber@WIN64_SUFFIX@
-wmitm-clobber-32:
-	cd wmitm && $(MAKE) clobber
-wmitm-clobber-64:
-	cd wmitm && $(MAKE) clobber WIN64=1
+wc3270-clobber-32 ws3270-clobber-32 wb3270-clobber-32 wpr3287-clobber-32 wx3270if-clobber-32 wplayback-clobber-32 wmitm-clobber-32:
+	$(MAKE) -C $(call wx,-clobber,$@) clobber
+wc3270-clobber-64 ws3270-clobber-64 wb3270-clobber-64 wpr3287-clobber-64 wx3270if-clobber-64 wplayback-clobber-64 wmitm-clobber-64:
+	$(MAKE) -C $(call wx,-clobber,$@) clobber WIN64=1
 
 windows-lib-test: libw3270-test libw32xx-test
 libw3270-test: libw3270-test@WIN32_SUFFIX@ libw3270-test@WIN64_SUFFIX@
 libw3270-test-32: libw3270-32
-	cd lib/w3270 && $(MAKE) -f Makefile.test
+	$(MAKE) -C lib/w3270 -f Makefile.test
 libw3270-test-64: libw3270-64
-	cd lib/w3270 && $(MAKE) -f Makefile.test WIN64=1
+	$(MAKE) -C lib/w3270 -f Makefile.test WIN64=1
 libw32xx-test: libw32xx-test@WIN32_SUFFIX@ libw32xx-test@WIN64_SUFFIX@
 libw32xx-test-32: libw32xx-32
-	cd lib/w32xx && $(MAKE) -f Makefile.test
+	$(MAKE) -C lib/w32xx -f Makefile.test
 libw32xx-test-64: libw32xx-64
-	cd lib/w32xx && $(MAKE) -f Makefile.test WIN64=1
+	$(MAKE) -C lib/w32xx -f Makefile.test WIN64=1
 
 windows-lib-test-clean: libw3270-test-clean libw32xx-test-clean
 libw3270-test-clean:
-	cd lib/w3270 && $(MAKE) -f Makefile.test clean
-	cd lib/w3270 && $(MAKE) -f Makefile.test clean WIN64=1
+	$(MAKE) -C lib/w3270 -f Makefile.test clean
+	$(MAKE) -C lib/w3270 -f Makefile.test clean WIN64=1
 libw32xx-test-clean:
-	cd lib/w32xx && $(MAKE) -f Makefile.test clean
-	cd lib/w32xx && $(MAKE) -f Makefile.test clean WIN64=1
+	$(MAKE) -C lib/w32xx -f Makefile.test clean
+	$(MAKE) -C lib/w32xx -f Makefile.test clean WIN64=1
 
 windows-lib-test-clobber: libw3270-test-clobber libw32xx-test-clobber
 libw3270-test-clobber:
-	cd lib/w3270 && $(MAKE) -f Makefile.test clobber
-	cd lib/w3270 && $(MAKE) -f Makefile.test clobber WIN64=1
+	$(MAKE) -C lib/w3270 -f Makefile.test clobber
+	$(MAKE) -C lib/w3270 -f Makefile.test clobber WIN64=1
 libw32xx-test-clobber:
-	cd lib/w32xx && $(MAKE) -f Makefile.test clobber
-	cd lib/w32xx && $(MAKE) -f Makefile.test clobber WIN64=1
+	$(MAKE) -C lib/w32xx -f Makefile.test clobber
+	$(MAKE) -C lib/w32xx -f Makefile.test clobber WIN64=1
 
 ifdef UNIX
 unix-lib-test:
-	cd lib/3270 && $(MAKE) -f Makefile.test
-	cd lib/32xx && $(MAKE) -f Makefile.test
+	$(MAKE) -C lib/3270 -f Makefile.test
+	$(MAKE) -C lib/32xx -f Makefile.test
 unix-lib-test-clean:
-	cd lib/3270 && $(MAKE) -f Makefile.test clean
-	cd lib/32xx && $(MAKE) -f Makefile.test clean
+	$(MAKE) -C lib/3270 -f Makefile.test clean
+	$(MAKE) -C lib/32xx -f Makefile.test clean
 unix-lib-test-clobber:
-	cd lib/3270 && $(MAKE) -f Makefile.test clobber
-	cd lib/32xx && $(MAKE) -f Makefile.test clobber
+	$(MAKE) -C lib/3270 -f Makefile.test clobber
+	$(MAKE) -C lib/32xx -f Makefile.test clobber
 
 ALLPYTESTS := $(shell for i in @T_TEST@; do [ -f $$i/Test/testSmoke.py ] && printf " %s" "$$i/Test/test*.py"; done)
 PYTESTS=$(ALLPYTESTS)
diff --git a/Webpage/Makefile b/Webpage/Makefile
index 33fb2b9f..6fa5bf58 100644
--- a/Webpage/Makefile
+++ b/Webpage/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2007-2024 Paul Mattes.
+# Copyright (c) 2007-2025 Paul Mattes.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -62,20 +62,10 @@ screenshots.html: screenshots-body.html mkpages.bash version.txt
 x026.html: x026-body.html mkpages.bash version.txt
 	./mkpages.bash -I../Common x026
 
-c3270-man.html:
-	cd ../c3270 && $(MAKE) -f Makefile.aux html/c3270-man.html
+c3270-man.html pr3287-man.html s3270-man.html tcl3270-man.html x3270-man.html wc3270-man.html:
+	$(MAKE) -C ../$(@:-man.html=) -f Makefile.aux html/$@
 ibm_hosts.html:
-	cd ../ibm_hosts && $(MAKE) -f Makefile.aux html/ibm_hosts.html
-pr3287-man.html:
-	cd ../pr3287 && $(MAKE) -f Makefile.aux html/pr3287-man.html
-s3270-man.html:
-	cd ../s3270 && $(MAKE) -f Makefile.aux html/s3270-man.html
-tcl3270-man.html:
-	cd ../tcl3270 && $(MAKE) -f Makefile.aux html/tcl3270-man.html
-x3270-man.html:
-	cd ../x3270 && $(MAKE) -f Makefile.aux html/x3270-man.html
-wc3270-man.html:
-	cd ../wc3270 && $(MAKE) -f Makefile.aux html/wc3270-man.html
+	$(MAKE) -C ../ibm_hosts -f Makefile.aux html/ibm_hosts.html
 
 WPDIR=../obj/Webpage
 TARBALL=$(WPDIR)/webpage.tgz
diff --git a/Webpage/Makefile.obj b/Webpage/Makefile.obj
index c645c6af..46eaa26f 100644
--- a/Webpage/Makefile.obj
+++ b/Webpage/Makefile.obj
@@ -1,4 +1,4 @@
-# Copyright (c) 2007-2024 Paul Mattes.
+# Copyright (c) 2007-2025 Paul Mattes.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -65,33 +65,12 @@ x026.html: mkpages.bash x026-body.html version.txt
 	$< $(INC) x026
 
 # Rules for manpages.
-c3270-man.html:
-	cd $(TOP)/c3270 && VPATH=../Common $(MAKE) -I ../Common -f Makefile.aux html/c3270-man.html
-	cp -p $(TOP)/c3270/html/c3270-man.html $@
+c3270-man.html pr3287-man.html s3270-man.html tcl3270-man.html wc3270-man.html x3270-man.html:
+	VPATH=../Common $(MAKE) -C $(TOP)/$(@:-man.html=) -I ../Common -f Makefile.aux html/$@
+	cp -p $(TOP)/$(@:-man.html=)/html/$@ $@
 ibm_hosts.html:
-	cd $(TOP)/ibm-hosts && VPATH=../Common $(MAKE) -I../Common -f Makefile.aux html/ibm_hosts.html
-	cp -p $(TOP)/ibm-hosts/html/ibm_hosts.html $@
-pr3287-man.html:
-	cd $(TOP)/pr3287 && VPATH=../Common $(MAKE) -I../Common -f Makefile.aux html/pr3287-man.html
-	cp -p $(TOP)/pr3287/html/pr3287-man.html $@
-s3270-man.html:
-	cd $(TOP)/s3270 && VPATH=../Common $(MAKE) -I../Common -f Makefile.aux html/s3270-man.html
-	cp -p $(TOP)/s3270/html/s3270-man.html $@
-tcl3270-man.html:
-	cd $(TOP)/tcl3270 && VPATH=../Common $(MAKE) -I../Common -f Makefile.aux html/tcl3270-man.html
-	cp -p $(TOP)/tcl3270/html/tcl3270-man.html $@
-x3270-man.html:
-	cd $(TOP)/x3270 && VPATH=../Common $(MAKE) -I../Common -f Makefile.aux html/x3270-man.html
-	cp -p $(TOP)/x3270/html/x3270-man.html $@
-wc3270-man.html:
-	cd $(TOP)/wc3270 && VPATH=../Common $(MAKE) -I../Common -f Makefile.aux html/wc3270-man.html
-	cp -p $(TOP)/wc3270/html/wc3270-man.html $@
-
-# Miscellaneous files that come from odd places.
-x026.gif: $(TOP)/x3270/html/x026.gif
-	cp -p $^ $@
-x3270.jpg: $(TOP)/x3270/html/x3270.jpg
-	cp -p $^ $@
+	VPATH=../Common $(MAKE) -C $(TOP)/ibm-hosts -I../Common -f Makefile.aux html/$@
+	cp -p $(TOP)/ibm-hosts/html/$@ $@
 
 # Get it all together.
 webpage.tgz: $(PAGES) $(MANPAGES) $(LOCAL) $(ODD) mkpages.bash Makefile
diff --git a/b3270/Makefile.in b/b3270/Makefile.in
index 50c109b7..1b2e7bc8 100644
--- a/b3270/Makefile.in
+++ b/b3270/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/b3270
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/c3270/Makefile.in b/c3270/Makefile.in
index 8624eb66..58c9ba93 100644
--- a/c3270/Makefile.in
+++ b/c3270/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/ibm_hosts/Makefile b/ibm_hosts/Makefile
index 97d3e549..56f93ade 100644
--- a/ibm_hosts/Makefile
+++ b/ibm_hosts/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2024 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,10 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/3270/Makefile.in b/lib/3270/Makefile.in
index 54bbff98..455859ba 100644
--- a/lib/3270/Makefile.in
+++ b/lib/3270/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,12 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/3270/Makefile.test.in b/lib/3270/Makefile.test.in
index 39a9ad41..6b741200 100644
--- a/lib/3270/Makefile.test.in
+++ b/lib/3270/Makefile.test.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-test: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-coverage: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
+default: all
+all test coverage clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.test.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/3270i/Makefile.in b/lib/3270i/Makefile.in
index fa6d411b..6dde0c73 100644
--- a/lib/3270i/Makefile.in
+++ b/lib/3270i/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,12 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/3270stubs/Makefile.in b/lib/3270stubs/Makefile.in
index 4dec63ab..ec76ca1e 100644
--- a/lib/3270stubs/Makefile.in
+++ b/lib/3270stubs/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,12 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/32xx/Makefile.in b/lib/32xx/Makefile.in
index f19b60a0..6288b3b3 100644
--- a/lib/32xx/Makefile.in
+++ b/lib/32xx/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,12 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/32xx/Makefile.test.in b/lib/32xx/Makefile.test.in
index 6da85e22..d18e02aa 100644
--- a/lib/32xx/Makefile.test.in
+++ b/lib/32xx/Makefile.test.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-test: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-coverage: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
+default: all
+all test coverage clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.test.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/Makefile.aux b/lib/Makefile.aux
index 55be5b06..5b2ad888 100644
--- a/lib/Makefile.aux
+++ b/lib/Makefile.aux
@@ -1,4 +1,4 @@
-# Copyright (c) 2015-2024 Paul Mattes.
+# Copyright (c) 2015-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -27,13 +27,13 @@
 # Auxiliary Makefile for lib.
 
 prepare src.tgz: configure
-	cd 3270 && $(MAKE) -f Makefile.aux $@
-	cd 3270i && $(MAKE) -f Makefile.aux $@
-	cd 32xx && $(MAKE) -f Makefile.aux $@
-	cd 3270stubs && $(MAKE) -f Makefile.aux $@
-	cd w3270 && $(MAKE) -f Makefile.aux $@
-	cd w3270i && $(MAKE) -f Makefile.aux $@
-	cd w32xx && $(MAKE) -f Makefile.aux $@
-	cd w3270stubs && $(MAKE) -f Makefile.aux $@
+	$(MAKE) -C 3270 -f Makefile.aux $@
+	$(MAKE) -C 3270i -f Makefile.aux $@
+	$(MAKE) -C 32xx -f Makefile.aux $@
+	$(MAKE) -C 3270stubs -f Makefile.aux $@
+	$(MAKE) -C w3270 -f Makefile.aux $@
+	$(MAKE) -C w3270i -f Makefile.aux $@
+	$(MAKE) -C w32xx -f Makefile.aux $@
+	$(MAKE) -C w3270stubs -f Makefile.aux $@
 configure: configure.in
 	autoconf
diff --git a/lib/libexpat/Makefile b/lib/libexpat/Makefile
index 11618cbc..09473099 100644
--- a/lib/libexpat/Makefile
+++ b/lib/libexpat/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2024 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -43,11 +43,9 @@ export THIS = $(this)
 MAKEINC = -I$(top)/extern/libexpat/expat/lib -I$(top)/Common/Win32 -I$(this)
 
 all: $(srcdir) $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
+clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/w3270/Makefile b/lib/w3270/Makefile
index 2b93d32e..8cbd85ed 100644
--- a/lib/w3270/Makefile
+++ b/lib/w3270/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/w3270/Makefile.test b/lib/w3270/Makefile.test
index 8c4954b8..98e75838 100644
--- a/lib/w3270/Makefile.test
+++ b/lib/w3270/Makefile.test
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this)
 
-test: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
+test clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.test.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/w3270i/Makefile b/lib/w3270i/Makefile
index 591d1652..68fd05c9 100644
--- a/lib/w3270i/Makefile
+++ b/lib/w3270i/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/w3270stubs/Makefile b/lib/w3270stubs/Makefile
index d89b315d..79dc9370 100644
--- a/lib/w3270stubs/Makefile
+++ b/lib/w3270stubs/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/w32xx/Makefile b/lib/w32xx/Makefile
index 03d737cb..32bbc41b 100644
--- a/lib/w32xx/Makefile
+++ b/lib/w32xx/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this)
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/lib/w32xx/Makefile.test b/lib/w32xx/Makefile.test
index 606f6721..ee6f8b91 100644
--- a/lib/w32xx/Makefile.test
+++ b/lib/w32xx/Makefile.test
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32 -I$(this)
 
-test: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.test.obj $@
+test clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.test.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/mitm/Makefile.in b/mitm/Makefile.in
index 26239a70..01e0442f 100644
--- a/mitm/Makefile.in
+++ b/mitm/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/playback/Makefile.in b/playback/Makefile.in
index b16d5c6b..b5b8f174 100644
--- a/playback/Makefile.in
+++ b/playback/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,12 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/pr3287/Makefile.in b/pr3287/Makefile.in
index 690ee2dd..3d6ad300 100644
--- a/pr3287/Makefile.in
+++ b/pr3287/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/pr3287
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/s3270/Makefile.in b/s3270/Makefile.in
index 6e65853c..d5312915 100644
--- a/s3270/Makefile.in
+++ b/s3270/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/tcl3270/Makefile.in b/tcl3270/Makefile.in
index fdff6d11..dc1b325e 100644
--- a/tcl3270/Makefile.in
+++ b/tcl3270/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/wb3270/Makefile b/wb3270/Makefile
index 4c4fec1b..a98a7ebc 100644
--- a/wb3270/Makefile
+++ b/wb3270/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/b3270 -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/wc3270/Makefile b/wc3270/Makefile
index 8b06f8bb..005721ea 100755
--- a/wc3270/Makefile
+++ b/wc3270/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(top)/Common -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/wmitm/Makefile b/wmitm/Makefile
index 84ef2dd3..19b44c61 100644
--- a/wmitm/Makefile
+++ b/wmitm/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/mitm -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/wplayback/Makefile b/wplayback/Makefile
index 9fba7f12..f668afa8 100644
--- a/wplayback/Makefile
+++ b/wplayback/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/wpr3287/Makefile b/wpr3287/Makefile
index 4cfb49ba..0955961d 100755
--- a/wpr3287/Makefile
+++ b/wpr3287/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common/pr3287 -I$(top)/Common -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/ws3270/Makefile b/ws3270/Makefile
index 9c23a90e..0f763dac 100755
--- a/ws3270/Makefile
+++ b/ws3270/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/wx3270if/Makefile b/wx3270if/Makefile
index 089bccc1..24ac8320 100644
--- a/wx3270if/Makefile
+++ b/wx3270if/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -39,12 +39,8 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common -I$(top)/x3270if -I$(top)/Common/Win32
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+all clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/x3270/Makefile.in b/x3270/Makefile.in
index e96d5a62..e874c098 100644
--- a/x3270/Makefile.in
+++ b/x3270/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
diff --git a/x3270if/Makefile.in b/x3270if/Makefile.in
index 5215242e..f4a8e8ec 100644
--- a/x3270if/Makefile.in
+++ b/x3270if/Makefile.in
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2022 Paul Mattes.
+# Copyright (c) 2016-2025 Paul Mattes.
 # All rights reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -35,16 +35,9 @@ export THIS = $(this)
 
 MAKEINC = -I$(this) -I$(top)/Common
 
-all: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-install.man: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clean: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
-clobber: $(objdir)
-	cd $(objdir) && $(MAKE) $(MAKEINC) -f $(this)/Makefile.obj $@
+default: all
+all install install.man clean clobber: $(objdir)
+	$(MAKE) -C $(objdir) $(MAKEINC) -f $(this)/Makefile.obj $@
 
 $(objdir):
 	mkdir -p $(objdir)
-- 
2.47.1

openSUSE Build Service is sponsored by