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-08 21:49:09 +0300 committer: kx <kx@radix.pro> 2023-04-08 21:49:09 +0300 commit: 8da99f0df767bd0f30cec5080adccec66eecaab4 parent: bc12d811bfdbcc8ba92fd32a06eabf0644eac6b9
Commit Summary:
media tarballs
Diffstat:
121 files changed, 4191 insertions, 0 deletions
diff --git a/packages/Makefile b/packages/Makefile
index 35d9a43..c87b349 100644
--- a/packages/Makefile
+++ b/packages/Makefile
@@ -7,6 +7,7 @@
 SUBDIRS := b \
            d \
            j \
+           m \
            s \
            x \
            y
diff --git a/packages/m/Makefile b/packages/m/Makefile
new file mode 100644
index 0000000..0e39c02
--- /dev/null
+++ b/packages/m/Makefile
@@ -0,0 +1,81 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := OpenMAX      \
+           VideoLAN     \
+           alsa         \
+           amp          \
+           amr          \
+           audiocoding  \
+           audiofile    \
+           dcadec       \
+           fb           \
+           ffmpeg       \
+           gsm          \
+           jackaudio    \
+           ladspa       \
+           lame         \
+           libass       \
+           libav        \
+           libavtp      \
+           libdc1394    \
+           libdv        \
+           libexif      \
+           libgd        \
+           libgphoto2   \
+           libmodplug   \
+           libsoxr      \
+           libvdpau     \
+           libvpx       \
+           libwebp      \
+           linuxaudio   \
+           linuxtv      \
+           mad          \
+           mega-nerd    \
+           mikmod       \
+           moc          \
+           mp4v2        \
+           mpg123       \
+           normalize    \
+           opencv       \
+           openh264     \
+           openjpeg     \
+           openjpeg2    \
+           portaudio    \
+           pulseaudio   \
+           record       \
+           rtmpdump     \
+           sane         \
+           schroedinger \
+           smpeg        \
+           soma         \
+           sox          \
+           taglib       \
+           twolame      \
+           vaapi        \
+           vid-stab     \
+           wavpack      \
+           workbone     \
+           xiph         \
+           xvidcore     \
+           zvbi
+
+
+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/packages/m/OpenMAX/Makefile b/packages/m/OpenMAX/Makefile
new file mode 100644
index 0000000..fe084b0
--- /dev/null
+++ b/packages/m/OpenMAX/Makefile
@@ -0,0 +1,24 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := libomxil-bellagio
+
+
+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/packages/m/OpenMAX/libomxil-bellagio/Makefile b/packages/m/OpenMAX/libomxil-bellagio/Makefile
new file mode 100644
index 0000000..8ea6248
--- /dev/null
+++ b/packages/m/OpenMAX/libomxil-bellagio/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://omxil.sourceforge.net
+#
+# Downloads:
+# =========
+# https://omxil.sourceforge.net/downloads.html
+# https://downloads.sourceforge.net/project/omxil/omxil/Bellagio%20${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/omxil/omxil
+
+versions    = 0.9.3
+
+pkgname     = libomxil-bellagio
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][.0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/Bellagio%20$$version/$$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/packages/m/VideoLAN/Makefile b/packages/m/VideoLAN/Makefile
new file mode 100644
index 0000000..cb187d0
--- /dev/null
+++ b/packages/m/VideoLAN/Makefile
@@ -0,0 +1,26 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := libbluray \
+           x264      \
+           x265
+
+
+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/packages/m/VideoLAN/libbluray/Makefile b/packages/m/VideoLAN/libbluray/Makefile
new file mode 100644
index 0000000..98d1f93
--- /dev/null
+++ b/packages/m/VideoLAN/libbluray/Makefile
@@ -0,0 +1,78 @@
+#
+# Project Home:
+# ============
+# https://www.videolan.org/developers/libbluray.html
+#
+# Git:
+# ===
+# https://code.videolan.org/videolan/libbluray/
+#
+# Clone:
+# =====
+# git clone https://code.videolan.org/videolan/libbluray.git
+#
+
+url        = https://code.videolan.org/videolan
+
+repo_name  = libbluray
+pkg_name   = libbluray
+suffix     = tar.xz
+
+versions   = 0.9.3 1.3.4
+
+# List of tags to be extracted:
+TAGS       = $(versions)
+
+git_repo   = .git_clone
+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 version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) ; \
+	      git submodule update --init ; \
+	      git archive --format=tar --prefix=$(repo_name)-$${version}/ --output=../$(repo_name)-$${version}.tar $${tag} ; \
+	      cmd="git submodule foreach --recursive 'git archive --format=tar --prefix=$(repo_name)-$${version}/\$$sm_path/ HEAD --output=\$$toplevel/../$(repo_name)-$${version}-sub-\$$sha1.tar'" ; \
+	      eval $${cmd} ; \
+	    ) ; \
+	    tar --concatenate --file $(repo_name)-$${version}.tar $(repo_name)-$${version}-sub-*.tar ; \
+	    rm -f $(repo_name)-$${version}-sub-*.tar ; \
+	    xz $(repo_name)-$${version}.tar ; \
+	    tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	    ( cd $(pkg_name)-$$version ; \
+	      find . -type f \( -name ".gitlab*" -o -name ".gitignore" -o -name ".gitmodules" -o -name ".dummy" \) -exec rm -f {} \; ; \
+	    ) ; \
+	    tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	    rm -rf $(pkg_name)-$$version ; \
+	  fi ; \
+	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/packages/m/VideoLAN/x264/Makefile b/packages/m/VideoLAN/x264/Makefile
new file mode 100644
index 0000000..32fa5fd
--- /dev/null
+++ b/packages/m/VideoLAN/x264/Makefile
@@ -0,0 +1,79 @@
+#
+# Project Home:
+# ============
+# https://www.videolan.org/developers/x264.html
+#
+# Git:
+# ======
+# https://code.videolan.org/videolan/x264
+#
+# Clone:
+# =====
+# git clone https://code.videolan.org/videolan/x264.git
+#
+
+url        = https://code.videolan.org/videolan
+
+repo_name  = x264
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | rev | date
+#            ----------------------------------------+-----+---------
+revisions  = 72d53ab2ac7af24597a824e868f2ef363a22f5d4:0.148.20160917
+revisions += 86b71982e131eaa70125f8d0e725fcade9c4c677:0.148.20160920
+revisions += 941cae6d1d6d6344c9a1d27440eaf2872b18ca9a:0.164.20221217
+
+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) ) ; \
+	    tar xJf $(repo_name)-$$version.$(suffix) ; \
+	    ( cd $(repo_name)-$$version ; \
+	      find . -type f \( -name ".gitlab*" -o -name ".gitignore" \) -exec rm -f {} \; ; \
+	    ) ; \
+	    tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	    rm -rf $(repo_name)-$$version ; \
+	  fi ; \
+	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/packages/m/VideoLAN/x265/Makefile b/packages/m/VideoLAN/x265/Makefile
new file mode 100644
index 0000000..3ca8970
--- /dev/null
+++ b/packages/m/VideoLAN/x265/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+# https://bitbucket.org/multicoreware/x265_git/wiki/Home
+#
+# Downloads:
+# =========
+# https://bitbucket.org/multicoreware/x265_git/downloads
+#
+
+url         = https://bitbucket.org/multicoreware/x265_git/downloads
+
+versions    = 2.9 3.0 3.1.2 3.2.1 3.3 3.5
+
+pkgname     = x265
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$(pkgname)_$$version.tar.gz ; \
+	  tar xzf $(pkgname)_$$version.tar.gz ; \
+	  mv $(pkgname)_$$version $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)_$$version $(pkgname)_$$version.tar.gz ; \
+	  tar czf $$tarball $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	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/packages/m/alsa/Makefile b/packages/m/alsa/Makefile
new file mode 100644
index 0000000..1165a18
--- /dev/null
+++ b/packages/m/alsa/Makefile
@@ -0,0 +1,31 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := conf     \
+           firmware \
+           lib      \
+           oss      \
+           plugins  \
+           pyalsa   \
+           tools    \
+           utils
+
+
+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/packages/m/alsa/conf/Makefile b/packages/m/alsa/conf/Makefile
new file mode 100644
index 0000000..c5e692e
--- /dev/null
+++ b/packages/m/alsa/conf/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := topology \
+           ucm
+
+
+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/packages/m/alsa/conf/topology/Makefile b/packages/m/alsa/conf/topology/Makefile
new file mode 100644
index 0000000..46ea062
--- /dev/null
+++ b/packages/m/alsa/conf/topology/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/lib
+
+versions    = 1.2.5.1
+
+pkgname     = alsa-topology-conf
+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/packages/m/alsa/conf/ucm/Makefile b/packages/m/alsa/conf/ucm/Makefile
new file mode 100644
index 0000000..a1310d2
--- /dev/null
+++ b/packages/m/alsa/conf/ucm/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/lib
+
+versions    = 1.2.5.1 1.2.8
+
+pkgname     = alsa-ucm-conf
+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/packages/m/alsa/firmware/Makefile b/packages/m/alsa/firmware/Makefile
new file mode 100644
index 0000000..f795f47
--- /dev/null
+++ b/packages/m/alsa/firmware/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/firmware
+
+versions    = 1.0.27 1.0.28 1.0.29 1.2.4
+
+pkgname     = alsa-firmware
+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/packages/m/alsa/lib/Makefile b/packages/m/alsa/lib/Makefile
new file mode 100644
index 0000000..798ec2e
--- /dev/null
+++ b/packages/m/alsa/lib/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/lib
+
+versions    = 1.0.27.2 1.0.28 1.0.29 1.1.0 1.1.1 1.2.8
+
+pkgname     = alsa-lib
+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/packages/m/alsa/oss/Makefile b/packages/m/alsa/oss/Makefile
new file mode 100644
index 0000000..943c648
--- /dev/null
+++ b/packages/m/alsa/oss/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/oss-lib
+
+versions    = 1.0.28 1.1.8
+
+pkgname     = alsa-oss
+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/packages/m/alsa/plugins/Makefile b/packages/m/alsa/plugins/Makefile
new file mode 100644
index 0000000..8f3edbb
--- /dev/null
+++ b/packages/m/alsa/plugins/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/plugins
+
+versions    = 1.0.27 1.0.28 1.0.29 1.1.0 1.1.1 1.2.7.1
+
+pkgname     = alsa-plugins
+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/packages/m/alsa/pyalsa/Makefile b/packages/m/alsa/pyalsa/Makefile
new file mode 100644
index 0000000..917735f
--- /dev/null
+++ b/packages/m/alsa/pyalsa/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/pyalsa
+
+versions    = 1.2.7
+
+pkgname     = pyalsa
+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/packages/m/alsa/tools/Makefile b/packages/m/alsa/tools/Makefile
new file mode 100644
index 0000000..66c1b2a
--- /dev/null
+++ b/packages/m/alsa/tools/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/tools
+
+versions    = 1.0.27 1.0.28 1.0.29 1.1.0 1.2.5
+
+pkgname     = alsa-tools
+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/packages/m/alsa/utils/Makefile b/packages/m/alsa/utils/Makefile
new file mode 100644
index 0000000..3f6d3e7
--- /dev/null
+++ b/packages/m/alsa/utils/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.alsa-project.org/wiki/Main_Page
+#
+# Downloads:
+# =========
+# https://www.alsa-project.org/wiki/Download
+#
+
+url         = https://www.alsa-project.org/files/pub/utils
+
+versions    = 1.0.27.2 1.0.28 1.0.29 1.1.0 1.1.1 1.2.8
+
+pkgname     = alsa-utils
+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/packages/m/amp/Makefile b/packages/m/amp/Makefile
new file mode 100644
index 0000000..2b5d5ed
--- /dev/null
+++ b/packages/m/amp/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://en.wikipedia.org/wiki/Tomislav_Uzelac
+#
+# Downloads:
+# =========
+# https://mirrors.slackware.com/slackware/slackware/source/ap/amp
+#
+
+url         = https://mirrors.slackware.com/slackware/slackware/source/ap/amp
+
+version     = 0.7.6
+
+pkgname     = amp
+suffix      = tar.xz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-,$(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+
+
+all: $(tarball) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	@wget -N $(url)/amp-$(version).tar.lz
+	@lzip -d amp-$(version).tar.lz
+	@xz amp-$(version).tar
+
+$(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 $(tarball) $(sha1s)
diff --git a/packages/m/amr/Makefile b/packages/m/amr/Makefile
new file mode 100644
index 0000000..fe5a42b
--- /dev/null
+++ b/packages/m/amr/Makefile
@@ -0,0 +1,27 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := fdk-aac      \
+           opencore-amr \
+           vo-aacenc    \
+           vo-amrwbenc
+
+
+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/packages/m/amr/fdk-aac/Makefile b/packages/m/amr/fdk-aac/Makefile
new file mode 100644
index 0000000..a35f91c
--- /dev/null
+++ b/packages/m/amr/fdk-aac/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/opencore-amr
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/opencore-amr/files
+#
+
+url         = https://sourceforge.net/projects/opencore-amr/files/fdk-aac
+
+versions    = 0.1.3 0.1.4 2.0.2
+
+pkgname     = fdk-aac
+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/packages/m/amr/opencore-amr/Makefile b/packages/m/amr/opencore-amr/Makefile
new file mode 100644
index 0000000..dbfb5c4
--- /dev/null
+++ b/packages/m/amr/opencore-amr/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/opencore-amr
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/opencore-amr/files
+#
+
+url         = https://sourceforge.net/projects/opencore-amr/files/opencore-amr
+
+versions    = 0.1.3 0.1.6
+
+pkgname     = opencore-amr
+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/packages/m/amr/vo-aacenc/Makefile b/packages/m/amr/vo-aacenc/Makefile
new file mode 100644
index 0000000..bd5761b
--- /dev/null
+++ b/packages/m/amr/vo-aacenc/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/opencore-amr
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/opencore-amr/files
+#
+
+url         = https://sourceforge.net/projects/opencore-amr/files/vo-aacenc
+
+versions    = 0.1.3
+
+pkgname     = vo-aacenc
+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/packages/m/amr/vo-amrwbenc/Makefile b/packages/m/amr/vo-amrwbenc/Makefile
new file mode 100644
index 0000000..7878cee
--- /dev/null
+++ b/packages/m/amr/vo-amrwbenc/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/opencore-amr
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/opencore-amr/files
+#
+
+url         = https://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc
+
+versions    = 0.1.3
+
+pkgname     = vo-amrwbenc
+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/packages/m/audiocoding/Makefile b/packages/m/audiocoding/Makefile
new file mode 100644
index 0000000..6850bb2
--- /dev/null
+++ b/packages/m/audiocoding/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := faac  \
+           faad2
+
+
+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/packages/m/audiocoding/faac/Makefile b/packages/m/audiocoding/faac/Makefile
new file mode 100644
index 0000000..3d0bad4
--- /dev/null
+++ b/packages/m/audiocoding/faac/Makefile
@@ -0,0 +1,47 @@
+#
+# Project Home:
+# ============
+# https://www.audiocoding.com/faac.html
+#
+# Downloads:
+# =========
+# https://www.audiocoding.com/downloads.html
+#
+
+url         = https://downloads.sourceforge.net/faac
+
+versions    = 1.28 1.29.9.2 1.30
+
+pkgname     = faac
+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 version in $(versions) ; do \
+	   if [ "$$version" = "1.30" ] ; then \
+	     wget -N $(url)/$(pkgname)-1_30.$(suffix) ; \
+	     tar xzf $(pkgname)-1_30.$(suffix) ; \
+	     mv $(pkgname)-1_30 $(pkgname)-1.30 ; \
+	     tar czf $(pkgname)-1.30.$(suffix) $(pkgname)-1.30 ; \
+	     rm -rf $(pkgname)-1.30 $(pkgname)-1_30.$(suffix) ; \
+	   else \
+	     wget -N $(url)/$(pkgname)-$${version}.$(suffix) ; \
+	   fi ; \
+	 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/packages/m/audiocoding/faad2/Makefile b/packages/m/audiocoding/faad2/Makefile
new file mode 100644
index 0000000..dee1327
--- /dev/null
+++ b/packages/m/audiocoding/faad2/Makefile
@@ -0,0 +1,71 @@
+#
+# Project Home:
+# ============
+# https://github.com/knik0/faad2
+#
+# GitHub:
+# ======
+# https://github.com/knik0/faad2
+#
+# Clone:
+# =====
+# git clone https://github.com/knik0/faad2.git
+#
+
+url        = https://github.com/knik0
+
+repo_name  = faad2
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 3918dee56063500d0aa23d6c3c94b211ac471a8c:2.10.1
+
+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 ; \
+	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/packages/m/audiofile/Makefile b/packages/m/audiofile/Makefile
new file mode 100644
index 0000000..33700b7
--- /dev/null
+++ b/packages/m/audiofile/Makefile
@@ -0,0 +1,42 @@
+#
+# Project Home:
+# ============
+# https://audiofile.68k.org
+#
+# GitHub:
+# ======
+# https://github.com/mpruett/audiofile
+#
+# Downloads:
+# =========
+# https://audiofile.68k.org/audiofile-0.3.6.tar.gz
+#
+
+url         = http://audiofile.68k.org
+
+versions    = 0.3.6
+pkgname     = audiofile
+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/packages/m/dcadec/Makefile b/packages/m/dcadec/Makefile
new file mode 100644
index 0000000..0d09f34
--- /dev/null
+++ b/packages/m/dcadec/Makefile
@@ -0,0 +1,76 @@
+#
+# Project Home:
+# ============
+# https://github.com/foo86/dcadec
+#
+# GitHub:
+# ======
+# https://github.com/foo86/dcadec
+#
+# Clone:
+# =====
+# https://github.com/foo86/dcadec.git
+#
+
+url        = https://github.com/foo86
+
+repo_name  = dcadec
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 0e074384c9569e921f8facfe3863912cdb400596:0.2.0
+
+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 --recursive $(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 $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)/test/samples ; cp -a * ../../../$(repo_name)-$$version/test/samples ) ; \
+	  ( cd $(repo_name)-$$version ; rm -rf .git .gitignore .gitmodules test/samples/.git ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/fb/Makefile b/packages/m/fb/Makefile
new file mode 100644
index 0000000..95d762b
--- /dev/null
+++ b/packages/m/fb/Makefile
@@ -0,0 +1,24 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := fbset
+
+
+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/packages/m/fb/fbset/Makefile b/packages/m/fb/fbset/Makefile
new file mode 100644
index 0000000..04c1ea6
--- /dev/null
+++ b/packages/m/fb/fbset/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://github.com/sudipm-mukherjee/fbset
+#
+# Downloads:
+# =========
+# https://ftp.radix.pro/3pp/zero/m/fb/fbset/
+#
+
+url         = https://ftp.radix.pro/3pp/zero/m/fb/fbset
+
+versions    = 2.1
+
+pkgname     = fbset
+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/packages/m/ffmpeg/Makefile b/packages/m/ffmpeg/Makefile
new file mode 100644
index 0000000..5b3ab3c
--- /dev/null
+++ b/packages/m/ffmpeg/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://ffmpeg.org
+#
+# Downloads:
+# =========
+# https://ffmpeg.org/releases
+#
+
+url         = https://ffmpeg.org/releases
+
+versions    = 3.0 3.0.2 3.1.4 5.1.2
+
+pkgname     = ffmpeg
+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/packages/m/gsm/Makefile b/packages/m/gsm/Makefile
new file mode 100644
index 0000000..d05c821
--- /dev/null
+++ b/packages/m/gsm/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.quut.com/gsm
+#
+# Downloads:
+# =========
+# https://www.quut.com/gsm
+#
+
+url         = https://www.quut.com/gsm
+
+versions    = 1.0.13 1.0.14 1.0.22
+
+pkgname     = gsm
+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/packages/m/jackaudio/Makefile b/packages/m/jackaudio/Makefile
new file mode 100644
index 0000000..179bfc6
--- /dev/null
+++ b/packages/m/jackaudio/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := jack1 \
+           jack2
+
+
+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/packages/m/jackaudio/jack1/Makefile b/packages/m/jackaudio/jack1/Makefile
new file mode 100644
index 0000000..915b520
--- /dev/null
+++ b/packages/m/jackaudio/jack1/Makefile
@@ -0,0 +1,76 @@
+#
+# Project Home:
+# ============
+#   https://jackaudio.org
+#
+# Clone:
+# =====
+#   git clone https://github.com/jackaudio/jack1.git
+#
+
+url        = https://github.com/jackaudio
+
+repo_name  = jack1
+pkg_name   = jack
+
+versions   = 0.126.0
+#
+# List of revisions to be extracted:
+# =================================
+#
+#                                               hash | version
+#            ----------------------------------------+--------
+revisions  = 48b2d8a525b0082dded4a9d1d6137a2767962b2a:0.126.0
+
+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 ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) ; \
+	      git submodule update --init ; \
+	      git archive --format=tar --prefix=$(pkg_name)-$${version}/ --output=../$(pkg_name)-$${version}.tar $${hash} ; \
+	      cmd="git submodule foreach --recursive 'git archive --format=tar --prefix=$(pkg_name)-$${version}/\$$sm_path/ HEAD --output=\$$toplevel/../$(pkg_name)-$${version}-sub-\$$sha1.tar'" ; \
+	      eval $${cmd} ; \
+	    ) ; \
+	    tar --concatenate --file $(pkg_name)-$${version}.tar $(pkg_name)-$${version}-sub-*.tar ; \
+	    rm -f $(pkg_name)-$${version}-sub-*.tar ; \
+	    xz $(pkg_name)-$${version}.tar ; \
+	  fi ; \
+	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/packages/m/jackaudio/jack2/Makefile b/packages/m/jackaudio/jack2/Makefile
new file mode 100644
index 0000000..bcc5391
--- /dev/null
+++ b/packages/m/jackaudio/jack2/Makefile
@@ -0,0 +1,70 @@
+#
+# Project Home:
+# ============
+#   https://jackaudio.org
+#
+# Clone:
+# =====
+#   git clone https://github.com/jackaudio/jack2.git
+#
+
+url        = https://github.com/jackaudio
+
+repo_name  = jack2
+pkg_name   = jack2
+
+versions   = 0.126.0
+#
+# List of revisions to be extracted:
+# =================================
+#
+#                                               hash | version
+#            ----------------------------------------+--------
+revisions  = 6b3c96d8aeef8aeb4b20f3aa647e6d01b4000ff8:1.9.21
+
+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 ':'` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$hash | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	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/packages/m/ladspa/Makefile b/packages/m/ladspa/Makefile
new file mode 100644
index 0000000..e85a56e
--- /dev/null
+++ b/packages/m/ladspa/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+#   https://ladspa.org
+#
+# Downloads:
+# =========
+#   https://www.ladspa.org/download/index.html
+#
+
+url         = https://www.ladspa.org/download
+
+versions    = 1.17
+
+pkgname     = ladspa
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$(pkgname)_sdk_$$version.tgz ; \
+	  tar xzf $(pkgname)_sdk_$$version.tgz ; \
+	  mv $(pkgname)_sdk_$$version $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)_sdk_$$version $(pkgname)_sdk_$$version.tgz ; \
+	  tar czf $$tarball $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version ; \
+	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/packages/m/lame/Makefile b/packages/m/lame/Makefile
new file mode 100644
index 0000000..a3e8987
--- /dev/null
+++ b/packages/m/lame/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := lame    \
+           py-lame
+
+
+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/packages/m/lame/lame/Makefile b/packages/m/lame/lame/Makefile
new file mode 100644
index 0000000..894c288
--- /dev/null
+++ b/packages/m/lame/lame/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/lame
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/lame/files
+#
+
+url         = https://sourceforge.net/projects/lame/files/lame
+
+versions    = 3.99.5 3.100
+
+pkgname     = lame
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/lame/py-lame/Makefile b/packages/m/lame/py-lame/Makefile
new file mode 100644
index 0000000..95806de
--- /dev/null
+++ b/packages/m/lame/py-lame/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/lame
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/lame/files
+#
+
+url         = https://sourceforge.net/projects/lame/files/py-lame
+
+versions    = 0.1
+
+pkgname     = py-lame
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z-]*\)\([0-9][.0-9][0-9]*\)\([\.].*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/libass/Makefile b/packages/m/libass/Makefile
new file mode 100644
index 0000000..0ab222c
--- /dev/null
+++ b/packages/m/libass/Makefile
@@ -0,0 +1,77 @@
+#
+# Project Home:
+# ============
+# https://github.com/libass/libass
+#
+# GitHub:
+# ======
+# https://github.com/libass/libass
+#
+# Clone:
+# =====
+# https://github.com/libass/libass.git
+#
+
+url        = https://github.com/libass
+
+repo_name  = libass
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 7c30feaa6906c5f392f6a1496462504b09fd8df0:0.13.2
+revisions += 27b0232b0d9259bc009389a019eb6b47103f484a:0.13.3
+revisions += bef4b43ef1882b77f789f611d9cd24271ccdd65b:0.17.0
+
+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 $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; ./autogen.sh ; rm -rf autom4te.cache .github .gitignore *~ ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/libav/Makefile b/packages/m/libav/Makefile
new file mode 100644
index 0000000..247c868
--- /dev/null
+++ b/packages/m/libav/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+#  https://libav.org
+#
+# Git:
+#  git://git.libav.org/libav.git
+#  https://github.com/libav/libav.git
+#
+# Clone:
+# =====
+#  git clone git://git.libav.org/libav.git
+#  git clone https://github.com/libav/libav.git
+#
+
+url        = https://github.com/libav
+
+repo_name  = libav
+
+versions   = 9.10 9.11 9.16 10.3 10.7 11.2 11.4 12.3
+
+suffix     = tar.xz
+#
+# List of tags to be extracted:
+#
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+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 version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  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/ $$tag | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; rm -rf autom4te.cache .git* .travis.yml ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/libavtp/Makefile b/packages/m/libavtp/Makefile
new file mode 100644
index 0000000..a05adef
--- /dev/null
+++ b/packages/m/libavtp/Makefile
@@ -0,0 +1,71 @@
+#
+# Project Home:
+# ============
+# https://github.com/Avnu/libavtp
+#
+# GitHub:
+# ======
+# https://github.com/Avnu/libavtp
+#
+# Clone:
+# =====
+# https://github.com/Avnu/libavtp.git
+#
+
+url        = https://github.com/Avnu
+
+repo_name  = libavtp
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 3599a5bf2d18fc3ae89b64f208d8380e6ee3a866:0.2.0
+
+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 ; \
+	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/packages/m/libdc1394/Makefile b/packages/m/libdc1394/Makefile
new file mode 100644
index 0000000..c35f37f
--- /dev/null
+++ b/packages/m/libdc1394/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/projects/libdc1394
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/libdc1394/files/libdc1394-2
+#
+
+url         = https://downloads.sourceforge.net/project/libdc1394/libdc1394-2
+
+versions    = 2.2.4 2.2.6
+
+pkgname     = libdc1394
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/libdv/Makefile b/packages/m/libdv/Makefile
new file mode 100644
index 0000000..877f5ef
--- /dev/null
+++ b/packages/m/libdv/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://libdv.sourceforge.net
+# https://sourceforge.net/projects/libdv
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/libdv/libdv/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/libdv/libdv
+
+versions    = 1.0.0
+
+pkgname     = libdv
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9-]*\)\([0-9][.0-9]*[.0-9]*\)\(\.tar.*\)/\2/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/libexif/Makefile b/packages/m/libexif/Makefile
new file mode 100644
index 0000000..f9b7060
--- /dev/null
+++ b/packages/m/libexif/Makefile
@@ -0,0 +1,59 @@
+#
+# Project Home:
+# ============
+#   https://github.com/libexif/libexif
+#
+# Clone:
+# =====
+#   https://github.com/libexif/libexif.git
+#
+
+url        = https://github.com/libexif
+
+repo_name  = libexif
+pkg_name   = libexif
+suffix     = tar.xz
+
+versions   = 0.6.24
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(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 version in $(versions) ; do \
+	  tag=v`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@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/packages/m/libgd/Makefile b/packages/m/libgd/Makefile
new file mode 100644
index 0000000..b63da51
--- /dev/null
+++ b/packages/m/libgd/Makefile
@@ -0,0 +1,73 @@
+#
+# Project Home:
+# ============
+# https://www.libgd.org
+# https://libgd.github.io
+#
+# Git:
+# ===
+# https://github.com/libgd/libgd.git
+#
+# Downloads:
+# =========
+# https://github.com/libgd/libgd/archive
+#
+
+url         = https://github.com/libgd
+
+repo_name   = libgd
+#
+# List of tags to be extracted:
+#
+TAGS       = b5319a41286107b53daa0e08e402aa1819764bdc:2.3.3
+TAGS      += fe3e0d388c5b964d8ac2612e31b28344d400b063:2.3.3.1
+
+suffix     = tar.xz
+
+git_repo   = .git_clone
+versions   = $(foreach tag, $(TAGS), $(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 tag in $(TAGS) ; do \
+	  version=`echo $$tag | cut -f 2 -d ':'` ; \
+	  hash=`echo $$tag | cut -f 1 -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) ) ; \
+	   tar xJf $(repo_name)-$$version.$(suffix) ; \
+	   ( cd $(repo_name)-$$version ; ./bootstrap.sh ; rm -rf autom4te.cache .git* .travis.yml ) ; \
+	   tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	   rm -rf $(repo_name)-$$version ; \
+	  fi ; \
+	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/packages/m/libgphoto2/Makefile b/packages/m/libgphoto2/Makefile
new file mode 100644
index 0000000..3addfff
--- /dev/null
+++ b/packages/m/libgphoto2/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://www.gphoto.org
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/gphoto/files/libgphoto
+#
+
+url         = https://sourceforge.net/projects/gphoto/files/libgphoto
+
+versions    = 2.5.30
+
+pkgname     = libgphoto2
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/libmodplug/Makefile b/packages/m/libmodplug/Makefile
new file mode 100644
index 0000000..59eaae8
--- /dev/null
+++ b/packages/m/libmodplug/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://modplug-xmms.sourceforge.net
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/modplug-xmms/files/libmodplug/$VERSION
+#
+
+url         = https://sourceforge.net/projects/modplug-xmms/files/libmodplug
+
+versions    = 0.8.8.5 0.8.9.0
+
+pkgname     = libmodplug
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/libsoxr/Makefile b/packages/m/libsoxr/Makefile
new file mode 100644
index 0000000..af62b65
--- /dev/null
+++ b/packages/m/libsoxr/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://sourceforge.net/p/soxr/wiki/Home
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/soxr/files
+#
+
+url         = https://sourceforge.net/projects/soxr/files
+
+versions    = 0.1.2 0.1.3
+
+pkgname     = soxr
+suffix      = tar.xz
+
+tarballs    = $(addsuffix -Source.$(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/packages/m/libvdpau/Makefile b/packages/m/libvdpau/Makefile
new file mode 100644
index 0000000..9f59b0e
--- /dev/null
+++ b/packages/m/libvdpau/Makefile
@@ -0,0 +1,67 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Cgit:
+# ====
+# https://cgit.freedesktop.org/~aplattner/libvdpau
+#
+# Clone:
+# =====
+# git clone git://people.freedesktop.org/~aplattner/libvdpau
+#
+# Downloads:
+# =========
+# https://people.freedesktop.org/~aplattner/vdpau
+#
+
+url        = git://people.freedesktop.org/~aplattner
+
+repo_name  = libvdpau
+pkg_name   = libvdpau
+suffix     = tar.xz
+
+versions   = 1.5
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(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 version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@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/packages/m/libvpx/Makefile b/packages/m/libvpx/Makefile
new file mode 100644
index 0000000..c49e8b7
--- /dev/null
+++ b/packages/m/libvpx/Makefile
@@ -0,0 +1,61 @@
+#
+# Project Home:
+# ============
+# https://www.webmproject.org
+#
+# Clone:
+# =====
+# git clone https://github.com/webmproject/libvpx.git
+#
+
+url        = https://github.com/webmproject/libvpx.git
+
+repo_name  = libvpx
+suffix     = tar.xz
+
+#
+# List of tags to be extracted:
+#
+TAGS       = 1.2.0 1.3.0 1.4.0 1.5.0 1.12.0
+
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(repo_name)-, $(TAGS)))
+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)
+	@touch $@
+
+$(tarballs): $(git_repo)
+	@for tag in $(TAGS) ; do \
+	  version=`echo $$tag` ; \
+	  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/ v$$tag | \
+	      xz >../$(repo_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	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/packages/m/libwebp/Makefile b/packages/m/libwebp/Makefile
new file mode 100644
index 0000000..3819ba0
--- /dev/null
+++ b/packages/m/libwebp/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://developers.google.com/speed/webp
+#
+# Downloads:
+# =========
+# https://downloads.webmproject.org/releases/webp
+#
+
+url         = http://downloads.webmproject.org/releases/webp
+
+versions    = 0.5.0 1.2.2 1.2.4
+
+pkgname     = libwebp
+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/packages/m/linuxaudio/Makefile b/packages/m/linuxaudio/Makefile
new file mode 100644
index 0000000..22140ac
--- /dev/null
+++ b/packages/m/linuxaudio/Makefile
@@ -0,0 +1,24 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := kokkinizita
+
+
+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/packages/m/linuxaudio/kokkinizita/Makefile b/packages/m/linuxaudio/kokkinizita/Makefile
new file mode 100644
index 0000000..4d566df
--- /dev/null
+++ b/packages/m/linuxaudio/kokkinizita/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := zita-resampler \
+           zita-alsa-pcmi
+
+
+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/packages/m/linuxaudio/kokkinizita/zita-alsa-pcmi/Makefile b/packages/m/linuxaudio/kokkinizita/zita-alsa-pcmi/Makefile
new file mode 100644
index 0000000..fb556fa
--- /dev/null
+++ b/packages/m/linuxaudio/kokkinizita/zita-alsa-pcmi/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://kokkinizita.linuxaudio.org/linuxaudio
+#
+# Downloads:
+# =========
+# https://kokkinizita.linuxaudio.org/linuxaudio/downloads
+#
+
+url         = https://kokkinizita.linuxaudio.org/linuxaudio/downloads
+
+versions    = 0.6.1
+
+pkgname     = zita-alsa-pcmi
+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/packages/m/linuxaudio/kokkinizita/zita-resampler/Makefile b/packages/m/linuxaudio/kokkinizita/zita-resampler/Makefile
new file mode 100644
index 0000000..6793abd
--- /dev/null
+++ b/packages/m/linuxaudio/kokkinizita/zita-resampler/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://kokkinizita.linuxaudio.org/linuxaudio
+#
+# Downloads:
+# =========
+# https://kokkinizita.linuxaudio.org/linuxaudio/downloads
+#
+
+url         = https://kokkinizita.linuxaudio.org/linuxaudio/downloads
+
+versions    = 1.10.1
+
+pkgname     = zita-resampler
+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/packages/m/linuxtv/Makefile b/packages/m/linuxtv/Makefile
new file mode 100644
index 0000000..8fad6b3
--- /dev/null
+++ b/packages/m/linuxtv/Makefile
@@ -0,0 +1,24 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := v4l-utils
+
+
+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/packages/m/linuxtv/v4l-utils/Makefile b/packages/m/linuxtv/v4l-utils/Makefile
new file mode 100644
index 0000000..57c9051
--- /dev/null
+++ b/packages/m/linuxtv/v4l-utils/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://linuxtv.org
+#
+# Downloads:
+# =========
+# https://linuxtv.org/downloads/v4l-utils
+#
+
+url         = https://linuxtv.org/downloads/v4l-utils
+
+versions    = 1.6.3 1.8.0 1.8.1 1.10.0 1.10.1 1.22.1 1.24.1
+
+pkgname     = v4l-utils
+suffix      = tar.bz2
+sign_suffix = asc
+
+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/packages/m/mad/Makefile b/packages/m/mad/Makefile
new file mode 100644
index 0000000..03a2262
--- /dev/null
+++ b/packages/m/mad/Makefile
@@ -0,0 +1,26 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := libid3tag \
+           libmad    \
+           madplay
+
+
+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/packages/m/mad/libid3tag/Makefile b/packages/m/mad/libid3tag/Makefile
new file mode 100644
index 0000000..11cb5ce
--- /dev/null
+++ b/packages/m/mad/libid3tag/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.underbit.com/products/mad
+#
+# Downloads:
+# =========
+# ftp://ftp.mars.org/pub/mpeg
+#
+
+url         = ftp://ftp.mars.org/pub/mpeg
+
+versions    = 0.15.0b 0.15.1b
+
+pkgname     = libid3tag
+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/packages/m/mad/libmad/Makefile b/packages/m/mad/libmad/Makefile
new file mode 100644
index 0000000..ed6632f
--- /dev/null
+++ b/packages/m/mad/libmad/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.underbit.com/products/mad
+#
+# Downloads:
+# =========
+# ftp://ftp.mars.org/pub/mpeg
+#
+
+url         = ftp://ftp.mars.org/pub/mpeg
+
+versions    = 0.15.0b 0.15.1b
+
+pkgname     = libmad
+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/packages/m/mad/madplay/Makefile b/packages/m/mad/madplay/Makefile
new file mode 100644
index 0000000..aa3a81d
--- /dev/null
+++ b/packages/m/mad/madplay/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.underbit.com/products/mad
+#
+# Downloads:
+# =========
+# ftp://ftp.mars.org/pub/mpeg
+#
+
+url         = ftp://ftp.mars.org/pub/mpeg
+
+versions    = 0.15.0b 0.15.1b 0.15.2b
+
+pkgname     = madplay
+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/packages/m/mega-nerd/Makefile b/packages/m/mega-nerd/Makefile
new file mode 100644
index 0000000..63df1eb
--- /dev/null
+++ b/packages/m/mega-nerd/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := libsamplerate \
+           libsndfile
+
+
+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/packages/m/mega-nerd/libsamplerate/Makefile b/packages/m/mega-nerd/libsamplerate/Makefile
new file mode 100644
index 0000000..d07769a
--- /dev/null
+++ b/packages/m/mega-nerd/libsamplerate/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://www.mega-nerd.com/SRC
+#
+# Downloads:
+# =========
+# http://www.mega-nerd.com/SRC/download.html
+# http://www.mega-nerd.com/SRC
+#
+
+url         = http://www.mega-nerd.com/SRC
+
+versions    = 0.1.8 0.1.9
+
+pkgname     = libsamplerate
+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/packages/m/mega-nerd/libsndfile/Makefile b/packages/m/mega-nerd/libsndfile/Makefile
new file mode 100644
index 0000000..60a9f28
--- /dev/null
+++ b/packages/m/mega-nerd/libsndfile/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# http://www.mega-nerd.com/libsndfile
+#
+# Downloads:
+# =========
+# http://www.mega-nerd.com/libsndfile/#Download
+# http://www.mega-nerd.com/libsndfile/files
+#
+
+url         = http://www.mega-nerd.com/libsndfile/files
+
+versions    = 1.0.25 1.0.26 1.0.28
+pkgname     = libsndfile
+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/packages/m/mikmod/Makefile b/packages/m/mikmod/Makefile
new file mode 100644
index 0000000..b9a7ef8
--- /dev/null
+++ b/packages/m/mikmod/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := lib    \
+           player
+
+
+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/packages/m/mikmod/lib/Makefile b/packages/m/mikmod/lib/Makefile
new file mode 100644
index 0000000..b4b0294
--- /dev/null
+++ b/packages/m/mikmod/lib/Makefile
@@ -0,0 +1,42 @@
+#
+# Project Home:
+# ============
+# https://mikmod.sourceforge.net
+#
+# Downloads:
+# =========
+# https://mikmod.sourceforge.net/#files
+# https://downloads.sourceforge.net/project/mikmod/libmikmod/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/mikmod/libmikmod
+
+versions    = 3.1.21.1
+versions   += 3.3.11.1
+
+pkgname     = libmikmod
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/mikmod/player/Makefile b/packages/m/mikmod/player/Makefile
new file mode 100644
index 0000000..4c33bd7
--- /dev/null
+++ b/packages/m/mikmod/player/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://mikmod.sourceforge.net
+#
+# Downloads:
+# =========
+# https://mikmod.sourceforge.net/#files
+# https://downloads.sourceforge.net/project/mikmod/mikmod/${VERSION}
+#
+
+url         = https://downloads.sourceforge.net/project/mikmod/mikmod
+
+versions    = 3.2.8
+
+pkgname     = mikmod
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/moc/Makefile b/packages/m/moc/Makefile
new file mode 100644
index 0000000..a6eb743
--- /dev/null
+++ b/packages/m/moc/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://moc.daper.net
+#
+# Downloads:
+# =========
+# https://ftp.daper.net/pub/soft/moc/stable
+#
+
+url         = https://ftp.daper.net/pub/soft/moc/stable
+
+versions    = 2.4.4 2.5.0 2.5.2
+
+pkgname     = moc
+suffix      = tar.bz2
+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/packages/m/mp4v2/Makefile b/packages/m/mp4v2/Makefile
new file mode 100644
index 0000000..63a35ad
--- /dev/null
+++ b/packages/m/mp4v2/Makefile
@@ -0,0 +1,76 @@
+#
+# Project Home:
+# ============
+#   https://mp4v2.org
+#
+# GitHub:
+# ======
+#   https://github.com/enzo1982/mp4v2
+#
+# Clone:
+# =====
+#   git clone https://github.com/enzo1982/mp4v2.git
+#
+
+url        = https://github.com/enzo1982
+
+repo_name  = mp4v2
+
+#
+# List of revisions to be extracted:
+# =================================
+#
+#                                               hash | version
+#            ----------------------------------------+--------
+revisions  = f95da887c8579623c3c6df0445ec6efea93f1433:2.1.1
+
+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) ) ; \
+	    tar xJf $(repo_name)-$$version.$(suffix) ; \
+	    ( cd $(repo_name)-$$version ; autoreconf -v -f --install ; rm -rf autom4te.cache .git* ) ; \
+	    tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	    rm -rf $(repo_name)-$$version ; \
+	  fi ; \
+	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/packages/m/mpg123/Makefile b/packages/m/mpg123/Makefile
new file mode 100644
index 0000000..cd2391c
--- /dev/null
+++ b/packages/m/mpg123/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://www.mpg123.de
+#
+# Downloads:
+# =========
+# https://www.mpg123.de/download.shtml
+# https://sourceforge.net/projects/mpg123/files/mpg123
+#
+
+url         = https://sourceforge.net/projects/mpg123/files/mpg123
+
+versions    = 1.20.0 1.20.1 1.23.0 1.23.3 1.31.1
+
+pkgname     = mpg123
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9][\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/normalize/Makefile b/packages/m/normalize/Makefile
new file mode 100644
index 0000000..ef2a030
--- /dev/null
+++ b/packages/m/normalize/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# https://savannah.nongnu.org/projects/normalize
+#
+# Downloads:
+# =========
+# https://download.savannah.gnu.org/releases/normalize
+#
+
+url         = https://download.savannah.gnu.org/releases/normalize
+
+versions    = 0.7.6.1 0.7.7
+
+pkgname     = normalize
+suffix      = tar.bz2
+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/packages/m/opencv/Makefile b/packages/m/opencv/Makefile
new file mode 100644
index 0000000..52b8a7f
--- /dev/null
+++ b/packages/m/opencv/Makefile
@@ -0,0 +1,78 @@
+#
+# Project Home:
+# ============
+# https://opencv.org
+#
+# GitHub:
+# ======
+# https://github.com/opencv/opencv
+#
+# Install instruction:
+# ===================
+# https://docs.opencv.org/2.4.13/doc/tutorials/introduction/linux_install/linux_install.html?highlight=install
+#
+# Clone:
+# =====
+# git clone https://github.com/opencv/opencv.git
+#
+
+url        = https://github.com/opencv
+
+repo_name  = opencv
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 59975db6a415c53b8e6f9bcb4e1ee5d3c4579ebf:2.4.13
+revisions += 92387b1ef8fad15196dd5f7fb4931444a68bc93a:3.1.0
+revisions += b0dc474160e389b9c9045da5db49d03ae17c6a6b:4.6.0
+revisions += 725e440d278aca07d35a5e8963ef990572b07316:4.7.0
+
+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 ; \
+	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/packages/m/openh264/Makefile b/packages/m/openh264/Makefile
new file mode 100644
index 0000000..616d1a8
--- /dev/null
+++ b/packages/m/openh264/Makefile
@@ -0,0 +1,80 @@
+#
+# Project Home:
+# ============
+# https://www.openh264.org
+#
+# Clone:
+# =====
+# git clone https://github.com/cisco/openh264.git
+#
+
+url        = https://github.com/cisco
+
+repo_name  = openh264
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 69a8b3c3ea627f9e680cb34a9793b3a83171860d:1.6.0
+revisions += 0a48f4d2e9be2abb4fb01b4c3be83cf44ce91a6e:2.3.1
+
+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 $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; \
+	    echo "------- Checkout latest Mozilla gmp-api -------" ; \
+	    git clone https://github.com/mozilla/gmp-api.git gmp-api ; \
+	    rm -rf gmp-api/.git ; \
+	    echo "------- Save Git revision into .git-revision -------" ; \
+	    echo "#!/bin/sh"        > .git-revision ; \
+	    echo ""                >> .git-revision ; \
+	    echo "REVISION=$$hash" >> .git-revision ; \
+	  ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/openjpeg/Makefile b/packages/m/openjpeg/Makefile
new file mode 100644
index 0000000..9cf8c1a
--- /dev/null
+++ b/packages/m/openjpeg/Makefile
@@ -0,0 +1,75 @@
+#
+# Project Home:
+# ============
+# https://www.openjpeg.org
+#
+# GitHub:
+# ======
+# https://github.com/uclouvain/openjpeg
+#
+# Clone:
+# =====
+# git clone https://github.com/uclouvain/openjpeg.git
+#
+
+url        = https://github.com/uclouvain
+
+repo_name  = openjpeg
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 9586bc669c4623912ca657328579c878d74164a5:1.5.2
+
+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 $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; ./bootstrap.sh ; rm -rf autom4te.cache thirdparty *~ ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/openjpeg2/Makefile b/packages/m/openjpeg2/Makefile
new file mode 100644
index 0000000..1b4e57f
--- /dev/null
+++ b/packages/m/openjpeg2/Makefile
@@ -0,0 +1,76 @@
+#
+# Project Home:
+# ============
+# https://www.openjpeg.org
+#
+# GitHub:
+# ======
+# https://github.com/uclouvain/openjpeg
+#
+# Clone:
+# =====
+# git clone https://github.com/uclouvain/openjpeg.git
+#
+
+url        = https://github.com/uclouvain
+
+repo_name  = openjpeg
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 1f1e968269bbd7eaade7955892a6d8c281b91df2:2.1.2
+revisions += a5891555eb49ed7cc26b2901ea680acda136d811:2.5.0
+
+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) ) ; \
+	  tar xJf $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; rm -rf .git* .travis.yml ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_name)-$$version ; \
+	  fi ; \
+	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/packages/m/portaudio/Makefile b/packages/m/portaudio/Makefile
new file mode 100644
index 0000000..ae1c2c8
--- /dev/null
+++ b/packages/m/portaudio/Makefile
@@ -0,0 +1,80 @@
+#
+# Project Home:
+# ============
+# http://www.portaudio.com
+#
+# Downloads:
+# =========
+# http://files.portaudio.com/download.html
+# http://files.portaudio.com/archives
+#
+# GitHub:
+# ======
+# https://github.com/PortAudio/portaudio
+#
+# Clone:
+# =====
+# git clone https://github.com/PortAudio/portaudio.git
+#
+
+url        = https://github.com/PortAudio
+
+repo_name  = portaudio
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 147dd722548358763a8b649b3e4b41dfffbcfbb6:19.7.0
+
+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) ) ; \
+	  tar xJf $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; rm -rf .git* .editorconfig ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_name)-$$version ; \
+	  fi ; \
+	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/packages/m/pulseaudio/Makefile b/packages/m/pulseaudio/Makefile
new file mode 100644
index 0000000..a72690f
--- /dev/null
+++ b/packages/m/pulseaudio/Makefile
@@ -0,0 +1,82 @@
+#
+# Project Home:
+# ============
+# https://cgit.freedesktop.org/pulseaudio/pulseaudio
+#
+# Cgit:
+# ======
+# https://cgit.freedesktop.org/pulseaudio/pulseaudio
+#
+# Clone:
+# =====
+# https://anongit.freedesktop.org/git/pulseaudio/pulseaudio.git
+#
+
+url        = https://anongit.freedesktop.org/git/pulseaudio
+
+repo_name  = pulseaudio
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = e5ad31e873eed62bc580a86a61177047f9e8c491:16.1
+revisions += 8887f256e0f1167e579a217387a4efc5397edf93:9.0
+
+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 $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; \
+	    if [ -f "./autogen.sh" ] ; then \
+	      ./autogen.sh ; rm -rf autom4te.cache .gitignore .mailmap .travis.yml build-aux/*~ ; \
+	    else \
+	      rm -rf .git* .mailmap ; \
+	    fi ; \
+	  ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/record/Makefile b/packages/m/record/Makefile
new file mode 100644
index 0000000..5282435
--- /dev/null
+++ b/packages/m/record/Makefile
@@ -0,0 +1,27 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := cdrdao       \
+           cdrtools     \
+           dvd+rw-tools \
+           zisofs-tools
+
+
+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/packages/m/record/cdrdao/Makefile b/packages/m/record/cdrdao/Makefile
new file mode 100644
index 0000000..69294d0
--- /dev/null
+++ b/packages/m/record/cdrdao/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://cdrdao.sourceforge.net
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/cdrdao
+#
+
+url         = https://downloads.sourceforge.net/project/cdrdao
+
+versions    = 1.2.4
+
+pkgname     = cdrdao
+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/packages/m/record/cdrtools/Makefile b/packages/m/record/cdrtools/Makefile
new file mode 100644
index 0000000..670e67c
--- /dev/null
+++ b/packages/m/record/cdrtools/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# http://cdrecord.org/private/cdrecord.html
+#
+# Downloads:
+# =========
+# https://downloads.sourceforge.net/project/cdrtools/alpha
+#
+
+url         = https://downloads.sourceforge.net/project/cdrtools/alpha
+
+versions    = 3.02a05 3.02a06 3.02a09
+
+pkgname     = cdrtools
+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/packages/m/record/dvd+rw-tools/Makefile b/packages/m/record/dvd+rw-tools/Makefile
new file mode 100644
index 0000000..588f0bc
--- /dev/null
+++ b/packages/m/record/dvd+rw-tools/Makefile
@@ -0,0 +1,38 @@
+#
+# Project Home:
+# ============
+# http://fy.chalmers.se/~appro/linux/DVD+RW/tools
+#
+# Downloads:
+# =========
+# http://fy.chalmers.se/~appro/linux/DVD+RW/tools
+#
+
+url         = http://fy.chalmers.se/~appro/linux/DVD+RW/tools
+
+version     = 7.1
+
+pkgname     = dvd+rw-tools
+suffix      = tar.gz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-,$(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+
+
+all: $(tarball) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	@wget -N $(url)/$(tarball)
+
+$(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 $(tarball) $(sha1s)
diff --git a/packages/m/record/zisofs-tools/Makefile b/packages/m/record/zisofs-tools/Makefile
new file mode 100644
index 0000000..ce3463f
--- /dev/null
+++ b/packages/m/record/zisofs-tools/Makefile
@@ -0,0 +1,48 @@
+#
+# Project Home:
+# ============
+# [ http://www.freshports.org/sysutils/zisofs-tools ]
+#
+# Downloads:
+# =========
+# https://mirrors.slackware.com/slackware/slackware/source/ap/cdrtools
+#
+
+url         = https://mirrors.slackware.com/slackware/slackware/source/ap/cdrtools
+
+versions    = 1.0.8
+
+pkgname     = zisofs-tools
+suffix      = tar.bz2
+sign_suffix = sign
+
+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/packages/m/rtmpdump/Makefile b/packages/m/rtmpdump/Makefile
new file mode 100644
index 0000000..8142451
--- /dev/null
+++ b/packages/m/rtmpdump/Makefile
@@ -0,0 +1,72 @@
+#
+# Project Home:
+# ============
+# https://rtmpdump.mplayerhq.hu
+#
+# Clone:
+# =====
+# git clone git://git.ffmpeg.org/rtmpdump.git
+#
+
+url        = git://git.ffmpeg.org
+
+repo_name  = rtmpdump
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = fa8646daeb19dfd12c181f7d19de708d623704c0:2.4
+revisions += f1b83c10d8beb43fcc70a6e88cf4325499f25857:2.4.1
+
+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 $(repo_name)-$$version.$(suffix) ; \
+	  ( cd $(repo_name)-$$version ; rm -f .gitignore ) ; \
+	  tar cJf $(repo_name)-$$version.$(suffix) $(repo_name)-$$version ; \
+	  rm -rf $(repo_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/packages/m/sane/Makefile b/packages/m/sane/Makefile
new file mode 100644
index 0000000..0bd077c
--- /dev/null
+++ b/packages/m/sane/Makefile
@@ -0,0 +1,25 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := backends  \
+           frontends
+
+
+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/packages/m/sane/backends/Makefile b/packages/m/sane/backends/Makefile
new file mode 100644
index 0000000..c6b513b
--- /dev/null
+++ b/packages/m/sane/backends/Makefile
@@ -0,0 +1,79 @@
+#
+# Project Home:
+# ============
+# http://www.sane-project.org
+#
+# Downloads:
+# =========
+# http://www.sane-project.org/source.html
+#
+# GitLab:
+# ======
+# https://gitlab.com/sane-project/backends
+#
+# Clone:
+# =====
+# git clone https://gitlab.com/sane-project/backends.git
+#
+
+url        = https://gitlab.com/sane-project
+
+repo_name  = backends
+pkg_name   = sane-backends
+suffix     = tar.xz
+
+versions   = 1.1.1
+
+# List of tags to be extracted:
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(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 version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    ./autogen.sh ; \
+	    rm -rf autom4te.cache .git* .editorconfig *~ ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@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/packages/m/sane/frontends/Makefile b/packages/m/sane/frontends/Makefile
new file mode 100644
index 0000000..1bf1044
--- /dev/null
+++ b/packages/m/sane/frontends/Makefile
@@ -0,0 +1,78 @@
+#
+# Project Home:
+# ============
+# http://www.sane-project.org
+#
+# Downloads:
+# =========
+# http://www.sane-project.org/source.html
+#
+# GitLab:
+# ======
+# https://gitlab.com/sane-project/frontends
+#
+# Clone:
+# =====
+# git clone https://gitlab.com/sane-project/frontends.git
+#
+
+url        = https://gitlab.com/sane-project
+
+repo_name  = frontends
+pkg_name   = sane-frontends
+suffix     = tar.xz
+
+versions   = 1.0.14
+
+# List of tags to be extracted:
+TAGS       = $(addprefix v, $(versions))
+
+git_repo   = .git_clone
+tarballs   = $(addsuffix .tar.xz, $(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 version in $(versions) ; do \
+	  tag=`echo $$version` ; \
+	  if [ ! -f $(repo_name)-$$version.$(suffix) ]; then \
+	    echo -e "\n======= Creating '$(repo_name)-$$version.$(suffix)' snapshot =======" ; \
+	    ( cd $(repo_name) && \
+	      git archive --format=tar --prefix=$(pkg_name)-$$version/ $$tag | \
+	      xz >../$(pkg_name)-$$version.$(suffix) ) ; \
+	  fi ; \
+	  tar xJf $(pkg_name)-$$version.$(suffix) ; \
+	  ( cd $(pkg_name)-$$version ; \
+	    rm -rf .git* ) ; \
+	  tar cJf $(pkg_name)-$$version.$(suffix) $(pkg_name)-$$version ; \
+	  rm -rf $(pkg_name)-$$version ; \
+	done
+
+$(sha1s): %.tar.xz.sha1sum : %.tar.xz
+	@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/packages/m/schroedinger/Makefile b/packages/m/schroedinger/Makefile
new file mode 100644
index 0000000..e8a21e6
--- /dev/null
+++ b/packages/m/schroedinger/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://launchpad.net/schroedinger
+#
+# Downloads:
+# =========
+# https://launchpad.net/$pkgname/trunk/$pkgver/+download/$pkgname-$pkgver.tar.gz
+#
+
+url         = https://launchpad.net
+
+versions    = 1.0.11
+
+pkgname     = schroedinger
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$(pkgname)/trunk/$$version/+download/$$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/packages/m/smpeg/Makefile b/packages/m/smpeg/Makefile
new file mode 100644
index 0000000..609081c
--- /dev/null
+++ b/packages/m/smpeg/Makefile
@@ -0,0 +1,58 @@
+#
+# Project Home:
+# ============
+# https://icculus.org/smpeg
+#
+# Source tree:
+# ===========
+# http://svn.icculus.org/smpeg
+#
+# CHECKOUT:
+# ========
+# svn checkout svn://svn.icculus.org/smpeg/tags/release_2_0_0
+#
+
+url         = svn://svn.icculus.org/smpeg/tags
+
+pkgname     = smpeg
+
+#
+# List of revisions to be extracted:
+# =================================
+#
+revisions  = release_0_4_5 release_2_0_0
+
+
+versions   = $(foreach tag, $(revisions), $(shell echo $(tag) | cut -f 2,3,4 -d '_' | sed 's,_,\.,g'))
+
+suffix     = tar.gz
+tarballs   = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s      = $(addsuffix .sha1sum, $(tarballs))
+
+
+all:  $(tarballs) $(sha1s)
+
+.PHONY: downloads_clean
+
+$(tarballs):
+	@for tag in $(revisions) ; do \
+	   version=`echo $$tag | cut -f 2,3,4 -d '_' | sed 's,_,\.,g'` ; \
+	   if [ ! -f $(pkgname)-$$ver.$(suffix) ]; then \
+	     echo -e "\n======= Creating '$(pkgname)-$$version.$(suffix)' snapshot =======" ; \
+	     svn co $(url)/$$tag $(pkgname)-$$version ; \
+	     ( cd $(pkgname)-$$version ; \
+	       ./autogen.sh ; \
+	       rm -rf autom4te.cache .svn .cvsignore .gitignore ) ; \
+	     tar czvf $(pkgname)-$$version.$(suffix) $(pkgname)-$$version ; \
+	     rm -rf $(pkgname)-$$version ; \
+	   fi ; \
+	 done
+
+$(sha1s): %.$(suffix).sha1sum : %.$(suffix)
+	@for tarball in $< ; do \
+	   echo -e "\n======= Calculation the '$$tarball' sha1sum =======" ; \
+	   sha1sum --binary $$tarball > $$tarball.sha1sum ; \
+	 done
+
+downloads_clean:
+	@rm -rf $(tarballs) $(sha1s)
diff --git a/packages/m/soma/Makefile b/packages/m/soma/Makefile
new file mode 100644
index 0000000..9a8c7bf
--- /dev/null
+++ b/packages/m/soma/Makefile
@@ -0,0 +1,36 @@
+#
+# Downloads:
+# =========
+# http://www.dawoodfall.net/files/slackbuilds/noversion/soma/soma-2.9.1.tar.gz
+#
+
+url         = https://mirrors.slackware.com/slackware/slackware/source/ap/soma
+
+versions    = 3.3.7
+
+pkgname     = soma
+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/packages/m/sox/Makefile b/packages/m/sox/Makefile
new file mode 100644
index 0000000..123f058
--- /dev/null
+++ b/packages/m/sox/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://sox.sourceforge.net
+#
+# Downloads:
+# =========
+# https://sourceforge.net/projects/sox/files/sox
+#
+
+url         = https://sourceforge.net/projects/sox/files/sox
+
+versions    = 14.4.0 14.4.1 14.4.2
+
+pkgname     = sox
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/taglib/Makefile b/packages/m/taglib/Makefile
new file mode 100644
index 0000000..39b4a55
--- /dev/null
+++ b/packages/m/taglib/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://taglib.org
+#
+# Downloads:
+# =========
+# https://taglib.org/releases
+#
+
+url         = https://taglib.org/releases
+
+versions    = 1.8 1.9 1.9.1 1.10 1.13
+
+pkgname     = taglib
+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/packages/m/twolame/Makefile b/packages/m/twolame/Makefile
new file mode 100644
index 0000000..de3b87f
--- /dev/null
+++ b/packages/m/twolame/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://www.twolame.org
+#
+# Downloads:
+# =========
+# http://sourceforge.net/projects/twolame/files/twolame
+#
+
+url         = https://downloads.sourceforge.net/project/twolame/twolame
+
+versions    = 0.3.13 0.4.0
+
+pkgname     = twolame
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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/packages/m/vaapi/Makefile b/packages/m/vaapi/Makefile
new file mode 100644
index 0000000..3bc2b29
--- /dev/null
+++ b/packages/m/vaapi/Makefile
@@ -0,0 +1,27 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := gstreamer-vaapi    \
+           libva              \
+           libva-intel-driver \
+           libva-vdpau-driver
+
+
+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/packages/m/vaapi/gstreamer-vaapi/Makefile b/packages/m/vaapi/gstreamer-vaapi/Makefile
new file mode 100644
index 0000000..a8cc41e
--- /dev/null
+++ b/packages/m/vaapi/gstreamer-vaapi/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/vaapi/releases
+#
+
+url         = https://www.freedesktop.org/software/vaapi/releases/gstreamer-vaapi
+
+versions    = 0.7.0
+
+pkgname     = gstreamer-vaapi
+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/packages/m/vaapi/libva-intel-driver/Makefile b/packages/m/vaapi/libva-intel-driver/Makefile
new file mode 100644
index 0000000..6a16395
--- /dev/null
+++ b/packages/m/vaapi/libva-intel-driver/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/vaapi/releases
+#
+
+url         = https://www.freedesktop.org/software/vaapi/releases/libva-intel-driver
+
+versions    = 1.7.2 1.7.3
+
+pkgname     = libva-intel-driver
+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/packages/m/vaapi/libva-vdpau-driver/Makefile b/packages/m/vaapi/libva-vdpau-driver/Makefile
new file mode 100644
index 0000000..6a2c89a
--- /dev/null
+++ b/packages/m/vaapi/libva-vdpau-driver/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/vaapi/releases
+#
+
+url         = https://www.freedesktop.org/software/vaapi/releases/libva-vdpau-driver
+
+versions    = 0.7.4
+
+pkgname     = libva-vdpau-driver
+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/packages/m/vaapi/libva/Makefile b/packages/m/vaapi/libva/Makefile
new file mode 100644
index 0000000..ae8df54
--- /dev/null
+++ b/packages/m/vaapi/libva/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://freedesktop.org/wiki/Software/vaapi
+#
+# Downloads:
+# =========
+# https://www.freedesktop.org/software/vaapi/releases
+#
+
+url         = https://www.freedesktop.org/software/vaapi/releases/libva
+
+versions    = 1.7.2 1.8.2
+
+pkgname     = libva
+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/packages/m/vid-stab/Makefile b/packages/m/vid-stab/Makefile
new file mode 100644
index 0000000..dfca0c0
--- /dev/null
+++ b/packages/m/vid-stab/Makefile
@@ -0,0 +1,73 @@
+#
+# Project Home:
+# ============
+# http://public.hronopik.de/vid.stab
+#
+# GitHub:
+# ======
+# https://github.com/georgmartius/vid.stab
+#
+# Clone:
+# =====
+# https://github.com/georgmartius/vid.stab.git
+#
+
+url        = https://github.com/georgmartius
+
+repo_name  = vid.stab
+pkg_name   = vid-stab
+
+#
+# List of tags to be extracted:
+# ============================
+#                                               hash | tag
+#            ----------------------------------------+-----
+revisions  = 2d82492533bf5004bc2c4f8213a1b622c45f6a44:1.1
+revisions += 60d65da212c0d834cdfdc95d3404d42eab686d16:1.1.0
+
+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 ':'` ; \
+	  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 ; \
+	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/packages/m/wavpack/Makefile b/packages/m/wavpack/Makefile
new file mode 100644
index 0000000..f69edfa
--- /dev/null
+++ b/packages/m/wavpack/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.wavpack.com
+#
+# Downloads:
+# =========
+# https://www.wavpack.com/downloads.html
+#
+
+url         = https://www.wavpack.com
+
+versions    = 4.60.1 4.70.0 4.75.2 5.6.0
+
+pkgname     = wavpack
+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/packages/m/workbone/Makefile b/packages/m/workbone/Makefile
new file mode 100644
index 0000000..8a44640
--- /dev/null
+++ b/packages/m/workbone/Makefile
@@ -0,0 +1,51 @@
+#
+# Project Home:
+# ============
+# [ http://www.boutell.com/lsm/lsmbyid.cgi/001833 ]
+#
+# Other curser utils:
+# ==================
+# https://ibiblio.org/pub/Linux/apps/sound/cdrom/curses/!INDEX.html
+#
+# Downloads:
+# =========
+# https://ibiblio.org/pub/Linux/apps/sound/cdrom/curses
+# ftp://sunsite.unc.edu/pub/Linux/apps/sound/cdrom/curses
+#
+
+url         = https://ibiblio.org/pub/Linux/apps/sound/cdrom/curses
+
+version     = 2.4
+
+pkgname     = WorkBone
+suffix      = tar.gz
+
+tarball     = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(version)))
+sha1s       = $(addsuffix .sha1sum, $(tarball))
+description = $(addsuffix .lsm, $(addprefix $(pkgname)-, $(version)))
+
+files       = $(description)
+
+all: $(tarball) $(files) $(sha1s)
+
+.PHONY: downloads_clean
+
+
+$(tarball):
+	@echo -e "\n======= Downloading source tarball =======\n"
+	wget -N $(url)/$(tarball)
+
+$(files): $(tarball)
+	@echo -e "\n======= Downloading patch and description =======\n"
+	@for file in $(files) ; do \
+	  wget -N $(url)/$$file ; \
+	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 $(tarball) $(files) $(sha1s)
diff --git a/packages/m/xiph/Makefile b/packages/m/xiph/Makefile
new file mode 100644
index 0000000..68b4c56
--- /dev/null
+++ b/packages/m/xiph/Makefile
@@ -0,0 +1,38 @@
+
+#
+# Following command helps to cheate SUBDIRS list:
+# $ tree -fid .
+#
+
+SUBDIRS := cdparanoia   \
+           celt         \
+           flac         \
+           icecast      \
+           ices         \
+           libao        \
+           libogg       \
+           libshout     \
+           libtheora    \
+           libvorbis    \
+           opus         \
+           opusfile     \
+           speex        \
+           speexdsp     \
+           vorbis-tools
+
+
+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/packages/m/xiph/cdparanoia/Makefile b/packages/m/xiph/cdparanoia/Makefile
new file mode 100644
index 0000000..4d5c8a5
--- /dev/null
+++ b/packages/m/xiph/cdparanoia/Makefile
@@ -0,0 +1,43 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/paranoia
+#
+# Downloads:
+# =========
+# https://xiph.org/paranoia/down.html
+# https://ftp.osuosl.org/pub/xiph/releases/cdparanoia
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/cdparanoia
+
+versions    = 10.2
+
+pkgname     = cdparanoia-III
+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 version in $(versions) ; do \
+	  wget -N $(url)/$(pkgname)-$$version.src.tgz ; \
+	  tar xzf $(pkgname)-$$version.src.tgz ; \
+	  tar czf $(pkgname)-$$version.tar.gz $(pkgname)-$$version ; \
+	  rm -rf $(pkgname)-$$version $(pkgname)-$$version.src.tgz ; \
+	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/packages/m/xiph/celt/Makefile b/packages/m/xiph/celt/Makefile
new file mode 100644
index 0000000..4d90184
--- /dev/null
+++ b/packages/m/xiph/celt/Makefile
@@ -0,0 +1,45 @@
+#
+# Project Home:
+# ============
+# https://celt-codec.org
+#
+# Downloads:
+# =========
+# https://www.celt-codec.org/downloads
+# https://downloads.xiph.org/releases/celt
+#
+# NOTE:
+# =============================================================================
+#  The CELT codec has been merged into the IETF Opus codec and is now obsolete
+# =============================================================================
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/celt
+
+versions    = 0.11.3
+
+pkgname     = celt
+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/packages/m/xiph/flac/Makefile b/packages/m/xiph/flac/Makefile
new file mode 100644
index 0000000..37c378e
--- /dev/null
+++ b/packages/m/xiph/flac/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/flac/index.html
+#
+# Downloads:
+# =========
+# https://xiph.org/flac/download.html
+# https://downloads.xiph.org/releases/flac
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/flac
+
+versions    = 1.3.0 1.3.1 1.4.2
+
+pkgname     = flac
+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/packages/m/xiph/icecast/Makefile b/packages/m/xiph/icecast/Makefile
new file mode 100644
index 0000000..5611247
--- /dev/null
+++ b/packages/m/xiph/icecast/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.icecast.org
+#
+# Downloads:
+# =========
+# https://ftp.osuosl.org/pub/xiph/releases/icecast
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/icecast
+
+versions    = 2.4.1 2.4.3 2.4.4
+
+pkgname     = icecast
+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/packages/m/xiph/ices/Makefile b/packages/m/xiph/ices/Makefile
new file mode 100644
index 0000000..6d7a183
--- /dev/null
+++ b/packages/m/xiph/ices/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.icecast.org
+#
+# Downloads:
+# =========
+# https://ftp.osuosl.org/pub/xiph/releases/ices
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/ices
+
+versions    = 2.0.2 2.0.3
+
+pkgname     = ices
+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/packages/m/xiph/libao/Makefile b/packages/m/xiph/libao/Makefile
new file mode 100644
index 0000000..5cac107
--- /dev/null
+++ b/packages/m/xiph/libao/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/ogg
+#
+# Downloads:
+# =========
+# https://xiph.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/ao
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/ao
+
+versions    = 1.1.0 1.2.0
+
+pkgname     = libao
+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/packages/m/xiph/libogg/Makefile b/packages/m/xiph/libogg/Makefile
new file mode 100644
index 0000000..20e28f1
--- /dev/null
+++ b/packages/m/xiph/libogg/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/ogg
+#
+# Downloads:
+# =========
+# https://xiph.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/ogg
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/ogg
+
+versions    = 1.3.2 1.3.5
+
+pkgname     = libogg
+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/packages/m/xiph/libshout/Makefile b/packages/m/xiph/libshout/Makefile
new file mode 100644
index 0000000..64505e3
--- /dev/null
+++ b/packages/m/xiph/libshout/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://www.icecast.org
+#
+# Downloads:
+# =========
+# https://ftp.osuosl.org/pub/xiph/releases/libshout
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/libshout
+
+versions    = 2.3.1 2.4.1 2.4.6
+
+pkgname     = libshout
+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/packages/m/xiph/libtheora/Makefile b/packages/m/xiph/libtheora/Makefile
new file mode 100644
index 0000000..13f9f5c
--- /dev/null
+++ b/packages/m/xiph/libtheora/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/ogg
+#
+# Downloads:
+# =========
+# https://xiph.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/theora
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/theora
+
+versions    = 1.1.1
+
+pkgname     = libtheora
+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/packages/m/xiph/libvorbis/Makefile b/packages/m/xiph/libvorbis/Makefile
new file mode 100644
index 0000000..b184342
--- /dev/null
+++ b/packages/m/xiph/libvorbis/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/ogg
+#
+# Downloads:
+# =========
+# https://xiph.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/vorbis
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/vorbis
+
+versions    = 1.3.4 1.3.5 1.3.7
+
+pkgname     = libvorbis
+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/packages/m/xiph/opus/Makefile b/packages/m/xiph/opus/Makefile
new file mode 100644
index 0000000..b43e50c
--- /dev/null
+++ b/packages/m/xiph/opus/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://opus-codec.org
+#
+# Downloads:
+# =========
+# https://opus-codec.org/downloads
+# https://archive.mozilla.org/pub/opus
+#
+
+url         = https://archive.mozilla.org/pub/opus
+
+versions    = 1.1 1.1.2 1.3.1
+
+pkgname     = opus
+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/packages/m/xiph/opusfile/Makefile b/packages/m/xiph/opusfile/Makefile
new file mode 100644
index 0000000..636b907
--- /dev/null
+++ b/packages/m/xiph/opusfile/Makefile
@@ -0,0 +1,41 @@
+#
+# Project Home:
+# ============
+# https://opus-codec.org
+#
+# Downloads:
+# =========
+# https://opus-codec.org/downloads
+# https://archive.mozilla.org/pub/opus
+# https://ftp.osuosl.org/pub/xiph/releases/opus
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/opus
+
+versions    = 0.12
+
+pkgname     = opusfile
+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/packages/m/xiph/speex/Makefile b/packages/m/xiph/speex/Makefile
new file mode 100644
index 0000000..1d6efa0
--- /dev/null
+++ b/packages/m/xiph/speex/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://speex.org
+#
+# Downloads:
+# =========
+# https://speex.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/speex
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/speex
+
+versions    = 1.1.12 1.2rc2 1.2.1
+
+pkgname     = speex
+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/packages/m/xiph/speexdsp/Makefile b/packages/m/xiph/speexdsp/Makefile
new file mode 100644
index 0000000..fa67a1d
--- /dev/null
+++ b/packages/m/xiph/speexdsp/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://speex.org
+#
+# Downloads:
+# =========
+# https://speex.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/speex
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/speex
+
+versions    = 1.2rc2 1.2rc3 1.2.1
+
+pkgname     = speexdsp
+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/packages/m/xiph/vorbis-tools/Makefile b/packages/m/xiph/vorbis-tools/Makefile
new file mode 100644
index 0000000..87ee264
--- /dev/null
+++ b/packages/m/xiph/vorbis-tools/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# https://xiph.org/ogg
+#
+# Downloads:
+# =========
+# https://xiph.org/downloads
+# https://ftp.osuosl.org/pub/xiph/releases/vorbis
+#
+
+url         = https://ftp.osuosl.org/pub/xiph/releases/vorbis
+
+versions    = 1.4.0 1.4.2
+
+pkgname     = vorbis-tools
+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/packages/m/xvidcore/Makefile b/packages/m/xvidcore/Makefile
new file mode 100644
index 0000000..4a83cd9
--- /dev/null
+++ b/packages/m/xvidcore/Makefile
@@ -0,0 +1,39 @@
+#
+# Project Home:
+# ============
+# https://labs.xvid.com
+#
+# Downloads:
+# =========
+# https://downloads.xvid.com/downloads
+#
+
+url         = https://downloads.xvid.com/downloads
+
+versions    = 1.3.4 1.3.7
+
+pkgname     = xvidcore
+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/packages/m/zvbi/Makefile b/packages/m/zvbi/Makefile
new file mode 100644
index 0000000..c52cd7e
--- /dev/null
+++ b/packages/m/zvbi/Makefile
@@ -0,0 +1,40 @@
+#
+# Project Home:
+# ============
+# http://zapping.sourceforge.net/ZVBI/index.html
+#
+# Downloads:
+# =========
+# https://zapping.sourceforge.net/ZVBI/Download.html
+#
+
+url         = https://downloads.sourceforge.net/project/zapping/zvbi
+
+versions    = 0.2.35
+
+pkgname     = zvbi
+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 \
+	  version=`echo $$tarball | sed 's/\([a-zA-Z0-9]*\)\([-]\)\([0-9]*[\.][0-9]*[\.][0-9]*\)\([\.].*\)/\3/'` ; \
+	  wget -N $(url)/$$version/$$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)