aboutsummaryrefslogtreecommitdiff
path: root/math/cblas/Makefile
blob: c155b7905c840b0257f85f0aca039f67f6d75ae4 (plain) (blame)
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
127
128
129
130
131
132
133
134
135
# Created by: bf@FreeBSD.org
# $FreeBSD$

PORTNAME=	cblas
PORTVERSION=	1.0
PORTREVISION=	2
CATEGORIES=	math
MASTER_SITES=	NL/blas/blast-forum/ LOCAL/bf
DISTFILES=	cblas.tgz

MAINTAINER=	bf@FreeBSD.org
COMMENT=	Reference implementation of the C interface to the legacy Fortran BLAS

LICENSE=	BSD

USES=		fortran

CONFLICTS_INSTALL=	atlas-[0-9]* atlas-devel-[0-9]*

OPTIONS_DEFINE=	PROFILE SHARED STATIC
OPTIONS_DEFAULT=	SHARED STATIC
PROFILE_DESC=	Build profiling libraries
SHARED_DESC=	Build shared libraries and PIC archives
STATIC_DESC=	Build (non-PIC) archives

PLIST_FILES=	include/cblas.h include/cblas_f77.h
PLIST_SUB=	SVERSION="${SVERSION}"

SVERSION=	2

WRKSRC =		${WRKDIR}/CBLAS
WRKSRC_PROFILE =	${WRKSRC}_PROFILE
WRKSRC_SHARED=		${WRKSRC}_SHARED
WRKSRC_STATIC=		${WRKSRC}

NO_STAGE=	yes
.include <bsd.port.options.mk>

.if make(makesum) || ${PORT_OPTIONS:MDOCS}
DISTFILES+=	blas-report.pdf
EXTRACT_ONLY=	cblas.tgz
.endif

MANGLING?=	-DADD_
CFLAGS+=	${MANGLING}

.if ${ARCH} == "sparc64"
PICFLAG?=	-fPIC
.else
PICFLAG?=	-fpic
.endif

FLAGS_PROFILE?=	-pg
FLAGS_SHARED ?=	${PICFLAG}

.if ${PORT_OPTIONS:MSHARED}
PLIST_FILES+=	lib/libcblas_pic.a lib/libcblas.so lib/libcblas.so.${SVERSION}
TESTS ?=	test-shared
USE_LDCONFIG=	yes
.endif
.if ${PORT_OPTIONS:MSTATIC}
PLIST_FILES+=	lib/libcblas.a
TESTS ?=	test-static
.endif
.if ${PORT_OPTIONS:MPROFILE}
PLIST_FILES+=	lib/libcblas_p.a
TESTS ?=	test-profile
.endif

post-patch:
	@${SED} -Ee '\@^CBLIB[[:blank:]]*=@s@cblas.*\.a@libcblas.a@; \
		\@^((BL|RAN)LIB|CC|FC)[[:blank:]]*=@d; \
		\@^((C|F)FLAGS)[[:blank:]]*=@s@=.*@+= $${EXTRAFLAGS}@; \
		\@^LOADER@{x; s|^|LOADFLAGS = $${LDFLAGS} $${EXTRAFLAGS}|; G;};' \
			${WRKSRC}/Makefile.LINUX > ${WRKSRC}/Makefile.in
	@${REINPLACE_CMD} -e 's@$$(ARCH)@$$(AR)@' ${WRKSRC}/src/Makefile
.for o in PROFILE SHARED
.if ${PORT_OPTIONS:M${o}}
	@${CP} -a ${WRKSRC} ${WRKSRC_${o}}
.endif
.endfor

do-build: build-profile build-shared build-static

.for o in PROFILE SHARED STATIC
build-${o:L}: patch
.if ${PORT_OPTIONS:M${o}}
	@${PRINTF} "\n\nBuilding ${o:L} libraries:\n\n\n"
	@cd ${WRKSRC_${o}}/src; ${SETENV} ${MAKE_ENV} EXTRAFLAGS="${FLAGS_${o}}" \
	${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} all

.endif
.endfor

post-build:
.if ${PORT_OPTIONS:MSHARED}
	cd ${WRKSRC_SHARED}/lib ; ${FC} ${FFLAGS} ${FFLAGS_SHARED} ${LDFLAGS} -shared \
	-o libcblas.so.${SVERSION} -Wl,-x -Wl,-soname,libcblas.so.${SVERSION} \
	-Wl,--whole-archive libcblas.a -Wl,--no-whole-archive
.endif

.if defined(MAINTAINER_MODE) || defined(PACKAGE_BUILDING)
BLAS?=			-L${LOCALBASE}/lib -lblas
BUILD_DEPENDS +=	${LOCALBASE}/lib/libblas.so:${PORTSDIR}/math/blas
MAKE_ENV+=		BLLIB="${BLAS}"

check regression-test test: ${TESTS}

.for o in PROFILE SHARED STATIC
test-${o:L}: build-${o:L}
.if ${PORT_OPTIONS:M${o}}
	@${PRINTF} "\n\nTesting ${o:L} libraries:\n\n\n"
	@cd ${WRKSRC_${o}}/testing; ${SETENV} ${MAKE_ENV} EXTRAFLAGS="${FLAGS_${o}}" \
	${MAKE} ${_MAKE_JOBS} ${MAKE_ARGS} all run
	@${CAT} ${WRKSRC_${o}}/testing/*.out

.endif
.endfor
.endif

do-install:
	@${INSTALL_DATA} ${WRKSRC}/include/*.h ${PREFIX}/include
.if ${PORT_OPTIONS:MSTATIC}
	@${INSTALL_DATA} ${WRKSRC}/lib/libcblas.a ${PREFIX}/lib
.endif
.if ${PORT_OPTIONS:MSHARED}
	@${INSTALL_DATA} ${WRKSRC_SHARED}/lib/libcblas.a ${PREFIX}/lib/libcblas_pic.a
	@${INSTALL_DATA} ${WRKSRC_SHARED}/lib/libcblas.so.${SVERSION} ${PREFIX}/lib
	@${LN} -sf libcblas.so.${SVERSION} ${PREFIX}/lib/libcblas.so
.endif
.if ${PORT_OPTIONS:MPROFILE}
	@${INSTALL_DATA} ${WRKSRC_PROFILE}/lib/libcblas.a ${PREFIX}/lib/libcblas_p.a
.endif

.include <bsd.port.mk>