TOP = ..
SUBDIRS = asn-rrlp asn-supl

include $(TOP)/config.mk

# export CFLAGS to have more consistent flags in sub-makefiles
# as dpkg-buildpackage does export it.
export CFLAGS

CFLAGS += $(CONF_CFLAGS) $(CONF_SUPL_DEBUG)
CFLAGS += -I./asn-rrlp -I./asn-supl

SUPL_ASN1_SOURCE = supl-common.asn supl-end.asn supl-pos.asn supl-response.asn 
SUPL_ASN1_SOURCE += supl-start.asn supl-ulp.asn supl-init.asn supl-posinit.asn
RRLP_ASN1_SOURCE = rrlp-components.asn rrlp-messages.asn
PROGRAM_SOURCE = supl-client.c supl-proxy.c supl-cert.c
SUPL_C_SOURCE = supl.c

DIST = Makefile $(PROGRAM_SOURCE) $(SUPL_C_SOURCE) $(SUPL_ASN1_SOURCE) $(RRLP_ASN1_SOURCE)

all: supl-client supl-proxy supl-cert

supl-client: libsupl.so supl-client.o
	$(CC) -o $@ supl-client.o -L. -lsupl -lssl -lm

supl-proxy: libsupl.so supl-proxy.o
	$(CC) -o $@ supl-proxy.o -L. -lsupl -lssl -lm

supl-cert: supl-cert.o
	$(CC) -o $@ supl-cert.o $(shell pkg-config --libs openssl) -lm

libsupl.so: libsupl.so.1.0
	ln -sf libsupl.so.1 libsupl.so

libsupl.so.1.0: asn-supl/libasnsupl.a asn-rrlp/libasnrrlp.a supl.o
	$(CC) -shared -Wl,-soname,libsupl.so.1 -o $@ supl.o \
           -Wl,--whole-archive ./asn-supl/libasnsupl.a -Wl,--no-whole-archive \
           ./asn-rrlp/libasnrrlp.a -lssl
	ln -sf libsupl.so.1.0 libsupl.so.1

asn-supl/libasnsupl.a:
	$(MAKE) -C asn-supl

asn-rrlp/libasnrrlp.a:
	$(MAKE) -C asn-rrlp

# code generated by asn1c barfs if -fn-s-a not set
supl.o: CFLAGS += -fno-strict-aliasing -fPIC -fvisibility=hidden -DUSE_EXPORT=1
supl.o: supl.h

install: all
	for d in bin lib include ; do mkdir -p $(DEB_PREFIX)$(CONF_PREFIX)/$$d; done
	cp -a libsupl.so* $(DEB_PREFIX)$(CONF_PREFIX)/lib
	cp -a asn-rrlp/libasnrrlp.so* $(DEB_PREFIX)$(CONF_PREFIX)/lib
	cp -a asn-supl/libasnsupl.so* $(DEB_PREFIX)$(CONF_PREFIX)/lib
	cp -a asn-rrlp/libasnrrlp.a $(DEB_PREFIX)$(CONF_PREFIX)/lib
	cp -a asn-supl/libasnsupl.a $(DEB_PREFIX)$(CONF_PREFIX)/lib
	cp -a supl.h $(DEB_PREFIX)$(CONF_PREFIX)/include
	cp supl-client supl-proxy supl-cert $(DEB_PREFIX)$(CONF_PREFIX)/bin

clean:
	@for subdir in $(SUBDIRS) ; do \
	  $(MAKE) -C $$subdir clean ; \
	done
	/bin/rm -f *.o libsupl.so* *~ supl.h.gch *.pem supl-client supl-cert supl-proxy

distfiles:
	echo $(addprefix src/,$(DIST)) >> $(TOP)/distfiles
	@for subdir in $(SUBDIRS) ; do \
	    $(MAKE) -C $$subdir distfiles ; \
	done

.PHONY: clean distfiles install
