1#!/bin/sh 2set -e 3 4cat <<EOF 5rule cxx 6 command = $CXX $CFLAGS \$flags -I. -c -o \$out \$in -MMD -MF \$out.d 7 description = CXX \$in 8 depfile = \$out.d 9 deps = gcc 10 11rule library 12 command = $AR \$out \$in 13 description = AR \$in 14 15rule link 16 command = $CXX $LDFLAGS -o \$out \$in \$flags $LIBS 17 description = LINK \$in 18 19rule test 20 command = \$in && touch \$out 21 description = TEST \$in 22 23rule strip 24 command = cp -f \$in \$out && $STRIP \$out 25 description = STRIP \$in 26EOF 27 28buildlibrary() { 29 local lib 30 lib=$1 31 shift 32 33 local flags 34 flags= 35 while true; do 36 case $1 in 37 -*) 38 flags="$flags $1" 39 shift 40 ;; 41 42 *) 43 break 44 esac 45 done 46 47 local oobjs 48 local dobjs 49 oobjs= 50 dobjs= 51 for src in "$@"; do 52 local obj 53 obj="$OBJDIR/opt/${src%%.c*}.o" 54 oobjs="$oobjs $obj" 55 56 echo build $obj : cxx $src 57 echo " flags=$flags $COPTFLAGS" 58 59 obj="$OBJDIR/dbg/${src%%.c*}.o" 60 dobjs="$dobjs $obj" 61 62 echo build $obj : cxx $src 63 echo " flags=$flags $CDBGFLAGS" 64 done 65 66 echo build $OBJDIR/opt/$lib : library $oobjs 67 echo build $OBJDIR/dbg/$lib : library $dobjs 68} 69 70buildprogram() { 71 local prog 72 prog=$1 73 shift 74 75 local flags 76 flags= 77 while true; do 78 case $1 in 79 -*) 80 flags="$flags $1" 81 shift 82 ;; 83 84 *) 85 break 86 esac 87 done 88 89 local oobjs 90 local dobjs 91 oobjs= 92 dobjs= 93 for src in "$@"; do 94 oobjs="$oobjs $OBJDIR/opt/$src" 95 dobjs="$dobjs $OBJDIR/dbg/$src" 96 done 97 98 echo build $prog-debug$EXTENSION : link $dobjs 99 echo " flags=$flags $LDDBGFLAGS" 100 101 echo build $prog$EXTENSION : link $oobjs 102 echo " flags=$flags $LDOPTFLAGS" 103 104} 105 106buildsimpleprogram() { 107 local prog 108 prog=$1 109 shift 110 111 local flags 112 flags= 113 while true; do 114 case $1 in 115 -*) 116 flags="$flags $1" 117 shift 118 ;; 119 120 *) 121 break 122 esac 123 done 124 125 local src 126 src=$1 127 shift 128 129 buildlibrary lib$prog.a $flags $src 130 buildprogram $prog lib$prog.a "$@" 131} 132 133runtest() { 134 local prog 135 prog=$1 136 shift 137 138 buildlibrary lib$prog.a \ 139 "$@" 140 141 buildprogram $OBJDIR/$prog \ 142 lib$prog.a \ 143 libbackend.a \ 144 libagg.a \ 145 libfmt.a 146 147 echo build $OBJDIR/$prog.stamp : test $OBJDIR/$prog-debug$EXTENSION 148} 149 150buildlibrary libagg.a \ 151 -Idep/agg/include \ 152 dep/stb/stb_image_write.c \ 153 dep/agg/src/*.cpp 154 155buildlibrary libfmt.a \ 156 dep/fmt/format.cc \ 157 dep/fmt/posix.cc \ 158 159buildlibrary libbackend.a \ 160 lib/imagereader/diskcopyimagereader.cc \ 161 lib/imagereader/imagereader.cc \ 162 lib/imagereader/imgimagereader.cc \ 163 lib/imagereader/jv3imagereader.cc \ 164 lib/imagewriter/d64imagewriter.cc \ 165 lib/imagewriter/diskcopyimagewriter.cc \ 166 lib/imagewriter/imagewriter.cc \ 167 lib/imagewriter/imgimagewriter.cc \ 168 lib/imagewriter/ldbsimagewriter.cc \ 169 arch/aeslanier/decoder.cc \ 170 arch/amiga/decoder.cc \ 171 arch/amiga/encoder.cc \ 172 arch/amiga/amiga.cc \ 173 arch/apple2/decoder.cc \ 174 arch/brother/decoder.cc \ 175 arch/brother/encoder.cc \ 176 arch/c64/decoder.cc \ 177 arch/f85/decoder.cc \ 178 arch/fb100/decoder.cc \ 179 arch/ibm/decoder.cc \ 180 arch/ibm/encoder.cc \ 181 arch/macintosh/decoder.cc \ 182 arch/macintosh/encoder.cc \ 183 arch/micropolis/decoder.cc \ 184 arch/mx/decoder.cc \ 185 arch/tids990/decoder.cc \ 186 arch/tids990/encoder.cc \ 187 arch/victor9k/decoder.cc \ 188 arch/zilogmcz/decoder.cc \ 189 lib/bytes.cc \ 190 lib/crc.cc \ 191 lib/dataspec.cc \ 192 lib/decoders/decoders.cc \ 193 lib/decoders/fluxmapreader.cc \ 194 lib/decoders/fmmfm.cc \ 195 lib/encoders/encoders.cc \ 196 lib/flags.cc \ 197 lib/fluxmap.cc \ 198 lib/fluxsink/fluxsink.cc \ 199 lib/fluxsink/hardwarefluxsink.cc \ 200 lib/fluxsink/sqlitefluxsink.cc \ 201 lib/fluxsource/fluxsource.cc \ 202 lib/fluxsource/hardwarefluxsource.cc \ 203 lib/fluxsource/kryoflux.cc \ 204 lib/fluxsource/sqlitefluxsource.cc \ 205 lib/fluxsource/streamfluxsource.cc \ 206 lib/usb/usb.cc \ 207 lib/usb/fluxengineusb.cc \ 208 lib/usb/greaseweazle.cc \ 209 lib/usb/greaseweazleusb.cc \ 210 lib/globals.cc \ 211 lib/hexdump.cc \ 212 lib/ldbs.cc \ 213 lib/reader.cc \ 214 lib/sector.cc \ 215 lib/sectorset.cc \ 216 lib/sql.cc \ 217 lib/utils.cc \ 218 lib/visualiser.cc \ 219 lib/writer.cc \ 220 221buildlibrary libfrontend.a \ 222 src/fe-analysedriveresponse.cc \ 223 src/fe-cwftoflux.cc \ 224 src/fe-erase.cc \ 225 src/fe-fluxtoau.cc \ 226 src/fe-fluxtoscp.cc \ 227 src/fe-fluxtovcd.cc \ 228 src/fe-image.cc \ 229 src/fe-inspect.cc \ 230 src/fe-readadfs.cc \ 231 src/fe-readaeslanier.cc \ 232 src/fe-readamiga.cc \ 233 src/fe-readampro.cc \ 234 src/fe-readapple2.cc \ 235 src/fe-readatarist.cc \ 236 src/fe-readbrother.cc \ 237 src/fe-readc64.cc \ 238 src/fe-readdfs.cc \ 239 src/fe-readf85.cc \ 240 src/fe-readfb100.cc \ 241 src/fe-readibm.cc \ 242 src/fe-readmac.cc \ 243 src/fe-readmicropolis.cc \ 244 src/fe-readmx.cc \ 245 src/fe-readtids990.cc \ 246 src/fe-readvictor9k.cc \ 247 src/fe-readzilogmcz.cc \ 248 src/fe-rpm.cc \ 249 src/fe-scptoflux.cc \ 250 src/fe-seek.cc \ 251 src/fe-testbandwidth.cc \ 252 src/fe-testvoltages.cc \ 253 src/fe-upgradefluxfile.cc \ 254 src/fe-writeamiga.cc \ 255 src/fe-writebrother.cc \ 256 src/fe-writeibm.cc \ 257 src/fe-writemac.cc \ 258 src/fe-writetids990.cc \ 259 src/fe-writeflux.cc \ 260 src/fe-writetestpattern.cc \ 261 src/fluxengine.cc \ 262 263buildprogram fluxengine \ 264 libfrontend.a \ 265 libbackend.a \ 266 libfmt.a \ 267 libagg.a \ 268 269buildlibrary libemu.a \ 270 dep/emu/fnmatch.c 271 272buildsimpleprogram brother120tool \ 273 -Idep/emu \ 274 tools/brother120tool.cc \ 275 libbackend.a \ 276 libemu.a \ 277 libfmt.a \ 278 279buildsimpleprogram brother240tool \ 280 -Idep/emu \ 281 tools/brother240tool.cc \ 282 libbackend.a \ 283 libemu.a \ 284 libfmt.a \ 285 286runtest agg-test tests/agg.cc 287runtest amiga-test tests/amiga.cc 288runtest bitaccumulator-test tests/bitaccumulator.cc 289runtest bytes-test tests/bytes.cc 290runtest compression-test tests/compression.cc 291runtest dataspec-test tests/dataspec.cc 292runtest flags-test tests/flags.cc 293runtest fluxpattern-test tests/fluxpattern.cc 294runtest fmmfm-test tests/fmmfm.cc 295runtest greaseweazle-test tests/greaseweazle.cc 296runtest kryoflux-test tests/kryoflux.cc 297runtest ldbs-test tests/ldbs.cc 298 299