###########
# Copyright 1991 Regents of the University of California.  All rights reserved.
###########

ALL_INSTALL_DIRS = $(SPICE_EXEC_DIR)
INSTALL_SPECIAL	= directories

MSC: $(MSC_SYNTH)

$(SPICE_EXEC_DIR)/spice3: spice3
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR)/nutmeg: nutmeg
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR)/sconvert: sconvert
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR)/help: help
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR)/proc2mod: proc2mod
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR)/spiced: spiced
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR)/multidec: multidec
	rm -f $@
	cp $? $@

$(SPICE_EXEC_DIR):
	mkdir $(SPICE_EXEC_DIR)

spice3.o: main.c $(SRC_TOP)/include/patchlev.h $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) -c $(CFLAGS) $(INCLUDE) -DSIMULATOR $(SRC_DIR)/main.c $(ASM_HACK)
	mv -f main.o $@

bspice.o: main.c $(SRC_TOP)/include/patchlev.h $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) -c $(CFLAGS) $(INCLUDE) -DSIMULATOR -DBATCH $(SRC_DIR)/main.c $(ASM_HACK)
	mv -f main.o $@

cspice.o: main.c $(SRC_TOP)/include/patchlev.h $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) -c $(CFLAGS) $(INCLUDE) -DSIMULATOR -DBATCH -DSPICE2 $(SRC_DIR)/main.c \
		$(ASM_HACK)
	mv -f main.o $@

nutmeg.o: main.c $(SRC_TOP)/include/patchlev.h $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) -c $(CFLAGS) $(INCLUDE) $(SRC_DIR)/main.c $(ASM_HACK)
	mv -f main.o $@

conf.c: config.c $(SYS_CONF)/$(OBJECTIVE)
	@echo Creating "$@": ; rm -f "$@"
	$(UTIL_DIR)/mkvers.sh "$(DEVICES)" "$(ANALYSES)"		      \
		"$(VERSION_REVISION)" "$(NOTICE)" $(IAMMSC) > $@
	cat $(SRC_DIR)/config.c >> $@
	chmod -w "$@"

cconf.o: $(OBJ_DIR)/cconf.c
	$(CC) -c $(CFLAGS) $(INCLUDE) -DSIMULATOR $(OBJ_DIR)/cconf.c $(ASM_HACK)

bconf.c: config.c $(SYS_CONF)/$(OBJECTIVE)
	@echo Creating "$@": ; rm -f "$@"
	$(UTIL_DIR)/mkvers.sh "$(B_DEVICES)" "$(B_ANALYSES)"		      \
		"$(VERSION_REVISION)" "$(NOTICE)" $(IAMMSC) > $@
	cat $(SRC_DIR)/config.c >> $@
	chmod -w "$@"

bconf.o: $(OBJ_DIR)/bconf.c
	$(CC) -c $(CFLAGS) $(INCLUDE) -DSIMULATOR $(OBJ_DIR)/bconf.c $(ASM_HACK)

cconf.c: config.c $(SYS_CONF)/$(OBJECTIVE)
	@echo Creating "$@": ; rm -f "$@"
	$(UTIL_DIR)/mkvers.sh "$(C_DEVICES)" "$(C_ANALYSES)"		      \
		"$(VERSION_REVISION)" "$(NOTICE)" $(IAMMSC) > $@
	cat $(SRC_DIR)/config.c >> $@
	chmod -w "$@"

nnconf.c: nconfig.c $(SYS_CONF)/$(OBJECTIVE)
	@echo Creating "$@": ; rm -f "$@"
	$(UTIL_DIR)/mkvers.sh "" "" "$(VERSION_REVISION)" "$(NOTICE)" \
		$(IAMMSC) > $@
	cat $(SRC_DIR)/nconfig.c >> $@
	chmod -w "$@"

nconf.c: nconfig.c $(SYS_CONF)/$(OBJECTIVE)
	@echo Creating "$@": ; rm -f "$@"
	$(UTIL_DIR)/mkvers.sh "" "" "$(VERSION_REVISION)" "$(NOTICE)" \
		$(IAMMSC) > $@
	cat $(SRC_DIR)/nconfig.c >> $@
	chmod -w "$@"

$(TUNEFILE).o: $(TUNEFILE).c
	${CC} ${CFLAGS} ${INCLUDE} -c $(TUNEFILE).c $(ASM_HACK)

nconf.o: nconf.c
	${CC} ${CFLAGS} ${INCLUDE} -c nconf.c $(ASM_HACK)

conf.o: conf.c
	${CC} ${CFLAGS} ${INCLUDE} -c conf.c $(ASM_HACK)

$(TUNEFILE).c: $(SYS_CONF)/$(OBJECTIVE)
	@echo "Creating $(TUNEFILE).c";					      \
	rm -f "$@";							      \
	{								      \
	echo   'char	*Spice_Exec_Dir	= "$(S_SPICE_EXEC_DIR)";';	      \
	echo   'char	*Spice_Lib_Dir	= "$(S_SPICE_LIB_DIR)";';	      \
	echo   "char	Spice_OptChar	= '$(OPT_CHAR)';";		      \
	echo   'char	*Def_Editor	= "$(DEFAULT_EDITOR)";';	      \
	echo   'int	AsciiRawFile	= $(ASCII_RAWFILE);';		      \
	echo   '';							      \
	echo   'char	*Bug_Addr	= "$(BUG_ADDR)";';		      \
	echo   'char	*Spice_Host	= "$(SPICE_HOST)";';		      \
	echo   'char	*Spiced_Log	= "$(SPICED_LOG)";';		      \
	} > $@
	chmod -w "$@"

help.o: help.c $(SYS_CONF)/$(OBJECTIVE) $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) $(CFLAGS) $(INTERFACE_OPTS) $(INCX) \
	-c $(INCLUDE) $(SRC_DIR)/help.c $(ASM_HACK)

spiced.o: spiced.c $(SYS_CONF)/$(OBJECTIVE) $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) $(CFLAGS) -c $(INCLUDE) $(SRC_DIR)/spiced.c $(ASM_HACK)

multidec.o: multidec.c $(SYS_CONF)/$(OBJECTIVE)-cc
	$(CC) $(CFLAGS) -c $(INCLUDE) $(SRC_DIR)/multidec.c $(ASM_HACK)

LIB	= $(OBJLIB_DIR)

LIBS	= $(LIB)/fte.a $(LIB)/dev.a $(LIB)/ckt.a $(LIB)/cp.a $(LIB)/hlp.a \
	$(LIB)/inp.a $(LIB)/mfb.a $(LIB)/ni.a $(LIB)/$(SPARSELIB).a \
	$(LIB)/misc.a
spice3: spice3.o $(LIBS) conf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	-@rm -f spice3
	$(CC) -o $@ spice3.o conf.o $(TUNEFILE).o $(LIBS) $(LIBX) $(LDFLAGS)

spice3m: spice3.o $(LIBS) conf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	-@rm -f spice3m
	$(CC) -o $@ spice3.o conf.o $(TUNEFILE).o $(LIBS) $(LIBX) $(LDFLAGS) \
		/users/beorn/malloc.a

spice3mp: spice3.o $(LIBS) conf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	-@rm -f spice3mp
	$(CC) -o $@ spice3.o conf.o $(TUNEFILE).o $(LIBS) $(LIBX) $(LDFLAGS) \
		/users/beorn/mprof/libc_mp.a

spice3mp2: spice3.o $(LIBS) conf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	-@rm -f spice3mp
	$(CC) -o $@ spice3.o conf.o $(TUNEFILE).o $(LIBS) $(LIBX) $(LDFLAGS) \
		/users/beorn/libc_mp.a

LIBB	= $(LIB)/fte.a $(LIB)/cp.a $(LIB)/dev.a $(LIB)/ckt.a \
	$(LIB)/inp.a $(LIB)/ni.a $(LIB)/$(SPARSELIB).a $(LIB)/misc.a
bspice: bspice.o $(LIBB) bconf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f bspice
	$(CC) -o $@ bspice.o bconf.o $(TUNEFILE).o $(LIBB) $(LDFLAGS)

bspicem: bspice.o $(LIBB) bconf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f bspice
	$(CC) -o $@ bspice.o bconf.o $(TUNEFILE).o $(LIBB) $(LDFLAGS) \
		/users/beorn/malloc.a

LIBC	= $(LIB)/fte.a $(LIB)/cp.a $(LIB)/dev.a $(LIB)/ckt.a \
	$(LIB)/inp.a $(LIB)/ni.a $(LIB)/$(SPARSELIB).a $(LIB)/misc.a
cspice: cspice.o $(LIBC) cconf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f cspice
	$(CC) -o $@ cspice.o cconf.o $(TUNEFILE).o $(LIBC) $(LDFLAGS)

LIBN	= $(LIB)/fte.a $(LIB)/cp.a $(LIB)/hlp.a  $(LIB)/mfb.a $(LIB)/misc.a
nutmeg:	nutmeg.o $(LIBN) nconf.o $(TUNEFILE).o $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f nutmeg
	$(CC) -o $@ nutmeg.o nconf.o $(TUNEFILE).o $(LIBN) $(LIBX) $(LDFLAGS)

# old LIBSC= $(LIB)/fte.a $(LIB)/cp.a $(LIB)/fte.a $(LIB)/inp.a $(LIB)/misc.a
LIBSC	= $(LIB)/misc.a
SCFILES	= $(LIB)/fte/rawfile.o $(LIB)/fte/types.o $(LIB)/fte/error.o	      \
	  $(LIB)/cp/numparse.o $(LIB)/cp/quote.o $(LIB)/cp/std.o	      \
	  $(LIB)/cp/wlist.o $(LIB)/cp/input.o $(LIB)/cp/lexical.o	      \
	  $(LIB)/cp/variable.o $(LIB)/cp/var2.o $(LIB)/fte/dimens.o
sconvert: sconvert.o $(SCFILES) $(LIBSC) $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f sconvert
	$(CC) -o $@ sconvert.o $(SCFILES) $(LIBSC) $(LDFLAGS)

LIBP2M	= $(LIB)/cp.a $(LIB)/inp.a $(LIB)/misc.a
proc2mod: proc2mod.o $(LIBP2M) $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f proc2mod
	$(CC) -o $@ proc2mod.o $(LIBP2M) $(LDFLAGS)

LIBH	= $(LIB)/hlp.a $(LIB)/cp.a $(LIB)/misc.a
help: help.o $(LIBH) $(TUNEFILE).o
	@-rm -f help
	$(CC) -o $@ help.o $(LIBH) $(LIBX) $(LDFLAGS) $(TUNEFILE).o

makeidx: makeidx.o $(LIB)/misc.a
	@-rm -f makeidx
	$(CC) -o $@ makeidx.o $(LIB)/misc.a

LIBSD	= $(LIB)/misc.a
spiced: spiced.o $(LIBSD) $(TUNEFILE).o
	@-rm -f spiced
	$(CC) -o $@ spiced.o $(LIBSD) $(TUNEFILE).o

LIBMD	= $(LIB)/sparse.a $(LIB)/misc.a
multidec: multidec.o $(LIBMD) $(SYS_CONF)/$(OBJECTIVE)-ld
	@-rm -f $@
	$(CC) -o $@ multidec.o $(LIBMD) $(LDFLAGS) $(GETOPTLIB)
