#
#	Create PCLU libraries for C linker
#

# For pclu library for debugging, need to compile stream with compiler debugging#	on and cc debugging off:  without compiler debugging on, dbg_info stuff
#	lost and can't eval system operations; with cc debugging on, system
#	operations enter the debugger on signals etc. confusing the debugger
#	no end

CLIBDIRS = sysasm libasm sysclu libclu

OPT    = libclu/Opt/*.o sysclu/Opt/*.o libasm/Opt/*.o sysasm/Opt/*.o
DEBUG1 = libclu/Debugger/*.o sysclu/Debugger/*.o libasm/Debugger/*.o \
         sysasm/Debugger/*.o
DEBUG2 = ../debug/*.o
G      = libclu/Debug/*.o sysclu/Debug/*.o libasm/Debug/*.o sysasm/Debug/*.o

#GC     = gc/alloc.o gc/allochblk.o gc/misc.o gc/reclaim.o gc/heapprof.o gc/mach_dep.o \
#		gc/mark_roots.o

GC     = gc/alloc.o gc/reclaim.o gc/allchblk.o gc/misc.o gc/mach_dep.o \
         gc/os_dep.o gc/mark_rts.o \
         gc/headers.o gc/mark.o gc/obj_map.o gc/blacklst.o gc/finalize.o \
	 gc/new_hblk.o \
         gc/dbg_mlc.o gc/malloc.o gc/stubborn.o gc/checksums.o \
	 gc/solaris_threads.o \
         gc/typd_mlc.o gc/ptr_chck.o gc/dyn_load.o


optlib: optfiles libpclu_opt.a

athenalib: debugfiles libpclu_athena.a

debuglib: debugfiles libpclu_debug.a

cdebuglib: cdebugfiles libpclu_g.a


optfiles: 
	for i in ${CLIBDIRS}; do (cd $$i; make opt); done

libpclu_opt.a:
	/bin/rm -f libpclu_opt.a
	ar cruv libpclu_opt.a ${OPT} ${GC}
	ranlib libpclu_opt.a

libpclu_debugG4.a: ${OPT}
	/bin/rm -f libpclu_debugG4.a
	ar cruv libpclu_debugG4.a ${DEBUG1}
	ranlib libpclu_debugG4.a

libpclu_athena.a: ${DEBUG1}
	/bin/rm -f libpclu_athena.a
	ar cruv libpclu_athena.a ${DEBUG1} ${GC}
	ar d libpclu_athena.a util.o _signal.o new_parm_util.o new_selector.o
	ar q libpclu_athena.a ${DEBUG2}
	ranlib libpclu_athena.a

debugfiles:
	for i in ${CLIBDIRS}; do (cd $$i; make debugger); done
	cd ../debug; make

#libpclu_debug.a: ${DEBUG1} ${DEBUG2}
libpclu_debug.a:
	/bin/rm -f libpclu_debug.a
	ar cruv libpclu_debug.a ${DEBUG1} ${GC}
	ar d libpclu_debug.a util.o _signal.o new_parm_util.o new_selector.o
	ar q libpclu_debug.a ${DEBUG2}
	ranlib libpclu_debug.a

libpclu_debug_basic.a:
	/bin/rm -f libpclu_debug_basic.a
	ar cruv libpclu_debug_basic.a ${DEBUG1}
	ranlib libpclu_debug_basic.a

cdebugfiles:
	for i in ${CLIBDIRS} do (cd $$i; make debug); done

libpclu_g.a: ${G}
	/bin/rm -f libpclu_g.a
	ar cruv libpclu_g.a ${G}
	ranlib libpclu_g.a

clean:
	for i in ${CLIBDIRS}; do (cd $$i; make clean); done

veryclean: clean
	/bin/rm -f libpclu_opt.a libpclu_debug.a libpclu_g.a

