CC=gcc
#LD=/usr/ccs/bin/ld-gnu
LD=ld
LIBS= -lc -lpthread -lpfpro_static
LIBS_SOCKET = -lsocket -lnsl
EXE_LIBS = -lc -lpthread
LIBDIRS =  -L./openssl -L.
INCDIRS =  -I. -I./openssl -I./baseclient -I./util/sigutilmgr -I./util/sigutil -I./util/sigerrorhandler -I./util/sigssl -I./util/sigsocket
CFLAGS  =  -DUNIX -D_REENTRANT -DPTHREADS -fPIC

MAKE = make

SRC_FILES= ./util/sigsocket/sigsocket.c \
	./util/sigssl/sslbase.c \
	./util/sigssl/seed_unix.c

OBJ_FILES= ./util/sigsocket/sigsocket.o \
	./util/sigssl/sslbase.o \
	./util/sigssl/seed_unix.o 
	
DIRS = ./util/sigsocket ./util/sigssl
	
all : util libpfpro_static.a libpfpro.so pfpro

libpfpro_static.a : $(SRC_FILES)
	ar -x openssl/libssl.a
	ar -x openssl/libcrypto.a
	ar -x openssl/libRSAglue.a
#	ar -x /usr/local/SSLC/lib/libsslc.a
	ar -ru libpfpro_static.a $(OBJ_FILES)
	ar -ru libpfpro_static.a *.o
	ranlib libpfpro_static.a
	rm *.o

util : Makefile 
	@for i in $(DIRS) ;\
	do \
	(cd $$i && echo "<<<<<<--- Building all in '$$i' --->>>>>>" && \
	$(MAKE)) || exit 1; \
	done
	
libpfpro.so: $(OBJ_FILES) Makefile
	$(LD) -G -M EXPORTS_SOLARIS -Bsymbolic $(OBJ_FILES) $(LIBDIRS) $(LIBS) $(LIBS_SOCKET) -o libpfpro.so

	#linux red hat 6.1
#	$(LD) -G --retain-symbols-file EXPORTS -Bsymbolic $(OBJ_FILES) $(LIBDIRS) $(LIBS) -o libpfpro.so

        #solaris 2.6 build using gnu linker from binutils 2.10
#	$(LD) -G --retain-symbols-file EXPORTS -Bsymbolic $(OBJ_FILES) $(LIBDIRS) $(LIBS) $(LIBS_SOCKET) -o libpfpro.so

	# solaris 2.6 using SSLC RSA crypt libraries.
#	$(LD) -G --retain-symbols-file EXPORTS -Bsymbolic $(OBJ_FILES) $(LIBDIRS) $(LIBS) $(LIBS_SOCKET) -L/usr/local/SSLC/lib -lsslc -o libpfpro.so
	
	
pfpro : pfpro.c Makefile
	$(CC) -c $(CFLAGS) $(INCDIRS) pfpro.c
	$(CC) -o pfpro pfpro.o $(LIBDIRS) $(EXE_LIBS) -lpfpro 
	rm pfpro.o
	strip pfpro

clean-all:clean-dist clean-util

clean-dist:
	(rm pfpro *.o *.a *.so) || echo "NO *.a  *.so  *.o or pfpro found. \n\n -- Type 'make' to build\n\n"

clean-util:
	@for i in $(DIRS) ;\
	do \
	(cd $$i && echo "<<<<<<--- REMOVING *.o  in '$$i' --->>>>>>" && \
	rm *.o) || echo "NO object files to rm in $$i" ; \
	done


