瀏覽代碼

Make makefiles and shell scripts portable

It's no longer required to use `gmake` under OpenBSD and shell scripts
no longer require bash.
pull/85/head
Virgil Dupras 4 年之前
父節點
當前提交
d9db0a824e
共有 7 個文件被更改,包括 53 次插入43 次删除
  1. +1
    -3
      runtests.sh
  2. +7
    -2
      tools/cfspack/Makefile
  3. +25
    -18
      tools/emul/Makefile
  4. +1
    -1
      tools/tests/Makefile
  5. +2
    -4
      tools/tests/unit/runtests.sh
  6. +14
    -10
      tools/tests/zasm/errtests.sh
  7. +3
    -5
      tools/tests/zasm/runtests.sh

+ 1
- 3
runtests.sh 查看文件

@@ -1,6 +1,4 @@
#/usr/bin/env bash

set -e
#/bin/sh -e

git submodule init
git submodule update


+ 7
- 2
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)

+ 25
- 18
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

+ 1
- 1
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

+ 2
- 4
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


+ 14
- 10
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 <<XXX
$1
XXX
local res=$?
if [[ $res == $2 ]]; then
if [ $res = $2 ]; then
echo "Good!"
else
echo "$res != $2"
@@ -18,15 +20,17 @@ chkerr() {

chkoom() {
echo "Trying OOM error..."
local s=""
local tmp=$(mktemp)
# 300 x 27-29 bytes > 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

+ 3
- 5
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


Loading…
取消
儲存