Philippe 08/07/2016: lfi2cdf: multiple bug corrections:
[MNH-git_open_source-lfs.git] / src / Rules.LXifort.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=/home/escj/azertyuiopqsdfghjklm/wxcvbn/azertyuiopqsdfghjklmwxcvbn
11 #
12 OPT_BASE   =  -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback  -fp-model precise -switch fe_inline_all_arg_copy_inout
13 OPT_PERF0  =  -O0
14 OPT_PERF2  =  -O2
15 OPT_PERF3  =  -O3 -xHost
16 OPT_CHECK  =  -CB -ftrapuv 
17 OPT_I8     =  -i8
18 OPT_R8     =  -r8
19 #
20 # Real/integer 4/8 option
21 #
22 MNH_REAL  ?=R8
23 MNH_INT   ?=4
24 LFI_RECL  ?=512
25 #
26 ifneq "$(MNH_REAL)" "R4"
27 OPT_BASE           += $(OPT_R8)
28 CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
29 endif
30 #
31 OPT_BASE_I4       := $(OPT_BASE)
32 ifeq "$(MNH_INT)" "8"
33 OPT_BASE          += $(OPT_I8)
34 LFI_INT           ?=8
35 MNH_MPI_RANK_KIND ?=8
36 else
37 MNH_MPI_RANK_KIND ?=4
38 LFI_INT           ?=4
39 endif
40 #
41 OPT       = $(OPT_BASE) $(OPT_PERF2) 
42 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
43 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
44 #
45 ifeq "$(OPTLEVEL)" "DEBUG"
46 OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
47 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
48 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
49 CFLAGS   += -g
50 endif
51 ifeq "$(OPTLEVEL)" "O2PAR"
52 PAR= -parallel -diag-file -par-report2
53 OPT       = $(OPT_BASE) $(OPT_PERF2) $(PAR)
54 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(PAR)
55 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(PAR)
56 endif
57 ifeq "$(OPTLEVEL)" "O2NOVEC"
58 OPT       = $(OPT_BASE) $(OPT_PERF2) -no-vec
59 OPT0      = $(OPT_BASE) $(OPT_PERF0) -no-vec
60 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) -no-vec
61 endif
62 ifeq "$(OPTLEVEL)" "O3"
63 OPT       = $(OPT_BASE) $(OPT_PERF3)
64 OPT0      = $(OPT_BASE) $(OPT_PERF0)
65 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF3)
66 endif
67 #
68 #
69 FC = ifort
70 ifeq "$(VER_MPI)" "MPIAUTO"
71 ifneq "$(findstring TAU,$(XYZ))" ""
72 F90 = tau_f90.sh 
73 export TAU_MAKEFILE?=/home/escj/PATCH/TAU/TAU-2.21.1-IFORT10-OMPI152-THREAD/x86_64/lib/Makefile.tau-mpi
74 LIBS += -lz 
75 else
76 F90 = mpif90
77 endif
78 else
79 ifeq "$(VER_MPI)" "MPIINTEL"
80 ifneq "$(findstring TAU,$(XYZ))" ""
81 F90 = tau_f90.sh 
82 export TAU_MAKEFILE?=/home/escj/PATCH/TAU/TAU-2.21.1-IFORT10-OMPI152-THREAD/x86_64/lib/Makefile.tau-mpi
83 LIBS += -lz 
84 else
85 F90 = mpiifort
86 endif
87 ifeq "$(MNH_INT)" "I8"
88 OPT_BASE         += -ilp64
89 endif
90 else
91 ifeq "$(VER_MPI)" "MPICRAY"
92 F90 = ftn
93 else
94 F90 = ifort
95 endif
96 endif
97 endif
98
99 F90FLAGS  =  $(OPT)
100 F77  = $(F90)
101 F77FLAGS  =  $(OPT) 
102 # -132
103 FX90 = $(F90)
104 FX90FLAGS =  $(OPT)
105 # -132 
106 #
107 #LDFLAGS    =  -Wl,-noinhibit-exec  -Wl,-warn-once $(PAR)
108 LDFLAGS    =   -Wl,-warn-once $(PAR) $(OPT_BASE)
109 #
110 # preprocessing flags 
111 #
112 CPP = cpp -P -traditional -Wcomment
113 #
114 CPPFLAGS_SURFEX    =
115 CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
116 CPPFLAGS_RAD       =
117 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
118 CPPFLAGS_MNH       = -DMNH 
119 ifdef VER_GA
120 CPPFLAGS_SURCOUCHE += -DMNH_GA
121 INC                += -I${GA_ROOT}/include
122 LIBS               += -L${GA_ROOT}/lib -larmci -lga -lgfortran
123 endif
124 #
125 # Gribex flags
126 #
127 TARGET_GRIBEX=linux
128 CNAME_GRIBEX=ifort
129 #
130 # LIBTOOLS flags
131 #
132 #if MNH_TOOLS exists => compile the tools
133 MNH_TOOLS = yes
134 #
135 ##########################################################
136 #                                                        #
137 # Source of MESONH PACKAGE  Distribution                 #
138 #                                                        #
139 ##########################################################
140 #DIR_SURCOUCHE   += ARCH_SRC/bug_surcouche
141 #DIR_MNH         += ARCH_SRC/bug_mnh
142 #DIR_RAD         += ARCH_SRC/bug_rad
143 #DIR_SURFEX      += ARCH_SRC/surfex
144 #
145 include Makefile.MESONH.mk
146 #
147 ##########################################################
148 #                                                        #
149 # extra VPATH, Compilation flag modification             #
150 #         systeme module , etc ...                       #
151 #         external precompiled module librairie          #
152 #         etc ...                                        #
153 #                                                        #
154 ##########################################################
155 # Juan & Maud 20/03/2008 --> Ifort 10.1.008 Bug O2 optimization
156 ifneq "$(OPTLEVEL)" "DEBUG"
157 OPT_PERF1  =  -O1 
158 OBJS_O1= spll_schu.o spll_ps2str.o spll_p_abs.o spll_ini_one_way_n.o spll_urban_solar_abs.o
159 $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
160 endif
161
162 ifneq "$(findstring 8,$(LFI_INT))" ""
163 OBJS_I8=spll_NEWLFI_ALL.o
164 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
165 endif
166
167 ifeq "$(MNH_INT)" "8"
168 OBJS_I4=spll_modd_netcdf.o
169 $(OBJS_I4) : OPT = $(OPT_BASE_I4)
170 endif
171