all: chips
CHIPS := atmega8 atmega328p atmega32u4 attiny85
.PHONY: chips
chips: $(foreach chip, $(CHIPS), src/devices/$(chip)/mod.rs)
svd/%.bare.svd: vendor/%.atdf
mkdir -p svd
atdf2svd $< $@
# TODO: Implement actual patching
svd/%.patched.svd: svd/%.bare.svd
cp $< $@
src/devices/%/mod.full.rs: svd/%.patched.svd
mkdir -p $(@D)
cd $(@D); svd2rust --target none -i $(realpath $<)
mv $(@D)/lib.rs $@
src/devices/%/mod.rs: src/devices/%/mod.full.rs
form -i $< -o $(@D)
rm $<
mv $(@D)/lib.rs $@
rustfmt $@
@# Remove the `extern crate` lines
sed -i "1,7d" $@
@# Make DEVICE_PERIPHERALS visible crate-wide
sed -i 's/\(static mut DEVICE_PERIPHERALS\)/pub(crate) \0/' $@
clean:
rm -rf svd
rm -rf src/devices/at*