mirror of
https://github.com/hsoft/collapseos.git
synced 2024-12-25 04:28:05 +11:00
Make makefiles and shell scripts portable
It's no longer required to use `gmake` under OpenBSD and shell scripts no longer require bash.
This commit is contained in:
parent
8ff4b18c51
commit
d9db0a824e
@ -1,6 +1,4 @@
|
||||
#/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
#/bin/sh -e
|
||||
|
||||
git submodule init
|
||||
git submodule update
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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…
Reference in New Issue
Block a user