# Copyright 2002 Phil Karn, KA9Q
# May be used under the terms of the GNU General Public License (GPL)
# @configure_input@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix=@exec_prefix@
VPATH = @srcdir@
CC=@CC@

CFLAGS=@CFLAGS@ @ARCH_OPTION@ -Wall

LIB=	encode_rs_char.o encode_rs_int.o encode_rs_8.o \
	decode_rs_char.o decode_rs_int.o decode_rs_8.o \
	init_rs_char.o init_rs_int.o ccsds_tab.o \
	encode_rs_ccsds.o decode_rs_ccsds.o ccsds_tal.o

all: librs.a librs.so.@SO_VERSION@

test: rstest
	./rstest

rstest: rstest.o exercise_int.o exercise_char.o exercise_8.o exercise_ccsds.o \
	librs.a
	gcc -g -o $@ $^

install: all
	install -D -m 644 -p librs.a librs.so.@SO_VERSION@ @libdir@
	(cd @libdir@;ln -f -s librs.so.@SO_VERSION@ librs.so)
	ldconfig
	install -m 644 -p rs.h @includedir@
	install -m 644 rs.3 @mandir@/man3

librs.a: $(LIB)
	ar rv $@ $^

librs.so.@SO_VERSION@: librs.a
	gcc -shared -Xlinker -soname=librs.so.@SO_NAME@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive -lc

encode_rs_char.o: encode_rs.c
	gcc $(CFLAGS) -c -o $@ $^

encode_rs_int.o: encode_rs.c
	gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^

encode_rs_8.o: encode_rs.c
	gcc -DFIXED=1 $(CFLAGS) -c -o $@ $^

decode_rs_char.o: decode_rs.c
	gcc $(CFLAGS) -c -o $@ $^

decode_rs_int.o: decode_rs.c
	gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^

decode_rs_8.o: decode_rs.c
	gcc -DFIXED=1 $(CFLAGS) -c -o $@ $^

init_rs_char.o: init_rs.c
	gcc $(CFLAGS) -c -o $@ $^

init_rs_int.o: init_rs.c
	gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^

ccsds_tab.o: ccsds_tab.c

ccsds_tab.c: gen_ccsds
	./gen_ccsds > ccsds_tab.c

gen_ccsds: gen_ccsds.o init_rs_char.o
	gcc -o $@ $^

gen_ccsds.o: gen_ccsds.c
	gcc  $(CFLAGS) -c -o $@ $^

ccsds_tal.o: ccsds_tal.c

ccsds_tal.c: gen_ccsds_tal
	./gen_ccsds_tal > ccsds_tal.c

exercise_char.o: exercise.c
	gcc $(CFLAGS) -c -o $@ $^

exercise_int.o: exercise.c
	gcc -DBIGSYM=1 $(CFLAGS) -c -o $@ $^

exercise_8.o: exercise.c
	gcc -DFIXED=1 $(CFLAGS) -c -o $@ $^

exercise_ccsds.o: exercise.c
	gcc -DCCSDS=1 $(CFLAGS) -c -o $@ $^


clean:
	rm -f *.o *.a ccsds_tab.c ccsds_tal.c gen_ccsds gen_ccsds_tal \
	rstest librs.so.@SO_VERSION@

distclean: clean
	rm -f config.log config.cache config.status config.h makefile