# K8055 Makefile
# by Matthew Williams
#
# $Revision: 22 $
# $Date: 2006-01-20 14:10:37 -0500 (Fri, 20 Jan 2006) $

TARGETS=k8055d k8055
K8055D_OBJECTS=k8055d.o ueib.o
K8055D_LIBRARIES=-lusb
K8055_OBJECTS=k8055.o 
ALL_OBJECTS=$(K8055D_OBJECTS) $(K8055_OBJECTS)
DEFINES=
#DEFINES=-DFAKE_INTERFACE
ARCHIVE_FILE=k8055d.tar.bz2
ARCHIVE_CONTENTS=$(wildcard *.cpp *.c *.h Makefile)

CFLAGS +=-O2 -Wall -Werror -g $(DEFINES)
CXXFLAGS +=-O2 -Wall -Werror -g $(DEFINES)

(%) : %
	@echo '  Adding $< to $@'; \
	$(AR) rc $@ $^

% : %.o
	@echo '  Linking $@'; \
	$(CXX) $(LDFLAGS) $(LIBRARIES) $^ -o $@

%.d : %.cpp
	@echo '  Making dependency file for $<'; \
	set -e; rm -f $@; \
	$(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
        rm -f $@.$$$$

%.d : %.c
	@echo '  Making dependency file for $<'; \
	set -e; rm -f $@; \
	$(CC) -MM $(CFLAGS) $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
        rm -f $@.$$$$

%.o : %.c
	@echo '  Compiling $<'; \
	$(CC) -c $(CPPFLAGS) -o $@ $(CFLAGS) $<

%.o : %.cpp
	@echo '  Compiling $<'; \
	$(CXX) -c $(CPPFLAGS) -o $@ $(CXXFLAGS) $<

all: $(TARGETS)

.PHONY : archive
archive : $(ARCHIVE_FILE)

$(ARCHIVE_FILE): $(ARCHIVE_CONTENTS)
	@echo '  Creating source archive $(ARCHIVE_FILE)'; \
	rm -f $(ARCHIVE_FILE); \
	tar cjf $(ARCHIVE_FILE) $(ARCHIVE_CONTENTS)

.PHONY : install
install :
	@echo '  This package does not come with an installer'; \
	echo '  FYI, it creates: $(TARGETS)'

.PHONY : test
test :
	@echo '  This package does not have automated tests'

.PHONY : clean
clean :
	@echo '  Removing all object, library, core, archive and dependency files'; \
	rm -f *.o *.a *.d core.* $(TARGETS) $(ARCHIVE_FILE)

.PHONY : help
help :
	@echo '  Possible targets are all, archive, install, test, clean and help'

ifeq (,$(findstring $(MAKECMDGOALS),clean archive help))
	@echo EQ $(findstring $(MAKECMDGOALS),clean archive help)
  -include $(ALL_OBJECTS:.o=.d)
endif

k8055d: LIBRARIES=$(K8055D_LIBRARIES)
k8055d: $(K8055D_OBJECTS)

k8055: $(K8055_OBJECTS)
