# Inventel
# affichage des devices usb

# golinux version

TOPDIR:=$(shell pwd)/../..

include $(TOPDIR)/Rules_GoLinux.make

prefix=
exec_prefix=${prefix}
sysconfdir=${prefix}/etc
sbindir=${exec_prefix}/sbin
#INSTALL=/usr/bin/install -c


LM=usbmgr
UPDATE=update_usbdb
CONF_DIR=${sysconfdir}/usbmgr
CONF_FILE=usbmgr.conf
PRELOAD=preload.conf
BIN_DIR=${sbindir}

#CC=mips-uclibc-gcc
#STRIP=mips-uclibc-strip

## rc file
RC_INIT_DIR=${sysconfdir}/rc.d/init.d
REDHAT_FILE_CHECK=$(RC_INIT_DIR)/functions
SUSE_RC_DIR=${sysconfdir}/init.d
SUSE_FILE_CHECK=${sysconfdir}/rc.config
SCRIPT_DIR=scripts
RC_FILE=rcscript
SUSE_RC_FILE=rcusbmgr
NETWORK_SCRIPT=network
SCRIPTS=$(NETWORK_SCRIPT)

## install
FILE_MODE=0444
BIN_MODE=0555
SCRIPT_MODE=0755
INSTALL_DIR=$(INSTALL) -d
INSTALL_FILE=$(INSTALL) -m $(FILE_MODE)
INSTALL_BIN=$(INSTALL) -m $(BIN_MODE)
INSTALL_SCRIPT=$(INSTALL) -m $(SCRIPT_MODE)

BASE_DIR=.
INC_DIR=$(BASE_DIR)/inc
MAJOR_VERSION=0
MINOR_VERSION=4
PATCH_LEVEL=8
VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
SUB_DIR=tools

DEFS=-DCONF_DIR=\"$(CONF_DIR)\" -DCONF_FILE=\"$(CONF_FILE)\" -DPRELOAD=\"$(PRELOAD)\" -DBIN_DIR=\"$(BIN_DIR)\" -DVERSION=\"$(VERSION)\" -DNETWORK_SCRIPT=\"$(NETWORK_SCRIPT)\" -DWAIT_FLUSH_PROC
DEBUG=-DDEBUG
#DEBUG=-DDEBUG -DDEBUG_ALLOC
#DEBUG=-DDEBUG -DDEVFILE=\"/usr/src/usbmgr/usbmgr/devices\"
INC=-I $(INC_DIR)
OPT=-O2 -Wall
ifdef DEBUG
OPT=-g
endif

########################################## Don't modify 

CFLAGS=$(DEFS) $(OPT) $(INC) $(DEBUG)

USBMGR_SRC=node.c loader.c device.c parse_device.c usbmgr_msg.c module.c beep.c
UPDATE_SRC=node.c parse_config.c config.c modlink.c misc.c module.c
ifdef DEBUG
USBMGR_SRC := debug.c $(USBMGR_SRC)
UPDATE_SRC := debug.c $(UPDATE_SRC)
endif
USBMGR_OBJ=$(USBMGR_SRC:.c=.o)
UPDATE_OBJ=$(UPDATE_SRC:.c=.o)

all: $(LM) $(UPDATE)
	@for d in $(SUB_DIR);\
	do \
		cd $$d;make VERSION=${VERSION};cd ..;\
	done

$(LM): main.o $(USBMGR_OBJ)
	$(CC) -o $@ main.o $(USBMGR_OBJ)
	$(STRIP) $(LM)
$(UPDATE): $(UPDATE).o $(UPDATE_OBJ)
	$(CC) -o $@ $(UPDATE).o $(UPDATE_OBJ)
	$(STRIP) $(UPDATE)
clobber: clean
	rm -f config.cache config.log config.status config.h Makefile 
	@for d in $(SUB_DIR); \
	do \
		cd $$d;make clobber;cd ..;\
	done

clean_misc:
	rm -f config.h config.cache config.log config.status Makefile
	@for d in $(SUB_DIR); \
	do \
		cd $$d;make clean_misc;cd ..;\
	done

clean:
	rm -f main.o update_usbdb.o  $(USBMGR_OBJ) $(UPDATE_OBJ) debug.o $(LM) $(UPDATE)
	@for d in $(SUB_DIR); \
	do \
		cd $$d;make clean;cd ..;\
	done

install:
	$(INSTALL_DIR) $(BIN_DIR)
	$(INSTALL_DIR) $(CONF_DIR)
	@if [ -f $(CONF_DIR)/$(CONF_FILE) ];then \
		mv $(CONF_DIR)/$(CONF_FILE) $(CONF_DIR)/$(CONF_FILE).old; \
	fi
	$(INSTALL_FILE) config/$(CONF_FILE) $(CONF_DIR)
	$(INSTALL_BIN) $(LM) $(BIN_DIR)
	$(INSTALL_BIN) $(UPDATE) $(BIN_DIR)
	@if [ -e $(SUSE_FILE_CHECK) ];then \
		if [ -f $(SUSE_RC_DIR)/usbmgr ];then \
			mv $(SUSE_RC_DIR)/usbmgr $(SUSE_RC_DIR)/usbmgr.old; \
		fi;\
		$(INSTALL_SCRIPT) $(SCRIPT_DIR)/$(SUSE_RC_FILE) $(SUSE_RC_DIR)/usbmgr;\
		ln -sf ../$(SUSE_RC_DIR)/usbmgr $(BIN_DIR)/rcusbmgr; \
	elif [ -d $(RC_INIT_DIR) ];then \
		if [ -f $(RC_INIT_DIR)/usbmgr ];then \
			mv $(RC_INIT_DIR)/usbmgr $(RC_INIT_DIR)/usbmgr.old; \
		fi;\
		$(INSTALL_SCRIPT) $(SCRIPT_DIR)/$(RC_FILE) $(RC_INIT_DIR)/usbmgr;\
		ln -sf ../init.d/usbmgr $(RC_INIT_DIR)/../rc5.d/S46usbmgr; \
	else \
		echo '##############################'; \
		echo '# You should setup RC script #'; \
		echo '#  for usbmgr by yourself.   #'; \
		echo '##############################'; \
	fi
	@for f in $(SCRIPTS);\
	do \
		if [ -f $(CONF_DIR)/$$f ];then \
			mv $(CONF_DIR)/$$f $(CONF_DIR)/$$f.old;\
		fi;\
		$(INSTALL_SCRIPT) $(SCRIPT_DIR)/$$f $(CONF_DIR);\
	done
	@for d in $(SUB_DIR);\
	do \
		cd $$d;make install;cd ..;\
	done
	@echo "###############################################"
	@echo "If you use USB mice on X, Run \"make use_mouse\"!"
	@echo "###############################################"

release:
	$(INSTALL) -d $(ROOT_FS_DIR)/usr/bin $(ROOT_FS_DIR)/etc/usbmgr
	$(INSTALL) -m 755 usbmgr $(ROOT_FS_DIR)/usr/bin/usbmgr
	$(INSTALL) -m 755 update_usbdb $(ROOT_FS_DIR)/usr/bin/update_usbdb
	$(INSTALL) -m 644 config/usbmgr_small.conf $(ROOT_FS_DIR)/etc/usbmgr/usbmgr.conf
	$(INSTALL) scripts/storage $(ROOT_FS_DIR)/etc/usbmgr/storage
	$(INSTALL) scripts/dextension $(ROOT_FS_DIR)/etc/usbmgr/dextension
	touch $(ROOT_FS_DIR)/etc/usbmgr/preload.conf

use_mouse:
	@if [ -f $(CONF_DIR)/$(PRELOAD) ];then \
		mv $(CONF_DIR)/$(PRELOAD) $(CONF_DIR)/$(PRELOAD).old; \
	fi
	$(INSTALL_FILE) config/$(PRELOAD) $(CONF_DIR)


