# Makefile for ZRAM, the parallel search algorithm library
#
# Possible targets:
#	bb_example	example and test of branch and bound
#	cis		connected induced subgraphs
#	est		euclidean spanning trees
#	gu		*Rubik's Gubanc puzzle
#	job_example	example and test of job control in the virtual machine
#	lb_example	example for the load balancing interface
#	nq		n queens
#	pa		enumeration of partitions of a set
#	pmbt		polyomino enumeration by backtracking
#	pmrs		polyomino enumeration by reverse search
#	pq		priority queue test
#	prs		vertex enumeration
#	qap		quadratic assignment problem
#	rs_example	example of reverse search
#	rv		random vertex generator in a polyhedron
#	vc		vertex cover
#	vc_gen		vertex cover problem generator
#
#	all		almost all of the above
#	all.lod		DSP objects for Music
#
#	nq_all		n queens for music
#	nq_sim		n queens for musim
#	vc_const	vertex cover constant file generator
#	vc_const_test
#	vc_sim		vertex cover for musim
#	vcm		vertex cover for music
#
#	clean		remove all .o files
#	veryclean	remove all files which can be rebuilt
#
# Environment variables used:
#		MOSDIR, MUSIMDIR, HOSTLIB (for Music and GigaBooster only)
#		CC, HOME, OBJECTDIR
#
# Default make rules used: .c.o
#
# Preprocessor macros used in the C files
#	A7		compile for GigaBooster
#	Music		compile for Music DSP
#	MusicFE		compile for Music front end
#	PEonly		compile for Music DSP
#	__PARAGON__	compile for Paragon
#	__alpha		compile for DEC AXP processor (WS or GigaBooster)
#	__osf__		compile for OSF/1 (AXP or Paragon)
#	cenju3		compile for Cenju-3
#	macintosh	compile for MacOS
#	sunbsd		compile for SunOS 4
#	__sgi		compile for IRIX
#	__HP__		compile for HP/UX
#	__sun		compile for Sun Solaris
#
#	IMM_SEND	MPI implementation supports ISend and Testall
#	NDEBUG		no debug version (faster execution)
#	SEQUENTIAL	exclude parallel algorithms (saves memory at runtime)
#
# Macros
# ------

ALPHABUFSIZE	= 400000
A7_LIB		= $(A7DIR)/lib
MINCLUDE	= $(MOSDIR)/include
HOSTLIBDIR	= $(MOSDIR)/sunlib
OPTFILE		= $(MOSDIR)/misc/g96k.opt
DSP_COPTS	= -I$(HOME)/include -F $(OPTFILE) -DMusic -DPEonly -mno-dsp
DSP_LOPTS	= -F $(OPTFILE)
MPIR_HOME	= /home/NEC/software/MPI# CSCS
MPIR_HOME	= /usr/local/mpi# other
MPIINCLUDE	= -I$(MPIR_HOME)/include
ALL_TARGETS	=  bb_example lb_example job_example nq vc cis est \
		   gu pa pmbt pmrs prs rs_example qap

# Uncomment some of the following lines...

# SGI (sequential)

#CFLAGS = $(CFLAGS0) -g -DSEQUENTIAL # debug
#CFLAGS	= $(CFLAGS0) -DNDEBUG -O -DSEQUENTIAL # optimized
#LFLAGS	=
#MD_OBJ	= z_md_seq.o


# SGI (parallel with MPI)

#CFLAGS = $(CFLAGS0) -g -I/usr/local/mpi/include # debug
#CFLAGS	= $(CFLAGS0) -DNDEBUG -O -I/usr/local/mpi/include # optimized
#LFLAGS	= -L/usr/local/mpi/lib/IRIX/ch_p4 -lmpi
#MD_OBJ	= z_md_mpi.o


# NeXT (sequential)

#CFLAGS = $(CFLAGS0) -posix -g -DSEQUENTIAL -D__NeXT__ # debug
#CFLAGS	= $(CFLAGS0) -posix -DNDEBUG -O -DSEQUENTIAL -D__NeXT__ # optimized
#LFLAGS	=
#MD_OBJ	= z_md_seq.o


# HP-UX (sequential)

#CC	= gcc
#CFLAGS = $(CFLAGS0) -g -DSEQUENTIAL -D__HP__ # debug
#CFLAGS	= $(CFLAGS0) -DNDEBUG -O -DSEQUENTIAL -D__HP__ # optimized
#LFLAGS	=
#MD_OBJ	= z_md_seq.o


# Sun Solaris (sequential)

#CFLAGS = $(CFLAGS0) -g -DSEQUENTIAL # debug
#CFLAGS = $(CFLAGS0) -DNDEBUG -O -DSEQUENTIAL # optimized
#LFLAGS	=
#MD_OBJ	= z_md_seq.o


# Sun Solaris (with MPI)
# Use the ch_p4 device (ch_shmem doesn't work)

#MPIDIR = /home/marzetta/work/mpich
#CFLAGS = $(CFLAGS0) -g  -I$(MPIDIR)/include # debug
#CFLAGS = $(CFLAGS0) -DNDEBUG -O -I$(MPIDIR)/include # optimized
#LFLAGS  = -L$(MPIDIR)/lib/solaris/ch_p4 -lmpi  -lsocket -lnsl
#MD_OBJ  = z_md_mpi.o

# Sun SunOS 4

#CFLAGS = $(CFLAGS0) -g -DSEQUENTIAL -Dsunbsd # debug
#CFLAGS = $(CFLAGS0) -DNDEBUG -O -DSEQUENTIAL -Dsunbsd # optimized
#LFLAGS	=
#MD_OBJ	= z_md_seq.o

# Default Target
# --------------

all: bb_example rs_example cis est nq vc pmbt pmrs pa

# Implicit rules
# --------------

.SUFFIXES: .cln

.c.cln:
	g96k -c $(DSP_COPTS) -o $@ $<


# Dependencies and rules
# ----------------------

all: bb_example rs_example cis est nq vc pmbt pmrs pa

all.lod: job_example.lod nq.lod

clean:
	-rm -f *.o

veryclean:
	-rm -f *.o
	rm -f $(ALL_TARGETS)

RV_OBJECTS = z_main.o z_base.o z_par.o z_mp.o z_ps.o z_io.o \
		z_time.o z_rs.o $(MD_OBJ) rv.o prs_base.o z_lb.o s_seq.o \
		z_signal.o

rv:	$(RV_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(RV_OBJECTS) $(LFLAGS)

PRS_OBJECTS = z_main.o z_base.o z_par.o z_mp.o z_ps.o z_io.o \
		z_time.o z_rs.o $(MD_OBJ) prs.o prs_base.o z_lb.o s_seq.o \
		z_signal.o prs_mp.o

prs:	$(PRS_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(PRS_OBJECTS) $(LFLAGS)

PRS1_OBJECTS = z_main.o z_base.o z_par.o z_mp.o z_ps.o z_io.o \
		z_time.o z_rs.o $(MD_OBJ) z_lb.o s_seq.o \
		z_signal.o prs_single.o

prs1:	$(PRS1_OBJECTS) prs.c prs_base.c prs_base.h prs_single.h z_rs.h z_time.h z_signal.h \
		z_base.h z_par.h z_ps.h 
	$(CC) $(CFLAGS) -DUSE_SINGLE -o prs1 $(PRS1_OBJECTS) prs.c prs_base.c $(LFLAGS)

VR_OBJECTS = z_base.o z_par.o z_mp.o z_ps.o z_io.o \
		z_time.o z_rs.o $(MD_OBJ) prs.o prs_base.o z_lb.o s_seq.o \
		z_signal.o

vr16:	vr16.o $(VR_OBJECTS)
	$(CC) $(CFLAGS) -o $@ vr16.o $(VR_OBJECTS) $(LFLAGS)

merg:	merg.o s_pq.o
	$(CC) $(CFLAGS) -o $@ merg.o s_pq.o $(LFLAGS)


CUBE_OBJECTS = cu_main.o cu_base.o cu_forward.o s_bb1.o z_bb1.o \
	z_base.o z_spq.o z_ps.o \
	s_pq.o z_par.o z_mp.o z_main.o z_time.o $(MD_OBJ)

cu:	$(CUBE_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(CUBE_OBJECTS) $(LFLAGS)

LB_EXAMPLE_OBJECTS = lb_example.o z_base.o z_ps.o \
	z_par.o z_mp.o z_main.o z_time.o $(MD_OBJ) s_seq.o \
	z_lb.o z_io.o z_signal.o

lb_example:	$(LB_EXAMPLE_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(LB_EXAMPLE_OBJECTS) $(LFLAGS)

BB_EXAMPLE_OBJECTS = bb_example.o s_bb1.o z_bb1.o z_base.o z_spq.o z_ps.o \
	s_pq.o z_par.o z_mp.o z_main.o z_time.o $(MD_OBJ) z_bb2.o s_seq.o \
	z_bb3.o z_lb.o z_io.o z_signal.o

bb_example:	$(BB_EXAMPLE_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(BB_EXAMPLE_OBJECTS) $(LFLAGS) -lm

KS_OBJECTS = knapsack.o s_bb1.o z_bb1.o z_base.o z_spq.o z_ps.o \
	s_pq.o z_par.o z_mp.o z_main.o z_time.o $(MD_OBJ) z_bb2.o s_seq.o \
	z_bb3.o z_lb.o z_io.o

knapsack:	$(KS_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(KS_OBJECTS) $(LFLAGS) -lm

QAP_OBJECTS = qap_comm.o qap_lap.o qap_matrix.o qap_qap.o qap_qappp.o \
	qap_sort.o z_main.o z_base.o $(MD_OBJ) z_bb1.o z_bb2.o z_bb3.o \
	z_lb.o z_mp.o z_par.o z_ps.o z_spq.o z_io.o z_signal.o \
	z_time.o s_bb1.o s_pq.o s_seq.o z_bb4.o

qap:	$(QAP_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(QAP_OBJECTS) $(LFLAGS) -lm

QAP_DB2_OBJECTS = qap_comm.o qap_lap.o qap_matrix.o qap_db2.o qap_qappp.o \
	qap_sort.o z_main.o z_base.o $(MD_OBJ) z_bb1.o z_bb2.o z_bb3.o \
	z_lb.o z_mp.o z_par.o z_ps.o z_spq.o z_io.o z_signal.o \
	z_time.o s_bb1.o s_pq.o s_seq.o z_bb4.o

qap_db2:$(QAP_DB2_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(QAP_DB2_OBJECTS) $(LFLAGS) -lm

RS_EXAMPLE_OBJECTS = rs_example.o z_base.o z_ps.o z_rs.o \
	z_par.o z_mp.o z_main.o z_time.o $(MD_OBJ) s_seq.o \
	z_lb.o z_io.o z_signal.o

rs_example:	$(RS_EXAMPLE_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(RS_EXAMPLE_OBJECTS) $(LFLAGS) -lm

JOB_EXAMPLE_OBJECTS = job_example.o z_base.o z_par.o z_main.o $(MD_OBJ)

job_example:	$(JOB_EXAMPLE_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(JOB_EXAMPLE_OBJECTS) $(LFLAGS)

CIS_OBJECTS = z_main.o cis_main.o z_base.o z_par.o z_mp.o z_ps.o \
		z_enumps.o cis_base.o z_lb.o s_seq.o z_io.o \
		z_time.o z_rs.o z_adjlist.o z_ps2d.o $(MD_OBJ)
cis:	$(CIS_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(CIS_OBJECTS) -lm $(LFLAGS)
#	cis < $(SOURCE)/data/cis1 |  sed -e '1,/num:/d' >$(SOURCE)/ps1

PMBT_OBJECTS = z_main.o pmbt_main.o pm_both.o z_base.o z_par.o z_mp.o z_ps.o \
		z_enumps.o z_lb.o s_seq.o z_signal.o \
		z_time.o z_bt1.o z_bt2.o $(MD_OBJ) z_io.o
pmbt:	$(PMBT_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(PMBT_OBJECTS) -lm $(LFLAGS)

PMRS_OBJECTS = z_main.o pmrs_main.o pm_both.o z_base.o z_par.o z_mp.o z_ps.o \
		z_enumps.o cis_base.o z_lb.o s_seq.o z_signal.o \
		z_time.o z_rs.o z_adjlist.o z_ps2d.o $(MD_OBJ) z_io.o
pmrs:	$(PMRS_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(PMRS_OBJECTS) -lm $(LFLAGS)

EST_OBJECTS = z_main.o est_main.o z_base.o z_par.o z_mp.o \
		z_ps.o z_enumps.o z_lb.o s_seq.o z_io.o \
		z_time.o z_rs.o z_ps2d.o $(MD_OBJ)
est:	$(EST_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(EST_OBJECTS) -lm $(LFLAGS)
#	est < $(SOURCE)/data/est1 |  sed -e '1,3d' >$(SOURCE)/ps1

NQ_OBJECTS = z_main.o nq_main.o z_base.o z_bt1.o z_bt2.o z_par.o z_mp.o \
		z_ps.o s_seq.o z_lb.o z_io.o \
		z_enumps.o z_time.o $(MD_OBJ)
nq:	$(NQ_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(NQ_OBJECTS) -lm $(LFLAGS)
#	nq |  sed -e '1,2d' >$(SOURCE)/ps1

PA_OBJECTS = z_main.o pa_main.o z_base.o z_lb.o z_par.o z_mp.o z_ps.o \
		pa_base.o z_bt1.o z_bt2.o s_seq.o z_io.o \
		z_time.o $(MD_OBJ)
pa:	$(PA_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(PA_OBJECTS) $(LFLAGS)
#	mpirun -np 2 pa 1

GU_OBJECTS = z_main.o gu_main.o z_base.o z_lb.o z_par.o z_mp.o z_ps.o \
		z_bt1.o z_bt2.o s_seq.o z_time.o z_io.o $(MD_OBJ)
gu:	$(GU_OBJECTS)
	rm -f $@
	$(CC) $(CFLAGS) -o $@ $(GU_OBJECTS) $(LFLAGS)

VC_BASEOBJ = z_time.o vc_base.o vc_lb.o vc_br.o vc_ub.o z_main.o \
	z_base.o s_bb1.o s_pq.o z_ps.o z_par.o z_mp.o z_spq.o vc_init.o \
	z_bb1.o z_bb2.o s_seq.o z_bb3.o z_lb.o z_io.o z_signal.o $(MD_OBJ) \
	z_bb4.o

VC_OBJECTS = $(VC_BASEOBJ) vc_main.o vc_io.o
vc:	$(VC_OBJECTS)
	$(CC) $(CFLAGS) -o $@ $(VC_OBJECTS) $(LFLAGS) -lm

VC_GEN_OBJECTS = vc_gen.o
vc_gen:	$(VC_GEN_OBJECTS)
	$(CC) $(CFLAGS) -o vc_gen $(VC_GEN_OBJECTS) $(LFLAGS)

PQ_OBJECTS = pq.o s_pq.o z_time.o
pq:	$(PQ_OBJECTS)
	$(CC) $(CFLAGS) -o pq $(PQ_OBJECTS)

JOB_EXAMPLE_CLN = job_example.cln z_base.cln z_par.cln \
	z_md_mpe.cln z_dsp_ss.cln

job_example.lod: $(JOB_EXAMPLE_CLN)
	g96k $(DSP_LOPTS) -j "-OY:130000" -o job_example.cld \
             $(JOB_EXAMPLE_CLN)
	chkstack
	cldlod job_example.cld > job_example.lod
	rm job_example.cld

VC_CLN = vc_base.cln vc_lb.cln vc_br.cln vc_ub.cln \
	z_base.cln z_bb.cln s_pq.cln z_ps.cln z_par.cln z_dsp_mb.cln \
	z_dsp_mb_ss.cln vc_init.cln z_bbp.cln
vc.lod: $(VC_CLN)
	g96k $(DSP_LOPTS) -j "-OY:130000" -o vc.cld $(VC_CLN)
	chkstack
	cldlod vc.cld > vc.lod
	rm vc.cld

# ------------------------------------------------------------------------
# ZRAM rules
# ----------

# make host- and slave-stubs using troll

z_dsp_hs.c z_dsp_ss.c: z_dsp.h
	rm -f z_dsp_??.c
	csh -c 'cd $(SOURCE); troll "z"_dsp.h'
	csh -c 'if (! -f z_dsp_hs.c) mv $(SOURCE)/z_dsp_??.c .'

# DSP stack
# "-OY:13E000"	small stack
# "-OY:130000"	bigger stack
# smaller -OY -> bigger stack

# ------------------------------------------------------------------------
# DO NOT DELETE THIS LINE -- make depend depends on it.

bb_example.o: z_base.h
bb_example.o: z_bb.h z_ps.h z_io.h z_signal.h
cis_base.o: z_base.h
cis_base.o: z_rs.h z_ps.h z_lb.h z_par.h s_seq.h z_io.h
cis_base.o: z_enumps.h z_time.h z_adjlist.h z_ps2d.h cis_base.h
cis_main.o: z_enumps.h z_base.h
cis_main.o: z_par.h z_time.h cis_base.h z_adjlist.h
cis_main.o: z_ps2d.h z_rs.h z_ps.h z_lb.h s_seq.h z_io.h
est_main.o: z_base.h
est_main.o: z_rs.h z_ps.h z_lb.h z_par.h s_seq.h z_io.h
est_main.o: z_enumps.h z_time.h z_ps2d.h
gu_main.o: z_bt.h z_base.h
gu_main.o: z_ps.h z_io.h z_time.h
gu_main.o: z_signal.h z_par.h
guc_main.o: z_bt.h z_base.h
guc_main.o: z_ps.h z_io.h z_time.h
guc_main.o: z_signal.h z_par.h
job_example.o: z_base.h
job_example.o: z_par.h
knapsack.o: z_base.h
knapsack.o: z_bb.h z_ps.h
lb_example.o: z_lb.h z_base.h
lb_example.o: z_ps.h z_par.h s_seq.h z_io.h
merg.o: z_base.h s_pq.h
nq_main.o: z_base.h z_bt.h z_ps.h z_enumps.h z_par.h
nq_main.o: z_time.h z_lb.h s_seq.h z_io.h
pa_base.o: pa_base.h z_base.h
pa_main.o: z_base.h
pa_main.o: z_bt.h z_ps.h z_par.h pa_base.h z_time.h
pa_main.o: z_lb.h s_seq.h z_io.h
pd.o: prs_mp.h
pm_both.o: pm_both.h z_base.h
pmbt_main.o: z_io.h z_base.h
pmbt_main.o: z_time.h z_enumps.h z_signal.h pm_both.h z_bt.h z_ps.h z_par.h
pmrs_main.o: z_io.h z_base.h
pmrs_main.o: z_time.h z_enumps.h cis_base.h z_adjlist.h z_ps2d.h z_rs.h
pmrs_main.o: z_ps.h z_lb.h z_par.h s_seq.h z_signal.h pm_both.h
pq.o: z_time.h s_pq.h
prs.o: z_base.h
prs.o: z_par.h z_rs.h z_ps.h z_lb.h s_seq.h z_io.h
prs.o: z_time.h prs_base.h prs_mp.h z_signal.h
prs_base.o: prs_base.h z_base.h
prs_base.o: z_par.h prs_mp.h z_io.h z_rs.h z_ps.h
prs_base.o: z_lb.h s_seq.h
prs_mp.o: prs_mp.h
prs_single.o: prs_single.h
qap_comm.o: qap_comm.h
qap_comm.o: qap_qappp.h z_base.h z_bb.h z_ps.h
qap_comm.o: qap_matrix.h
qap_db2.o: qap_qap.h qap_matrix.h
qap_db2.o: qap_qappp.h z_base.h z_bb.h z_ps.h qap_lap.h
qap_db2.o: qap_comm.h z_time.h z_io.h z_signal.h
qap_lap.o: qap_matrix.h qap_lap.h
qap_matrix.o: qap_matrix.h
qap_qap.o: qap_qap.h
qap_qap.o: qap_matrix.h qap_qappp.h z_base.h z_bb.h
qap_qap.o: z_ps.h qap_comm.h z_time.h z_io.h z_signal.h
qap_qappp.o: qap_matrix.h
qap_qappp.o: qap_lap.h qap_qappp.h z_base.h z_bb.h
qap_qappp.o: z_ps.h qap_sort.h
qap_sort.o: qap_matrix.h
rs_example.o: z_base.h
rs_example.o: z_rs.h z_ps.h z_lb.h z_par.h s_seq.h
rs_example.o: z_io.h
rv.o: z_base.h z_par.h z_rs.h
rv.o: z_ps.h z_lb.h s_seq.h z_io.h z_time.h prs_base.h prs_mp.h z_signal.h
s_bb1.o: z_base.h z_bb.h z_ps.h s_pq.h z_time.h
s_pq.o: s_pq.h
s_seq.o: s_seq.h z_base.h
s_seq.o: z_par.h
vc_base.o: z_base.h vc_base.h
vc_br.o: vc_br.h z_base.h
vc_br.o: z_bb.h z_ps.h vc_base.h vc_lb.h
vc_init.o: z_bb.h z_base.h
vc_init.o: z_ps.h vc_br.h vc_base.h vc_ub.h z_signal.h
vc_io.o: vc_io.h vc_base.h
vc_io.o: z_base.h
vc_lb.o: z_bb.h z_base.h
vc_lb.o: z_ps.h vc_base.h vc_lb.h
vc_main.o: z_bb.h
vc_main.o: z_base.h z_ps.h z_time.h z_par.h z_io.h
vc_main.o: z_signal.h vc_base.h vc_io.h vc_lb.h vc_br.h vc_ub.h vc_init.h
vc_ub.o: z_bb.h z_base.h
vc_ub.o: z_ps.h vc_base.h vc_ub.h
vr16.o: prs_base.h z_base.h
vr16.o: z_par.h prs_mp.h
z_adjlist.o: z_adjlist.h z_base.h
z_base.o: z_base.h
z_bb1.o: z_base.h z_bb.h z_ps.h z_spq.h s_pq.h z_par.h
z_bb1.o: z_mp.h z_time.h
z_bb2.o: z_bb.h z_base.h
z_bb2.o: z_ps.h z_par.h s_seq.h z_time.h
z_bb3.o: z_base.h z_bb.h z_ps.h z_lb.h z_par.h s_seq.h
z_bb3.o: z_io.h z_mp.h
z_bb4.o: z_bb.h z_base.h z_ps.h z_lb.h z_par.h s_seq.h
z_bb4.o: z_io.h
z_bt1.o: z_bt.h z_base.h
z_bt1.o: z_ps.h z_lb.h z_par.h s_seq.h z_io.h z_mp.h
z_bt2.o: z_bt.h z_base.h
z_bt2.o: z_ps.h z_lb.h z_par.h s_seq.h z_io.h z_mp.h
z_enumps.o: z_enumps.h z_base.h
z_enumps.o: z_io.h
z_io.o: z_io.h z_base.h
z_io.o: z_par.h z_md.h
z_lb.o: z_lb.h z_base.h z_ps.h
z_lb.o: z_par.h s_seq.h z_io.h z_mp.h z_time.h
z_main.o: z_par.h z_base.h z_par_intern.h z_md.h
z_md_mpi.o: z_md.h z_base.h
z_md_mpi.o: z_par.h z_par_intern.h
z_md_para.o: z_md.h z_base.h
z_md_para.o: z_par.h z_par_intern.h
z_md_seq.o: z_md.h z_base.h
z_md_seq.o: z_par.h z_par_intern.h
z_mp.o: z_par_intern.h z_par.h
z_mp.o: z_base.h z_mp.h z_md.h
z_par.o: z_par_intern.h
z_par.o: z_par.h z_base.h z_md.h
z_ps.o: z_ps.h
z_ps2d.o: z_ps2d.h z_base.h
z_rs.o: z_rs.h z_base.h z_ps.h z_lb.h z_par.h s_seq.h
z_rs.o: z_io.h
z_signal.o: z_base.h z_par.h
z_signal.o: z_signal.h z_time.h
z_spq.o: z_par.h z_base.h z_mp.h z_spq.h s_pq.h
z_time.o: z_time.h z_base.h
