Radix cross Linux 3pp sources

RcL sources – is a tree of Third Party and Radix source tarballs

343 Commits   0 Branches   0 Tags
author: kx <kx@radix.pro> 2023-04-06 16:08:32 +0300 committer: kx <kx@radix.pro> 2023-04-06 16:08:32 +0300 commit: c9b87548f19c4323592abff0a86bc1dac45658f0 parent: 8d07317ed20e7544501edfcc9894d5002fd1771d
Commit Summary:
GNU packages
Diffstat:
108 files changed, 3407 insertions, 1 deletion
diff --git a/GNU/Makefile b/GNU/Makefile
new file mode 100644
index 0000000..ca14d36
--- /dev/null
+++ b/GNU/Makefile
@@ -0,0 +1,87 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := a2ps             \
+           acct             \
+           aspell           \
+           autoconf         \
+           autoconf-archive \
+           automake         \
+           bash             \
+           bc               \
+           binutils         \
+           bison            \
+           coreutils        \
+           cpio             \
+           ddrescue         \
+           diffutils        \
+           ed               \
+           enscript         \
+           findutils        \
+           gawk             \
+           gcc              \
+           gdb              \
+           gdbm             \
+           gettext          \
+           glibc            \
+           gmp              \
+           gperf            \
+           grep             \
+           groff            \
+           grub             \
+           gss              \
+           guile            \
+           gzip             \
+           help2man         \
+           inetutils        \
+           less             \
+           libiconv         \
+           libidn           \
+           libidn2          \
+           libtasn1         \
+           libtool          \
+           libunistring     \
+           m4               \
+           make             \
+           make-savannah    \
+           mpc              \
+           mpfr             \
+           mtools           \
+           multiprecision   \
+           ncurses          \
+           patch            \
+           pth              \
+           readline         \
+           screen           \
+           sed              \
+           sharutils        \
+           shtool           \
+           tar              \
+           termcap          \
+           termutils        \
+           texinfo          \
+           time             \
+           uucp             \
+           wget             \
+           wget2            \
+           which
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/GNU/a2ps/Makefile b/GNU/a2ps/Makefile
new file mode 100644
index 0000000..d0a0278
--- /dev/null
+++ b/GNU/a2ps/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/a2ps
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/a2ps
+#
+
+url         = https://ftp.gnu.org/gnu/a2ps
+
+versions    = 4.14 4.15
+
+pkgname     = a2ps
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/acct/Makefile b/GNU/acct/Makefile
new file mode 100644
index 0000000..83a4070
--- /dev/null
+++ b/GNU/acct/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/acct
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/acct
+#
+
+url         = https://ftp.gnu.org/gnu/acct
+
+versions    = 6.5.4 6.5.5 6.6.1 6.6.2 6.6.4
+
+pkgname     = acct
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/aspell/Makefile b/GNU/aspell/Makefile
new file mode 100644
index 0000000..e8ca450
--- /dev/null
+++ b/GNU/aspell/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# http://aspell.net
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/aspell
+#
+
+url         = https://ftp.gnu.org/gnu/aspell
+
+versions    = 0.60.6 0.60.6.1 0.60.8
+
+pkgname     = aspell
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/autoconf-archive/Makefile b/GNU/autoconf-archive/Makefile
new file mode 100644
index 0000000..2e6d873
--- /dev/null
+++ b/GNU/autoconf-archive/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/autoconf
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/autoconf-archive
+#
+
+url         = https://ftp.gnu.org/gnu/autoconf-archive
+
+versions    = 2014.02.28 2019.01.06 2021.02.19 2022.09.03 2023.02.20
+
+pkgname     = autoconf-archive
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/autoconf/Makefile b/GNU/autoconf/Makefile
new file mode 100644
index 0000000..b36f078
--- /dev/null
+++ b/GNU/autoconf/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/autoconf
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/autoconf
+#
+
+url         = https://ftp.gnu.org/gnu/autoconf
+
+versions    = 2.69 2.70 2.71
+
+pkgname     = autoconf
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/automake/Makefile b/GNU/automake/Makefile
new file mode 100644
index 0000000..2a8cee9
--- /dev/null
+++ b/GNU/automake/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/automake
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/automake
+#
+
+url         = https://ftp.gnu.org/gnu/automake
+
+versions    = 1.11.5 1.12.6 1.14 1.15 1.16 1.16.1 1.16.3 1.16.4 1.16.5
+
+pkgname     = automake
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/bash/Makefile b/GNU/bash/Makefile
new file mode 100644
index 0000000..0ae06f9
--- /dev/null
+++ b/GNU/bash/Makefile
@@ -0,0 +1,65 @@
+#
+# Project Home:
+# ============
+# https://tiswww.case.edu/php/chet/bash/bashtop.html
+# http://www.gnu.org/software/bash/bash.html
+#
+# Downloads:
+# =========
+# ftp://ftp.cwru.edu/pub/bash/
+# https://ftp.gnu.org/pub/gnu/bash/
+#
+
+url         = https://ftp.gnu.org/pub/gnu/bash
+
+versions    = 4.2 4.3 4.4 5.0 5.1 5.2
+
+pkgname     = bash
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+patches     = $(addsuffix -patches.$(suffix), $(addprefix $(pkgname)-, $(versions)))
+
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ; \
+	  mkdir -p $(pkgname)-$$version-patches ; \
+	  cd $(pkgname)-$$version-patches ; \
+	  for file in `curl -s $(url)/$(pkgname)-$$version-patches/ | grep ">$(pkgname)[^<]*<" | sed 's,.*>\($(pkgname)[^<]*\)<.*,\1,'` ; do \
+	    wget -N $(url)/$(pkgname)-$$version-patches/$$file ; \
+	  done ; \
+	  if [ "x" != "x`find -iname '$(pkgname)*' -exec echo '{}' \; -quit`" ] ; then \
+	    cd .. ; \
+	    tar czf $(pkgname)-$$version-patches.$(suffix) $(pkgname)-$$version-patches ; \
+	    mv $(pkgname)-$$version-patches $(pkgname)-$$version-patched ; \
+	    tar xzf $(pkgname)-$$version.$(suffix) ; \
+	    ( cd $(pkgname)-$$version ; \
+	      for file in ../$(pkgname)-$$version-patched/$(pkgname)??-??? ; do patch -p0 --batch < $$file ; done \
+	    ) ; \
+	    mv $(pkgname)-$$version-patched $(pkgname)-$$version-patches ; \
+	    tar czf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	    rm -rf $(pkgname)-$$version ; \
+	  else \
+	    cd .. ; \
+	  fi ; \
+	  rm -rf $(pkgname)-$$version-patches ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for version in $(versions) ; do \
+	  echo -e "\n======= Calculation the '$(pkgname)-$$version.$(suffix)' sha1sum =======\n" ; \
+	  sha1sum --binary $(pkgname)-$$version.$(suffix) > $(pkgname)-$$version.$(suffix).sha1sum ; \
+	  if [ -f $(pkgname)-$$version-patches.$(suffix) ] ; then \
+	    sha1sum --binary $(pkgname)-$$version-patches.$(suffix) > $(pkgname)-$$version-patches.$(suffix).sha1sum ; \
+	  fi ; \
+	done
+
+downloads_clean:
+	@rm -rf *.$(suffix) *.sha1sum
diff --git a/GNU/bc/Makefile b/GNU/bc/Makefile
new file mode 100644
index 0000000..91d4ad4
--- /dev/null
+++ b/GNU/bc/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/bc
+#
+# Downloads:
+# =========
+# https://alpha.gnu.org/gnu/bc
+#
+
+url         = https://ftp.gnu.org/gnu/bc
+
+versions    = 1.07 1.07.1
+
+pkgname     = bc
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/GNU/binutils/Makefile b/GNU/binutils/Makefile
new file mode 100644
index 0000000..6df7017
--- /dev/null
+++ b/GNU/binutils/Makefile
@@ -0,0 +1,39 @@
+#
+# Download: https://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/binutils
+#
+
+url         = https://ftp.gnu.org/gnu/binutils
+
+versions    = 2.28.1 2.29 2.29.1
+versions   += 2.30 2.31 2.31.1 2.32 2.33.1 2.34 2.35 2.35.1 2.36 2.36.1 2.37 2.38 2.39
+versions   += 2.40
+
+pkgname     = binutils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/bison/Makefile b/GNU/bison/Makefile
new file mode 100644
index 0000000..6776003
--- /dev/null
+++ b/GNU/bison/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/bison
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/bison
+#
+
+url         = https://ftp.gnu.org/gnu/bison
+
+versions    = 2.7 3.0.2 3.0.4 3.4.2 3.7.4 3.8.1 3.8.2
+
+pkgname     = bison
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/coreutils/Makefile b/GNU/coreutils/Makefile
new file mode 100644
index 0000000..eaa99a2
--- /dev/null
+++ b/GNU/coreutils/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/coreutils/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/coreutils/
+#
+
+url         = https://ftp.gnu.org/gnu/coreutils
+
+versions    = 8.21 8.22 8.31 8.32
+versions   += 9.0 9.1 9.2
+
+pkgname     = coreutils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/cpio/Makefile b/GNU/cpio/Makefile
new file mode 100644
index 0000000..cb25d4c
--- /dev/null
+++ b/GNU/cpio/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/cpio
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/cpio
+#
+
+url         = https://ftp.gnu.org/gnu/cpio
+
+versions    = 2.11 2.12 2.13
+
+pkgname     = cpio
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/ddrescue/Makefile b/GNU/ddrescue/Makefile
new file mode 100644
index 0000000..5cdc980
--- /dev/null
+++ b/GNU/ddrescue/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/ddrescue
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/ddrescue
+#
+
+url         = https://ftp.gnu.org/gnu/ddrescue
+
+versions    = 1.17 1.18.1 1.19 1.24 1.25 1.26 1.27
+
+pkgname     = ddrescue
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.lz ; \
+	  lzip -d $(pkgname)-$$version.tar.lz ; \
+	  xz $(pkgname)-$$version.tar ; \
+	  rm -f $(pkgname)-$$version.tar.lz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/diffutils/Makefile b/GNU/diffutils/Makefile
new file mode 100644
index 0000000..69990eb
--- /dev/null
+++ b/GNU/diffutils/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/diffutils/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/diffutils/
+#
+
+url         = https://ftp.gnu.org/gnu/diffutils
+
+versions    = 3.2 3.3 3.7 3.8 3.9
+
+pkgname     = diffutils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/ed/Makefile b/GNU/ed/Makefile
new file mode 100644
index 0000000..2bbb921
--- /dev/null
+++ b/GNU/ed/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/ed
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/ed
+#
+
+url         = https://ftp.gnu.org/gnu/ed
+
+versions    = 1.15 1.16 1.17 1.18 1.19
+
+pkgname     = ed
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.lz ; \
+	  lzip -d $(pkgname)-$$version.tar.lz ; \
+	  xz $(pkgname)-$$version.tar ; \
+	  rm -f $(pkgname)-$$version.tar.lz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/enscript/Makefile b/GNU/enscript/Makefile
new file mode 100644
index 0000000..e775011
--- /dev/null
+++ b/GNU/enscript/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/enscript
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/enscript
+#
+
+url         = https://ftp.gnu.org/gnu/enscript
+
+versions    = 1.6.5.2 1.6.6
+
+pkgname     = enscript
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/GNU/findutils/Makefile b/GNU/findutils/Makefile
new file mode 100644
index 0000000..aa588d3
--- /dev/null
+++ b/GNU/findutils/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/findutils/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/findutils/
+#
+
+url         = https://ftp.gnu.org/gnu/findutils
+
+versions    = 4.7.0 4.8.0 4.9.0
+
+pkgname     = findutils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gawk/Makefile b/GNU/gawk/Makefile
new file mode 100644
index 0000000..7132549
--- /dev/null
+++ b/GNU/gawk/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/gawk
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/gawk
+#
+
+url         = https://ftp.gnu.org/gnu/gawk
+
+versions    = 4.1.0 4.1.1 5.0.1 5.1.0 5.2.0 5.2.1
+
+pkgname     = gawk
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/Makefile b/GNU/gcc/Makefile
new file mode 100644
index 0000000..0b52154
--- /dev/null
+++ b/GNU/gcc/Makefile
@@ -0,0 +1,57 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := gcc-2.95.3 \
+           gcc-4.5.1  \
+           gcc-4.7.2  \
+           gcc-4.7.3  \
+           gcc-4.8.2  \
+           gcc-4.8.5  \
+           gcc-4.9.1  \
+           gcc-4.9.2  \
+           gcc-4.9.3  \
+           gcc-4.9.4  \
+           gcc-5.2.0  \
+           gcc-5.3.0  \
+           gcc-5.4.0  \
+           gcc-6.2.0  \
+           gcc-6.3.0  \
+           gcc-6.4.0  \
+           gcc-6.5.0  \
+           gcc-7.1.0  \
+           gcc-7.2.0  \
+           gcc-7.3.0  \
+           gcc-7.4.0  \
+           gcc-7.5.0  \
+           gcc-8.2.0  \
+           gcc-8.3.0  \
+           gcc-8.4.0  \
+           gcc-9.2.0  \
+           gcc-9.3.0  \
+           gcc-10.2.0 \
+           gcc-10.3.0 \
+           gcc-10.4.0 \
+           gcc-11.1.0 \
+           gcc-11.2.0 \
+           gcc-11.3.0 \
+           gcc-12.2.0
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/GNU/gcc/gcc-10.2.0/Makefile b/GNU/gcc/gcc-10.2.0/Makefile
new file mode 100644
index 0000000..96f39d4
--- /dev/null
+++ b/GNU/gcc/gcc-10.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 10.2.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-10.3.0/Makefile b/GNU/gcc/gcc-10.3.0/Makefile
new file mode 100644
index 0000000..dc35936
--- /dev/null
+++ b/GNU/gcc/gcc-10.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 10.3.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-10.4.0/Makefile b/GNU/gcc/gcc-10.4.0/Makefile
new file mode 100644
index 0000000..9df6305
--- /dev/null
+++ b/GNU/gcc/gcc-10.4.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 10.4.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-11.1.0/Makefile b/GNU/gcc/gcc-11.1.0/Makefile
new file mode 100644
index 0000000..5b5200d
--- /dev/null
+++ b/GNU/gcc/gcc-11.1.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 11.1.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-11.2.0/Makefile b/GNU/gcc/gcc-11.2.0/Makefile
new file mode 100644
index 0000000..aa5b3c4
--- /dev/null
+++ b/GNU/gcc/gcc-11.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 11.2.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-11.3.0/Makefile b/GNU/gcc/gcc-11.3.0/Makefile
new file mode 100644
index 0000000..d59fa43
--- /dev/null
+++ b/GNU/gcc/gcc-11.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 11.3.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-12.2.0/Makefile b/GNU/gcc/gcc-12.2.0/Makefile
new file mode 100644
index 0000000..ca5a8a7
--- /dev/null
+++ b/GNU/gcc/gcc-12.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 12.2.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-2.95.3/Makefile b/GNU/gcc/gcc-2.95.3/Makefile
new file mode 100644
index 0000000..fd06ada
--- /dev/null
+++ b/GNU/gcc/gcc-2.95.3/Makefile
@@ -0,0 +1,34 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 2.95.3
+
+tarballs    = $(addsuffix .tar.gz, $(addprefix gcc-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version.tar.gz ; \
+	done
+
+$(sha1s): %.tar.gz.sha1sum : %.tar.gz
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.5.1/Makefile b/GNU/gcc/gcc-4.5.1/Makefile
new file mode 100644
index 0000000..c175c8c
--- /dev/null
+++ b/GNU/gcc/gcc-4.5.1/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.5.1
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.7.2/Makefile b/GNU/gcc/gcc-4.7.2/Makefile
new file mode 100644
index 0000000..3ca6e86
--- /dev/null
+++ b/GNU/gcc/gcc-4.7.2/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.7.2
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.7.2/NOTE.TXT b/GNU/gcc/gcc-4.7.2/NOTE.TXT
new file mode 100644
index 0000000..88764fb
--- /dev/null
+++ b/GNU/gcc/gcc-4.7.2/NOTE.TXT
@@ -0,0 +1,27 @@
+
+Do not use 4.8.0 host compiler to build gcc-4.7.2 because of build error
+========================================================================
+
+[see: http://gcc.gnu.org/@/bugzilla/show_bug.cgi?id=56927]
+
+Bug 56927 - 4.7.2 build ICEs when built with 4.8.0 and --disable-bootstrap
+--------------------------------------------------------------------------
+
+Segher Boessenkool 2013-04-11 19:17:26 UTC
+
+  When using a 4.8.0 host compiler and configuring with --disable-bootstrap,
+  a build of 4.7.2 fails with
+
+  /home/segher/src/gcc-4.7.2/libgcc/libgcc2.c: In function '__absvdi2':
+  /home/segher/src/gcc-4.7.2/libgcc/libgcc2.c:273:1: internal compiler error: Segmentation fault
+
+  There is no such error if the host compiler is 4.4 or 4.7, or without
+  --disable-bootstrap; it does have the error if doing a cross to i386-elf.
+  I haven't tested with tip-of-tree of either 4.7 or 4.8 or on different
+  architectures.
+
+Segher Boessenkool 2013-04-12 00:15:26 UTC
+
+  Hey, 4.7.3 didn't exist yet :-)
+
+  Confirmed fixed.
diff --git a/GNU/gcc/gcc-4.7.3/Makefile b/GNU/gcc/gcc-4.7.3/Makefile
new file mode 100644
index 0000000..f0d8724
--- /dev/null
+++ b/GNU/gcc/gcc-4.7.3/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.7.3
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.8.2/Makefile b/GNU/gcc/gcc-4.8.2/Makefile
new file mode 100644
index 0000000..670fb05
--- /dev/null
+++ b/GNU/gcc/gcc-4.8.2/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.8.2
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.8.5/Makefile b/GNU/gcc/gcc-4.8.5/Makefile
new file mode 100644
index 0000000..def3ecf
--- /dev/null
+++ b/GNU/gcc/gcc-4.8.5/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.8.5
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.9.1/Makefile b/GNU/gcc/gcc-4.9.1/Makefile
new file mode 100644
index 0000000..95cc9b1
--- /dev/null
+++ b/GNU/gcc/gcc-4.9.1/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.9.1
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.9.2/Makefile b/GNU/gcc/gcc-4.9.2/Makefile
new file mode 100644
index 0000000..9a9f9b0
--- /dev/null
+++ b/GNU/gcc/gcc-4.9.2/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.9.2
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.9.3/Makefile b/GNU/gcc/gcc-4.9.3/Makefile
new file mode 100644
index 0000000..183672b
--- /dev/null
+++ b/GNU/gcc/gcc-4.9.3/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.9.3
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-4.9.4/Makefile b/GNU/gcc/gcc-4.9.4/Makefile
new file mode 100644
index 0000000..cb1f0d1
--- /dev/null
+++ b/GNU/gcc/gcc-4.9.4/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 4.9.4
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-5.2.0/Makefile b/GNU/gcc/gcc-5.2.0/Makefile
new file mode 100644
index 0000000..4736f4e
--- /dev/null
+++ b/GNU/gcc/gcc-5.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 5.2.0
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-5.3.0/Makefile b/GNU/gcc/gcc-5.3.0/Makefile
new file mode 100644
index 0000000..12fc53b
--- /dev/null
+++ b/GNU/gcc/gcc-5.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 5.3.0
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-5.4.0/Makefile b/GNU/gcc/gcc-5.4.0/Makefile
new file mode 100644
index 0000000..d13fa6d
--- /dev/null
+++ b/GNU/gcc/gcc-5.4.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 5.4.0
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-6.2.0/Makefile b/GNU/gcc/gcc-6.2.0/Makefile
new file mode 100644
index 0000000..7d4b2d1
--- /dev/null
+++ b/GNU/gcc/gcc-6.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 6.2.0
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-6.3.0/Makefile b/GNU/gcc/gcc-6.3.0/Makefile
new file mode 100644
index 0000000..5ebf1c2
--- /dev/null
+++ b/GNU/gcc/gcc-6.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 6.3.0
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-6.4.0/Makefile b/GNU/gcc/gcc-6.4.0/Makefile
new file mode 100644
index 0000000..5f20adc
--- /dev/null
+++ b/GNU/gcc/gcc-6.4.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 6.4.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-6.5.0/Makefile b/GNU/gcc/gcc-6.5.0/Makefile
new file mode 100644
index 0000000..f2778a6
--- /dev/null
+++ b/GNU/gcc/gcc-6.5.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 6.5.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-7.1.0/Makefile b/GNU/gcc/gcc-7.1.0/Makefile
new file mode 100644
index 0000000..1d65cec
--- /dev/null
+++ b/GNU/gcc/gcc-7.1.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 7.1.0
+
+pkgname     = gcc
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-7.2.0/Makefile b/GNU/gcc/gcc-7.2.0/Makefile
new file mode 100644
index 0000000..9788553
--- /dev/null
+++ b/GNU/gcc/gcc-7.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 7.2.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-7.3.0/Makefile b/GNU/gcc/gcc-7.3.0/Makefile
new file mode 100644
index 0000000..1a8af04
--- /dev/null
+++ b/GNU/gcc/gcc-7.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 7.3.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-7.4.0/Makefile b/GNU/gcc/gcc-7.4.0/Makefile
new file mode 100644
index 0000000..fe19eba
--- /dev/null
+++ b/GNU/gcc/gcc-7.4.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 7.4.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-7.5.0/Makefile b/GNU/gcc/gcc-7.5.0/Makefile
new file mode 100644
index 0000000..7201e9c
--- /dev/null
+++ b/GNU/gcc/gcc-7.5.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 7.5.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-8.2.0/Makefile b/GNU/gcc/gcc-8.2.0/Makefile
new file mode 100644
index 0000000..ab4bae3
--- /dev/null
+++ b/GNU/gcc/gcc-8.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 8.2.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-8.3.0/Makefile b/GNU/gcc/gcc-8.3.0/Makefile
new file mode 100644
index 0000000..f9161ba
--- /dev/null
+++ b/GNU/gcc/gcc-8.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 8.3.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-8.4.0/Makefile b/GNU/gcc/gcc-8.4.0/Makefile
new file mode 100644
index 0000000..475631f
--- /dev/null
+++ b/GNU/gcc/gcc-8.4.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 8.4.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-9.2.0/Makefile b/GNU/gcc/gcc-9.2.0/Makefile
new file mode 100644
index 0000000..0ec08d0
--- /dev/null
+++ b/GNU/gcc/gcc-9.2.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 9.2.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gcc/gcc-9.3.0/Makefile b/GNU/gcc/gcc-9.3.0/Makefile
new file mode 100644
index 0000000..86dd414
--- /dev/null
+++ b/GNU/gcc/gcc-9.3.0/Makefile
@@ -0,0 +1,37 @@
+#
+# https://gcc.gnu.org
+#
+# You can use the generic url https://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gcc/gcc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gcc
+
+versions    = 9.3.0
+
+pkgname     = gcc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/gcc-$$version/gcc-$$version.$(suffix) ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gdb/Makefile b/GNU/gdb/Makefile
new file mode 100644
index 0000000..349af59
--- /dev/null
+++ b/GNU/gdb/Makefile
@@ -0,0 +1,37 @@
+#
+# Download: http://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: http://ftp.gnu.org/gnu/gdb
+#
+
+url         = https://ftp.gnu.org/gnu/gdb
+
+versions    = 7.9 7.10.1 7.11 8.0 8.1.1 8.2 8.2.1 8.3 8.3.1 9.1 9.2 10.1 10.2 11.1 11.2 12.1 13.1
+
+pkgname     = gdb
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gdbm/Makefile b/GNU/gdbm/Makefile
new file mode 100644
index 0000000..dfb5fb3
--- /dev/null
+++ b/GNU/gdbm/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/gdbm/gdbm.html
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/gdbm
+#
+
+url         = https://ftp.gnu.org/gnu/gdbm
+
+versions    = 1.11 1.18 1.18.1 1.19 1.21 1.22 1.23
+
+pkgname     = gdbm
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gettext/Makefile b/GNU/gettext/Makefile
new file mode 100644
index 0000000..878af84
--- /dev/null
+++ b/GNU/gettext/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/gettext/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/pub/gnu/gettext/
+#
+
+url         = https://ftp.gnu.org/pub/gnu/gettext
+
+versions    = 0.19.6 0.19.7 0.20.1 0.21 0.21.1
+
+pkgname     = gettext
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/glibc/Makefile b/GNU/glibc/Makefile
new file mode 100644
index 0000000..1ffc472
--- /dev/null
+++ b/GNU/glibc/Makefile
@@ -0,0 +1,37 @@
+#
+# Download: https://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/binutils
+#
+
+url         = https://ftp.gnu.org/gnu/glibc
+
+versions    = 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.30 2.31 2.32 2.33 2.34 2.35 2.36 2.37
+
+pkgname     = glibc
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gmp/Makefile b/GNU/gmp/Makefile
new file mode 100644
index 0000000..8fc0fe5
--- /dev/null
+++ b/GNU/gmp/Makefile
@@ -0,0 +1,42 @@
+#
+# Download: https://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/gmp/gmp-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/gmp
+
+versions    = 6.1.0 6.1.1 6.1.2 6.2.0 6.2.1
+
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix gmp-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(filter %.$(suffix).sha1sum,$(sha1s)): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(filter %.tar.bz2.sha1sum,$(sha1s)): %.tar.bz2.sha1sum : %.tar.bz2
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gperf/Makefile b/GNU/gperf/Makefile
new file mode 100644
index 0000000..08bc91f
--- /dev/null
+++ b/GNU/gperf/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/gperf
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/gperf
+#
+
+url         = https://ftp.gnu.org/gnu/gperf
+
+versions    = 3.0.4 3.1
+
+pkgname     = gperf
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/grep/Makefile b/GNU/grep/Makefile
new file mode 100644
index 0000000..bdb3fef
--- /dev/null
+++ b/GNU/grep/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/grep
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/grep
+#
+
+url         = https://ftp.gnu.org/gnu/grep
+
+versions    = 2.14 2.17 2.18 3.3 3.6 3.7 3.8 3.9 3.10
+
+pkgname     = grep
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/groff/Makefile b/GNU/groff/Makefile
new file mode 100644
index 0000000..f98f20e
--- /dev/null
+++ b/GNU/groff/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/groff
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/groff
+#
+
+url         = https://ftp.gnu.org/gnu/groff
+
+versions    = 1.22.2 1.22.3 1.22.4
+
+pkgname     = groff
+suffix      = tar.gz
+sign_suffix = sig
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+signatures  = $(addsuffix .$(sign_suffix), $(tarballs))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(signatures): %.$(suffix).$(sign_suffix) : %.$(suffix)
+	@for signature in $@ ; do \
+	  echo -e "\n======= Downloading '$$signature' signature =======\n" ; \
+	  wget -N $(url)/$$signature ; \
+	  touch $$signature ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(signatures) $(sha1s)
diff --git a/GNU/grub/Makefile b/GNU/grub/Makefile
new file mode 100644
index 0000000..62f76f6
--- /dev/null
+++ b/GNU/grub/Makefile
@@ -0,0 +1,89 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/grub
+#
+# Savannah cGit:
+# =============
+# http://git.savannah.gnu.org/cgit/grub.git
+#
+# Clone:
+# =====
+# git clone git://git.savannah.gnu.org/grub.git
+# git clone https://git.savannah.gnu.org/git/grub.git
+# git clone ssh://git.savannah.gnu.org/srv/git/grub.git
+#
+
+url        = https://git.savannah.gnu.org/git/
+
+repo_name  = grub
+pkg_name   = grub
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 2a2e10c1b39672de3d5da037a50d5c371f49b40d:2.04
+revisions += 837fe48deb89b31710904de4e9c7dda258490e1c:2.05.1
+revisions += c0e647eb0e2bd09315612446cb4d90f7f75cb44c:2.05.2
+revisions += ae94b97be2b81b625d6af6654d3ed79078b50ff6:2.06
+
+git_repo   = .git_clone
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+
+TARGETS = repository_clean
+
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $${revision}    | cut -f 1 -d ':'` ; \
+	  version=`echo $${revision} | cut -f 2 -d ':'` ; \
+	  if [ ! -f $(repo_name)-$${version}.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$${version}.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(repo_name)-$${version}/ $${hash} | \
+	      xz >../$(repo_name)-$${version}.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$${version}.$(suffix) ; \
+	  ( cd $(pkg_name)-$${version} ; \
+	    # ======= Remove ~rc revision ======= ; \
+	    echo -e "\n======= Remove ~rc (release candidate) micro version =======" ; \
+	    rc=`echo $${version} | cut -f3 -d'.'` ; \
+	    if [ "x$$rc" != "x" ] ; then \
+	      sed -i "s,\[[0-9]\.[0-9][0-9]~rc[1-9a-z]*\],\[$${version}\]," configure.ac ; \
+	    fi ; \
+	    ./bootstrap ; rm -rf autom4te.cache .gitignore .travis.yml ) ; \
+	  tar cJf $(pkg_name)-$${version}.$(suffix) $(pkg_name)-$${version} ; \
+	  rm -rf $(pkg_name)-$${version} ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$${tarball}' sha1sum =======" ; \
+	  sha1sum --binary $${tarball} > $${tarball}.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/GNU/gss/Makefile b/GNU/gss/Makefile
new file mode 100644
index 0000000..2845311
--- /dev/null
+++ b/GNU/gss/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/gss/manual/gss.html
+#
+# Downloads:
+# =========
+# https://www.gnu.org/software/gss/manual/gss.html#Downloading-and-Installing
+#
+
+url         = https://ftp.gnu.org/gnu/gss
+
+versions    = 1.0.3 1.0.4
+
+pkgname     = gss
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/guile/Makefile b/GNU/guile/Makefile
new file mode 100644
index 0000000..65fed3d
--- /dev/null
+++ b/GNU/guile/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/guile/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/guile/
+#
+
+url         = https://ftp.gnu.org/gnu/guile
+
+versions    = 2.0.9 2.0.11 2.2.6 3.0.4 3.0.5 3.0.7 3.0.8 3.0.9
+
+pkgname     = guile
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/gzip/Makefile b/GNU/gzip/Makefile
new file mode 100644
index 0000000..9e10258
--- /dev/null
+++ b/GNU/gzip/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/gzip/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/pub/gnu/gzip/
+#
+
+url         = https://ftp.gnu.org/pub/gnu/gzip
+
+versions    = 1.5 1.6 1.10 1.11 1.12
+
+pkgname     = gzip
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/help2man/Makefile b/GNU/help2man/Makefile
new file mode 100644
index 0000000..c4d2a0d
--- /dev/null
+++ b/GNU/help2man/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/help2man
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/help2man
+#
+
+url         = https://ftp.gnu.org/gnu/help2man
+
+versions    = 1.46.6 1.47.3 1.47.11 1.47.16 1.48.5 1.49.2 1.49.3
+
+pkgname     = help2man
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/inetutils/Makefile b/GNU/inetutils/Makefile
new file mode 100644
index 0000000..433643b
--- /dev/null
+++ b/GNU/inetutils/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/inetutils
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/inetutils
+#
+
+url         = https://ftp.gnu.org/gnu/inetutils
+
+versions    = 1.9.1 1.9.2 1.9.4 2.2 2.3 2.4
+
+pkgname     = inetutils
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/less/Makefile b/GNU/less/Makefile
new file mode 100644
index 0000000..7357322
--- /dev/null
+++ b/GNU/less/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/less
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/less
+#
+
+url         = https://ftp.gnu.org/gnu/less
+
+versions    = 443 451 530 563 590 608
+
+pkgname     = less
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/libiconv/Makefile b/GNU/libiconv/Makefile
new file mode 100644
index 0000000..7c9bfad
--- /dev/null
+++ b/GNU/libiconv/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/libiconv
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/libiconv
+#
+
+url         = https://ftp.gnu.org/gnu/libiconv
+
+versions    = 1.13 1.14 1.16 1.17
+
+pkgname     = libiconv
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/libidn/Makefile b/GNU/libidn/Makefile
new file mode 100644
index 0000000..d720383
--- /dev/null
+++ b/GNU/libidn/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/libidn
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/libidn
+#
+
+url         = https://ftp.gnu.org/gnu/libidn
+
+lib_name    = libidn
+
+versions    = 1.25 1.27 1.28 1.35 1.36 1.38 1.41
+
+pkgname     = libidn
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/libidn2/Makefile b/GNU/libidn2/Makefile
new file mode 100644
index 0000000..186a846
--- /dev/null
+++ b/GNU/libidn2/Makefile
@@ -0,0 +1,44 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/libidn
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/libidn
+#
+
+url         = https://ftp.gnu.org/gnu/libidn
+
+lib_name    = libidn
+
+versions    = 2.2.0 2.3.0 2.3.2 2.3.3 2.3.4
+
+pkgname     = libidn2
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.gz ; \
+	  gunzip $(pkgname)-$$version.tar.gz ; \
+	  xz $(pkgname)-$$version.tar ; \
+	  rm -f $(pkgname)-$$version.tar.gz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/libtasn1/Makefile b/GNU/libtasn1/Makefile
new file mode 100644
index 0000000..d74185c
--- /dev/null
+++ b/GNU/libtasn1/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/libtasn1
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/libtasn1
+#
+
+url         = https://ftp.gnu.org/gnu/libtasn1
+
+versions    = 3.3 3.4 4.3 4.7 4.14 4.15.0 4.16.0 4.17.0 4.19.0
+
+pkgname     = libtasn1
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(signatures) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/libtool/Makefile b/GNU/libtool/Makefile
new file mode 100644
index 0000000..6efcae5
--- /dev/null
+++ b/GNU/libtool/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/libtool
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/libtool
+#
+
+url         = https://ftp.gnu.org/gnu/libtool
+
+versions    = 2.4.2 2.4.6 2.4.7
+
+pkgname     = libtool
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/libunistring/Makefile b/GNU/libunistring/Makefile
new file mode 100644
index 0000000..d137eef
--- /dev/null
+++ b/GNU/libunistring/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/libunistring
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/libunistring
+#
+
+url         = https://ftp.gnu.org/gnu/libunistring
+
+versions    = 0.9.4 0.9.5 0.9.6 0.9.10
+versions   += 1.0 1.1
+
+pkgname     = libunistring
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/m4/Makefile b/GNU/m4/Makefile
new file mode 100644
index 0000000..a10d270
--- /dev/null
+++ b/GNU/m4/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/m4
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/m4
+#
+
+url         = https://ftp.gnu.org/gnu/m4
+
+versions    = 1.4.17 1.4.18 1.4.19
+
+pkgname     = m4
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/make-savannah/Makefile b/GNU/make-savannah/Makefile
new file mode 100644
index 0000000..27884a0
--- /dev/null
+++ b/GNU/make-savannah/Makefile
@@ -0,0 +1,83 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/make
+#
+# Git:
+# ===
+# http://git.savannah.gnu.org/cgit/make.git/
+#
+# Clone:
+# =====
+# git clone https://git.savannah.gnu.org/git/make.git
+#
+
+url        = https://git.savannah.gnu.org/git
+
+repo_name  = make
+pkg_name   = make
+
+#
+# List of upstream versions to be extracted:
+# =========================================
+#                                               hash | tag | gnulib revision
+#            ----------------------------------------+-----+----------------------------------------
+revisions  = c5319e75f5b64c972a38967a6eb5747838e914fd:4.3.1:363497c93a59235478cd80d536a17023e595cc79
+
+git_repo   = .git_clone
+
+suffix     = tar.xz
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2 -d ':'))
+
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkg_name)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+TARGETS = repository_clean
+
+all: $(TARGETS)
+
+.PHONY: downloads_clean repository_clean
+
+$(git_repo):
+	@echo -e "\n======= Clone $(repo_name).git repository =======\n"
+	@rm -rf $(repo_name)
+	@git clone $(url)/$(repo_name).git $(repo_name)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for revision in $(revisions) ; do \
+	  hash=`echo $$revision    | cut -f 1 -d ':'` ; \
+	  version=`echo $$revision | cut -f 2 -d ':'` ; \
+	  gnulib=`echo $$revision  | cut -f 3 -d ':'` ; \
+	  if [ ! -f $(pkg_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(pkg_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    sed -i "s,\[[0-9]\.[0-9]\.[0-9]*\],\[$$version\]," configure.ac ; \
+	    GNULIB_REVISION=$$gnulib ./bootstrap --force --copy ; \
+	    rm -rf autom4te.cache gl gnulib scripts .ccls .dir-locals.el ; \
+	    find . -type f -name *~ -exec rm -f {} \; ; \
+	    find . -type f -name '.gitignore' -exec rm -f {} \; ; \
+	  ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+repository_clean: $(sha1s)
+	@echo -e "\n======= Remove cloned $(repo_name).git repository =======\n"
+	@rm -rf $(git_repo) $(repo_name)
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
+	@rm -rf $(git_repo) $(repo_name)
diff --git a/GNU/make/Makefile b/GNU/make/Makefile
new file mode 100644
index 0000000..b0701b9
--- /dev/null
+++ b/GNU/make/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/make
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/make
+#
+
+url         = https://ftp.gnu.org/gnu/make
+
+versions    = 3.82 4.0 4.1 4.2 4.2.1 4.3 4.4 4.4.1
+
+pkgname     = make
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/mpc/Makefile b/GNU/mpc/Makefile
new file mode 100644
index 0000000..43a3775
--- /dev/null
+++ b/GNU/mpc/Makefile
@@ -0,0 +1,36 @@
+#
+# Download: https://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/mpc/mpc-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/mpc
+
+versions    = 1.0.1 1.0.2 1.0.3 1.1.0 1.2.0 1.2.1 1.3.0 1.3.1
+
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix mpc-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/mpc/mpc-1.0.1.pdf b/GNU/mpc/mpc-1.0.1.pdf
new file mode 100644
index 0000000..f1645a0
Binary files /dev/null and b/GNU/mpc/mpc-1.0.1.pdf differ
diff --git a/GNU/mpc/mpc-1.3.1.txt b/GNU/mpc/mpc-1.3.1.txt
new file mode 100644
index 0000000..ebc9027
--- /dev/null
+++ b/GNU/mpc/mpc-1.3.1.txt
@@ -0,0 +1,4 @@
+
+sources: https://multiprecision.org/download.html
+
+Requirements of 1.3.1: gmp-5.0.0, mpfr-4.1.0
diff --git a/GNU/mpfr/Makefile b/GNU/mpfr/Makefile
new file mode 100644
index 0000000..bd9fd9f
--- /dev/null
+++ b/GNU/mpfr/Makefile
@@ -0,0 +1,43 @@
+#
+# Download: https://www.gnu.org/prep/ftp.html
+#
+# You can use the generic url http://ftpmirror.gnu.org 
+# to automatically choose a nearby and up-to-date mirror.
+#
+# original url: https://ftp.gnu.org/gnu/mpfr/mpfr-$(version)
+#
+
+url         = https://ftp.gnu.org/gnu/mpfr
+
+versions    = 2.4.2 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 4.0.1 4.0.2 4.1.0 4.2.0
+
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix mpfr-, $(versions)))
+
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(filter %.$(suffix).sha1sum,$(sha1s)): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(filter %.tar.bz2.sha1sum,$(sha1s)): %.tar.bz2.sha1sum : %.tar.bz2
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/mtools/Makefile b/GNU/mtools/Makefile
new file mode 100644
index 0000000..a59b766
--- /dev/null
+++ b/GNU/mtools/Makefile
@@ -0,0 +1,42 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/mtools
+#
+# Downloads:
+# =========
+# https://www.gnu.org/software/mtools/download.html
+# https://ftp.gnu.org/gnu/mtools
+#
+
+url         = https://ftp.gnu.org/gnu/mtools
+
+versions    = 4.0.18 4.0.26 4.0.35 4.0.41 4.0.43
+
+pkgname     = mtools
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.lz ; \
+	  lzip -d $(pkgname)-$$version.tar.lz ; \
+	  xz $(pkgname)-$$version.tar ; \
+	  rm -f $(pkgname)-$$version.tar.lz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/multiprecision/Makefile b/GNU/multiprecision/Makefile
new file mode 100644
index 0000000..15be211
--- /dev/null
+++ b/GNU/multiprecision/Makefile
@@ -0,0 +1,33 @@
+#
+# Download: https://www.multiprecision.org/mpc/download.html
+#
+# original url: https://www.multiprecision.org
+#
+
+url         = https://www.multiprecision.org/downloads
+
+versions    = 0.8.2 0.9 1.0 1.3.0
+
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix mpc-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/ncurses/5.9/Makefile b/GNU/ncurses/5.9/Makefile
new file mode 100644
index 0000000..4d0f573
--- /dev/null
+++ b/GNU/ncurses/5.9/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/ncurses/announce.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/ncurses/
+# ftp://ftp.gnu.org/pub/gnu/ncurses/
+#
+
+url         = https://invisible-island.net/archives/ncurses
+
+version     = 5.9
+pkgname     = ncurses
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+dates       = 20130504 20141206
+patches     = $(addsuffix .sh.gz, $(addprefix patch-$(version)-, $(dates)))
+
+
+all: $(tarballs) $(sha1s) $(patches)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(patches):
+	@echo -e "\n======= Downloading patches for $(pkgname)-$(version) =======\n"
+	@for patch in $(patches) ; do \
+	  wget -N $(url)/$(version)/$$patch ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s) $(patches)
diff --git a/GNU/ncurses/6.0/Makefile b/GNU/ncurses/6.0/Makefile
new file mode 100644
index 0000000..1ce3712
--- /dev/null
+++ b/GNU/ncurses/6.0/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/ncurses/announce.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/ncurses/
+# ftp://ftp.gnu.org/pub/gnu/ncurses/
+#
+
+url         = https://invisible-island.net/archives/ncurses
+
+version     = 6.0
+pkgname     = ncurses
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+dates       = 20170930
+patches     = $(addsuffix .sh.gz, $(addprefix patch-$(version)-, $(dates)))
+
+
+all: $(tarballs) $(sha1s) $(patches)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(patches):
+	@echo -e "\n======= Downloading patches for $(pkgname)-$(version) =======\n"
+	@for patch in $(patches) ; do \
+	  wget -N $(url)/$(version)/$$patch ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s) $(patches)
diff --git a/GNU/ncurses/6.1/Makefile b/GNU/ncurses/6.1/Makefile
new file mode 100644
index 0000000..f742d95
--- /dev/null
+++ b/GNU/ncurses/6.1/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/ncurses/announce.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/ncurses/
+# ftp://ftp.gnu.org/pub/gnu/ncurses/
+#
+
+url         = https://invisible-island.net/archives/ncurses
+
+version     = 6.1
+pkgname     = ncurses
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+dates       = 20190609
+patches     = $(addsuffix .sh.gz, $(addprefix patch-$(version)-, $(dates)))
+
+
+all: $(tarballs) $(sha1s) $(patches)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(patches):
+	@echo -e "\n======= Downloading patches for $(pkgname)-$(version) =======\n"
+	@for patch in $(patches) ; do \
+	  wget -N $(url)/$(version)/$$patch ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s) $(patches)
diff --git a/GNU/ncurses/6.2/Makefile b/GNU/ncurses/6.2/Makefile
new file mode 100644
index 0000000..14947bb
--- /dev/null
+++ b/GNU/ncurses/6.2/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/ncurses/announce.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/ncurses/
+# ftp://ftp.gnu.org/pub/gnu/ncurses/
+#
+
+url         = https://invisible-island.net/archives/ncurses
+
+version     = 6.2
+pkgname     = ncurses
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+dates       = 20210619
+patches     = $(addsuffix .sh.gz, $(addprefix patch-$(version)-, $(dates)))
+
+
+all: $(tarballs) $(sha1s) $(patches)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(patches):
+	@echo -e "\n======= Downloading patches for $(pkgname)-$(version) =======\n"
+	@for patch in $(patches) ; do \
+	  wget -N $(url)/$(version)/$$patch ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s) $(patches)
diff --git a/GNU/ncurses/6.3/Makefile b/GNU/ncurses/6.3/Makefile
new file mode 100644
index 0000000..bbad0e8
--- /dev/null
+++ b/GNU/ncurses/6.3/Makefile
@@ -0,0 +1,98 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/ncurses/announce.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/ncurses/
+# ftp://ftp.gnu.org/pub/gnu/ncurses/
+#
+
+url         = https://invisible-island.net/archives/ncurses
+
+version     = 6.3
+pkgname     = ncurses
+
+downloads   = downloads
+
+suffix      = tar.gz
+tarballs    = $(addprefix $(downloads)/, $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version))))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+dates       = 20211026 20211030 20211106 20211113 20211115 20211120 20211127 20211204
+dates      += 20211211 20211219 20211225 20220101 20220115 20220122 20220129 20220205
+dates      += 20220212 20220219 20220226 20220305 20220312 20220319 20220326 20220402
+dates      += 20220409 20220416 20220423 20220430 20220501 20220507 20220514 20220521
+dates      += 20220529 20220604 20220612 20220618 20220625 20220703 20220709 20220716
+dates      += 20220724 20220729 20220806 20220813 20220820 20220827 20220903 20220910
+dates      += 20220917 20220924 20221001 20221008 20221015 20221023 20221029 20221105
+dates      += 20221112 20221119 20221126 20221203 20221210 20221217 20221224
+
+psuffix     = patch.gz
+patches     = $(addprefix $(downloads)/, $(addsuffix .$(psuffix), $(addprefix $(pkgname)-$(version)-, $(dates))))
+psha1s      = $(addsuffix .sha1sum, $(patches))
+
+date        = $(shell echo $(dates) | tr ' ' '\n' | tail -1)
+lsuffix     = tar.xz
+latest      = $(pkgname)-$(version)-$(date).$(lsuffix)
+lsha1s      = $(addsuffix .sha1sum, $(latest))
+
+all: $(tarballs) $(patches) $(latest) $(sha1s) $(psha1s) $(lsha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@mkdir -p $(CURDIR)/downloads
+	@for tarball in $(tarballs) ; do \
+	  tarball=`basename $$tarball` ; \
+	  wget -N $(url)/$$tarball ; \
+	  mv $$tarball $(downloads)/ ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(patches):
+	@echo -e "\n======= Downloading patches for $(pkgname)-$(version) =======\n"
+	@for patch in $(patches) ; do \
+	  patch=`basename $$patch` ; \
+	  wget -N $(url)/$(version)/$$patch ; \
+	  mv $$patch $(downloads)/ ; \
+	done
+
+$(psha1s): %.$(psuffix).sha1sum : %.$(psuffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(latest): $(tarballs) $(patches)
+	@echo -e "\n======= Create patched $(latest) tarball =======\n"
+	@for tarball in $(pkgname)-$(version).$(suffix) ; do \
+	   ( cd $(downloads) ; \
+	     tar -xzf $$tarball ; \
+	     ( cd $(pkgname)-$(version) ; \
+	       patches="$(addsuffix .$(psuffix), $(addprefix ../$(pkgname)-$(version)-, $(dates)))" ; \
+	       for patch in `echo $${patches} | sort` ; do \
+	         zcat $$patch | patch -p1 ; \
+	       done ; \
+	     ) ; \
+	     tar cJf $(latest) $(pkgname)-$(version) ; \
+	     mv $(latest) .. ; \
+	     rm -rf $(pkgname)-$(version) ; \
+	   ) ; \
+	 done
+
+$(lsha1s): %.$(lsuffix).sha1sum : %.$(lsuffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(downloads) *.$(lsuffix) *.sha1sum
diff --git a/GNU/ncurses/6.4/Makefile b/GNU/ncurses/6.4/Makefile
new file mode 100644
index 0000000..65544c3
--- /dev/null
+++ b/GNU/ncurses/6.4/Makefile
@@ -0,0 +1,92 @@
+#
+# Project Home:
+# ============
+# https://invisible-island.net/ncurses/announce.html
+#
+# Downloads:
+# =========
+# ftp://invisible-island.net/ncurses/
+# ftp://ftp.gnu.org/pub/gnu/ncurses/
+#
+
+url         = https://invisible-island.net/archives/ncurses
+
+version     = 6.4
+pkgname     = ncurses
+
+downloads   = downloads
+
+suffix      = tar.gz
+tarballs    = $(addprefix $(downloads)/, $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version))))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+dates       = 20230107 20230114 20230121 20230128 20230211 20230218 20230225
+dates      += 20230311 20230401
+
+psuffix     = patch.gz
+patches     = $(addprefix $(downloads)/, $(addsuffix .$(psuffix), $(addprefix $(pkgname)-$(version)-, $(dates))))
+psha1s      = $(addsuffix .sha1sum, $(patches))
+
+date        = $(shell echo $(dates) | tr ' ' '\n' | tail -1)
+lsuffix     = tar.xz
+latest      = $(pkgname)-$(version)-$(date).$(lsuffix)
+lsha1s      = $(addsuffix .sha1sum, $(latest))
+
+all: $(tarballs) $(patches) $(latest) $(sha1s) $(psha1s) $(lsha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@mkdir -p $(CURDIR)/downloads
+	@for tarball in $(tarballs) ; do \
+	  tarball=`basename $$tarball` ; \
+	  wget -N $(url)/$$tarball ; \
+	  mv $$tarball $(downloads)/ ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(patches):
+	@echo -e "\n======= Downloading patches for $(pkgname)-$(version) =======\n"
+	@for patch in $(patches) ; do \
+	  patch=`basename $$patch` ; \
+	  wget -N $(url)/$(version)/$$patch ; \
+	  mv $$patch $(downloads)/ ; \
+	done
+
+$(psha1s): %.$(psuffix).sha1sum : %.$(psuffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+$(latest): $(tarballs) $(patches)
+	@echo -e "\n======= Create patched $(latest) tarball =======\n"
+	@for tarball in $(pkgname)-$(version).$(suffix) ; do \
+	   ( cd $(downloads) ; \
+	     tar -xzf $$tarball ; \
+	     ( cd $(pkgname)-$(version) ; \
+	       patches="$(addsuffix .$(psuffix), $(addprefix ../$(pkgname)-$(version)-, $(dates)))" ; \
+	       for patch in `echo $${patches} | sort` ; do \
+	         zcat $$patch | patch -p1 ; \
+	       done ; \
+	     ) ; \
+	     tar cJf $(latest) $(pkgname)-$(version) ; \
+	     mv $(latest) .. ; \
+	     rm -rf $(pkgname)-$(version) ; \
+	   ) ; \
+	 done
+
+$(lsha1s): %.$(lsuffix).sha1sum : %.$(lsuffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(downloads) *.$(lsuffix) *.sha1sum
diff --git a/GNU/ncurses/Makefile b/GNU/ncurses/Makefile
new file mode 100644
index 0000000..6e00414
--- /dev/null
+++ b/GNU/ncurses/Makefile
@@ -0,0 +1,29 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := 5.9 \
+           6.0 \
+           6.1 \
+           6.2 \
+           6.3 \
+           6.4
+
+
+all-recursive downloads_clean-recursive:
+	@set fnord $(MAKEFLAGS); amf=$$2; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  local_target="$$target"; \
+	  (cd $$subdir && $(MAKE) $$fnord $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; test -z "$$fail"
+
+all: all-recursive
+
+downloads_clean: downloads_clean-recursive
+
+.PHONY: all-recursive downloads_clean-recursive all downloads_clean
diff --git a/GNU/patch/Makefile b/GNU/patch/Makefile
new file mode 100644
index 0000000..db781bb
--- /dev/null
+++ b/GNU/patch/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/patch
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/patch
+#
+
+url         = https://ftp.gnu.org/gnu/patch
+
+versions    = 2.7 2.7.6
+
+pkgname     = patch
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/pth/Makefile b/GNU/pth/Makefile
new file mode 100644
index 0000000..fff15fe
--- /dev/null
+++ b/GNU/pth/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/pth
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/pth
+#
+
+url         = https://ftp.gnu.org/gnu/pth
+
+versions    = 2.0.6 2.0.7
+
+pkgname     = pth
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/readline/Makefile b/GNU/readline/Makefile
new file mode 100644
index 0000000..ab06505
--- /dev/null
+++ b/GNU/readline/Makefile
@@ -0,0 +1,64 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/bash/bash.html
+#
+# Downloads:
+# =========
+# https://ftp.cwru.edu/pub/bash/
+#
+
+url         = https://ftp.gnu.org/gnu/readline
+
+versions    = 6.2 6.3 8.0 8.1 8.2
+
+pkgname     = readline
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+patches     = $(addsuffix -patches.$(suffix), $(addprefix $(pkgname)-, $(versions)))
+
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  v=`echo $$version | sed 's,\.,,g'` ; \
+	  wget -N $(url)/$(pkgname)-$$version.$(suffix) ; \
+	  mkdir -p $(pkgname)-$$version-patches ; \
+	  cd $(pkgname)-$$version-patches ; \
+	  for file in `curl -s $(url)/$(pkgname)-$$version-patches/ | grep ">$(pkgname)[^<]*<" | sed 's,.*>\($(pkgname)[^<]*\)<.*,\1,'` ; do \
+	    wget -N $(url)/$(pkgname)-$$version-patches/$$file ; \
+	  done ; \
+	  if [ "" != "`find -iname '$(pkgname)*' -exec echo '{}' \; -quit`" ] ; then \
+	    cd .. ; \
+	    tar czf $(pkgname)-$$version-patches.$(suffix) $(pkgname)-$$version-patches ; \
+	    mv $(pkgname)-$$version-patches $(pkgname)-$$version-patched ; \
+	    tar xzf $(pkgname)-$$version.$(suffix) ; \
+	    ( cd $(pkgname)-$$version ; \
+	      for file in ../$(pkgname)-$$version-patched/$(pkgname)??-??? ; do patch -p0 --batch < $$file ; done \
+	    ) ; \
+	    mv $(pkgname)-$$version-patched $(pkgname)-$$version-patches ; \
+	    tar czf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	    rm -rf $(pkgname)-$$version ; \
+	  else \
+	    cd .. ; \
+	  fi ; \
+	  rm -rf $(pkgname)-$$version-patches ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for version in $(versions) ; do \
+	  echo -e "\n======= Calculation the '$(pkgname)-$$version.$(suffix)' sha1sum =======\n" ; \
+	  sha1sum --binary $(pkgname)-$$version.$(suffix) > $(pkgname)-$$version.$(suffix).sha1sum ; \
+	  if [ -f $(pkgname)-$$version-patches.$(suffix) ] ; then \
+	    sha1sum --binary $(pkgname)-$$version-patches.$(suffix) > $(pkgname)-$$version-patches.$(suffix).sha1sum ; \
+	  fi ; \
+	done
+
+downloads_clean:
+	@rm -rf *.$(suffix) *.sha1sum
diff --git a/GNU/screen/Makefile b/GNU/screen/Makefile
new file mode 100644
index 0000000..d09081b
--- /dev/null
+++ b/GNU/screen/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/screen
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/screen
+#
+
+url         = https://ftp.gnu.org/gnu/screen
+
+versions    = 4.7.0 4.8.0 4.9.0
+
+pkgname     = screen
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+patches     = $(addsuffix -patches.$(suffix), $(addprefix $(pkgname)-, $(versions)))
+
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/sed/Makefile b/GNU/sed/Makefile
new file mode 100644
index 0000000..f7e212d
--- /dev/null
+++ b/GNU/sed/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/sed/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/sed/
+#
+
+url         = https://ftp.gnu.org/gnu/sed
+
+versions    = 4.7 4.8 4.9
+
+pkgname     = sed
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/sharutils/Makefile b/GNU/sharutils/Makefile
new file mode 100644
index 0000000..1a74154
--- /dev/null
+++ b/GNU/sharutils/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/sharutils
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/sharutils
+#
+
+url         = https://ftp.gnu.org/gnu/sharutils
+
+versions    = 4.14 4.15.2
+
+pkgname     = sharutils
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/shtool/Makefile b/GNU/shtool/Makefile
new file mode 100644
index 0000000..59ad6d7
--- /dev/null
+++ b/GNU/shtool/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/shtool
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/shtool
+#
+
+url         = https://ftp.gnu.org/gnu/shtool
+
+versions    = 2.0.7 2.0.8
+
+pkgname     = shtool
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/tar/Makefile b/GNU/tar/Makefile
new file mode 100644
index 0000000..4c28540
--- /dev/null
+++ b/GNU/tar/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/tar
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/tar
+#
+
+url         = https://ftp.gnu.org/gnu/tar
+
+versions    = 1.26 1.27.1 1.32 1.34
+
+pkgname     = tar
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/termcap/Makefile b/GNU/termcap/Makefile
new file mode 100644
index 0000000..ca770cf
--- /dev/null
+++ b/GNU/termcap/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/termcap/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/pub/gnu/termcap/
+#
+
+url         = https://ftp.gnu.org/pub/gnu/termcap
+
+versions    = 1.3 1.3.1
+
+pkgname     = termcap
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/termutils/Makefile b/GNU/termutils/Makefile
new file mode 100644
index 0000000..3668c28
--- /dev/null
+++ b/GNU/termutils/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/termcap/
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/pub/gnu/termutils/
+#
+
+url         = https://ftp.gnu.org/pub/gnu/termutils
+
+versions    = 2.0
+
+pkgname     = termutils
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/texinfo/Makefile b/GNU/texinfo/Makefile
new file mode 100644
index 0000000..0f9edf8
--- /dev/null
+++ b/GNU/texinfo/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/texinfo
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/texinfo
+#
+
+url         = https://ftp.gnu.org/gnu/texinfo
+
+versions    = 5.2 6.7 6.8 7.0
+
+pkgname     = texinfo
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/time/Makefile b/GNU/time/Makefile
new file mode 100644
index 0000000..7d41653
--- /dev/null
+++ b/GNU/time/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/time
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/time
+#
+
+url         = https://ftp.gnu.org/gnu/time
+
+versions    = 1.7 1.9
+
+pkgname     = time
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/uucp/Makefile b/GNU/uucp/Makefile
new file mode 100644
index 0000000..d2ca5a0
--- /dev/null
+++ b/GNU/uucp/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/uucp
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/uucp
+#
+
+url         = https://ftp.gnu.org/gnu/uucp
+
+versions    = 1.07
+
+pkgname     = uucp
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/wget/Makefile b/GNU/wget/Makefile
new file mode 100644
index 0000000..ca2924c
--- /dev/null
+++ b/GNU/wget/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/wget
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/wget
+#
+
+url         = https://ftp.gnu.org/gnu/wget
+
+versions    = 1.20.3 1.21 1.21.1 1.21.2 1.21.3
+
+pkgname     = wget
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.lz ; \
+	  lzip -d $(pkgname)-$$version.tar.lz ; \
+	  xz $(pkgname)-$$version.tar ; \
+	  rm -f $(pkgname)-$$version.tar.lz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/wget2/Makefile b/GNU/wget2/Makefile
new file mode 100644
index 0000000..25d106a
--- /dev/null
+++ b/GNU/wget2/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.gnu.org/software/wget
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/wget
+#
+
+url         = https://ftp.gnu.org/gnu/wget
+
+versions    = 2.0.1
+
+pkgname     = wget2
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.tar.lz ; \
+	  lzip -d $(pkgname)-$$version.tar.lz ; \
+	  xz $(pkgname)-$$version.tar ; \
+	  rm -f $(pkgname)-$$version.tar.lz ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/GNU/which/Makefile b/GNU/which/Makefile
new file mode 100644
index 0000000..e6d70e2
--- /dev/null
+++ b/GNU/which/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# https://savannah.gnu.org/projects/which
+#
+# Downloads:
+# =========
+# https://ftp.gnu.org/gnu/which
+#
+
+url         = https://ftp.gnu.org/gnu/which
+
+versions    = 2.20 2.21
+
+pkgname     = which
+suffix      = tar.gz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+all: $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======\n"
+	@for tarball in $(tarballs) ; do \
+	  wget -N $(url)/$$tarball ; \
+	done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	  echo -e "\n======= Calculation the '$$tarball' sha1sum =======\n" ; \
+	  sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/Makefile b/Makefile
index 511ccae..31880d3 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,8 @@
 # $ tree -fid .
 #
 
-SUBDIRS := Linux    \
+SUBDIRS := GNU      \
+           Linux    \
            U-Boot   \
            Wayland  \
            X.org    \