# -----------------------------------------------------------------------------
# Oberon Library
# (c) University of Ulm, SAI, D-7900 Ulm
# -----------------------------------------------------------------------------
# {stamp: updated by mmo Sun Apr  4 12:06:31 MET DST 1993}
# {options: +a +A +L -P}
# -----------------------------------------------------------------------------
# default settings which are overrided by the parent makefile
OBPATH :=	.
# directory of the compiler and the associated files
OBLIB :=	/usr/local/lib/oberon
# compilation flags (usually -OC -OT to suppress range and conversion checks)
ocflags :=	-OC -OT
# where to install the libraries
LIBDIR :=	$(OBLIB)/NeWS
# -----------------------------------------------------------------------------
.SUFFIXES:
# {macros}
src :=		NeWS.od NeWS.om NeWSSysToke.od NeWSSysToke.om XAuthority.od \
		XAuthority.om
libs :=
liboptions :=	$(patsubst %,-l%,$(libs))
defs :=		$(filter %.od,$(src))
mods :=		$(filter %.om,$(src))
syms :=
refs :=		$(patsubst %.om,%.r,$(mods))
objects :=
libobjects =	$(patsubst %.om,$(lib)(%.o),$(mods))
defsyms :=
modobjs :=
cyclesyms :=
# {targets}
lib :=		libNeWS.a
libdeps :=	SYM(NeWSSysToke.sy) $(lib)(NeWSSysToke.o) SYM(XAuthority.sy) \
		$(lib)(XAuthority.o) SYM(NeWS.sy) $(lib)(NeWS.o)
$(lib):		$(libdeps)
T :=
.PHONY:		all
all:		$T $(defsyms) $(lib)
#
OC_CMD :=	OBPATH=$(OBPATH) OBLIB=$(OBLIB) oc
# {rules}
%.o:		%.r
OC :=		$(OC_CMD)
OCFLAGS :=	$(ocflags)
NEWER :=	newer
RM :=		rm -f
TOUCH :=	touch
$(lib)(%.o):	%.om SYM(%.sy)
		@$(TOUCH) $*.ts
		$(OC) $(OCFLAGS) $(liboptions) -c -u -o $(lib) $<
		@[ -z "$(D_$*)" ] || $(NEWER) $*.ts SYM || $(MAKE) $(D_$*)
		@$(RM) $*.ts
SYM(%.sy) $(lib)(%.o): %.od
		$(OC) $(OCFLAGS) $(liboptions) -c -u -o $(lib) $< $*.om
# -----------------------------------------------------------------------------
NeWSSysToke.od NeWSSysToke.om: mk_systoken systokenlist
		mk_systoken
# {dependencies}
SYM(NeWS.sy):	/usr/local/lib/oberon/SYM(Disciplines.sy) \
		/usr/local/lib/oberon/SYM(Events.sy) \
		/usr/local/lib/oberon/SYM(RelatedEven.sy) \
		/usr/local/lib/oberon/SYM(Streams.sy) \
		/usr/local/lib/oberon/SYM(Conditions.sy)
$(lib)(NeWS.o):	/usr/local/lib/oberon/SYM(ASCII.sy) \
		/usr/local/lib/oberon/SYM(MC68881.sy) SYM(NeWSSysToke.sy) \
		/usr/local/lib/oberon/SYM(Disciplines.sy) \
		/usr/local/lib/oberon/SYM(Events.sy) \
		/usr/local/lib/oberon/SYM(Priorities.sy) \
		/usr/local/lib/oberon/SYM(RelatedEven.sy) \
		/usr/local/lib/oberon/SYM(Sets.sy) \
		/usr/local/lib/oberon/SYM(Streams.sy) \
		/usr/local/lib/oberon/SYM(Read.sy) \
		/usr/local/lib/oberon/SYM(Scan.sy) \
		/usr/local/lib/oberon/SYM(Strings.sy) \
		/usr/local/lib/oberon/SYM(SysHost.sy) \
		/usr/local/lib/oberon/SYM(Texts.sy) \
		/usr/local/lib/oberon/SYM(Conditions.sy) \
		/usr/local/lib/oberon/SYM(Internet.sy) SYM(NeWS.sy) \
		/usr/local/lib/oberon/SYM(Resolver.sy) \
		/usr/local/lib/oberon/SYM(StreamCondi.sy) \
		/usr/local/lib/oberon/SYM(Tasks.sy) \
		/usr/local/lib/oberon/SYM(UnixDomainS.sy) \
		/usr/local/lib/oberon/SYM(UnixEnviron.sy) \
		/usr/local/lib/oberon/SYM(Write.sy) SYM(XAuthority.sy)
SYM(NeWSSysToke.sy):
$(lib)(NeWSSysToke.o): SYM(NeWSSysToke.sy)
SYM(XAuthority.sy): /usr/local/lib/oberon/SYM(Events.sy) \
		/usr/local/lib/oberon/SYM(RelatedEven.sy)
$(lib)(XAuthority.o): /usr/local/lib/oberon/SYM(Events.sy) \
		/usr/local/lib/oberon/SYM(Priorities.sy) \
		/usr/local/lib/oberon/SYM(RelatedEven.sy) \
		/usr/local/lib/oberon/SYM(Streams.sy) \
		/usr/local/lib/oberon/SYM(Strings.sy) \
		/usr/local/lib/oberon/SYM(SysConversi.sy) \
		/usr/local/lib/oberon/SYM(UnixEnviron.sy) \
		/usr/local/lib/oberon/SYM(UnixFiles.sy) \
		/usr/local/lib/oberon/SYM(Write.sy) SYM(XAuthority.sy)
# {reversed-dependencies}
D_NeWS :=
D_NeWSSysToke := '$(lib)(NeWS.o)'
D_XAuthority :=	'$(lib)(NeWS.o)'
# -----------------------------------------------------------------------------
.PHONY:		install
install:	$(LIBDIR)/$(lib) $(LIBDIR)/REF $(LIBDIR)/SYM

$(LIBDIR)/$(lib): $(lib)
		cp $^ $@
		ranlib -t $@
$(LIBDIR)/REF:	REF
		cp $^ $@
$(LIBDIR)/SYM:	SYM
		cp $^ $@
# -----------------------------------------------------------------------------
.PHONY:		clean
clean:
		$(RM) core PROT PROT.line *.ts
# -----------------------------------------------------------------------------
PR :=		pr
SPOOL :=	lpr
.PHONY:		prdefs prmods pr
pr:		prdefs prmods
prdefs:		prdefs.stamp
prmods:		prmods.stamp
prdefs.stamp:	$(defs)
		$(PR) $? | $(SPOOL)
		@-touch $@
prmods.stamp:	$(mods)
		$(PR) $? | $(SPOOL)
		@-touch $@
# -----------------------------------------------------------------------------
OBTAGS :=	obtags
tags:		$(mods)
		$(OBTAGS) $^
# -----------------------------------------------------------------------------
