Gitweb links:

...log 
http://git.netsurf-browser.org/toolchains.git/shortlog/b135d8b8e86dc285f416940aceb8e1062e69d98c
...commit 
http://git.netsurf-browser.org/toolchains.git/commit/b135d8b8e86dc285f416940aceb8e1062e69d98c
...tree 
http://git.netsurf-browser.org/toolchains.git/tree/b135d8b8e86dc285f416940aceb8e1062e69d98c

The branch, jmb/gitsrc has been updated
       via  b135d8b8e86dc285f416940aceb8e1062e69d98c (commit)
      from  2aef18af4379d5547c6a7e2b9df34f9bc61a0895 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/toolchains.git/commit/?id=b135d8b8e86dc285f416940aceb8e1062e69d98c
commit b135d8b8e86dc285f416940aceb8e1062e69d98c
Author: John-Mark Bell <[email protected]>
Commit: John-Mark Bell <[email protected]>

    SDK: fetch sources from git

diff --git a/sdk/Makefile b/sdk/Makefile
index ba6ab7b50c..f157205d7c 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -32,44 +32,35 @@ endif
 
 # https://github.com/google/brotli
 VERSION_BROTLI := 1.2.0
-CKSUM_BROTLI := 
816c96e8e8f193b40151dad7e8ff37b1221d019dbcb9c35cd3fadbfe6477dfec
 # https://zlib.net/
 VERSION_ZLIB := 1.3.1
-CKSUM_ZLIB := 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
 
 # Cryptography
 
 # https://openssl-library.org/
 VERSION_OPENSSL := 3.5.4
-CKSUM_OPENSSL := 
967311f84955316969bdb1d8d4b983718ef42338639c621ec4c34fddef355e99
 
 # Document parsers
 
 # https://github.com/libexpat/libexpat
 VERSION_LIBEXPAT := 2.7.3
-CKSUM_LIBEXPAT := 
821ac9710d2c073eaf13e1b1895a9c9aa66c1157a99635c639fbff65cdbdd732
 
 # Image formats
 
 # https://libjpeg-turbo.org/
 VERSION_LIBJPEG_TURBO := 3.1.2
-CKSUM_LIBJPEG_TURBO := 
8f0012234b464ce50890c490f18194f913a7b1f4e6a03d6644179fa0f867d0cf
 # http://www.libpng.org/pub/png/libpng.html
 VERSION_LIBPNG := 1.6.53
-CKSUM_LIBPNG := 
da0b045cbb1d06a8fc9696f9441359f70645f280ff24ae453ccb7c722353654f
 # https://developers.google.com/speed/webp/
 VERSION_LIBWEBP := 1.6.0
-CKSUM_LIBWEBP := 
e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564
 
 # Network transports and name resolution
 
 # https://c-ares.org/
 # https://github.com/c-ares/c-ares/releases/download/
 VERSION_LIBCARES := 1.34.5
-CKSUM_LIBCARES := 
7d935790e9af081c25c495fd13c2cfcda4792983418e96358ef6e7320ee06346
 # https://curl.se/
 VERSION_LIBCURL := 8.17.0
-CKSUM_LIBCURL := 
e8e74cdeefe5fb78b3ae6e90cd542babf788fa9480029cfcee6fd9ced42b7910
 
 ############################################################################
 
@@ -77,51 +68,40 @@ CKSUM_LIBCURL := 
e8e74cdeefe5fb78b3ae6e90cd542babf788fa9480029cfcee6fd9ced42b791
 
 # https://www.gnu.org/software/libiconv/
 VERSION_LIBICONV := 1.18
-CKSUM_LIBICONV := 
3b08f5f4f9b4eb82f151a7040bfd6fe6c6fb922efe4b1659c66ea933276965e8
 
 # Platforms that don't use libjpeg-turbo (AmigaOS 3, Atari, Windows)
 
 # http://libjpeg.sourceforge.net/
 VERSION_LIBJPEG := 8d
-CKSUM_LIBJPEG := 
00029b1473f0f0ea72fbca3230e8cb25797fbb27e58ae2e46bb8bf5a806fe0b3
 
 # AmigaOS only components
 
 # http://mission-base.com/peter/source/
 # 1.7.0: https://github.com/peterGraf/pbl/releases
 VERSION_LIBPBL := 1_04
-CKSUM_LIBPBL := 
20f0ab1af09a22a8f3cb3ce3832247a6b51d8db57211f6bb0794af9485229a67
 # https://github.com/laurikari/tre/
 VERSION_LIBTRE := 0.9.0
-CKSUM_LIBTRE := 
f57f5698cafdfe516d11fb0b71705916fe1162f14b08cf69d7cf86923b5a2477
 #
-VERSION_ROADSHOW := 7_64_0-amissl
-CKSUM_ROADSHOW := 
5af092c2319f184d49f5eda72d160231b3f3551f9884f8136c531521059a4ad2
+VERSION_ROADSHOW := 7.64.0-amissl
 
 # Atari only components
 
 # https://www.freetype.org/
 VERSION_FREETYPE := 2.14.1
-CKSUM_FREETYPE := 
174d9e53402e1bf9ec7277e22ec199ba3e55a6be2c0740cb18c0ee9850fc8c34
 
 # https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v1.3.3.tar.gz
 VERSION_HERMES := 1.3.3
-CKSUM_HERMES := 
e86374606105d2a251d4406e5f9fca8d09e2fd971ebb0dfd342e40953676c46e
 #
 VERSION_LDG := SVN-20150827
-CKSUM_LDG := ca7959d31b46cb1e755005eddcc0daf6a91f7faad7d869d82e94d98d20650d94
 # Git-20170304
 VERSION_LIBCF := CVS-20130415
-CKSUM_LIBCF := 5d25c4faa2f5b7fc106bb47d093646f79d0fa72a34aaf8122110a2e4cf9eb6cc
 #
 VERSION_WINDOM := 2.0.1
-CKSUM_WINDOM := 
2539c15c22f7b8ca48c015f0c3d33f3bd1666cc8aa56eef6f38de2cc98a3479e
 
 # Windows only components
 
 #
 VERSION_LIBGNURX := 2.5.1
-CKSUM_LIBGNURX := 
7147b7f806ec3d007843b38e19f42a5b7c65894a57ffc297a76b0dcd5f675d76
 
 ############################################################################
 
@@ -181,7 +161,8 @@ BUILDSTEPS := $(BUILDDIR)/build-steps
 # Tools
 # patch: refuse to countenance fuzz
 PATCH := patch -F0
-FETCHSRC := $(CURDIR)/fetchsrc
+PRISTINE_TAR := $(CURDIR)/../tools/pristine-tar
+REPACK := $(CURDIR)/../tools/repack
 
 # Compute the SDK components
 SDK_ITEMS :=
@@ -238,7 +219,7 @@ ifeq ($(TARGET),m5475-atari-mint)
 endif
 
 ifeq ($(TARGET),ppc-amigaos)
-  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, libiconv.d libtre.d libpbl.d 
$(COMMON_SDK_ITEMS) libjpeg-turbo.d)
+  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, libiconv.d tre.d pbl.d 
$(COMMON_SDK_ITEMS) libjpeg-turbo.d)
   LIBCURL_SSL := amissl
   EXTRAARGS_LIBCARES := --disable-shared
   EXTRAARGS_LIBCURL := --disable-ntlm-wb --without-random 
--enable-threaded-resolver --disable-ipv6 LIBS=-lpthread
@@ -246,7 +227,7 @@ ifeq ($(TARGET),ppc-amigaos)
 endif
 
 ifeq ($(TARGET),m68k-unknown-amigaos)
-  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, roadshow.d libiconv.d libtre.d 
libpbl.d $(COMMON_SDK_ITEMS) libjpeg.d)
+  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, roadshow.d libiconv.d tre.d pbl.d 
$(COMMON_SDK_ITEMS) libjpeg.d)
   EXTRAARGS_LIBCARES := --disable-shared --without-random
   LIBCARES_ENV := LIBS="-lm -lnet -lunix"
   LIBCURL_SSL := amissl
@@ -293,9 +274,11 @@ ifeq ($(SDK_ITEMS),)
   $(error Unable to compute SDK components for target $(TARGET))
 endif
 
-.PHONY: all clean distclean
+.PHONY: all clean distclean source-archives
 all: $(SDK_ITEMS)
 
+source-archives: $(BUILDSTEPS)/sources.d
+
 clean:
        rm -fr $(BUILDDIR)
 
@@ -316,12 +299,14 @@ $(BUILDSTEPS)/builddir.d: | $(BUILDSTEPS)
 $(BUILDSTEPS):
        mkdir -p $(BUILDSTEPS)
 
+$(BUILDSTEPS)/sources.d: $(BUILDSTEPS)/builddir.d $(foreach 
item,$(SDK_ITEMS),$(basename $(item))-gensrc.d)
+       touch $@
 
 define uc
 $(shell echo $(1) | tr a-z A-Z)
 endef
 
-# Patch source code from sdk recipies
+# Patch source code from sdk recipes
 #
 # 1: module name to patch
 # 2: path to source code
@@ -336,22 +321,26 @@ endef
 #
 # 1: module name
 # 2: module version
-# 3: optional tar base
+# 3: optional tarball suffix (default: .tar.gz)
+# 4: optional tar base to which "-$(2)" will be appended (default: $(1))
 define patched_source_rule
 
 # directory with patched source
-BUILDDIR_$(call uc,$(1)) := $$(BUILDDIR)/$(1)/$(if $(3),$(3),$(1))-$(2)
-# original source tar gz
-SOURCETGZ_$(call uc,$(1)) := $$(SOURCEDIR)/$(1)-$(2).tar.gz
+BUILDDIR_$(call uc,$(1)) := $$(BUILDDIR)/$(1)/$(if $(4),$(4),$(1))-$(2)
+# original source tarball
+SOURCETARBALL_$(call uc,$(1)) := $$(SOURCEDIR)/$(1)_$(2)$(if $(3),$(3),.tar.gz)
 # patched source build step
 BUILDSTEP_SRC_$(call uc,$(1)) := $$(BUILDSTEPS)/$(1)-src-$(2).d
 
-$$(BUILDSTEPS)/$(1)-src-$(2).d: $$(SOURCEDIR)/$(1)-$(2).tar.gz
+$$(BUILDSTEPS)/$(1)-src-$(2).d: $$(SOURCETARBALL_$(call uc,$(1)))
        mkdir -p $$(BUILDDIR)/$(1)
-       $$(RM) -rf $$(BUILDDIR)/$(1)/$(if $(3),$(3),$(1))-$(2)
+       $$(RM) -rf $$(BUILDDIR_$(call uc,$(1)))
        cd $$(BUILDDIR)/$(1) && tar xaf $$<
-       $$(call patch_source,$(1),$$(BUILDDIR)/$(1)/$(if $(3),$(3),$(1))-$(2))
+       $$(call patch_source,$(1),$$(BUILDDIR_$(call uc,$(1))))
        touch $$@
+
+$$(SOURCETARBALL_$(call uc,$(1))): $$(BUILDSTEPS)/sourcedir.d
+       cd $$(CURDIR)/.. && $$(PRISTINE_TAR) checkout $$(subst 
$$(SOURCEDIR)/,,$$@) && mv $$(CURDIR)/../$$(subst $$(SOURCEDIR)/,,$$@) $$@
 endef
 
 #######
@@ -365,8 +354,9 @@ $(BUILDSTEPS)/zlib.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_ZLIB)
        cd $(BUILDDIR_ZLIB) && $(env) make install
        touch $@
 
-$(SOURCETGZ_ZLIB): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://zlib.net/fossils/$(subst $(SOURCEDIR)/,,$@)" $(CKSUM_ZLIB) $@
+$(BUILDSTEPS)/zlib-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_ZLIB)) 
"https://zlib.net/fossils/$(subst _,-,$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ZLIB)))"
+       touch $@
 
 
 ###########
@@ -380,121 +370,104 @@ $(BUILDSTEPS)/libiconv.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBICONV)
        cd $(BUILDDIR_LIBICONV) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBICONV): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://ftp.gnu.org/pub/gnu/libiconv/$(subst $(SOURCEDIR)/,,$@)" 
$(CKSUM_LIBICONV) $@
+$(BUILDSTEPS)/libiconv-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBICONV)) 
"https://ftp.gnu.org/pub/gnu/libiconv/$(subst _,-,$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBICONV)))"
+       touch $@
 
 
 ###########
 # libgnurx
 ###########
 
-$(BUILDSTEPS)/libgnurx.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libgnurx-src.d
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--enable-static --disable-shared
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
make
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
make install
+$(eval $(call 
patched_source_rule,libgnurx,$(VERSION_LIBGNURX),.tar.gz,mingw-libgnurx))
+
+$(BUILDSTEPS)/libgnurx.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEPS)/libgnurx-src2.d
+       cd $(BUILDDIR_LIBGNURX) && $(env) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--enable-static --disable-shared
+       cd $(BUILDDIR_LIBGNURX) && $(env) make
+       cd $(BUILDDIR_LIBGNURX) && $(env) make install
        touch $@
 
-$(BUILDSTEPS)/libgnurx-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/libgnurx-$(VERSION_LIBGNURX).tar.gz
-       mkdir -p $(BUILDDIR)/libgnurx
-       cd $(BUILDDIR)/libgnurx && tar xaf 
$(SOURCEDIR)/libgnurx-$(VERSION_LIBGNURX).tar.gz
-       for p in $$(ls $(RECIPES)/patches/libgnurx/*.p) ; do $(PATCH) -d 
$(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) -p0 <$$p ; done
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
libtoolize --copy
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
aclocal
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
autoconf
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
automake --add-missing
+$(BUILDSTEPS)/libgnurx-src2.d: $(BUILDSTEP_SRC_LIBGNURX)
+       cd $(BUILDDIR_LIBGNURX) && $(env) libtoolize --copy
+       cd $(BUILDDIR_LIBGNURX) && $(env) aclocal
+       cd $(BUILDDIR_LIBGNURX) && $(env) autoconf
+       cd $(BUILDDIR_LIBGNURX) && $(env) automake --add-missing
        touch $@
 
-$(SOURCEDIR)/libgnurx-$(VERSION_LIBGNURX).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://downloads.sourceforge.net/project/mingw/Other/UserContributed/regex/mingw-regex-$(VERSION_LIBGNURX)/mingw-libgnurx-$(VERSION_LIBGNURX)-src.tar.gz"
 $(CKSUM_LIBGNURX) $@
+$(BUILDSTEPS)/libgnurx-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBGNURX)) 
"https://downloads.sourceforge.net/project/mingw/Other/UserContributed/regex/mingw-regex-$(VERSION_LIBGNURX)/mingw-libgnurx-$(VERSION_LIBGNURX)-src.tar.gz"
+       touch $@
 
 
 ###################
 # atari cf library
 ###################
 
-$(BUILDSTEPS)/libcf.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libcf-src.d
-       $(env) make -C $(BUILDDIR)/libcf/cflib-$(VERSION_LIBCF)/cflib 
CROSSPREFIX=${TARGET}- PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes
+$(eval $(call patched_source_rule,libcf,$(VERSION_LIBCF),.tar.bz2,cflib))
+
+$(BUILDSTEPS)/libcf.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBCF)
+       $(env) make -C $(BUILDDIR_LIBCF)/cflib CROSSPREFIX=${TARGET}- 
PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes
        mkdir -p $(GCCSDK_INSTALL_ENV)/lib/mshort
        mkdir -p $(GCCSDK_INSTALL_ENV)/lib/m68020-60
        mkdir -p $(GCCSDK_INSTALL_ENV)/lib/m5475
-       $(env) make -C $(BUILDDIR)/libcf/cflib-$(VERSION_LIBCF)/cflib 
CROSSPREFIX=${TARGET}- PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes install
+       $(env) make -C $(BUILDDIR_LIBCF)/cflib CROSSPREFIX=${TARGET}- 
PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes install
        touch $@
 
-$(BUILDSTEPS)/libcf-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/libcf-$(VERSION_LIBCF).tar.bz2
-       $(RM) -rf $(BUILDDIR)/libcf
-       mkdir -p $(BUILDDIR)/libcf
-       cd $(BUILDDIR)/libcf && tar xaf 
$(SOURCEDIR)/libcf-$(VERSION_LIBCF).tar.bz2
+$(BUILDSTEPS)/libcf-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBCF)) 
"https://ci.netsurf-browser.org/toolchain/sdk/libcf-$(VERSION_LIBCF).tar.bz2"
        touch $@
 
-$(SOURCEDIR)/libcf-$(VERSION_LIBCF).tar.bz2:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/cflib-$(VERSION_LIBCF).tar.bz2"
 $(CKSUM_LIBCF) $@
-
 
 #######################
 # atari windom library
 #######################
 
-$(BUILDSTEPS)/windom.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/windom-src.d
-       mkdir -p $(BUILDDIR)/windom
-       cd $(BUILDDIR)/windom && unzip $(SOURCEDIR)/windom-$(VERSION_WINDOM).zip
-       for p in `ls $(RECIPES)/patches/windom/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1 -p0 <$$p ; done
-ifneq ($(realpath $(RECIPES)/patches/windom/$(TARGET)),)
-       for p in `ls $(RECIPES)/patches/windom/$(TARGET)/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1 -p0 <$$p ; done
-endif
-       $(env) make -C $(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1/src -f 
gcc.mak CROSS=yes CROSSPREFIX=${TARGET} 
M68K_ATARI_MINT_CFLAGS="-I$(GCCSDK_INSTALL_ENV)/include/" 
-       $(env) make -C $(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1/src -f 
gcc.mak CROSS=yes CROSSPREFIX=${TARGET} PREFIX=$(GCCSDK_INSTALL_ENV) install
-       touch $@
+$(eval $(call patched_source_rule,windom,$(VERSION_WINDOM)))
 
-$(BUILDSTEPS)/windom-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/windom-$(VERSION_WINDOM).zip
+$(BUILDSTEPS)/windom.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_WINDOM)
+       $(env) make -C $(BUILDDIR_WINDOM)/src -f gcc.mak CROSS=yes 
CROSSPREFIX=${TARGET} M68K_ATARI_MINT_CFLAGS="-I$(GCCSDK_INSTALL_ENV)/include/" 
+       $(env) make -C $(BUILDDIR_WINDOM)/src -f gcc.mak CROSS=yes 
CROSSPREFIX=${TARGET} PREFIX=$(GCCSDK_INSTALL_ENV) install
        touch $@
 
-$(SOURCEDIR)/windom-$(VERSION_WINDOM).zip:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://downloads.sourceforge.net/project/windom/windom/$(VERSION_WINDOM)/windom-$(VERSION_WINDOM)-1.zip"
 $(CKSUM_WINDOM) $@
+$(BUILDSTEPS)/windom-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_WINDOM)))).zip 
"https://downloads.sourceforge.net/project/windom/windom/$(VERSION_WINDOM)/windom-$(VERSION_WINDOM)-1.zip"
+       $(REPACK) $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_WINDOM)))).zip $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_WINDOM))
+       touch $@
 
 
 ####################
 # atari ldg library
 ####################
 
-$(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/ldg-src.d
-       mkdir -p $(BUILDDIR)/ldg
-       cd $(BUILDDIR)/ldg && tar xjf $(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
-       $(env) make -C $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/src/devel -f gcc.mak 
CROSS=yes PREFIX=$(GCCSDK_INSTALL_ENV) CC=${TARGET}-gcc AR=${TARGET}-ar
-       cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/lib/gcc/libldg.a 
$(GCCSDK_INSTALL_ENV)/lib/
-       cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg.h 
$(GCCSDK_INSTALL_ENV)/include/ldg.h
+$(eval $(call patched_source_rule,ldg,$(VERSION_LDG),.tar.bz2))
+
+$(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LDG)
+       $(env) make -C $(BUILDDIR_LDG)/src/devel -f gcc.mak CROSS=yes 
PREFIX=$(GCCSDK_INSTALL_ENV) CC=${TARGET}-gcc AR=${TARGET}-ar
+       cp $(BUILDDIR_LDG)/lib/gcc/libldg.a $(GCCSDK_INSTALL_ENV)/lib/
+       cp $(BUILDDIR_LDG)/include/ldg.h $(GCCSDK_INSTALL_ENV)/include/ldg.h
        mkdir -p $(GCCSDK_INSTALL_ENV)/include/ldg
-       cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg/mem.h 
$(GCCSDK_INSTALL_ENV)/include/ldg/
+       cp $(BUILDDIR_LDG)/include/ldg/mem.h $(GCCSDK_INSTALL_ENV)/include/ldg/
        touch $@
 
-$(BUILDSTEPS)/ldg-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
+$(BUILDSTEPS)/ldg-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LDG)) 
"http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/ldg-$(VERSION_LDG).tar.bz2"
        touch $@
 
-$(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/ldg-$(VERSION_LDG).tar.bz2"
 $(CKSUM_LDG) $@
-
 
 ####################
 # hermes bitmap lib
 ####################
 
-$(BUILDSTEPS)/hermes.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/hermes-src.d
-       cd $(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES)
-       for p in `ls $(RECIPES)/patches/hermes/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) -p0 <$$p ; done
-ifneq ($(realpath $(RECIPES)/patches/hermes/$(TARGET)),)
-       for p in `ls $(RECIPES)/patches/hermes/$(TARGET)/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) -p0 <$$p ; done
-endif
-       cd $(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) && $(env) 
./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --disable-x86asm
-       cd $(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) && $(env) 
make CFLAGS="-D__BIG_ENDIAN__" install
-       touch $@
+$(eval $(call 
patched_source_rule,hermes,$(VERSION_HERMES),.tar.gz,hermes-pixel-format))
 
-$(BUILDSTEPS)/hermes-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz
-       $(RM) -rf $(BUILDDIR)/hermes
-       mkdir -p $(BUILDDIR)/hermes
-       cd $(BUILDDIR)/hermes && tar xaf 
$(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz
+$(BUILDSTEPS)/hermes.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_HERMES)
+       cd $(BUILDDIR_HERMES) && $(env) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --disable-x86asm
+       cd $(BUILDDIR_HERMES) && $(env) make CFLAGS="-D__BIG_ENDIAN__" install
        touch $@
 
-$(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v$(VERSION_HERMES).tar.gz"
 $(CKSUM_HERMES) $@
+$(BUILDSTEPS)/hermes-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_HERMES)) 
"https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v$(VERSION_HERMES).tar.gz"
+       touch $@
 
 
 ####################
@@ -503,99 +476,91 @@ $(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz:
 
 $(eval $(call patched_source_rule,freetype,$(VERSION_FREETYPE)))
 
-$(BUILDSTEPS)/freetype.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEPS)/freetype-src-$(VERSION_FREETYPE).d
-       cd $(BUILDDIR)/freetype/freetype-$(VERSION_FREETYPE) && $(env) 
$(FREETYPE_ENV) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) 
--host=$(TARGET) --disable-shared --with-harfbuzz=no
-       cd $(BUILDDIR)/freetype/freetype-$(VERSION_FREETYPE) && $(env) make
-       cd $(BUILDDIR)/freetype/freetype-$(VERSION_FREETYPE) && $(env) make 
install 
+$(BUILDSTEPS)/freetype.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_FREETYPE)
+       cd $(BUILDDIR_FREETYPE) && $(env) $(FREETYPE_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --with-harfbuzz=no
+       cd $(BUILDDIR_FREETYPE) && $(env) make
+       cd $(BUILDDIR_FREETYPE) && $(env) make install 
        touch $@
 
-$(SOURCEDIR)/freetype-$(VERSION_FREETYPE).tar.gz: $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://download.savannah.gnu.org/releases/freetype/freetype-$(VERSION_FREETYPE).tar.gz"
 $(CKSUM_FREETYPE) $@
+$(BUILDSTEPS)/freetype-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_FREETYPE)) 
"https://download.savannah.gnu.org/releases/freetype/freetype-$(VERSION_FREETYPE).tar.gz"
+       touch $@
 
 
 #####################
 # amiga roadshow sdk
 #####################
 
-$(BUILDSTEPS)/roadshow.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/roadshow-src.d
-       mkdir -p $(BUILDDIR)/Roadshow-SDK
-       lha xw=$(BUILDDIR)/Roadshow-SDK 
$(SOURCEDIR)/Roadshow-SDK-NS-$(VERSION_ROADSHOW).lha
+$(eval $(call patched_source_rule,roadshow,$(VERSION_ROADSHOW)))
+
+$(BUILDSTEPS)/roadshow.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_ROADSHOW)
        mkdir -p $(GCCSDK_INSTALL_ENV)/netinclude
-       cp -r $(BUILDDIR)/Roadshow-SDK/SDK/netinclude/* 
$(GCCSDK_INSTALL_ENV)/netinclude/
+       cp -r $(BUILDDIR_ROADSHOW)/netinclude/* 
$(GCCSDK_INSTALL_ENV)/netinclude/
        touch $@
 
-$(BUILDSTEPS)/roadshow-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/Roadshow-SDK-NS-$(VERSION_ROADSHOW).lha
+$(BUILDSTEPS)/roadshow-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ROADSHOW)))).lha 
"https://github.com/chris-y/curl/releases/download/curl-$(subst 
.,_,$(VERSION_ROADSHOW))/Roadshow-SDK-NS.lha"
+       $(REPACK) $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ROADSHOW)))).lha $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ROADSHOW))
        touch $@
 
-$(SOURCEDIR)/Roadshow-SDK-NS-$(VERSION_ROADSHOW).lha:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/chris-y/curl/releases/download/curl-$(VERSION_ROADSHOW)/Roadshow-SDK-NS.lha"
 $(CKSUM_ROADSHOW) $@
-
 
 ########
 # regex
 ########
 
-$(BUILDSTEPS)/libtre.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libtre-src.d
-       mkdir -p $(BUILDDIR)/libtre
-       cd $(BUILDDIR)/libtre && tar xaf 
$(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.gz
-       cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && $(env) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared
-       cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && $(env) make install
+$(eval $(call patched_source_rule,tre,$(VERSION_LIBTRE),.tar.gz))
+
+$(BUILDSTEPS)/tre.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_TRE)
+       cd $(BUILDDIR_TRE) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) 
--target=$(TARGET) --host=$(TARGET) --disable-shared
+       cd $(BUILDDIR_TRE) && $(env) make install
        cp $(RECIPES)/files/libtre/regex.h $(GCCSDK_INSTALL_ENV)/include/regex.h
        touch $@
 
-$(BUILDSTEPS)/libtre-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.gz
+$(BUILDSTEPS)/tre-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_TRE)) 
"https://github.com/laurikari/tre/releases/download/v$(VERSION_LIBTRE)/$(subst 
_,-,$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_TRE)))"
        touch $@
 
-$(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/laurikari/tre/releases/download/v$(VERSION_LIBTRE)/$(subst 
$(SOURCEDIR)/,,$@)" $(CKSUM_LIBTRE) $@
-
 
 ########
 # libpbl
 ########
 
-$(BUILDSTEPS)/libpbl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libpbl-src.d
-       cd $(BUILDDIR)/libpbl/pbl_$(VERSION_LIBPBL)_04 && $(env) make install 
PREFIX=$(GCCSDK_INSTALL_ENV)
-       touch $@
+$(eval $(call patched_source_rule,pbl,$(VERSION_LIBPBL)))
+# This one is awkward so we get to override the generated value
+BUILDDIR_PBL := $(BUILDDIR)/pbl/pbl_$(VERSION_LIBPBL)_04
 
-$(BUILDSTEPS)/libpbl-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/pbl_$(VERSION_LIBPBL).tar.gz
-       mkdir -p $(BUILDDIR)/libpbl
-       cd $(BUILDDIR)/libpbl && tar xaf 
$(SOURCEDIR)/pbl_$(VERSION_LIBPBL).tar.gz
-       for p in `ls $(RECIPES)/patches/libpbl/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/libpbl/pbl_$(VERSION_LIBPBL)_04 -p0 <$$p ; done
-ifneq ($(realpath $(RECIPES)/patches/libpbl/$(TARGET)),)
-       for p in `ls $(RECIPES)/patches/libpbl/$(TARGET)/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/libpbl/pbl_$(VERSION_LIBPBL)_04 -p0 <$$p ; done
-endif
+$(BUILDSTEPS)/pbl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_PBL)
+       cd $(BUILDDIR_PBL) && $(env) make install PREFIX=$(GCCSDK_INSTALL_ENV)
        touch $@
 
-$(SOURCEDIR)/pbl_$(VERSION_LIBPBL).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://www.mission-base.com/peter/source/$(subst $(SOURCEDIR)/,,$@)" 
$(CKSUM_LIBPBL) $@
+$(BUILDSTEPS)/pbl-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_PBL)) 
"https://www.mission-base.com/peter/source/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_PBL))"
+       touch $@
 
 
 #########
 # OpenSSL
 #########
 
-$(BUILDSTEPS)/openssl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d 
$(BUILDSTEPS)/openssl-src.d
+$(eval $(call patched_source_rule,openssl,$(VERSION_OPENSSL)))
+
+$(BUILDSTEPS)/openssl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d 
$(BUILDSTEPS)/openssl-src2.d
 ifeq ($(LIBCURL_SSL),openssl)
-       cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) 
$(ENV_OPENSSL) ./Configure --prefix=$(GCCSDK_INSTALL_ENV) $(TARGET_OPENSSL) 
no-shared no-threads $(EXTRAARGS_OPENSSL)
-       cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) make install
+       cd $(BUILDDIR_OPENSSL) && $(env) $(ENV_OPENSSL) ./Configure 
--prefix=$(GCCSDK_INSTALL_ENV) $(TARGET_OPENSSL) no-shared no-threads 
$(EXTRAARGS_OPENSSL)
+       cd $(BUILDDIR_OPENSSL) && $(env) make install
 endif
        touch $@
 
 # prepare the openssl source tree
-$(BUILDSTEPS)/openssl-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz
-       mkdir -p $(BUILDDIR)/openssl
-       $(RM) -rf $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL)
-       cd $(BUILDDIR)/openssl && tar xaf 
$(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz
-       $(call 
patch_source,openssl,$(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL))
+$(BUILDSTEPS)/openssl-src2.d: $(BUILDSTEP_SRC_OPENSSL)
 ifneq ($(realpath $(RECIPES)/files/openssl/$(TARGET)),)
-       cp -r $(RECIPES)/files/openssl/$(TARGET)/* 
$(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL)
+       cp -r $(RECIPES)/files/openssl/$(TARGET)/* $(BUILDDIR_OPENSSL)
 endif
        touch $@
 
-# get the openssl source tar
-$(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/openssl/openssl/releases/download/openssl-$(VERSION_OPENSSL)/$(subst
 $(SOURCEDIR)/,,$@)" $(CKSUM_OPENSSL) $@
+$(BUILDSTEPS)/openssl-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_OPENSSL)) 
"https://github.com/openssl/openssl/releases/download/openssl-$(VERSION_OPENSSL)/$(subst
 _,-,$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_OPENSSL)))"
+       touch $@
 
 
 #########
@@ -609,30 +574,32 @@ $(BUILDSTEPS)/libpng.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEPS)/zlib.d $(BUILDSTE
        cd $(BUILDDIR_LIBPNG) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBPNG): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://downloads.sourceforge.net/libpng/$(subst $(SOURCEDIR)/,,$@)" 
$(CKSUM_LIBPNG) $@
+$(BUILDSTEPS)/libpng-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBPNG)) 
"https://downloads.sourceforge.net/libpng/$(subst _,-,$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBPNG)))"
+       touch $@
 
 
 ##########
 # libjpeg
 ##########
 
-$(eval $(call patched_source_rule,libjpeg,$(VERSION_LIBJPEG),jpeg))
+$(eval $(call patched_source_rule,libjpeg,$(VERSION_LIBJPEG),.tar.gz,jpeg))
 
 $(BUILDSTEPS)/libjpeg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBJPEG)
        cd $(BUILDDIR_LIBJPEG) && $(env) $(LIBJPEG_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared
        cd $(BUILDDIR_LIBJPEG) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBJPEG): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk jpegsrc.v$(VERSION_LIBJPEG).tar.gz 
"https://ijg.org/files/jpegsrc.v$(VERSION_LIBJPEG).tar.gz" $(CKSUM_LIBJPEG) $@
+$(BUILDSTEPS)/libjpeg-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBJPEG)) 
"https://ijg.org/files/jpegsrc.v$(VERSION_LIBJPEG).tar.gz"
+       touch $@
 
 
 ###############
 # libjpegturbo
 ###############
 
-$(eval $(call 
patched_source_rule,libjpegturbo,$(VERSION_LIBJPEG_TURBO),libjpeg-turbo))
+$(eval $(call 
patched_source_rule,libjpegturbo,$(VERSION_LIBJPEG_TURBO),.tar.gz,libjpeg-turbo))
 
 # build jpeg turbo library with cmake
 $(BUILDSTEPS)/libjpeg-turbo.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBJPEGTURBO)
@@ -641,9 +608,9 @@ $(BUILDSTEPS)/libjpeg-turbo.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBJPEGT
        cd $(BUILDDIR_LIBJPEGTURBO)/ns-sdk-build && $(env) make install 
VERBOSE=1
        touch $@
 
-# jpeg turbo source tar
-$(SOURCETGZ_LIBJPEGTURBO): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$(VERSION_LIBJPEG_TURBO)/libjpeg-turbo-$(VERSION_LIBJPEG_TURBO).tar.gz"
 $(CKSUM_LIBJPEG_TURBO) $@
+$(BUILDSTEPS)/libjpeg-turbo-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBJPEGTURBO)) 
"https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$(VERSION_LIBJPEG_TURBO)/libjpeg-turbo-$(VERSION_LIBJPEG_TURBO).tar.gz"
+       touch $@
 
 
 ############
@@ -659,9 +626,9 @@ $(BUILDSTEPS)/libbrotli.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_BROTLI)
        cd $(BUILDDIR_BROTLI)/ns-sdk-build && $(env) make install VERBOSE=1
        touch $@
 
-# libbrotli tar
-$(SOURCETGZ_BROTLI): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/google/brotli/archive/refs/tags/v$(VERSION_BROTLI).tar.gz" 
$(CKSUM_BROTLI) $@
+$(BUILDSTEPS)/libbrotli-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_BROTLI)) 
"https://github.com/google/brotli/archive/refs/tags/v$(VERSION_BROTLI).tar.gz"
+       touch $@
 
 
 ##########
@@ -675,51 +642,54 @@ $(BUILDSTEPS)/libwebp.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBWEBP)
        cd $(BUILDDIR_LIBWEBP) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBWEBP): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$(VERSION_LIBWEBP).tar.gz"
 $(CKSUM_LIBWEBP) $@
+$(BUILDSTEPS)/libwebp-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBWEBP)) 
"https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$(VERSION_LIBWEBP).tar.gz"
+       touch $@
 
 
 ###########
 # libcares
 ###########
 
-$(eval $(call patched_source_rule,libcares,$(VERSION_LIBCARES),c-ares))
+$(eval $(call patched_source_rule,libcares,$(VERSION_LIBCARES),.tar.gz,c-ares))
 
 $(BUILDSTEPS)/libcares.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBCARES)
        cd $(BUILDDIR_LIBCARES) && $(cleanenv) $(LIBCARES_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
$(EXTRAARGS_LIBCARES)
        cd $(BUILDDIR_LIBCARES) && $(cleanenv) make install
        touch $@
 
-$(SOURCETGZ_LIBCARES): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk c-ares-$(VERSION_LIBCARES).tar.gz 
"https://github.com/c-ares/c-ares/releases/download/v$(VERSION_LIBCARES)/c-ares-$(VERSION_LIBCARES).tar.gz"
 $(CKSUM_LIBCARES) $@
+$(BUILDSTEPS)/libcares-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBCARES)) 
"https://github.com/c-ares/c-ares/releases/download/v$(VERSION_LIBCARES)/c-ares-$(VERSION_LIBCARES).tar.gz"
+       touch $@
 
 
 ##########
 # libcurl
 ##########
 
-$(eval $(call patched_source_rule,libcurl,$(VERSION_LIBCURL),curl))
+$(eval $(call patched_source_rule,libcurl,$(VERSION_LIBCURL),.tar.gz,curl))
 
 $(BUILDSTEPS)/libcurl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d 
$(BUILDSTEPS)/openssl.d $(BUILDSTEPS)/libcares.d $(BUILDSTEP_SRC_LIBCURL)
        cd $(BUILDDIR_LIBCURL) && $(env) CFLAGS="" $(LIBCURL_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --with-$(LIBCURL_SSL) --without-libidn2 --without-libpsl 
${EXTRAARGS_LIBCURL}
        cd $(BUILDDIR_LIBCURL) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBCURL): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk curl-$(VERSION_LIBCURL).tar.gz 
"https://curl.se/download/curl-$(VERSION_LIBCURL).tar.gz" $(CKSUM_LIBCURL) $@
+$(BUILDSTEPS)/libcurl-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBCURL)) 
"https://curl.se/download/curl-$(VERSION_LIBCURL).tar.gz"
+       touch $@
 
 
 ###########
 # libexpat
 ###########
 
-$(eval $(call patched_source_rule,libexpat,$(VERSION_LIBEXPAT),expat))
+$(eval $(call patched_source_rule,libexpat,$(VERSION_LIBEXPAT),.tar.gz,expat))
 
 $(BUILDSTEPS)/libexpat.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBEXPAT)
        cd $(BUILDDIR_LIBEXPAT) && $(env) $(LIBEXPAT_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared $(EXTRAARGS_LIBEXPAT)
        cd $(BUILDDIR_LIBEXPAT) && $(env) $(LIBEXPAT_ENV) make install
        touch $@
 
-$(SOURCETGZ_LIBEXPAT): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk expat-$(VERSION_LIBEXPAT).tar.gz 
"https://github.com/libexpat/libexpat/releases/download/R_$(subst 
.,_,$(VERSION_LIBEXPAT))/expat-$(VERSION_LIBEXPAT).tar.gz" $(CKSUM_LIBEXPAT) $@
-
+$(BUILDSTEPS)/libexpat-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBEXPAT)) 
"https://github.com/libexpat/libexpat/releases/download/R_$(subst 
.,_,$(VERSION_LIBEXPAT))/expat-$(VERSION_LIBEXPAT).tar.gz"
+       touch $@
diff --git a/sdk/recipes/patches/libpbl/Makefile.p 
b/sdk/recipes/patches/pbl/Makefile.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/Makefile.p
rename to sdk/recipes/patches/pbl/Makefile.p
diff --git a/sdk/recipes/patches/libpbl/m68k-unknown-amigaos/no-malloc.h.p 
b/sdk/recipes/patches/pbl/m68k-unknown-amigaos/no-malloc.h.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/m68k-unknown-amigaos/no-malloc.h.p
rename to sdk/recipes/patches/pbl/m68k-unknown-amigaos/no-malloc.h.p
diff --git a/sdk/recipes/patches/libpbl/pbl.h.p 
b/sdk/recipes/patches/pbl/pbl.h.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/pbl.h.p
rename to sdk/recipes/patches/pbl/pbl.h.p
diff --git a/sdk/recipes/patches/libpbl/ppc-amigaos/no-memory.h.p 
b/sdk/recipes/patches/pbl/ppc-amigaos/no-memory.h.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/ppc-amigaos/no-memory.h.p
rename to sdk/recipes/patches/pbl/ppc-amigaos/no-memory.h.p


-----------------------------------------------------------------------

Summary of changes:
 sdk/Makefile                                       | 312 ++++++++++-----------
 sdk/recipes/patches/{libpbl => pbl}/Makefile.p     |   0
 .../m68k-unknown-amigaos/no-malloc.h.p             |   0
 sdk/recipes/patches/{libpbl => pbl}/pbl.h.p        |   0
 .../{libpbl => pbl}/ppc-amigaos/no-memory.h.p      |   0
 5 files changed, 141 insertions(+), 171 deletions(-)
 rename sdk/recipes/patches/{libpbl => pbl}/Makefile.p (100%)
 rename sdk/recipes/patches/{libpbl => pbl}/m68k-unknown-amigaos/no-malloc.h.p 
(100%)
 rename sdk/recipes/patches/{libpbl => pbl}/pbl.h.p (100%)
 rename sdk/recipes/patches/{libpbl => pbl}/ppc-amigaos/no-memory.h.p (100%)

diff --git a/sdk/Makefile b/sdk/Makefile
index ba6ab7b50c..f157205d7c 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -32,44 +32,35 @@ endif
 
 # https://github.com/google/brotli
 VERSION_BROTLI := 1.2.0
-CKSUM_BROTLI := 
816c96e8e8f193b40151dad7e8ff37b1221d019dbcb9c35cd3fadbfe6477dfec
 # https://zlib.net/
 VERSION_ZLIB := 1.3.1
-CKSUM_ZLIB := 9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
 
 # Cryptography
 
 # https://openssl-library.org/
 VERSION_OPENSSL := 3.5.4
-CKSUM_OPENSSL := 
967311f84955316969bdb1d8d4b983718ef42338639c621ec4c34fddef355e99
 
 # Document parsers
 
 # https://github.com/libexpat/libexpat
 VERSION_LIBEXPAT := 2.7.3
-CKSUM_LIBEXPAT := 
821ac9710d2c073eaf13e1b1895a9c9aa66c1157a99635c639fbff65cdbdd732
 
 # Image formats
 
 # https://libjpeg-turbo.org/
 VERSION_LIBJPEG_TURBO := 3.1.2
-CKSUM_LIBJPEG_TURBO := 
8f0012234b464ce50890c490f18194f913a7b1f4e6a03d6644179fa0f867d0cf
 # http://www.libpng.org/pub/png/libpng.html
 VERSION_LIBPNG := 1.6.53
-CKSUM_LIBPNG := 
da0b045cbb1d06a8fc9696f9441359f70645f280ff24ae453ccb7c722353654f
 # https://developers.google.com/speed/webp/
 VERSION_LIBWEBP := 1.6.0
-CKSUM_LIBWEBP := 
e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564
 
 # Network transports and name resolution
 
 # https://c-ares.org/
 # https://github.com/c-ares/c-ares/releases/download/
 VERSION_LIBCARES := 1.34.5
-CKSUM_LIBCARES := 
7d935790e9af081c25c495fd13c2cfcda4792983418e96358ef6e7320ee06346
 # https://curl.se/
 VERSION_LIBCURL := 8.17.0
-CKSUM_LIBCURL := 
e8e74cdeefe5fb78b3ae6e90cd542babf788fa9480029cfcee6fd9ced42b7910
 
 ############################################################################
 
@@ -77,51 +68,40 @@ CKSUM_LIBCURL := 
e8e74cdeefe5fb78b3ae6e90cd542babf788fa9480029cfcee6fd9ced42b791
 
 # https://www.gnu.org/software/libiconv/
 VERSION_LIBICONV := 1.18
-CKSUM_LIBICONV := 
3b08f5f4f9b4eb82f151a7040bfd6fe6c6fb922efe4b1659c66ea933276965e8
 
 # Platforms that don't use libjpeg-turbo (AmigaOS 3, Atari, Windows)
 
 # http://libjpeg.sourceforge.net/
 VERSION_LIBJPEG := 8d
-CKSUM_LIBJPEG := 
00029b1473f0f0ea72fbca3230e8cb25797fbb27e58ae2e46bb8bf5a806fe0b3
 
 # AmigaOS only components
 
 # http://mission-base.com/peter/source/
 # 1.7.0: https://github.com/peterGraf/pbl/releases
 VERSION_LIBPBL := 1_04
-CKSUM_LIBPBL := 
20f0ab1af09a22a8f3cb3ce3832247a6b51d8db57211f6bb0794af9485229a67
 # https://github.com/laurikari/tre/
 VERSION_LIBTRE := 0.9.0
-CKSUM_LIBTRE := 
f57f5698cafdfe516d11fb0b71705916fe1162f14b08cf69d7cf86923b5a2477
 #
-VERSION_ROADSHOW := 7_64_0-amissl
-CKSUM_ROADSHOW := 
5af092c2319f184d49f5eda72d160231b3f3551f9884f8136c531521059a4ad2
+VERSION_ROADSHOW := 7.64.0-amissl
 
 # Atari only components
 
 # https://www.freetype.org/
 VERSION_FREETYPE := 2.14.1
-CKSUM_FREETYPE := 
174d9e53402e1bf9ec7277e22ec199ba3e55a6be2c0740cb18c0ee9850fc8c34
 
 # https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v1.3.3.tar.gz
 VERSION_HERMES := 1.3.3
-CKSUM_HERMES := 
e86374606105d2a251d4406e5f9fca8d09e2fd971ebb0dfd342e40953676c46e
 #
 VERSION_LDG := SVN-20150827
-CKSUM_LDG := ca7959d31b46cb1e755005eddcc0daf6a91f7faad7d869d82e94d98d20650d94
 # Git-20170304
 VERSION_LIBCF := CVS-20130415
-CKSUM_LIBCF := 5d25c4faa2f5b7fc106bb47d093646f79d0fa72a34aaf8122110a2e4cf9eb6cc
 #
 VERSION_WINDOM := 2.0.1
-CKSUM_WINDOM := 
2539c15c22f7b8ca48c015f0c3d33f3bd1666cc8aa56eef6f38de2cc98a3479e
 
 # Windows only components
 
 #
 VERSION_LIBGNURX := 2.5.1
-CKSUM_LIBGNURX := 
7147b7f806ec3d007843b38e19f42a5b7c65894a57ffc297a76b0dcd5f675d76
 
 ############################################################################
 
@@ -181,7 +161,8 @@ BUILDSTEPS := $(BUILDDIR)/build-steps
 # Tools
 # patch: refuse to countenance fuzz
 PATCH := patch -F0
-FETCHSRC := $(CURDIR)/fetchsrc
+PRISTINE_TAR := $(CURDIR)/../tools/pristine-tar
+REPACK := $(CURDIR)/../tools/repack
 
 # Compute the SDK components
 SDK_ITEMS :=
@@ -238,7 +219,7 @@ ifeq ($(TARGET),m5475-atari-mint)
 endif
 
 ifeq ($(TARGET),ppc-amigaos)
-  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, libiconv.d libtre.d libpbl.d 
$(COMMON_SDK_ITEMS) libjpeg-turbo.d)
+  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, libiconv.d tre.d pbl.d 
$(COMMON_SDK_ITEMS) libjpeg-turbo.d)
   LIBCURL_SSL := amissl
   EXTRAARGS_LIBCARES := --disable-shared
   EXTRAARGS_LIBCURL := --disable-ntlm-wb --without-random 
--enable-threaded-resolver --disable-ipv6 LIBS=-lpthread
@@ -246,7 +227,7 @@ ifeq ($(TARGET),ppc-amigaos)
 endif
 
 ifeq ($(TARGET),m68k-unknown-amigaos)
-  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, roadshow.d libiconv.d libtre.d 
libpbl.d $(COMMON_SDK_ITEMS) libjpeg.d)
+  SDK_ITEMS := $(addprefix $(BUILDSTEPS)/, roadshow.d libiconv.d tre.d pbl.d 
$(COMMON_SDK_ITEMS) libjpeg.d)
   EXTRAARGS_LIBCARES := --disable-shared --without-random
   LIBCARES_ENV := LIBS="-lm -lnet -lunix"
   LIBCURL_SSL := amissl
@@ -293,9 +274,11 @@ ifeq ($(SDK_ITEMS),)
   $(error Unable to compute SDK components for target $(TARGET))
 endif
 
-.PHONY: all clean distclean
+.PHONY: all clean distclean source-archives
 all: $(SDK_ITEMS)
 
+source-archives: $(BUILDSTEPS)/sources.d
+
 clean:
        rm -fr $(BUILDDIR)
 
@@ -316,12 +299,14 @@ $(BUILDSTEPS)/builddir.d: | $(BUILDSTEPS)
 $(BUILDSTEPS):
        mkdir -p $(BUILDSTEPS)
 
+$(BUILDSTEPS)/sources.d: $(BUILDSTEPS)/builddir.d $(foreach 
item,$(SDK_ITEMS),$(basename $(item))-gensrc.d)
+       touch $@
 
 define uc
 $(shell echo $(1) | tr a-z A-Z)
 endef
 
-# Patch source code from sdk recipies
+# Patch source code from sdk recipes
 #
 # 1: module name to patch
 # 2: path to source code
@@ -336,22 +321,26 @@ endef
 #
 # 1: module name
 # 2: module version
-# 3: optional tar base
+# 3: optional tarball suffix (default: .tar.gz)
+# 4: optional tar base to which "-$(2)" will be appended (default: $(1))
 define patched_source_rule
 
 # directory with patched source
-BUILDDIR_$(call uc,$(1)) := $$(BUILDDIR)/$(1)/$(if $(3),$(3),$(1))-$(2)
-# original source tar gz
-SOURCETGZ_$(call uc,$(1)) := $$(SOURCEDIR)/$(1)-$(2).tar.gz
+BUILDDIR_$(call uc,$(1)) := $$(BUILDDIR)/$(1)/$(if $(4),$(4),$(1))-$(2)
+# original source tarball
+SOURCETARBALL_$(call uc,$(1)) := $$(SOURCEDIR)/$(1)_$(2)$(if $(3),$(3),.tar.gz)
 # patched source build step
 BUILDSTEP_SRC_$(call uc,$(1)) := $$(BUILDSTEPS)/$(1)-src-$(2).d
 
-$$(BUILDSTEPS)/$(1)-src-$(2).d: $$(SOURCEDIR)/$(1)-$(2).tar.gz
+$$(BUILDSTEPS)/$(1)-src-$(2).d: $$(SOURCETARBALL_$(call uc,$(1)))
        mkdir -p $$(BUILDDIR)/$(1)
-       $$(RM) -rf $$(BUILDDIR)/$(1)/$(if $(3),$(3),$(1))-$(2)
+       $$(RM) -rf $$(BUILDDIR_$(call uc,$(1)))
        cd $$(BUILDDIR)/$(1) && tar xaf $$<
-       $$(call patch_source,$(1),$$(BUILDDIR)/$(1)/$(if $(3),$(3),$(1))-$(2))
+       $$(call patch_source,$(1),$$(BUILDDIR_$(call uc,$(1))))
        touch $$@
+
+$$(SOURCETARBALL_$(call uc,$(1))): $$(BUILDSTEPS)/sourcedir.d
+       cd $$(CURDIR)/.. && $$(PRISTINE_TAR) checkout $$(subst 
$$(SOURCEDIR)/,,$$@) && mv $$(CURDIR)/../$$(subst $$(SOURCEDIR)/,,$$@) $$@
 endef
 
 #######
@@ -365,8 +354,9 @@ $(BUILDSTEPS)/zlib.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_ZLIB)
        cd $(BUILDDIR_ZLIB) && $(env) make install
        touch $@
 
-$(SOURCETGZ_ZLIB): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://zlib.net/fossils/$(subst $(SOURCEDIR)/,,$@)" $(CKSUM_ZLIB) $@
+$(BUILDSTEPS)/zlib-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_ZLIB)) 
"https://zlib.net/fossils/$(subst _,-,$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ZLIB)))"
+       touch $@
 
 
 ###########
@@ -380,121 +370,104 @@ $(BUILDSTEPS)/libiconv.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBICONV)
        cd $(BUILDDIR_LIBICONV) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBICONV): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://ftp.gnu.org/pub/gnu/libiconv/$(subst $(SOURCEDIR)/,,$@)" 
$(CKSUM_LIBICONV) $@
+$(BUILDSTEPS)/libiconv-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBICONV)) 
"https://ftp.gnu.org/pub/gnu/libiconv/$(subst _,-,$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBICONV)))"
+       touch $@
 
 
 ###########
 # libgnurx
 ###########
 
-$(BUILDSTEPS)/libgnurx.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libgnurx-src.d
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--enable-static --disable-shared
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
make
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
make install
+$(eval $(call 
patched_source_rule,libgnurx,$(VERSION_LIBGNURX),.tar.gz,mingw-libgnurx))
+
+$(BUILDSTEPS)/libgnurx.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEPS)/libgnurx-src2.d
+       cd $(BUILDDIR_LIBGNURX) && $(env) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--enable-static --disable-shared
+       cd $(BUILDDIR_LIBGNURX) && $(env) make
+       cd $(BUILDDIR_LIBGNURX) && $(env) make install
        touch $@
 
-$(BUILDSTEPS)/libgnurx-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/libgnurx-$(VERSION_LIBGNURX).tar.gz
-       mkdir -p $(BUILDDIR)/libgnurx
-       cd $(BUILDDIR)/libgnurx && tar xaf 
$(SOURCEDIR)/libgnurx-$(VERSION_LIBGNURX).tar.gz
-       for p in $$(ls $(RECIPES)/patches/libgnurx/*.p) ; do $(PATCH) -d 
$(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) -p0 <$$p ; done
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
libtoolize --copy
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
aclocal
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
autoconf
-       cd $(BUILDDIR)/libgnurx/mingw-libgnurx-$(VERSION_LIBGNURX) && $(env) 
automake --add-missing
+$(BUILDSTEPS)/libgnurx-src2.d: $(BUILDSTEP_SRC_LIBGNURX)
+       cd $(BUILDDIR_LIBGNURX) && $(env) libtoolize --copy
+       cd $(BUILDDIR_LIBGNURX) && $(env) aclocal
+       cd $(BUILDDIR_LIBGNURX) && $(env) autoconf
+       cd $(BUILDDIR_LIBGNURX) && $(env) automake --add-missing
        touch $@
 
-$(SOURCEDIR)/libgnurx-$(VERSION_LIBGNURX).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://downloads.sourceforge.net/project/mingw/Other/UserContributed/regex/mingw-regex-$(VERSION_LIBGNURX)/mingw-libgnurx-$(VERSION_LIBGNURX)-src.tar.gz"
 $(CKSUM_LIBGNURX) $@
+$(BUILDSTEPS)/libgnurx-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBGNURX)) 
"https://downloads.sourceforge.net/project/mingw/Other/UserContributed/regex/mingw-regex-$(VERSION_LIBGNURX)/mingw-libgnurx-$(VERSION_LIBGNURX)-src.tar.gz"
+       touch $@
 
 
 ###################
 # atari cf library
 ###################
 
-$(BUILDSTEPS)/libcf.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libcf-src.d
-       $(env) make -C $(BUILDDIR)/libcf/cflib-$(VERSION_LIBCF)/cflib 
CROSSPREFIX=${TARGET}- PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes
+$(eval $(call patched_source_rule,libcf,$(VERSION_LIBCF),.tar.bz2,cflib))
+
+$(BUILDSTEPS)/libcf.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBCF)
+       $(env) make -C $(BUILDDIR_LIBCF)/cflib CROSSPREFIX=${TARGET}- 
PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes
        mkdir -p $(GCCSDK_INSTALL_ENV)/lib/mshort
        mkdir -p $(GCCSDK_INSTALL_ENV)/lib/m68020-60
        mkdir -p $(GCCSDK_INSTALL_ENV)/lib/m5475
-       $(env) make -C $(BUILDDIR)/libcf/cflib-$(VERSION_LIBCF)/cflib 
CROSSPREFIX=${TARGET}- PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes install
+       $(env) make -C $(BUILDDIR_LIBCF)/cflib CROSSPREFIX=${TARGET}- 
PREFIX=$(GCCSDK_INSTALL_ENV) CROSS=yes install
        touch $@
 
-$(BUILDSTEPS)/libcf-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/libcf-$(VERSION_LIBCF).tar.bz2
-       $(RM) -rf $(BUILDDIR)/libcf
-       mkdir -p $(BUILDDIR)/libcf
-       cd $(BUILDDIR)/libcf && tar xaf 
$(SOURCEDIR)/libcf-$(VERSION_LIBCF).tar.bz2
+$(BUILDSTEPS)/libcf-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBCF)) 
"https://ci.netsurf-browser.org/toolchain/sdk/libcf-$(VERSION_LIBCF).tar.bz2"
        touch $@
 
-$(SOURCEDIR)/libcf-$(VERSION_LIBCF).tar.bz2:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/cflib-$(VERSION_LIBCF).tar.bz2"
 $(CKSUM_LIBCF) $@
-
 
 #######################
 # atari windom library
 #######################
 
-$(BUILDSTEPS)/windom.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/windom-src.d
-       mkdir -p $(BUILDDIR)/windom
-       cd $(BUILDDIR)/windom && unzip $(SOURCEDIR)/windom-$(VERSION_WINDOM).zip
-       for p in `ls $(RECIPES)/patches/windom/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1 -p0 <$$p ; done
-ifneq ($(realpath $(RECIPES)/patches/windom/$(TARGET)),)
-       for p in `ls $(RECIPES)/patches/windom/$(TARGET)/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1 -p0 <$$p ; done
-endif
-       $(env) make -C $(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1/src -f 
gcc.mak CROSS=yes CROSSPREFIX=${TARGET} 
M68K_ATARI_MINT_CFLAGS="-I$(GCCSDK_INSTALL_ENV)/include/" 
-       $(env) make -C $(BUILDDIR)/windom/windom-$(VERSION_WINDOM)-1/src -f 
gcc.mak CROSS=yes CROSSPREFIX=${TARGET} PREFIX=$(GCCSDK_INSTALL_ENV) install
-       touch $@
+$(eval $(call patched_source_rule,windom,$(VERSION_WINDOM)))
 
-$(BUILDSTEPS)/windom-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/windom-$(VERSION_WINDOM).zip
+$(BUILDSTEPS)/windom.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_WINDOM)
+       $(env) make -C $(BUILDDIR_WINDOM)/src -f gcc.mak CROSS=yes 
CROSSPREFIX=${TARGET} M68K_ATARI_MINT_CFLAGS="-I$(GCCSDK_INSTALL_ENV)/include/" 
+       $(env) make -C $(BUILDDIR_WINDOM)/src -f gcc.mak CROSS=yes 
CROSSPREFIX=${TARGET} PREFIX=$(GCCSDK_INSTALL_ENV) install
        touch $@
 
-$(SOURCEDIR)/windom-$(VERSION_WINDOM).zip:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://downloads.sourceforge.net/project/windom/windom/$(VERSION_WINDOM)/windom-$(VERSION_WINDOM)-1.zip"
 $(CKSUM_WINDOM) $@
+$(BUILDSTEPS)/windom-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_WINDOM)))).zip 
"https://downloads.sourceforge.net/project/windom/windom/$(VERSION_WINDOM)/windom-$(VERSION_WINDOM)-1.zip"
+       $(REPACK) $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_WINDOM)))).zip $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_WINDOM))
+       touch $@
 
 
 ####################
 # atari ldg library
 ####################
 
-$(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/ldg-src.d
-       mkdir -p $(BUILDDIR)/ldg
-       cd $(BUILDDIR)/ldg && tar xjf $(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
-       $(env) make -C $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/src/devel -f gcc.mak 
CROSS=yes PREFIX=$(GCCSDK_INSTALL_ENV) CC=${TARGET}-gcc AR=${TARGET}-ar
-       cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/lib/gcc/libldg.a 
$(GCCSDK_INSTALL_ENV)/lib/
-       cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg.h 
$(GCCSDK_INSTALL_ENV)/include/ldg.h
+$(eval $(call patched_source_rule,ldg,$(VERSION_LDG),.tar.bz2))
+
+$(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LDG)
+       $(env) make -C $(BUILDDIR_LDG)/src/devel -f gcc.mak CROSS=yes 
PREFIX=$(GCCSDK_INSTALL_ENV) CC=${TARGET}-gcc AR=${TARGET}-ar
+       cp $(BUILDDIR_LDG)/lib/gcc/libldg.a $(GCCSDK_INSTALL_ENV)/lib/
+       cp $(BUILDDIR_LDG)/include/ldg.h $(GCCSDK_INSTALL_ENV)/include/ldg.h
        mkdir -p $(GCCSDK_INSTALL_ENV)/include/ldg
-       cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg/mem.h 
$(GCCSDK_INSTALL_ENV)/include/ldg/
+       cp $(BUILDDIR_LDG)/include/ldg/mem.h $(GCCSDK_INSTALL_ENV)/include/ldg/
        touch $@
 
-$(BUILDSTEPS)/ldg-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
+$(BUILDSTEPS)/ldg-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LDG)) 
"http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/ldg-$(VERSION_LDG).tar.bz2"
        touch $@
 
-$(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/ldg-$(VERSION_LDG).tar.bz2"
 $(CKSUM_LDG) $@
-
 
 ####################
 # hermes bitmap lib
 ####################
 
-$(BUILDSTEPS)/hermes.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/hermes-src.d
-       cd $(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES)
-       for p in `ls $(RECIPES)/patches/hermes/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) -p0 <$$p ; done
-ifneq ($(realpath $(RECIPES)/patches/hermes/$(TARGET)),)
-       for p in `ls $(RECIPES)/patches/hermes/$(TARGET)/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) -p0 <$$p ; done
-endif
-       cd $(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) && $(env) 
./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --disable-x86asm
-       cd $(BUILDDIR)/hermes/hermes-pixel-format-$(VERSION_HERMES) && $(env) 
make CFLAGS="-D__BIG_ENDIAN__" install
-       touch $@
+$(eval $(call 
patched_source_rule,hermes,$(VERSION_HERMES),.tar.gz,hermes-pixel-format))
 
-$(BUILDSTEPS)/hermes-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz
-       $(RM) -rf $(BUILDDIR)/hermes
-       mkdir -p $(BUILDDIR)/hermes
-       cd $(BUILDDIR)/hermes && tar xaf 
$(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz
+$(BUILDSTEPS)/hermes.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_HERMES)
+       cd $(BUILDDIR_HERMES) && $(env) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --disable-x86asm
+       cd $(BUILDDIR_HERMES) && $(env) make CFLAGS="-D__BIG_ENDIAN__" install
        touch $@
 
-$(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v$(VERSION_HERMES).tar.gz"
 $(CKSUM_HERMES) $@
+$(BUILDSTEPS)/hermes-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_HERMES)) 
"https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v$(VERSION_HERMES).tar.gz"
+       touch $@
 
 
 ####################
@@ -503,99 +476,91 @@ $(SOURCEDIR)/hermes-$(VERSION_HERMES).tar.gz:
 
 $(eval $(call patched_source_rule,freetype,$(VERSION_FREETYPE)))
 
-$(BUILDSTEPS)/freetype.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEPS)/freetype-src-$(VERSION_FREETYPE).d
-       cd $(BUILDDIR)/freetype/freetype-$(VERSION_FREETYPE) && $(env) 
$(FREETYPE_ENV) ./configure --prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) 
--host=$(TARGET) --disable-shared --with-harfbuzz=no
-       cd $(BUILDDIR)/freetype/freetype-$(VERSION_FREETYPE) && $(env) make
-       cd $(BUILDDIR)/freetype/freetype-$(VERSION_FREETYPE) && $(env) make 
install 
+$(BUILDSTEPS)/freetype.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_FREETYPE)
+       cd $(BUILDDIR_FREETYPE) && $(env) $(FREETYPE_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --with-harfbuzz=no
+       cd $(BUILDDIR_FREETYPE) && $(env) make
+       cd $(BUILDDIR_FREETYPE) && $(env) make install 
        touch $@
 
-$(SOURCEDIR)/freetype-$(VERSION_FREETYPE).tar.gz: $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://download.savannah.gnu.org/releases/freetype/freetype-$(VERSION_FREETYPE).tar.gz"
 $(CKSUM_FREETYPE) $@
+$(BUILDSTEPS)/freetype-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_FREETYPE)) 
"https://download.savannah.gnu.org/releases/freetype/freetype-$(VERSION_FREETYPE).tar.gz"
+       touch $@
 
 
 #####################
 # amiga roadshow sdk
 #####################
 
-$(BUILDSTEPS)/roadshow.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/roadshow-src.d
-       mkdir -p $(BUILDDIR)/Roadshow-SDK
-       lha xw=$(BUILDDIR)/Roadshow-SDK 
$(SOURCEDIR)/Roadshow-SDK-NS-$(VERSION_ROADSHOW).lha
+$(eval $(call patched_source_rule,roadshow,$(VERSION_ROADSHOW)))
+
+$(BUILDSTEPS)/roadshow.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_ROADSHOW)
        mkdir -p $(GCCSDK_INSTALL_ENV)/netinclude
-       cp -r $(BUILDDIR)/Roadshow-SDK/SDK/netinclude/* 
$(GCCSDK_INSTALL_ENV)/netinclude/
+       cp -r $(BUILDDIR_ROADSHOW)/netinclude/* 
$(GCCSDK_INSTALL_ENV)/netinclude/
        touch $@
 
-$(BUILDSTEPS)/roadshow-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/Roadshow-SDK-NS-$(VERSION_ROADSHOW).lha
+$(BUILDSTEPS)/roadshow-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ROADSHOW)))).lha 
"https://github.com/chris-y/curl/releases/download/curl-$(subst 
.,_,$(VERSION_ROADSHOW))/Roadshow-SDK-NS.lha"
+       $(REPACK) $(BUILDDIR)/$(basename $(basename $(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ROADSHOW)))).lha $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_ROADSHOW))
        touch $@
 
-$(SOURCEDIR)/Roadshow-SDK-NS-$(VERSION_ROADSHOW).lha:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/chris-y/curl/releases/download/curl-$(VERSION_ROADSHOW)/Roadshow-SDK-NS.lha"
 $(CKSUM_ROADSHOW) $@
-
 
 ########
 # regex
 ########
 
-$(BUILDSTEPS)/libtre.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libtre-src.d
-       mkdir -p $(BUILDDIR)/libtre
-       cd $(BUILDDIR)/libtre && tar xaf 
$(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.gz
-       cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && $(env) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared
-       cd $(BUILDDIR)/libtre/tre-$(VERSION_LIBTRE) && $(env) make install
+$(eval $(call patched_source_rule,tre,$(VERSION_LIBTRE),.tar.gz))
+
+$(BUILDSTEPS)/tre.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_TRE)
+       cd $(BUILDDIR_TRE) && $(env) ./configure --prefix=$(GCCSDK_INSTALL_ENV) 
--target=$(TARGET) --host=$(TARGET) --disable-shared
+       cd $(BUILDDIR_TRE) && $(env) make install
        cp $(RECIPES)/files/libtre/regex.h $(GCCSDK_INSTALL_ENV)/include/regex.h
        touch $@
 
-$(BUILDSTEPS)/libtre-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.gz
+$(BUILDSTEPS)/tre-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_TRE)) 
"https://github.com/laurikari/tre/releases/download/v$(VERSION_LIBTRE)/$(subst 
_,-,$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_TRE)))"
        touch $@
 
-$(SOURCEDIR)/tre-$(VERSION_LIBTRE).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/laurikari/tre/releases/download/v$(VERSION_LIBTRE)/$(subst 
$(SOURCEDIR)/,,$@)" $(CKSUM_LIBTRE) $@
-
 
 ########
 # libpbl
 ########
 
-$(BUILDSTEPS)/libpbl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libpbl-src.d
-       cd $(BUILDDIR)/libpbl/pbl_$(VERSION_LIBPBL)_04 && $(env) make install 
PREFIX=$(GCCSDK_INSTALL_ENV)
-       touch $@
+$(eval $(call patched_source_rule,pbl,$(VERSION_LIBPBL)))
+# This one is awkward so we get to override the generated value
+BUILDDIR_PBL := $(BUILDDIR)/pbl/pbl_$(VERSION_LIBPBL)_04
 
-$(BUILDSTEPS)/libpbl-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/pbl_$(VERSION_LIBPBL).tar.gz
-       mkdir -p $(BUILDDIR)/libpbl
-       cd $(BUILDDIR)/libpbl && tar xaf 
$(SOURCEDIR)/pbl_$(VERSION_LIBPBL).tar.gz
-       for p in `ls $(RECIPES)/patches/libpbl/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/libpbl/pbl_$(VERSION_LIBPBL)_04 -p0 <$$p ; done
-ifneq ($(realpath $(RECIPES)/patches/libpbl/$(TARGET)),)
-       for p in `ls $(RECIPES)/patches/libpbl/$(TARGET)/*.p` ; do $(PATCH) -d 
$(BUILDDIR)/libpbl/pbl_$(VERSION_LIBPBL)_04 -p0 <$$p ; done
-endif
+$(BUILDSTEPS)/pbl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_PBL)
+       cd $(BUILDDIR_PBL) && $(env) make install PREFIX=$(GCCSDK_INSTALL_ENV)
        touch $@
 
-$(SOURCEDIR)/pbl_$(VERSION_LIBPBL).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://www.mission-base.com/peter/source/$(subst $(SOURCEDIR)/,,$@)" 
$(CKSUM_LIBPBL) $@
+$(BUILDSTEPS)/pbl-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_PBL)) 
"https://www.mission-base.com/peter/source/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_PBL))"
+       touch $@
 
 
 #########
 # OpenSSL
 #########
 
-$(BUILDSTEPS)/openssl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d 
$(BUILDSTEPS)/openssl-src.d
+$(eval $(call patched_source_rule,openssl,$(VERSION_OPENSSL)))
+
+$(BUILDSTEPS)/openssl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d 
$(BUILDSTEPS)/openssl-src2.d
 ifeq ($(LIBCURL_SSL),openssl)
-       cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) 
$(ENV_OPENSSL) ./Configure --prefix=$(GCCSDK_INSTALL_ENV) $(TARGET_OPENSSL) 
no-shared no-threads $(EXTRAARGS_OPENSSL)
-       cd $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL) && $(env) make install
+       cd $(BUILDDIR_OPENSSL) && $(env) $(ENV_OPENSSL) ./Configure 
--prefix=$(GCCSDK_INSTALL_ENV) $(TARGET_OPENSSL) no-shared no-threads 
$(EXTRAARGS_OPENSSL)
+       cd $(BUILDDIR_OPENSSL) && $(env) make install
 endif
        touch $@
 
 # prepare the openssl source tree
-$(BUILDSTEPS)/openssl-src.d: $(BUILDSTEPS)/sourcedir.d 
$(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz
-       mkdir -p $(BUILDDIR)/openssl
-       $(RM) -rf $(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL)
-       cd $(BUILDDIR)/openssl && tar xaf 
$(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz
-       $(call 
patch_source,openssl,$(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL))
+$(BUILDSTEPS)/openssl-src2.d: $(BUILDSTEP_SRC_OPENSSL)
 ifneq ($(realpath $(RECIPES)/files/openssl/$(TARGET)),)
-       cp -r $(RECIPES)/files/openssl/$(TARGET)/* 
$(BUILDDIR)/openssl/openssl-$(VERSION_OPENSSL)
+       cp -r $(RECIPES)/files/openssl/$(TARGET)/* $(BUILDDIR_OPENSSL)
 endif
        touch $@
 
-# get the openssl source tar
-$(SOURCEDIR)/openssl-$(VERSION_OPENSSL).tar.gz:
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/openssl/openssl/releases/download/openssl-$(VERSION_OPENSSL)/$(subst
 $(SOURCEDIR)/,,$@)" $(CKSUM_OPENSSL) $@
+$(BUILDSTEPS)/openssl-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_OPENSSL)) 
"https://github.com/openssl/openssl/releases/download/openssl-$(VERSION_OPENSSL)/$(subst
 _,-,$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_OPENSSL)))"
+       touch $@
 
 
 #########
@@ -609,30 +574,32 @@ $(BUILDSTEPS)/libpng.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEPS)/zlib.d $(BUILDSTE
        cd $(BUILDDIR_LIBPNG) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBPNG): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://downloads.sourceforge.net/libpng/$(subst $(SOURCEDIR)/,,$@)" 
$(CKSUM_LIBPNG) $@
+$(BUILDSTEPS)/libpng-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBPNG)) 
"https://downloads.sourceforge.net/libpng/$(subst _,-,$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBPNG)))"
+       touch $@
 
 
 ##########
 # libjpeg
 ##########
 
-$(eval $(call patched_source_rule,libjpeg,$(VERSION_LIBJPEG),jpeg))
+$(eval $(call patched_source_rule,libjpeg,$(VERSION_LIBJPEG),.tar.gz,jpeg))
 
 $(BUILDSTEPS)/libjpeg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBJPEG)
        cd $(BUILDDIR_LIBJPEG) && $(env) $(LIBJPEG_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared
        cd $(BUILDDIR_LIBJPEG) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBJPEG): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk jpegsrc.v$(VERSION_LIBJPEG).tar.gz 
"https://ijg.org/files/jpegsrc.v$(VERSION_LIBJPEG).tar.gz" $(CKSUM_LIBJPEG) $@
+$(BUILDSTEPS)/libjpeg-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBJPEG)) 
"https://ijg.org/files/jpegsrc.v$(VERSION_LIBJPEG).tar.gz"
+       touch $@
 
 
 ###############
 # libjpegturbo
 ###############
 
-$(eval $(call 
patched_source_rule,libjpegturbo,$(VERSION_LIBJPEG_TURBO),libjpeg-turbo))
+$(eval $(call 
patched_source_rule,libjpegturbo,$(VERSION_LIBJPEG_TURBO),.tar.gz,libjpeg-turbo))
 
 # build jpeg turbo library with cmake
 $(BUILDSTEPS)/libjpeg-turbo.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBJPEGTURBO)
@@ -641,9 +608,9 @@ $(BUILDSTEPS)/libjpeg-turbo.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBJPEGT
        cd $(BUILDDIR_LIBJPEGTURBO)/ns-sdk-build && $(env) make install 
VERBOSE=1
        touch $@
 
-# jpeg turbo source tar
-$(SOURCETGZ_LIBJPEGTURBO): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$(VERSION_LIBJPEG_TURBO)/libjpeg-turbo-$(VERSION_LIBJPEG_TURBO).tar.gz"
 $(CKSUM_LIBJPEG_TURBO) $@
+$(BUILDSTEPS)/libjpeg-turbo-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBJPEGTURBO)) 
"https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/$(VERSION_LIBJPEG_TURBO)/libjpeg-turbo-$(VERSION_LIBJPEG_TURBO).tar.gz"
+       touch $@
 
 
 ############
@@ -659,9 +626,9 @@ $(BUILDSTEPS)/libbrotli.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_BROTLI)
        cd $(BUILDDIR_BROTLI)/ns-sdk-build && $(env) make install VERBOSE=1
        touch $@
 
-# libbrotli tar
-$(SOURCETGZ_BROTLI): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://github.com/google/brotli/archive/refs/tags/v$(VERSION_BROTLI).tar.gz" 
$(CKSUM_BROTLI) $@
+$(BUILDSTEPS)/libbrotli-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_BROTLI)) 
"https://github.com/google/brotli/archive/refs/tags/v$(VERSION_BROTLI).tar.gz"
+       touch $@
 
 
 ##########
@@ -675,51 +642,54 @@ $(BUILDSTEPS)/libwebp.d: $(BUILDSTEPS)/builddir.d 
$(BUILDSTEP_SRC_LIBWEBP)
        cd $(BUILDDIR_LIBWEBP) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBWEBP): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) 
"https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$(VERSION_LIBWEBP).tar.gz"
 $(CKSUM_LIBWEBP) $@
+$(BUILDSTEPS)/libwebp-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBWEBP)) 
"https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$(VERSION_LIBWEBP).tar.gz"
+       touch $@
 
 
 ###########
 # libcares
 ###########
 
-$(eval $(call patched_source_rule,libcares,$(VERSION_LIBCARES),c-ares))
+$(eval $(call patched_source_rule,libcares,$(VERSION_LIBCARES),.tar.gz,c-ares))
 
 $(BUILDSTEPS)/libcares.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBCARES)
        cd $(BUILDDIR_LIBCARES) && $(cleanenv) $(LIBCARES_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
$(EXTRAARGS_LIBCARES)
        cd $(BUILDDIR_LIBCARES) && $(cleanenv) make install
        touch $@
 
-$(SOURCETGZ_LIBCARES): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk c-ares-$(VERSION_LIBCARES).tar.gz 
"https://github.com/c-ares/c-ares/releases/download/v$(VERSION_LIBCARES)/c-ares-$(VERSION_LIBCARES).tar.gz"
 $(CKSUM_LIBCARES) $@
+$(BUILDSTEPS)/libcares-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBCARES)) 
"https://github.com/c-ares/c-ares/releases/download/v$(VERSION_LIBCARES)/c-ares-$(VERSION_LIBCARES).tar.gz"
+       touch $@
 
 
 ##########
 # libcurl
 ##########
 
-$(eval $(call patched_source_rule,libcurl,$(VERSION_LIBCURL),curl))
+$(eval $(call patched_source_rule,libcurl,$(VERSION_LIBCURL),.tar.gz,curl))
 
 $(BUILDSTEPS)/libcurl.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/zlib.d 
$(BUILDSTEPS)/openssl.d $(BUILDSTEPS)/libcares.d $(BUILDSTEP_SRC_LIBCURL)
        cd $(BUILDDIR_LIBCURL) && $(env) CFLAGS="" $(LIBCURL_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared --with-$(LIBCURL_SSL) --without-libidn2 --without-libpsl 
${EXTRAARGS_LIBCURL}
        cd $(BUILDDIR_LIBCURL) && $(env) make install
        touch $@
 
-$(SOURCETGZ_LIBCURL): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk curl-$(VERSION_LIBCURL).tar.gz 
"https://curl.se/download/curl-$(VERSION_LIBCURL).tar.gz" $(CKSUM_LIBCURL) $@
+$(BUILDSTEPS)/libcurl-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst $(SOURCEDIR)/,,$(SOURCETARBALL_LIBCURL)) 
"https://curl.se/download/curl-$(VERSION_LIBCURL).tar.gz"
+       touch $@
 
 
 ###########
 # libexpat
 ###########
 
-$(eval $(call patched_source_rule,libexpat,$(VERSION_LIBEXPAT),expat))
+$(eval $(call patched_source_rule,libexpat,$(VERSION_LIBEXPAT),.tar.gz,expat))
 
 $(BUILDSTEPS)/libexpat.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEP_SRC_LIBEXPAT)
        cd $(BUILDDIR_LIBEXPAT) && $(env) $(LIBEXPAT_ENV) ./configure 
--prefix=$(GCCSDK_INSTALL_ENV) --target=$(TARGET) --host=$(TARGET) 
--disable-shared $(EXTRAARGS_LIBEXPAT)
        cd $(BUILDDIR_LIBEXPAT) && $(env) $(LIBEXPAT_ENV) make install
        touch $@
 
-$(SOURCETGZ_LIBEXPAT): $(BUILDSTEPS)/sourcedir.d
-       $(FETCHSRC) sdk expat-$(VERSION_LIBEXPAT).tar.gz 
"https://github.com/libexpat/libexpat/releases/download/R_$(subst 
.,_,$(VERSION_LIBEXPAT))/expat-$(VERSION_LIBEXPAT).tar.gz" $(CKSUM_LIBEXPAT) $@
-
+$(BUILDSTEPS)/libexpat-gensrc.d: $(BUILDSTEPS)/builddir.d
+       wget -q -O $(BUILDDIR)/$(subst 
$(SOURCEDIR)/,,$(SOURCETARBALL_LIBEXPAT)) 
"https://github.com/libexpat/libexpat/releases/download/R_$(subst 
.,_,$(VERSION_LIBEXPAT))/expat-$(VERSION_LIBEXPAT).tar.gz"
+       touch $@
diff --git a/sdk/recipes/patches/libpbl/Makefile.p 
b/sdk/recipes/patches/pbl/Makefile.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/Makefile.p
rename to sdk/recipes/patches/pbl/Makefile.p
diff --git a/sdk/recipes/patches/libpbl/m68k-unknown-amigaos/no-malloc.h.p 
b/sdk/recipes/patches/pbl/m68k-unknown-amigaos/no-malloc.h.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/m68k-unknown-amigaos/no-malloc.h.p
rename to sdk/recipes/patches/pbl/m68k-unknown-amigaos/no-malloc.h.p
diff --git a/sdk/recipes/patches/libpbl/pbl.h.p 
b/sdk/recipes/patches/pbl/pbl.h.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/pbl.h.p
rename to sdk/recipes/patches/pbl/pbl.h.p
diff --git a/sdk/recipes/patches/libpbl/ppc-amigaos/no-memory.h.p 
b/sdk/recipes/patches/pbl/ppc-amigaos/no-memory.h.p
similarity index 100%
rename from sdk/recipes/patches/libpbl/ppc-amigaos/no-memory.h.p
rename to sdk/recipes/patches/pbl/ppc-amigaos/no-memory.h.p


-- 
Cross-compilation toolchains and environments

Reply via email to