Skip to content

Commit 914c4d0

Browse files
authored
Add C versions of the CBLAS test sources (#3656)
* Add C conversions of the CBLAS tests for NOFORTRAN=1 builds * Enable CTEST without Fortran and fix passing of BUILD_vartype options to exports/gensymbol
1 parent 9283c7c commit 914c4d0

18 files changed

+38807
-18
lines changed

CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -314,16 +314,16 @@ endif()
314314
if (NOT NOFORTRAN)
315315
# Build test and ctest
316316
add_subdirectory(test)
317-
if(NOT NO_CBLAS)
318-
add_subdirectory(ctest)
319-
endif()
320317
if (BUILD_TESTING)
321318
add_subdirectory(lapack-netlib/TESTING)
322319
endif()
320+
endif()
321+
if(NOT NO_CBLAS)
322+
add_subdirectory(ctest)
323+
endif()
323324
if (CPP_THREAD_SAFETY_TEST OR CPP_THREAD_SAFETY_GEMV)
324325
add_subdirectory(cpp_thread_test)
325326
endif()
326-
endif()
327327

328328
set_target_properties(${OpenBLAS_LIBS} PROPERTIES
329329
VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}
@@ -398,13 +398,13 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
398398

399399
if (NOT DEFINED USE_PERL)
400400
add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
401-
COMMAND ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" > ${PROJECT_BINARY_DIR}/objcopy.def
401+
COMMAND ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" "${BUILD_BFLOAT16}" "${BUILD_SINGLE}" "${BUILD_DOUBLE}" "${BUILD_COMPLEX}" "${BUILD_COMPLEX16}" > ${PROJECT_BINARY_DIR}/objcopy.def
402402
COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so
403403
COMMENT "renaming symbols"
404404
)
405405
else()
406406
add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
407-
COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" > ${PROJECT_BINARY_DIR}/objcopy.def
407+
COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" "${BUILD_BFLOAT16}" "${BUILD_SINGLE}" "${BUILD_DOUBLE}" "${BUILD_COMPLEX}" "${BUILD_COMPLEX16}" > ${PROJECT_BINARY_DIR}/objcopy.def
408408
COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so
409409
COMMENT "renaming symbols"
410410
)

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,18 @@ ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
149149
ifndef NO_FBLAS
150150
$(MAKE) -C test all
151151
endif
152+
endif
153+
ifneq ($(ONLY_CBLAS), 1)
152154
$(MAKE) -C utest all
155+
endif
153156
ifneq ($(NO_CBLAS), 1)
157+
ifneq ($(ONLY_CBLAS), 1)
154158
$(MAKE) -C ctest all
159+
endif
155160
ifeq ($(CPP_THREAD_SAFETY_TEST), 1)
156161
$(MAKE) -C cpp_thread_test all
157162
endif
158163
endif
159-
endif
160164

161165
libs :
162166
ifeq ($(CORE), UNKNOWN)

Makefile.system

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,10 +1042,12 @@ FCOMMON_OPT += -frecursive
10421042
FCOMMON_OPT += -fno-optimize-sibling-calls
10431043
#Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
10441044
ifneq ($(NOFORTRAN), 1)
1045+
ifneq ($(NOFORTRAN), 2)
10451046
ifneq ($(NO_LAPACK), 1)
10461047
EXTRALIB += -lgfortran
10471048
endif
10481049
endif
1050+
endif
10491051
ifdef NO_BINARY_MODE
10501052
ifeq ($(ARCH), $(filter $(ARCH),mips64))
10511053
ifdef BINARY64

azure-pipelines.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,12 @@ jobs:
163163
variables:
164164
LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
165165
LIBRARY_PATH: /usr/local/opt/llvm/lib
166+
MACOSX_DEPLOYMENT_TARGET: 11.0
166167
steps:
167168
- script: |
168169
brew update
169170
brew install llvm libomp
170-
make TARGET=CORE2 USE_OPENMP=1 INTERFACE64=1 DYNAMIC_ARCH=1 CC=/usr/local/opt/llvm/bin/clang FC=gfortran-10
171+
make TARGET=CORE2 USE_OPENMP=1 DYNAMIC_ARCH=1 CC=/usr/local/opt/llvm/bin/clang NOFORTRAN=1
171172
172173
- job: OSX_OpenMP_Clang_cmake
173174
pool:

ctest/CMakeLists.txt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
include_directories(${PROJECT_SOURCE_DIR})
22
include_directories(${PROJECT_BINARY_DIR})
33

4+
if (NOT NOFORTRAN)
45
enable_language(Fortran)
6+
endif()
57

68
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DADD${BU} -DCBLAS")
79
if (CMAKE_Fortran_COMPILER_ID STREQUAL GNU)
@@ -28,34 +30,69 @@ foreach(float_type ${FLOAT_TYPES})
2830
continue()
2931
endif()
3032
#level1
33+
if (NOT NOFORTRAN)
3134
add_executable(x${float_char}cblat1
3235
c_${float_char}blat1.f
3336
c_${float_char}blas1.c)
37+
else()
38+
add_executable(x${float_char}cblat1
39+
c_${float_char}blat1c.c
40+
c_${float_char}blas1.c)
41+
endif()
3442
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME})
43+
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
44+
target_link_libraries(x${float_char}cblat1 m)
45+
endif()
3546
add_test(NAME "x${float_char}cblat1"
3647
COMMAND $<TARGET_FILE:x${float_char}cblat1>)
3748

3849
#level2
50+
if (NOT NOFORTRAN)
3951
add_executable(x${float_char}cblat2
4052
c_${float_char}blat2.f
4153
c_${float_char}blas2.c
4254
c_${float_char}2chke.c
4355
auxiliary.c
4456
c_xerbla.c
4557
constant.c)
58+
else()
59+
add_executable(x${float_char}cblat2
60+
c_${float_char}blat2c.c
61+
c_${float_char}blas2.c
62+
c_${float_char}2chke.c
63+
auxiliary.c
64+
c_xerbla.c
65+
constant.c)
66+
endif()
4667
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME})
68+
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
69+
target_link_libraries(x${float_char}cblat2 m)
70+
endif()
4771
add_test(NAME "x${float_char}cblat2"
4872
COMMAND ${test_helper} $<TARGET_FILE:x${float_char}cblat2> "${PROJECT_SOURCE_DIR}/ctest/${float_char}in2")
4973

5074
#level3
75+
if (NOT NOFORTRAN)
5176
add_executable(x${float_char}cblat3
5277
c_${float_char}blat3.f
5378
c_${float_char}blas3.c
5479
c_${float_char}3chke.c
5580
auxiliary.c
5681
c_xerbla.c
5782
constant.c)
83+
else()
84+
add_executable(x${float_char}cblat3
85+
c_${float_char}blat3c.c
86+
c_${float_char}blas3.c
87+
c_${float_char}3chke.c
88+
auxiliary.c
89+
c_xerbla.c
90+
constant.c)
91+
endif()
5892
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME})
93+
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
94+
target_link_libraries(x${float_char}cblat3 m)
95+
endif()
5996
add_test(NAME "x${float_char}cblat3"
6097
COMMAND ${test_helper} $<TARGET_FILE:x${float_char}cblat3> "${PROJECT_SOURCE_DIR}/ctest/${float_char}in3")
6198

ctest/Makefile

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,7 @@ ztestl3o = c_zblas3.o c_z3chke.o auxiliary.o c_xerbla.o constant.o
4343
ztestl3o_3m = c_zblas3_3m.o c_z3chke_3m.o auxiliary.o c_xerbla.o constant.o
4444

4545

46-
ifeq ($(NOFORTRAN),1)
47-
all ::
48-
else
4946
all :: all1 all2 all3
50-
endif
5147

5248
ifeq ($(BUILD_SINGLE),1)
5349
all1targets += xscblat1
@@ -222,53 +218,83 @@ endif
222218

223219
ifeq ($(BUILD_SINGLE),1)
224220
# Single real
221+
ifeq ($(NOFORTRAN),0)
225222
xscblat1: $(stestl1o) c_sblat1.o $(TOPDIR)/$(LIBNAME)
226223
$(FC) $(FLDFLAGS) -o xscblat1 c_sblat1.o $(stestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
227-
228224
xscblat2: $(stestl2o) c_sblat2.o $(TOPDIR)/$(LIBNAME)
229225
$(FC) $(FLDFLAGS) -o xscblat2 c_sblat2.o $(stestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
230-
231226
xscblat3: $(stestl3o) c_sblat3.o $(TOPDIR)/$(LIBNAME)
232227
$(FC) $(FLDFLAGS) -o xscblat3 c_sblat3.o $(stestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
228+
else
229+
xscblat1: $(stestl1o) c_sblat1c.o $(TOPDIR)/$(LIBNAME)
230+
$(CC) $(CFLAGS) -o xscblat1 c_sblat1c.o $(stestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
231+
xscblat2: $(stestl2o) c_sblat2c.o $(TOPDIR)/$(LIBNAME)
232+
$(CC) $(CFLAGS) -o xscblat2 c_sblat2c.o $(stestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
233+
xscblat3: $(stestl3o) c_sblat3c.o $(TOPDIR)/$(LIBNAME)
234+
$(CC) $(CFLAGS) -o xscblat3 c_sblat3c.o $(stestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
235+
endif
233236
endif
234237

235238
ifeq ($(BUILD_DOUBLE),1)
236239
# Double real
240+
ifeq ($(NOFORTRAN),0)
237241
xdcblat1: $(dtestl1o) c_dblat1.o $(TOPDIR)/$(LIBNAME)
238242
$(FC) $(FLDFLAGS) -o xdcblat1 c_dblat1.o $(dtestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
239243
xdcblat2: $(dtestl2o) c_dblat2.o $(TOPDIR)/$(LIBNAME)
240244
$(FC) $(FLDFLAGS) -o xdcblat2 c_dblat2.o $(dtestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
241245
xdcblat3: $(dtestl3o) c_dblat3.o $(TOPDIR)/$(LIBNAME)
242246
$(FC) $(FLDFLAGS) -o xdcblat3 c_dblat3.o $(dtestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
247+
else
248+
xdcblat1: $(dtestl1o) c_dblat1c.o $(TOPDIR)/$(LIBNAME)
249+
$(CC) $(CFLAGS) -o xdcblat1 c_dblat1c.o $(dtestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
250+
xdcblat2: $(dtestl2o) c_dblat2c.o $(TOPDIR)/$(LIBNAME)
251+
$(CC) $(CFLAGS) -o xdcblat2 c_dblat2c.o $(dtestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
252+
xdcblat3: $(dtestl3o) c_dblat3c.o $(TOPDIR)/$(LIBNAME)
253+
$(CC) $(CFLAGS) -o xdcblat3 c_dblat3c.o $(dtestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
254+
endif
243255
endif
244-
245256

246257
ifeq ($(BUILD_COMPLEX),1)
247258
# Single complex
259+
ifeq ($(NOFORTRAN),0)
248260
xccblat1: $(ctestl1o) c_cblat1.o $(TOPDIR)/$(LIBNAME)
249261
$(FC) $(FLDFLAGS) -o xccblat1 c_cblat1.o $(ctestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
250262
xccblat2: $(ctestl2o) c_cblat2.o $(TOPDIR)/$(LIBNAME)
251263
$(FC) $(FLDFLAGS) -o xccblat2 c_cblat2.o $(ctestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
252264
xccblat3: $(ctestl3o) c_cblat3.o $(TOPDIR)/$(LIBNAME)
253265
$(FC) $(FLDFLAGS) -o xccblat3 c_cblat3.o $(ctestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
254-
255266
xccblat3_3m: $(ctestl3o_3m) c_cblat3_3m.o $(TOPDIR)/$(LIBNAME)
256267
$(FC) $(FLDFLAGS) -o xccblat3_3m c_cblat3_3m.o $(ctestl3o_3m) $(LIB) $(EXTRALIB) $(CEXTRALIB)
268+
else
269+
xccblat1: $(ctestl1o) c_cblat1c.o $(TOPDIR)/$(LIBNAME)
270+
$(CC) $(CFLAGS) -o xccblat1 c_cblat1c.o $(ctestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
271+
xccblat2: $(ctestl2o) c_cblat2c.o $(TOPDIR)/$(LIBNAME)
272+
$(CC) $(CFLAGS) -o xccblat2 c_cblat2c.o $(ctestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
273+
xccblat3: $(ctestl3o) c_cblat3c.o $(TOPDIR)/$(LIBNAME)
274+
$(CC) $(CFLAGS) -o xccblat3 c_cblat3c.o $(ctestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
275+
endif
257276
endif
258277

259278

260279
ifeq ($(BUILD_COMPLEX16),1)
261280
# Double complex
281+
ifeq ($(NOFORTRAN),0)
262282
xzcblat1: $(ztestl1o) c_zblat1.o $(TOPDIR)/$(LIBNAME)
263283
$(FC) $(FLDFLAGS) -o xzcblat1 c_zblat1.o $(ztestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
264284
xzcblat2: $(ztestl2o) c_zblat2.o $(TOPDIR)/$(LIBNAME)
265285
$(FC) $(FLDFLAGS) -o xzcblat2 c_zblat2.o $(ztestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
266286
xzcblat3: $(ztestl3o) c_zblat3.o $(TOPDIR)/$(LIBNAME)
267287
$(FC) $(FLDFLAGS) -o xzcblat3 c_zblat3.o $(ztestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
268-
269-
270288
xzcblat3_3m: $(ztestl3o_3m) c_zblat3_3m.o $(TOPDIR)/$(LIBNAME)
271289
$(FC) $(FLDFLAGS) -o xzcblat3_3m c_zblat3_3m.o $(ztestl3o_3m) $(LIB) $(EXTRALIB) $(CEXTRALIB)
290+
else
291+
xzcblat1: $(ztestl1o) c_zblat1c.o $(TOPDIR)/$(LIBNAME)
292+
$(CC) $(CFLAGS) -o xzcblat1 c_zblat1c.o $(ztestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
293+
xzcblat2: $(ztestl2o) c_zblat2c.o $(TOPDIR)/$(LIBNAME)
294+
$(CC) $(CFLAGS) -o xzcblat2 c_zblat2c.o $(ztestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
295+
xzcblat3: $(ztestl3o) c_zblat3c.o $(TOPDIR)/$(LIBNAME)
296+
$(CC) $(CFLAGS) -o xzcblat3 c_zblat3c.o $(ztestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
297+
endif
272298
endif
273299

274300
include $(TOPDIR)/Makefile.tail

0 commit comments

Comments
 (0)