DISTRIB_MACH= dino
DISTRIB_TOP = /usr/distrib
DISTRIB_DIR = $(DISTRIB_TOP)/dl
SHARE_LIB = /u/spr/share.$(ARCH)

COMPONENT= dl

ifeq ($(ARCH),multimax)
MACHFILE= dlencore.o
XFLAGS= -q nodirect_code -Wc,-Z151
XLIB= -lld
SYSLIBS = /lib/libc.a /usr/lib/libm.a
endif

ifeq ($(ARCH),sun3)
MACHFILE= dlsun.o
SYSLIBS= /lib/libc.a /usr/lib/libm.a
endif

ifeq ($(ARCH),sun4)
MACHFILE= dlsun.o
SYSLIBS= /lib/libc.a /usr/lib/libm.a
endif

ifeq ($(ARCH),vax)
MACHFILE= dlvax.o
SYSLIBS= /lib/libc.a /usr/lib/libm.a
endif

ifeq ($(ARCH),mips)
MACHFILE= dlmips.o
SYSLIBS = /lib/libc.a /usr/lib/libm.a
XFLAGS= -G 0
endif


ifndef PRO
PRO= /pro
endif

%.o: %.c
	$(CC) $(CFLAGS) -c $<

MAKE= gnumake -f ../src/GMakefile $(MAKEFLAGS)

ifndef OPTIMIZE
CFLAGS = -g $(XFLAGS) '-DDL_DIR="$(PRO)"' '-DL_ARCH="$(ARCH)"'
else
CFLAGS = -O $(XFLAGS) '-DDL_DIR="$(PRO)"' '-DL_ARCH="$(ARCH)"'
endif

OFILES = dlruntime.o dlsymtab.o dlcommon.o dlloader.o $(MACHFILE) $(STUBFILE)
CFILES = dlruntime.c dlsymtab.c dlcommon.c dlloader.c

PFILES = Makefile GMakefile dl.h dl_local.h datatypes.h \
	dlruntime.c dlsymtab.c dlcommon.c dlloader.c \
	dlsun.c dlvax.c dlencore.c dlmips.c \
	dynload.c \
	system.c build_table.c \
	test1.c test2.c test3.c test4.c test6.c test7.c test8.c

ACTIVE= $(PFILES)

all: dynlib.o dynload system.o

$(OFILES) $(MACHFILE) : dl_local.h dl.h

share:
	$(MAKE) clean
	$(MAKE) 'CFLAGS=$(XFLAGS) -pic' $(OFILES)
	ld -assert pure-text -o dynlib.so $(OFILES) $(XLIB)
	$(MAKE) clean

dynlib.o: $(OFILES)
	ld -r $(OFILES) -o $@ $(XLIB)

dlencore.o: dlencore.c
	cc -w $(CFLAGS) -c ../src/dlencore.c


install: all
	-cp dynlib.o $(PRO)/lib/dynlib.$(ARCH).o
	-cp dynload $(PRO)/bin
	-cp system.o $(PRO)/lib/dl_sysnames.$(ARCH).o
	-cp dynlib.so $(PRO)/lib/libdl.so.1.0
	-ar ru $(PRO)/lib/libdl.a dynlib.o
	-ranlib $(PRO)/lib/libdl.a

csinstall: all
	-cp dynlib.o /cs/lib/dynlib.o
	-cp dynload /cs/bin
	-cp system.o /cs/lib/dl_sysnames.o
	-cp dynlib.so /cs/shlib/bwe/libdl.so.1.0
	-rm -f libdl.a
	-ar ru libdl.a dynlib.o
	-cp libdl.a /cs/lib
	-ranlib /cs/lib/libdl.a

clean:
	rm -f $(OFILES) dynload.o test*.o buildtable.o

print:
	(cd ../src; pr $(PFILES) | lpr -low)

prim:
	(cd ../src; imprint -Pim0 -2 $(PFILES))

prps:
	(cd ../src; enscript -2r -G -p - $(PFILES) | lpr -Pps1)

pribm:
	(cd ../src; /bin/pr -l62 -f $(PFILES) | lpr -Pibm)

buildmake:
	mv Makefile Makefile.old
	buildmake -F Makefile -f $(PRO)/dl/src/Buildfile

dynload: dynload.o $(MACHFILE) $(STUBFILE)
	cc $(CFLAGS) -o dynload dynload.o $(MACHFILE) $(STUBFILE) $(XLIB)

dynload.o: dynload.c
build_table.o: build_table.c

dlruntime.o: dlruntime.c
dlsymtab.o: dlsymtab.c
dlcommon.o: dlcommon.c
dlloader.o: dlloader.c
dlvax.o: dlvax.c
dlsun.o: dlsun.c
dlmips.o: dlmips.c
dlencore.o: dlencore.c

build_table: build_table.o $(MACHFILE)
	cc $(CFLAGS) -o build_table build_table.o $(MACHFILE) $(XLIB)

table.c: build_table $(SYSLIBS)
	./build_table $(SYSLIBS) > table.c

system.o: system.c table.c
	cc -c $(CFLAGS) -I. -I../bin.$(ARCH) ../src/system.c


test1.o: test1.c
test2.o: test2.c
test3.o: test3.c
test4.o: test4.c
test7.o: test7.c
test8.o: test8.c
jtstest.o: jtstest.c
aux.o: aux.c

test1: test1.o test2.o dynload dynlib.o
	dynload -o test1 -XDEBUG -LOCAL -g test1.o $(YLIB)

test1p: test1.o test2.o dynload dynlib.o
	dynload -o test1p -XDEBUG -LOCAL -g -pg test1.o $(YLIB)

test3: test3.o test2.o dynload dynlib.o
	dynload -o test3 -XDEBUG -LOCAL test3.o $(YLIB)

test4: test4.o dynload dynlib.o
	dynload -o test4 -XDEBUG -LOCAL test4.o $(YLIB)

test7: test7.o test8.o dynload dynlib.o
	dynload -o test7 -XDEBUG -LOCAL -g test7.o $(YLIB)

testmjn: testmjna.o testmjnb.o testmjnc.o
	dynload -o testmjn -XDEBUG -LOCAL -g testmjna.o

jtstest: jtstest.o aux.o dynload dynlib.o
	dynload -o jtstest -XDEBUG -LOCAL -g -pg jtstest.o $(YLIB)

distrib:
	rsh $(DISTRIB_MACH) rm -rf $(DISTRIB_DIR)
	rsh $(DISTRIB_MACH) mkdir $(DISTRIB_DIR)
	rsh $(DISTRIB_MACH) mkdir $(DISTRIB_DIR)/src
	(cd ../src; rcp $(ACTIVE) $(DISTRIB_MACH):$(DISTRIB_DIR)/src)

