Skip to content

Commit 2a39774

Browse files
authored
Merge pull request #637 from christoph-conrads/632-lapack_h-only-installed-in-LAPACKE-builds
CMake selective build improvements
2 parents 3201988 + ca0b206 commit 2a39774

File tree

5 files changed

+69
-30
lines changed

5 files changed

+69
-30
lines changed

BLAS/SRC/CMakeLists.txt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,22 @@ set(CBLAS1 scabs1.f scasum.f scnrm2.f90 icamax.f caxpy.f ccopy.f
3838
set(DBLAS1 idamax.f dasum.f daxpy.f dcopy.f ddot.f dnrm2.f90
3939
drot.f drotg.f90 dscal.f dsdot.f dswap.f drotmg.f drotm.f)
4040

41+
set(DB1AUX sscal.f isamax.f)
42+
4143
set(ZBLAS1 dcabs1.f dzasum.f dznrm2.f90 izamax.f zaxpy.f zcopy.f
4244
zdotc.f zdotu.f zdscal.f zrotg.f90 zscal.f zswap.f zdrot.f)
4345

44-
set(CB1AUX isamax.f sasum.f saxpy.f scopy.f snrm2.f90 sscal.f)
46+
set(CB1AUX
47+
isamax.f idamax.f
48+
sasum.f saxpy.f scopy.f sdot.f sgemm.f sgemv.f snrm2.f90 srot.f sscal.f
49+
sswap.f)
4550

46-
set(ZB1AUX idamax.f dasum.f daxpy.f dcopy.f dnrm2.f90 dscal.f)
51+
set(ZB1AUX
52+
icamax.f idamax.f
53+
cgemm.f cherk.f cscal.f ctrsm.f
54+
dasum.f daxpy.f dcopy.f ddot.f dgemm.f dgemv.f dnrm2.f90 drot.f dscal.f
55+
dswap.f
56+
scabs1.f)
4757

4858
#---------------------------------------------------------------------
4959
# Auxiliary routines needed by both the Level 2 and Level 3 BLAS
@@ -88,7 +98,8 @@ if(BUILD_SINGLE)
8898
list(APPEND SOURCES ${SBLAS1} ${ALLBLAS} ${SBLAS2} ${SBLAS3})
8999
endif()
90100
if(BUILD_DOUBLE)
91-
list(APPEND SOURCES ${DBLAS1} ${ALLBLAS} ${DBLAS2} ${DBLAS3})
101+
list(APPEND SOURCES
102+
${DBLAS1} ${DB1AUX} ${ALLBLAS} ${DBLAS2} ${DBLAS3} ${SBLAS3})
92103
endif()
93104
if(BUILD_COMPLEX)
94105
list(APPEND SOURCES ${CBLAS1} ${CB1AUX} ${ALLBLAS} ${CBLAS2} ${CBLAS3})

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ if(NOT (BUILD_SINGLE OR BUILD_DOUBLE OR BUILD_COMPLEX OR BUILD_COMPLEX16))
254254
BUILD_SINGLE, BUILD_DOUBLE, BUILD_COMPLEX, BUILD_COMPLEX16.")
255255
endif()
256256

257+
257258
# --------------------------------------------------
258259
# Subdirectories that need to be processed
259260
option(USE_OPTIMIZED_BLAS "Whether or not to use an optimized BLAS library instead of included netlib BLAS" OFF)
@@ -391,9 +392,8 @@ endif()
391392
set(LAPACK_INSTALL_EXPORT_NAME ${LAPACK_INSTALL_EXPORT_NAME_CACHE})
392393
unset(LAPACK_INSTALL_EXPORT_NAME_CACHE)
393394

394-
if(LAPACKE)
395-
add_subdirectory(LAPACKE)
396-
endif()
395+
add_subdirectory(LAPACKE)
396+
397397

398398
#-------------------------------------
399399
# BLAS++ / LAPACK++

LAPACKE/CMakeLists.txt

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
message(STATUS "LAPACKE enable")
2-
enable_language(C)
3-
4-
set(LAPACK_INSTALL_EXPORT_NAME ${LAPACKELIB}-targets)
5-
61
# Create a header file lapacke_mangling.h for the routines called in my C programs
72
include(FortranCInterface)
83
## Ensure that the fortran compiler and c compiler specified are compatible
@@ -16,8 +11,20 @@ if(NOT FortranCInterface_GLOBAL_FOUND OR NOT FortranCInterface_MODULE_FOUND)
1611
${LAPACK_BINARY_DIR}/include/lapacke_mangling.h)
1712
endif()
1813

19-
include_directories(include ${LAPACK_BINARY_DIR}/include)
2014
add_subdirectory(include)
15+
16+
17+
if(NOT LAPACKE)
18+
return()
19+
endif()
20+
21+
22+
message(STATUS "LAPACKE enabled")
23+
enable_language(C)
24+
25+
set(LAPACK_INSTALL_EXPORT_NAME ${LAPACKELIB}-targets)
26+
27+
include_directories(include ${LAPACK_BINARY_DIR}/include)
2128
add_subdirectory(src)
2229
add_subdirectory(utils)
2330

@@ -26,6 +33,15 @@ option(LAPACKE_BUILD_DOUBLE "Build LAPACKE double precision real" ON)
2633
option(LAPACKE_BUILD_COMPLEX "Build LAPACKE single precision complex" ON)
2734
option(LAPACKE_BUILD_COMPLEX16 "Build LAPACKE double precision complex" ON)
2835

36+
foreach(precision SINGLE DOUBLE COMPLEX COMPLEX16)
37+
if(LAPACKE_BUILD_${precision} AND NOT BUILD_${precision})
38+
message(
39+
SEND_ERROR
40+
"LAPACKE_BUILD_${precision} requires BUILD_${precision} to be ON"
41+
)
42+
endif()
43+
endforeach()
44+
2945
macro(append_subdir_files variable dirname)
3046
get_directory_property(holder DIRECTORY ${dirname} DEFINITION ${variable})
3147
foreach(depfile ${holder})

LAPACKE/include/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
set(LAPACKE_INCLUDE lapacke.h lapack.h lapacke_config.h lapacke_utils.h)
1+
set(LAPACKE_INCLUDE lapack.h)
2+
3+
IF(LAPACKE)
4+
list(APPEND LAPACKE_INCLUDE lapacke.h lapacke_config.h lapacke_utils.h)
5+
endif()
26

37
file(COPY ${LAPACKE_INCLUDE} DESTINATION ${LAPACK_BINARY_DIR}/include)

SRC/CMakeLists.txt

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ set(ALLAUX ilaenv.f ilaenv2stage.f ieeeck.f lsamen.f iparmq.f iparam2stage.F
4242

4343
set(SCLAUX
4444
la_constants.f90
45-
sbdsdc.f
45+
sbdsvdx.f sbdsdc.f
4646
sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f slaebz.f
4747
slaed0.f slaed1.f slaed2.f slaed3.f slaed4.f slaed5.f slaed6.f
4848
slaed7.f slaed8.f slaed9.f slaeda.f slaev2.f slagtf.f
@@ -55,14 +55,16 @@ set(SCLAUX
5555
slasd7.f slasd8.f slasda.f slasdq.f slasdt.f
5656
slaset.f slasq1.f slasq2.f slasq3.f slasq4.f slasq5.f slasq6.f
5757
slasr.f slasrt.f slassq.f90 slasv2.f spttrf.f sstebz.f sstedc.f
58-
ssteqr.f ssterf.f slaisnan.f sisnan.f
58+
sstein.f ssteqr.f ssterf.f sstevx.f
5959
slartgp.f slartgs.f ../INSTALL/sroundup_lwork.f
6060
${SECOND_SRC})
6161

6262
set(DZLAUX
6363
la_constants.f90
64-
dbdsdc.f
65-
dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f
64+
dbdsdc.f dbdsvdx.f
65+
dbdsqr.f ddisna.f
66+
disnan.f
67+
dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f
6668
dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f
6769
dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f
6870
dlagts.f dlamrg.f dlanst.f
@@ -73,20 +75,21 @@ set(DZLAUX
7375
dlasd0.f dlasd1.f dlasd2.f dlasd3.f dlasd4.f dlasd5.f dlasd6.f
7476
dlasd7.f dlasd8.f dlasda.f dlasdq.f dlasdt.f
7577
dlaset.f dlasq1.f dlasq2.f dlasq3.f dlasq4.f dlasq5.f dlasq6.f
76-
dlasr.f dlasrt.f dlassq.f90 dlasv2.f dpttrf.f dstebz.f dstedc.f
77-
dsteqr.f dsterf.f dlaisnan.f disnan.f
78+
dlasr.f dlasrt.f dlassq.f90 dlasv2.f dlaisnan.f
79+
dpttrf.f
80+
dstebz.f dstedc.f dstein.f dsteqr.f dsterf.f dstevx.f
7881
dlartgp.f dlartgs.f ../INSTALL/droundup_lwork.f
7982
../INSTALL/dlamch.f ${DSECOND_SRC})
8083

8184
set(SLASRC
82-
sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f
85+
sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f
8386
sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f
8487
sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f
8588
sgehd2.f sgehrd.f sgelq2.f sgelqf.f
8689
sgels.f sgelsd.f sgelss.f sgelsy.f sgeql2.f sgeqlf.f
8790
sgeqp3.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f sgerq2.f sgerqf.f
8891
sgesc2.f sgesdd.f sgesv.f sgesvd.f sgesvdx.f sgesvx.f sgetc2.f sgetf2.f
89-
sgetrf2.f sgetri.f
92+
sgetri.f
9093
sggbak.f sggbal.f
9194
sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f
9295
sggglm.f sgghrd.f sgghd3.f sgglse.f sggqrf.f
@@ -104,7 +107,7 @@ set(SLASRC
104107
slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f
105108
slarf.f slarfb.f slarfb_gett.f slarfg.f slarfgp.f slarft.f slarfx.f slarfy.f slargv.f
106109
slarrv.f slartv.f
107-
slarz.f slarzb.f slarzt.f slaswp.f slasy2.f
110+
slarz.f slarzb.f slarzt.f slasy2.f
108111
slasyf.f slasyf_rook.f slasyf_rk.f slasyf_aa.f
109112
slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f
110113
slauu2.f slauum.f sopgtr.f sopmtr.f sorg2l.f sorg2r.f
@@ -114,15 +117,15 @@ set(SLASRC
114117
sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f
115118
spbstf.f spbsv.f spbsvx.f
116119
spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f
117-
sposvx.f spotf2.f spotrf2.f spotri.f spstrf.f spstf2.f
120+
sposvx.f spotf2.f spotri.f spstrf.f spstf2.f
118121
sppcon.f sppequ.f
119122
spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f
120123
spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f
121124
ssbev.f ssbevd.f ssbevx.f ssbgst.f ssbgv.f ssbgvd.f ssbgvx.f
122125
ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f
123126
sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f
124-
ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f
125-
sstevx.f ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f
127+
ssptrf.f ssptri.f ssptrs.f sstegr.f sstev.f sstevd.f sstevr.f
128+
ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f
126129
ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f
127130
ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f
128131
ssyswapr.f ssytrs.f ssytrs2.f
@@ -157,7 +160,9 @@ set(SLASRC
157160
ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f
158161
sgesvdq.f)
159162

160-
set(DSLASRC spotrs.f sgetrs.f spotrf.f sgetrf.f)
163+
set(DSLASRC
164+
sgetrf.f sgetrf2.f sgetrs.f sisnan.f slaisnan.f slaswp.f spotrf.f spotrf2.f
165+
spotrs.f)
161166

162167
set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f
163168
sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f
@@ -271,7 +276,10 @@ set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f
271276
cla_hercond_c.f cla_hercond_x.f cla_herpvgrw.f
272277
cla_lin_berr.f clarscl2.f clascl2.f cla_wwaddw.f)
273278

274-
set(ZCLASRC cpotrs.f cgetrs.f cpotrf.f cgetrf.f)
279+
set(ZCLASRC
280+
cgetrf.f cgetrf2.f cgetrs.f claswp.f cpotrf.f cpotrf2.f cpotrs.f cgetrs.f
281+
cpotrf.f cgetrf.f
282+
sisnan.f slaisnan.f)
275283

276284
set(DLASRC
277285
dbdsvdx.f dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f
@@ -299,7 +307,7 @@ set(DLASRC
299307
dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f
300308
dlarf.f dlarfb.f dlarfb_gett.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f dlarfy.f
301309
dlargv.f dlarrv.f dlartv.f
302-
dlarz.f dlarzb.f dlarzt.f dlaswp.f dlasy2.f
310+
dlarz.f dlarzb.f dlarzt.f dlaswp.f dlasy2.f
303311
dlasyf.f dlasyf_rook.f dlasyf_rk.f dlasyf_aa.f
304312
dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f dlauu2.f
305313
dlauum.f dopgtr.f dopmtr.f dorg2l.f dorg2r.f
@@ -316,8 +324,8 @@ set(DLASRC
316324
dsbev.f dsbevd.f dsbevx.f dsbgst.f dsbgv.f dsbgvd.f dsbgvx.f
317325
dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f
318326
dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f
319-
dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f
320-
dstevx.f dsycon.f dsyev.f dsyevd.f dsyevr.f
327+
dsptrf.f dsptri.f dsptrs.f dstegr.f dstev.f dstevd.f dstevr.f
328+
dsycon.f dsyev.f dsyevd.f dsyevr.f
321329
dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f
322330
dsysv.f dsysvx.f
323331
dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytrs.f dsytrs2.f

0 commit comments

Comments
 (0)