SHELL=/bin/sh

# This makefile is to create Post flat file from available and control XML file
# Currently support GFS, GFS GOES, GFS ANL, NMM, and NGAC
# See documentation EMC POST Performance Improvement Upgrade for information
# 2015/04       Lin Gan : First version
# 2015/10       Lin Gan : Add HRRR and RAP
# 2016/03       Lin Gan : Add GEFS and new control section tag using GEFS ctrl and GFS avail file

# Target flat file
GFSFLATFILENAME		= postxconfig-NT-GFS.txt
GFSGOESFLATFILENAME	= postxconfig-NT-GFS-GOES.txt
GFSANLFLATFILENAME	= postxconfig-NT-GFS-ANL.txt
GFSF00FLATFILENAME	= postxconfig-NT-GFS-F00.txt
GFSFLUXFLATFILENAME     = postxconfig-NT-GFS-FLUX.txt
GFSFLUXF00FLATFILENAME  = postxconfig-NT-GFS-FLUX-F00.txt
NMMFLATFILENAME		= postxconfig-NT-NMM.txt
NGACFLATFILENAME	= postxconfig-NT-NGAC.txt
#HRRRFLATFILENAME        = postxconfig-NT-HRRR.txt
GEFSFLATFILENAME        = postxconfig-NT-GEFS.txt
GEFSANLFLATFILENAME     = postxconfig-NT-GEFS-ANL.txt
GEFSF00FLATFILENAME     = postxconfig-NT-GEFS-F00.txt
FV3SARFLATFILENAME      = postxconfig-NT-fv3sar.txt
HAFSFLATFILENAME        = postxconfig-NT-hafs.txt
GFSTWOFLATFILENAME      = postxconfig-NT-GFS-TWO.txt
GFSTWOF00FLATFILENAME   = postxconfig-NT-GFS-F00-TWO.txt


# Source Post XML file
GFSAVAILXMLFILENAME	= post_avblflds.xml
GFSCTRLFILENAME		= postcntrl_gfs.xml
GFSGOESCTRLFILENAME	= postcntrl_gfs_goes.xml
GFSANLCTRLFILENAME	= postcntrl_gfs_anl.xml
GFSCTRLF00FILENAME	= postcntrl_gfs_f00.xml
GFSCTRLFLUXFILENAME     = postcntrl_gfs_flux.xml
GFSCTRLFLUXF00FILENAME  = postcntrl_gfs_flux_f00.xml 
NMMAVAILXMLFILENAME	= nam_post_avblflds.xml
NMMCTRLFILENAME		= nam_cntrl_cmaq.xml
NGACAVAILXMLFILENAME	= ngac_post_avblflds.xml
NGACCTRLFILENAME	= ngac_postcntrl.xml
#HRRRAVAILXMLFILENAME    = hrrr_post_avblflds.xml
#HRRRCTRLFILENAME        = hrrr_postcntrl.xml
GEFSAVAILXMLFILENAME    = post_avblflds.xml 
GEFSCTRLFILENAME        = postcntrl_gefs.xml
GEFSANLCTRLFILENAME     = postcntrl_gefs_anl.xml
GEFSCTRLF00FILENAME     = postcntrl_gefs_f00.xml
FV3SARAVAILXMLFILENAME  = fv3sar_post_avblflds.xml
FV3SARCTRLFILENAME      = fv3sar.xml
HAFSCTRLFILENAME        = hafs.xml
GFSTWOCTRLFILENAME      = postcntrl_gfs_two.xml
GFSTWOF00CTRLFILENAME   = postcntrl_gfs_f00_two.xml


# Post flat file generator
PERLXML			= PostXMLPreprocessor.pl

# CMD with param
PERLXMLGFS		= /usr/bin/perl $(PERLXML) $(GFSCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSFLATFILENAME)
PERLXMLGFSGOES		= /usr/bin/perl $(PERLXML) $(GFSGOESCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSGOESFLATFILENAME)
PERLXMLGFSANL		= /usr/bin/perl $(PERLXML) $(GFSANLCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSANLFLATFILENAME)
PERLXMLGFSF00		= /usr/bin/perl $(PERLXML) $(GFSCTRLF00FILENAME) $(GFSAVAILXMLFILENAME) $(GFSF00FLATFILENAME)
PERLXMLGFSFLUX          = /usr/bin/perl $(PERLXML) $(GFSCTRLFLUXFILENAME) $(GFSAVAILXMLFILENAME) $(GFSFLUXFLATFILENAME) 
PERLXMLGFSFLUXF00       = /usr/bin/perl $(PERLXML) $(GFSCTRLFLUXF00FILENAME) $(GFSAVAILXMLFILENAME) $(GFSFLUXF00FLATFILENAME)
PERLXMLNMM		= /usr/bin/perl $(PERLXML) $(NMMCTRLFILENAME) $(NMMAVAILXMLFILENAME) $(NMMFLATFILENAME)
PERLXMLNGAC		= /usr/bin/perl $(PERLXML) $(NGACCTRLFILENAME) $(NGACAVAILXMLFILENAME) $(NGACFLATFILENAME)
#PERLXMLHRRR		= /usr/bin/perl $(PERLXML) $(HRRRCTRLFILENAME) $(HRRRAVAILXMLFILENAME) $(HRRRFLATFILENAME)
PERLXMLGEFS		= /usr/bin/perl $(PERLXML) $(GEFSCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GEFSFLATFILENAME)
PERLXMLGEFSANL		= /usr/bin/perl $(PERLXML) $(GEFSANLCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GEFSANLFLATFILENAME)
PERLXMLGEFSF00		= /usr/bin/perl $(PERLXML) $(GEFSCTRLF00FILENAME) $(GFSAVAILXMLFILENAME) $(GEFSF00FLATFILENAME)
PERLXMLFV3SAR		= /usr/bin/perl $(PERLXML) $(FV3SARCTRLFILENAME) $(FV3SARAVAILXMLFILENAME) $(FV3SARFLATFILENAME)
PERLXMLHAFS             = /usr/bin/perl $(PERLXML) $(HAFSCTRLFILENAME) $(FV3SARAVAILXMLFILENAME) $(HAFSFLATFILENAME)
PERLXMLGFSTWO           = /usr/bin/perl $(PERLXML) $(GFSTWOCTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSTWOFLATFILENAME)
PERLXMLGFSTWOF00        = /usr/bin/perl $(PERLXML) $(GFSTWOF00CTRLFILENAME) $(GFSAVAILXMLFILENAME) $(GFSTWOF00FLATFILENAME)


# File to look for change
GFSXMLS = $(GFSAVAILXMLFILENAME) $(GFSCTRLFILENAME)
GFSGOESXMLS = $(GFSAVAILXMLFILENAME) $(GFSGOESCTRLFILENAME)
GFSANLXMLS = $(GFSAVAILXMLFILENAME) $(GFSANLCTRLFILENAME)
GFSF00XMLS = $(GFSAVAILXMLFILENAME) $(GFSCTRLF00FILENAME)
GFSFLUXXMLS = $(GFSAVAILXMLFILENAME) $(GFSCTRLFLUXFILENAME)
GFSFLUXF00XMLS = $(GFSAVAILXMLFILENAME) $(GFSCTRLFLUXF00FILENAME)
NMMXMLS = $(NMMAVAILXMLFILENAME) $(NMMCTRLFILENAME)
NGACXMLS = $(NGACAVAILXMLFILENAME) $(NGACCTRLFILENAME)
#HRRRXMLS = $(HRRRAVAILXMLFILENAME) $(HRRRCTRLFILENAME)
GEFSXMLS = $(GFSAVAILXMLFILENAME) $(GEFSCTRLFILENAME)
GEFSANLXMLS = $(GFSAVAILXMLFILENAME) $(GEFSANLCTRLFILENAME)
GEFSF00XMLS = $(GFSAVAILXMLFILENAME) $(GEFSCTRLF00FILENAME)
FV3SARXMLS  = $(FV3SARAVAILXMLFILENAME) $(FV3SARCTRLFILENAME)
HAFSXMLS    = $(FV3SARAVAILXMLFILENAME) $(HAFSCTRLFILENAME)
GFSTWOXMLS  = $(GFSAVAILXMLFILENAME) $(GFSTWOCTRLFILENAME)
GFSTWOF00XMLS  = $(GFSAVAILXMLFILENAME) $(GFSTWOF00CTRLFILENAME)


# If action is triggered; run the following
all: $(GFSFLATFILENAME) $(GFSGOESFLATFILENAME) $(GFSANLFLATFILENAME) $(GFSF00FLATFILENAME) $(GFSFLUXFLATFILENAME) $(GFSFLUXF00FLATFILENAME) $(NMMFLATFILENAME) $(NGACFLATFILENAME) $(GEFSFLATFILENAME) $(GEFSANLFLATFILENAME) $(GEFSF00FLATFILENAME) $(FV3SARFLATFILENAME) $(HAFSFLATFILENAME) $(GFSTWOFLATFILENAME) $(GFSTWOF00FLATFILENAME) 
$(GFSFLATFILENAME): $(GFSXMLS)
	$(PERLXMLGFS)
$(GFSGOESFLATFILENAME): $(GFSGOESXMLS)
	$(PERLXMLGFSGOES)
$(GFSANLFLATFILENAME): $(GFSANLXMLS)
	$(PERLXMLGFSANL)
$(GFSF00FLATFILENAME): $(GFSF00XMLS)
	$(PERLXMLGFSF00)
$(GFSFLUXFLATFILENAME): $(GFSFLUXXMLS)
	$(PERLXMLGFSFLUX)
$(GFSFLUXF00FLATFILENAME): $(GFSFLUXF00XMLS)
	$(PERLXMLGFSFLUXF00)
$(NMMFLATFILENAME): $(NMMXMLS)
	$(PERLXMLNMM)
$(NGACFLATFILENAME): $(NGACXMLS)
	$(PERLXMLNGAC)
$(GEFSFLATFILENAME): $(GEFSXMLS)
	$(PERLXMLGEFS)
$(GEFSANLFLATFILENAME): $(GEFSANLXMLS)
	$(PERLXMLGEFSANL)
$(GEFSF00FLATFILENAME): $(GEFSF00XMLS)
	$(PERLXMLGEFSF00)
$(FV3SARFLATFILENAME): $(FV3SARXMLS)
	$(PERLXMLFV3SAR)
$(HAFSFLATFILENAME): $(HAFSXMLS)
	$(PERLXMLHAFS)
$(GFSTWOFLATFILENAME): $(GFSTWOXMLS)
	$(PERLXMLGFSTWO)
$(GFSTWOF00FLATFILENAME): $(GFSTWOF00XMLS)
	$(PERLXMLGFSTWOF00)


# Make clean

clean:
	@echo
	@echo '==== CLEAN ==================================================='
	/bin/rm -f $(GFSFLATFILENAME) $(GFSGOESFLATFILENAME) $(GFSANLFLATFILENAME) $(GFSF00FLATFILENAME) $(NMMFLATFILENAME) $(NGACFLATFILENAME) $(GEFSFLATFILENAME) $(GEFSANLFLATFILENAME) $(GEFSF00FLATFILENAME) $(FV3SARFLATFILENAME) $(HAFSFLATFILENAME) $(GFSTWOFLATFILENAME) $(GFSTWOF00FLATFILENAME)