#
# this makefile is for gnu-make on a linux box
# wgrib2 rerequires grib2c (NCEP C grib2), jasper (jpeg), z and png libraries
#
#  REQUIRES GNU make
# mod 1/07 M. Schwarb
# mod 2/07 W. Ebisuzaki changes for *.dat files
# mod 8/07 W. Ebisuzaki cleanup
# mod 4/09 W. Ebisuzaki config.h, netcdf4
# mod 3/12 W. Ebisuzake openmp, gctpc

SHELL=/bin/sh


all:=$(patsubst %.c,%.o,$(wildcard *.c))
code:=$(filter-out fnlist.o,$(all))
o=$(wildcard *.o)
h:=grb2.h  wgrib2.h fnlist.h config.h
options=$(wildcard [A-Z]*.c)
CODE_TABLE_DAT=$(wildcard CodeTable_[0-9].[0-9]*.dat)
FLAGS:=${CPPFLAGS} ${CFLAGS}
ARFLAGS=-ruv

wgrib2: $h ${all} fnlist.c
	${CC} -o wgrib2 ${FLAGS} ${all} ${LDFLAGS}
	rm Config.o

fast:	${code}
	touch fnlist.o fnlist.c fnlist.h
	${CC} -o wgrib2 ${FLAGS} ${all} ${LDFLAGS}
	rm Config.o

lib:	$h ${all} fnlist.c
	touch libwgrib2.a ; rm libwgrib2.a
	${CC} -c ${FLAGS} -DCALLABLE_WGRIB2 wgrib2.c
	${CC} -c ${FLAGS} -DCALLABLE_WGRIB2 fatal_error.c
	${CC} -c ${FLAGS} -DCALLABLE_WGRIB2 wgrib2_api.c
	ar ${ARFLAGS} libwgrib2.a *.o
	rm wgrib2.o fatal_error.o wgrib2_api.o

fnlist.c:	${options}
	./function.sh 

fnlist.h:	${options}
	./function.sh

Help.o:	Help.c wgrib2.h
	${CC} -c ${FLAGS} Help.c

CodeTable.o:	CodeTable.c ${CODE_TABLE_DAT}
	${CC} -c ${FLAGS} CodeTable.c

cname.o:	cname.c
	${CC} -c ${FLAGS} cname.c

Sec1.o:	Sec1.c code_table0.dat ncep_tableC.dat
	${CC} -c ${FLAGS} Sec1.c

gribtab.o:	gribtab.c gribtab.dat misc_gribtab.dat NDFD_gribtab.dat
	${CC} -c ${FLAGS} gribtab.c

Mod_grib.o:	Mod_grib.c NCEP_local_levels_test.h
	${CC} -c ${FLAGS} Mod_grib.c


.c.o:	$(*).c
	$(CC) -c ${FLAGS}  $*.c

clean:
	touch wgrib2
	rm ${o} wgrib2
