Various improvement on build systems
* [CLEAN] ICB saves you from old-fashion-boring-cumbersome-fortran/C crap... * Run old-fashion cubersome Fortan/C tests only if ICB=OFF. Getting them to work with BOTH ICB=ON/OFF would be adding tricky-messy to already cubersome-crappy black magic... Note that icb_arpack_c test (ICB=ON) do the same than bug_1315_* tests (ICB=OFF): icb_arpack_c was initially a copy of bug_1315_*. In the end, you don't loose anything (same functional coverage).
This commit is contained in:
committed by
Sylvestre Ledru
parent
c61bb2c16a
commit
f532cc06a1
+59
-52
@@ -80,7 +80,57 @@ if (ICB)
|
||||
else()
|
||||
message("-- Fortran compiler does support iso_c_binding.")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
# ICB saves you from old-fashion-boring-cumbersome-fortran/C crap...
|
||||
|
||||
if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -cpp -ffixed-line-length-none")
|
||||
elseif ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fpp -extend-source")
|
||||
else ()
|
||||
message(WARNING "build script does not know how to enable your Fortran compiler's preprocessor and support for lines longer than 72 characters: set them manually via FFLAGS.")
|
||||
endif ()
|
||||
|
||||
set(SCALARFUNS naitr napps naup2 naupd nconv neigh neupd ngets statn saitr sapps saup2 saupd sconv seigt seupd sgets stats getv0 sortc sortr sesrt stqrb)
|
||||
set(COMPLEXFUNS, naitr napps naup2 naupd neigh neupd ngets statn getv0 sortc)
|
||||
|
||||
set(BLASFUNS1 axpy copy gemv geqr2 lacpy lae2 lahqr lanhs larnv lartg lascl laset lasrt scal trevc trmm trsen gbmv gbtrf gbtrs gttrf gttrs pttrf pttrs)
|
||||
set(BLASFUNS2 dot ger labad laev2 lamch lanst lanv2 lapy2 larf larfg lasr nrm2 orm2r rot steqr swap)
|
||||
set(BLASFUNS3 dotc geru unm2r)
|
||||
set(BLASFUNS4 COPY LABAD LAMCH LANHS LANV2 LARFG ROT GEMV)
|
||||
set(BLASFUNS5 scnrm2 dznrm2 csscal zdscal)
|
||||
|
||||
if (SYMBOLSUFFIX)
|
||||
foreach (f IN LISTS SCALARFUNS BLASFUNS1 BLASFUNS2)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Ds${f}=s${f}${SYMBOLSUFFIX} -Dd${f}=d${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
|
||||
foreach (f IN LISTS COMPLEXFUNS BLASFUNS1 BLASFUNS3)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Dc${f}=c${f}${SYMBOLSUFFIX} -Dz${f}=z${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
|
||||
foreach (f IN LISTS BLASFUNS4)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DS${f}=S${f}${SYMBOLSUFFIX} -DD${f}=D${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
|
||||
foreach (f IN LISTS BLASFUNS5)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D${f}=${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
endif ()
|
||||
|
||||
set(CFUNS sgemm snaupd sneupd dnaupd dneupd cheev)
|
||||
foreach (f IN LISTS CFUNS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${f}=${f}${SYMBOLSUFFIX}")
|
||||
list(APPEND CFUNS_SUFFIXED ${f}${SYMBOLSUFFIX})
|
||||
endforeach ()
|
||||
|
||||
include(FortranCInterface)
|
||||
FortranCInterface_HEADER(FCMangle.h SYMBOLS ${CFUNS_SUFFIXED})
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DINCLUDE_FCMANGLE")
|
||||
|
||||
FortranCInterface_VERIFY()
|
||||
endif ()
|
||||
|
||||
#if (SYSTEM_BLAS)
|
||||
find_package(BLAS REQUIRED)
|
||||
@@ -215,51 +265,6 @@ if (INTERFACE64)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBLASINT=int64_t")
|
||||
endif ()
|
||||
|
||||
if (SYMBOLSUFFIX)
|
||||
if ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -cpp -ffixed-line-length-none")
|
||||
elseif ("${CMAKE_Fortran_COMPILER_ID}" MATCHES "Intel")
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fpp -extend-source")
|
||||
else ()
|
||||
message(WARNING "build script does not know how to enable your Fortran compiler's preprocessor and support for lines longer than 72 characters: set them manually via FFLAGS.")
|
||||
endif ()
|
||||
|
||||
set(SCALARFUNS naitr napps naup2 naupd nconv neigh neupd ngets statn saitr sapps saup2 saupd sconv seigt seupd sgets stats getv0 sortc sortr sesrt stqrb)
|
||||
set(COMPLEXFUNS, naitr napps naup2 naupd neigh neupd ngets statn getv0 sortc)
|
||||
|
||||
set(BLASFUNS1 axpy copy gemv geqr2 lacpy lae2 lahqr lanhs larnv lartg lascl laset lasrt scal trevc trmm trsen gbmv gbtrf gbtrs gttrf gttrs pttrf pttrs)
|
||||
set(BLASFUNS2 dot ger labad laev2 lamch lanst lanv2 lapy2 larf larfg lasr nrm2 orm2r rot steqr swap)
|
||||
set(BLASFUNS3 dotc geru unm2r)
|
||||
set(BLASFUNS4 COPY LABAD LAMCH LANHS LANV2 LARFG ROT GEMV)
|
||||
set(BLASFUNS5 scnrm2 dznrm2 csscal zdscal)
|
||||
|
||||
foreach (f IN LISTS SCALARFUNS BLASFUNS1 BLASFUNS2)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Ds${f}=s${f}${SYMBOLSUFFIX} -Dd${f}=d${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
|
||||
foreach (f IN LISTS COMPLEXFUNS BLASFUNS1 BLASFUNS3)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Dc${f}=c${f}${SYMBOLSUFFIX} -Dz${f}=z${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
|
||||
foreach (f IN LISTS BLASFUNS4)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DS${f}=S${f}${SYMBOLSUFFIX} -DD${f}=D${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
|
||||
foreach (f IN LISTS BLASFUNS5)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -D${f}=${f}${SYMBOLSUFFIX}")
|
||||
endforeach ()
|
||||
endif ()
|
||||
|
||||
set(CFUNS sgemm snaupd sneupd dnaupd dneupd cheev)
|
||||
foreach (f IN LISTS CFUNS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${f}=${f}${SYMBOLSUFFIX}")
|
||||
list(APPEND CFUNS_SUFFIXED ${f}${SYMBOLSUFFIX})
|
||||
endforeach ()
|
||||
|
||||
include(FortranCInterface)
|
||||
FortranCInterface_HEADER(FCMangle.h SYMBOLS ${CFUNS_SUFFIXED})
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DINCLUDE_FCMANGLE")
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
############################
|
||||
@@ -456,13 +461,15 @@ add_custom_command(TARGET dnsimp_test POST_BUILD
|
||||
)
|
||||
add_test(dnsimp_tst Tests/dnsimp)
|
||||
|
||||
add_executable(bug_1315_single TESTS/bug_1315_single.c)
|
||||
target_link_libraries(bug_1315_single arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
add_test(bug_1315_single_tst Tests/bug_1315_single)
|
||||
if (NOT ICB)
|
||||
add_executable(bug_1315_single TESTS/bug_1315_single.c)
|
||||
target_link_libraries(bug_1315_single arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
add_test(bug_1315_single_tst Tests/bug_1315_single)
|
||||
|
||||
add_executable(bug_1315_double TESTS/bug_1315_double.c)
|
||||
target_link_libraries(bug_1315_double arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
add_test(bug_1315_double_tst Tests/bug_1315_double)
|
||||
add_executable(bug_1315_double TESTS/bug_1315_double.c)
|
||||
target_link_libraries(bug_1315_double arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
add_test(bug_1315_double_tst Tests/bug_1315_double)
|
||||
endif()
|
||||
|
||||
add_executable(bug_1323 TESTS/bug_1323.f)
|
||||
target_link_libraries(bug_1323 arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
|
||||
+9
-6
@@ -1,9 +1,12 @@
|
||||
LDADD=$(top_builddir)/SRC/libarpack$(LIBSUFFIX).la $(LAPACK_LIBS) $(BLAS_LIBS)
|
||||
|
||||
check_PROGRAMS = dnsimp bug_1315_single bug_1315_double bug_1323 bug_58_double bug_79_double_complex
|
||||
check_PROGRAMS = dnsimp bug_1323 bug_58_double bug_79_double_complex
|
||||
if ICB
|
||||
check_PROGRAMS += icb_arpack_c
|
||||
check_PROGRAMS += icb_arpack_cpp
|
||||
else
|
||||
check_PROGRAMS += bug_1315_single
|
||||
check_PROGRAMS += bug_1315_double
|
||||
endif
|
||||
|
||||
TESTS = $(check_PROGRAMS)
|
||||
@@ -12,11 +15,6 @@ EXTRA_DIST = testA.mtx
|
||||
|
||||
dnsimp_SOURCES = dnsimp.f mmio.f debug.h
|
||||
|
||||
bug_1315_single_SOURCES = bug_1315_single.c
|
||||
bug_1315_double_SOURCES = bug_1315_double.c
|
||||
bug_1315_single_LDADD = $(top_builddir)/SRC/libarpack$(LIBSUFFIX).la
|
||||
bug_1315_double_LDADD = $(top_builddir)/SRC/libarpack$(LIBSUFFIX).la
|
||||
|
||||
bug_1323_SOURCES = bug_1323.f
|
||||
|
||||
bug_58_double_SOURCES = bug_58_double.f
|
||||
@@ -31,4 +29,9 @@ icb_arpack_c_CFLAGS = -I$(top_builddir)
|
||||
icb_arpack_cpp_SOURCES = icb_arpack_cpp.cpp
|
||||
icb_arpack_cpp_LDADD = $(top_builddir)/SRC/libarpack$(LIBSUFFIX).la
|
||||
icb_arpack_cpp_CPPFLAGS = -I$(top_builddir)
|
||||
else
|
||||
bug_1315_single_SOURCES = bug_1315_single.c
|
||||
bug_1315_double_SOURCES = bug_1315_double.c
|
||||
bug_1315_single_LDADD = $(top_builddir)/SRC/libarpack$(LIBSUFFIX).la
|
||||
bug_1315_double_LDADD = $(top_builddir)/SRC/libarpack$(LIBSUFFIX).la
|
||||
endif
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
// This test calls fortran from C the old-fashion cumbersome way.
|
||||
// Note: icb_arpack_c tests the same kind of things using ICB.
|
||||
|
||||
#ifdef INCLUDE_FCMANGLE
|
||||
#include "FCMangle.h"
|
||||
#endif
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
// This test calls fortran from C the old-fashion cumbersome way.
|
||||
// Note: icb_arpack_c tests the same kind of things using ICB.
|
||||
|
||||
#ifdef INCLUDE_FCMANGLE
|
||||
#include "FCMangle.h"
|
||||
#endif
|
||||
|
||||
+55
-53
@@ -30,59 +30,6 @@ fi
|
||||
AC_ARG_VAR(LIBSUFFIX, [suffix to add to ARPACK libraries names])
|
||||
AC_ARG_VAR(SYMBOLSUFFIX, [suffix to add to ARPACK, BLAS and LAPACK function names])
|
||||
|
||||
if test x"$SYMBOLSUFFIX" != x""; then
|
||||
dnl Need to rely on non-F77 features
|
||||
AC_FC_LINE_LENGTH(unlimited)
|
||||
FFLAGS="$FFLAGS $ac_cv_fc_line_length"
|
||||
|
||||
AX_CHECK_COMPILE_FLAG(-cpp, FFLAGS="$FFLAGS -cpp",
|
||||
AX_CHECK_COMPILE_FLAG(-fpp, FFLAGS="$FFLAGS -fpp",
|
||||
AC_MSG_WARN([configure does not know how to enable your Fortran compiler's preprocessor: set it manually via FFLAGS.])))
|
||||
|
||||
SCALARFUNS="naitr napps naup2 naupd nconv neigh neupd ngets statn saitr sapps saup2 saupd sconv seigt seupd sgets stats getv0 sortc sortr sesrt stqrb"
|
||||
COMPLEXFUNS="naitr napps naup2 naupd neigh neupd ngets statn getv0 sortc"
|
||||
|
||||
BLASFUNS1="axpy copy gemv geqr2 lacpy lae2 lahqr lanhs larnv lartg lascl laset lasrt scal trevc trmm trsen gbmv gbtrf gbtrs gttrf gttrs pttrf pttrs"
|
||||
BLASFUNS2="dot ger labad laev2 lamch lanst lanv2 lapy2 larf larfg lasr nrm2 orm2r rot steqr swap"
|
||||
BLASFUNS3="dotc geru unm2r"
|
||||
BLASFUNS4="COPY LABAD LAMCH LANHS LANV2 LARFG ROT GEMV"
|
||||
BLASFUNS5="scnrm2 dznrm2 csscal zdscal"
|
||||
|
||||
FUNS1="$SCALARFUNS $BLASFUNS1 $BLASFUNS2"
|
||||
for f in $FUNS1
|
||||
do
|
||||
FFLAGS="$FFLAGS -Ds$f=s$f$SYMBOLSUFFIX -Dd$f=d$f$SYMBOLSUFFIX"
|
||||
done
|
||||
|
||||
FUNS2="$COMPLEXFUNS $BLASFUNS1 $BLASFUNS3"
|
||||
for f in $FUNS2
|
||||
do
|
||||
FFLAGS="$FFLAGS -Dc$f=c$f$SYMBOLSUFFIX -Dz$f=z$f$SYMBOLSUFFIX"
|
||||
done
|
||||
|
||||
for f in $BLASFUNS4
|
||||
do
|
||||
FFLAGS="$FFLAGS -DS$f=S$f$SYMBOLSUFFIX -DD$f=D$f$SYMBOLSUFFIX"
|
||||
done
|
||||
|
||||
for f in $BLASFUNS5
|
||||
do
|
||||
FFLAGS="$FFLAGS -D$f=$f$SYMBOLSUFFIX -D$f=$f$SYMBOLSUFFIX"
|
||||
done
|
||||
fi
|
||||
|
||||
dnl Both a lowercase and uppercase variable are needed
|
||||
dnl since the macro changes the case of the whole expression
|
||||
symbolsuffix=$SYMBOLSUFFIX
|
||||
AC_F77_FUNC(sgemm$SYMBOLSUFFIX, sgemmsuff)
|
||||
AC_F77_FUNC(snaupd$SYMBOLSUFFIX, snaupdsuff)
|
||||
AC_F77_FUNC(sneupd$SYMBOLSUFFIX, sneupdsuff)
|
||||
AC_F77_FUNC(dnaupd$SYMBOLSUFFIX, dnaupdsuff)
|
||||
AC_F77_FUNC(dneupd$SYMBOLSUFFIX, dneupdsuff)
|
||||
AC_F77_FUNC(cheev$SYMBOLSUFFIX, cheevsuff)
|
||||
dnl Needed for BLAS check and for tests (even when suffix is empty)
|
||||
CFLAGS="$CFLAGS -Dsgemm=$sgemmsuff -Dsnaupd=$snaupdsuff -Dsneupd=$sneupdsuff -Ddnaupd=$dnaupdsuff -Ddneupd=$dneupdsuff -Dcheev=$cheevsuff"
|
||||
|
||||
ifdef([LT_INIT], [], [
|
||||
errprint([error: you must have libtool 2.4.2 or a more recent version
|
||||
])
|
||||
@@ -181,6 +128,61 @@ if test x"$enable_icb" != x"no"; then
|
||||
AC_LANG_POP([C])
|
||||
fi
|
||||
AX_CXX_COMPILE_STDCXX(11)
|
||||
else
|
||||
# ICB saves you from old-fashion-boring-cumbersome-fortran/C crap...
|
||||
|
||||
if test x"$SYMBOLSUFFIX" != x""; then
|
||||
dnl Need to rely on non-F77 features
|
||||
AC_FC_LINE_LENGTH(unlimited)
|
||||
FFLAGS="$FFLAGS $ac_cv_fc_line_length"
|
||||
|
||||
AX_CHECK_COMPILE_FLAG(-cpp, FFLAGS="$FFLAGS -cpp",
|
||||
AX_CHECK_COMPILE_FLAG(-fpp, FFLAGS="$FFLAGS -fpp",
|
||||
AC_MSG_WARN([configure does not know how to enable your Fortran compiler's preprocessor: set it manually via FFLAGS.])))
|
||||
|
||||
SCALARFUNS="naitr napps naup2 naupd nconv neigh neupd ngets statn saitr sapps saup2 saupd sconv seigt seupd sgets stats getv0 sortc sortr sesrt stqrb"
|
||||
COMPLEXFUNS="naitr napps naup2 naupd neigh neupd ngets statn getv0 sortc"
|
||||
|
||||
BLASFUNS1="axpy copy gemv geqr2 lacpy lae2 lahqr lanhs larnv lartg lascl laset lasrt scal trevc trmm trsen gbmv gbtrf gbtrs gttrf gttrs pttrf pttrs"
|
||||
BLASFUNS2="dot ger labad laev2 lamch lanst lanv2 lapy2 larf larfg lasr nrm2 orm2r rot steqr swap"
|
||||
BLASFUNS3="dotc geru unm2r"
|
||||
BLASFUNS4="COPY LABAD LAMCH LANHS LANV2 LARFG ROT GEMV"
|
||||
BLASFUNS5="scnrm2 dznrm2 csscal zdscal"
|
||||
|
||||
FUNS1="$SCALARFUNS $BLASFUNS1 $BLASFUNS2"
|
||||
for f in $FUNS1
|
||||
do
|
||||
FFLAGS="$FFLAGS -Ds$f=s$f$SYMBOLSUFFIX -Dd$f=d$f$SYMBOLSUFFIX"
|
||||
done
|
||||
|
||||
FUNS2="$COMPLEXFUNS $BLASFUNS1 $BLASFUNS3"
|
||||
for f in $FUNS2
|
||||
do
|
||||
FFLAGS="$FFLAGS -Dc$f=c$f$SYMBOLSUFFIX -Dz$f=z$f$SYMBOLSUFFIX"
|
||||
done
|
||||
|
||||
for f in $BLASFUNS4
|
||||
do
|
||||
FFLAGS="$FFLAGS -DS$f=S$f$SYMBOLSUFFIX -DD$f=D$f$SYMBOLSUFFIX"
|
||||
done
|
||||
|
||||
for f in $BLASFUNS5
|
||||
do
|
||||
FFLAGS="$FFLAGS -D$f=$f$SYMBOLSUFFIX -D$f=$f$SYMBOLSUFFIX"
|
||||
done
|
||||
fi
|
||||
|
||||
dnl Both a lowercase and uppercase variable are needed
|
||||
dnl since the macro changes the case of the whole expression
|
||||
symbolsuffix=$SYMBOLSUFFIX
|
||||
AC_F77_FUNC(sgemm$SYMBOLSUFFIX, sgemmsuff)
|
||||
AC_F77_FUNC(snaupd$SYMBOLSUFFIX, snaupdsuff)
|
||||
AC_F77_FUNC(sneupd$SYMBOLSUFFIX, sneupdsuff)
|
||||
AC_F77_FUNC(dnaupd$SYMBOLSUFFIX, dnaupdsuff)
|
||||
AC_F77_FUNC(dneupd$SYMBOLSUFFIX, dneupdsuff)
|
||||
AC_F77_FUNC(cheev$SYMBOLSUFFIX, cheevsuff)
|
||||
dnl Needed for BLAS check and for tests (even when suffix is empty)
|
||||
CFLAGS="$CFLAGS -Dsgemm=$sgemmsuff -Dsnaupd=$snaupdsuff -Dsneupd=$sneupdsuff -Ddnaupd=$dnaupdsuff -Ddneupd=$dneupdsuff -Dcheev=$cheevsuff"
|
||||
fi
|
||||
|
||||
dnl Add support for debuging arpack
|
||||
|
||||
Reference in New Issue
Block a user