.grib.c:;   ./grib2c.pl $<
# .req.grib:;  mars $<

grib_errors.cc : grib_errors.txt errors.pl
	./errors.pl
	cmp -s grib_errors.cc grib_errors.cc.new || (cp grib_errors.cc.new grib_errors.cc)
	cmp -s grib_api.h grib_api.h.new       || (cp grib_api.h.new grib_api.h)
	cmp -s eccodes.h eccodes.h.new         || (mv eccodes.h.new eccodes.h)
	cmp -s ../../fortran/grib_api_constants.h grib_api_constants.h.new || (mv grib_api_constants.h.new ../../fortran/grib_api_constants.h)
	cmp -s ../../fortran/eccodes_constants.h  eccodes_constants.h.new  || (mv eccodes_constants.h.new  ../../fortran/eccodes_constants.h)


proto:;-chmod +w eccodes_prototypes.h; mkptypes -A $(libeccodes_la_prototypes) $(libeccodes_extra_prototypes) > temp && mv temp eccodes_prototypes.h;rm -f temp

test:all;(cd ../tests; make tests)

templates:
	-chmod +w grib_templates.h
	./grib2c.pl ../templates/*.grib

grib_lex.cc : gribl.l grib_yacc.h
	$(LEX) gribl.l
	sed 's/yy/grib_yy/g' < $(LEX_OUTPUT_ROOT).cc | sed 's/static void grib_yyunput/void grib_yyunput/' > grib_lex1.cc
	sed 's/fgetc/getc/g' < grib_lex1.cc > grib_lex.cc
	rm -f grib_lex1.cc
	rm -f $(LEX_OUTPUT_ROOT).cc

grib_yacc.h grib_yacc.cc : griby.y
	$(YACC) -d griby.y
	sed 's/yy/grib_yy/g' < y.tab.c > grib_yacc1.cc
	sed 's/fgetc/getc/g' < grib_yacc1.cc > grib_yacc.cc
	rm -f grib_yacc1.cc
	sed 's/yy/grib_yy/g' < y.tab.h > grib_yacc.h
	rm -f y.tab.c y.tab.h

hash_keys:
	./make_hash_keys.sh

grib_accessor_classes_hash.cc:
	./make_accessor_class_hash.sh

SUFFIXES= .conf .grib .req .txt
