View | Details | Raw Unified | Return to bug 210337 | Differences between
and this patch

Collapse All | Expand All

(-)Mk/Uses/compiler.mk (-2 / +18 lines)
Lines 1-272 Link Here
1
# $FreeBSD$
1
# $FreeBSD$
2
#
2
#
3
# Allows to determine the compiler being used
3
# Allows to determine the compiler being used
4
#
4
#
5
# Feature:	compiler
5
# Feature:	compiler
6
# Usage:	USES=compiler or USES=compiler:ARGS
6
# Usage:	USES=compiler or USES=compiler:ARGS
7
# Valid ARGS:	env (default, implicit) c++0x c++11-lib c++11-lang c11 openmp nestedfct features
7
# Valid ARGS:	env (default, implicit) c++0x c++11-lib c++11-lang c11 openmp nestedfct features
8
#
8
#
9
# c++0x:	The port needs a compiler understanding C++0X
9
# c++0x:	The port needs a compiler understanding C++0X
10
# c++11-lang:	The port needs a compiler understanding C++11
10
# c++11-lang:	The port needs a compiler understanding C++11
11
# c++14-lang:	The port needs a compiler understanding C++14
11
# c++14-lang:	The port needs a compiler understanding C++14
12
# gcc-c++11-lib:The port needs g++ compiler with a C++11 library
12
# gcc-c++11-lib:The port needs g++ compiler with a C++11 library
13
# c++11-lib:	The port needs a compiler understanding C++11 and with a C++11 ready standard library
13
# c++11-lib:	The port needs a compiler understanding C++11 and with a C++11 ready standard library
14
# c11:		The port needs a compiler understanding C11
14
# c11:		The port needs a compiler understanding C11
15
# openmp:	The port needs a compiler understanding openmp
15
# openmp:	The port needs a compiler understanding openmp
16
# nestedfct:	The port needs a compiler understanding nested functions
16
# nestedfct:	The port needs a compiler understanding nested functions
17
# features:	The port will determine the features supported by the default compiler
17
# features:	The port will determine the features supported by the default compiler
18
#
18
#
19
# Variable to test after <bsd.port.pre.mk>
19
# Variable to test after <bsd.port.pre.mk>
20
#
20
#
21
# COMPILER_TYPE:	can be gcc or clang
21
# COMPILER_TYPE:	can be gcc or clang
22
# ALT_COMPILER_TYPE:	can be gcc or clang depending on COMPILER_TYPE, only set if the base system has 2 compilers
22
# ALT_COMPILER_TYPE:	can be gcc or clang depending on COMPILER_TYPE, only set if the base system has 2 compilers
23
# COMPILER_VERSION:	first 2 digits of the version: 33 for clang 3.3.*, 47 for gcc 4.7.*
23
# COMPILER_VERSION:	first 2 digits of the version: 33 for clang 3.3.*, 47 for gcc 4.7.*
24
# ALT_COMPILER_VERSION:	first 2 digits of the version: 33 for clang 3.3.*, 47 for gcc 4.7.* of the ALT_COMPILER_TYPE
24
# ALT_COMPILER_VERSION:	first 2 digits of the version: 33 for clang 3.3.*, 47 for gcc 4.7.* of the ALT_COMPILER_TYPE
25
#
25
#
26
# COMPILER_FEATURES:	the list of features supported by the compiler includes the standard C++ library.
26
# COMPILER_FEATURES:	the list of features supported by the compiler includes the standard C++ library.
27
# CHOSEN_COMPILER_TYPE:	can be gcc or clang (type of compiler chosen by the framework)
27
# CHOSEN_COMPILER_TYPE:	can be gcc or clang (type of compiler chosen by the framework)
28
#
28
#
29
# MAINTAINER: portmgr@FreeBSD.org
29
# MAINTAINER: portmgr@FreeBSD.org
30
30
31
.if !defined(_INCLUDE_USES_COMPILER_MK)
31
.if !defined(_INCLUDE_USES_COMPILER_MK)
32
_INCLUDE_USES_COMPILER_MK=	yes
32
_INCLUDE_USES_COMPILER_MK=	yes
33
33
34
.if empty(compiler_ARGS)
34
.if empty(compiler_ARGS)
35
compiler_ARGS=	env
35
compiler_ARGS=	env
36
.endif
36
.endif
37
37
38
VALID_ARGS=	c++11-lib c++11-lang c++14-lang c11 features openmp env nestedfct c++0x gcc-c++11-lib
38
VALID_ARGS=	c++11-lib c++11-lang c++14-lang c11 features openmp env nestedfct c++0x gcc-c++11-lib
39
39
40
_CC_hash:=	${CC:hash}
40
_CC_hash:=	${CC:hash}
41
_CXX_hash:=	${CXX:hash}
41
_CXX_hash:=	${CXX:hash}
42
42
43
.if ${compiler_ARGS} == gcc-c++11-lib
43
.if ${compiler_ARGS} == gcc-c++11-lib
44
_COMPILER_ARGS+=	features gcc-c++11-lib
44
_COMPILER_ARGS+=	features gcc-c++11-lib
45
.elif ${compiler_ARGS} == c++11-lib
45
.elif ${compiler_ARGS} == c++11-lib
46
_COMPILER_ARGS+=	features c++11-lib
46
_COMPILER_ARGS+=	features c++11-lib
47
.elif ${compiler_ARGS} == c++0x
47
.elif ${compiler_ARGS} == c++0x
48
_COMPILER_ARGS+=	features c++0x
48
_COMPILER_ARGS+=	features c++0x
49
.elif ${compiler_ARGS} == c++11-lang
49
.elif ${compiler_ARGS} == c++11-lang
50
_COMPILER_ARGS+=	features c++11-lang
50
_COMPILER_ARGS+=	features c++11-lang
51
.elif ${compiler_ARGS} == c++14-lang
51
.elif ${compiler_ARGS} == c++14-lang
52
_COMPILER_ARGS+=	features c++14-lang
52
_COMPILER_ARGS+=	features c++14-lang
53
.elif ${compiler_ARGS} == c11
53
.elif ${compiler_ARGS} == c11
54
_COMPILER_ARGS+=	features c11
54
_COMPILER_ARGS+=	features c11
55
.elif ${compiler_ARGS} == features
55
.elif ${compiler_ARGS} == features
56
_COMPILER_ARGS+=	features
56
_COMPILER_ARGS+=	features
57
.elif ${compiler_ARGS} == env
57
.elif ${compiler_ARGS} == env
58
_COMPILER_ARGS+=	env
58
_COMPILER_ARGS+=	env
59
.elif ${compiler_ARGS} == openmp
59
.elif ${compiler_ARGS} == openmp
60
_COMPILER_ARGS+=	env openmp
60
_COMPILER_ARGS+=	env openmp
61
.elif ${compiler_ARGS} == nestedfct
61
.elif ${compiler_ARGS} == nestedfct
62
_COMPILER_ARGS+=	env nestedfct
62
_COMPILER_ARGS+=	env nestedfct
63
.else
63
.else
64
IGNORE=	Invalid argument "${compiler_ARGS}", valid arguments are: ${VALID_ARGS}
64
IGNORE=	Invalid argument "${compiler_ARGS}", valid arguments are: ${VALID_ARGS}
65
_COMPILER_ARGS=	#
65
_COMPILER_ARGS=	#
66
.endif
66
.endif
67
67
68
.if ${_COMPILER_ARGS:Mc++*} || ${_COMPILER_ARGS:Mc11}
68
.if ${_COMPILER_ARGS:Mc++*} || ${_COMPILER_ARGS:Mc11}
69
_COMPILER_ARGS+=	features
69
_COMPILER_ARGS+=	features
70
.endif
70
.endif
71
71
72
.if defined(_CCVERSION_${_CC_hash})
72
.if defined(_CCVERSION_${_CC_hash})
73
_CCVERSION=	${_CCVERSION_${_CC_hash}}
73
_CCVERSION=	${_CCVERSION_${_CC_hash}}
74
.else
74
.else
75
_CCVERSION!=	${CC} --version
75
_CCVERSION!=	${CC} --version
76
_CCVERSION_${_CC_hash}=	${_CCVERSION}
76
_CCVERSION_${_CC_hash}=	${_CCVERSION}
77
PORTS_ENV_VARS+=	_CCVERSION_${_CC_hash}
77
PORTS_ENV_VARS+=	_CCVERSION_${_CC_hash}
78
.endif
78
.endif
79
COMPILER_VERSION=	${_CCVERSION:M[0-9].[0-9]*:tW:C/([0-9]).([0-9]).*/\1\2/g}
79
COMPILER_VERSION=	${_CCVERSION:M[0-9].[0-9]*:tW:C/([0-9]).([0-9]).*/\1\2/g}
80
.if ${_CCVERSION:Mclang}
80
.if ${_CCVERSION:Mclang}
81
COMPILER_TYPE=	clang
81
COMPILER_TYPE=	clang
82
.else
82
.else
83
COMPILER_TYPE=	gcc
83
COMPILER_TYPE=	gcc
84
.endif
84
.endif
85
85
86
ALT_COMPILER_VERSION=	0
86
ALT_COMPILER_VERSION=	0
87
ALT_COMPILER_TYPE=	none
87
ALT_COMPILER_TYPE=	none
88
_ALTCCVERSION=		none
88
_ALTCCVERSION=		none
89
.if defined(_ALTCCVERSION_${_CC_hash})
89
.if defined(_ALTCCVERSION_${_CC_hash})
90
_ALTCCVERSION=	${_ALTCCVERSION_${_CC_hash}}
90
_ALTCCVERSION=	${_ALTCCVERSION_${_CC_hash}}
91
.else
91
.else
92
.if ${COMPILER_TYPE} == gcc && exists(/usr/bin/clang)
92
.if ${COMPILER_TYPE} == gcc && exists(/usr/bin/clang)
93
.if ${ARCH} == amd64 || ${ARCH} == i386 # clang often non-default for a reason
93
.if ${ARCH} == amd64 || ${ARCH} == i386 # clang often non-default for a reason
94
_ALTCCVERSION!=	/usr/bin/clang --version
94
_ALTCCVERSION!=	/usr/bin/clang --version
95
.endif
95
.endif
96
.elif ${COMPILER_TYPE} == clang && exists(/usr/bin/gcc)
96
.elif ${COMPILER_TYPE} == clang && exists(/usr/bin/gcc)
97
_ALTCCVERSION!=	/usr/bin/gcc --version
97
_ALTCCVERSION!=	/usr/bin/gcc --version
98
.endif
98
.endif
99
_ALTCCVERSION_${_CC_hash}=	${_ALTCCVERSION}
99
_ALTCCVERSION_${_CC_hash}=	${_ALTCCVERSION}
100
PORTS_ENV_VARS+=		_ALTCCVERSION_${_CC_hash}
100
PORTS_ENV_VARS+=		_ALTCCVERSION_${_CC_hash}
101
.endif
101
.endif
102
102
103
ALT_COMPILER_VERSION=	${_ALTCCVERSION:M[0-9].[0-9]*:tW:C/([0-9]).([0-9]).*/\1\2/g}
103
ALT_COMPILER_VERSION=	${_ALTCCVERSION:M[0-9].[0-9]*:tW:C/([0-9]).([0-9]).*/\1\2/g}
104
.if ${_ALTCCVERSION:Mclang}
104
.if ${_ALTCCVERSION:Mclang}
105
ALT_COMPILER_TYPE=	clang
105
ALT_COMPILER_TYPE=	clang
106
.elif ${_ALTCCVERSION} != none
106
.elif ${_ALTCCVERSION} != none
107
ALT_COMPILER_TYPE=	gcc
107
ALT_COMPILER_TYPE=	gcc
108
.endif
108
.endif
109
109
110
CHOSEN_COMPILER_TYPE=	${COMPILER_TYPE}
110
CHOSEN_COMPILER_TYPE=	${COMPILER_TYPE}
111
111
112
.if ${_COMPILER_ARGS:Mopenmp}
112
.if ${_COMPILER_ARGS:Mopenmp}
113
.if ${COMPILER_TYPE} == clang
113
.if ${COMPILER_TYPE} == clang && ${ARCH} == amd64
114
USE_GCC=	yes
114
_USES_POST+=	localbase:ldflags
115
BUILD_DEPENDS+=	llvm60>=0:devel/llvm60
116
RUN_DEPENDS+=	llvm60>=0:devel/llvm60
117
CPP=	${LOCALBASE}/bin/clang-cpp60
118
CC=	${LOCALBASE}/bin/clang60
119
CXX=	${LOCALBASE}/bin/clang++60
120
CHOSEN_COMPILER_TYPE=	clang
121
.else
122
USE_GCC=		yes
115
CHOSEN_COMPILER_TYPE=	gcc
123
CHOSEN_COMPILER_TYPE=	gcc
124
.if ${COMPILER_FEATURES:Mlibc++}
125
CXXFLAGS+=	-nostdinc++ -isystem /usr/include/c++/v1
126
LDFLAGS+=	-L${WRKDIR}
127
128
_USES_configure+=	200:gcc-libc++-configure
129
gcc-libc++-configure:
130
	@${LN} -fs /usr/lib/libc++.so ${WRKDIR}/libstdc++.so
131
.endif
116
.endif
132
.endif
117
.endif
133
.endif
118
134
119
.if ${_COMPILER_ARGS:Mnestedfct}
135
.if ${_COMPILER_ARGS:Mnestedfct}
120
.if ${COMPILER_TYPE} == clang
136
.if ${COMPILER_TYPE} == clang
121
USE_GCC=	any
137
USE_GCC=	any
122
CHOSEN_COMPILER_TYPE=	gcc
138
CHOSEN_COMPILER_TYPE=	gcc
123
.endif
139
.endif
124
.endif
140
.endif
125
141
126
.if ${_COMPILER_ARGS:Mfeatures}
142
.if ${_COMPILER_ARGS:Mfeatures}
127
.if defined(_CXXINTERNAL_${_CXX_hash})
143
.if defined(_CXXINTERNAL_${_CXX_hash})
128
_CXXINTERNAL=	${_CXXINTERNAL_${_CXX_hash}}
144
_CXXINTERNAL=	${_CXXINTERNAL_${_CXX_hash}}
129
.else
145
.else
130
_CXXINTERNAL!=	${CXX} -\#\#\# /dev/null 2>&1
146
_CXXINTERNAL!=	${CXX} -\#\#\# /dev/null 2>&1
131
_CXXINTERNAL_${_CXX_hash}=	${_CXXINTERNAL}
147
_CXXINTERNAL_${_CXX_hash}=	${_CXXINTERNAL}
132
PORTS_ENV_VARS+=	_CXXINTERNAL_${_CXX_hash}
148
PORTS_ENV_VARS+=	_CXXINTERNAL_${_CXX_hash}
133
.endif
149
.endif
134
.if ${_CXXINTERNAL:M\"-lc++\"}
150
.if ${_CXXINTERNAL:M\"-lc++\"}
135
COMPILER_FEATURES=	libc++
151
COMPILER_FEATURES=	libc++
136
.else
152
.else
137
COMPILER_FEATURES=	libstdc++
153
COMPILER_FEATURES=	libstdc++
138
.endif
154
.endif
139
155
140
CSTD=	c89 c99 c11 gnu89 gnu99 gnu11
156
CSTD=	c89 c99 c11 gnu89 gnu99 gnu11
141
CXXSTD=	c++98 c++0x c++11 c++14 gnu++98 gnu++11
157
CXXSTD=	c++98 c++0x c++11 c++14 gnu++98 gnu++11
142
158
143
.for std in ${CSTD} ${CXXSTD}
159
.for std in ${CSTD} ${CXXSTD}
144
_LANG=c
160
_LANG=c
145
.if ${CXXSTD:M${std}}
161
.if ${CXXSTD:M${std}}
146
_LANG=c++
162
_LANG=c++
147
.endif
163
.endif
148
.if defined(CC_OUTPUT_${_CC_hash}_${std:hash})
164
.if defined(CC_OUTPUT_${_CC_hash}_${std:hash})
149
OUTPUT_${std}=	${CC_OUTPUT_${_CC_hash}_${std:hash}}
165
OUTPUT_${std}=	${CC_OUTPUT_${_CC_hash}_${std:hash}}
150
.else
166
.else
151
OUTPUT_${std}!=	if ${CC} -std=${std} -c -x ${_LANG} /dev/null -o /dev/null 2>&1; then echo yes; fi; echo
167
OUTPUT_${std}!=	if ${CC} -std=${std} -c -x ${_LANG} /dev/null -o /dev/null 2>&1; then echo yes; fi; echo
152
CC_OUTPUT_${_CC_hash}_${std:hash}=	${OUTPUT_${std}}
168
CC_OUTPUT_${_CC_hash}_${std:hash}=	${OUTPUT_${std}}
153
PORTS_ENV_VARS+=			CC_OUTPUT_${_CC_hash}_${std:hash}
169
PORTS_ENV_VARS+=			CC_OUTPUT_${_CC_hash}_${std:hash}
154
.endif
170
.endif
155
.if !${OUTPUT_${std}:M*error*}
171
.if !${OUTPUT_${std}:M*error*}
156
COMPILER_FEATURES+=	${std}
172
COMPILER_FEATURES+=	${std}
157
.endif
173
.endif
158
.endfor
174
.endfor
159
.endif
175
.endif
160
176
161
.if ${_COMPILER_ARGS:Mc++11-lib}
177
.if ${_COMPILER_ARGS:Mc++11-lib}
162
.if !${COMPILER_FEATURES:Mc++11}
178
.if !${COMPILER_FEATURES:Mc++11}
163
USE_GCC=	yes
179
USE_GCC=	yes
164
CHOSEN_COMPILER_TYPE=	gcc
180
CHOSEN_COMPILER_TYPE=	gcc
165
.elif ${COMPILER_TYPE} == clang && ${COMPILER_FEATURES:Mlibstdc++}
181
.elif ${COMPILER_TYPE} == clang && ${COMPILER_FEATURES:Mlibstdc++}
166
USE_GCC=	yes
182
USE_GCC=	yes
167
CHOSEN_COMPILER_TYPE=	gcc
183
CHOSEN_COMPILER_TYPE=	gcc
168
.endif
184
.endif
169
.endif
185
.endif
170
186
171
.if ${_COMPILER_ARGS:Mc++14-lang}
187
.if ${_COMPILER_ARGS:Mc++14-lang}
172
.if !${COMPILER_FEATURES:Mc++14}
188
.if !${COMPILER_FEATURES:Mc++14}
173
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
189
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
174
USE_GCC=	yes
190
USE_GCC=	yes
175
CHOSEN_COMPILER_TYPE=	gcc
191
CHOSEN_COMPILER_TYPE=	gcc
176
.elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 35) || ${COMPILER_TYPE} == gcc
192
.elif (${COMPILER_TYPE} == clang && ${COMPILER_VERSION} < 35) || ${COMPILER_TYPE} == gcc
177
.if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 35
193
.if ${ALT_COMPILER_TYPE} == clang && ${ALT_COMPILER_VERSION} >= 35
178
CPP=	clang-cpp
194
CPP=	clang-cpp
179
CC=	clang
195
CC=	clang
180
CXX=	clang++
196
CXX=	clang++
181
CHOSEN_COMPILER_TYPE=	clang
197
CHOSEN_COMPILER_TYPE=	clang
182
.else
198
.else
183
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
199
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
184
CPP=	${LOCALBASE}/bin/clang-cpp60
200
CPP=	${LOCALBASE}/bin/clang-cpp60
185
CC=	${LOCALBASE}/bin/clang60
201
CC=	${LOCALBASE}/bin/clang60
186
CXX=	${LOCALBASE}/bin/clang++60
202
CXX=	${LOCALBASE}/bin/clang++60
187
CHOSEN_COMPILER_TYPE=	clang
203
CHOSEN_COMPILER_TYPE=	clang
188
.endif
204
.endif
189
.endif
205
.endif
190
.endif
206
.endif
191
.endif
207
.endif
192
208
193
.if ${_COMPILER_ARGS:Mc++11-lang}
209
.if ${_COMPILER_ARGS:Mc++11-lang}
194
.if !${COMPILER_FEATURES:Mc++11}
210
.if !${COMPILER_FEATURES:Mc++11}
195
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
211
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
196
USE_GCC=	yes
212
USE_GCC=	yes
197
CHOSEN_COMPILER_TYPE=	gcc
213
CHOSEN_COMPILER_TYPE=	gcc
198
.elif ${COMPILER_TYPE} == gcc
214
.elif ${COMPILER_TYPE} == gcc
199
.if ${ALT_COMPILER_TYPE} == clang
215
.if ${ALT_COMPILER_TYPE} == clang
200
CPP=	clang-cpp
216
CPP=	clang-cpp
201
CC=	clang
217
CC=	clang
202
CXX=	clang++
218
CXX=	clang++
203
CHOSEN_COMPILER_TYPE=	clang
219
CHOSEN_COMPILER_TYPE=	clang
204
.else
220
.else
205
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
221
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
206
CPP=	${LOCALBASE}/bin/clang-cpp60
222
CPP=	${LOCALBASE}/bin/clang-cpp60
207
CC=	${LOCALBASE}/bin/clang60
223
CC=	${LOCALBASE}/bin/clang60
208
CXX=	${LOCALBASE}/bin/clang++60
224
CXX=	${LOCALBASE}/bin/clang++60
209
CHOSEN_COMPILER_TYPE=	clang
225
CHOSEN_COMPILER_TYPE=	clang
210
.endif
226
.endif
211
.endif
227
.endif
212
.endif
228
.endif
213
.endif
229
.endif
214
230
215
.if ${_COMPILER_ARGS:Mc++0x}
231
.if ${_COMPILER_ARGS:Mc++0x}
216
.if !${COMPILER_FEATURES:Mc++0x}
232
.if !${COMPILER_FEATURES:Mc++0x}
217
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
233
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
218
USE_GCC=	yes
234
USE_GCC=	yes
219
CHOSEN_COMPILER_TYPE=	gcc
235
CHOSEN_COMPILER_TYPE=	gcc
220
.elif ${COMPILER_TYPE} == gcc
236
.elif ${COMPILER_TYPE} == gcc
221
.if ${ALT_COMPILER_TYPE} == clang
237
.if ${ALT_COMPILER_TYPE} == clang
222
CPP=	clang-cpp
238
CPP=	clang-cpp
223
CC=	clang
239
CC=	clang
224
CXX=	clang++
240
CXX=	clang++
225
CHOSEN_COMPILER_TYPE=	clang
241
CHOSEN_COMPILER_TYPE=	clang
226
.else
242
.else
227
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
243
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
228
CHOSEN_COMPILER_TYPE=	clang
244
CHOSEN_COMPILER_TYPE=	clang
229
CPP=	${LOCALBASE}/bin/clang-cpp60
245
CPP=	${LOCALBASE}/bin/clang-cpp60
230
CC=	${LOCALBASE}/bin/clang60
246
CC=	${LOCALBASE}/bin/clang60
231
CXX=	${LOCALBASE}/bin/clang++60
247
CXX=	${LOCALBASE}/bin/clang++60
232
.endif
248
.endif
233
.endif
249
.endif
234
.endif
250
.endif
235
.endif
251
.endif
236
252
237
.if ${_COMPILER_ARGS:Mc11}
253
.if ${_COMPILER_ARGS:Mc11}
238
.if !${COMPILER_FEATURES:Mc11}
254
.if !${COMPILER_FEATURES:Mc11}
239
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
255
.if (defined(FAVORITE_COMPILER) && ${FAVORITE_COMPILER} == gcc) || (${ARCH} != amd64 && ${ARCH} != i386) # clang not always supported on Tier-2
240
USE_GCC=	yes
256
USE_GCC=	yes
241
CHOSEN_COMPILER_TYPE=	gcc
257
CHOSEN_COMPILER_TYPE=	gcc
242
.elif ${COMPILER_TYPE} == gcc
258
.elif ${COMPILER_TYPE} == gcc
243
.if ${ALT_COMPILER_TYPE} == clang
259
.if ${ALT_COMPILER_TYPE} == clang
244
CPP=	clang-cpp
260
CPP=	clang-cpp
245
CC=	clang
261
CC=	clang
246
CXX=	clang++
262
CXX=	clang++
247
CHOSEN_COMPILER_TYPE=	clang
263
CHOSEN_COMPILER_TYPE=	clang
248
.else
264
.else
249
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
265
BUILD_DEPENDS+=	${LOCALBASE}/bin/clang60:devel/llvm60
250
CHOSEN_COMPILER_TYPE=	clang
266
CHOSEN_COMPILER_TYPE=	clang
251
CPP=	${LOCALBASE}/bin/clang-cpp60
267
CPP=	${LOCALBASE}/bin/clang-cpp60
252
CC=	${LOCALBASE}/bin/clang60
268
CC=	${LOCALBASE}/bin/clang60
253
CXX=	${LOCALBASE}/bin/clang++60
269
CXX=	${LOCALBASE}/bin/clang++60
254
.endif
270
.endif
255
.endif
271
.endif
256
.endif
272
.endif
257
.endif
273
.endif
258
274
259
.if ${_COMPILER_ARGS:Mgcc-c++11-lib}
275
.if ${_COMPILER_ARGS:Mgcc-c++11-lib}
260
USE_GCC=	yes
276
USE_GCC=	yes
261
CHOSEN_COMPILER_TYPE=	gcc
277
CHOSEN_COMPILER_TYPE=	gcc
262
.if ${COMPILER_FEATURES:Mlibc++}
278
.if ${COMPILER_FEATURES:Mlibc++}
263
CXXFLAGS+=	-nostdinc++ -isystem /usr/include/c++/v1
279
CXXFLAGS+=	-nostdinc++ -isystem /usr/include/c++/v1
264
LDFLAGS+=	-L${WRKDIR}
280
LDFLAGS+=	-L${WRKDIR}
265
281
266
_USES_configure+=	200:gcc-libc++-configure
282
_USES_configure+=	200:gcc-libc++-configure
267
gcc-libc++-configure:
283
gcc-libc++-configure:
268
	@${LN} -fs /usr/lib/libc++.so ${WRKDIR}/libstdc++.so
284
	@${LN} -fs /usr/lib/libc++.so ${WRKDIR}/libstdc++.so
269
.endif
285
.endif
270
.endif
286
.endif
271
287
272
.endif
288
.endif
(-)biology/canu/Makefile (+1 lines)
Lines 1-57 Link Here
1
# $FreeBSD$
1
# $FreeBSD$
2
2
3
PORTNAME=		canu
3
PORTNAME=		canu
4
DISTVERSIONPREFIX=	v
4
DISTVERSIONPREFIX=	v
5
DISTVERSION=		1.7
5
DISTVERSION=		1.7
6
CATEGORIES=		biology java perl5
6
CATEGORIES=		biology java perl5
7
7
8
MAINTAINER=	jwb@FreeBSD.org
8
MAINTAINER=	jwb@FreeBSD.org
9
COMMENT=	Single molecule sequence assembler
9
COMMENT=	Single molecule sequence assembler
10
10
11
LICENSE=	GPLv2
11
LICENSE=	GPLv2
12
LICENSE_FILE=	${WRKDIR}/${PORTNAME}-${PORTVERSION}/README.license.GPL
12
LICENSE_FILE=	${WRKDIR}/${PORTNAME}-${PORTVERSION}/README.license.GPL
13
13
14
LIB_DEPENDS=	libboost_regex.so:devel/boost-libs
14
LIB_DEPENDS=	libboost_regex.so:devel/boost-libs
15
RUN_DEPENDS=	gnuplot:math/gnuplot
15
RUN_DEPENDS=	gnuplot:math/gnuplot
16
16
17
USE_GCC=	yes
17
USES=		compiler:openmp gmake perl5
18
USES=		compiler:openmp gmake perl5
18
USE_JAVA=	yes
19
USE_JAVA=	yes
19
JAVA_RUN=	yes
20
JAVA_RUN=	yes
20
JAVA_VERSION=	1.8+
21
JAVA_VERSION=	1.8+
21
USE_GITHUB=	yes
22
USE_GITHUB=	yes
22
GH_ACCOUNT=	marbl
23
GH_ACCOUNT=	marbl
23
24
24
WRKSRC_SUBDIR=	src
25
WRKSRC_SUBDIR=	src
25
# Makefile compiles directly into ${DESTDIR}${PREFIX}
26
# Makefile compiles directly into ${DESTDIR}${PREFIX}
26
MAKE_ENV+=	DESTDIR=${WRKSRC}
27
MAKE_ENV+=	DESTDIR=${WRKSRC}
27
28
28
post-patch:
29
post-patch:
29
	${REINPLACE_CMD} \
30
	${REINPLACE_CMD} \
30
		-e 's|-O4||g' \
31
		-e 's|-O4||g' \
31
		-e 's|-funroll-loops||g' \
32
		-e 's|-funroll-loops||g' \
32
		-e 's|-fexpensive-optimizations||g' \
33
		-e 's|-fexpensive-optimizations||g' \
33
		-e 's|amd64|${ARCH}|g' \
34
		-e 's|amd64|${ARCH}|g' \
34
		${WRKSRC}/Makefile
35
		${WRKSRC}/Makefile
35
	${REINPLACE_CMD} -e 's|\\$$bin/mhap-|${JAVAJARDIR}/mhap-|g' \
36
	${REINPLACE_CMD} -e 's|\\$$bin/mhap-|${JAVAJARDIR}/mhap-|g' \
36
		${WRKSRC}/pipelines/canu/OverlapMhap.pm
37
		${WRKSRC}/pipelines/canu/OverlapMhap.pm
37
	${REINPLACE_CMD} -e 's|RealBin/lib|RealBin/../${SITE_PERL_REL}/canu|g' \
38
	${REINPLACE_CMD} -e 's|RealBin/lib|RealBin/../${SITE_PERL_REL}/canu|g' \
38
		${WRKSRC}/pipelines/canu.pl
39
		${WRKSRC}/pipelines/canu.pl
39
40
40
# Upstream does not want to use lib/perl5/site_perl
41
# Upstream does not want to use lib/perl5/site_perl
41
post-build:
42
post-build:
42
	${MKDIR} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
43
	${MKDIR} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
43
	${MV} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/site_perl \
44
	${MV} ${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/site_perl \
44
		${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
45
		${WRKSRC}${PREFIX}/FreeBSD-${ARCH}/lib/perl5
45
46
46
do-install:
47
do-install:
47
	${MKDIR} ${STAGEDIR}${PREFIX}
48
	${MKDIR} ${STAGEDIR}${PREFIX}
48
	(cd ${WRKSRC}${PREFIX}/FreeBSD-${ARCH} && \
49
	(cd ${WRKSRC}${PREFIX}/FreeBSD-${ARCH} && \
49
		${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX})
50
		${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX})
50
	# STRIP_CMD fails without this on 11.1 under poudriere
51
	# STRIP_CMD fails without this on 11.1 under poudriere
51
	@${CHMOD} u+w ${STAGEDIR}${PREFIX}/bin/*
52
	@${CHMOD} u+w ${STAGEDIR}${PREFIX}/bin/*
52
	${STRIP_CMD} \
53
	${STRIP_CMD} \
53
		`file ${STAGEDIR}${PREFIX}/bin/* | ${GREP} ELF | cut -d : -f 1`
54
		`file ${STAGEDIR}${PREFIX}/bin/* | ${GREP} ELF | cut -d : -f 1`
54
	(cd ${WRKSRC}${PREFIX}/FreeBSD-${ARCH} && \
55
	(cd ${WRKSRC}${PREFIX}/FreeBSD-${ARCH} && \
55
		${COPYTREE_SHARE} "lib share" ${STAGEDIR}${PREFIX})
56
		${COPYTREE_SHARE} "lib share" ${STAGEDIR}${PREFIX})
56
57
57
.include <bsd.port.mk>
58
.include <bsd.port.mk>
(-)biology/iqtree/Makefile (+1 lines)
Lines 1-35 Link Here
1
# $FreeBSD$
1
# $FreeBSD$
2
2
3
PORTNAME=	iqtree
3
PORTNAME=	iqtree
4
DISTVERSIONPREFIX=	v
4
DISTVERSIONPREFIX=	v
5
DISTVERSION=	1.6.5
5
DISTVERSION=	1.6.5
6
CATEGORIES=	biology
6
CATEGORIES=	biology
7
7
8
MAINTAINER=	jrm@FreeBSD.org
8
MAINTAINER=	jrm@FreeBSD.org
9
COMMENT=	Efficient phylogenomic software by maximum likelihood
9
COMMENT=	Efficient phylogenomic software by maximum likelihood
10
10
11
LICENSE=	GPLv2
11
LICENSE=	GPLv2
12
LICENSE_FILE=	${WRKSRC}/LICENSE
12
LICENSE_FILE=	${WRKSRC}/LICENSE
13
13
14
BROKEN_aarch64=	fails to compile: unrecognized command line option '-msse3'
14
BROKEN_aarch64=	fails to compile: unrecognized command line option '-msse3'
15
BROKEN_armv6=	fails to compile: unrecognized command line options '-m32' and '-msse3'
15
BROKEN_armv6=	fails to compile: unrecognized command line options '-m32' and '-msse3'
16
BROKEN_armv7=	fails to compile: unrecognized command line options '-m32' and '-msse3'
16
BROKEN_armv7=	fails to compile: unrecognized command line options '-m32' and '-msse3'
17
17
18
USE_GCC=	yes
18
USES=		cmake compiler:openmp eigen:3
19
USES=		cmake compiler:openmp eigen:3
19
USE_GITHUB=	yes
20
USE_GITHUB=	yes
20
GH_ACCOUNT=	Cibiv
21
GH_ACCOUNT=	Cibiv
21
GH_PROJECT=	IQ-TREE
22
GH_PROJECT=	IQ-TREE
22
23
23
PLIST_FILES=	bin/iqtree
24
PLIST_FILES=	bin/iqtree
24
PORTEXAMPLES=	example.cf example.nex example.phy models.nex
25
PORTEXAMPLES=	example.cf example.nex example.phy models.nex
25
26
26
OPTIONS_DEFINE=	EXAMPLES
27
OPTIONS_DEFINE=	EXAMPLES
27
28
28
do-install:
29
do-install:
29
	${INSTALL_PROGRAM} ${WRKSRC}/iqtree ${STAGEDIR}${PREFIX}/bin
30
	${INSTALL_PROGRAM} ${WRKSRC}/iqtree ${STAGEDIR}${PREFIX}/bin
30
31
31
do-install-EXAMPLES-on:
32
do-install-EXAMPLES-on:
32
	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
33
	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
33
	${INSTALL_DATA} ${WRKSRC}/example/* ${STAGEDIR}${EXAMPLESDIR}
34
	${INSTALL_DATA} ${WRKSRC}/example/* ${STAGEDIR}${EXAMPLESDIR}
34
35
35
.include <bsd.port.mk>
36
.include <bsd.port.mk>
(-)cad/calculix-ccx/Makefile (+2 lines)
Lines 1-94 Link Here
1
# Created by: Pedro Giffuni
1
# Created by: Pedro Giffuni
2
# $FreeBSD$
2
# $FreeBSD$
3
3
4
PORTNAME=	ccx
4
PORTNAME=	ccx
5
PORTVERSION=	2.13
5
PORTVERSION=	2.13
6
PORTREVISION=	1
6
PORTREVISION=	1
7
CATEGORIES=	cad
7
CATEGORIES=	cad
8
MASTER_SITES=	http://www.dhondt.de/
8
MASTER_SITES=	http://www.dhondt.de/
9
PKGNAMEPREFIX=	CalculiX-
9
PKGNAMEPREFIX=	CalculiX-
10
DISTFILES=	${DIST_SOURCES}
10
DISTFILES=	${DIST_SOURCES}
11
DIST_SUBDIR=	calculix
11
DIST_SUBDIR=	calculix
12
EXTRACT_ONLY=	${DIST_SOURCES}
12
EXTRACT_ONLY=	${DIST_SOURCES}
13
13
14
MAINTAINER=	pfg@FreeBSD.org
14
MAINTAINER=	pfg@FreeBSD.org
15
COMMENT=	Three-Dimensional Structural Finite Element Program
15
COMMENT=	Three-Dimensional Structural Finite Element Program
16
16
17
LICENSE=	GPLv2
17
LICENSE=	GPLv2
18
18
19
LIB_DEPENDS=	libarpack.so:math/arpack	\
19
LIB_DEPENDS=	libarpack.so:math/arpack	\
20
		libspooles.so:math/spooles	\
20
		libspooles.so:math/spooles	\
21
		libtaucs.so:math/taucs
21
		libtaucs.so:math/taucs
22
22
23
DIST_SOURCES=	ccx_${PORTVERSION}.src${EXTRACT_SUFX}
23
DIST_SOURCES=	ccx_${PORTVERSION}.src${EXTRACT_SUFX}
24
DIST_HTM=	ccx_${PORTVERSION}.htm${EXTRACT_SUFX}
24
DIST_HTM=	ccx_${PORTVERSION}.htm${EXTRACT_SUFX}
25
DIST_PS=	ccx_${PORTVERSION}.ps${EXTRACT_SUFX}
25
DIST_PS=	ccx_${PORTVERSION}.ps${EXTRACT_SUFX}
26
DIST_EXAMPLES=	ccx_${PORTVERSION}.test${EXTRACT_SUFX}
26
DIST_EXAMPLES=	ccx_${PORTVERSION}.test${EXTRACT_SUFX}
27
27
28
# Fortran + OpenMP requires us to use GCC
29
USE_GCC=	yes
28
USES=		blaslapack compiler:openmp fortran gmake tar:bzip2 shebangfix
30
USES=		blaslapack compiler:openmp fortran gmake tar:bzip2 shebangfix
29
USE_PERL5=	build
31
USE_PERL5=	build
30
SHEBANG_FILES=	date.pl
32
SHEBANG_FILES=	date.pl
31
33
32
ALL_TARGET=	#Empty
34
ALL_TARGET=	#Empty
33
35
34
CCX_VER=	ccx_${PORTVERSION}
36
CCX_VER=	ccx_${PORTVERSION}
35
WRKSRC=		${WRKDIR}/CalculiX/${CCX_VER}/src
37
WRKSRC=		${WRKDIR}/CalculiX/${CCX_VER}/src
36
38
37
OPTIONS_DEFINE=	DOCS EXAMPLES
39
OPTIONS_DEFINE=	DOCS EXAMPLES
38
40
39
OPTIONS_SINGLE=	METIS
41
OPTIONS_SINGLE=	METIS
40
OPTIONS_SINGLE_METIS=	METIS4 METISEDF
42
OPTIONS_SINGLE_METIS=	METIS4 METISEDF
41
OPTIONS_DEFAULT=	METISEDF
43
OPTIONS_DEFAULT=	METISEDF
42
44
43
METIS4_DESC=	Reference Metis4 Implementation
45
METIS4_DESC=	Reference Metis4 Implementation
44
METIS4_DEPENDS=	libmetis.so:math/metis4
46
METIS4_DEPENDS=	libmetis.so:math/metis4
45
47
46
METISEDF_DESC=	EDF Metis Variant
48
METISEDF_DESC=	EDF Metis Variant
47
METISEDF_DEPENDS=	libmetis.so:math/metis-edf
49
METISEDF_DEPENDS=	libmetis.so:math/metis-edf
48
50
49
.include <bsd.port.options.mk>
51
.include <bsd.port.options.mk>
50
52
51
.if ${PORT_OPTIONS:MDOCS}
53
.if ${PORT_OPTIONS:MDOCS}
52
DISTFILES+=	${DIST_HTM} ${DIST_PS}
54
DISTFILES+=	${DIST_HTM} ${DIST_PS}
53
EXTRACT_ONLY+=	${DIST_HTM} ${DIST_PS}
55
EXTRACT_ONLY+=	${DIST_HTM} ${DIST_PS}
54
DOCSDIR=	${PREFIX}/share/doc/CalculiX
56
DOCSDIR=	${PREFIX}/share/doc/CalculiX
55
.endif
57
.endif
56
58
57
.if $(PORT_OPTIONS:MEXAMPLES)
59
.if $(PORT_OPTIONS:MEXAMPLES)
58
DISTFILES+=	${DIST_EXAMPLES}
60
DISTFILES+=	${DIST_EXAMPLES}
59
EXTRACT_ONLY+=	${DIST_EXAMPLES}
61
EXTRACT_ONLY+=	${DIST_EXAMPLES}
60
.endif
62
.endif
61
63
62
.if ${ARCH} == "sparc64"
64
.if ${ARCH} == "sparc64"
63
CFLAGS+=	-fPIC
65
CFLAGS+=	-fPIC
64
FFLAGS+=	-fPIC
66
FFLAGS+=	-fPIC
65
.else
67
.else
66
CFLAGS+=	-fpic
68
CFLAGS+=	-fpic
67
FFLAGS+=	-fpic
69
FFLAGS+=	-fpic
68
.endif
70
.endif
69
71
70
pre-build:
72
pre-build:
71
	@${REINPLACE_CMD} -e 's+%%FC%%+${FC}+g ; s+%%CC%%+${CC}+g ; \
73
	@${REINPLACE_CMD} -e 's+%%FC%%+${FC}+g ; s+%%CC%%+${CC}+g ; \
72
	s+%%BLAS_LIBS%%+${BLASLIB}+ ; \
74
	s+%%BLAS_LIBS%%+${BLASLIB}+ ; \
73
	s+%%LAPACK_LIBS%%+${LAPACKLIB}+ ; \
75
	s+%%LAPACK_LIBS%%+${LAPACKLIB}+ ; \
74
	s+%%LOCALBASE%%+${LOCALBASE}+g;' \
76
	s+%%LOCALBASE%%+${LOCALBASE}+g;' \
75
		${WRKSRC}/Makefile
77
		${WRKSRC}/Makefile
76
78
77
do-install:
79
do-install:
78
	${INSTALL_PROGRAM} ${WRKSRC}/${CCX_VER} \
80
	${INSTALL_PROGRAM} ${WRKSRC}/${CCX_VER} \
79
	  ${STAGEDIR}${PREFIX}/bin/ccx
81
	  ${STAGEDIR}${PREFIX}/bin/ccx
80
.if ${PORT_OPTIONS:MDOCS}
82
.if ${PORT_OPTIONS:MDOCS}
81
	@${MKDIR} ${STAGEDIR}${DOCSDIR}
83
	@${MKDIR} ${STAGEDIR}${DOCSDIR}
82
	@(cd ${WRKDIR}/CalculiX/${CCX_VER}/doc/ccx && ${COPYTREE_SHARE} . \
84
	@(cd ${WRKDIR}/CalculiX/${CCX_VER}/doc/ccx && ${COPYTREE_SHARE} . \
83
		${STAGEDIR}${DOCSDIR}/ccx)
85
		${STAGEDIR}${DOCSDIR}/ccx)
84
	${INSTALL_DATA} ${WRKDIR}/CalculiX/${CCX_VER}/doc/${CCX_VER}.ps \
86
	${INSTALL_DATA} ${WRKDIR}/CalculiX/${CCX_VER}/doc/${CCX_VER}.ps \
85
		${STAGEDIR}${DOCSDIR}
87
		${STAGEDIR}${DOCSDIR}
86
	@${GZIP_CMD} ${STAGEDIR}${DOCSDIR}/${CCX_VER}.ps
88
	@${GZIP_CMD} ${STAGEDIR}${DOCSDIR}/${CCX_VER}.ps
87
.endif
89
.endif
88
.if ${PORT_OPTIONS:MEXAMPLES}
90
.if ${PORT_OPTIONS:MEXAMPLES}
89
	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
91
	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
90
	@(cd ${WRKDIR}/CalculiX/${CCX_VER}/test && ${COPYTREE_SHARE} . \
92
	@(cd ${WRKDIR}/CalculiX/${CCX_VER}/test && ${COPYTREE_SHARE} . \
91
	  ${STAGEDIR}${EXAMPLESDIR})
93
	  ${STAGEDIR}${EXAMPLESDIR})
92
.endif
94
.endif
93
95
94
.include <bsd.port.mk>
96
.include <bsd.port.mk>
(-)math/openblas/Makefile (+2 lines)
Lines 1-167 Link Here
1
# Created by: Eijiro Shibusawa <ej-sib@ice.uec.ac.jp>
1
# Created by: Eijiro Shibusawa <ej-sib@ice.uec.ac.jp>
2
# $FreeBSD$
2
# $FreeBSD$
3
3
4
PORTNAME=	openblas
4
PORTNAME=	openblas
5
PORTVERSION=	0.2.20
5
PORTVERSION=	0.2.20
6
PORTREVISION=	2
6
PORTREVISION=	2
7
DISTVERSIONPREFIX=	v
7
DISTVERSIONPREFIX=	v
8
PORTEPOCH=	1
8
PORTEPOCH=	1
9
CATEGORIES=	math
9
CATEGORIES=	math
10
MASTER_SITES=	NL/lapack/timing/:lapack_tmg
10
MASTER_SITES=	NL/lapack/timing/:lapack_tmg
11
DISTFILES=	large.tgz:lapack_tmg timing.tgz:lapack_tmg
11
DISTFILES=	large.tgz:lapack_tmg timing.tgz:lapack_tmg
12
DIST_SUBDIR=	openblas
12
DIST_SUBDIR=	openblas
13
13
14
MAINTAINER=	phd_kimberlite@yahoo.co.jp
14
MAINTAINER=	phd_kimberlite@yahoo.co.jp
15
COMMENT=	Optimized BLAS library based on GotoBLAS2
15
COMMENT=	Optimized BLAS library based on GotoBLAS2
16
16
17
LICENSE=	BSD3CLAUSE
17
LICENSE=	BSD3CLAUSE
18
LICENSE_FILE=	${WRKSRC}/LICENSE
18
LICENSE_FILE=	${WRKSRC}/LICENSE
19
19
20
USES=		fortran gmake perl5
20
USES=		fortran gmake perl5
21
21
22
USE_GITHUB=	yes
22
USE_GITHUB=	yes
23
GH_ACCOUNT=	xianyi
23
GH_ACCOUNT=	xianyi
24
GH_PROJECT=	OpenBLAS
24
GH_PROJECT=	OpenBLAS
25
LARGE_FILE=	large.tgz
25
LARGE_FILE=	large.tgz
26
TIMING_FILE=	timing.tgz
26
TIMING_FILE=	timing.tgz
27
27
28
USE_LDCONFIG=	yes
28
USE_LDCONFIG=	yes
29
USE_PERL5=	build
29
USE_PERL5=	build
30
30
31
OPENBLAS_SUFX=	r${PORTVERSION}
31
OPENBLAS_SUFX=	r${PORTVERSION}
32
OPENBLAS_LIBS=	libopenblas libopenblasp
32
OPENBLAS_LIBS=	libopenblas libopenblasp
33
OPENBLAS_SVER=	0
33
OPENBLAS_SVER=	0
34
OPENBLAS_FILES=	${OPENBLAS_LIBS:S|$|.so|} ${OPENBLAS_LIBS:S|$|.so.${OPENBLAS_SVER}|} ${OPENBLAS_LIBS:S|$|.a|}
34
OPENBLAS_FILES=	${OPENBLAS_LIBS:S|$|.so|} ${OPENBLAS_LIBS:S|$|.so.${OPENBLAS_SVER}|} ${OPENBLAS_LIBS:S|$|.a|}
35
PLIST_FILES=	${OPENBLAS_FILES:S|^|lib/|}
35
PLIST_FILES=	${OPENBLAS_FILES:S|^|lib/|}
36
TEST_TARGET=	tests
36
TEST_TARGET=	tests
37
37
38
OPTIONS_DEFINE=		INTERFACE64 OPENMP
38
OPTIONS_DEFINE=		INTERFACE64 OPENMP
39
OPTIONS_DEFINE_i386=	DYNAMIC_ARCH AVX AVX2
39
OPTIONS_DEFINE_i386=	DYNAMIC_ARCH AVX AVX2
40
OPTIONS_DEFINE_amd64=	${OPTIONS_DEFINE_i386}
40
OPTIONS_DEFINE_amd64=	${OPTIONS_DEFINE_i386}
41
41
42
.if defined(BATCH) || defined(PACKAGE_BUILDING)
42
.if defined(BATCH) || defined(PACKAGE_BUILDING)
43
OPTIONS_DEFAULT_i386=	DYNAMIC_ARCH
43
OPTIONS_DEFAULT_i386=	DYNAMIC_ARCH
44
OPTIONS_DEFAULT_amd64=	DYNAMIC_ARCH
44
OPTIONS_DEFAULT_amd64=	DYNAMIC_ARCH
45
.endif
45
.endif
46
46
47
DYNAMIC_ARCH_DESC=	Support multiple CPU types on i386 and amd64
47
DYNAMIC_ARCH_DESC=	Support multiple CPU types on i386 and amd64
48
INTERFACE64_DESC=	Use 8 byte integers on 64-bit architectures
48
INTERFACE64_DESC=	Use 8 byte integers on 64-bit architectures
49
OPENMP_DESC=		Use OpenMP for threading
49
OPENMP_DESC=		Use OpenMP for threading
50
AVX_DESC=		Support Advanced Vector Extensions (AVX)
50
AVX_DESC=		Support Advanced Vector Extensions (AVX)
51
AVX2_DESC=		Support Advanced Vector Extensions 2 (AVX2)
51
AVX2_DESC=		Support Advanced Vector Extensions 2 (AVX2)
52
52
53
.include <bsd.port.options.mk>
53
.include <bsd.port.options.mk>
54
54
55
.if defined(TARGET_CPU_ARCH)
55
.if defined(TARGET_CPU_ARCH)
56
BUILDFLAGS+=	TARGET=${TARGET_CPU_ARCH}
56
BUILDFLAGS+=	TARGET=${TARGET_CPU_ARCH}
57
.endif
57
.endif
58
58
59
MAXTHREADS?=	8
59
MAXTHREADS?=	8
60
BUILDFLAGS_THREAD+=	NUM_THREADS=${MAXTHREADS} USE_THREAD=1
60
BUILDFLAGS_THREAD+=	NUM_THREADS=${MAXTHREADS} USE_THREAD=1
61
61
62
.if ${ARCH:M*64} == ""
62
.if ${ARCH:M*64} == ""
63
BUILDFLAGS+=	BINARY32=1
63
BUILDFLAGS+=	BINARY32=1
64
.else
64
.else
65
BUILDFLAGS+=	BINARY64=1
65
BUILDFLAGS+=	BINARY64=1
66
.endif
66
.endif
67
67
68
.if ! ${PORT_OPTIONS:MDYNAMIC_ARCH} && ( ${ARCH} == "amd64" || ${ARCH} == "i386" )
68
.if ! ${PORT_OPTIONS:MDYNAMIC_ARCH} && ( ${ARCH} == "amd64" || ${ARCH} == "i386" )
69
MANUAL_PACKAGE_BUILD=	Optimizes for the build machine.
69
MANUAL_PACKAGE_BUILD=	Optimizes for the build machine.
70
.endif
70
.endif
71
71
72
.if ${PORT_OPTIONS:MDYNAMIC_ARCH}
72
.if ${PORT_OPTIONS:MDYNAMIC_ARCH}
73
BUILDFLAGS+=	DYNAMIC_ARCH=1
73
BUILDFLAGS+=	DYNAMIC_ARCH=1
74
.endif
74
.endif
75
75
76
.if ${PORT_OPTIONS:MINTERFACE64}
76
.if ${PORT_OPTIONS:MINTERFACE64}
77
BUILDFLAGS+=	INTERFACE64=1
77
BUILDFLAGS+=	INTERFACE64=1
78
.endif
78
.endif
79
79
80
.if ${PORT_OPTIONS:MOPENMP}
80
.if ${PORT_OPTIONS:MOPENMP}
81
# due to the Fortran dependency, we must require USE_GCC here to avoid mixing different OpenMPs for Fortran and C/C++
82
USE_GCC=	yes
81
USES+=		compiler:openmp
83
USES+=		compiler:openmp
82
BUILDFLAGS_THREAD+=	USE_OPENMP=1
84
BUILDFLAGS_THREAD+=	USE_OPENMP=1
83
.endif
85
.endif
84
86
85
.if ! ${PORT_OPTIONS:MAVX}
87
.if ! ${PORT_OPTIONS:MAVX}
86
BUILDFLAGS+=	NO_AVX=1
88
BUILDFLAGS+=	NO_AVX=1
87
.endif
89
.endif
88
90
89
.if ! ${PORT_OPTIONS:MAVX2}
91
.if ! ${PORT_OPTIONS:MAVX2}
90
BUILDFLAGS+=	NO_AVX2=1
92
BUILDFLAGS+=	NO_AVX2=1
91
.endif
93
.endif
92
94
93
post-extract:
95
post-extract:
94
	cd ${DISTDIR}/${DIST_SUBDIR} ; \
96
	cd ${DISTDIR}/${DIST_SUBDIR} ; \
95
	${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC}
97
	${CP} ${LARGE_FILE} ${TIMING_FILE} ${WRKSRC}
96
	${MKDIR} ${WRKDIR}/lib
98
	${MKDIR} ${WRKDIR}/lib
97
99
98
post-patch:
100
post-patch:
99
	${REINPLACE_CMD} -e "s+%%FIND%%+${FIND}+" \
101
	${REINPLACE_CMD} -e "s+%%FIND%%+${FIND}+" \
100
	-e "s+%%XARGS%%+${XARGS}+" \
102
	-e "s+%%XARGS%%+${XARGS}+" \
101
	-e "s+%%REINPLACE_CMD%%+${REINPLACE_CMD}+" \
103
	-e "s+%%REINPLACE_CMD%%+${REINPLACE_CMD}+" \
102
		${WRKSRC}/Makefile
104
		${WRKSRC}/Makefile
103
	${REINPLACE_CMD} -e "s+%%FC%%+${FC}+" -e "s+%%CC%%+${CC}+" \
105
	${REINPLACE_CMD} -e "s+%%FC%%+${FC}+" -e "s+%%CC%%+${CC}+" \
104
		${WRKSRC}/Makefile.rule
106
		${WRKSRC}/Makefile.rule
105
	${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \
107
	${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \
106
		${WRKSRC}/Makefile.rule \
108
		${WRKSRC}/Makefile.rule \
107
		${WRKSRC}/Makefile.tail \
109
		${WRKSRC}/Makefile.tail \
108
		${WRKSRC}/driver/level3/Makefile \
110
		${WRKSRC}/driver/level3/Makefile \
109
		${WRKSRC}/driver/others/Makefile \
111
		${WRKSRC}/driver/others/Makefile \
110
		${WRKSRC}/exports/Makefile \
112
		${WRKSRC}/exports/Makefile \
111
		${WRKSRC}/interface/Makefile \
113
		${WRKSRC}/interface/Makefile \
112
		${WRKSRC}/kernel/Makefile \
114
		${WRKSRC}/kernel/Makefile \
113
		${WRKSRC}/kernel/Makefile.L3 \
115
		${WRKSRC}/kernel/Makefile.L3 \
114
		${WRKSRC}/lapack/laswp/Makefile \
116
		${WRKSRC}/lapack/laswp/Makefile \
115
		${WRKSRC}/lapack-netlib/SRC/Makefile \
117
		${WRKSRC}/lapack-netlib/SRC/Makefile \
116
		${WRKSRC}/lapack-netlib/SRC/VARIANTS/Makefile \
118
		${WRKSRC}/lapack-netlib/SRC/VARIANTS/Makefile \
117
		${WRKSRC}/lapack-netlib/TESTING/MATGEN/Makefile \
119
		${WRKSRC}/lapack-netlib/TESTING/MATGEN/Makefile \
118
		${WRKSRC}/lapack-netlib/LAPACKE/src/Makefile \
120
		${WRKSRC}/lapack-netlib/LAPACKE/src/Makefile \
119
		${WRKSRC}/lapack-netlib/LAPACKE/utils/Makefile \
121
		${WRKSRC}/lapack-netlib/LAPACKE/utils/Makefile \
120
		${WRKSRC}/reference/Makefile
122
		${WRKSRC}/reference/Makefile
121
	${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \
123
	${REINPLACE_CMD} -e "s+(ARCH)+(ARCH_)+" \
122
	-e 's+%%LDFLAGS%%+${LDFLAGS}+' \
124
	-e 's+%%LDFLAGS%%+${LDFLAGS}+' \
123
	-e 's+%%LOCALBASE%%+${LOCALBASE}+' \
125
	-e 's+%%LOCALBASE%%+${LOCALBASE}+' \
124
	-e 's+%%FIND%%+${FIND}+' \
126
	-e 's+%%FIND%%+${FIND}+' \
125
	-e 's+%%XARGS%%+${XARGS}+' \
127
	-e 's+%%XARGS%%+${XARGS}+' \
126
	-e 's+%%REINPLACE_CMD%%+${REINPLACE_CMD}+' \
128
	-e 's+%%REINPLACE_CMD%%+${REINPLACE_CMD}+' \
127
	-e 's+$${CROSS_SUFFIX}+${LOCALBASE}/bin/+' \
129
	-e 's+$${CROSS_SUFFIX}+${LOCALBASE}/bin/+' \
128
	-e '/Clang.*OpenMP/g' \
130
	-e '/Clang.*OpenMP/g' \
129
		${WRKSRC}/Makefile.system
131
		${WRKSRC}/Makefile.system
130
132
131
post-patch-OPENMP-on:
133
post-patch-OPENMP-on:
132
	${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \
134
	${REINPLACE_CMD} -e "s+OPENBLAS_NUM_THREADS+OMP_NUM_THREADS+g" \
133
		${WRKSRC}/test/Makefile \
135
		${WRKSRC}/test/Makefile \
134
		${WRKSRC}/ctest/Makefile
136
		${WRKSRC}/ctest/Makefile
135
137
136
do-build:
138
do-build:
137
	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=1 USE_THREAD=0 \
139
	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=1 USE_THREAD=0 \
138
	${MAKE_CMD} ${MAKE_ARGS}
140
	${MAKE_CMD} ${MAKE_ARGS}
139
	${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblas.a
141
	${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblas.a
140
	${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblas.so.${OPENBLAS_SVER}
142
	${CP} ${WRKSRC}/libopenblas-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblas.so.${OPENBLAS_SVER}
141
	cd ${WRKSRC} ; ${MAKE_CMD} ${MAKE_ARGS} clean
143
	cd ${WRKSRC} ; ${MAKE_CMD} ${MAKE_ARGS} clean
142
	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} ${BUILDFLAGS_THREAD} \
144
	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} ${BUILDFLAGS_THREAD} \
143
	${MAKE_CMD} ${MAKE_ARGS}
145
	${MAKE_CMD} ${MAKE_ARGS}
144
	${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblasp.a
146
	${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.a ${WRKDIR}/lib/libopenblasp.a
145
	${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblasp.so.${OPENBLAS_SVER}
147
	${CP} ${WRKSRC}/libopenblasp-${OPENBLAS_SUFX}.so ${WRKDIR}/lib/libopenblasp.so.${OPENBLAS_SVER}
146
148
147
BENCHMARK_MAXTHREADS?=	${MAXTHREADS}
149
BENCHMARK_MAXTHREADS?=	${MAXTHREADS}
148
.if ${PORT_OPTIONS:MOPENMP}
150
.if ${PORT_OPTIONS:MOPENMP}
149
BENCHMARK_THREADS_FLAG=		OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS}
151
BENCHMARK_THREADS_FLAG=		OMP_NUM_THREADS=${BENCHMARK_MAXTHREADS}
150
.else
152
.else
151
BENCHMARK_THREADS_FLAG=		OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS}
153
BENCHMARK_THREADS_FLAG=		OPENBLAS_NUM_THREADS=${BENCHMARK_MAXTHREADS}
152
.endif
154
.endif
153
155
154
benchmark: build
156
benchmark: build
155
	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \
157
	cd ${WRKSRC} ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \
156
	USE_THREAD=1 ${MAKE_CMD} ${MAKE_ARGS} hpl
158
	USE_THREAD=1 ${MAKE_CMD} ${MAKE_ARGS} hpl
157
	cd ${WRKSRC}/benchmark ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \
159
	cd ${WRKSRC}/benchmark ; ${SETENV} ${BUILDFLAGS} NUM_THREADS=${MAXTHREADS} \
158
	USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${MAKE_CMD} ${MAKE_ARGS}
160
	USE_THREAD=1 ${BENCHMARK_THREADS_FLAG} ${MAKE_CMD} ${MAKE_ARGS}
159
161
160
do-install:
162
do-install:
161
.for L in ${OPENBLAS_LIBS}
163
.for L in ${OPENBLAS_LIBS}
162
	${INSTALL_DATA} ${WRKDIR}/lib/${L}.a ${STAGEDIR}${PREFIX}/lib
164
	${INSTALL_DATA} ${WRKDIR}/lib/${L}.a ${STAGEDIR}${PREFIX}/lib
163
	${INSTALL_LIB} ${WRKDIR}/lib/${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib
165
	${INSTALL_LIB} ${WRKDIR}/lib/${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib
164
	${LN} -sf ${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib/${L}.so
166
	${LN} -sf ${L}.so.${OPENBLAS_SVER} ${STAGEDIR}${PREFIX}/lib/${L}.so
165
.endfor
167
.endfor
166
168
167
.include <bsd.port.mk>
169
.include <bsd.port.mk>

Return to bug 210337