#
#  Windfreak Technologies SynthNV Series RF Signal Generator Library
#  Copyright © 2013 D Scott Guthridge <pdx_scooter@yahoo.com>
# 
#  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 3 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, see <http://www.gnu.org/licenses/>.
#
DESTDIR=
NAME=wfsyn
VERSION=0.0.0
INCLUDEDIR=/usr/local/include
LIBDIR=/usr/local/lib
BINDIR=/usr/local/bin
MANDIR=/usr/local/share/man

LDCONFIG=/sbin/ldconfig

CFLAGS=-Wall -fPIC -O -ansi -std=c99 -pedantic -D_POSIX_C_SOURCE=199309L

HDR=	wfsyn.h wfsyn_internal.h wfsyn_am.h

SRC=	wfsyn_am.c wfsyn_detect_power.c wfsyn_error.c wfsyn_io.c \
	wfsyn_load_settings.c wfsyn_open.c wfsyn_printf.c wfsyn_pulse.c \
	wfsyn_readline.c wfsyn_read_registers.c wfsyn_read_version.c \
	wfsyn_set_frequency.c wfsyn_set_options.c wfsyn_set_power.c \
	wfsyn_spline.c wfsyn_sweep.c wfsyn_update.c

TOOLS_SRC= gen_am_map.c

GENSRC=	wfsyn_am_map.c

OBJ=	wfsyn_am_map.o wfsyn_am.o wfsyn_detect_power.o wfsyn_error.o \
	wfsyn_io.o wfsyn_load_settings.o wfsyn_open.o wfsyn_printf.o \
	wfsyn_pulse.o wfsyn_readline.o wfsyn_read_registers.o \
	wfsyn_read_version.o wfsyn_set_frequency.o wfsyn_set_options.o \
	wfsyn_set_power.o wfsyn_spline.o wfsyn_sweep.o wfsyn_update.o

TARSRC= Makefile ${SRC} ${HDR} ${TOOLS_SRC} \
	versions.ldscript libwfsyn.3

all: wfsyn.h libwfsyn.so.${VERSION} libwfsyn.3

libwfsyn.so.${VERSION}: versions.ldscript ${OBJ}
	${CC} -o "$@" ${CFLAGS} -shared \
	    -Wl,-soname,libwfsyn.so.`expr "${VERSION}" : '\([0-9][0-9]*\).*'` \
	    -Wl,--version-script,versions.ldscript ${OBJ}
	rm -f libwfsyn.so
	ln -s libwfsyn.so.${VERSION} libwfsyn.so

wfsyn_am_map.c: gen_am_map
	./gen_am_map > "$@"

gen_am_map: gen_am_map.o
	${CC} -o "$@" ${CFLAGS} gen_am_map.o -lm

libwfsyn.pdf: libwfsyn.3
	pdfroff -man --no-toc-relocation libwfsyn.3 > "$@"

clean:
	rm -f *.o out errs tags core.* ${GENSRC} gen_am_map \
		libwfsyn.so.${VERSION} libwfsyn.so \
		"${NAME}-${VERSION}.tgz" libwfsyn.pdf

depend: ${HDR} ${SRC} ${TOOLS_SRC} ${GENSRC}
	makedepend ${HDR} ${SRC} ${TOOLS_SRC} ${GENSRC}

install: all
	install -d -m 755 ${DESTDIR}${INCLUDEDIR}
	install -c -m 555 wfsyn.h ${DESTDIR}${INCLUDEDIR}
	install -d -m 755 ${DESTDIR}${LIBDIR}
	install -c -m 555 libwfsyn.so.${VERSION} ${DESTDIR}${LIBDIR}
	rm -f ${DESTDIR}${LIBDIR}/libwfsyn.so
	ln -s libwfsyn.so.${VERSION} ${DESTDIR}${LIBDIR}/libwfsyn.so
	install -d -m 755 ${DESTDIR}${MANDIR}/man3
	install -c -m 444 libwfsyn.3 ${DESTDIR}${MANDIR}/man3
	${LDCONFIG}

tags: ${HDR} ${SRC} ${GENSRC} ${TOOLS_SRC}
	ctags ${HDR} ${SRC} ${GENSRC} ${TOOLS_SRC}

tarball: ${TARSRC}
	umask 022
	[ -d ../${NAME}-${VERSION} ] || mkdir ../${NAME}-${VERSION}
	rm -rf ../${NAME}-${VERSION}/libwfsyn
	mkdir ../${NAME}-${VERSION}/libwfsyn
	cp ${TARSRC} ../${NAME}-${VERSION}/libwfsyn
