#! gmake

#
# Copyright (C) 2006 Laurent Bessard
# 
# This file is part of canfestival, a library implementing the canopen
# stack
# 
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# 
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
# 
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# 

#----------------------------------------------
# add this for memory debug
#----------------------------------------------
#LDFLAGS += -Wl,--wrap,malloc,--wrap,free,--wrap,calloc,--wrap,realloc

LDLIBS += -lpthread $(DB_LIBS)

#----------------------------------------------
# force link error on poor-mans-debug printf
#----------------------------------------------
#LDFLAGS += -Wl,--wrap,printf,--wrap,puts



SRC_DRIVER = $(wildcard ../drivers/$(CAN_DRIVER)/*.c ../drivers/$(TIMERS_DRIVER)/*.c ../drivers/$(CF_TARGET)/*.c)
OBJ_DRIVER = $(addsuffix .o,$(basename $(SRC_DRIVER)))
OBJS = objacces.o lifegrd.o sdo.o sdoproc.o\
	    pdo.o sync.o nmtSlave.o nmtMaster.o states.o timerqueue.o dcf.o emcy.o raw.o $(OBJ_DRIVER)

#CFLAGS += -DDEBUG_WAR_CONSOLE_ON -DDEBUG_ERR_CONSOLE_ON

all: canfestival

canfestival: ../../libcanfestival.a

../../libcanfestival.a: $(OBJS) 
	rm -f $@
	$(AR) q $@ $^
	$(RANLIB) $@

install: ../../libcanfestival.a
	mkdir -p $(PREFIX)/
	mkdir -p $(PREFIX)/canfestival
	cp ../../libcanfestival.a $(PREFIX)
	cp ../include/*.h $(PREFIX)/canfestival

uninstall:
	rm -f $(PREFIX)/libcanfestival.a
	rm -rf $(PREFIX)/canfestival/*

clean:
	rm -f $(OBJS) ../../libcanfestival.a
	rm -f *.d *.cmd *.lst

mrproper: clean

%.o : %.c Makefile %.d
	@echo "compile $(<F) because $(word 1,$(?F))"
	@echo "CC $<"
	@echo "$(CC) $(CFLAGS) $(CAFLAGS)=$*.lst -c $< -o $@" | sed -e 's/ -/\n\t-/g' >$*.cmd
	$(PROJWD)/bin/check_cmd.pl $*.cmd
	@$(CC) $(CFLAGS) $(CAFLAGS)=$*.lst -c $< -o $@



%.d : %.c Makefile
	@echo "depend  $(<F) because $(word 1,$(?F))"
	@$(CC) $(CFLAGS) -M -MG -MT "$*.o" $< >$@

ifneq ($(MAKECMDGOALS),clean)
-include $(OBJS:.o=.d)
endif
