2025-07-09 06:47:20 +08:00
###############################################################################
# Copyright (c) 2025, The OpenBLAS Project
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name of the OpenBLAS project nor the names of
# its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
###############################################################################
2015-01-31 01:21:50 +08:00
2016-05-25 15:13:28 +08:00
include_directories ( ${ PROJECT_SOURCE_DIR } )
2017-08-01 17:40:41 +08:00
include_directories ( ${ PROJECT_BINARY_DIR } )
2015-01-31 01:21:50 +08:00
2015-08-11 03:10:44 +08:00
2015-02-03 06:25:30 +08:00
set ( BLAS1_SOURCES
2015-02-18 00:30:28 +08:00
c o p y . c
2015-08-11 03:10:44 +08:00
n r m 2 . c
2015-02-18 00:30:28 +08:00
)
set ( BLAS1_REAL_ONLY_SOURCES
r o t m . c r o t m g . c # N.B. these do not have complex counterparts
2015-08-11 03:10:44 +08:00
r o t . c
a s u m . c
2019-03-31 04:59:18 +08:00
s u m . c
2015-02-18 00:30:28 +08:00
)
# these will have 'z' prepended for the complex version
set ( BLAS1_MANGLED_SOURCES
2015-02-03 06:25:30 +08:00
a x p y . c s w a p . c
2015-02-18 00:30:28 +08:00
s c a l . c
2015-02-03 06:25:30 +08:00
d o t . c
2015-08-11 03:10:44 +08:00
r o t g . c
2015-02-03 06:25:30 +08:00
a x p b y . c
)
2019-04-30 05:03:56 +08:00
# TODO: USE_NETLIB_GEMV should switch gemv.c to netlib/*gemv.f
2015-02-18 00:30:28 +08:00
# these all have 'z' sources for complex versions
2015-02-03 06:25:30 +08:00
set ( BLAS2_SOURCES
g e m v . c g e r . c
2022-01-28 05:02:08 +08:00
t r s v . c t r m v . c
s y r 2 . c g b m v . c
2025-03-27 06:36:49 +08:00
s b m v . c s p m v . c
2022-01-28 05:02:08 +08:00
s p r 2 . c
2015-02-03 06:25:30 +08:00
t b s v . c t b m v . c
t p s v . c t p m v . c
)
2022-01-28 05:02:08 +08:00
set ( BLAS2_REAL_ONLY_SOURCES
2025-03-27 06:36:49 +08:00
s y m v . c s y r . c s p r . c
2022-01-28 05:02:08 +08:00
)
set ( BLAS2_COMPLEX_LAPACK_SOURCES
2025-03-27 06:36:49 +08:00
s y m v . c s y r . c s p r . c
2022-01-28 05:02:08 +08:00
)
2015-08-11 03:10:44 +08:00
set ( BLAS2_COMPLEX_ONLY_MANGLED_SOURCES
h e m v . c h b m v . c
h e r . c h e r 2 . c
h p m v . c h p r . c
h p r 2 . c
)
2015-02-18 03:12:30 +08:00
# these do not have separate 'z' sources
2015-02-03 06:25:30 +08:00
set ( BLAS3_SOURCES
g e m m . c s y m m . c
2022-10-26 21:33:58 +08:00
t r s m . c s y r k . c s y r 2 k . c g e m m t . c
2015-02-18 00:30:28 +08:00
)
set ( BLAS3_MANGLED_SOURCES
2015-02-03 06:25:30 +08:00
o m a t c o p y . c i m a t c o p y . c
2015-08-11 03:10:44 +08:00
g e a d d . c
2015-02-03 06:25:30 +08:00
)
2015-02-05 01:30:15 +08:00
# generate the BLAS objs once with and once without cblas
set ( CBLAS_FLAGS "" )
2015-02-03 06:25:30 +08:00
if ( NOT DEFINED NO_FBLAS )
2015-02-05 01:30:15 +08:00
list ( APPEND CBLAS_FLAGS 0 )
endif ( )
if ( NOT DEFINED NO_CBLAS )
list ( APPEND CBLAS_FLAGS 1 )
endif ( )
2015-02-03 02:31:15 +08:00
2015-02-05 01:30:15 +08:00
foreach ( CBLAS_FLAG ${ CBLAS_FLAGS } )
2015-02-18 03:12:30 +08:00
# TODO: don't compile complex sources with cblas for now, the naming schemes are all different and they will have to be handled separately from SINGLE/DOUBLE
set ( DISABLE_COMPLEX 0 )
set ( MANGLE_COMPLEX 3 )
if ( CBLAS_FLAG EQUAL 1 )
2015-10-21 03:37:22 +08:00
# set(DISABLE_COMPLEX 1)
# set(MANGLE_COMPLEX 1)
2015-02-18 03:12:30 +08:00
endif ( )
GenerateNamedObjects ( "${BLAS1_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false ${ DISABLE_COMPLEX } )
GenerateNamedObjects ( "${BLAS1_REAL_ONLY_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false 1 )
GenerateNamedObjects ( "${BLAS1_MANGLED_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false ${ MANGLE_COMPLEX } )
GenerateNamedObjects ( "${BLAS2_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false ${ MANGLE_COMPLEX } )
2022-01-28 05:02:08 +08:00
GenerateNamedObjects ( "${BLAS2_REAL_ONLY_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false 1 )
if ( NOT DEFINED NO_LAPACK )
GenerateNamedObjects ( "${BLAS2_COMPLEX_LAPACK_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false ${ MANGLE_COMPLEX } )
endif ( )
2015-08-11 03:10:44 +08:00
GenerateNamedObjects ( "${BLAS2_COMPLEX_ONLY_MANGLED_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false 4 )
2015-02-18 03:12:30 +08:00
GenerateNamedObjects ( "${BLAS3_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false ${ DISABLE_COMPLEX } )
GenerateNamedObjects ( "${BLAS3_MANGLED_SOURCES}" "" "" ${ CBLAS_FLAG } "" "" false ${ MANGLE_COMPLEX } )
2015-02-03 02:31:15 +08:00
2021-09-14 22:15:57 +08:00
GenerateNamedObjects ( "xerbla.c" "" "xerbla" ${ CBLAS_FLAG } "" "" true )
2015-08-11 03:10:44 +08:00
#sdsdot, dsdot
2020-09-23 05:25:04 +08:00
if ( BUILD_SINGLE OR BUILD_DOUBLE )
2015-08-11 03:10:44 +08:00
GenerateNamedObjects ( "sdsdot.c" "" "sdsdot" ${ CBLAS_FLAG } "" "" true "SINGLE" )
2025-09-18 02:42:11 +08:00
GenerateNamedObjects ( "gemm_batch.c" "" "gemm_batch" ${ CBLAS_FLAG } "" "" false )
2025-09-26 20:00:47 +08:00
GenerateNamedObjects ( "gemm_batch_strided.c" "" "gemm_batch_strided" ${ CBLAS_FLAG } "" "" false )
2025-09-18 02:42:11 +08:00
endif ( )
2020-09-23 05:25:04 +08:00
if ( BUILD_DOUBLE )
2015-08-11 03:10:44 +08:00
GenerateNamedObjects ( "dsdot.c" "" "dsdot" ${ CBLAS_FLAG } "" "" true "SINGLE" )
2020-09-23 05:25:04 +08:00
endif ( )
2015-08-11 03:10:44 +08:00
2015-02-03 02:31:15 +08:00
# trmm is trsm with a compiler flag set
2015-02-16 07:44:37 +08:00
GenerateNamedObjects ( "trsm.c" "TRMM" "trmm" ${ CBLAS_FLAG } )
2024-10-30 19:55:14 +08:00
# gemmtr is gemmt under the name adopted by the Reference BLAS
2025-02-07 01:52:00 +08:00
GenerateNamedObjects ( "gemm.c" "RNAME" "gemmtr" ${ CBLAS_FLAG } )
2015-02-05 00:52:19 +08:00
# max and imax are compiled 4 times
2015-02-16 07:44:37 +08:00
GenerateNamedObjects ( "max.c" "" "" ${ CBLAS_FLAG } )
GenerateNamedObjects ( "max.c" "USE_ABS" "amax" ${ CBLAS_FLAG } )
GenerateNamedObjects ( "max.c" "USE_ABS;USE_MIN" "amin" ${ CBLAS_FLAG } )
GenerateNamedObjects ( "max.c" "USE_MIN" "min" ${ CBLAS_FLAG } )
2015-02-05 00:52:19 +08:00
2015-02-16 07:44:37 +08:00
GenerateNamedObjects ( "imax.c" "" "i*max" ${ CBLAS_FLAG } )
GenerateNamedObjects ( "imax.c" "USE_ABS" "i*amax" ${ CBLAS_FLAG } )
GenerateNamedObjects ( "imax.c" "USE_ABS;USE_MIN" "i*amin" ${ CBLAS_FLAG } )
GenerateNamedObjects ( "imax.c" "USE_MIN" "i*min" ${ CBLAS_FLAG } )
2015-02-03 02:31:15 +08:00
2021-09-14 22:15:57 +08:00
if ( BUILD_BFLOAT16 )
2025-07-15 22:41:19 +08:00
GenerateNamedObjects ( "scal.c" "BGEMM" "bscal" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2021-09-14 22:15:57 +08:00
GenerateNamedObjects ( "bf16dot.c" "" "sbdot" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2025-07-09 06:47:20 +08:00
GenerateNamedObjects ( "gemm.c" "BGEMM" "bgemm" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2021-09-14 22:15:57 +08:00
GenerateNamedObjects ( "gemm.c" "" "sbgemm" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2025-06-15 06:06:34 +08:00
GenerateNamedObjects ( "sbgemmt.c" "" "sbgemmt" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
GenerateNamedObjects ( "sbgemmt.c" "RNAME" "sbgemmtr" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2025-07-15 22:41:19 +08:00
GenerateNamedObjects ( "sbgemv.c" "BGEMM" "bgemv" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2021-09-14 22:15:57 +08:00
GenerateNamedObjects ( "sbgemv.c" "" "sbgemv" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
GenerateNamedObjects ( "tobf16.c" "SINGLE_PREC" "sbstobf16" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
GenerateNamedObjects ( "tobf16.c" "DOUBLE_PREC" "sbdtobf16" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
GenerateNamedObjects ( "bf16to.c" "SINGLE_PREC" "sbf16tos" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
GenerateNamedObjects ( "bf16to.c" "DOUBLE_PREC" "dbf16tod" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2024-05-31 00:26:02 +08:00
GenerateNamedObjects ( "gemm_batch.c" "" "sbgemm_batch" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2025-09-26 20:00:47 +08:00
GenerateNamedObjects ( "gemm_batch_strided.c" "" "sbgemm_batch_strided" ${ CBLAS_FLAG } "" "" true "BFLOAT16" )
2024-05-31 00:26:02 +08:00
endif ( )
2025-06-03 20:14:30 +08:00
if ( BUILD_HFLOAT16 )
GenerateNamedObjects ( "gemm.c" "" "shgemm" ${ CBLAS_FLAG } "" "" true "HFLOAT16" )
2025-10-07 21:24:36 +08:00
GenerateNamedObjects ( "sbgemv.c" "" "shgemv" ${ CBLAS_FLAG } "" "" true "HFLOAT16" )
2025-06-03 20:14:30 +08:00
endif ( )
2015-02-03 02:31:15 +08:00
2015-02-23 07:49:28 +08:00
# complex-specific sources
foreach ( float_type ${ FLOAT_TYPES } )
2015-08-11 03:10:44 +08:00
2015-02-23 07:49:28 +08:00
if ( ${ float_type } STREQUAL "COMPLEX" OR ${ float_type } STREQUAL "ZCOMPLEX" )
2024-06-10 02:32:10 +08:00
GenerateNamedObjects ( "zaxpy.c" "CONJ" "axpyc" ${ CBLAS_FLAG } "" "" false ${ float_type } )
2024-01-31 23:00:52 +08:00
2015-10-21 03:37:22 +08:00
GenerateNamedObjects ( "zger.c" "" "geru" ${ CBLAS_FLAG } "" "" false ${ float_type } )
GenerateNamedObjects ( "zger.c" "CONJ" "gerc" ${ CBLAS_FLAG } "" "" false ${ float_type } )
GenerateNamedObjects ( "zdot.c" "CONJ" "dotc" ${ CBLAS_FLAG } "" "" false ${ float_type } )
GenerateNamedObjects ( "zdot.c" "" "dotu" ${ CBLAS_FLAG } "" "" false ${ float_type } )
2015-08-11 03:10:44 +08:00
2015-10-21 03:37:22 +08:00
GenerateNamedObjects ( "symm.c" "HEMM" "hemm" ${ CBLAS_FLAG } "" "" false ${ float_type } )
GenerateNamedObjects ( "syrk.c" "HEMM" "herk" ${ CBLAS_FLAG } "" "" false ${ float_type } )
GenerateNamedObjects ( "syr2k.c" "HEMM" "her2k" ${ CBLAS_FLAG } "" "" false ${ float_type } )
2015-08-11 03:10:44 +08:00
if ( USE_GEMM3M )
2020-04-22 17:01:28 +08:00
GenerateNamedObjects ( "gemm.c" "GEMM3M" "gemm3m" ${ CBLAS_FLAG } "" "" false ${ float_type } )
2015-08-11 03:10:44 +08:00
endif ( )
2015-02-23 07:49:28 +08:00
endif ( )
if ( ${ float_type } STREQUAL "COMPLEX" )
2015-10-21 03:37:22 +08:00
GenerateNamedObjects ( "zscal.c" "SSCAL" "sscal" ${ CBLAS_FLAG } "" "" false "COMPLEX" )
GenerateNamedObjects ( "nrm2.c" "" "scnrm2" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
GenerateNamedObjects ( "zrot.c" "" "csrot" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
GenerateNamedObjects ( "max.c" "USE_ABS;USE_MIN" "scamin" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
GenerateNamedObjects ( "max.c" "USE_ABS" "scamax" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
GenerateNamedObjects ( "asum.c" "" "scasum" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
2019-03-31 04:59:18 +08:00
GenerateNamedObjects ( "sum.c" "" "scsum" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
2025-09-18 02:42:11 +08:00
GenerateNamedObjects ( "gemm_batch.c" "" "cgemm_batch" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
2025-09-26 20:00:47 +08:00
GenerateNamedObjects ( "gemm_batch_strided.c" "" "cgemm_batch_strided" ${ CBLAS_FLAG } "" "" true "COMPLEX" )
2015-02-23 07:49:28 +08:00
endif ( )
if ( ${ float_type } STREQUAL "ZCOMPLEX" )
2015-10-21 03:37:22 +08:00
GenerateNamedObjects ( "zscal.c" "SSCAL" "dscal" ${ CBLAS_FLAG } "" "" false "ZCOMPLEX" )
GenerateNamedObjects ( "nrm2.c" "" "dznrm2" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
GenerateNamedObjects ( "zrot.c" "" "zdrot" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
GenerateNamedObjects ( "max.c" "USE_ABS;USE_MIN" "dzamin" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
GenerateNamedObjects ( "max.c" "USE_ABS" "dzamax" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
GenerateNamedObjects ( "asum.c" "" "dzasum" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
2019-03-31 04:59:18 +08:00
GenerateNamedObjects ( "sum.c" "" "dzsum" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
2025-09-18 02:42:11 +08:00
GenerateNamedObjects ( "gemm_batch.c" "" "zgemm_batch" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
2025-09-26 20:00:47 +08:00
GenerateNamedObjects ( "gemm_batch_strided.c" "" "zgemm_batch_strided" ${ CBLAS_FLAG } "" "" true "ZCOMPLEX" )
2015-02-23 07:49:28 +08:00
endif ( )
endforeach ( )
2015-10-21 03:37:22 +08:00
endforeach ( )
#Special functions for CBLAS
if ( NOT DEFINED NO_CBLAS )
foreach ( float_type ${ FLOAT_TYPES } )
if ( ${ float_type } STREQUAL "COMPLEX" OR ${ float_type } STREQUAL "ZCOMPLEX" )
#cblas_dotc_sub cblas_dotu_sub
GenerateNamedObjects ( "zdot.c" "FORCE_USE_STACK" "dotu_sub" 1 "" "" false ${ float_type } )
GenerateNamedObjects ( "zdot.c" "FORCE_USE_STACK;CONJ" "dotc_sub" 1 "" "" false ${ float_type } )
endif ( )
endforeach ( )
endif ( )
2015-02-23 07:49:28 +08:00
2025-03-27 06:36:49 +08:00
if ( NOT NO_LAPACK )
2015-02-05 01:30:15 +08:00
set ( LAPACK_SOURCES
2015-02-18 00:30:28 +08:00
l a p a c k / g e s v . c
)
# prepend z for complex versions
set ( LAPACK_MANGLED_SOURCES
2015-02-03 02:31:15 +08:00
l a p a c k / g e t r f . c l a p a c k / g e t r s . c l a p a c k / p o t r f . c l a p a c k / g e t f 2 . c
2015-02-18 00:30:28 +08:00
l a p a c k / p o t f 2 . c l a p a c k / l a s w p . c l a p a c k / l a u u 2 . c
2015-02-03 02:31:15 +08:00
l a p a c k / l a u u m . c l a p a c k / t r t i 2 . c l a p a c k / t r t r i . c
)
2015-02-18 00:30:28 +08:00
2015-02-16 07:44:37 +08:00
GenerateNamedObjects ( "${LAPACK_SOURCES}" )
2022-11-08 19:02:59 +08:00
if ( NOT RELAPACK_REPLACE )
2015-02-18 00:30:28 +08:00
GenerateNamedObjects ( "${LAPACK_MANGLED_SOURCES}" "" "" 0 "" "" 0 3 )
2022-11-08 19:02:59 +08:00
else ( )
GenerateNamedObjects ( "lapack/getrs.c" "" "" 0 "" "" 0 3 )
GenerateNamedObjects ( "lapack/getf2.c" "" "" 0 "" "" 0 3 )
GenerateNamedObjects ( "lapack/potf2.c" "" "" 0 "" "" 0 3 )
GenerateNamedObjects ( "lapack/laswp.c" "" "" 0 "" "" 0 3 )
GenerateNamedObjects ( "lapack/lauu2.c" "" "" 0 "" "" 0 3 )
GenerateNamedObjects ( "lapack/trti2.c" "" "" 0 "" "" 0 3 )
endif ( )
2025-07-01 21:12:27 +08:00
GenerateNamedObjects ( "lapack/laed3.c" "" "" 0 "" "" 0 1 )
2015-02-03 02:31:15 +08:00
endif ( )
2020-10-11 20:53:26 +08:00
if ( BUILD_COMPLEX AND NOT BUILD_SINGLE )
2020-09-23 05:25:04 +08:00
GenerateNamedObjects ( "scal.c" "" "scal" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "copy.c" "" "copy" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "dot.c" "" "dot" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "rot.c" "" "rot" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "nrm2.c" "" "nrm2" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "gemv.c" "" "gemv" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "gemm.c" "" "gemm" 0 "" "" false "SINGLE" )
2025-09-18 02:42:11 +08:00
GenerateNamedObjects ( "gemm_batch.c" "" "gemm_batch" 0 "" "" false "SINGLE" )
2025-09-26 20:00:47 +08:00
GenerateNamedObjects ( "gemm_batch_strided.c" "" "gemm_batch_strided" 0 "" "" false "SINGLE" )
2020-09-23 05:25:04 +08:00
GenerateNamedObjects ( "asum.c" "" "asum" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "swap.c" "" "swap" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "axpy.c" "" "axpy" 0 "" "" false "SINGLE" )
GenerateNamedObjects ( "imax.c" "USE_ABS" "i*amax" 0 "" "" false "SINGLE" )
endif ( )
2020-10-11 20:53:26 +08:00
if ( BUILD_COMPLEX16 AND NOT BUILD_DOUBLE )
2020-09-23 05:25:04 +08:00
GenerateNamedObjects ( "scal.c" "" "scal" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "copy.c" "" "copy" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "dot.c" "" "dot" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "rot.c" "" "rot" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "nrm2.c" "" "nrm2" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "gemv.c" "" "gemv" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "gemm.c" "" "gemm" 0 "" "" false "DOUBLE" )
2025-09-18 02:42:11 +08:00
GenerateNamedObjects ( "gemm_batch.c" "" "gemm_batch" 0 "" "" false "DOUBLE" )
2025-09-26 20:00:47 +08:00
GenerateNamedObjects ( "gemm_batch_strided.c" "" "gemm_batch_strided" 0 "" "" false "DOUBLE" )
2020-09-23 05:25:04 +08:00
GenerateNamedObjects ( "asum.c" "" "asum" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "swap.c" "" "swap" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "axpy.c" "" "axpy" 0 "" "" false "DOUBLE" )
GenerateNamedObjects ( "imax.c" "USE_ABS" "i*amax" 0 "" "" false "DOUBLE" )
endif ( )
2025-07-23 21:51:30 +08:00
if ( BUILD_BFLOAT16 AND NO_FBLAS )
GenerateNamedObjects ( "tobf16.c" "SINGLE_PREC" "sbstobf16" 0 "" "" true "BFLOAT16" )
GenerateNamedObjects ( "bf16to.c" "SINGLE_PREC" "sbf16tos" 0 "" "" true "BFLOAT16" )
endif ( )
2015-02-25 02:26:33 +08:00
add_library ( interface OBJECT ${ OPENBLAS_SRC } )
2025-03-13 08:41:55 +08:00
if ( USE_OPENMP )
target_link_libraries ( interface OpenMP::OpenMP_C )
endif ( )