# SPDX-FileCopyrightText: 2021 Ivan Tatarinov # # SPDX-License-Identifier: GPL-3.0-or-later # # Supported environments: # * GNU on Linux, FreeBSD etc. # * GNU on Windows NT (using MinGW/MSYS/Cygwin/WSL) # # Build: # make [BUILD=] [FORCEBUILD=] [] # Clean: # make [BUILD=] [FORCECLEAN=] clean|dist-clean # # where: # is one of: mingw32, mingw64. # is 1 to force build, otherwise do not (default). # is 1 to force clean, otherwise do not (default). # is one of: # * external-sjasmplus # * external-z88dk # * local-zx7b # * local-tools # # Notes: # BUILD, FORCEBUILD, FORCECLEAN variables may be set in user's environment. include ../common.mk INSTALLDIR=../bin .PHONY: all all:\ external-sjasmplus\ external-z88dk\ local-zx7b\ local-tools _DoBuild:=1 _UsePrecompiledOnWindows:=0 ifeq ($(OS),Windows_NT) ifneq ($(FORCEBUILD),1) _DoBuild:=0 _UsePrecompiledOnWindows:=1 endif endif _DoClean:=1 ifeq ($(OS),Windows_NT) ifneq ($(FORCECLEAN),1) _DoClean:=0 endif endif # sjasmplus .PHONY: external-sjasmplus clean-sjasmplus external-sjasmplus: $(INSTALLDIR)/sjasmplus$(EXESUFFIX) ifeq ($(_DoBuild),1) $(INSTALLDIR)/sjasmplus$(EXESUFFIX): sjasmplus/build/sjasmplus$(EXESUFFIX) cp $< $@ sjasmplus/build/sjasmplus$(EXESUFFIX): | sjasmplus/.extracted sjasmplus.mk $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk sjasmplus/.extracted: sjasmplus-src.tgz echo 'f3f6d28af19880ed2cb427b6b427e9bd42371929c7d263dac840fb71de1302d6 $<' >$<.sha256 sha256sum -c $<.sha256 rm -f $<.sha256 rm -rf $(@D) sjasmplus-20190306.1 tar -xzf $< mv sjasmplus-20190306.1 $(@D) touch $@ sjasmplus-src.tgz: wget -c https://github.com/sjasmplus/sjasmplus/archive/refs/tags/20190306.1.tar.gz -O $@ clean-sjasmplus: if test -d sjasmplus; then $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk clean; fi rm -f $(INSTALLDIR)/sjasmplus$(EXESUFFIX) endif ifeq ($(_UsePrecompiledOnWindows),1) $(INSTALLDIR)/sjasmplus$(EXESUFFIX): sjasmplus/sjasmplus$(EXESUFFIX) cp $< $@ sjasmplus/sjasmplus$(EXESUFFIX): | sjasmplus/.extracted ifeq ($(PROCESSOR_ARCHITECTURE),AMD64) SJASMPLUS_ARCHIVE := sjasmplus-win64.7z SJASMPLUS_ARCHIVE_SHA256 := ef352b50ce7c9e9971c6fc3143e378d3e9f4069f11eb0c33022195c6e9b34fcb else SJASMPLUS_ARCHIVE := sjasmplus-win32.7z SJASMPLUS_ARCHIVE_SHA256 := c84731640930afc4f4cc3c0f30f891916b9b77d63dc0e4cfdcd226682b8545b1 endif sjasmplus/.extracted: $(SJASMPLUS_ARCHIVE) echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256 sha256sum -c $<.sha256 rm -f $<.sha256 rm -rf $(@D) 7z x -bd -o$(@D) $< touch $@ sjasmplus-win32.7z: wget -c https://github.com/sjasmplus/sjasmplus/releases/download/20190306.1/sjasmplus-win32-20190306.1.7z -O $@ sjasmplus-win64.7z: wget -c https://github.com/sjasmplus/sjasmplus/releases/download/20190306.1/sjasmplus-win64-20190306.1.7z -O $@ clean-sjasmplus: rm -rf sjasmplus rm -f $(INSTALLDIR)/sjasmplus$(EXESUFFIX) endif .PHONY: dist-clean-sjasmplus dist-clean-sjasmplus: rm -rf sjasmplus rm -f $(INSTALLDIR)/sjasmplus$(EXESUFFIX) rm -f\ sjasmplus-src.tgz\ sjasmplus-src.tgz.sha256\ sjasmplus-win32.7z\ sjasmplus-win32.7z.sha256\ sjasmplus-win64.7z\ sjasmplus-win64.7z.sha256 # z88dk .PHONY: external-z88dk clean-z88dk Z88DK_TARGETS:=\ 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) external-z88dk: z88dk/.done ifeq ($(_DoBuild),1) # 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_TARGETS)) touch $@ z88dk/.extracted: z88dk-src.tgz echo 'f3579ee59b4af552721173165af38223b115ccb67179e79d2f3c0ae64338dc7c $<' >$<.sha256 sha256sum -c $<.sha256 rm -f $<.sha256 rm -rf z88dk tar -xzf $< patch -N -p0 -s $<.sha256 sha256sum -c $<.sha256 rm -f $<.sha256 rm -rf z88dk unzip -nq $< touch $@ z88dk-win32.zip: wget -c https://github.com/z88dk/z88dk/releases/download/v2.1/z88dk-win32-2.1.zip -O $@ clean-z88dk: rm -rf z88dk endif .PHONY: dist-clean-z88dk dist-clean-z88dk: rm -rf z88dk rm -f\ z88dk-src.tgz\ z88dk-src.tgz.sha256\ z88dk-win32.zip\ z88dk-win32.zip.sha256 # zx7b .PHONY: local-zx7b clean-zx7b local-zx7b: $(INSTALLDIR)/zx7b$(EXESUFFIX) ifeq ($(_DoBuild),1) $(INSTALLDIR)/zx7b$(EXESUFFIX): zx7b/zx7b$(EXESUFFIX) cp $< $@ zx7b/zx7b$(EXESUFFIX): | zx7b $(MAKE) -w -C $| clean-zx7b: | zx7b $(MAKE) -w -C $| clean rm -f $(INSTALLDIR)/zx7b$(EXESUFFIX) else clean-zx7b:; endif .PHONY: dist-clean-zx7b dist-clean-zx7b: clean-zx7b # tools INSTALLED_TOOLS:=\ $(INSTALLDIR)/bin2hex$(EXESUFFIX)\ $(INSTALLDIR)/fcut$(EXESUFFIX)\ $(INSTALLDIR)/fpad$(EXESUFFIX)\ $(INSTALLDIR)/fpoke$(EXESUFFIX)\ $(INSTALLDIR)/rcs$(EXESUFFIX)\ $(INSTALLDIR)/GenRom$(EXESUFFIX)\ $(INSTALLDIR)/AddItem$(EXESUFFIX)\ $(INSTALLDIR)/Bit2Bin$(EXESUFFIX) .PHONY: local-tools clean-tools local-tools: $(INSTALLED_TOOLS) ifeq ($(_DoBuild),1) $(INSTALLDIR)/bin2hex$(EXESUFFIX): tools/bin2hex$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/fcut$(EXESUFFIX): tools/fcut$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/fpad$(EXESUFFIX): tools/fpad$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/fpoke$(EXESUFFIX): tools/fpoke$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/rcs$(EXESUFFIX): tools/rcs$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/GenRom$(EXESUFFIX): tools/GenRom$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/AddItem$(EXESUFFIX): tools/AddItem$(EXESUFFIX) cp $< $@ $(INSTALLDIR)/Bit2Bin$(EXESUFFIX): tools/Bit2Bin$(EXESUFFIX) cp $< $@ tools/%$(EXESUFFIX): | tools $(MAKE) -w -C $| $(@F) clean-tools: | tools $(MAKE) -w -C $| clean rm -f $(INSTALLED_TOOLS) else clean-tools:; endif .PHONY: dist-clean-tools dist-clean-tools: clean-tools .PHONY: clean ifeq ($(_DoClean),1) clean: clean-sjasmplus clean-z88dk clean-zx7b clean-tools else clean: clean-sjasmplus clean-z88dk endif .PHONY: dist-clean ifeq ($(_DoClean),1) dist-clean: dist-clean-sjasmplus dist-clean-z88dk dist-clean-zx7b dist-clean-tools else dist-clean: dist-clean-sjasmplus dist-clean-z88dk endif