sdk/src/Makefile: divided into smaller individual files

This commit is contained in:
Ivan Tatarinov 2021-06-05 22:46:41 +03:00
parent d8e514db6c
commit 4b215ee998
6 changed files with 559 additions and 520 deletions

View File

@ -65,532 +65,18 @@ ifeq ($(OS),Windows_NT)
endif
endif # $(OS)==Windows_NT
# sjasmplus
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-sjasmplus)
.downloads\
.downloads/sjasmplus\
.downloads/sjasmplus-z00m128\
.downloads/z88dk\
$(DESTDIR)$(bindir):
mkdir -p $@
ifeq ($(USE_SJASMPLUS_VERSION),sjasmplus)
ifeq ($(_DoBuild),1)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/20190306.1.tar.gz
SJASMPLUS_ARCHIVE_SHA256 = f3f6d28af19880ed2cb427b6b427e9bd42371929c7d263dac840fb71de1302d6
SJASMPLUS_ARCHIVE_TYPE = .tar.gz
SJASMPLUS_ARCHIVE_SUBDIR = sjasmplus-20190306.1
build-sjasmplus: | sjasmplus/.extracted sjasmplus.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix))
sjasmplus/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.tar.gz)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
$(error Not implemented)
else
tar -xzf $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus/20190306.1.tar.gz: | .downloads/sjasmplus
wget -c https://github.com/sjasmplus/sjasmplus/archive/refs/tags/$(@F) -O $@
install-sjasmplus: | sjasmplus/.extracted sjasmplus.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix)) install
ifeq ($(_DoClean),1)
uninstall-sjasmplus: | sjasmplus.mk
if test -d sjasmplus; then\
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix)) uninstall;\
else\
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\
fi
clean-sjasmplus: | sjasmplus.mk
if test -d sjasmplus; then $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk clean; fi
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
build-sjasmplus: sjasmplus/sjasmplus$(EXESUFFIX)
sjasmplus/sjasmplus$(EXESUFFIX): | sjasmplus/.extracted
ifeq ($(PROCESSOR_ARCHITECTURE),X86)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win32-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = c84731640930afc4f4cc3c0f30f891916b9b77d63dc0e4cfdcd226682b8545b1
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win64-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = ef352b50ce7c9e9971c6fc3143e378d3e9f4069f11eb0c33022195c6e9b34fcb
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
else ifeq ($(PROCESSOR_ARCHITECTURE),EM64T)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win64-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = ef352b50ce7c9e9971c6fc3143e378d3e9f4069f11eb0c33022195c6e9b34fcb
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
else
$(warning Unsupported platform: "$(PROCESSOR_ARCHITECTURE)")
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win32-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = c84731640930afc4f4cc3c0f30f891916b9b77d63dc0e4cfdcd226682b8545b1
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
endif
sjasmplus/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.7z)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
7z x -bd -o$(@D) $<
else
7z x -bd $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus/sjasmplus-win32-20190306.1.7z: | .downloads/sjasmplus
wget -c https://github.com/sjasmplus/sjasmplus/releases/download/20190306.1/$(@F) -O $@
.downloads/sjasmplus/sjasmplus-win64-20190306.1.7z: | .downloads/sjasmplus
wget -c https://github.com/sjasmplus/sjasmplus/releases/download/20190306.1/$(@F) -O $@
install-sjasmplus: $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
$(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX): sjasmplus/sjasmplus$(EXESUFFIX) | $(DESTDIR)$(bindir)
$(INSTALL_PROGRAM) $< $@
ifeq ($(_DoClean),1)
uninstall-sjasmplus:
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
clean-sjasmplus:
rm -rf sjasmplus
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-sjasmplus: clean-sjasmplus
rm -rf .downloads/sjasmplus
else # !_DoClean
distclean-sjasmplus:;
endif # !_DoClean
include sjasmplus.inc.mk
else ifeq ($(USE_SJASMPLUS_VERSION),z00m128)
ifeq ($(_DoBuild),1)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus-z00m128/v1.18.2.tar.gz
SJASMPLUS_ARCHIVE_SHA256 = 114807bf53d3526b4d1ae7d40f3050b9ee98220df74931efc1e6d1fe5aba3d02
SJASMPLUS_ARCHIVE_TYPE = .tar.gz
SJASMPLUS_ARCHIVE_SUBDIR = sjasmplus-1.18.2
build-sjasmplus: | sjasmplus-z00m128/.extracted sjasmplus-z00m128.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix))
sjasmplus-z00m128/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.tar.gz)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
$(error Not implemented)
else
tar -xzf $<
endif
include sjasmplus-z00m128.inc.mk
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus-z00m128/v1.18.2.tar.gz: | .downloads/sjasmplus-z00m128
wget -c https://github.com/z00m128/sjasmplus/archive/refs/tags/$(@F) -O $@
install-sjasmplus: | sjasmplus-z00m128/.extracted sjasmplus-z00m128.mk
$(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix)) install
ifeq ($(_DoClean),1)
uninstall-sjasmplus: | sjasmplus-z00m128.mk
if test -d sjasmplus-z00m128; then\
$(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix)) uninstall;\
else\
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\
fi
clean-sjasmplus: | sjasmplus-z00m128.mk
if test -d sjasmplus-z00m128; then $(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk clean; fi
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
build-sjasmplus: sjasmplus-z00m128/sjasmplus$(EXESUFFIX)
sjasmplus-z00m128/sjasmplus$(EXESUFFIX): | sjasmplus-z00m128/.extracted
ifeq ($(PROCESSOR_ARCHITECTURE),X86)
else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
else ifeq ($(PROCESSOR_ARCHITECTURE),EM64T)
else
$(warning Unsupported platform: "$(PROCESSOR_ARCHITECTURE)")
$(error Unknown SJAsmPlus version selected: `$(USE_SJASMPLUS_VERSION)')
endif
SJASMPLUS_ARCHIVE = .downloads/sjasmplus-z00m128/sjasmplus-1.18.2.win.zip
SJASMPLUS_ARCHIVE_SHA256 = 848bca2522d6febbf3e3c48c634731ecd61899166f5922ed15857e8063c3dc4b
SJASMPLUS_ARCHIVE_TYPE = .zip
SJASMPLUS_ARCHIVE_SUBDIR = sjasmplus-1.18.2.win
sjasmplus-z00m128/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.zip)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
unzip -nq -d $(@D) $<
else
unzip -nq $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus-z00m128/sjasmplus-1.18.2.win.zip: | .downloads/sjasmplus-z00m128
wget -c https://github.com/z00m128/sjasmplus/releases/download/v1.18.2/$(@F) -O $@
install-sjasmplus: $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
$(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX): sjasmplus-z00m128/sjasmplus$(EXESUFFIX) | $(DESTDIR)$(bindir)
$(INSTALL_PROGRAM) $< $@
ifeq ($(_DoClean),1)
uninstall-sjasmplus:
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
clean-sjasmplus:
rm -rf sjasmplus-z00m128
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-sjasmplus:
rm -rf\
.downloads/sjasmplus-z00m128\
sjasmplus-z00m128
else # !_DoClean
distclean-sjasmplus:;
endif # !_DoClean
else
$(error Unknown SJAsmPlus version selected: `$(USE_SJASMPLUS_VERSION)')
endif
# z88dk
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-z88dk)
Z88DK_BINS:=\
asmpp.pl\
sccz80$(EXESUFFIX)\
z80asm$(EXESUFFIX)\
z88dk-appmake$(EXESUFFIX)\
z88dk-basck$(EXESUFFIX)\
z88dk-copt$(EXESUFFIX)\
z88dk-dis$(EXESUFFIX)\
z88dk-dzx7$(EXESUFFIX)\
z88dk-font2pv1000$(EXESUFFIX)\
z88dk-lib$(EXESUFFIX)\
z88dk-ticks$(EXESUFFIX)\
z88dk-ucpp$(EXESUFFIX)\
z88dk-z80asm$(EXESUFFIX)\
z88dk-z80nm$(EXESUFFIX)\
z88dk-z80svg$(EXESUFFIX)\
z88dk-zcpp$(EXESUFFIX)\
z88dk-zobjcopy$(EXESUFFIX)\
z88dk-zpragma$(EXESUFFIX)\
z88dk-zx7$(EXESUFFIX)\
zcc$(EXESUFFIX)
build-z88dk install-z88dk: z88dk/.done
ifeq ($(_DoBuild),1)
Z88DK_ARCHIVE = .downloads/z88dk/z88dk-src-2.1.tgz
Z88DK_ARCHIVE_SHA256 = f3579ee59b4af552721173165af38223b115ccb67179e79d2f3c0ae64338dc7c
Z88DK_ARCHIVE_TYPE = .tar.gz
Z88DK_ARCHIVE_SUBDIR = z88dk
# Force Win32 build for Windows
ifeq ($(OS),Windows_NT)
export CC=i686-w64-mingw32-gcc
endif
z88dk/.done: | z88dk/.extracted z88dk.mk
$(MAKE) -w -C z88dk -f ../z88dk.mk
cd z88dk/bin && test x $(patsubst %,-a -x %,$(Z88DK_BINS))
touch $@
z88dk/.extracted: $(Z88DK_ARCHIVE) | z88dk.patch
echo '$(Z88DK_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || rm -rf $(Z88DK_ARCHIVE_SUBDIR)
ifeq ($(Z88DK_ARCHIVE_TYPE),.tar.gz)
ifeq ($(Z88DK_ARCHIVE_SUBDIR),.)
$(error Not implemented)
else
tar -xzf $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || mv $(Z88DK_ARCHIVE_SUBDIR) $(@D)
patch -N -p0 -s <$| || true
touch $@
.downloads/z88dk/z88dk-src-2.1.tgz: | .downloads/z88dk
wget -c https://github.com/z88dk/z88dk/releases/download/v2.1/$(@F) -O $@
uninstall-z88dk:;
ifeq ($(_DoClean),1)
# This does not work:
#clean-z88dk: | z88dk.mk
# if test -d z88dk; then $(MAKE) -w -C z88dk -f ../z88dk.mk clean && rm -f z88dk/.done; fi
clean-z88dk:
rm -rf z88dk
else # !_DoClean
clean-z88dk:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
ifeq ($(PROCESSOR_ARCHITECTURE),X86)
else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
else ifeq ($(PROCESSOR_ARCHITECTURE),EM64T)
else
$(warning Unsupported platform: "$(PROCESSOR_ARCHITECTURE)")
endif
Z88DK_ARCHIVE = .downloads/z88dk/z88dk-win32-2.1.zip
Z88DK_ARCHIVE_SHA256 = f4abedfae429ea159e388b5c76758ace4dcb86e9a00dbd928862b0a30f6874d6
Z88DK_ARCHIVE_TYPE = .zip
Z88DK_ARCHIVE_SUBDIR = z88dk
z88dk/.done: $(Z88DK_ARCHIVE)
echo '$(Z88DK_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || rm -rf $(Z88DK_ARCHIVE_SUBDIR)
ifeq ($(Z88DK_ARCHIVE_TYPE),.zip)
ifeq ($(Z88DK_ARCHIVE_SUBDIR),.)
unzip -nq -d $(@D) $<
else
unzip -nq $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || mv $(Z88DK_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/z88dk/z88dk-win32-2.1.zip: | .downloads/z88dk
wget -c https://github.com/z88dk/z88dk/releases/download/v2.1/$(@F) -O $@
uninstall-z88dk:;
ifeq ($(_DoClean),1)
clean-z88dk:
rm -rf z88dk
else # !_DoClean
clean-z88dk:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-z88dk: clean-z88dk
rm -rf .downloads/z88dk
else # !_DoClean
distclean-z88dk:;
endif # !_DoClean
# lodepng
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-lodepng)
ifeq ($(_DoBuild),1)
build-lodepng: | lodepng
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix))
install-lodepng: | lodepng
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install
else # !_DoBuild
build-lodepng install-lodepng:;
endif # !_DoBuild
ifeq ($(_DoClean),1)
uninstall-lodepng: | lodepng
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) uninstall
clean-lodepng: | lodepng
$(MAKE) -w -C $| clean
distclean-lodepng: | lodepng
$(MAKE) -w -C $| distclean
else # !_DoClean
uninstall-lodepng clean-lodepng distclean-lodepng:;
endif # !_DoClean
# zx7b
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-zx7b)
ifeq ($(_DoBuild),1)
build-zx7b: | zx7b
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix))
install-zx7b: | zx7b
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install
else # !_DoBuild
build-zx7b install-zx7b:;
endif # !_DoBuild
ifeq ($(_DoClean),1)
uninstall-zx7b: | zx7b
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) uninstall
clean-zx7b: | zx7b
$(MAKE) -w -C $| clean
distclean-zx7b: | zx7b
$(MAKE) -w -C $| distclean
else # !_DoClean
uninstall-zx7b clean-zx7b distclean-zx7b:;
endif # !_DoClean
# tools
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-tools)
ifeq ($(_DoBuild),1)
build-tools: | tools
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix))
install-tools: | tools
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install
else # !_DoBuild
build-tools install-tools:;
endif # !_DoBuild
ifeq ($(_DoClean),1)
uninstall-tools: | tools
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) uninstall
clean-tools: | tools
$(MAKE) -w -C $| clean
distclean-tools: | tools
$(MAKE) -w -C $| distclean
else # !_DoClean
uninstall-tools clean-tools distclean-tools:;
endif # !_DoClean
include z88dk.inc.mk
include lodepng.inc.mk
include tools.inc.mk

75
sdk/src/lodepng.inc.mk Normal file
View File

@ -0,0 +1,75 @@
# lodepng.inc.mk - script to build LodePNG.
#
# This file is a part of main Makefile.
#
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
.PHONY: $(foreach t,build install uninstall clean distclean,$(t)-lodepng)
ifeq ($(_DoBuild),1)
build-lodepng: | lodepng
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix))
install-lodepng: | lodepng
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install
else # !_DoBuild
build-lodepng install-lodepng:;
endif # !_DoBuild
ifeq ($(_DoClean),1)
uninstall-lodepng: | lodepng
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) uninstall
clean-lodepng: | lodepng
$(MAKE) -w -C $| clean
distclean-lodepng: | lodepng
$(MAKE) -w -C $| distclean
else # !_DoClean
uninstall-lodepng clean-lodepng distclean-lodepng:;
endif # !_DoClean
# zx7b
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-zx7b)
ifeq ($(_DoBuild),1)
build-zx7b: | zx7b
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix))
install-zx7b: | zx7b
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install
else # !_DoBuild
build-zx7b install-zx7b:;
endif # !_DoBuild
ifeq ($(_DoClean),1)
uninstall-zx7b: | zx7b
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) uninstall
clean-zx7b: | zx7b
$(MAKE) -w -C $| clean
distclean-zx7b: | zx7b
$(MAKE) -w -C $| distclean
else # !_DoClean
uninstall-zx7b clean-zx7b distclean-zx7b:;
endif # !_DoClean

View File

@ -0,0 +1,137 @@
# sjasmplus-z00m128.inc.mk - script to download and build SJAsmPlus by aprisobal.
#
# This file is a part of main Makefile.
#
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
.downloads/sjasmplus-z00m128:
mkdir -p $@
.PHONY: $(foreach t,build install uninstall clean distclean,$(t)-sjasmplus)
ifeq ($(_DoBuild),1)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus-z00m128/v1.18.2.tar.gz
SJASMPLUS_ARCHIVE_SHA256 = 114807bf53d3526b4d1ae7d40f3050b9ee98220df74931efc1e6d1fe5aba3d02
SJASMPLUS_ARCHIVE_TYPE = .tar.gz
SJASMPLUS_ARCHIVE_SUBDIR = sjasmplus-1.18.2
build-sjasmplus: | sjasmplus-z00m128/.extracted sjasmplus-z00m128.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix))
sjasmplus-z00m128/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.tar.gz)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
$(error Not implemented)
else
tar -xzf $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus-z00m128/v1.18.2.tar.gz: | .downloads/sjasmplus-z00m128
wget -c https://github.com/z00m128/sjasmplus/archive/refs/tags/$(@F) -O $@
install-sjasmplus: | sjasmplus-z00m128/.extracted sjasmplus-z00m128.mk
$(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix)) install
ifeq ($(_DoClean),1)
uninstall-sjasmplus: | sjasmplus-z00m128.mk
if test -d sjasmplus-z00m128; then\
$(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix)) uninstall;\
else\
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\
fi
clean-sjasmplus: | sjasmplus-z00m128.mk
if test -d sjasmplus-z00m128; then $(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk clean; fi
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
build-sjasmplus: sjasmplus-z00m128/sjasmplus$(EXESUFFIX)
sjasmplus-z00m128/sjasmplus$(EXESUFFIX): | sjasmplus-z00m128/.extracted
ifeq ($(PROCESSOR_ARCHITECTURE),X86)
else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
else ifeq ($(PROCESSOR_ARCHITECTURE),EM64T)
else
$(warning Unsupported platform: "$(PROCESSOR_ARCHITECTURE)")
endif
SJASMPLUS_ARCHIVE = .downloads/sjasmplus-z00m128/sjasmplus-1.18.2.win.zip
SJASMPLUS_ARCHIVE_SHA256 = 848bca2522d6febbf3e3c48c634731ecd61899166f5922ed15857e8063c3dc4b
SJASMPLUS_ARCHIVE_TYPE = .zip
SJASMPLUS_ARCHIVE_SUBDIR = sjasmplus-1.18.2.win
sjasmplus-z00m128/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.zip)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
unzip -nq -d $(@D) $<
else
unzip -nq $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus-z00m128/sjasmplus-1.18.2.win.zip: | .downloads/sjasmplus-z00m128
wget -c https://github.com/z00m128/sjasmplus/releases/download/v1.18.2/$(@F) -O $@
install-sjasmplus: $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
$(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX): sjasmplus-z00m128/sjasmplus$(EXESUFFIX) | $(DESTDIR)$(bindir)
$(INSTALL_PROGRAM) $< $@
ifeq ($(_DoClean),1)
uninstall-sjasmplus:
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
clean-sjasmplus:
rm -rf sjasmplus-z00m128
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-sjasmplus:
rm -rf\
.downloads/sjasmplus-z00m128\
sjasmplus-z00m128
else # !_DoClean
distclean-sjasmplus:;
endif # !_DoClean

149
sdk/src/sjasmplus.inc.mk Normal file
View File

@ -0,0 +1,149 @@
# sjasmplus.inc.mk - script to download and build original SJAsmPlus.
#
# This file is a part of main Makefile.
#
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
.downloads/sjasmplus:
mkdir -p $@
.PHONY: $(foreach t,build install uninstall clean distclean,$(t)-sjasmplus)
ifeq ($(_DoBuild),1)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/20190306.1.tar.gz
SJASMPLUS_ARCHIVE_SHA256 = f3f6d28af19880ed2cb427b6b427e9bd42371929c7d263dac840fb71de1302d6
SJASMPLUS_ARCHIVE_TYPE = .tar.gz
SJASMPLUS_ARCHIVE_SUBDIR = sjasmplus-20190306.1
build-sjasmplus: | sjasmplus/.extracted sjasmplus.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix))
sjasmplus/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.tar.gz)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
$(error Not implemented)
else
tar -xzf $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus/20190306.1.tar.gz: | .downloads/sjasmplus
wget -c https://github.com/sjasmplus/sjasmplus/archive/refs/tags/$(@F) -O $@
install-sjasmplus: | sjasmplus/.extracted sjasmplus.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix)) install
ifeq ($(_DoClean),1)
uninstall-sjasmplus: | sjasmplus.mk
if test -d sjasmplus; then\
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix)) uninstall;\
else\
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\
fi
clean-sjasmplus: | sjasmplus.mk
if test -d sjasmplus; then $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk clean; fi
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
build-sjasmplus: sjasmplus/sjasmplus$(EXESUFFIX)
sjasmplus/sjasmplus$(EXESUFFIX): | sjasmplus/.extracted
ifeq ($(PROCESSOR_ARCHITECTURE),X86)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win32-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = c84731640930afc4f4cc3c0f30f891916b9b77d63dc0e4cfdcd226682b8545b1
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win64-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = ef352b50ce7c9e9971c6fc3143e378d3e9f4069f11eb0c33022195c6e9b34fcb
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
else ifeq ($(PROCESSOR_ARCHITECTURE),EM64T)
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win64-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = ef352b50ce7c9e9971c6fc3143e378d3e9f4069f11eb0c33022195c6e9b34fcb
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
else
$(warning Unsupported platform: "$(PROCESSOR_ARCHITECTURE)")
SJASMPLUS_ARCHIVE = .downloads/sjasmplus/sjasmplus-win32-20190306.1.7z
SJASMPLUS_ARCHIVE_SHA256 = c84731640930afc4f4cc3c0f30f891916b9b77d63dc0e4cfdcd226682b8545b1
SJASMPLUS_ARCHIVE_TYPE = .7z
SJASMPLUS_ARCHIVE_SUBDIR = .
endif
sjasmplus/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || rm -rf $(SJASMPLUS_ARCHIVE_SUBDIR)
ifeq ($(SJASMPLUS_ARCHIVE_TYPE),.7z)
ifeq ($(SJASMPLUS_ARCHIVE_SUBDIR),.)
7z x -bd -o$(@D) $<
else
7z x -bd $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(SJASMPLUS_ARCHIVE_SUBDIR)' -o '$(SJASMPLUS_ARCHIVE_SUBDIR)' = . || mv $(SJASMPLUS_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/sjasmplus/sjasmplus-win32-20190306.1.7z: | .downloads/sjasmplus
wget -c https://github.com/sjasmplus/sjasmplus/releases/download/20190306.1/$(@F) -O $@
.downloads/sjasmplus/sjasmplus-win64-20190306.1.7z: | .downloads/sjasmplus
wget -c https://github.com/sjasmplus/sjasmplus/releases/download/20190306.1/$(@F) -O $@
install-sjasmplus: $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
$(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX): sjasmplus/sjasmplus$(EXESUFFIX) | $(DESTDIR)$(bindir)
$(INSTALL_PROGRAM) $< $@
ifeq ($(_DoClean),1)
uninstall-sjasmplus:
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
clean-sjasmplus:
rm -rf sjasmplus
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-sjasmplus: clean-sjasmplus
rm -rf .downloads/sjasmplus
else # !_DoClean
distclean-sjasmplus:;
endif # !_DoClean

40
sdk/src/tools.inc.mk Normal file
View File

@ -0,0 +1,40 @@
# tools.inc.mk - script to build tools.
#
# This file is a part of main Makefile.
#
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
.PHONY: $(foreach t,build install uninstall clean distclean,$(t)-tools)
ifeq ($(_DoBuild),1)
build-tools: | tools
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix))
install-tools: | tools
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install
else # !_DoBuild
build-tools install-tools:;
endif # !_DoBuild
ifeq ($(_DoClean),1)
uninstall-tools: | tools
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) uninstall
clean-tools: | tools
$(MAKE) -w -C $| clean
distclean-tools: | tools
$(MAKE) -w -C $| distclean
else # !_DoClean
uninstall-tools clean-tools distclean-tools:;
endif # !_DoClean

152
sdk/src/z88dk.inc.mk Normal file
View File

@ -0,0 +1,152 @@
# z88dk.inc.mk - script to download and build original Z88DK.
#
# This file is a part of main Makefile.
#
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
.downloads/z88dk:
mkdir -p $@
.PHONY: $(foreach t,build install uninstall clean distclean,$(t)-z88dk)
Z88DK_BINS:=\
asmpp.pl\
sccz80$(EXESUFFIX)\
z80asm$(EXESUFFIX)\
z88dk-appmake$(EXESUFFIX)\
z88dk-basck$(EXESUFFIX)\
z88dk-copt$(EXESUFFIX)\
z88dk-dis$(EXESUFFIX)\
z88dk-dzx7$(EXESUFFIX)\
z88dk-font2pv1000$(EXESUFFIX)\
z88dk-lib$(EXESUFFIX)\
z88dk-ticks$(EXESUFFIX)\
z88dk-ucpp$(EXESUFFIX)\
z88dk-z80asm$(EXESUFFIX)\
z88dk-z80nm$(EXESUFFIX)\
z88dk-z80svg$(EXESUFFIX)\
z88dk-zcpp$(EXESUFFIX)\
z88dk-zobjcopy$(EXESUFFIX)\
z88dk-zpragma$(EXESUFFIX)\
z88dk-zx7$(EXESUFFIX)\
zcc$(EXESUFFIX)
build-z88dk install-z88dk: z88dk/.done
ifeq ($(_DoBuild),1)
Z88DK_ARCHIVE = .downloads/z88dk/z88dk-src-2.1.tgz
Z88DK_ARCHIVE_SHA256 = f3579ee59b4af552721173165af38223b115ccb67179e79d2f3c0ae64338dc7c
Z88DK_ARCHIVE_TYPE = .tar.gz
Z88DK_ARCHIVE_SUBDIR = z88dk
# Force Win32 build for Windows
ifeq ($(OS),Windows_NT)
export CC=i686-w64-mingw32-gcc
endif
z88dk/.done: | z88dk/.extracted z88dk.mk
$(MAKE) -w -C z88dk -f ../z88dk.mk
cd z88dk/bin && test x $(patsubst %,-a -x %,$(Z88DK_BINS))
touch $@
z88dk/.extracted: $(Z88DK_ARCHIVE) | z88dk.patch
echo '$(Z88DK_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || rm -rf $(Z88DK_ARCHIVE_SUBDIR)
ifeq ($(Z88DK_ARCHIVE_TYPE),.tar.gz)
ifeq ($(Z88DK_ARCHIVE_SUBDIR),.)
$(error Not implemented)
else
tar -xzf $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || mv $(Z88DK_ARCHIVE_SUBDIR) $(@D)
patch -N -p0 -s <$| || true
touch $@
.downloads/z88dk/z88dk-src-2.1.tgz: | .downloads/z88dk
wget -c https://github.com/z88dk/z88dk/releases/download/v2.1/$(@F) -O $@
uninstall-z88dk:;
ifeq ($(_DoClean),1)
# This does not work:
#clean-z88dk: | z88dk.mk
# if test -d z88dk; then $(MAKE) -w -C z88dk -f ../z88dk.mk clean && rm -f z88dk/.done; fi
clean-z88dk:
rm -rf z88dk
else # !_DoClean
clean-z88dk:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
ifeq ($(PROCESSOR_ARCHITECTURE),X86)
else ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
else ifeq ($(PROCESSOR_ARCHITECTURE),EM64T)
else
$(warning Unsupported platform: "$(PROCESSOR_ARCHITECTURE)")
endif
Z88DK_ARCHIVE = .downloads/z88dk/z88dk-win32-2.1.zip
Z88DK_ARCHIVE_SHA256 = f4abedfae429ea159e388b5c76758ace4dcb86e9a00dbd928862b0a30f6874d6
Z88DK_ARCHIVE_TYPE = .zip
Z88DK_ARCHIVE_SUBDIR = z88dk
z88dk/.done: $(Z88DK_ARCHIVE)
echo '$(Z88DK_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || rm -rf $(Z88DK_ARCHIVE_SUBDIR)
ifeq ($(Z88DK_ARCHIVE_TYPE),.zip)
ifeq ($(Z88DK_ARCHIVE_SUBDIR),.)
unzip -nq -d $(@D) $<
else
unzip -nq $<
endif
else
$(error Not implemented)
endif
test '$(@D)' = '$(Z88DK_ARCHIVE_SUBDIR)' -o '$(Z88DK_ARCHIVE_SUBDIR)' = . || mv $(Z88DK_ARCHIVE_SUBDIR) $(@D)
touch $@
.downloads/z88dk/z88dk-win32-2.1.zip: | .downloads/z88dk
wget -c https://github.com/z88dk/z88dk/releases/download/v2.1/$(@F) -O $@
uninstall-z88dk:;
ifeq ($(_DoClean),1)
clean-z88dk:
rm -rf z88dk
else # !_DoClean
clean-z88dk:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-z88dk: clean-z88dk
rm -rf .downloads/z88dk
else # !_DoClean
distclean-z88dk:;
endif # !_DoClean