#
# $RCSfile: Makefile,v $  $Revision: 1.38 $  $Name:  $
# $Id: Makefile,v 1.38 2007/08/07 01:02:43 bpaauwe Exp $
# $Author: bpaauwe $
# $Date: 2007/08/07 01:02:43 $
# ----------------------------------------------------------------------------
#
#  Copyright (c) Bob Paauwe (2006)
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by the Free
#  Software Foundation; either version 2 of the License, or (at your option)
#  any later version.
#
#  This program 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 General Public License for
#  more details.
#
#  You should have received a copy of the GNU General Public License along
#  with this program; if not, write to the Free Software Foundation, Inc.,
#  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ----------------------------------------------------------------------------


# files to include in the tarball
GUISRC = ilink/devices.h ilink/globals.h ilink/ilink_signals.h \
		 ilink/ilink.c ilink/ilink.h ilink/ilink_signals.c \
		 ilink/Makefile ilink/scenes.c ilink/scenes.h ilink/detach.c \
		 ilink/link.c ilink/device_discover.c ilink/device_discover.h \
		 ilink/keypad_cfg.c ilink/keypad_cfg.h \
		 ilink/timer_edit.c ilink/timers.h ilink/timer_edit.h \
		 ilink/copy_scene.c ilink/copy_scene.h \
		 ilink/progress_bar.c ilink/progress_bar.h \
		 ilink/controlinc.c ilink/controlinc.h \
		 ilink/device_control.c ilink/device_control.h \
		 ilink/scene_verify.c ilink/scene_verify.h \
		 ilink/timer_funcs.c ilink/stubs.h \
		 ilink/spyder.c ilink/file_io.c ilink/device.h \
         ilink/group_mock.c ilink/file_cvt.c

LIBSRC = ilink/libilib/*.c ilink/libilib/*.h ilink/libilib/Makefile \
		 ilink/libilib/README

UTLSRC = ilink/utilities/*.c ilink/utilities/Makefile

IPLC = ilink/iplc/iplc.c ilink/iplc/README ilink/iplc/Makefile \
	   ilink/iplc/iplc.c.orig

PKG    = ilink/ChangeLog ilink/COPYING ilink/ilink-2.glade ilink/INSTALL \
	     ilink/NEWS ilink/README ilink/TODO ilink/kpl.jpg \
		 ilink/sample_scene.inf \
		 ilink/sample_device_info.txt \
		 ilink/group_mock.glade \
		 $(GUISRC) $(LIBSRC) $(UTLSRC) $(IPLC)


# build related stuff
SRC = ilink.c ilink_signals.c scenes.c idrv.c insteon_msg.c device_discover.c \
	  keypad_cfg.c timer_edit.c copy_scene.c progress_bar.c controlinc.c \
	  device_control.c scene_verify.c util.c

# Common object modules that use kernel PLC driver
COBJ =  scenes.o

# Ojbect modules required by GUI program
OBJ =  ilink_signals.o device_discover.o keypad_cfg.o timer_edit.o \
	   copy_scene.o progress_bar.o controlinc.o device_control.o \
	   scene_verify.o timer_funcs.o

CFLAGS = -g -Wall -I/usr/local/include `pkg-config --cflags libglade-2.0`

#
##  Setting the environment variable INCLUDE_LIBHHID will build with
##  libhid support.
#

USBLIBS = libilib/libilib.a -lusb

ifeq ($(INCLUDE_LIBHID), 1)
USBLIBS += -lhid
export INCLUDE_LIBHID
endif

LIBS = -Wl,--export-dynamic `pkg-config --libs libglade-2.0` $(USBLIBS)


all: libilib utilities ilink link

libilib:
	(cd libilib; make)

libilib/libilib.a: 
	(cd libilib; make)

ilink: ilink.c ilink.h $(OBJ) $(COBJ) libilib/libilib.a
	$(CC) $(CFLAGS) -o ilink ilink.c $(OBJ) $(COBJ) $(LIBS)

group_mock: group_mock.c 
	$(CC) $(CFLAGS) -o group_mock group_mock.c $(LIBS)

ilink-static: ilink.c ilink.h $(OBJ) $(COBJ) libilib/libilib.a
	$(CC) -static $(CFLAGS) -o ilink ilink.c $(OBJ) $(COBJ) $(LIBS)

detach: detach.c
	$(CC) -o detach detach.c -lusb

link: link.c $(COBJ) libilib
	$(CC) -g -DCOMMAND_LINE -o link link.c $(COBJ) $(USBLIBS)

spyder: spyder.c file_io.o device.h libilib
	$(CC) -g -DCOMMAND_LINE -o spyder spyder.c file_io.o  $(USBLIBS)

file_cvt: file_cvt.c file_io.o device.h libilib
	$(CC) -g -DCOMMAND_LINE -o file_cvt file_cvt.c file_io.o  $(USBLIBS)

file_io.o: device.h

utilities:
	(cd utilities; make)

iplc::
	(cd iplc; make)

load_iplc: iplc/iplc.ko
	-insmod iplc/iplc.ko

unload_iplc: iplc/iplc.ko
	-rmmod iplc

.c.o :
	$(CC) $(DEBUG) $(CFLAGS) $(LIBUSB) -c $<

clean:
	(cd utilities; make clean)
	(cd libilib; make clean)
	-rm ilink *.o

tarball: 
	-(cd ..; tar -cvzf ilink/ilink.tgz $(PKG))
