Philippe 19/11/2015: added missing rule for LFI_INT + new versions of compilers for...
[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 ifeq "$(MNH_INT)" "8"
36 OPT_BASE         += $(OPT_I8)
37 LFI_INT           ?=8
38 MNH_MPI_RANK_KIND ?=8
39 else
40 MNH_MPI_RANK_KIND ?=4
41 LFI_INT           ?=4
42 endif
43 #
44 #
45 OPT       = $(OPT_BASE) $(OPT_PERF2) 
46 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
47 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
48 #
49 ifeq "$(OPTLEVEL)" "DEBUG"
50 OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
51 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
52 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
53 LIBS     += -L/bglocal/prod/TotalView/8.10.0-0/linux-power/lib/ -ltvheap_bluegene_p
54 endif
55 #
56 ifeq "$(OPTLEVEL)" "O3"
57 OPT_PERF3    = -O3 -qstrict -qmaxmem=-1
58 OPT       = $(OPT_BASE) $(OPT_PERF3) 
59 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
60 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF3)
61 endif
62 #            
63 ifeq "$(OPTLEVEL)" "O3SMP"
64 OPT_PREF3SMP = -O3 -qsmp -qstrict -qmaxmem=-1
65 OPT       = $(OPT_BASE) $(OPT_PERF3SMP) 
66 OPT0      = $(OPT_BASE) $(OPT_PERF0)    
67 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF3SMP)
68 endif
69 #            
70 #
71 ifeq "$(OPTLEVEL)" "O4"
72 OPT_PERF4    = -O4 
73 OPT       = $(OPT_BASE) $(OPT_PERF4) 
74 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
75 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF4)
76 endif
77 #
78 #
79 F90 = mpixlf95_r
80 F90FLAGS =       $(OPT) -qfree=f90 -qsuffix=f=f90 
81 F77 = $(F90)
82 F77FLAGS      =  $(OPT) -qfixed
83 FX90 = $(F90)
84 FX90FLAGS     =  $(OPT) -qfixed
85 FC = xlf_r
86 #
87 LDFLAGS   =  $(OPT) -Wl,--relax
88 AR = /bgsys/drivers/ppcfloor/gnu-linux/powerpc-bgp-linux/bin/ar 
89 #
90 # preprocessing flags 
91 #
92 CPP = cpp -P -traditional -Wcomment
93 CC  = mpixlc_r
94 #
95 CPPFLAGS_SURFEX    =
96 #CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_ISEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
97 CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_BSEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
98 CPPFLAGS_RAD       =
99 CPPFLAGS_NEWLFI    = -DLINUX  -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
100 CPPFLAGS_MNH       = -DAMAX1=MAX -DMNH
101 #
102 # Gribex flags
103 #
104 #TARGET_GRIBEX=rs6000
105 TARGET_GRIBEX=ibm_power4
106 CNAME_GRIBEX=""
107 #A64=A64
108 ##########################################################
109 #                                                        #
110 # Source of MESONH PACKAGE  Distribution                 #
111 #                                                        #
112 ##########################################################
113 #DIR_SURFEX      += ARCH_SRC/surfex 
114 #DIR_MNH      += ARCH_SRC/bug_mnh_BG
115 #
116 include Makefile.MESONH.mk
117 #
118 ##########################################################
119 #                                                        #
120 # extra VPATH, Compilation flag modification             #
121 #         systeme module , etc ...                       #
122 #         external precompiled module librairie          #
123 #         etc ...                                        #
124 #                                                        #
125 ##########################################################
126 OBJS_NOCB += spll_prep_ideal_case.o spll_mesonh.o
127 $(OBJS_NOCB) : OPT = $(OPT_NOCB)
128 #
129 #IGNORE_OBJS += spll_abort.o spll_ch_make_lookup.o \
130 #spll_compute_ver_grid.o spll_convlfi.o spll_diag.o spll_example_fwd.o spll_latlon_to_xy.o \
131 #spll_prep_nest_pgd.o spll_prep_pgd.o spll_prep_real_case.o \
132 #spll_prep_surfex.o spll_rad1driv.o spll_rttov_ascii2bin_coef.o spll_rttovcld_testad.o spll_rttovcld_test.o \
133 #spll_rttovscatt_test.o spll_spawning.o spll_test_2_coef.o spll_test_coef.o spll_test_errorhandling.o \
134 #spll_test_q2v.o spll_xy_to_latlon.o spll_zoom_pgd.o 
135
136 ifneq "$(findstring 8,$(LFI_INT))" ""
137 OBJS_I8=spll_NEWLFI_ALL.o
138 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
139 endif
140