borgware-2d/Makefile

212 lines
5.9 KiB
Makefile
Raw Normal View History

2008-12-03 13:22:20 +00:00
TARGET := image
TARGET_SIM := borgsim
TOPDIR = .
SRC = \
main.c \
2008-12-04 03:34:55 +00:00
display_loop.c \
eeprom_reserve.c \
pixel.c \
util.c \
2008-12-04 03:34:55 +00:00
SRC_SIM = \
display_loop.c \
pixel.c \
LAUNCH_BOOTLOADER = launch-bootloader
2011-10-28 20:20:55 +00:00
#SERIAL = /dev/ttyUSB0
SERIAL = COM6
export TOPDIR
##############################################################################
2008-12-04 03:34:55 +00:00
all: compile-$(TARGET)
@echo "==============================="
@echo "$(TARGET) compiled for: $(MCU)"
@echo "size is: "
2012-12-27 16:55:13 +00:00
@$(CONFIG_SHELL) ${TOPDIR}/scripts/size $(TARGET)
2008-12-04 03:34:55 +00:00
@echo "==============================="
##############################################################################
# generic fluff
include defaults.mk
#include $(TOPDIR)/rules.mk
##############################################################################
# generate SUBDIRS variable
#
.subdirs: autoconf.h
@ echo "checking in which subdirs to build"
@ $(RM) -f $@
@ echo "SUBDIRS += animations" >> $@
@ echo "SUBDIRS += animations/bitmapscroller" >> $@
@ echo "SUBDIRS += smallani" >> $@
@ (for subdir in `grep -e "^#define .*_SUPPORT" autoconf.h \
| sed -e "s/^#define //" -e "s/_SUPPORT.*//" \
| tr "[A-Z]\\n" "[a-z] " `; do \
test -d $$subdir && echo "SUBDIRS += $$subdir" ; \
done) | sort -u >> $@
ifneq ($(no_deps),t)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),mrproper)
ifneq ($(MAKECMDGOALS),menuconfig)
2008-12-04 03:34:55 +00:00
include $(TOPDIR)/.subdirs
include $(TOPDIR)/.config
include $(TOPDIR)/games/games.mk
endif # MAKECMDGOALS!=menuconfig
endif # MAKECMDGOALS!=mrproper
endif # MAKECMDGOALS!=clean
endif # no_deps!=t
##############################################################################
2008-12-04 03:34:55 +00:00
SUBDIRS_AVR = borg_hw
SUBDIRS_AVR += $(SUBDIRS)
2008-12-03 13:22:20 +00:00
.PHONY: compile-subdirs_avr
compile-subdirs_avr:
2012-12-27 16:55:13 +00:00
@ for dir in $(SUBDIRS_AVR); do $(MAKE) -C $$dir objects_avr || exit 5; done
.PHONY: compile-$(TARGET)
2008-12-03 13:22:20 +00:00
compile-$(TARGET): compile-subdirs_avr $(TARGET).hex $(TARGET).bin $(TARGET).lst
2011-05-12 20:16:14 +00:00
2008-12-04 03:34:55 +00:00
OBJECTS += $(patsubst %.c,./obj_avr/%.o,${SRC})
SUBDIROBJECTS = $(foreach subdir,$(SUBDIRS_AVR),$(foreach object,$(shell cat $(subdir)/obj_avr/.objects 2>/dev/null),$(subdir)/$(object)))
$(TARGET): $(OBJECTS) $(SUBDIROBJECTS)
$(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(SUBDIROBJECTS) $(LIBS)
##############################################################################
2008-12-03 13:22:20 +00:00
#generic rules for AVR-Build
./obj_avr/%.o: %.c
@ if [ ! -d obj_avr ]; then mkdir obj_avr ; fi
@ echo "compiling $<"
@ $(CC) -o $@ $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -c $<
%.hex: %
$(OBJCOPY) -O ihex -R .eeprom $< $@
%.bin: %
$(OBJCOPY) -O binary -R .eeprom $< $@
%.eep.hex: %
$(OBJCOPY) --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex -j .eeprom $< $@
%.lst: %
$(OBJDUMP) -h -S $< > $@
%-size: %.hex
$(SIZE) $<
2008-12-03 13:22:20 +00:00
##############################################################################
#Rules for simulator build
2008-12-04 03:34:55 +00:00
SUBDIRS_SIM = simulator
SUBDIRS_SIM += $(SUBDIRS)
2008-12-03 13:22:20 +00:00
.PHONY: compile-subdirs_sim
compile-subdirs_sim:
2012-12-27 16:55:13 +00:00
@ for dir in $(SUBDIRS_SIM); do $(MAKE) -C $$dir objects_sim || exit 5; done
@ $(MAKE) -C ./simulator/ objects_sim || exit 5;
2008-12-03 13:22:20 +00:00
simulator: autoconf.h .config .subdirs compile-subdirs_sim $(TARGET_SIM)
SUBDIROBJECTS_SIM = $(foreach subdir,$(SUBDIRS_SIM),$(foreach object,$(shell cat $(subdir)/obj_sim/.objects 2>/dev/null),$(subdir)/$(object)))
2008-12-04 03:34:55 +00:00
OBJECTS_SIM = $(patsubst %.c,obj_sim/%.o,${SRC_SIM})
2008-12-03 13:22:20 +00:00
2008-12-04 03:34:55 +00:00
$(TARGET_SIM): $(OBJECTS_SIM) $(SUBDIROBJECTS_SIM)
$(HOSTCC) $(LDFLAGS_SIM) -o $@ $(OBJECTS_SIM) $(SUBDIROBJECTS_SIM) $(LIBS_SIM)
2008-12-03 13:22:20 +00:00
2008-12-04 03:34:55 +00:00
./obj_sim/%.o: %.c
@ if [ ! -d obj_sim ]; then mkdir obj_sim ; fi
@ echo "compiling $<"
@ $(HOSTCC) -o $@ $(CFLAGS_SIM) -c $<
##############################################################################
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
2013-01-06 00:25:19 +00:00
else if [ -x $$(which bash) ]; then echo $$(which bash); \
else echo sh; fi ; fi)
menuconfig:
2012-12-27 16:55:13 +00:00
@echo $(CONFIG_SHELL)
$(MAKE) -C scripts/lxdialog all
$(CONFIG_SHELL) scripts/Menuconfig config.in
test -e .config
@echo ""
@echo "Next, you can: "
@echo " * 'make' to compile your borgware"
test:
@echo $(CONFIG_SHELL)
@echo
@echo "========== Testing borg-16 ========== "
$(MAKE) -C scripts/lxdialog all
$(CONFIG_SHELL) scripts/Menuconfig config.in profiles/borg-16
$(MAKE)
$(MAKE) clean
@echo
@echo "========== Testing borg-ls ========== "
$(MAKE) -C scripts/lxdialog all
$(CONFIG_SHELL) scripts/Menuconfig config.in profiles/borg-ls
$(MAKE)
$(MAKE) clean
#%/menuconfig:
# $(SH) "$(@D)/configure"
# @$(MAKE) what-now-msg
##############################################################################
clean:
$(MAKE) -f rules.mk no_deps=t clean-common
$(RM) $(TARGET) $(TARGET).bin $(TARGET).hex $(TARGET).lst .subdirs
for subdir in `find . -type d` ; do \
test "x$$subdir" != "x." \
&& test -e $$subdir/Makefile \
2012-12-27 16:55:13 +00:00
&& $(MAKE) no_deps=t -C $$subdir clean ; done ; true
mrproper:
$(MAKE) clean
$(RM) -f autoconf.h .config config.mk .menuconfig.log .config.old
sflash: $(TARGET).hex
2009-01-01 17:06:38 +00:00
# $(LAUNCH_BOOTLOADER) $(SERIAL) 115200
avrdude -p m32 -b 115200 -u -c avr109 -P $(SERIAL) -U f:w:$< -F
echo X > $(SERIAL)
2009-02-18 22:26:46 +00:00
uflash: $(TARGET).hex
avrdude -c usbasp -p atmega32 -V -U f:w:$< -F
2009-02-18 22:26:46 +00:00
.PHONY: clean mrproper sflash uflash
##############################################################################
# configure ethersex
#
show-config: autoconf.h
@echo
@echo "These modules are currently enabled: "
@echo "======================================"
@grep -e "^#define .*_SUPPORT" autoconf.h | sed -e "s/^#define / * /" -e "s/_SUPPORT.*//"
.PHONY: show-config
2011-10-28 20:20:55 +00:00
autoconf.h .config:
@echo make\'s goal: $(MAKECMDGOALS)
ifneq ($(MAKECMDGOALS),menuconfig)
# make sure menuconfig isn't called twice, on `make menuconfig'
#test -s autoconf.h -a -s .config || $(MAKE) no_deps=t menuconfig
# test the target file, test fails if it doesn't exist
# and will keep make from looping menuconfig.
#test -s autoconf.h -a -s .config
touch autoconf.h .config
endif
include depend.mk