summaryrefslogtreecommitdiff
path: root/Makefile.power
blob: 24d8aa8a7e9bdaca3b49468abdd9372fbd82e10b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

ifdef USE_THREAD
ifeq ($(USE_THREAD), 0)
USE_OPENMP = 0
else
USE_OPENMP = 1
endif
else
USE_OPENMP = 1
endif

ifeq ($(CORE), POWER9)
ifeq ($(USE_OPENMP), 1)
COMMON_OPT += -Ofast -mcpu=power9 -mtune=power9 -mvsx -malign-power -DUSE_OPENMP -fno-fast-math -fopenmp
FCOMMON_OPT += -O2 -frecursive -mcpu=power9 -mtune=power9 -malign-power -DUSE_OPENMP -fno-fast-math -fopenmp
else
COMMON_OPT += -Ofast -mcpu=power9 -mtune=power9 -mvsx -malign-power -fno-fast-math
FCOMMON_OPT += -O2 -frecursive -mcpu=power9 -mtune=power9 -malign-power -fno-fast-math
endif
endif

ifeq ($(CORE), POWER8)
ifeq ($(USE_OPENMP), 1)
COMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx -malign-power -DUSE_OPENMP -fno-fast-math -fopenmp
FCOMMON_OPT += -O2 -frecursive -mcpu=power8 -mtune=power8 -malign-power -DUSE_OPENMP -fno-fast-math -fopenmp
else
COMMON_OPT += -Ofast -mcpu=power8 -mtune=power8 -mvsx -malign-power -fno-fast-math
FCOMMON_OPT += -O2 -frecursive -mcpu=power8 -mtune=power8 -malign-power -fno-fast-math
endif
endif

# workaround for C->FORTRAN ABI violation in LAPACKE
ifeq ($(F_COMPILER), GFORTRAN)
FCOMMON_OPT += -fno-optimize-sibling-calls
endif

FLAMEPATH	= $(HOME)/flame/lib

#ifeq ($(CORE), CELL)
#CELL_SDK_ROOT = /opt/IBM/cell-sdk-1.1/sysroot/usr
#SPU_CC	         = spu-gcc
#EXTRALIB	+= -lspe
#endif

ifeq ($(OSNAME), Linux)
ifdef BINARY64
# COMPILER_PREFIX = powerpc64-linux-
else
# COMPILER_PREFIX = powerpc-linux-
endif
endif

#Either uncomment below line or run make with `USE_MASS=1` to enable support of MASS library
#USE_MASS = 1

ifeq ($(USE_MASS), 1)
# Path to MASS libs, change it if the libs are installed at any other location
MASSPATH        = /opt/ibm/xlmass/8.1.5/lib
COMMON_OPT     += -mveclibabi=mass -ftree-vectorize -funsafe-math-optimizations -DUSE_MASS
EXTRALIB       += -L$(MASSPATH) -lmass -lmassvp8 -lmass_simdp8
endif

ifdef BINARY64


ifeq ($(OSNAME), AIX)
CCOMMON_OPT	+= -mpowerpc64 -maix64
ifeq ($(COMPILER_F77), g77)
FCOMMON_OPT	+= -mpowerpc64 -maix64
endif
ifeq ($(COMPILER_F77), xlf)
FCOMMON_OPT	+= -q64
endif
ARFLAGS		= -X 64
ASFLAGS		= -a64
endif
else
ifeq ($(OSNAME), AIX)
CCOMMON_OPT	+= -Wa,-a32
ARFLAGS		= -X 32
ASFLAGS		= -a32
endif
endif

# CCOMMON_OPT	+= -maltivec -mabi=altivec

LIBFLAME	= -L$(FLAMEPATH) -llapack2flame -lflame-lapack -lflame-base $(LIBS)

ifeq ($(OSNAME), Darwin)
CCOMMON_OPT	+= -force_cpusubtype_ALL
endif


ifndef BINARY64
ifeq ($(OSNAME), Linux)
ESSLPATH = -L/opt/ibmcmp/lib -L/opt/ibmcmp/xlf/11.1/lib -Wl,-rpath,/opt/ibmcmp/lib -Wl,-rpath,/opt/ibmcmp/xlf/11.1/lib -lxlf90_r -lxlomp_ser -lxlfmath -lxl -lpthread
else
ESSLPATH = -lxlf90_r
endif


LIBVECLIB	= -framework VecLib
ifndef SMP
LIBATLAS	= -L/usr/lib/atlas3.7.11 -lf77blas -latlas -lg2c -lm
LIBESSL		= -lessl $(ESSLPATH) ../../level1/others/libmisc.a -lm
else
LIBATLAS	= -L/usr/lib/atlas3.7.11p -lptf77blas -latlas -lm -lpthread
LIBESSL		= -lesslsmp $(ESSLPATH)  ../../level1/others/libmisc.a -lm
endif
else
ifeq ($(OSNAME), Linux)
ESSLPATH = -L/opt/ibmcmp/lib64 -Wl,-rpath,/opt/ibmcmp/lib64 -L/opt/ibmcmp/xlf/11.1/lib64 -Wl,-rpath,/opt/ibmcmp/xlf/11.1/lib64 -lxlf90_r -lxlomp_ser
else
ESSLPATH = -lxlf90_r
endif

LIBVECLIB	= /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib

ifndef SMP
LIBATLAS	= -L/usr/lib64/atlas3.7.11  -lf77blas -latlas -lg2c -lm
LIBESSL		= -lessl $(ESSLPATH) -lm
else
LIBATLAS	= -L/usr/lib64/atlas3.7.11p -lptf77blas -latlas -lm -lpthread
LIBESSL		= -lesslsmp $(ESSLPATH) -lxlsmp -lm
endif
endif