From d9db0a824e7eafa0136af334573d333460aeff1d Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Mon, 9 Dec 2019 09:36:38 -0500 Subject: [PATCH] Make makefiles and shell scripts portable It's no longer required to use `gmake` under OpenBSD and shell scripts no longer require bash. --- runtests.sh | 4 +--- tools/cfspack/Makefile | 9 +++++++-- tools/emul/Makefile | 43 +++++++++++++++++++++++++------------------ tools/tests/Makefile | 2 +- tools/tests/unit/runtests.sh | 6 ++---- tools/tests/zasm/errtests.sh | 24 ++++++++++++++---------- tools/tests/zasm/runtests.sh | 8 +++----- 7 files changed, 53 insertions(+), 43 deletions(-) diff --git a/runtests.sh b/runtests.sh index 98c67d1..cd8a12b 100755 --- a/runtests.sh +++ b/runtests.sh @@ -1,6 +1,4 @@ -#/usr/bin/env bash - -set -e +#/bin/sh -e git submodule init git submodule update diff --git a/tools/cfspack/Makefile b/tools/cfspack/Makefile index 9c7ceac..7c70151 100644 --- a/tools/cfspack/Makefile +++ b/tools/cfspack/Makefile @@ -4,6 +4,11 @@ TARGETS = cfspack cfsunpack all: $(TARGETS) cfspack: cfspack.c + $(CC) $(CFLAGS) -o $@ cfspack.c + cfsunpack: cfsunpack.c -$(TARGETS): - $(CC) -o $@ $^ + $(CC) $(CFLAGS) -o $@ cfsunpack.c + +.PHONY: clean +clean: + rm -f $(TARGETS) diff --git a/tools/emul/Makefile b/tools/emul/Makefile index 40fff0c..6ab9e99 100644 --- a/tools/emul/Makefile +++ b/tools/emul/Makefile @@ -4,37 +4,44 @@ KERNEL = ../../kernel APPS = ../../apps ZASMBIN = zasm/zasm ZASMSH = ../zasm.sh -SHELLAPPS = $(addprefix cfsin/, zasm ed) -CFSIN_CONTENTS = $(SHELLAPPS) cfsin/user.h +SHELLAPPS = zasm ed +SHELLTGTS = ${SHELLAPPS:S/^/cfsin\//} +CFSIN_CONTENTS = $(SHELLTGTS) cfsin/user.h +OBJS = emul.o libz80/libz80.o .PHONY: all all: $(TARGETS) $(CFSIN_CONTENTS) # -o in sync with SHELL_CODE in shell/glue.asm shell/shell.bin: $(APPS)/shell/glue.asm $(ZASMBIN) - $(ZASMSH) -o 07 $(KERNEL) shell/user.h $(APPS) < $< | tee $@ > /dev/null + $(ZASMSH) -o 07 $(KERNEL) shell/user.h $(APPS) < $(APPS)/shell/glue.asm | tee $@ > /dev/null shell/kernel-bin.h: shell/glue.asm shell/shell.bin $(ZASMBIN) - $(ZASMSH) $(KERNEL) shell/shell.bin < $< | ./bin2c.sh KERNEL | tee $@ > /dev/null + $(ZASMSH) $(KERNEL) shell/shell.bin < shell/glue.asm | ./bin2c.sh KERNEL | tee $@ > /dev/null bshell/shell.bin: bshell/glue.asm $(ZASMBIN) - $(ZASMSH) $(KERNEL) bshell/user.h $(APPS) < $< | tee $@ > /dev/null + $(ZASMSH) $(KERNEL) bshell/user.h $(APPS) < bshell/glue.asm | tee $@ > /dev/null bshell/shell-bin.h: bshell/shell.bin - ./bin2c.sh KERNEL < $< | tee $@ > /dev/null + ./bin2c.sh KERNEL < bshell/shell.bin | tee $@ > /dev/null zasm/kernel-bin.h: zasm/kernel.bin - ./bin2c.sh KERNEL < $< | tee $@ > /dev/null + ./bin2c.sh KERNEL < zasm/kernel.bin | tee $@ > /dev/null zasm/zasm-bin.h: zasm/zasm.bin - ./bin2c.sh USERSPACE < $< | tee $@ > /dev/null + ./bin2c.sh USERSPACE < zasm/zasm.bin | tee $@ > /dev/null -shell/shell: shell/shell.c libz80/libz80.o shell/kernel-bin.h -bshell/shell: bshell/shell.c libz80/libz80.o bshell/shell-bin.h -$(ZASMBIN): zasm/zasm.c emul.o libz80/libz80.o zasm/kernel-bin.h zasm/zasm-bin.h $(CFSPACK) -runbin/runbin: runbin/runbin.c libz80/libz80.o -$(TARGETS): - $(CC) $< emul.o libz80/libz80.o -o $@ +shell/shell: shell/shell.c $(OBJS) shell/kernel-bin.h + $(CC) shell/shell.c $(OBJS) -o $@ + +bshell/shell: bshell/shell.c $(OBJS) bshell/shell-bin.h + $(CC) bshell/shell.c $(OBJS) -o $@ + +$(ZASMBIN): zasm/zasm.c $(OBJS) zasm/kernel-bin.h zasm/zasm-bin.h $(CFSPACK) + $(CC) zasm/zasm.c $(OBJS) -o $@ + +runbin/runbin: runbin/runbin.c $(OBJS) + $(CC) runbin/runbin.c $(OBJS) -o $@ libz80/libz80.o: libz80/z80.c $(MAKE) -C libz80/codegen opcodes @@ -47,11 +54,11 @@ $(CFSPACK): $(MAKE) -C ../cfspack # -o in sync with USER_CODE in shell/user.h -$(SHELLAPPS): $(ZASMBIN) - $(ZASMSH) -o 42 $(KERNEL) $(APPS) shell/user.h < $(APPS)/$(notdir $@)/glue.asm > $@ +$(SHELLTGTS): $(ZASMBIN) + $(ZASMSH) -o 42 $(KERNEL) $(APPS) shell/user.h < $(APPS)/${@:T}/glue.asm > $@ cfsin/user.h: shell/user.h - cp $< $@ + cp shell/user.h $@ .PHONY: updatebootstrap updatebootstrap: $(ZASMBIN) $(INCCFS) @@ -60,4 +67,4 @@ updatebootstrap: $(ZASMBIN) $(INCCFS) .PHONY: clean clean: - rm -f $(TARGETS) $(SHELLAPPS) emul.o zasm/*-bin.h shell/*-bin.h + rm -f $(TARGETS) $(SHELLTGTS) emul.o zasm/*-bin.h shell/*-bin.h diff --git a/tools/tests/Makefile b/tools/tests/Makefile index 44890ad..70b8373 100644 --- a/tools/tests/Makefile +++ b/tools/tests/Makefile @@ -2,6 +2,6 @@ EMULDIR = ../emul .PHONY: run run: - make -C $(EMULDIR) zasm runbin + $(MAKE) -C $(EMULDIR) zasm/zasm runbin/runbin cd unit && ./runtests.sh cd zasm && ./runtests.sh diff --git a/tools/tests/unit/runtests.sh b/tools/tests/unit/runtests.sh index 835af11..0d3cbd8 100755 --- a/tools/tests/unit/runtests.sh +++ b/tools/tests/unit/runtests.sh @@ -1,6 +1,4 @@ -#!/usr/bin/env bash - -set -e +#!/bin/sh -e BASE=../../.. TOOLS=../.. @@ -17,7 +15,7 @@ chk() { fi } -if [[ ! -z $1 ]]; then +if [ ! -z $1 ]; then chk $1 exit 0 fi diff --git a/tools/tests/zasm/errtests.sh b/tools/tests/zasm/errtests.sh index a53189b..1a41161 100755 --- a/tools/tests/zasm/errtests.sh +++ b/tools/tests/zasm/errtests.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # no "set -e" because we test errors @@ -6,9 +6,11 @@ ZASM=../../zasm.sh chkerr() { echo "Check that '$1' results in error $2" - ${ZASM} <<< $1 > /dev/null + ${ZASM} > /dev/null < 8192 bytes. Large enough to smash the pool. - for i in {1..300}; do - s+=".equ abcdefghijklmnopqrstuvwxyz$i 42" - s+=$'\n' + local i=0 + while [ "$i" -lt "300" ]; do + echo ".equ abcdefghijklmnopqrstuvwxyz$i 42" >> ${tmp} + i=$(($i+1)) done - ${ZASM} <<< "$s" > /dev/null + ${ZASM} < ${tmp} > /dev/null local res=$? - if [[ $res == 23 ]]; then + rm ${tmp} + if [ $res = 23 ]; then echo "Good!" else echo "$res != 23" @@ -57,5 +61,5 @@ chkerr ".db 0x100" 20 # TODO: find out why this tests fails on Travis but not on my machine... # chkerr $'nop \ nop \ nop\n.fill 2-$' 20 chkerr ".inc \"doesnotexist\"" 21 -chkerr "foo:\\foo:" 22 +chkerr 'foo:\\foo:' 22 chkoom diff --git a/tools/tests/zasm/runtests.sh b/tools/tests/zasm/runtests.sh index 87d93c4..983e5c9 100755 --- a/tools/tests/zasm/runtests.sh +++ b/tools/tests/zasm/runtests.sh @@ -1,6 +1,4 @@ -#!/usr/bin/env bash - -set -e +#!/bin/sh -e KERNEL=../../../kernel APPS=../../../apps @@ -11,7 +9,7 @@ cmpas() { FN=$1 EXPECTED=$(xxd ${FN}.expected) ACTUAL=$(cat ${FN} | $ZASM "${KERNEL}" "${APPS}" | xxd) - if [ "$ACTUAL" == "$EXPECTED" ]; then + if [ "$ACTUAL" = "$EXPECTED" ]; then echo ok else echo actual @@ -22,7 +20,7 @@ cmpas() { fi } -if [[ ! -z $1 ]]; then +if [ ! -z $1 ]; then cmpas $1 exit 0 fi