#!/bin/sh # Useful vars sh_wrap="sh -c" null="/dev/null" cp="cp" uxn_path="C:\\\\msys64\\\\home\\\\William\\\\Projects\\\\legacy\\\\IBM_PC\\\\rabbits\\\\uxn" # Host build section host_cc="gcc" host_cflags="-O2 -Wall -Wno-unknown-pragmas" $host_cc $host_cflags -o build\\\\uxnasm.o -c $uxn_path\\\\src\\\\uxnasm.c $host_cc $host_cflags -o out\\\\uxnasm.exe build\\\\uxnasm.o # WATCOM build section wat_cc="wcl" wat_ld="wlink" wat_dis="wdis" wat_modelchr="c" wat_include="-Isrc" # Avoid error files (fr) until I can figure out how to do conditional implicit # outputs. wat_cflags="-0 -bt=dos -m$wat_modelchr -q -s -oh -os -fr=" wat_ldflags="system dos option quiet" wat_setenv="C:\\\\WATCOM\\\\owsetenv.bat > $null" depfile="build\\\\pcuxn.d" $sh_wrap $wat_setenv && $wat_cc $wat_cflags $wat_include -c -ad=$depfile -add=src\\\\pcuxn.c -adt=build\\\\pcuxn.obj -fo=build\\\\pcuxn.obj src\\\\pcuxn.c $sh_wrap $wat_setenv && $wat_dis build\\\\pcuxn.obj > build\\\\pcuxn.dis depfile="build\\\\uxn.d" $sh_wrap $wat_setenv && $wat_cc $wat_cflags $wat_include -c -ad=$depfile -add=src\\\\uxn.c -adt=build\\\\uxn.obj -fo=build\\\\uxn.obj src\\\\uxn.c $sh_wrap $wat_setenv && $wat_dis build\\\\uxn.obj > build\\\\uxn.dis depfile="build\\\\doswrap.d" $sh_wrap $wat_setenv && $wat_cc $wat_cflags $wat_include -c -ad=$depfile -add=src\\\\doswrap.c -adt=build\\\\doswrap.obj -fo=build\\\\doswrap.obj src\\\\doswrap.c $sh_wrap $wat_setenv && $wat_dis build\\\\doswrap.obj > build\\\\doswrap.dis depfile="build\\\\console.d" $sh_wrap $wat_setenv && $wat_cc $wat_cflags $wat_include -c -ad=$depfile -add=src\\\\devices\\\\console.c -adt=build\\\\console.obj -fo=build\\\\console.obj src\\\\devices\\\\console.c $sh_wrap $wat_setenv && $wat_dis build\\\\console.obj > build\\\\console.dis otfile="out\\\\pcuxn.exe" mpfile="build\\\\pcuxn.map" $sh_wrap $wat_setenv && $wat_ld $wat_ldflags option map=$mpfile name $otfile file { build\\\\pcuxn.obj build\\\\uxn.obj build\\\\doswrap.obj build\\\\console.obj } # UXNASM build section uxnasm="out\\\\uxnasm.exe" $uxnasm $uxn_path\\\\projects\\\\examples\\\\devices\\\\console.tal out\\\\console.rom $uxnasm $uxn_path\\\\projects\\\\examples\\\\devices\\\\console.echo.tal out\\\\echo.rom # Patch rules to work around WATCOM patch="patch" # This rule will probably break if the cp succeeds, but the patch doesn't. $sh_wrap "$cp $uxn_path\\\\src\\\\uxn.c src\\\\uxn.c > $null" ifile="$uxn_path\\\\src\\\\uxn.h" ptchfile="src\\\\uxn.h.diff" $sh_wrap "$cp $ifile src\\\\uxn.h > $null && $patch -Np1 < $ptchfile" # Build everything except the dosbox/disassembly targets