# # Specify target platform (16-bit real-mode DOS), instruction set # (vanilla 8086), floating point instructions (soft emulation), # maximum warnings and warnings should be treated as errors. # Memory model small (near code, near data) as nothing here is # larger than 64KB. WCC_COMMON = -bt=dos -0 -wx -we -fpc -ms WCC_FLAGS = $(WCC_COMMON) -zpw WCC_FLAGS += -zc -ze -r # -s Disable stack checks # -oh Enable expensive optimizations # -ol Enable loop optimizations # -os Optimize for size # -ot Optimize for speed (exclusive w/ -os) WCC_FLAGS += -s -oh -os # Add DWARF debugging table #WCC_FLAGS += -d2 -hd WASM_FLAGS = $(WCC_COMMON) -d1 -dROMDISK_WORKAROUND #WCC_FLAGS += -DJRIDE_ISA=1 TARGETS = \ bin/flash.exe \ bin/rtc.com \ bin/ide.exe \ bin/jed2jpf \ bin/biossum \ bin/pull.com \ bin/pimount.com \ bin/netpid \ bin/picon.com \ bin/fwupdate \ bin/optbios.hex \ bin/flash.hex \ FIRMWARE_TARGET = rtl/netpi/releases/firmware_ver1_8.jed #FIRMWARE_TARGET = rtl/netpi/impl/netpi_impl.jed all: $(TARGETS) %.hex: %.bin @echo " -CONV- Converting '$<' -> '$@'" @objcopy -I binary -O ihex $< $@ # Watcom rules %.obj %.lst : %.c @echo " -WCC- Compiling '$<'" @wcc -q $(WCC_FLAGS) -fo=$@ $< @wdis -s=$< -a -e -p -l=$*.lst $@ @chmod 644 $*.lst %.obj: %.asm @echo " -WASM- Assembling '$<'" @wasm -zq $(WASM_FLAGS) -fo=$@ $< .PRECIOUS: %.obj %.bin bin/%.exe: %.obj flash_api.obj @echo " -WLINK- Linking '$@'" @WL_TARGET=bin/$* wlink @build/exe.lnk file { $^ } bin/%.com: %.obj flash_api.obj @echo " -WLINK- Linking '$@'" @WL_TARGET=bin/$* wlink @build/com.lnk file { $^ } bin/pimount.com: redir_io.obj resident.obj pimount.obj flash_api.obj @echo " -WLINK- Linking '$@'" @WL_TARGET=bin/pimount wlink @build/com.lnk file { $^ } BIOS_OBJS = \ string.obj \ bios_entry.obj bin/optbios.bin: $(BIOS_OBJS) @echo " -WLINK- Linking '$@'" @WL_TARGET=bin/optbios wlink @build/bios.lnk file { $^ } @./bin/biossum $@ # Rasperry PI targets CC = gcc OBJCOPY = objcopy CFLAGS += \ -pipe \ -Wall \ -Wundef \ -Werror \ -Wno-trigraphs \ -Wsign-compare \ -Wuninitialized %.o : %.c @echo " -HOSTCC- Compiling '$<'" @$(CC) -c $(CFLAGS) -o $@ $< bin/biossum: biossum.o @echo " -HOSTLD- Linking '$<'" @$(CC) $(CFLAGS) -o $@ $^ bin/jed2jpf: jed2jpf.o @echo " -HOSTLD- Linking '$@'" @$(CC) $(CFLAGS) -o $@ $^ firmware.c: $(FIRMWARE_TARGET) bin/jed2jpf @echo " -JED- Packing '$<'" @./bin/jed2jpf -a -o $@ $< bin/netpid: netpi.o machxo2_api.o firmware.o server.o config.o spi.o @echo " -HOSTLD- Linking '$<'" @$(CC) $(CFLAGS) -o $@ $^ bin/mkromdisk: mkromdisk.o @echo " -HOSTLD- Linking '$<'" @$(CC) $(CFLAGS) -o $@ $^ bin/romdisk.img: bin/mkromdisk mbr.obj romdisk.manifest @./bin/mkromdisk -k 496 -p 1536 $@ mbr.obj romdisk.manifest bin/flash.bin: bin/optbios.bin bin/romdisk.img @echo " -CAT- Concatenating '$@' from '$^'" @cat $^ > $@ bin/fwupdate: fwupdate.o spi.o @echo " -HOSTLD- Linking '$<'" @$(CC) $(CFLAGS) -o $@ $^ clean: rm -rf *~ *.o *.obj *.lst *.err bin/* firmware.c $(TARGETS)