UNAME	:=	$(shell /bin/uname)
include ../templates/template.$(UNAME)

# ---------------------------------------------------------------------
# RCSID		: 	$Id: Makefile,v 1.33 2003/09/10 22:34:02 bja Exp $
# Project	:	xdphys
# Filename	:	Makefile
# Desc		:	Makefile for xdphys progs
# ---------------------------------------------------------------------


OSFULL := $(shell uname -a)
DATE := $(shell date)

#------------------------------------------------------------------------

DEFINES      = -DARCH=\"`arch`\" -DSANAL -DNR -DSS_TOOLS \
				$(DIGATT) $(BITS) $(WORDS) $(OS) $(TEST) $(EXTRA)

# -----------------------------------------------------------------------
# CFLAGS for different operating systems
#------------------------------------------------------------------------
ifeq "$(UNAME)" "Linux"
CFLAGS  = 	-Wall -D_GNU_SOURCE $(CDEBUG)  -DFULLVERSION=\"$(FULLVERSION)\" \
	-DFILE_FORMAT_VERSION=\"$(FILE_FORMAT_VERSION)\"
else
ifeq "$(UNAME)" "SunOS"
CFLAGS     = $(CDEBUG) -D_GNU_SOURCE -DFULLVERSION=\"$(FULLVERSION)\" \
	-DFILE_FORMAT_VERSION=\"$(FILE_FORMAT_VERSION)\"
endif
endif

#-------------------------------------------------------------------------


OBJS = \
	addacal.o \
	atgraph.o \
	autolog.o \
	parms.o \
	atmisc.o \
	button.o \
	Canvas.o \
	synthlib.o \
	CircPerc.o \
	clock.o \
	clockbar.o \
	comments.o \
	copyright.o \
	cutpaste.o \
	dataio.o \
	dloop.o \
	dock.o \
	dsp.o \
	dynraster.o \
	fdobj.o \
	FileNom.o \
	fopen2.o \
	getfile.o \
	iviewer.o \
	keeper.o \
	locks.o \
	match.o \
	mathfns.o \
	menu.o \
	misc.o \
	mod_gen_util.o \
	notepad.o \
	fd.o \
	fd1.o \
	pop.o \
	runstop.o \
	signals.o \
	sleep.o \
	slider.o \
	smenu.o \
	ss_user.o \
	statfns.o \
	statline.o \
	svars.o \
	systems.o \
	unittrace.o \
	Wave.o \
	waver.o \
	waveio.o \
	ws.o \
	xloop.o \
	xstuff.o \
	plotter.o

XCALIBUR_PM_OBJS = \
	xcalibur_pms.o \
	pm_fr.o \
	pm_cal.o \
	pm_int.o \
	pm_bw.o 

XCALIBUR_MOD_OBJS = \
	mod_fr.o \
	mod_cal.o \
	mod_int.o \
	mod_bw.o

XDPHYS_PM_OBJS = \
	pm_bf.o \
	pm_cf.o \
	pm_abi.o \
	pm_itd.o \
	pm_fiid.o \
	pm_bc.o \
	pm_bam.o \
	pm_beats.o \
	pm_iid.o \
	pm_gen.o \
	pm_bja.o \
	pm_txt.o \
	pm_rover.o \
	pm_nop.o

XDPHYS_MOD_OBJS = \
	mod_cf.o \
	mod_fiid.o \
	mod_bam.o \
	mod_beats.o \
	mod_rig.o \
	mod_gen.o  \
	mod_click.o  \
	mod_bja.o 

XCALIBUR_OBJS = \
	$(XCALIBUR_PM_OBJS) \
	$(XCALIBUR_MOD_OBJS) \
	pm_txt.o \
	xcalibur.o \
	xcalibur_mods.o 

XDPHYS_OBJS = \
	xdphys.o \
	xdphys_mods.o \
	xdphys_pms.o \
	runscan.o \
	$(XCALIBUR_PM_OBJS) \
	$(XDPHYS_PM_OBJS) \
	$(XDPHYS_MOD_OBJS)

ifeq "$(UNAME)" "SunOS"
XDVIEW_OBJS = \
	xdview.o \
	xdphys_pms.o \
	getopt.o \
	getopt1.o \
	$(XCALIBUR_PM_OBJS) \
	$(XDPHYS_PM_OBJS)
else
XDVIEW_OBJS = \
	xdview.o \
	xdphys_pms.o \
	$(XCALIBUR_PM_OBJS) \
	$(XDPHYS_PM_OBJS)
endif

XCLOCKBAR_OBJS = \
	xclockbar.o \
	pm_txt.o \
	pm_cal.o

LIBS	   = \
	$(SSLIB) \
	$(ATPLOTTERLIB) \
	$(SANALLIB) \
	$(SYNTHLIB) \
	$(NRLIB) \
	$(PSDRIVERLIB) \
	$(ISERVERLIB) \
	$(XLIBS) -lm 

INCLUDES   = \
	-I. \
	-I$(ISERVERINC) \
	-I$(SANALINC) \
	-I$(ATPLOTTERINC) \
	-I$(SYNTHINC) \
	-I$(NRINC) \
	-I$(SSINC) \
	-I./bitmaps \
	-I$(PSDRIVERINC)

ARCHOBJS = $(addprefix $(UNAME)/,$(OBJS)) 
XDPHYS_ARCHOBJS = $(addprefix $(UNAME)/,$(XDPHYS_OBJS)) 
XCALIBUR_ARCHOBJS = $(addprefix $(UNAME)/,$(XCALIBUR_OBJS))
XDVIEW_ARCHOBJS = $(addprefix $(UNAME)/,$(XDVIEW_OBJS))
XCLOCKBAR_ARCHOBJS = $(addprefix $(UNAME)/,$(XCLOCKBAR_OBJS))

TARGETS = xdphys xcalibur xdview xclockbar

ARCH_TARGETS = $(addprefix ../bin/$(UNAME)/, $(TARGETS))
ARCH_XDPHYS = ../bin/$(UNAME)/xdphys
ARCH_XDVIEW = ../bin/$(UNAME)/xdview
ARCH_XCALIBUR = ../bin/$(UNAME)/xcalibur
ARCH_LIB_TARGETS = $(addprefix ../lib/$(UNAME)/, $(LIB_TARGETS))

XDPHYS = ../bin/$(UNAME)/xdphys
XCALIBUR = ../bin/$(UNAME)/xcalibur
XDVIEW = ../bin/$(UNAME)/xdview
XCLOCKBAR = ../bin/$(UNAME)/xclockbar

#-------------------------------------------------------------------------
# Targets
#-------------------------------------------------------------------------
all: do-it-all

ifeq (.depend.$(UNAME),$(wildcard .depend.$(UNAME)))
include .depend.$(UNAME)
do-it-all:	$(TARGETS)
else
do-it-all:	depend $(TARGETS)
endif

xdphys: ../bin/$(UNAME)/xdphys 
.PHONY: xdphys
xcalibur: ../bin/$(UNAME)/xcalibur
.PHONY: xcalibur
xdview: ../bin/$(UNAME)/xdview
.PHONY: xdview
xclockbar: ../bin/$(UNAME)/xclockbar
.PHONY: xclockbar

$(XDPHYS): $(ARCHOBJS) $(XDPHYS_ARCHOBJS) 
	$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(ARCHOBJS) \
		$(XDPHYS_ARCHOBJS) $(LIBS) $(DMALLOC)

$(XCALIBUR): $(ARCHOBJS) $(XCALIBUR_ARCHOBJS) 
	$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(ARCHOBJS) \
		$(XCALIBUR_ARCHOBJS) $(LIBS) $(DMALLOC)

$(XDVIEW): $(ARCHOBJS) $(XDVIEW_ARCHOBJS) 
	$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(ARCHOBJS) \
		$(XDVIEW_ARCHOBJS) $(LIBS) $(DMALLOC)

$(XCLOCKBAR): $(ARCHOBJS) $(XCLOCKBAR_ARCHOBJS) 
	$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(ARCHOBJS) \
		$(XCLOCKBAR_ARCHOBJS) $(LIBS) $(DMALLOC)

clean:
	$(RM) $(UNAME)/*.o core 

binclean: 
	$(RM) $(addprefix ../bin/$(UNAME)/,$(TARGETS))

depend: 
	$(RM) -f .depend.$(UNAME)
	$(AWK) -v UNAME=$(UNAME) -f depend.awk *.[ch]  > .depend.$(UNAME)
	#chgrp prog .depend.$(UNAME)
	chmod g+w .depend.$(UNAME)

install-saveold:
	if test -d $(INSTALL_BINDIR); then
		mv $(INSTALL_BINDIR) $(INSTALL_BINDIR).old
	fi

install-saveancient:
	if test -d $(INSTALL_BINDIR).old; then
		mv $(INSTALL_BINDIR).old $(INSTALL_BINDIR).ancient
	fi


install: $(ARCH_TARGETS)
	@$(INSTALL) -d -m 0755 $(INSTALL_BINDIR)
	@echo -n "Installing xdphys programs"
ifeq "$(STRIP)" "-s"
		@echo " (stripping):"
else
		@echo ":"
endif
	@for x in $(ARCH_TARGETS);\
		do\
			$(INSTALL) $(STRIP) -m 0555 $$x $(INSTALL_BINDIR);\
			echo "  $$x.";\
		done
	@echo "Done."

install-xdphys: $(ARCH_XDPHYS)
	@$(INSTALL) -d -m 0755 $(INSTALL_BINDIR)
	@echo -n "Installing xdphys"
ifeq "$(STRIP)" "-s"
		@echo " (stripping):"
else
		@echo ":"
endif
	@$(INSTALL) $(STRIP) -m 0555 $(ARCH_XDPHYS) $(INSTALL_BINDIR);
	@echo "Done."

install-xdview: $(ARCH_XDVIEW)
	@$(INSTALL) -d -m 0755 $(INSTALL_BINDIR)
	@echo -n "Installing xdview"
ifeq "$(STRIP)" "-s"
		@echo " (stripping):"
else
		@echo ":"
endif
	$(INSTALL) $(STRIP) -m 0555 $(ARCH_XDVIEW) $(INSTALL_BINDIR);
	@echo "Done."

install-xcalibur: $(ARCH_XCALIBUR)
	@$(INSTALL) -d -m 0755 $(INSTALL_BINDIR)
	@echo -n "Installing xcalibur"
ifeq "$(STRIP)" "-s"
		@echo " (stripping):"
else
		@echo ":"
endif
	@$(INSTALL) $(STRIP) -m 0555 $(ARCH_XCALIBUR) $(INSTALL_BINDIR);
	@echo "Done."

tags:
	ctags -idefgstuvx *.[ch]

rsync:
	 rsync -avuzb --exclude SunOS --exclude Linux --exclude RCS --exclude '*~' tyto::xdphys/src/ .

# ----------------------------------------------------------------------
# Explicit rules
# ----------------------------------------------------------------------
$(UNAME)/xdview.o: xdview.c
	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -c $< -o $@

./$(UNAME)/syntest.o: syntest.c
	$(CC) $(CFLAGS) $(DEFINES) -DCOMPILE_DATE="\"$(DATE)\"" \
		-DOSINFO="\"$(OSFULL)\"" -I/usr/local/lib -I. -I$(DAQINC) -c $< -o $@

./$(UNAME)/twotest.o: twotest.c
	$(CC) $(CFLAGS) $(DEFINES) -DCOMPILE_DATE="\"$(DATE)\"" \
		-DOSINFO="\"$(OSFULL)\"" -I/usr/local/lib -I. -I$(DAQINC) -c $< -o $@

# ----------------------------------------------------------------------
# Implicit rules
# ----------------------------------------------------------------------
$(UNAME)/%.o: %.c
	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) $(DMALLOCINC) -c $< -o $@
