etisserant@0: #! gmake etisserant@0: etisserant@0: # etisserant@0: # Copyright (C) 2006 Laurent Bessard edouard@629: # etisserant@0: # This file is part of canfestival, a library implementing the canopen etisserant@0: # stack edouard@629: # etisserant@0: # This library is free software; you can redistribute it and/or etisserant@0: # modify it under the terms of the GNU Lesser General Public etisserant@0: # License as published by the Free Software Foundation; either etisserant@0: # version 2.1 of the License, or (at your option) any later version. edouard@629: # etisserant@0: # This library is distributed in the hope that it will be useful, etisserant@0: # but WITHOUT ANY WARRANTY; without even the implied warranty of etisserant@0: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU etisserant@0: # Lesser General Public License for more details. edouard@629: # etisserant@0: # You should have received a copy of the GNU Lesser General Public etisserant@0: # License along with this library; if not, write to the Free Software etisserant@0: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA edouard@629: # etisserant@0: edouard@619: ifneq ($(KERNELRELEASE),) etisserant@391: # Kbuild part of Makefile etisserant@391: obj-m := canfestival.o etisserant@391: canfestival-objs := $(OBJS) etisserant@391: edouard@619: else etisserant@391: # Normal Makefile etisserant@0: CC = SUB_CC etisserant@0: PROG_CFLAGS = SUB_PROG_CFLAGS etisserant@0: OS_NAME = SUB_OS_NAME etisserant@0: ARCH_NAME = SUB_ARCH_NAME etisserant@0: PREFIX = SUB_PREFIX etisserant@0: BINUTILS_PREFIX = SUB_BINUTILS_PREFIX etisserant@0: TARGET = SUB_TARGET etisserant@0: CAN_DRIVER = SUB_CAN_DRIVER etisserant@0: TIMERS_DRIVER = SUB_TIMERS_DRIVER etisserant@343: ENABLE_LSS = SUB_ENABLE_LSS etisserant@0: etisserant@191: INCLUDES = -I../include -I../include/$(TARGET) -I../include/$(TIMERS_DRIVER) -I../drivers/$(TARGET) etisserant@0: etisserant@0: OBJS = $(TARGET)_objacces.o $(TARGET)_lifegrd.o $(TARGET)_sdo.o\ luis@284: $(TARGET)_pdo.o $(TARGET)_sync.o $(TARGET)_nmtSlave.o $(TARGET)_nmtMaster.o $(TARGET)_states.o $(TARGET)_timer.o $(TARGET)_dcf.o $(TARGET)_emcy.o etisserant@0: etisserant@343: etisserant@343: ifeq ($(ENABLE_LSS),1) etisserant@343: OBJS += $(TARGET)_lss.o etisserant@343: endif etisserant@343: etisserant@0: # # # # Target specific paramters # # # # etisserant@0: etisserant@0: ifeq ($(TARGET),hcs12) etisserant@0: OPT_CFLAGS = -Os etisserant@0: PROGDEFINES = -mnoshort -Wall -Wmissing-prototypes -fno-strict-aliasing etisserant@0: endif etisserant@0: etisserant@24: ifeq ($(TARGET),unix) etisserant@0: OPT_CFLAGS = -O2 etisserant@0: endif etisserant@0: edouard@629: # # # # Options # # # # etisserant@0: etisserant@391: all: canfestival etisserant@391: etisserant@391: ifeq ($(TIMERS_DRIVER), timers_kernel) edouard@629: USE_KERNEL_TIMER = true edouard@629: endif edouard@629: ifeq ($(TIMERS_DRIVER), timers_kernel_xeno) edouard@629: USE_KERNEL_TIMER = true edouard@629: endif edouard@629: edouard@629: ifeq ($(USE_KERNEL_TIMER), true) etisserant@391: OBJS := $(shell echo $(OBJS) | sed "s:$(TARGET)_::g") etisserant@391: OBJS += symbols.o etisserant@391: OBJS += ../drivers/unix/libcanfestival_$(TARGET).o etisserant@391: EXTRA_CFLAGS := $(shell echo $(INCLUDES) | sed "s:-I:-I$(src)/:g") etisserant@391: EXTRA_CFLAGS += $(PROG_CFLAGS) etisserant@391: KERNELDIR := SUB_KERNELDIR etisserant@391: export OBJS etisserant@391: export EXTRA_CFLAGS etisserant@391: etisserant@391: canfestival: etisserant@391: @echo " " etisserant@391: @echo "*********************************************" edouard@619: @echo "**Building [canfestival.o]" etisserant@391: @echo "*********************************************" etisserant@391: $(MAKE) -C $(KERNELDIR) M=$(shell pwd) modules etisserant@391: etisserant@391: clean: etisserant@391: $(MAKE) -C $(KERNELDIR) M=$(shell pwd) clean etisserant@391: rm -f Module.symvers etisserant@391: etisserant@391: install: etisserant@391: $(MAKE) -C $(KERNELDIR) M=$(shell pwd) modules_install s@790: mkdir -p $(DESTDIR)$(PREFIX)/include/canfestival s@790: cp ../include/*.h $(DESTDIR)$(PREFIX)/include/canfestival etisserant@391: etisserant@391: uninstall: s@790: rm -rf $(DESTDIR)$(PREFIX)/include/canfestival etisserant@391: etisserant@391: else etisserant@0: CFLAGS = SUB_OPT_CFLAGS etisserant@0: edouard@619: ifeq ($(TARGET),none) edouard@619: canfestival: libcanfestival.o edouard@619: else etisserant@0: canfestival: libcanfestival.a edouard@619: endif etisserant@0: etisserant@0: libcanfestival.a: $(OBJS) etisserant@0: @echo " " etisserant@0: @echo "*********************************************" etisserant@0: @echo "**Building [libcanfestival.a]" etisserant@0: @echo "*********************************************" etisserant@0: $(BINUTILS_PREFIX)ar rc $@ $(OBJS) etisserant@0: $(BINUTILS_PREFIX)ranlib $@ etisserant@0: edouard@619: libcanfestival.o: $(OBJS) edouard@619: @echo " " edouard@619: @echo "*********************************************" edouard@619: @echo "**Prelink [libcanfestival.o]" edouard@619: @echo "*********************************************" edouard@619: $(BINUTILS_PREFIX)ld -r $(OBJS) -o $@ edouard@619: Christian@658: $(TARGET)_%.o: %.c etisserant@0: @echo " " etisserant@0: @echo "*********************************************" etisserant@0: @echo "**Compiling $< -> $@" etisserant@0: @echo "*********************************************" etisserant@0: $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< etisserant@0: etisserant@0: install: libcanfestival.a s@790: mkdir -p $(DESTDIR)$(PREFIX)/lib/ s@790: mkdir -p $(DESTDIR)$(PREFIX)/include/canfestival s@790: cp libcanfestival.a $(DESTDIR)$(PREFIX)/lib/ s@790: cp ../include/*.h $(DESTDIR)$(PREFIX)/include/canfestival etisserant@0: etisserant@0: uninstall: s@790: rm -f $(DESTDIR)$(PREFIX)/lib/libcanfestival.a s@790: rm -rf $(DESTDIR)$(PREFIX)/include/canfestival etisserant@0: etisserant@0: clean: edouard@619: rm -f $(OBJS) libcanfestival.a libcanfestival.o etisserant@0: etisserant@391: endif etisserant@0: mrproper: clean etisserant@0: edouard@619: endif