CC = gcc
CFLAGS=-Wall

# You will want to change HDFHOME for your installation
HDFHOME=${HOME}/HDF-4.2.13-rhel7

LIBDIR = ${HDFHOME}/lib
HDFLIBS = -lmfhdf -ldf -ljpeg -lz 
LIBS = -lm
INC =${HDFHOME}/include
INC2 = ../include
HDFSUBS = ../hdfsubs

all: aos_data_rd ccr_data_rd ccr_data_rd_oneliner get_attitude \
	get_position get_daily_position get_daily_position_GSE \
	get_hourly_attitude get_velocity get_aosr_struct \
	get_ACEepoch get_ACEepoch2 get_scclock get_position_GCI \
	get_start_clocks get_start_clocks_hires

get_attitude: get_attitude.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_attitude.o: get_attitude.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_position: get_position.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_position.o: get_position.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_position_GCI: get_position_GCI.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_position_GCI.o: get_position_GCI.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_daily_position: get_daily_position.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_daily_position_GSE: get_daily_position_GSE.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_hourly_attitude: get_hourly_attitude.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_daily_position.o: get_daily_position.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_daily_position_GSE.o: get_daily_position_GSE.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_hourly_attitude.o: get_hourly_attitude.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_velocity: get_velocity.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_velocity.o: get_velocity.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_aosr_struct: get_aosr_struct.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_aosr_struct.o: get_aosr_struct.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_ACEepoch: get_ACEepoch.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_ACEepoch.o: get_ACEepoch.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

scclocktoUT: scclocktoUT.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o level2_subs_leap.o \
	${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

scclocktoUT.o: scclocktoUT.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_ACEepoch2: get_ACEepoch2.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_ACEepoch2.o: get_ACEepoch2.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_scclock: get_scclock.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_scclock.o: get_scclock.c
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

aos_data_rd: aos_data_rd.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

aos_data_rd.o: aos_data_rd.c ${INC2}/aosr.h
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

ccr_data_rd: ccr_data_rd.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

ccr_data_rd_oneliner: ccr_data_rd_oneliner.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o \
        ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} ${HDFLIBS} ${LIBS} -o $@ -I${INC2}

ccr_data_rd.o: ccr_data_rd.c ${INC2}/ccr.h
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

ccr_data_rd_oneliner.o: ccr_data_rd_oneliner.c ${INC2}/ccr.h
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_start_clocks: get_start_clocks.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} \
	${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_start_clocks.o: get_start_clocks.c 
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_start_clocks_more: get_start_clocks_more.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} \
	${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_start_clocks_more.o: get_start_clocks_more.c 
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

get_start_clocks_hires: get_start_clocks_hires.o ancil_subs.o ${HDFSUBS}/hdf_aosr.o ${HDFSUBS}/hdf_ccr.o
	$(CC) ${CFLAGS} $^ -I${INC} -L${LIBDIR} \
	${HDFLIBS} ${LIBS} -o $@ -I${INC2}

get_start_clocks_hires.o: get_start_clocks_hires.c 
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

ancil_subs.o: ancil_subs.c ${INC2}/aosr.h ${INC2}/ccr.h
	$(CC) ${CFLAGS} -c $< -o $@ -I${INC} -I${INC2}

${HDFSUBS}/hdf_aosr.c: ${INC2}/aosr.h

${HDFSUBS}/hdf_aosr.o: ${HDFSUBS}/hdf_aosr.c
	$(CC) $(CFLAGS) -c $< -o $@ -I${INC2} -I${INC}

${HDFSUBS}/hdf_ccr.c: ${INC2}/ccr.h

${HDFSUBS}/hdf_ccr.o: ${HDFSUBS}/hdf_ccr.c
	$(CC) $(CFLAGS) -c $< -o $@ -I${INC2} -I${INC}
clean:
	rm -f *.o aos_data_rd ccr_data_rd get_attitude get_position get_position_GCI get_daily_position get_hourly_attitude \
	get_velocity  get_aosr_struct get_ACEepoch get_ACEepoch2 get_scclock \#* *\~
