#
# BWE
#
# Copyright 1985 Steven P. Reiss, Brown University - All rights reserved.
#
#	2/20/88 spr	Built from original buildfile
#
#



#
#	Global definitions
#

SYSTEM= bwe

BWEDIR = $(PRO)/$(SYSTEM)

GMAKE= gnumake $(MFLAGS)

VERSION=5
SUBVER=3

#
#	Distribution information
#

DISTRIB_MACH= dino
DISTRIB_TOP= /usr/distrib
DISTRIB_DIR= $(DISTRIB_TOP)/bwe
DISTRIB= $(DISTRIB_MACH):$(DISTRIB_DIR)

ACTIVE= Makefile INSTALL README CSINSTALL ZINSTALL


#
#	Component definitions
#

FILES= Makefile

SETUPCOMPS= cmd
OTHERCOMPS= data doc fonts include lib

COMPONENTS= misc cmpx auxd \
	ash bio worm \
	apple editor gelo help leaf rip stem tulip wind \
	edt

ALL_COMPONENTS= $(SETUPCOMPS) $(COMPONENTS) $(OTHERCOMPS)
DIST_COMPONENTS= examples

#
#	Command definitions
#

GENERIC_COMMANDS= print pribm transfer clean newlib create prim
ACTIVE_COMMANDS= all opt links binshare lint.out lint.lib dep
DISTRIB_COMMANDS= distrib_dir

#
#	Build rules
#

all:

$(ACTIVE_COMMANDS):
	touch .DUMMY
	$(MAKE) $(COMPONENTS) 'COMMAND=$@' PRO=$(PRO)

$(GENERIC_COMMANDS):
	touch .DUMMY
	$(MAKE) $(ALL_COMPONENTS) 'COMMAND=$@' PRO=$(PRO)

$(DISTRIB_COMMANDS):
	touch .DUMMY
	$(GMAKE) $(ALL_COMPONENTS) $(DIST_COMPONENTS) 'COMMAND=$@' PRO=$(PRO) \
		'DISTRIB=$(DISTRIB)' 'DISTRIB_MACH=$(DISTRIB_MACH)' \
		'DISTRIB_TOP=$(DISTRIB_TOP)' 'DISTRIB_DIR=$(DISTRIB_DIR)'

.PHONY: $(GENERIC_COMMANDS) $(ACTIVE_COMMANDS) $(DISTRIB_COMMANDS)
.PHONY: $(ALL_COMPONENTS) $(DIST_COMPONENTS)

$(ALL_COMPONENTS) $(DIST_COMPONENTS): .DUMMY

.DUMMY:

$(COMPONENTS) $(DIST_COMPONENTS):
	(cd $@/src; $(MAKE) $(COMMAND) )

$(SETUPCOMPS) $(OTHERCOMPS):
	(cd $@; $(MAKE) $(COMMAND) )


cleanlib:
	(cd lib; $(MAKE) cleanlib)
	$(MAKE) newlib
	(cd lib; $(MAKE) ranlib)

SVER= $(VERSION).$(SUBVER)

share:
	$(MAKE) binshare
	ld -o lib/libbwe2_$(ARCH).so.$(SVER) -assert pure-text [f-z]*/bin.share.$(ARCH)/*.o
	$(MAKE) sharerefs.o
	ld -L$(PRO)/bwe/lib -o lib/libbwe_$(ARCH).so.$(SVER) -assert pure-text [a-e]*/bin.share.$(ARCH)/*.o sharerefs.o -lbwe2_$(ARCH) -lX11
	-rm -f lib/libbwe_$(ARCH).a
	-rm -f sharerefs.o
	ln -s libbwe.$(ARCH).a lib/libbwe_$(ARCH).a
	make sharedee

csshare:
	$(MAKE) binshare
	ld -o lib/libbwe2_$(ARCH).so.$(SVER) -assert pure-text [f-z]*/bin.share.$(ARCH)/*.o
	-cp lib/libbwe2_$(ARCH).so.$(SVER) /cs/lib/libbwe2_$(ARCH).so.$(SVER)
	$(MAKE) sharerefs.o
	ld -L/cs/lib -o lib/libbwe_$(ARCH).so.$(SVER) -assert pure-text [a-e]*/bin.share.$(ARCH)/*.o sharerefs.o -lbwe2_$(ARCH) -lX11
	-rm -f lib/libbwe_$(ARCH).a
	-rm -f sharerefs.o
	ln -s libbwe.$(ARCH).a lib/libbwe_$(ARCH).a
	make cssharedee

newcsshare:
	$(MAKE) binshare
	ld -o lib/libbwe2_$(ARCH).so.$(SVER) -assert pure-text [f-z]*/bin.share.$(ARCH)/*.o
	$(MAKE) sharerefs.o
	ld -L/cs/lib -o lib/libbwe_$(ARCH).so.$(SVER) -assert pure-text [a-e]*/bin.share.$(ARCH)/*.o sharerefs.o -lbwe2_$(ARCH) -lX11
	-rm -f lib/libbwe_$(ARCH).a
	-rm -f sharerefs.o
	ln -s libbwe.$(ARCH).a lib/libbwe_$(ARCH).a
	make cssharedee

sharelib:
	ld -o lib/libbwe2_$(ARCH).so.$(SVER) -assert pure-text [f-z]*/bin.share.$(ARCH)/*.o
	ld -L$(PRO)/bwe/lib -o lib/libbwe_$(ARCH).so.$(SVER) -assert pure-text [a-e]*/bin.share.$(ARCH)/*.o -lbwe2_$(ARCH) -lX11
	-rm -f lib/libbwe_$(ARCH).a
	ln -s libbwe.$(ARCH).a lib/libbwe_$(ARCH).a

sharedee:
	rm -f lib/libbwe.so.$(SVER) lib/libbwe.a
	ln -s libbwe_$(ARCH).so.$(SVER) lib/libbwe.so.$(SVER)
	ln -s libbwe.$(ARCH).a lib/libbwe.a
	(cd edt/src; $(MAKE) sharedee)
	rm -f lib/libbwe.so.$(SVER) lib/libbwe.a

cssharedee:
	rm -f lib/libbwe.so.$(SVER) lib/libbwe.a
	ln -s libbwe_$(ARCH).so.$(SVER) lib/libbwe.so.$(SVER)
	ln -s libbwe.$(ARCH).a lib/libbwe.a
	(cd edt/src; $(MAKE) cssharedee)
	rm -f lib/libbwe.so.$(SVER) lib/libbwe.a

cleanshare:
	-rm -rf */bin.share.$(ARCH)

newmachine:
	$(GMAKE) create
	$(GMAKE) links
	(cd cmd; $(GMAKE))
	$(GMAKE) newfonts
	$(GMAKE) -k all
	(cd examples/src; $(GMAKE) create)

newfonts:
	(cd fonts; $(MAKE) newfonts)

distrib:
	(cd doc; make manual.ps)
	rsh $(DISTRIB_MACH) rm -rf $(DISTRIB_DIR)
	rsh $(DISTRIB_MACH) mkdir $(DISTRIB_DIR)
	rcp $(ACTIVE) $(DISTRIB_MACH):$(DISTRIB_DIR)
	$(MAKE) distrib_dir

gnumake:
	-mkdir cmd/$(ARCH)
	(cd cmd/src/gnumake; $(MAKE))

sharerefs.o:
	rm -f share.* sharerefs.c
	nm -g lib/libbwe2_$(ARCH).so.$(SVER) > share.1
	awk '{ print $$3 }' share.1 > share.2
	sed -e 's/^_//' share.2 > share.3
	egrep '^[A-Z]+[a-z]' share.3 > share.4
	fgrep -v THREAD share.4 > share.5
	awk '{ print "int ", $$1, "();" }' share.5 > sharerefs.c
	echo "static void DUMMY___functions() {" >> sharerefs.c
	awk '{ print "   ", $$1, "();" }' share.5 >> sharerefs.c
	echo "}" >> sharerefs.c
	$(CC) -pic -c sharerefs.c
	rm -f share.* sharerefs.c

lintlib:
	make lint.lib
	cat */lib/llib* > lib/llib-lbwe.ln

proinstall:
	echo rebuilding ee
	(cd edt/src; make doee)
	echo installing include files
	-mkdir $(PRO)/include/bwe
	cp include/*.h $(PRO)/include/bwe
	echo installing commands
	cp cmd/$(ARCH)/ee $(PRO)/cmd
	echo installing librarys
	cp lib/libbwe.$(ARCH).a $(PRO)/lib/libbwe.a
	ranlib $(PRO)/lib/libbwe.a
	cp lib/libnothread_$(ARCH).a $(PRO)/lib/libnothread.a
	ranlib $(PRO)/lib/libnothread.a
	cp lib/libnodl_$(ARCH).a $(PRO)/lib/libnodl.a
	ranlib $(PRO)/lib/libnodl.a
	-cp lib/libbwe2_$(ARCH).so.$(SVER) $(PRO)/lib/libbwe2_$(ARCH).so.$(SVER)
	-cp lib/libbwe_$(ARCH).so.$(SVER) $(PRO)/lib/libbwe.so.$(SVER)
	echo installing run data
	-mkdir $(PRO)/lib/bwe
	cp lib/edt.abbrev $(PRO)/lib/bwe
	cp lib/font.family* $(PRO)/lib/bwe
	cp lib/edt.ctbl.$(ARCH) $(PRO)/lib/bwe
	-mkdir $(PRO)/lib/bwe/fonts
	-mkdir $(PRO)/lib/bwe/fonts/snf
	cp fonts/snf.$(ARCH)/*.snf $(PRO)/lib/bwe/fonts/snf
	-rm -rf $(PRO)/lib/bwe/fonts/snf.sun3
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.sun3
	-rm -rf $(PRO)/lib/bwe/fonts/snf.sun4
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.sun4
	-rm -rf $(PRO)/lib/bwe/fonts/snf.mips
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.mips
	-rm -rf $(PRO)/lib/bwe/fonts/snf.vax
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.vax
	mkfontdir $(PRO)/lib/bwe/fonts/snf
	-mkdir $(PRO)/lib/bwe/info
	echo done

dinoinstall:
	echo installing include files
	cp include/*.h $(PRO)/include/bwe
	echo installing commands
	cp cmd/$(ARCH)/ee $(PRO)/cmd
	echo installing librarys
	cp lib/libbwe.$(ARCH).a $(PRO)/lib/libbwe.a
	ranlib $(PRO)/lib/libbwe.a
	cp lib/libnothread_$(ARCH).a $(PRO)/lib/libnothread.a
	ranlib $(PRO)/lib/libnothread.a
	cp lib/libnodl_$(ARCH).a $(PRO)/lib/libnodl.a
	ranlib $(PRO)/lib/libnodl.a
	-cp lib/libbwe2_$(ARCH).so.$(SVER) $(PRO)/lib/libbwe2_$(ARCH).so.$(SVER)
	-cp lib/libbwe_$(ARCH).so.$(SVER) $(PRO)/lib/libbwe.so.$(SVER)
	echo installing run data
	-mkdir $(PRO)/lib/bwe
	cp lib/edt.abbrev $(PRO)/lib/bwe
	cp lib/font.family* $(PRO)/lib/bwe
	cp lib/edt.ctbl.$(ARCH) $(PRO)/lib/bwe
	-mkdir $(PRO)/lib/bwe/fonts
	-mkdir $(PRO)/lib/bwe/fonts/snf
	cp fonts/snf.$(ARCH)/*.snf $(PRO)/lib/bwe/fonts/snf
	-rm -rf $(PRO)/lib/bwe/fonts/snf.sun3
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.sun3
	-rm -rf $(PRO)/lib/bwe/fonts/snf.sun4
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.sun4
	-rm -rf $(PRO)/lib/bwe/fonts/snf.mips
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.mips
	-rm -rf $(PRO)/lib/bwe/fonts/snf.vax
	-ln -s $(PRO)/lib/bwe/fonts/snf $(PRO)/lib/bwe/fonts/snf.vax
	mkfontdir $(PRO)/lib/bwe/fonts/snf
	-mkdir $(PRO)/lib/bwe/info
	echo done

