Philippe 08/07/2016: lfi2cdf: multiple bug corrections:
[MNH-git_open_source-lfs.git] / src / Rules.BG.mk
1 #MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 #MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
3 #MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
4 #MNH_LIC for details. version 1.
5 ##########################################################
6 #                                                        #
7 # Compiler Options                                       #
8 #                                                        #
9 ##########################################################
10 #OBJDIR_PATH=${workdir}
11 # -qsigtrap -qfloat=nans
12 # -qflttrap=enable:overflow:zerodivide:invalid
13 # -qextname 
14 #OPT_BASE  = -qflttrap=enable:overflow:zerodivide:invalid \
15 #            -qfloat=nans -qarch=450 -qmoddir=$(OBJDIR) \
16 #            -qautodbl=dbl4 -qzerosize -g -qfullpath -qspillsize=32648 \
17 #            -qinitauto=0 -qdpc=e -qmaxmem=-1
18
19 #OPT_BASE  = -qmoddir=$(OBJDIR) -qautodbl=dbl4 -qzerosize  
20 OPT_BASE  = -g -qautodbl=dbl4 -qzerosize -qextname=flush -qnohot -qnoescape \
21             -qsigtrap -qflttrap=overflow:zerodivide:invalid:enable -qfloat=nans -qarch=450
22 # -qnopic 
23
24 OPT_PERF0   = -O0 -qnooptimize -qkeepparm -qfullpath 
25 OPT_PERF2   = -O2 -qmaxmem=-1
26 OPT_CHECK = -C 
27 OPT_I8      = -qintsize=8 -qxlf77=intarg
28 OPT_I4      = -qintsize=4 
29 #
30 # Integer 4/8 option
31 #
32 MNH_INT   ?=4
33 LFI_RECL  ?=512
34 #
35 OPT_BASE_I4       := $(OPT_BASE)
36 ifeq "$(MNH_INT)" "8"
37 OPT_BASE          += $(OPT_I8)
38 LFI_INT           ?=8
39 MNH_MPI_RANK_KIND ?=8
40 else
41 MNH_MPI_RANK_KIND ?=4
42 LFI_INT           ?=4
43 endif
44 #
45 #
46 OPT       = $(OPT_BASE) $(OPT_PERF2) 
47 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
48 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
49 #
50 ifeq "$(OPTLEVEL)" "DEBUG"
51 OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
52 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
53 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
54 LIBS     += -L/bglocal/prod/TotalView/8.10.0-0/linux-power/lib/ -ltvheap_bluegene_p
55 endif
56 #
57 ifeq "$(OPTLEVEL)" "O3"
58 OPT_PERF3    = -O3 -qstrict -qmaxmem=-1
59 OPT       = $(OPT_BASE) $(OPT_PERF3) 
60 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
61 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF3)
62 endif
63 #            
64 ifeq "$(OPTLEVEL)" "O3SMP"
65 OPT_PREF3SMP = -O3 -qsmp -qstrict -qmaxmem=-1
66 OPT       = $(OPT_BASE) $(OPT_PERF3SMP) 
67 OPT0      = $(OPT_BASE) $(OPT_PERF0)    
68 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF3SMP)
69 endif
70 #            
71 #
72 ifeq "$(OPTLEVEL)" "O4"
73 OPT_PERF4    = -O4 
74 OPT       = $(OPT_BASE) $(OPT_PERF4) 
75 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
76 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF4)
77 endif
78 #
79 #
80 F90 = mpixlf95_r
81 F90FLAGS =       $(OPT) -qfree=f90 -qsuffix=f=f90 
82 F77 = $(F90)
83 F77FLAGS      =  $(OPT) -qfixed
84 FX90 = $(F90)
85 FX90FLAGS     =  $(OPT) -qfixed
86 FC = xlf_r
87 #
88 LDFLAGS   =  $(OPT) -Wl,--relax
89 AR = /bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin/ar 
90 #
91 # preprocessing flags 
92 #
93 CPP = cpp -P -traditional -Wcomment
94 CC  = mpixlc_r
95 #
96 CPPFLAGS_SURFEX    =
97 #CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_ISEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
98 CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_BSEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
99 CPPFLAGS_RAD       =
100 CPPFLAGS_NEWLFI    = -DLINUX  -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
101 CPPFLAGS_MNH       = -DAMAX1=MAX -DMNH
102 #
103 # Gribex flags
104 #
105 #TARGET_GRIBEX=rs6000
106 TARGET_GRIBEX=ibm_power4
107 CNAME_GRIBEX=""
108 #A64=A64
109 #
110 # LIBTOOLS flags
111 #
112 #if MNH_TOOLS exists => compile the tools
113 #MNH_TOOLS = no
114 #
115 ##########################################################
116 #                                                        #
117 # Source of MESONH PACKAGE  Distribution                 #
118 #                                                        #
119 ##########################################################
120 #DIR_SURFEX      += ARCH_SRC/surfex 
121 #DIR_MNH      += ARCH_SRC/bug_mnh_BG
122 #
123 include Makefile.MESONH.mk
124 #
125 ##########################################################
126 #                                                        #
127 # extra VPATH, Compilation flag modification             #
128 #         systeme module , etc ...                       #
129 #         external precompiled module librairie          #
130 #         etc ...                                        #
131 #                                                        #
132 ##########################################################
133 OBJS_NOCB += spll_prep_ideal_case.o spll_mesonh.o
134 $(OBJS_NOCB) : OPT = $(OPT_NOCB)
135 #
136 #IGNORE_OBJS += spll_abort.o spll_ch_make_lookup.o \
137 #spll_compute_ver_grid.o spll_convlfi.o spll_diag.o spll_example_fwd.o spll_latlon_to_xy.o \
138 #spll_prep_nest_pgd.o spll_prep_pgd.o spll_prep_real_case.o \
139 #spll_prep_surfex.o spll_rad1driv.o spll_rttov_ascii2bin_coef.o spll_rttovcld_testad.o spll_rttovcld_test.o \
140 #spll_rttovscatt_test.o spll_spawning.o spll_test_2_coef.o spll_test_coef.o spll_test_errorhandling.o \
141 #spll_test_q2v.o spll_xy_to_latlon.o spll_zoom_pgd.o 
142
143 ifneq "$(findstring 8,$(LFI_INT))" ""
144 OBJS_I8=spll_NEWLFI_ALL.o
145 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
146 endif
147
148 ifeq "$(MNH_INT)" "8"
149 OBJS_I4=spll_modd_netcdf.o
150 $(OBJS_I4) : OPT = $(OPT_BASE_I4)
151 endif
152