# This is the top-level Makefile to build the Nelsis/R3 tree for OCEAN.
#
# Note that this requires the script "sourcethis.sh" to exist in the current
# directory (usually cacd/src). This script defines the function "domake".
#

SHELL = /bin/sh

LIB = $(ICDPATH)/lib/$(MACHINE)

BIN = $(ICDPATH)/bin/$(MACHINE)

INCL = $(ICDPATH)/lib/include

MAN  = $(ICDPATH)/man
MAN1 = $(MAN)/man1
MAN3 = $(MAN)/man3
MAN5 = $(MAN)/man5

LIBRARIES = \
	libddm \
	formats \
	cacdcmap

PROGRAMS = \
	addproj \
	cldm \
	cpldm \
	csls \
	dbcat \
	dbclean \
	dblist \
	dimcheck \
	dubcheck \
	exp \
	func_mkdb \
	gds2 \
	getldm \
	getlld \
	impcell \
	layflat \
	libfunc \
	macro \
	makeboxh \
	makeboxl \
	makevln \
	mkpr \
	nbool \
	nspice \
	putdevmod \
	rmdb \
	rmpr \
	simeye \
	sldm \
	sls \
	sls_exp \
	space \
	xsls

default all: $(PROGRAMS)

$(PROGRAMS): installedlibraries
	. sourcethis.sh ; cd $@ ; domake

$(LIBRARIES): always
	. sourcethis.sh ; cd $@ ; domake

installedlibraries: $(LIB) $(BIN) $(INCL) $(MAN1) $(MAN3) $(MAN5) \
                    $(LIB)/libddm.a $(LIB)/libmnew.a $(LIB)/libcirfmt.a \
                    $(LIB)/libflpfmt.a $(LIB)/liblayfmt.a $(LIB)/libcmap.a

$(LIB)/libddm.a $(LIB)/libmnew.a: libddm/*.[ch]
	. sourcethis.sh ; cd libddm ; domake install

$(LIB)/libcirfmt.a $(LIB)/libflpfmt.a $(LIB)/liblayfmt.a: formats/*.[ch]
	. sourcethis.sh ; cd formats ; domake install

$(LIB)/libcmap.a: cacdcmap/*.[ch]
	. sourcethis.sh ; cd cacdcmap ; domake install

installedprograms: installedlibraries
	@for dir in $(PROGRAMS); do \
             echo "(. sourcethis.sh ; cd $$dir ; domake install)"; \
             (. sourcethis.sh ; cd $$dir ; domake install); \
         done

install: installedprograms

$(LIB) $(BIN) $(INCL) $(MAN1) $(MAN3) $(MAN5):
	mkdir -p $@

clean: always
	@for dir in $(LIBRARIES) $(PROGRAMS); do \
             echo "(. sourcethis.sh ; cd $$dir ; domake clean)"; \
             (. sourcethis.sh ; cd $$dir ; domake clean); \
         done

always:; @true
