Skip to content

Commit b53b0f6

Browse files
authored
Merge pull request #3802 from martin-frbg/relafix
Fix cmake compilation of ReLAPACK and expose its INCLUDE_ALL option
2 parents 9a31faf + e6204d2 commit b53b0f6

11 files changed

Lines changed: 78 additions & 50 deletions

File tree

CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,10 @@ if(NOT NO_LAPACKE)
212212
add_library(LAPACKE OBJECT ${LAPACKE_SOURCES})
213213
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACKE>")
214214
endif()
215-
if(BUILD_RELAPACK)
216-
add_library(RELAPACK OBJECT ${RELA_SOURCES})
217-
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>")
218-
endif()
215+
#if(BUILD_RELAPACK)
216+
# add_library(RELAPACK OBJECT ${RELA_SOURCES})
217+
# list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>")
218+
#endif()
219219
set(OpenBLAS_LIBS "")
220220
if(BUILD_STATIC_LIBS)
221221
add_library(${OpenBLAS_LIBNAME}_static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})

Makefile.rule

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ BUILD_LAPACK_DEPRECATED = 1
131131

132132
# Build RecursiveLAPACK on top of LAPACK
133133
# BUILD_RELAPACK = 1
134+
# Have RecursiveLAPACK actually replace standard LAPACK routines instead of
135+
# just adding its equivalents with a RELAPACK_ prefix
136+
# RELAPACK_REPLACE = 1
134137

135138
# If you want to use the legacy threaded Level 3 implementation.
136139
# USE_SIMPLE_THREADED_LEVEL3 = 1

Makefile.system

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ ifndef TOPDIR
99
TOPDIR = .
1010
endif
1111

12+
ifndef RELAPACK_REPLACE
13+
RELAPACK_REPLACE=0
14+
endif
15+
1216
# we need to use the host system's architecture for getarch compile options even especially when cross-compiling
1317
HOSTARCH := $(shell uname -m)
1418
ifeq ($(HOSTARCH), amd64)

interface/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,16 @@ if (NOT DEFINED NO_LAPACK)
189189
)
190190

191191
GenerateNamedObjects("${LAPACK_SOURCES}")
192+
if (NOT RELAPACK_REPLACE)
192193
GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" 0 "" "" 0 3)
194+
else ()
195+
GenerateNamedObjects("lapack/getrs.c" "" "" 0 "" "" 0 3)
196+
GenerateNamedObjects("lapack/getf2.c" "" "" 0 "" "" 0 3)
197+
GenerateNamedObjects("lapack/potf2.c" "" "" 0 "" "" 0 3)
198+
GenerateNamedObjects("lapack/laswp.c" "" "" 0 "" "" 0 3)
199+
GenerateNamedObjects("lapack/lauu2.c" "" "" 0 "" "" 0 3)
200+
GenerateNamedObjects("lapack/trti2.c" "" "" 0 "" "" 0 3)
201+
endif()
193202
endif ()
194203

195204
if ( BUILD_COMPLEX AND NOT BUILD_SINGLE)

lapack/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,12 @@ set(UNIT_SOURCES2
3939
trti2/trti2_L.c
4040
)
4141

42+
if (NOT RELAPACK_REPLACE)
4243
GenerateNamedObjects("${LAPACK_SOURCES}")
4344
GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3)
45+
else()
46+
GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3)
47+
endif()
4448

4549
GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" "" false 3)
4650
GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" "" false 3)
@@ -113,4 +117,3 @@ GenerateCombinationObjects("${UNIT_SOURCES}" "UNIT" "N" "" 4)
113117
GenerateCombinationObjects("${UNIT_SOURCES2}" "UNIT" "N" "" 0 "" "" 3)
114118

115119
add_library(lapack OBJECT ${OPENBLAS_SRC})
116-

relapack/Makefile

Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,61 @@
11
TOPDIR = ..
22
include $(TOPDIR)/Makefile.system
33

4-
4+
ifeq ($(RELAPACK_REPLACE),0)
5+
RELAPREFIX=RELAPACK_
6+
INCLALL=-DINCLUDE_ALL=0
7+
else
8+
INCLALL=-DINCLUDE_ALL=1
9+
endif
510

611
SRC = $(wildcard src/*.c)
712

813
SRC1 = \
9-
src/slauum.c src/clauum.c src/dlauum.c src/zlauum.c \
10-
src/strtri.c src/dtrtri.c src/ctrtri.c src/ztrtri.c \
11-
src/spotrf.c src/dpotrf.c src/cpotrf.c src/zpotrf.c \
12-
src/sgetrf.c src/dgetrf.c src/cgetrf.c src/zgetrf.c
14+
slauum.c clauum.c dlauum.c zlauum.c \
15+
strtri.c dtrtri.c ctrtri.c ztrtri.c \
16+
spotrf.c dpotrf.c cpotrf.c zpotrf.c \
17+
sgetrf.c dgetrf.c cgetrf.c zgetrf.c
1318

1419
SRC2 = \
15-
src/cgbtrf.c src/cpbtrf.c src/dsytrf_rec2.c src/sgbtrf.c src/ssytrf_rook.c src/zhegst.c src/zsytrf_rec2.c \
16-
src/cgemmt.c src/dgbtrf.c src/dsytrf_rook.c src/sgemmt.c src/ssytrf_rook_rec2.c src/zhetrf.c src/zsytrf_rook.c \
17-
src/csytrf.c src/dgemmt.c src/dsytrf_rook_rec2.c src/stgsyl.c src/zhetrf_rec2.c src/zsytrf_rook_rec2.c \
18-
src/chegst.c src/csytrf_rec2.c src/dtgsyl.c src/strsyl.c src/zhetrf_rook.c src/ztgsyl.c \
19-
src/chetrf.c src/csytrf_rook.c src/dtrsyl.c src/spbtrf.c src/strsyl_rec2.c src/zhetrf_rook_rec2.c src/ztrsyl.c \
20-
src/chetrf_rec2.c src/csytrf_rook_rec2.c src/dpbtrf.c src/dtrsyl_rec2.c src/ztrsyl_rec2.c \
21-
src/chetrf_rook.c src/ctgsyl.c src/ssygst.c src/zgbtrf.c src/zpbtrf.c \
22-
src/chetrf_rook_rec2.c src/ctrsyl.c src/dsygst.c src/f2c.c src/ssytrf.c src/zgemmt.c \
23-
src/ctrsyl_rec2.c src/dsytrf.c src/lapack_wrappers.c src/ssytrf_rec2.c src/zsytrf.c
20+
cgbtrf.c cpbtrf.c dsytrf_rec2.c sgbtrf.c ssytrf_rook.c zhegst.c zsytrf_rec2.c \
21+
cgemmt.c dgbtrf.c dsytrf_rook.c sgemmt.c ssytrf_rook_rec2.c zhetrf.c zsytrf_rook.c \
22+
csytrf.c dgemmt.c dsytrf_rook_rec2.c stgsyl.c zhetrf_rec2.c zsytrf_rook_rec2.c \
23+
chegst.c csytrf_rec2.c dtgsyl.c strsyl.c zhetrf_rook.c ztgsyl.c \
24+
chetrf.c csytrf_rook.c dtrsyl.c spbtrf.c strsyl_rec2.c zhetrf_rook_rec2.c ztrsyl.c \
25+
chetrf_rec2.c csytrf_rook_rec2.c dpbtrf.c dtrsyl_rec2.c ztrsyl_rec2.c \
26+
chetrf_rook.c ctgsyl.c ssygst.c zgbtrf.c zpbtrf.c \
27+
chetrf_rook_rec2.c ctrsyl.c dsygst.c f2c.c ssytrf.c zgemmt.c \
28+
ctrsyl_rec2.c dsytrf.c lapack_wrappers.c ssytrf_rec2.c zsytrf.c
2429

2530
SRCX = \
26-
src/cgbtrf.c src/cpbtrf.c src/ctrtri.c src/dsytrf_rec2.c src/sgbtrf.c src/ssytrf_rook.c src/zhegst.c src/zsytrf_rec2.c \
27-
src/cgemmt.c src/cpotrf.c src/dgbtrf.c src/dsytrf_rook.c src/sgemmt.c src/ssytrf_rook_rec2.c src/zhetrf.c src/zsytrf_rook.c \
28-
src/cgetrf.c src/csytrf.c src/dgemmt.c src/dsytrf_rook_rec2.c src/sgetrf.c src/stgsyl.c src/zhetrf_rec2.c src/zsytrf_rook_rec2.c \
29-
src/chegst.c src/csytrf_rec2.c src/dgetrf.c src/dtgsyl.c src/slauum.c src/strsyl.c src/zhetrf_rook.c src/ztgsyl.c \
30-
src/chetrf.c src/csytrf_rook.c src/dlauum.c src/dtrsyl.c src/spbtrf.c src/strsyl_rec2.c src/zhetrf_rook_rec2.c src/ztrsyl.c \
31-
src/chetrf_rec2.c src/csytrf_rook_rec2.c src/dpbtrf.c src/dtrsyl_rec2.c src/spotrf.c src/strtri.c src/zlauum.c src/ztrsyl_rec2.c \
32-
src/chetrf_rook.c src/ctgsyl.c src/dpotrf.c src/dtrtri.c src/ssygst.c src/zgbtrf.c src/zpbtrf.c src/ztrtri.c \
33-
src/chetrf_rook_rec2.c src/ctrsyl.c src/dsygst.c src/f2c.c src/ssytrf.c src/zgemmt.c src/zpotrf.c \
34-
src/clauum.c src/ctrsyl_rec2.c src/dsytrf.c src/lapack_wrappers.c src/ssytrf_rec2.c src/zgetrf.c src/zsytrf.c
35-
36-
OBJS1 = $(SRC1:%.c=%.$(SUFFIX))
37-
OBJS2 = $(SRC2:%.c=%.o)
31+
cgbtrf.c cpbtrf.c ctrtri.c dsytrf_rec2.c sgbtrf.c ssytrf_rook.c zhegst.c zsytrf_rec2.c \
32+
cgemmt.c cpotrf.c dgbtrf.c dsytrf_rook.c sgemmt.c ssytrf_rook_rec2.c zhetrf.c zsytrf_rook.c \
33+
cgetrf.c csytrf.c dgemmt.c dsytrf_rook_rec2.c sgetrf.c stgsyl.c zhetrf_rec2.c zsytrf_rook_rec2.c \
34+
chegst.c csytrf_rec2.c dgetrf.c dtgsyl.c slauum.c strsyl.c zhetrf_rook.c ztgsyl.c \
35+
chetrf.c csytrf_rook.c dlauum.c dtrsyl.c spbtrf.c strsyl_rec2.c zhetrf_rook_rec2.c ztrsyl.c \
36+
chetrf_rec2.c csytrf_rook_rec2.c dpbtrf.c dtrsyl_rec2.c spotrf.c strtri.c zlauum.c ztrsyl_rec2.c \
37+
chetrf_rook.c ctgsyl.c dpotrf.c dtrtri.c ssygst.c zgbtrf.c zpbtrf.c ztrtri.c \
38+
chetrf_rook_rec2.c ctrsyl.c dsygst.c f2c.c ssytrf.c zgemmt.c zpotrf.c \
39+
clauum.c ctrsyl_rec2.c dsytrf.c lapack_wrappers.c ssytrf_rec2.c zgetrf.c zsytrf.c
40+
41+
42+
OBJS1 = $(SRC1:%.c=src/$(RELAPREFIX)%.$(SUFFIX))
43+
OBJS2 = $(SRC2:%.c=src/$(RELAPREFIX)%.o)
3844
OBJS = $(OBJS1) $(OBJS2)
3945

4046
TEST_SUITS = \
41-
slauum dlauum clauum zlauum \
42-
spotrf dpotrf cpotrf zpotrf \
43-
spbtrf dpbtrf cpbtrf zpbtrf \
44-
ssygst dsygst chegst zhegst \
45-
ssytrf dsytrf csytrf chetrf zsytrf zhetrf \
46-
sgetrf dgetrf cgetrf zgetrf \
47-
sgbtrf dgbtrf cgbtrf zgbtrf \
48-
strsyl dtrsyl ctrsyl ztrsyl \
49-
stgsyl dtgsyl ctgsyl ztgsyl \
5047
sgemmt dgemmt cgemmt zgemmt
48+
49+
# slauum dlauum clauum zlauum \
50+
# spotrf dpotrf cpotrf zpotrf \
51+
# spbtrf dpbtrf cpbtrf zpbtrf \
52+
# ssygst dsygst chegst zhegst \
53+
# ssytrf dsytrf csytrf chetrf zsytrf zhetrf \
54+
# sgetrf dgetrf cgetrf zgetrf \
55+
# sgbtrf dgbtrf cgbtrf zgbtrf \
56+
# strsyl dtrsyl ctrsyl ztrsyl \
57+
# stgsyl dtgsyl ctgsyl ztgsyl \
58+
5159
TESTS = $(TEST_SUITS:%=test/%.pass) # dummies
5260
TEST_EXES = $(TEST_SUITS:%=test/%.x)
5361

@@ -63,11 +71,11 @@ libs: $(OBJS)
6371
$(AR) -r $(TOPDIR)/$(LIBNAME) $(OBJS)
6472
$(RANLIB) $(TOPDIR)/$(LIBNAME)
6573

66-
%.$(SUFFIX): %.c config.h
67-
$(CC) $(CFLAGS) -c $< -o $@
74+
src/$(RELAPREFIX)%.$(SUFFIX): src/%.c relapack_config.h
75+
$(CC) -v $(CFLAGS) -I. $(INCLALL) -c $< -o $@
6876

69-
%.o: %.c config.h
70-
$(CC) $(CFLAGS) -c $< -o $@
77+
src/$(RELAPREFIX)%.o: src/%.c relapack_config.h
78+
$(CC) -v $(CFLAGS) -I. $(INCLALL) -c $< -o $@
7179

7280

7381
# ReLAPACK testing
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
// The following macros specify which routines are included in the library under
4646
// LAPACK's symbol names: 1 included, 0 not included
4747

48-
#define INCLUDE_ALL 1
48+
// #define INCLUDE_ALL 1
4949

5050
#define INCLUDE_XLAUUM INCLUDE_ALL
5151
#define INCLUDE_SLAUUM INCLUDE_XLAUUM
@@ -115,7 +115,7 @@
115115
#define INCLUDE_CTGSYL INCLUDE_XTGSYL
116116
#define INCLUDE_ZTGSYL INCLUDE_XTGSYL
117117

118-
#define INCLUDE_XGEMMT 1
118+
#define INCLUDE_XGEMMT INCLUDE_ALL
119119
#define INCLUDE_SGEMMT INCLUDE_XGEMMT
120120
#define INCLUDE_DGEMMT INCLUDE_XGEMMT
121121
#define INCLUDE_CGEMMT INCLUDE_XGEMMT

relapack/src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
include_directories(${PROJECT_SOURCE_DIR})
22
include_directories(${PROJECT_BINARY_DIR})
3+
include_directories(${PROJECT_SOURCE_DIR}/relapack)
34

45
set(RELAFILES
56
clauum.c

relapack/src/ctrsyl_rec2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
http://www.netlib.org/f2c/libf2c.zip
1111
*/
1212

13-
#include "../config.h"
13+
#include "relapack_config.h"
1414
#include "f2c.h"
1515

1616
#if BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES

relapack/src/relapack.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#ifndef RELAPACK_INT_H
22
#define RELAPACK_INT_H
33
#include <string.h>
4-
#include "../../config.h"
4+
#include "config.h"
55
#if defined(OS_WINDOWS) && defined(__64BIT__)
66
typedef long long BLASLONG;
77
typedef unsigned long long BLASULONG;
88
#else
99
typedef long BLASLONG;
1010
typedef unsigned long BLASULONG;
1111
#endif
12-
#include "../config.h"
12+
#include "relapack_config.h"
1313

1414
#include "../inc/relapack.h"
1515

0 commit comments

Comments
 (0)