Philippe 08/07/2016: lfi2cdf: multiple bug corrections:
[MNH-git_open_source-lfs.git] / src / Rules.LXpgi.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 #
12 OPT_BASE   =  -g -Ktrap=fp -Mbackslash
13 # -Munixlogical 
14 # -Mrecursive -mcmodel=medium
15 OPT_PERF0  =  -O0 -Kieee
16 OPT_PERF2  =  -O2 -Kieee
17 #OPT_CUDA  =  -O2 -Mcuda=keepgpu -ta=nvidia,cc20,cuda3.1,host,time -Minfo=accel,intensity,all,ccff  
18 #OPT_CUDA  =  -O3 -fast -ta=nvidia,cc20,cuda4.2,keepgpu,host -Minfo=accel,all,intensity,ccff 
19 OPT_CUDA  =  -O2 -Kieee -nofma -ta=host,nvidia,nofma,cc20,cc35,cuda5.5 -Minfo=ccff,all,intensity -Mprof=ccff 
20 #OPT_CUDA  =  -O2 -Kieee -ta=host,nvidia,cc20,cuda4.2 -Minfo=ccff,all,intensity
21
22 OPT_CHECK  =  -C 
23 OPT_PROF   =  -Mprof=time,ccff
24 OPT_I8     =  -i8
25 OPT_R8     =  -r8
26 #
27 IGNORE_OBJS += pgprof.o
28 #
29 # Real/integer 4/8 option
30 #
31 MNH_REAL  ?=R8
32 MNH_INT   ?=4
33 LFI_RECL  ?=512
34 #
35 ifneq "$(MNH_REAL)" "R4"
36 OPT_BASE           += $(OPT_R8)
37 CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
38 endif
39 #
40 OPT_BASE_I4       := $(OPT_BASE)
41 ifeq "$(MNH_INT)" "8"
42 OPT_BASE          += $(OPT_I8)
43 LFI_INT           ?=8
44 MNH_MPI_RANK_KIND ?=8
45 else
46 MNH_MPI_RANK_KIND ?=4
47 LFI_INT           ?=4
48 endif
49 #
50 #
51 OPT       = $(OPT_BASE) $(OPT_PERF2)
52 OPT0      = $(OPT_BASE) $(OPT_PERF0)
53 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
54 #
55 ifeq "$(OPTLEVEL)" "O2PROF"
56 OPT       = $(OPT_BASE) $(OPT_PERF2) $(OPT_PROF)
57 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_PROF)
58 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(OPT_PROF)
59 endif
60 ifeq "$(OPTLEVEL)" "DEBUG"
61 OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
62 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
63 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
64 endif
65
66 ifeq "$(OPTLEVEL)" "CUDA"
67 OPT       = $(OPT_BASE) $(OPT_CUDA) 
68 OPT0      = $(OPT_BASE) $(OPT_CUDA) $(OPT_PERF0)
69 OPT_NOCB  = $(OPT_BASE) $(OPT_CUDA) 
70 endif
71
72 ifeq "$(OPTLEVEL)" "CUDA_DB"
73 OPT_CUDA  =  -O0 -Kieee -ta=host,nvidia,cc20,cuda4.2 -Minfo=ccff,all,intensity
74 OPT       = $(OPT_BASE) $(OPT_CUDA) 
75 OPT0      = $(OPT_BASE) $(OPT_CUDA)
76 OPT_NOCB  = $(OPT_BASE) $(OPT_CUDA)
77 endif
78
79 #-Mcuda -ta=nvidia,host,time -Minfo=accel,intensity
80 #
81 FC = pgf90
82 ifeq "$(VER_MPI)" "MPIAUTO"
83 F90 = mpif90
84 else
85 F90 = pgf90
86 endif
87 #
88 F77FLAGS  =  $(OPT)
89 F77 = $(F90)
90 F90FLAGS  =  $(OPT)
91 FX90 = $(F90)
92 FX90FLAGS =  $(OPT)
93 #
94 LDFLAGS    =   -Wl,-warn-once $(OPT)
95 #
96 # preprocessing flags 
97 #
98 CPP = cpp -P -traditional -Wcomment
99 #
100
101 CPPFLAGS_SURFEX    =
102 CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
103 CPPFLAGS_RAD       =
104 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
105 CPPFLAGS_MNH       = -DMNH -DMNH_PGI
106
107 #
108 # Gribex flags
109 #
110 TARGET_GRIBEX=linux
111 CNAME_GRIBEX=_pgf77
112 #
113 # LIBTOOLS flags
114 #
115 #if MNH_TOOLS exists => compile the tools
116 MNH_TOOLS = yes
117 #
118 ##########################################################
119 #                                                        #
120 # Source of MESONH PACKAGE  Distribution                 #
121 #                                                        #
122 ##########################################################
123 #DIR_SURFEX   += ARCH_SRC/surfex.MNH-462
124
125 OBJS_NOCB +=  spll_isba.o
126 #
127 include Makefile.MESONH.mk
128 #
129 ##########################################################
130 #                                                        #
131 # extra VPATH, Compilation flag modification             #
132 #         systeme module , etc ...                       #
133 #         external precompiled module librairie          #
134 #         etc ...                                        #
135 #                                                        #
136 ##########################################################
137 OPT_PERF1  =  -O1 -Kieee -g
138 OBJS_O1= spll_modd_isba_n.o spll_pack_isba_patch_n.o spll_mode_construct_ll.o \
139          spll_init_surf_atm_n.o spll_mode_scatter_ll.o spll_convert_patch_teb.o \
140          spll_define_mask_n.o spll_del1dfield_ll.o spll_mode_fm.o spll_mode_gather_ll.o \
141          spll_phys_param_n.o \
142          spll_convect_updraft.o spll_convect_updraft_shal.o
143 $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
144
145 #
146 #MODULE_SYSTEM = /opt/F95_42/lib/
147 #VPATH += $(MODULE_SYSTEM)
148 #
149
150 ifneq "$(findstring 8,$(LFI_INT))" ""
151 OBJS_I8=spll_NEWLFI_ALL.o
152 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
153 endif
154
155 ifeq "$(MNH_INT)" "8"
156 OBJS_I4=spll_modd_netcdf.o
157 $(OBJS_I4) : OPT = $(OPT_BASE_I4)
158 endif
159