# API - HPDI32 - Linux - gcc
# $URL: http://subversion:8080/svn/gsc/trunk/drivers/LINUX/HPDI32/HPDI32_Linux_sdk_6.x.x_GSC_DN/api/makefile $
# $Rev: 23674 $
# $Date: 2013-10-31 16:25:34 -0500 (Thu, 31 Oct 2013) $
# Makefile for the HPDI32 API Library.

MAKEFILE_API_DEV_VERSION		= 8
MAKEFILE_API_DEV_OS_VERSION		= 1
MAKEFILE_API_GSC_VERSION		= 7
MAKEFILE_API_GSC_OS_VERSION		= 1
MAKEFILE_API_DEV_API_VERSION	= 4

BASENAME	= hpdi32

OBJ_FILES	=					\
			dev_access.o		\
			dev_cable.o			\
			dev_config.o		\
			dev_fifo.o			\
			dev_gpio.o			\
			dev_io.o			\
			dev_io_dma.o		\
			dev_io_pio.o		\
			dev_irq.o			\
			dev_misc.o			\
			dev_reg.o			\
			dev_rx.o			\
			dev_status.o		\
			dev_tx.o			\
			dev_version.o		\
								\
			gsc_access.o		\
			gsc_bar.o			\
			gsc_dma.o			\
			gsc_event.o			\
			gsc_io.o			\
			gsc_io_dma.o		\
			gsc_io_pio.o		\
			gsc_irq.o			\
			gsc_mem.o			\
			gsc_reg.o			\
			gsc_sem.o			\
			gsc_sleep.o			\
			gsc_status.o		\
			gsc_version.o		\
								\
			gsc_os_device.o		\
			gsc_os_error.o		\
			gsc_os_event.o		\
			gsc_os_init.o		\
			gsc_os_sem.o		\
			gsc_os_sleep.o		\
			gsc_os_thread.o		\
			gsc_os_time.o		\
								\
			gsc_os_drv.o

CC			= gcc
CC_FLAGS	= -c -O2 -fPIC -Wall -pthread
CC_FLAGS	+= -DMAKEFILE_API_DEV_VERSION=${MAKEFILE_API_DEV_VERSION}
CC_FLAGS	+= -DMAKEFILE_API_DEV_OS_VERSION=${MAKEFILE_API_DEV_OS_VERSION}
CC_FLAGS	+= -DMAKEFILE_API_GSC_VERSION=${MAKEFILE_API_GSC_VERSION}
CC_FLAGS	+= -DMAKEFILE_API_GSC_OS_VERSION=${MAKEFILE_API_GSC_OS_VERSION}
CC_FLAGS	+= -DMAKEFILE_API_DEV_API_VERSION=${MAKEFILE_API_DEV_API_VERSION}
CC_FLAGS	+= -DTRUE=1
CC_FLAGS	+= -DFALSE=0
CONF		= /etc/ld.so.conf
DEP_FILE	= makefile.dep
LIB_DIR		= /usr/local/lib
LIB_VER		= ${MAKEFILE_API_DEV_VERSION}.${MAKEFILE_API_DEV_OS_VERSION}.${MAKEFILE_API_GSC_VERSION}.${MAKEFILE_API_GSC_OS_VERSION}.${MAKEFILE_API_DEV_API_VERSION}

NAME_LINK	= lib${BASENAME}_api.so
NAME_REAL	= ${NAME_LINK}.${LIB_VER}
NAME_SO		= ${NAME_LINK}.${MAKEFILE_API_DEV_VERSION}
TARGET		= ${NAME_REAL}



.c.o:
	@echo == Compiling: $<
	@-chmod +rw ${DEP_FILE}
	@# Get the dependency list for this module.
	@-${CC} -MM ${CC_FLAGS} $< >  .tmp1
	@# Remove trailing white space and backslash, if present.
	@-sed -e "s/[ ]*[\\\\]//g" < .tmp1 > .tmp2
	@# Put everything on seperate lines.
	@-tr [:space:] \\n < .tmp2 > .tmp3
	@# Remove all of the system include files.
	@-grep -v "^[ ]*/" < .tmp3 > .tmp4
	@# Remove all empty lines.
	@-grep [[:alnum:]] < .tmp4 > .tmp5
	@# Put everything on the same line.
	@-tr '\n' '\040' < .tmp5 > .tmp6
	@-echo "" >> .tmp6
	@# Add all the other dependencies to the end of this file.
	@-echo >> ${DEP_FILE}
	@-grep -v "^[ ]*$@" < ${DEP_FILE} >> .tmp6
	@# Remove blank lines from the list.
	@-grep "[[:alnum:]]" < .tmp6 > .tmp7
	@# Sort the list and put it in the dependency file.
	@-sort < .tmp7 > ${DEP_FILE}
	@# Cleanup.
	@rm -f .tmp*
	@# Compile the module.
	@${CC} ${CC_FLAGS} $< -o $@



all: ${TARGET}
	@echo ==== All Done

release: ${TARGET}
	@rm -f *.o
	@echo ==== release Done

clean:
	@echo ==== Cleaning ${TARGET} ...
	@rm -f *.o ${TARGET}
	@echo > ${DEP_FILE}
	@chmod 666 ${DEP_FILE}

${DEP_FILE}:
	@echo ==== Creating: $@
	@echo > ${DEP_FILE}
	@chmod 666 ${DEP_FILE}

${TARGET}: ${OBJ_FILES}
	@echo ==== Linking: $@
	@rm -f ${NAME_LINK}
	@gcc -shared -Wl,-soname,${NAME_SO},-init,my_init,-fini,my_fini -o ${TARGET} ${OBJ_FILES} -lc -lpthread
	@nm ${TARGET} > tmp1.txt
	@sed -e "s/^[0-9a-f]*[ ]*[a-zA-Z][ ]*//" < tmp1.txt > tmp2.txt
	@grep "^${BASENAME}" < tmp2.txt > tmp3.txt
	@echo _init >> tmp3.txt
	@echo _fini >> tmp3.txt
	@-sed -e "s/^/-K /g" < tmp3.txt > tmp4.txt
	@tr "\n" " " < tmp4.txt > tmp5.txt
	@strip -s `cat tmp5.txt` ${TARGET}
	@rm -f tmp*.txt

install:
	@echo ==== Creating the install script ...
	@echo "#!/bin/sh"															> install
	@echo ""																	>> install
	@echo "LIB_VER=${LIB_VER}"													>> install
	@echo "SUFFIX=.\$${LIB_VER}"												>> install
	@echo ""																	>> install
	@echo "echo Installing ${PRODUCT} API Library"								>> install
	@echo "echo Installing ${NAME_LINK}\$${SUFFIX}"								>> install
	@echo ""																	>> install
	@echo "count() {"															>> install
	@echo "	A=\`grep -w ${LIB_DIR}  ${CONF} | wc -l\`"							>> install
	@echo "	B=\`grep -w ${LIB_DIR}/ ${CONF} | wc -l\`"							>> install
	@echo "	COUNT=\`expr \$${A} + \$${B}\`"										>> install
	@echo "	echo \$${COUNT}"													>> install
	@echo "}"																	>> install
	@echo ""																	>> install
	@echo "if [ \`count\` -le 0 ]"												>> install
	@echo "then"																>> install
	@echo "	echo Adding ${LIB_DIR} to ${CONF} ..."								>> install
	@echo "	echo >> ${CONF}"													>> install
	@echo "	echo ${LIB_DIR} >> ${CONF}"											>> install
	@echo "fi"																	>> install
	@echo ""																	>> install
	@echo "if [ \`count\` -le 0 ]"												>> install
	@echo "then"																>> install
	@echo "	echo ERROR: Unable to modify ${CONF}."								>> install
	@echo "	exit 1"																>> install
	@echo "fi"																	>> install
	@echo ""																	>> install
	@echo "mkdir -p ${LIB_DIR}"													>> install
	@echo "rm -f ${LIB_DIR}/${NAME_LINK}"										>> install
	@echo "rm -f ${LIB_DIR}/${NAME_LINK}\$${SUFFIX}"							>> install
	@echo "rm -f \`echo ${LIB_DIR}/${NAME_LINK}\$${SUFFIX} | cut -d . -f1-3\`"	>> install
	@echo "cp -f ${NAME_LINK}\$${SUFFIX} ${LIB_DIR}/"							>> install
	@echo "ln -s ${NAME_LINK}\$${SUFFIX} ${LIB_DIR}/${NAME_LINK}"				>> install
	@echo "ldconfig"															>> install
	@echo "echo Installation done."												>> install
	@chmod 555 ./install

start:
	@echo ==== Starting ...
	@./install

include ${DEP_FILE}
