#-------------------------------------------------------------------------------
# Macros specific to the caltools package source tree
#-------------------------------------------------------------------------------
LIB_FILES	=	${BLDLIB}/libcaltools.a ${BLDLIB}/libcftools.a \
			${BLDLIB}/libftools.a ${BLDLIB}/libcfitsio.a \
			${BLDLIB}/libxanlib.a ${BLDLIB}/libreadline.a \
			${BLDLIB}/libhistory.a
LIB_FLAGS	=	-lcaltools -lcftools -lftools -lcfitsio -lxanlib \
			-lreadline -lhistory
PKG		=	caltools
LHEA_ID		=	caltools/host
TASKLIST	=	addarf addrmf brcaldb c_caldbflag c_caldbinfo \
			c_crtcif calcrpsf caldbflag caldbinfo chkcif cifcadd \
			cmppha col2img crcif dmprmf gcorpha gcorrmf genrsp \
			lstgood marfrmf mkcaldb mkcaldir mkcalinit mudcif \
			quzcif rbnrmf rbnrpsf rpsf2eef rpsfqdp rsp2rmf \
			st2rpsf stcal stw2pha udcif
#-------------------------------------------------------------------------------
# General LHEA package macros
#-------------------------------------------------------------------------------
PKGTOP		=	${LHEA_SRC}/${PKG}
BLDBIN		=	${PKGTOP}/bin.tmp
BLDINC		=	${LHEA_SRC}/include
BLDLIB		=	${LHEA_SRC}/lib.tmp
BLDTMP		=	${PKGTOP}/bldtmp

BINARY		=	${BLDBIN}/${DISPBIN}
DISPBIN		=	${PKG}_dispatch${BIN_EXT}
LIB_DEPENDS	=
LIB_PATH	=	-L${BLDLIB} -L${LHEA_LIB}
PKGLIB_ROOT	=	${PKG}_disp
PKGLIB		=	${PKGTOP}/host/lib${PKGLIB_ROOT}.a
PKG_SHLIB	=	${PKGTOP}/host/lib${PKGLIB_ROOT}${SHLIB_SUFFIX}
PKG_OPTION	=	standalone
PKGTARG		=	default
RANSTAMP	=	.timestamp-ranlib
SHELL		=	/bin/sh
TASKLIST_FILE	=	${PKGTOP}/tasklist.txt
#-------------------------------------------------------------------------------
# General LHEA package targets
#-------------------------------------------------------------------------------
default: ${PKG_OPTION}

all:
	@${MAKE} default clean LHEA_INC="${BLDINC}" \
		LIB_PATH="-L${BLDLIB}" PKGTARG="all"

update:
	@${MAKE} default BLDBIN="${LHEA_BIN}" BLDINC="${LHEA_INC}" \
		BLDLIB="${LHEA_LIB}" LIB_PATH="-L${LHEA_LIB}"

standalone: subdirs

subdirs: ${BLDBIN}
	@for dir in ${TASKLIST}; do \
		cd ${PKGTOP}/src/$$dir; ${MAKE} ${PKGTARG}; \
		status=$$?; if [ $$status -ne 0 ]; then exit $$status; fi; \
	done

# start dispatch block
dispatch: statlib
	@if [ "x${PKGTARG}" = xall ]; then \
		${MAKE} ${BINARY} LIB_DEPENDS="${LIB_FILES}"; \
	else \
		${MAKE} ${BINARY}; \
	fi

statlib:
	@${MAKE} subdirs PKGTARG="dispatch"
	@${MAKE} subdirs PKGTARG="insert"
	@${MAKE} ${RANSTAMP}

${RANSTAMP}: ${PKGLIB}
	${RANLIB} ${PKGLIB}
	@sleep 1; touch $@

${BINARY}: ${LIB_DEPENDS} ${PKG_SHLIB}
	${MAKE} ${PKG}_dispatch.o CFLAGS="${CFLAGS} ${SHLIB_CFLAGS}"
	${CC} ${CFLAGS} -o $@ ${PKG}_dispatch.o -L./ ${LIB_PATH} \
		${LD_FLAGS} ${SHLIB_LD_FLAGS} -l${PKGLIB_ROOT} \
		${LIB_FLAGS} ${CSTATLNK} ${LIB_SYSTEM}
	${STRIP} $@

${PKG}_dispatch.c: ${TASKLIST_FILE}
	@if [ -s $? ]; then lhea-dispwrap $@ $?; fi

${PKG_SHLIB}: ${PKGLIB}
	rm -rf ${BLDTMP}; mkdir ${BLDTMP}; cd ${BLDTMP}; \
	${AR} x ${PKGLIB}; rm -f _*; \
	${SHLIB_LD} -o lib${PKGLIB_ROOT}${SHLIB_SUFFIX} *; \
	mv lib${PKGLIB_ROOT}${SHLIB_SUFFIX} $@
	rm -rf ${BLDTMP}

update-object-list:
	@${MAKE} subdirs PKGTARG="update-object-list"

filelinks:
	@if [ -s ${TASKLIST_FILE} ]; then \
		for task in \
		`cat ${TASKLIST_FILE} | sort | uniq | sed -e 's: .*::'`; do \
		    rm -f ${BLDBIN}/$$task${BIN_EXT}; \
		    lhea-install ${BINARY} ${BLDBIN}/$$task${BIN_EXT} 'ln -s'; \
		done; \
	fi

${TASKLIST_FILE}:
	@touch ${TASKLIST_FILE}
# end dispatch block

install: ${LHEASOFT} help refdata
	@lhea-install ${PKGLIB} ${LHEA_LIB}/lib${PKGLIB_ROOT}.a mv
	@lhea-install ${PKG_SHLIB} \
		${LHEA_LIB}/lib${PKGLIB_ROOT}${SHLIB_SUFFIX} mv
	@lhea-install ${BINARY} ${LHEA_BIN}/${DISPBIN} mv
	@lhea-install ../${PKG}.par ${LHEASOFT}/syspfiles/${PKG}.par
	@${MAKE} filelinks BLDBIN="${LHEA_BIN}"
	@${MAKE} subdirs PKGTARG="install"
	@${MAKE} scripts

help:
	@lhea-install ${PKGTOP}/doc ${LHEA_HELP}
	@lhea-install ${PKGTOP}/help ${LHEA_HELP}

${BLDBIN} ${LHEASOFT}:
	mkdir $@

scripts:
	@echo "No Scripts in package ${PKG}"

force:

refdata:
	@echo "No Refdata files in package ${PKG}"


clean:
	@-echo "Cleaning ${PKG}"; \
	${MAKE} subdirs PKGTARG="clean"; \
	rm -rf ${BLDTMP} ${PKG}_dispatch.o

distclean:
	@-echo "Distcleaning ${PKG}"; \
	${MAKE} subdirs PKGTARG="distclean"; \
	rm -rf ${BINARY} ${PKGTOP}/bin.tmp ${BLDTMP} ${PKG}_dispatch.* \
		${PKGLIB} ${PKG_SHLIB} ${RANSTAMP} ${TASKLIST_FILE}

${LIB_FILES}:
	@cd ${BUILD_DIR}; \
	target=`echo $@ | sed 's:.*/::' | sed 's:\..*::'`; \
	${MAKE} $$target; \
	status=$$?; if [ $$status -ne 0 ]; then exit $$status; fi
#-------------------------------------------------------------------------------
# Targets specific to the caltools package source tree
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
