#############################################################################
##                      Setup for building programs                        ##
#############################################################################

## Setup the different includes and preprocessor #defines we need.
INCLUDES=-I$(top_srcdir)/hdf/src        \
         -I$(top_srcdir)/mfhdf/libsrc   \
         -I$(top_srcdir)/mfhdf/port     \
         -I../libsrc
DEFINES=-DNDEBUG -DHDF
AM_CPPFLAGS=$(INCLUDES) $(DEFINES)

#############################################################################
##                          Programs to build                              ##
#############################################################################

bin_PROGRAMS = ncgen

if HDF_BUILD_FORTRAN
noinst_PROGRAMS = ctest0 ftest0
else 
noinst_PROGRAMS = ctest0
endif

## Information for building the "ncgen" program
ncgen_SOURCES = close.c escapes.c generate.c genlib.c getfill.c init.c      \
                load.c main.c ncgentab.c
ncgen_LDADD = ../libsrc/libmfhdf.a $(top_builddir)/hdf/src/libdf.a
ncgen_DEPENDENCIES = $(top_builddir)/hdf/src/libdf.a ../libsrc/libmfhdf.a

## Recipe for building the ncgentab.c file
ncgentab.c ncgentab.h: ncgen.h ncgen.y ncgenyy.c
	$(YACC) -d $(srcdir)/ncgen.y
	mv y.tab.c ncgentab.c
	mv y.tab.h ncgentab.h

ncgenyy.c: ncgen.l
	$(LEX) $(srcdir)/ncgen.l
	mv lex.yy.c ncgenyy.c

#############################################################################
##                            Documentation                                ##
#############################################################################

man1_MANS = ncgen.1

#############################################################################
##                   Testing -- Here there be dragons.                     ##
#############################################################################

NCDUMP=../ncdump/ncdump

if HDF_BUILD_FORTRAN
check: ncgen $(srcdir)/test0.cdl b-check c-check f-check
else
check: ncgen $(srcdir)/test0.cdl b-check c-check
endif

## Test the "-b" option of ncgen
b-check:	ncgen $(srcdir)/test0.cdl test1.cdl
	./ncgen -b test1.cdl
	$(NCDUMP) test1.nc > test2.cdl
	@if $(DIFF) test1.cdl test2.cdl; then                               \
	  echo "*** ncgen -b test successful ***";                          \
	else                                                                \
	  echo "*** ncgen -b test failed ***";                              \
	fi

## Test the "-c" option of ncgen
c-check:	test2.cdl ctest0
	./ctest0        # tests `-c' option, creates ctest0.nc
	$(NCDUMP) -n test1 ctest0.nc > ctest1.cdl
	@if $(DIFF) test1.cdl ctest1.cdl; then                              \
	  echo "*** ncgen -c test successful ***";                          \
	else                                                                \
	  echo "*** ncgen -c test failed  ***";                             \
	fi

if HDF_BUILD_FORTRAN
## Test the "-f" option of ncgen
f-check:	test1.cdl ftest0
	./ftest0
	$(NCDUMP) -n test1 ftest0.nc > ftest1.cdl
	@if $(DIFF) test1.cdl ftest1.cdl; then                              \
	  echo "*** ncgen -f test successful ***";                          \
	else                                                                \
	  echo "*** ncgen -f test failed (but roundoff differences are OK) ***"; \
	fi

ftest0:		ncgen test0.cdl netcdf.inc
	./ncgen -f -o ftest0.nc $(srcdir)/test0.cdl > test0.f
	$(F77) $(FFLAGS) -o $@ test0.f $(LDFLAGS) $(ncgen_LDADD) $(LIBS)
endif

netcdf.inc:
	ln -s ../fortran/$@ .

test1.cdl:	test0.nc
	$(NCDUMP) -n test1 test0.nc > $@

test0.nc:	ncgen $(srcdir)/test0.cdl
	./ncgen -b -o test0.nc $(srcdir)/test0.cdl

ctest0:		ncgen $(srcdir)/test0.cdl
	./ncgen -c -o ctest0.nc $(srcdir)/test0.cdl > test0.c
	$(COMPILE) -o $@ test0.c $(LDFLAGS) $(ncgen_LDADD) $(LIBS)

#############################################################################
##                            Miscellaneous                                ##
#############################################################################

## This was in the original Makefile.
vms-stuff:	ncgentab.h ncgentab.c ncgenyy.c
	cp $(srcdir)/ncgentab.h vmstab.h
	cp $(srcdir)/ncgentab.c vmstab.c
	cp $(srcdir)/ncgenyy.c vms_yy.c

#############################################################################
##                          And the cleanup                                ##
#############################################################################

DISTCLEANFILES = ctest0 ctest0.nc ctest1.cdl ftest0 ftest0.nc ftest1.cdl    \
                 ncgentab.c ncgentab.h ncgenyy.c netcdf.inc test0.c test0.f \
                 test0.nc test1.cdl test1.nc test2.cdl


syntax highlighted by Code2HTML, v. 0.9.1