# By Pierre Sarrazin <http://sarrazip.com/>
# This file is in the public domain.

PACKAGE = bcontrol
VERSION = 0.1.6

TARGET = coco

LIBSRC_NON_OS9 = \
	getAxisValues.c \
	getButtonStates.c \
	getButtonStates2.c \
	selectAnalogMuxInputs.c \
	compareAxis.c \
	readComparatorMultipleTries.c \
	disableSound.c \
	enableSound.c

LIBSRC_OS9 = \
	OS9RawTerminal.c

LIBSRC = \
	Keyboard.c \
	getAxisValuesAndButtonState.c

ifeq "$(TARGET)" "os9"
LIBSRC += $(LIBSRC_OS9)
else
LIBSRC += $(LIBSRC_NON_OS9)
endif

LIBHEADERS = \
	Keyboard.h \
	Joystick.h \
	Joystick_private.h \
	OS9RawTerminal.h
STATICLIB = lib$(PACKAGE).a

ifeq "$(TARGET)" "coco"
EXEEXT = .bin
endif
ifeq "$(TARGET)" "dragon"
EXEEXT = .bin
endif
ifeq "$(TARGET)" "os9"
EXEEXT =
endif

DEMOSRC = $(PACKAGE).c
DEMOBIN = $(PACKAGE)$(EXEEXT)

DISTFILES = README.md Makefile $(LIBHEADERS) $(LIBSRC) $(DEMOSRC)

TARGET = coco
ORG = #--org=2800
INTERMEDIATE = #--intermediate
NDEBUG = -DNDEBUG
OPTIM = -fomit-frame-pointer
WARNINGS = -Wfor-condition-sizes
WERROR = -Werror
CFLAGS = --$(TARGET) $(WARNINGS) $(WERROR) $(NDEBUG) $(INTERMEDIATE) $(OPTIM)
LDFLAGS = --$(TARGET) $(ORG) $(INTERMEDIATE)

DEMOOBJ = $(DEMOSRC:.c=.o)
LIBOBJ = $(LIBSRC:.c=.o)

CMOC = cmoc
LWAR = lwar
TAR = tar

all: $(DEMOBIN)

$(DEMOBIN): $(DEMOOBJ) $(STATICLIB)
	$(CMOC) -o $(DEMOBIN) $(LDFLAGS) $(DEMOOBJ) -L. -l$(PACKAGE)

$(STATICLIB): $(LIBOBJ)
	$(LWAR) --create $(STATICLIB) $(LIBOBJ)

%.o: %.c
	$(CMOC) -c $(CFLAGS) -o $@ $<

clean:
	rm -f $(DEMOBIN) $(DEMOOBJ) $(STATICLIB) $(LIBOBJ)

.PHONY: dist
dist:
	$(TAR) -czf $(PACKAGE)-$(VERSION).tar.gz --transform 's,^,$(PACKAGE)-$(VERSION)/,' $(DISTFILES)

distcheck: dist
	mkdir ,distcheck
	$(TAR) -C ,distcheck -xzf $(PACKAGE)-$(VERSION).tar.gz
	$(MAKE) -C ,distcheck/$(PACKAGE)-$(VERSION) all
	rm -fr ,distcheck
	@echo "SUCCESS: $(PACKAGE)-$(VERSION).tar.gz ready for distribution"

# Automatic prerequisite generation.
%.d: %.c
	$(CMOC) --deps-only $(CFLAGS) $<

.PHONY: cleandeps
cleandeps:
	rm -f $(DEMOSRC:.c=.d) $(LIBSRC:.c=.d)

include $(DEMOSRC:.c=.d)
include $(LIBSRC:.c=.d)
