Philippe 08/07/2016: lfi2cdf: multiple bug corrections:
[MNH-git_open_source-lfs.git] / src / Rules.SX8.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 ifneq "$(findstring brodie,$(shell uname -n))" ""
11 OBJDIR_PATH=${workdir}
12 endif
13 #
14 #OPT_LIST = -R5 -Wf"-pvctl fullmsg -O infomsg -L fmtlist" -Wf"-L transform" -Wf"-L summary"
15 #OPT_BASE = -dw -Wf,'-A idbl4' -to $(OBJDIR) -P stack -Wf"-pvctl noassume loopcnt=1500000 vwork=stack " $(OPT_LIST)
16 OPT_BASE = -dw -Wf,-Nesc,'-A idbl4' -P stack -Wf"-pvctl noassume loopcnt=1500000 vwork=stack " $(OPT_LIST)
17 OPT_PERF0 = -C debug 
18 OPT_PERF2 = -C vsafe 
19 OPT_PERF3 = -C vopt
20 OPT_PERF4 = -C hopt
21 OPT_CHECK = -ePR -Wf"-init stack=nan" -Wf"-init heap=nan"
22 OPT_I8    = -ew
23 #
24 # Integer 4/8 option
25 #
26 MNH_INT   ?=4
27 LFI_RECL  ?=512
28 #
29 OPT_BASE_I4       := $(OPT_BASE)
30 ifeq "$(MNH_INT)" "8"
31 OPT_BASE          += $(OPT_I8)
32 LFI_INT           ?=8
33 MNH_MPI_RANK_KIND ?=8
34 else
35 MNH_MPI_RANK_KIND ?=4
36 LFI_INT           ?=4
37 endif
38 #
39 ifeq "$(OPTLEVEL)" "O2"
40 OPT       = $(OPT_BASE) $(OPT_PERF2) 
41 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
42 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
43 endif
44 #
45 ifeq "$(OPTLEVEL)" "O2PROF"
46 OPT       = $(OPT_BASE) $(OPT_PERF2) -ftrace
47 OPT0      = $(OPT_BASE) $(OPT_PERF0) -ftrace
48 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) -ftrace
49 endif
50 #
51 ifeq "$(OPTLEVEL)" "DEBUG"
52 OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
53 OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
54 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
55 #LDFLAGS   +=  -Wl"-f nan" 
56 endif
57 #
58 ifeq "$(OPTLEVEL)" "O4"
59 OPT       = $(OPT_BASE) $(OPT_PERF4) 
60 OPT0      = $(OPT_BASE) $(OPT_PERF0)
61 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF4)
62 # routines with probleme with inlining
63 OBJS_NI += spll_ecmwf_radiation_vers2.o spll_slow_terms.o
64 $(OBJS_NI) :  OPT =  $(OPT_BASE)  $(OPT_PERF4) -Wf,-Ni
65 # problem for NPROC >= 4 & reprod_sum
66 OBJS2 += spll_mode_construct_ll.o \
67 spll_mode_repro_sum.o spll_dotprod.o \
68 spll_ini_radiations_ecmwf.o spll_mass_leak.o spll_mode_sum_ll.o spll_modi_sum_ll.o \
69 spll_p_abs.o spll_reduce_sum_0dd_ll.o spll_reduce_sum_1dd_ll.o spll_relaxdef.o \
70 spll_set_ref.o spll_surf_solar_sum.o spll_test_double_double.o spll_trid.o
71 $(OBJS2) :  OPT =  $(OPT_BASE)  $(OPT_PERF2) 
72 endif
73
74 F90 = sxmpif90 -clear
75 F90FLAGS  =    $(OPT) 
76 F77 = $(F90)     
77 F77FLAGS  =    -f0 $(OPT)
78 FX90 = $(F90)        
79 FX90FLAGS =    -f0 $(OPT)
80
81 #LDFLAGS   +=  $(OPT) -Wl"-h lib_cyclic -h nodefs" 
82 LDFLAGS   +=  $(OPT) -Wl"-h lib_cyclic " 
83 #
84 # preprocessing flags 
85 #
86 CPP = cpp -P -traditional -Wcomment
87 AR=sxar
88 #
89 CPPFLAGS_SURFEX    =
90 CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_SX5 -DMNH_MPI_BSEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
91 CPPFLAGS_RAD       =
92 CPPFLAGS_NEWLFI    = -DMNH_SX5 -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
93 CPPFLAGS_MNH       = -DMNH
94 #
95 # Gribex flags
96 #
97 #ARCH_GRIBEX=NEC
98 TARGET_GRIBEX=NEC
99 CNAME_GRIBEX=sxmpif90
100 #
101 # LIBTOOLS flags
102 #
103 #if MNH_TOOLS exists => compile the tools
104 #MNH_TOOLS = no
105 #
106 ##########################################################
107 #                                                        #
108 # Source of MESONH PACKAGE  Distribution                 #
109 #                                                        #
110 ##########################################################
111 #DIR_SURFEX      += ARCH_SRC/surfex
112 #
113 include Makefile.MESONH.mk
114 #
115 ##########################################################
116 #                                                        #
117 # extra VPATH, Compilation flag modification             #
118 #         systeme module , etc ...                       #
119 #         external precompiled module librairie          #
120 #         etc ...                                        #
121 #                                                        #
122 ##########################################################
123 #
124 OBJS0 += spll_ch_jac.o spll_ch_terms.o  \
125          spll_fm_writ_ll.o spll_NEWLFI_ALL.o spll_fm_read_ll.o
126 $(OBJS0) : OPT_CHECK = 
127
128 ifneq "$(findstring 8,$(LFI_INT))" ""
129 OBJS_I8=spll_NEWLFI_ALL.o
130 $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
131 endif
132
133 ifeq "$(MNH_INT)" "8"
134 OBJS_I4=spll_modd_netcdf.o
135 $(OBJS_I4) : OPT = $(OPT_BASE_I4)
136 endif
137