1 | #makefile to build a wrf_io with netCDF |
---|
2 | |
---|
3 | OBJSL = wrf_io.o field_routines.o module_wrfsi_static.o |
---|
4 | OBJS = $(OBJSL) |
---|
5 | CODE = ext_ncd_get_dom_ti.code ext_ncd_get_var_td.code ext_ncd_get_var_ti.code ext_ncd_put_dom_ti.code ext_ncd_put_var_td.code ext_ncd_put_var_ti.code transpose.code |
---|
6 | FFLAGS = $(FCFLAGS) -I$(NETCDFPATH)/include -I../ioapi_share |
---|
7 | LIBS = -L$(NETCDFPATH)/lib -lnetcdf |
---|
8 | CPP1 = $(CPP) -C -P $(TRADFLAG) |
---|
9 | M4 = m4 -Uinclude -Uindex -Ulen |
---|
10 | AR = ar |
---|
11 | |
---|
12 | .SUFFIXES: .F90 .f .o .code |
---|
13 | |
---|
14 | all : libwrfio_nf.a |
---|
15 | |
---|
16 | libwrfio_nf.a: $(OBJS) $(CODE) |
---|
17 | /bin/rm -f $@ |
---|
18 | if [ "$(AR)" != "lib.exe" ] ; then \ |
---|
19 | $(AR) cr libwrfio_nf.a $(OBJSL) ; \ |
---|
20 | else \ |
---|
21 | $(AR) /out:libwrfio_nf.a $(OBJSL) ; \ |
---|
22 | fi |
---|
23 | $(RANLIB) $@ |
---|
24 | |
---|
25 | wrf_io.o: wrf_io.F90 $(CODE) |
---|
26 | grep nf_format_64bit $(NETCDFPATH)/include/netcdf.inc ;\ |
---|
27 | a=$$? ; export a ; \ |
---|
28 | if [ $$a -a "$$WRFIO_NCD_LARGE_FILE_SUPPORT" = "1" ] ; then \ |
---|
29 | $(CPP1) -DWRFIO_NCD_LARGE_FILE_SUPPORT -I../ioapi_share wrf_io.F90 | $(M4) - > wrf_io.f ; \ |
---|
30 | else \ |
---|
31 | $(CPP1) -I../ioapi_share wrf_io.F90 | $(M4) - > wrf_io.f ; \ |
---|
32 | fi |
---|
33 | $(FC) -o $@ $(FFLAGS) -c wrf_io.f |
---|
34 | |
---|
35 | |
---|
36 | module_wrfsi_static.o: module_wrfsi_static.F90 |
---|
37 | $(CPP1) -I../ioapi_share module_wrfsi_static.F90 > module_wrfsi_static.f |
---|
38 | $(FC) -o $@ $(FFLAGS) -c module_wrfsi_static.f |
---|
39 | |
---|
40 | # gfortran treats iargc as intrinsic, so get rid of external declaration in that case |
---|
41 | diffwrf: diffwrf.F90 |
---|
42 | x=`echo "$(FC)" | awk '{print $$1}'` ; export x ; \ |
---|
43 | if [ $$x = "gfortran" ] ; then \ |
---|
44 | echo removing external declaration of iargc for gfortran ; \ |
---|
45 | $(CPP1) -I$(NETCDFPATH)/include -I../ioapi_share diffwrf.F90 | sed '/integer *, *external.*iargc/d' > diffwrf.f ;\ |
---|
46 | else \ |
---|
47 | $(CPP1) -I$(NETCDFPATH)/include -I../ioapi_share diffwrf.F90 > diffwrf.f ; \ |
---|
48 | fi |
---|
49 | $(FC) -c $(FFLAGS) diffwrf.f |
---|
50 | @if [ \( -f ../../frame/wrf_debug.o \) -a \( -f ../../frame/module_wrf_error.o \) -a \( -f $(ESMF_MOD_DEPENDENCE) \) ] ; then \ |
---|
51 | echo "diffwrf io_netcdf is being built now. " ; \ |
---|
52 | if [ -f $(NETCDFPATH)/lib/libnetcdff.a ] ; then \ |
---|
53 | $(FC) $(FFLAGS) $(LDFLAGS) -o diffwrf diffwrf.o $(OBJSL) ../../frame/wrf_debug.o ../../frame/module_wrf_error.o $(ESMF_IO_LIB_EXT) $(LIBS) -lnetcdff ;\ |
---|
54 | else \ |
---|
55 | $(FC) $(FFLAGS) $(LDFLAGS) -o diffwrf diffwrf.o $(OBJSL) ../../frame/wrf_debug.o ../../frame/module_wrf_error.o $(ESMF_IO_LIB_EXT) $(LIBS) ;\ |
---|
56 | fi ; \ |
---|
57 | else \ |
---|
58 | echo "***************************************************************************** " ; \ |
---|
59 | echo "*** Rerun compile to make diffwrf in external/io_netcdf directory *** " ; \ |
---|
60 | echo "***************************************************************************** " ; \ |
---|
61 | fi |
---|
62 | |
---|
63 | field_routines.o: field_routines.F90 |
---|
64 | $(CPP1) -I../ioapi_share field_routines.F90 > field_routines.f |
---|
65 | $(FC) -o $@ $(FFLAGS) -c field_routines.f |
---|
66 | |
---|
67 | superclean: |
---|
68 | /bin/rm -f *.f *.o *.obj *.i testWRFWrite testWRFRead \ |
---|
69 | *.mod libwrfio_nf.a diffwrf |
---|