rewrite perl scripts in universal shell
authorOwen Rafferty <owen@owenrafferty.com>
Thu, 12 May 2022 23:58:10 +0000 (18:58 -0500)
committerOwen Rafferty <owen@owenrafferty.com>
Thu, 19 May 2022 00:00:15 +0000 (19:00 -0500)
CMakeLists.txt
Makefile.prebuild
c_check [changed mode: 0644->0755]
cmake/export.cmake
cmake/prebuild.cmake
exports/Makefile
exports/gensymbol [changed mode: 0644->0755]
f_check [changed mode: 0644->0755]
interface/create

index 5558500..b40fd7c 100644 (file)
@@ -245,7 +245,7 @@ endif()
 
 if (APPLE AND DYNAMIC_ARCH AND BUILD_SHARED_LIBS)
   set (CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
-  if (NOT NOFORTRAN)  
+  if (NOT NOFORTRAN)
   set (CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1)
   set (CMAKE_Fortran_CREATE_SHARED_LIBRARY
  "sh -c 'cat ${CMAKE_BINARY_DIR}/CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ar -ru libopenblas.a && exit 0' "
@@ -395,7 +395,7 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
   endif()
 
   add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
-    COMMAND perl  ${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
+    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
     COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def  ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so
     COMMENT "renaming symbols"
     )
index e6d07c0..751ca0c 100644 (file)
@@ -54,9 +54,9 @@ all: getarch_2nd
        ./getarch_2nd  1 >> $(TARGET_CONF)
 
 $(TARGET_CONF): c_check f_check getarch
-       perl ./c_check $(TARGET_MAKE) $(TARGET_CONF) $(CC) $(TARGET_FLAGS) $(CFLAGS)
+       ./c_check $(TARGET_MAKE) $(TARGET_CONF) $(CC) $(TARGET_FLAGS) $(CFLAGS)
 ifneq ($(ONLY_CBLAS), 1)
-       perl ./f_check $(TARGET_MAKE) $(TARGET_CONF) $(FC) $(TARGET_FLAGS)
+       ./f_check $(TARGET_MAKE) $(TARGET_CONF) $(FC) $(TARGET_FLAGS)
 else
 #When we only build CBLAS, we set NOFORTRAN=2
        echo "NOFORTRAN=2" >> $(TARGET_MAKE)
@@ -71,8 +71,8 @@ endif
 
 
 getarch : getarch.c cpuid.S dummy $(CPUIDEMU)
-       avx512=$$(perl c_check - - $(CC) $(TARGET_FLAGS) $(CFLAGS) | grep NO_AVX512); \
-       rv64gv=$$(perl c_check - - $(CC) $(TARGET_FLAGS) $(CFLAGS) | grep NO_RV64GV); \
+       avx512=$$(./c_check - - $(CC) $(TARGET_FLAGS) $(CFLAGS) | grep NO_AVX512); \
+       rv64gv=$$(./c_check - - $(CC) $(TARGET_FLAGS) $(CFLAGS) | grep NO_RV64GV); \
        $(HOSTCC) $(HOST_CFLAGS) $(EXFLAGS) $${avx512:+-D$${avx512}} $${rv64gv:+-D$${rv64gv}} -o $(@F) getarch.c cpuid.S $(CPUIDEMU)
 
 getarch_2nd : getarch_2nd.c $(TARGET_CONF) dummy
diff --git a/c_check b/c_check
old mode 100644 (file)
new mode 100755 (executable)
index a3afea8..d2f2eb0
--- a/c_check
+++ b/c_check
-#!/usr/bin/env perl
-
-#use File::Basename;
-# use File::Temp qw(tempfile);
+#!/bin/sh
 
 # Checking cross compile
-$hostos   = `uname -s | sed -e s/\-.*//`;    chop($hostos);
-$hostarch = `uname -m | sed -e s/i.86/x86/`;
-$hostarch = `uname -p` if ($hostos eq "AIX" || $hostos eq "SunOS");
-chop($hostarch);
-$hostarch = "x86_64" if ($hostarch eq "amd64");
-$hostarch = "arm" if ($hostarch ne "arm64" && $hostarch =~ /^arm.*/);
-$hostarch = "arm64" if ($hostarch eq "aarch64");
-$hostarch = "power" if ($hostarch =~ /^(powerpc|ppc).*/);
-$hostarch = "zarch" if ($hostarch eq "s390x");
-
-#$tmpf = new File::Temp( UNLINK => 1 );
-$binary = $ENV{"BINARY"};
-
-$makefile = shift(@ARGV);
-$config   = shift(@ARGV);
-
-$compiler_name = shift(@ARGV);
-$flags = join(" ", @ARGV);
+hostos=`uname -s | sed -e 's/\-.*//'`
+hostarch=`uname -m | sed -e 's/i.86/x86/'`
+if [ "$hostos" = "AIX" ] || [ "$hostos" = "SunOS" ]; then
+    hostarch=`uname -p`
+fi
+case "$hostarch" in
+    amd64) hostarch=x86_64 ;;
+    arm*) [ "$hostarch" = "arm64" ] || hostarch='arm' ;;
+    aarch64) hostarch=arm64 ;;
+    powerpc*|ppc*) hostarch=power ;;
+    s390x) hostarch=zarch ;;
+esac
+
+makefile="$1"
+config="$2"
+
+compiler_name="$3"
+shift 3
+flags="$*"
 
 # First, we need to know the target OS and compiler name
-
-$data = `$compiler_name $flags -E ctest.c`;
-
-if ($?) {
-    printf STDERR "C Compiler ($compiler_name) is something wrong.\n";
-    die 1;
-}
-
-$cross_suffix = "";
-
-eval "use File::Basename";
-if ($@){ 
-    warn "could not load PERL module File::Basename, emulating its functionality";
-    my $dirnam = substr($compiler_name, 0, rindex($compiler_name, "/")-1 );
-    if ($dirnam ne ".") {
-       $cross_suffix .= $dirnam . "/";
-    }
-    my $basnam = substr($compiler_name, rindex($compiler_name,"/")+1, length($compiler_name)-rindex($compiler_name,"/")-1);
-       if ($basnam =~ /([^\s]*-)(.*)/) {
-       $cross_suffix .= $1;
-    }
-} else {
-    if (dirname($compiler_name) ne ".") {
-       $cross_suffix .= dirname($compiler_name) . "/";
-    }
-
-    if (basename($compiler_name) =~ /([^\s]*-)(.*)/) {
-       $cross_suffix .= $1;
-    }
-}
-
-$compiler = "";
-$compiler = LSB       if ($data =~ /COMPILER_LSB/);
-$compiler = CLANG     if ($data =~ /COMPILER_CLANG/);
-$compiler = PGI       if ($data =~ /COMPILER_PGI/);
-$compiler = PATHSCALE if ($data =~ /COMPILER_PATHSCALE/);
-$compiler = INTEL     if ($data =~ /COMPILER_INTEL/);
-$compiler = OPEN64    if ($data =~ /COMPILER_OPEN64/);
-$compiler = SUN       if ($data =~ /COMPILER_SUN/);
-$compiler = IBM       if ($data =~ /COMPILER_IBM/);
-$compiler = DEC       if ($data =~ /COMPILER_DEC/);
-$compiler = GCC       if ($compiler eq "");
-
-$os = Linux           if ($data =~ /OS_LINUX/);
-$os = FreeBSD         if ($data =~ /OS_FREEBSD/);
-$os = NetBSD          if ($data =~ /OS_NETBSD/);
-$os = OpenBSD         if ($data =~ /OS_OPENBSD/);
-$os = DragonFly       if ($data =~ /OS_DRAGONFLY/);
-$os = Darwin          if ($data =~ /OS_DARWIN/);
-$os = SunOS           if ($data =~ /OS_SUNOS/);
-$os = AIX             if ($data =~ /OS_AIX/);
-$os = osf             if ($data =~ /OS_OSF/);
-$os = WINNT           if ($data =~ /OS_WINNT/);
-$os = CYGWIN_NT       if ($data =~ /OS_CYGWIN_NT/);
-$os = Interix         if ($data =~ /OS_INTERIX/);
-$os = Android         if ($data =~ /OS_ANDROID/);
-$os = Haiku           if ($data =~ /OS_HAIKU/);
-
-$architecture = x86          if ($data =~ /ARCH_X86/);
-$architecture = x86_64       if ($data =~ /ARCH_X86_64/);
-$architecture = e2k          if ($data =~ /ARCH_E2K/);
-$architecture = power        if ($data =~ /ARCH_POWER/);
-$architecture = mips         if ($data =~ /ARCH_MIPS/);
-$architecture = mips64       if ($data =~ /ARCH_MIPS64/);
-$architecture = alpha        if ($data =~ /ARCH_ALPHA/);
-$architecture = sparc        if ($data =~ /ARCH_SPARC/);
-$architecture = ia64         if ($data =~ /ARCH_IA64/);
-$architecture = arm          if ($data =~ /ARCH_ARM/);
-$architecture = arm64        if ($data =~ /ARCH_ARM64/);
-$architecture = zarch        if ($data =~ /ARCH_ZARCH/);
-$architecture = riscv64      if ($data =~ /ARCH_RISCV64/);
-$architecture = loongarch64  if ($data =~ /ARCH_LOONGARCH64/);
-
-$defined = 0;
-
-if ($os eq "AIX") {
-    $compiler_name .= " -maix32" if ($binary eq "32");
-    $compiler_name .= " -maix64" if ($binary eq "64");
-    $defined = 1;
-}
-
-if ($architecture eq "mips") {
-    $compiler_name .= " -mabi=32";
-    $defined = 1;
-}
-
-if ($architecture eq "mips64") {
-    $compiler_name .= " -mabi=n32" if ($binary eq "32");
-    $compiler_name .= " -mabi=64" if ($binary eq "64");
-    $defined = 1;
-}
-
-if (($architecture eq "arm") || ($architecture eq "arm64")) {
-    $defined = 1;
-}
-
-if ($architecture eq "zarch") {
-    $defined = 1;
-    $binary = 64;
-}
-
-if ($architecture eq "e2k") {
-    $defined = 1;
-    $binary = 64;
-}
-
-if ($architecture eq "alpha") {
-    $defined = 1;
-    $binary = 64;
-}
-
-if ($architecture eq "ia64") {
-    $defined = 1;
-    $binary = 64;
-}
-
-if (($architecture eq "x86") && ($os ne Darwin) && ($os ne SunOS)) {
-    $defined = 1;
-    $binary =32;
-}
-
-if ($architecture eq "riscv64") {
-    $defined = 1;
-    $binary = 64;
-}
-
-if ($architecture eq "loongarch64") {
-    $defined = 1;
-    $binary = 64;
-}
-
-if ($compiler eq "PGI") {
-    $compiler_name .= " -tp p7"    if ($binary eq "32");
-    $compiler_name .= " -tp p7-64" if ($binary eq "64");
-    $openmp = "-mp";
-    $defined = 1;
-}
-
-if ($compiler eq "IBM") {
-    $compiler_name .= " -q32"  if ($binary eq "32");
-    $compiler_name .= " -q64"  if ($binary eq "64");
-    $openmp = "-qsmp=omp";
-    $defined = 1;
-}
-
-if ($compiler eq "INTEL") {
-    $openmp = "-openmp";
-}
-
-if ($compiler eq "PATHSCALE") {
-    $openmp = "-mp";
-}
-
-if ($compiler eq "OPEN64") {
-    $openmp = "-mp";
-}
-
-if ($compiler eq "CLANG") {
-    $openmp = "-fopenmp";
-}
-
-if ($compiler eq "GCC" || $compiler eq "LSB") {
-    $openmp = "-fopenmp";
+{
+    data=`$compiler_name $flags -E ctest.c`
+} || {
+    printf '%s\n' "C Compiler ($compiler_name) is something wrong." >&2
+    exit 1
 }
 
-if ($defined == 0) {
-    $compiler_name .= " -m32" if ($binary eq "32");
-    $compiler_name .= " -m64" if ($binary eq "64");
-}
+cross_suffix=""
+
+if [ "`dirname $compiler_name`" != '.' ]; then
+    cross_suffix="$cross_suffix`dirname $compiler_name`/"
+fi
+
+bn=`basename $compiler_name`
+case "$bn" in
+    *-*) cross_suffix="$cross_suffix${bn%-*}-"
+esac
+
+compiler=""
+case "$data" in
+    *COMPILER_LSB*) compiler=LSB ;;
+    *COMPILER_CLANG*) compiler=CLANG ;;
+    *COMPILER_PGI*) compiler=PGI ;;
+    *COMPILER_PATHSCALE*) compiler=PATHSCALE ;;
+    *COMPILER_INTEL*) compiler=INTEL ;;
+    *COMPILER_OPEN64*) compiler=OPEN64 ;;
+    *COMPILER_SUN*) compiler=SUN ;;
+    *COMPILER_IBM*) compiler=IBM ;;
+    *COMPILER_DEC*) compiler=DEC ;;
+esac
+if [ -z "$compiler" ]; then
+    compiler=GCC
+fi
+
+case "$data" in *OS_LINUX*) os=Linux ;; esac
+case "$data" in *OS_FREEBSD*) os=FreeBSD ;; esac
+case "$data" in *OS_NETBSD*) os=NetBSD ;; esac
+case "$data" in *OS_OPENBSD*) os=OpenBSD ;; esac
+case "$data" in *OS_DRAGONFLY*) os=DragonFly ;; esac
+case "$data" in *OS_DARWIN*) os=Darwin ;; esac
+case "$data" in *OS_SUNOS*) os=SunOS ;; esac
+case "$data" in *OS_AIX*) os=AIX ;; esac
+case "$data" in *OS_OSF*) os=osf ;; esac
+case "$data" in *OS_WINNT*) os=WINNT ;; esac
+case "$data" in *OS_CYGWIN_NT*) os=CYGWIN_NT ;; esac
+case "$data" in *OS_INTERIX*) os=Interix ;; esac
+case "$data" in *OS_ANDROID*) os=Android ;; esac
+case "$data" in *OS_HAIKU*) os=Haiku ;; esac
+
+case "$data" in
+    *ARCH_X86_64*) architecture=x86_64 ;;
+    *ARCH_X86*) architecture=x86 ;;
+    *ARCH_E2K*) architecture=e2k ;;
+    *ARCH_POWER*) architecture=power ;;
+    *ARCH_MIPS64*) architecture=mips64 ;;
+    *ARCH_MIPS*) architecture=mips ;;
+    *ARCH_ALPHA*) architecture=alpha ;;
+    *ARCH_SPARC*) architecture=sparc ;;
+    *ARCH_IA64*) architecture=ia64 ;;
+    *ARCH_ARM64*) architecture=arm64 ;;
+    *ARCH_ARM*) architecture=arm ;;
+    *ARCH_ZARCH*) architecture=zarch ;;
+    *ARCH_RISCV64*) architecture=riscv64 ;;
+    *ARCH_LOONGARCH64*) architecture=loongarch64 ;;
+esac
+
+defined=0
+
+if [ "$os" = "AIX" ]; then
+    case "$BINARY" in
+        32) compiler_name="$compiler_name -maix32" ;;
+        64) compiler_name="$compiler_name -maix64" ;;
+    esac
+    defined=1
+fi
+
+case "$architecture" in
+    mips)
+       compiler_name="$compiler_name -mabi=32"
+       defined=1
+       ;;
+    mips64)
+       case "$BINARY" in
+           32) compiler_name="$compiler_name -mabi=n32" ;;
+           64) compiler_name="$compiler_name -mabi=64" ;;
+       esac
+       defined=1
+       ;;
+    arm|arm64) defined=1 ;;
+    zarch|e2k|alpha|ia64|riscv64|loonarch64)
+       defined=1
+       BINARY=64
+       ;;
+    x86)
+       [ "$os" != "Darwin" ] && [ "$os" != "SunOS" ] && {
+           defined=1
+           BINARY=32
+       }
+       ;;
+esac
+
+case "$compiler" in
+    PGI)
+       case "$BINARY" in
+           32) compiler_name="$compiler_name -tp p7" ;;
+           64) compiler_name="$compiler_name -tp p7-64" ;;
+       esac
+       openmp='-mp'
+       defined=1
+       ;;
+    IBM)
+       case "$BINARY" in
+           32) compiler_name="$compiler_name -q32" ;;
+           64) compiler_name="$compiler_name -q64" ;;
+       esac
+       openmp='-qsmp=omp'
+       defined=1
+       ;;
+    INTEL) openmp='-openmp' ;;
+    PATHSCALE|OPEN64) openmp='-mp' ;;
+    CLANG|GCC|LSB) openmp='-fopenmp' ;;
+esac
+
+if [ "$defined" -eq 0 ]; then
+    case "$BINARY" in
+       32) compiler_name="$compiler_name -m32" ;;
+       64) compiler_name="$compiler_name -m64" ;;
+    esac
+fi
 
 # Do again
-
-$data = `$compiler_name $flags -E ctest.c`;
-
-if ($?) {
-    printf STDERR "C Compiler ($compiler_name) is something wrong.\n";
-    die 1;
-}
-
-$have_msa = 0;
-if (($architecture eq "mips") || ($architecture eq "mips64")) {
-    eval "use File::Temp qw(tempfile)";
-    if ($@){ 
-       warn "could not load PERL module File::Temp, so could not check MSA capatibility";
-    } else {
-       $tmpf = new File::Temp( SUFFIX => '.c' , UNLINK => 1 );
-       $code = '"addvi.b $w0, $w1, 1"';
-       $msa_flags = "-mmsa -mfp64 -mload-store-pairs";
-       print $tmpf "#include <msa.h>\n\n";
-       print $tmpf "void main(void){ __asm__ volatile($code); }\n";
-
-       $args = "$msa_flags -o $tmpf.o $tmpf";
-       my @cmd = ("$compiler_name $flags $args >/dev/null 2>/dev/null");
-       system(@cmd) == 0;
-       if ($? != 0) {
-           $have_msa = 0;
-       } else {
-           $have_msa = 1;
-       }
-       unlink("$tmpf.o");
-    }
+{
+    data="$($compiler_name $flags -E ctest.c)"
+} || {
+    printf '%s\n' "C Compiler ($compiler_name) is something wrong." >&2
+    exit 1
 }
 
-$architecture = x86          if ($data =~ /ARCH_X86/);
-$architecture = x86_64       if ($data =~ /ARCH_X86_64/);
-$architecture = e2k          if ($data =~ /ARCH_E2K/);
-$architecture = power        if ($data =~ /ARCH_POWER/);
-$architecture = mips         if ($data =~ /ARCH_MIPS/);
-$architecture = mips64       if ($data =~ /ARCH_MIPS64/);
-$architecture = alpha        if ($data =~ /ARCH_ALPHA/);
-$architecture = sparc        if ($data =~ /ARCH_SPARC/);
-$architecture = ia64         if ($data =~ /ARCH_IA64/);
-$architecture = arm          if ($data =~ /ARCH_ARM/);
-$architecture = arm64        if ($data =~ /ARCH_ARM64/);
-$architecture = zarch        if ($data =~ /ARCH_ZARCH/);
-$architecture = loongarch64  if ($data =~ /ARCH_LOONGARCH64/);
-
-$binformat    = bin32;
-$binformat    = bin64  if ($data =~ /BINARY_64/);
-
-$no_avx512= 0;
-if (($architecture eq "x86") || ($architecture eq "x86_64")) {
-    eval "use File::Temp qw(tempfile)";
-    if ($@){ 
-       warn "could not load PERL module File::Temp, so could not check compiler compatibility with AVX512";
-       $no_avx512 = 0;
-    } else {
-#      $tmpf = new File::Temp( UNLINK => 1 );
-       ($fh,$tmpf) = tempfile( SUFFIX => '.c' , UNLINK => 1 );
-       $code = '"vbroadcastss -4 * 4(%rsi), %zmm2"';
-       print $fh "#include <immintrin.h>\n\nint main(void){ __asm__ volatile($code); }\n";
-       $args = " -march=skylake-avx512 -c -o $tmpf.o $tmpf";
-       if ($compiler eq "PGI") {
-           $args = " -tp skylake -c -o $tmpf.o $tmpf";
-       }
-       my @cmd = ("$compiler_name $flags $args >/dev/null 2>/dev/null");
-       system(@cmd) == 0;
-       if ($? != 0) {
-           $no_avx512 = 1;
-       } else {
-           $no_avx512 = 0;
-       }
-       unlink("$tmpf.o");
+have_msa=0
+if [ "$architecture" = "mips" ] || [ "$architecture" = "mips64" ]; then
+    tmpd="$(mktemp -d)"
+    tmpf="$tmpd/a.c"
+    code='"addvi.b $w0, $w1, 1"'
+    msa_flags='-mmsa -mfp64 -mload-store-pairs'
+    printf "#include <msa.h>\n\n" >> "$tmpf"
+    printf "void main(void){ __asm__ volatile(%s); }\n" "$code" >> "$tmpf"
+
+    args="$msa_flags -o $tmpf.o $tmpf"
+    have_msa=1
+    {
+       $compiler_name $flags $args >/dev/null 2>&1
+    } || {
+       have_msa=0
     }
-}
 
-$no_rv64gv= 0;
-if (($architecture eq "riscv64")) {
-    eval "use File::Temp qw(tempfile)";
-    if ($@){ 
-       warn "could not load PERL module File::Temp, so could not check compiler compatibility with the RISCV vector extension";
-       $no_rv64gv = 0;
-    } else {
-#      $tmpf = new File::Temp( UNLINK => 1 );
-       ($fh,$tmpf) = tempfile( SUFFIX => '.c' , UNLINK => 1 );
-       $code = '"vsetvli    zero, zero, e8, m1\n"';
-       print $fh "int main(void){ __asm__ volatile($code); }\n";
-       $args = " -march=rv64gv -c -o $tmpf.o $tmpf";
-       my @cmd = ("$compiler_name $flags $args >/dev/null 2>/dev/null");
-       system(@cmd) == 0;
-       if ($? != 0) {
-           $no_rv64gv = 1;
-       } else {
-           $no_rv64gv = 0;
-       }
-       unlink("$tmpf.o");
+    rm -rf "$tmpd"
+fi
+
+case "$data" in
+    *ARCH_X86_64*) architecture=x86_64 ;;
+    *ARCH_X86*) architecture=x86 ;;
+    *ARCH_E2K*) architecture=e2k ;;
+    *ARCH_POWER*) architecture=power ;;
+    *ARCH_MIPS64*) architecture=mips64 ;;
+    *ARCH_MIPS*) architecture=mips ;;
+    *ARCH_ALPHA*) architecture=alpha ;;
+    *ARCH_SPARC*) architecture=sparc ;;
+    *ARCH_IA64*) architecture=ia64 ;;
+    *ARCH_ARM64*) architecture=arm64 ;;
+    *ARCH_ARM*) architecture=arm ;;
+    *ARCH_ZARCH*) architecture=zarch ;;
+    *ARCH_LOONGARCH64*) architecture=loongarch64 ;;
+esac
+
+binformat='bin32'
+case "$data" in
+    *BINARY_64*) binformat='bin64' ;;
+esac
+
+no_avx512=0
+if [ "$architecture" = "x86" ] || [ "$architecture" = "x86_64" ]; then
+    tmpd=`mktemp -d`
+    tmpf="$tmpd/a.c"
+    code='"vbroadcastss -4 * 4(%rsi), %zmm2"'
+    printf "#include <immintrin.h>\n\nint main(void){ __asm__ volatile(%s); }\n" "$code" >> "$tmpf"
+    if [ "$compiler" = "PGI" ]; then
+        args=" -tp skylake -c -o $tmpf.o $tmpf"
+    else
+        args=" -march=skylake-avx512 -c -o $tmpf.o $tmpf"
+    fi
+    no_avx512=0
+    {
+       $compiler_name $flags $args >/dev/null 2>&1
+    } || {
+       no_avx512=1
     }
-}
 
-$c11_atomics = 0;
-if ($data =~ /HAVE_C11/) {
-    eval "use File::Temp qw(tempfile)";
-    if ($@){ 
-       warn "could not load PERL module File::Temp, so could not check compiler compatibility with C11";
-       $c11_atomics = 0;
-    } else {
-       ($fh,$tmpf) = tempfile( SUFFIX => '.c' , UNLINK => 1 );
-       print $fh "#include <stdatomic.h>\nint main(void){}\n";
-       $args = " -c -o $tmpf.o $tmpf";
-       my @cmd = ("$compiler_name $flags $args >/dev/null 2>/dev/null");
-       system(@cmd) == 0;
-       if ($? != 0) {
-           $c11_atomics = 0;
-       } else {
-           $c11_atomics = 1;
-       }
-       unlink("$tmpf.o");
+    rm -rf "$tmpd"
+fi
+
+no_rv64gv=0
+if [ "$architecture" = "riscv64" ]; then
+    tmpd=`mktemp -d`
+    tmpf="$tmpd/a.c"
+    code='"vsetvli    zero, zero, e8, m1\n"'
+    printf "int main(void){ __asm__ volatile(%s); }\n" "$code" >> "$tmpf"
+    args=" -march=rv64gv -c -o $tmpf.o $tmpf"
+    no_rv64gv=0
+    {
+        $compiler_name $flags $args >/dev/null 2>&1
+    } || {
+        no_rv64gv=1
     }
+    rm -rf "$tmpd"
+fi
+
+c11_atomics=0
+case "$data" in
+    *HAVE_C11*)
+        tmpd=`mktemp -d`
+        tmpf="$tmpd/a.c"
+        printf "#include <stdatomic.h>\nint main(void){}\n" >> "$tmpf"
+        args=' -c -o $tmpf.o $tmpf'
+        c11_atomics=1
+        {
+            $compiler_name $flags $args >/dev/null 2>&1
+        } || {
+            c11_atomics=0
+        }
+
+        rm -rf "$tmpd"
+        ;;
+esac
+
+oldgcc=0
+no_avx2=0
+if [ "$compiler" = "GCC" ]; then
+    case "$architecture" in x86|x86_64)
+        no_avx2=0
+        oldgcc=0
+        data=`$compiler_name -dumpversion`
+        case "$data" in *.*.*)
+            data="${data%.*}"
+        esac
+        if awk -v n1=$data -v n2=4.6 'BEGIN { exit !(n1 <= n2) }'; then
+            no_avx2=1
+            oldgcc=1
+        fi
+    esac
+fi
+
+data=`$compiler_name $flags -S ctest1.c && grep globl ctest1.s | head -n 1 && rm -f ctest1.s`
+
+need_fu=''
+if echo "$data" | grep 'globl[[:space:]][_\.]'; then
+    need_fu="${data##*globl[[:space:]]}"
+    need_fu="${need_fu%%[!_\.]*}"
+fi
+
+cross=0
+
+if [ "$architecture" != "$hostarch" ]; then
+    cross=1
+    [ "$hostarch" = "x86_64" ] && [ "$architecture" = "x86" ] && cross=0
+    [ "$hostarch" = "mips64" ] && [ "$architecture" = "mips" ] && cross=0
+fi
+
+[ "$os" != "$hostos" ] && cross=1
+[ "$os" = "Android" ] && [ "$hostos" = "Linux" ] && [ -n "$TERMUX_APP_PID" ] \
+    && cross=0
+
+[ "$USE_OPENMP" != 1 ] && openmp=''
+
+linker_L=""
+linker_l=""
+linker_a=""
+
+link=`$compiler_name $flags -c ctest2.c -o ctest2.o 2>&1 && $compiler_name $flags $openmp -v ctest2.o -o ctest2 2>&1 && rm -f ctest2.o ctest2 ctest2.exe`
+
+link=`echo "$link" | sed 's/\-Y[[:space:]]P\,/\-Y/g'`
+
+
+flags=`echo $link | tr '[[:space:]],\n' ' '`
+
+# Strip trailing quotes
+old_flags="$flags"
+flags=''
+
+
+for flag in $old_flags; do
+    f=`echo "$flag" | tr '"' ' '`
+    flags="$flags $f"
+done
+
+for flag in $flags; do
+    case "$flag" in -L*)
+        case "$flag" in
+            -LIST:*|-LANG:*) ;;
+            *) linker_L="$linker_L $flag" ;;
+        esac
+    esac
+
+    case "$flag" in -Y*)
+        linker_L="$linker_L -Wl,$flag" ;;
+    esac
+
+    case "$flag" in --exclude-libs*)
+        linker_L="$linker_L -Wl,$flag"
+        flags=""
+        ;;
+    esac
+
+    case "$flag" in -l*)
+        case "$flag" in
+            *gfortranbegin*|*frtbegin*|*pathfstart*|*numa*|*crt[0-9]*|\
+                *gcc*|*user32*|*kernel32*|*advapi32*|*shell32*|*omp*|\
+                *[0-9]*) ;;
+            *) linker_l="$linker_l $flag" ;;
+        esac
+    esac
+
+    case "$flag" in *.a) linker_a="$linker_a $flag" ;; esac
+done
+
+ [ "$makefile" = "-" ] && {
+    [ "$no_rv64gv" -eq 1 ] && printf "NO_RV64GV=1\n"
+    [ "$no_avx512" -eq 1 ] && printf "NO_AVX512=1\n"
+    [ "$no_avx2" -eq 1 ] && printf "NO_AVX2=1\n"
+    [ "$oldgcc" -eq 1 ] && printf "OLDGCC=1\n"
+    exit 0
 }
 
-if ($compiler eq "GCC" &&( ($architecture eq "x86") || ($architecture eq "x86_64"))) {
-       $no_avx2 = 0;
-       $oldgcc = 0;
-       $data = `$compiler_name -dumpversion`;
-       if ($data <= 4.6) {
-               $no_avx2 = 1;
-               $oldgcc = 1;
-       }
-}
-
-$data = `$compiler_name $flags -S ctest1.c && grep globl ctest1.s | head -n 1 && rm -f ctest1.s`;
-
-$data =~ /globl\s([_\.]*)(.*)/;
-
-$need_fu      = $1;
-
-$cross = 0;
-
-if ($architecture ne $hostarch) {
-    $cross = 1;
-    $cross = 0 if (($hostarch eq "x86_64") && ($architecture eq "x86"));
-    $cross = 0 if (($hostarch eq "mips64") && ($architecture eq "mips"));
-}
-
-$cross = 1 if ($os ne $hostos);
-$cross = 0 if (($os eq "Android") && ($hostos eq "Linux") && ($ENV{TERMUX_APP_PID} != ""));
+:> "$makefile" || exit 1
+:> "$config" || exit 1
 
-$openmp = "" if $ENV{USE_OPENMP} != 1;
 
-$linker_L = "";
-$linker_l = "";
-$linker_a = "";
+# print $data, "\n";
 
 {
-    $link = `$compiler_name $flags -c ctest2.c -o ctest2.o 2>&1 && $compiler_name $flags $openmp -v ctest2.o -o ctest2 2>&1 && rm -f ctest2.o ctest2 ctest2.exe`;
-
-    $link =~ s/\-Y\sP\,/\-Y/g;
-
-    @flags = split(/[\s\,\n]/, $link);
-    # remove leading and trailing quotes from each flag.
-    @flags = map {s/^['"]|['"]$//g; $_} @flags;
-
-    foreach $flags (@flags) {
-       if (
-           ($flags =~ /^\-L/)
-           && ($flags !~ /^-LIST:/)
-           && ($flags !~ /^-LANG:/)
-           ) {
-           $linker_L .= $flags . " "
-           }
-
-       if ($flags =~ /^\-Y/) {
-           $linker_L .= "-Wl,". $flags . " "
-           }
-
-       if ($flags =~ /^\--exclude-libs/) {
-           $linker_L .= "-Wl,". $flags . " ";
-           $flags="";
-          }
-
-       if (
-           ($flags =~ /^\-l/)
-           && ($flags !~ /gfortranbegin/)
-           && ($flags !~ /frtbegin/)
-           && ($flags !~ /pathfstart/)
-           && ($flags !~ /numa/)
-           && ($flags !~ /crt[0-9]/)
-           && ($flags !~ /gcc/)
-           && ($flags !~ /user32/)
-           && ($flags !~ /kernel32/)
-           && ($flags !~ /advapi32/)
-           && ($flags !~ /shell32/)
-           && ($flags !~ /omp/)
-           && ($flags !~ /[0-9]+/)
-           ) {
-           $linker_l .= $flags . " "
-       }
-
-       $linker_a .= $flags . " " if $flags =~ /\.a$/;
+    printf "OSNAME=%s\n" "$os"
+    printf "ARCH=%s\n" "$architecture"
+    printf "C_COMPILER=%s\n" "$compiler"
+    [ $binformat != 'bin32' ] && printf "BINARY32=\n"
+    [ $binformat != 'bin64' ] && printf "BINARY64=\n"
+    [ "$binformat" = "bin32" ] && printf "BINARY32=1\n"
+    [ "$binformat" = "bin64" ] && printf "BINARY64=1\n"
+    [ -n "$need_fu" ] && printf 'FU=%s\n' "$need_fu"
+    [ "$cross" -ne 0 ] && [ -n "$cross_suffix" ] && \
+        printf "CROSS_SUFFIX=%s\n" "$cross_suffix"
+    [ "$cross" -ne 0 ] && printf "CROSS=1\n"
+    printf "CEXTRALIB=%s %s %s\n" "$linker_L" "$linker_l" "$linker_a"
+    [ "$have_msa" -eq 1 ] && {
+        printf "HAVE_MSA=1\n"
+        printf "MSA_FLAGS=%s\n" "$msa_flags"
     }
+    [ "$no_rv64gv" -eq 1 ] && printf "NO_RV64GV=1\n"
+    [ "$no_avx512" -eq 1 ] && printf "NO_AVX512=1\n"
+    [ "$no_avx2" -eq 1 ] && printf "NO_AVX2=1\n"
+    [ "$oldgcc" -eq 1 ] && printf "OLDGCC=1\n"
+} >> "$makefile"
 
-}
+os=`echo "$os" | tr '[[:lower:]]' '[[:upper:]]'/ `
+architecture=`echo "$architecture" | tr '[[:lower:]]' '[[:upper:]]' `
+compiler=`echo "$compiler" | tr '[[:lower:]]' '[[:upper:]]' `
 
-open(MAKEFILE, "> $makefile") || die "Can't create $makefile";
-open(CONFFILE, "> $config"  ) || die "Can't create $config";
+{
+    printf "#define OS_%s\t1\n" "$os"
+    printf "#define ARCH_%s\t1\n" "$architecture"
+    printf "#define C_%s\t1\n" "$compiler"
+    [ "$binformat" = "bin32" ] && printf "#define __32BIT__\t1\n"
+    [ "$binformat" = "bin64" ] && printf "#define __64BIT__\t1\n"
+    [ -n "$need_fu" ] && printf "#define FUNDERSCORE\t%s\n" "$need_fu"
+    [ "$have_msa" -eq 1 ] && printf "#define HAVE_MSA\t1\n"
+    [ "$c11_atomics" -eq 1 ] && printf "#define HAVE_C11\t1\n"
+} >> "$config"
 
-# print $data, "\n";
 
-print MAKEFILE "OSNAME=$os\n";
-print MAKEFILE "ARCH=$architecture\n";
-print MAKEFILE "C_COMPILER=$compiler\n";
-print MAKEFILE "BINARY32=\n" if $binformat ne bin32;
-print MAKEFILE "BINARY64=\n" if $binformat ne bin64;
-print MAKEFILE "BINARY32=1\n" if $binformat eq bin32;
-print MAKEFILE "BINARY64=1\n" if $binformat eq bin64;
-print MAKEFILE "FU=$need_fu\n" if $need_fu ne "";
-print MAKEFILE "CROSS_SUFFIX=$cross_suffix\n" if $cross != 0 && $cross_suffix ne "";
-print MAKEFILE "CROSS=1\n" if $cross != 0;
-print MAKEFILE "CEXTRALIB=$linker_L $linker_l $linker_a\n";
-print MAKEFILE "HAVE_MSA=1\n" if $have_msa eq 1;
-print MAKEFILE "MSA_FLAGS=$msa_flags\n" if $have_msa eq 1;
-print MAKEFILE "NO_RV64GV=1\n" if $no_rv64gv eq 1;
-print MAKEFILE "NO_AVX512=1\n" if $no_avx512 eq 1;
-print MAKEFILE "NO_AVX2=1\n" if $no_avx2 eq 1;
-print MAKEFILE "OLDGCC=1\n" if $oldgcc eq 1;
-
-$os           =~ tr/[a-z]/[A-Z]/;
-$architecture =~ tr/[a-z]/[A-Z]/;
-$compiler     =~ tr/[a-z]/[A-Z]/;
-
-print CONFFILE "#define OS_$os\t1\n";
-print CONFFILE "#define ARCH_$architecture\t1\n";
-print CONFFILE "#define C_$compiler\t1\n";
-print CONFFILE "#define __32BIT__\t1\n"  if $binformat eq bin32;
-print CONFFILE "#define __64BIT__\t1\n"  if $binformat eq bin64;
-print CONFFILE "#define FUNDERSCORE\t$need_fu\n" if $need_fu ne "";
-print CONFFILE "#define HAVE_MSA\t1\n"  if $have_msa eq 1;
-print CONFFILE "#define HAVE_C11\t1\n" if $c11_atomics eq 1;
-
-
-if ($os eq "LINUX") {
+if [ "$os" = "LINUX" ]; then
 
 #    @pthread = split(/\s+/, `nm /lib/libpthread.so* | grep _pthread_create`);
 
 #    if ($pthread[2] ne "") {
 #      print CONFFILE "#define PTHREAD_CREATE_FUNC     $pthread[2]\n";
 #    } else {
-       print CONFFILE "#define PTHREAD_CREATE_FUNC     pthread_create\n";
+       printf "#define PTHREAD_CREATE_FUNC     pthread_create\n" >> "$config"
 #    }
-} else {
-    print CONFFILE "#define PTHREAD_CREATE_FUNC        pthread_create\n";
-}
-
-close(MAKEFILE);
-close(CONFFILE);
+else
+    printf "#define PTHREAD_CREATE_FUNC        pthread_create\n" >> "$config"
+fi
index a9d1fc4..2a40fe5 100644 (file)
@@ -53,8 +53,8 @@ endif()
 add_custom_command(
   OUTPUT ${PROJECT_BINARY_DIR}/openblas.def
   #TARGET ${OpenBLAS_LIBNAME} PRE_LINK
-  COMMAND perl 
-  ARGS "${PROJECT_SOURCE_DIR}/exports/gensymbol" "win2k" "${ARCH_IN}" "dummy" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" "${SYMBOLPREFIX}" "${SYMBOLSUFFIX}" > "${PROJECT_BINARY_DIR}/openblas.def"
+  COMMAND "${PROJECT_SOURCE_DIR}/exports/gensymbol"
+  ARGS "win2k" "${ARCH_IN}" "dummy" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" "${SYMBOLPREFIX}" "${SYMBOLSUFFIX}" > "${PROJECT_BINARY_DIR}/openblas.def"
   COMMENT "Create openblas.def file"
   VERBATIM)
 
index 4ef0ce9..993919d 100644 (file)
@@ -199,12 +199,12 @@ if (DEFINED CORE AND CMAKE_CROSSCOMPILING AND NOT (${HOST_OS} STREQUAL "WINDOWSS
       "#define HAVE_VFP\n"
       "#define HAVE_NEON\n"
       "#define ARMV8\n")
-if ("${TCORE}" STREQUAL "CORTEXA57")     
+if ("${TCORE}" STREQUAL "CORTEXA57")
     set(SGEMM_UNROLL_M 16)
     set(SGEMM_UNROLL_N 4)
 else ()
     set(SGEMM_UNROLL_M 8)
-    set(SGEMM_UNROLL_N 8) 
+    set(SGEMM_UNROLL_N 8)
 endif ()
     set(DGEMM_UNROLL_M 8)
     set(DGEMM_UNROLL_N 4)
@@ -603,7 +603,7 @@ endif ()
     "#define GEMM_MULTITHREAD_THRESHOLD\t${GEMM_MULTITHREAD_THRESHOLD}\n")
   # Move to where gen_config_h would place it
   file(MAKE_DIRECTORY ${TARGET_CONF_DIR})
-  file(RENAME ${TARGET_CONF_TEMP} "${TARGET_CONF_DIR}/${TARGET_CONF}")  
+  file(RENAME ${TARGET_CONF_TEMP} "${TARGET_CONF_DIR}/${TARGET_CONF}")
 
 else(NOT CMAKE_CROSSCOMPILING)
   # compile getarch
@@ -639,7 +639,7 @@ else(NOT CMAKE_CROSSCOMPILING)
       OUTPUT_VARIABLE GETARCH_LOG
       COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN}
     )
-  
+
     if (NOT ${GETARCH_RESULT})
       MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}")
     endif ()
index baaa336..413e132 100644 (file)
@@ -120,10 +120,10 @@ dll  : ../$(LIBDLLNAME)
        -Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive $(FEXTRALIB) $(EXTRALIB)
 
 $(LIBPREFIX).def : gensymbol
-       perl ./gensymbol win2k    $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
+       ./gensymbol win2k    $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
 
 libgoto_hpl.def : gensymbol
-       perl ./gensymbol win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
+       ./gensymbol win2khpl $(ARCH) dummy $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
 
 ifeq ($(OSNAME), Darwin)
 INTERNALNAME = $(LIBPREFIX).$(MAJOR_VERSION).dylib
@@ -266,23 +266,23 @@ static : ../$(LIBNAME)
        rm -f goto.$(SUFFIX)
 
 osx.def : gensymbol ../Makefile.system ../getarch.c
-       perl ./gensymbol osx $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
+       ./gensymbol osx $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
 
 aix.def : gensymbol ../Makefile.system ../getarch.c
-       perl ./gensymbol aix $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
+       ./gensymbol aix $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
 
 objcopy.def : gensymbol ../Makefile.system ../getarch.c
-       perl ./gensymbol objcopy $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
+       ./gensymbol objcopy $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
 
 objconv.def : gensymbol ../Makefile.system ../getarch.c
-       perl ./gensymbol objconv $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
+       ./gensymbol objconv $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS)  $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F)
 
 test : linktest.c
        $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK.
        rm -f linktest
 
 linktest.c : gensymbol ../Makefile.system ../getarch.c
-       perl ./gensymbol linktest  $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > linktest.c
+       ./gensymbol linktest  $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > linktest.c
 
 clean ::
        @rm -f *.def *.dylib __.SYMDEF* *.renamed
old mode 100644 (file)
new mode 100755 (executable)
index e7210a0..eafa2f8
@@ -1,4 +1,4 @@
-#!/usr/bin/env perl
+#!/bin/sh
 
 # Changelog
 # 2017/09/03 staticfloat
 # 2017/08/01 Saar
 # removed blas_thread_shutdown_
 #
-@blasobjsc = (
-    caxpy,caxpby,ccopy,cdotc,cdotu,cgbmv,cgemm,cgemv,cgerc,cgeru,
-    chbmv,chemm,chemv,cher2,cher2k,cher,cherk,scabs1,scamax,
-    chpmv,chpr2,chpr,crotg,cscal,csrot,csscal,cswap,scamin,scasum,scnrm2,
-    csymm,csyr2k,csyrk,ctbmv,ctbsv,ctpmv,ctpsv,ctrmm,ctrmv,ctrsm,
-    ctrsv,icamax,icamin,cimatcopy,comatcopy,cgeadd,scsum);
-    
-@blasobjsd = (
-    damax,damin,dasum,daxpy,daxpby,dcabs1,dcopy,ddot,dgbmv,dgemm,
-    dgemv,dger,dmax,dmin,dnrm2,drot,drotg,drotm,drotmg,dsbmv,
-    dscal,dsdot,dspmv,dspr2,dimatcopy,domatcopy,
-    dspr,dswap,dsymm,dsymv,dsyr2,dsyr2k,dsyr,dsyrk,dtbmv,dtbsv,
-    dtpmv,dtpsv,dtrmm,dtrmv,dtrsm,dtrsv,
-        idamax,idamin,idmax,idmin,dgeadd,dsum);
-    
-@blasobjss = (
-    isamax,isamin,ismax,ismin,
-    samax,samin,sasum,saxpy, saxpby, 
-    scopy,sdot,sdsdot,sgbmv,sgemm,sgemv,sger,
-    smax,smin,snrm2,simatcopy,somatcopy,
-    srot,srotg,srotm,srotmg,ssbmv,sscal,sspmv,sspr2,sspr,sswap,
-    ssymm,ssymv,ssyr2,ssyr2k,ssyr,ssyrk,stbmv,stbsv,stpmv,stpsv,
-    strmm,strmv,strsm,strsv, sgeadd,ssum);
-     
-@blasobjsz = (
-    izamax,izamin,,
-    zaxpy,zaxpby,zcopy,zdotc,zdotu,zdrot,
-    zdscal,zgbmv,zgemm,zgemv,zgerc,zgeru,
-    zhbmv,zhemm,zhemv,zher2,zher2k,zher,zherk,zhpmv,zhpr2,
-    zhpr,zrotg,zscal,zswap,zsymm,zsyr2k,zsyrk,ztbmv,
-    ztbsv,ztpmv,ztpsv,ztrmm,ztrmv,ztrsm,ztrsv,
-    zomatcopy, zimatcopy,dzamax,dzamin,dzasum,dznrm2,
-    zgeadd, dzsum);
-
-@blasobjs = (lsame, xerbla);
-@bfblasobjs = (sbgemm, sbgemv, sbdot, sbstobf16, sbdtobf16, sbf16tos, dbf16tod);
-@cblasobjsc = (
-    cblas_caxpy, cblas_ccopy, cblas_cdotc, cblas_cdotu, cblas_cgbmv, cblas_cgemm, cblas_cgemv,
-    cblas_cgerc, cblas_cgeru, cblas_chbmv, cblas_chemm, cblas_chemv, cblas_cher2, cblas_cher2k,
-    cblas_cher, cblas_cherk,  cblas_chpmv, cblas_chpr2, cblas_chpr, cblas_cscal, cblas_caxpby,
-    cblas_csscal, cblas_cswap, cblas_csymm, cblas_csyr2k, cblas_csyrk, cblas_ctbmv, cblas_cgeadd,
-    cblas_ctbsv, cblas_ctpmv, cblas_ctpsv, cblas_ctrmm, cblas_ctrmv, cblas_ctrsm, cblas_ctrsv, 
-    cblas_scnrm2, cblas_scasum,
-    cblas_icamax, cblas_icamin, cblas_icmin, cblas_icmax, cblas_scsum,cblas_cimatcopy,cblas_comatcopy
-    );
-@cblasobjsd = (
-    cblas_dasum, cblas_daxpy, cblas_dcopy, cblas_ddot,
-    cblas_dgbmv, cblas_dgemm, cblas_dgemv, cblas_dger, cblas_dnrm2,
-    cblas_drot, cblas_drotg, cblas_drotm, cblas_drotmg, cblas_dsbmv, cblas_dscal, cblas_dsdot,
-    cblas_dspmv, cblas_dspr2, cblas_dspr, cblas_dswap, cblas_dsymm, cblas_dsymv, cblas_dsyr2,
-    cblas_dsyr2k, cblas_dsyr, cblas_dsyrk, cblas_dtbmv, cblas_dtbsv, cblas_dtpmv, cblas_dtpsv,
-    cblas_dtrmm, cblas_dtrmv, cblas_dtrsm, cblas_dtrsv, cblas_daxpby, cblas_dgeadd,
-    cblas_idamax, cblas_idamin, cblas_idmin, cblas_idmax, cblas_dsum,cblas_dimatcopy,cblas_domatcopy
-    );
-    
-@cblasobjss = (
-    cblas_sasum, cblas_saxpy, cblas_saxpby,
-    cblas_scopy, cblas_sdot, cblas_sdsdot, cblas_sgbmv, cblas_sgemm,
-    cblas_sgemv, cblas_sger, cblas_snrm2, cblas_srot, cblas_srotg,
-    cblas_srotm, cblas_srotmg, cblas_ssbmv, cblas_sscal, cblas_sspmv, cblas_sspr2, cblas_sspr,
-    cblas_sswap, cblas_ssymm, cblas_ssymv, cblas_ssyr2, cblas_ssyr2k, cblas_ssyr, cblas_ssyrk,
-    cblas_stbmv, cblas_stbsv, cblas_stpmv, cblas_stpsv, cblas_strmm, cblas_strmv, cblas_strsm,
-    cblas_strsv, cblas_sgeadd,
-    cblas_isamax, cblas_isamin, cblas_ismin, cblas_ismax, cblas_ssum,cblas_simatcopy,cblas_somatcopy
-    );
-@cblasobjsz = (
-    cblas_dzasum, cblas_dznrm2, cblas_zaxpy, cblas_zcopy, cblas_zdotc, cblas_zdotu, cblas_zdscal,
-    cblas_zgbmv, cblas_zgemm, cblas_zgemv, cblas_zgerc, cblas_zgeru, cblas_zhbmv, cblas_zhemm,
-    cblas_zhemv, cblas_zher2, cblas_zher2k, cblas_zher, cblas_zherk, cblas_zhpmv, cblas_zhpr2,
-    cblas_zhpr, cblas_zscal, cblas_zswap, cblas_zsymm, cblas_zsyr2k, cblas_zsyrk,
-    cblas_ztbmv, cblas_ztbsv, cblas_ztpmv, cblas_ztpsv, cblas_ztrmm, cblas_ztrmv, cblas_ztrsm,
-    cblas_ztrsv, cblas_cdotc_sub, cblas_cdotu_sub, cblas_zdotc_sub, cblas_zdotu_sub,
-    cblas_zaxpby, cblas_zgeadd,
-    cblas_izamax, cblas_izamin, cblas_izmin, cblas_izmax, cblas_dzsum,cblas_zimatcopy,cblas_zomatcopy
-);
-
-@cblasobjs = (  cblas_xerbla );
-
-@bfcblasobjs = (cblas_sbgemm, cblas_sbgemv, cblas_sbdot, cblas_sbstobf16, cblas_sbdtobf16, cblas_sbf16tos, cblas_dbf16tod);
-
-@exblasobjs = (
-    qamax,qamin,qasum,qaxpy,qcabs1,qcopy,qdot,qgbmv,qgemm,
-    qgemv,qger,qmax,qmin,
-    qnrm2,
-    qsbmv,qscal,qspmv,qspr2,
-    qspr,qswap,qsymm,qsymv,qsyr2,qsyr2k,qsyr,qsyrk,qtbmv,qtbsv,
-    qtpmv,qtpsv,qtrmm,qtrmv,qtrsm,qtrsv,
-    qxamax,qxamin,qxasum,qxnrm2,
-    xaxpy,xcopy,xdotc,xdotu,
-    xqscal,xgbmv,xgemm,xgemv,xgerc,xgeru,
-    xhbmv,xhemm,xhemv,xher2,xher2k,xher,xherk,xhpmv,xhpr2,
-    xhpr,xscal,xswap,xsymm,xsyr2k,xsyrk,xtbmv,
-    xtbsv,xtpmv,xtpsv,xtrmm,xtrmv,xtrsm,xtrsv,
-#           qrot,qrotg,qrotm,qrotmg,
-#           xdrot,xrotg,
-);
-
-    @gemm3mobjs=();
-
-    @cblasgemm3mobjs=();
-
-@gemm3mobjsc = (
-    cgemm3m,
-);
-@gemm3mobjsz = (    
+blasobjsc="
+    caxpy caxpby ccopy cdotc cdotu cgbmv cgemm cgemv cgerc cgeru
+    chbmv chemm chemv cher2 cher2k cher cherk scabs1 scamax
+    chpmv chpr2 chpr crotg cscal csrot csscal cswap scamin scasum scnrm2
+    csymm csyr2k csyrk ctbmv ctbsv ctpmv ctpsv ctrmm ctrmv ctrsm
+    ctrsv icamax icamin cimatcopy comatcopy cgeadd scsum"
+
+blasobjsd="
+    damax damin dasum daxpy daxpby dcabs1 dcopy ddot dgbmv dgemm
+    dgemv dger dmax dmin dnrm2 drot drotg drotm drotmg dsbmv
+    dscal dsdot dspmv dspr2 dimatcopy domatcopy
+    dspr dswap dsymm dsymv dsyr2 dsyr2k dsyr dsyrk dtbmv dtbsv
+    dtpmv dtpsv dtrmm dtrmv dtrsm dtrsv
+        idamax idamin idmax idmin dgeadd dsum"
+
+blasobjss="
+    isamax isamin ismax ismin
+    samax samin sasum saxpy  saxpby
+    scopy sdot sdsdot sgbmv sgemm sgemv sger
+    smax smin snrm2 simatcopy somatcopy
+    srot srotg srotm srotmg ssbmv sscal sspmv sspr2 sspr sswap
+    ssymm ssymv ssyr2 ssyr2k ssyr ssyrk stbmv stbsv stpmv stpsv
+    strmm strmv strsm strsv  sgeadd ssum"
+
+blasobjsz="
+    izamax izamin
+    zaxpy zaxpby zcopy zdotc zdotu zdrot
+    zdscal zgbmv zgemm zgemv zgerc zgeru
+    zhbmv zhemm zhemv zher2 zher2k zher zherk zhpmv zhpr2
+    zhpr zrotg zscal zswap zsymm zsyr2k zsyrk ztbmv
+    ztbsv ztpmv ztpsv ztrmm ztrmv ztrsm ztrsv
+    zomatcopy  zimatcopy dzamax dzamin dzasum dznrm2
+    zgeadd  dzsum"
+
+blasobjs="lsame xerbla"
+bfblasobjs="sbgemm sbgemv sbdot sbstobf16 sbdtobf16 sbf16tos dbf16tod"
+cblasobjsc="
+    cblas_caxpy cblas_ccopy cblas_cdotc cblas_cdotu cblas_cgbmv cblas_cgemm cblas_cgemv
+    cblas_cgerc cblas_cgeru cblas_chbmv cblas_chemm cblas_chemv cblas_cher2 cblas_cher2k
+    cblas_cher cblas_cherk  cblas_chpmv cblas_chpr2 cblas_chpr cblas_cscal cblas_caxpby
+    cblas_csscal cblas_cswap cblas_csymm cblas_csyr2k cblas_csyrk cblas_ctbmv cblas_cgeadd
+    cblas_ctbsv cblas_ctpmv cblas_ctpsv cblas_ctrmm cblas_ctrmv cblas_ctrsm cblas_ctrsv
+    cblas_scnrm2 cblas_scasum
+    cblas_icamax cblas_icamin cblas_icmin cblas_icmax cblas_scsum cblas_cimatcopy cblas_comatcopy
+    "
+cblasobjsd="
+    cblas_dasum cblas_daxpy cblas_dcopy cblas_ddot
+    cblas_dgbmv cblas_dgemm cblas_dgemv cblas_dger cblas_dnrm2
+    cblas_drot cblas_drotg cblas_drotm cblas_drotmg cblas_dsbmv cblas_dscal cblas_dsdot
+    cblas_dspmv cblas_dspr2 cblas_dspr cblas_dswap cblas_dsymm cblas_dsymv cblas_dsyr2
+    cblas_dsyr2k cblas_dsyr cblas_dsyrk cblas_dtbmv cblas_dtbsv cblas_dtpmv cblas_dtpsv
+    cblas_dtrmm cblas_dtrmv cblas_dtrsm cblas_dtrsv cblas_daxpby cblas_dgeadd
+    cblas_idamax cblas_idamin cblas_idmin cblas_idmax cblas_dsum cblas_dimatcopy cblas_domatcopy
+    "
+
+cblasobjss="
+    cblas_sasum cblas_saxpy cblas_saxpby
+    cblas_scopy cblas_sdot cblas_sdsdot cblas_sgbmv cblas_sgemm
+    cblas_sgemv cblas_sger cblas_snrm2 cblas_srot cblas_srotg
+    cblas_srotm cblas_srotmg cblas_ssbmv cblas_sscal cblas_sspmv cblas_sspr2 cblas_sspr
+    cblas_sswap cblas_ssymm cblas_ssymv cblas_ssyr2 cblas_ssyr2k cblas_ssyr cblas_ssyrk
+    cblas_stbmv cblas_stbsv cblas_stpmv cblas_stpsv cblas_strmm cblas_strmv cblas_strsm
+    cblas_strsv cblas_sgeadd
+    cblas_isamax cblas_isamin cblas_ismin cblas_ismax cblas_ssum cblas_simatcopy cblas_somatcopy
+    "
+
+cblasobjsz="
+    cblas_dzasum cblas_dznrm2 cblas_zaxpy cblas_zcopy cblas_zdotc cblas_zdotu cblas_zdscal
+    cblas_zgbmv cblas_zgemm cblas_zgemv cblas_zgerc cblas_zgeru cblas_zhbmv cblas_zhemm
+    cblas_zhemv cblas_zher2 cblas_zher2k cblas_zher cblas_zherk cblas_zhpmv cblas_zhpr2
+    cblas_zhpr cblas_zscal cblas_zswap cblas_zsymm cblas_zsyr2k cblas_zsyrk
+    cblas_ztbmv cblas_ztbsv cblas_ztpmv cblas_ztpsv cblas_ztrmm cblas_ztrmv cblas_ztrsm
+    cblas_ztrsv cblas_cdotc_sub cblas_cdotu_sub cblas_zdotc_sub cblas_zdotu_sub
+    cblas_zaxpby cblas_zgeadd
+    cblas_izamax cblas_izamin cblas_izmin cblas_izmax cblas_dzsum cblas_zimatcopy cblas_zomatcopy
+"
+
+cblasobjs="cblas_xerbla"
+
+bfcblasobjs="cblas_sbgemm cblas_sbgemv cblas_sbdot cblas_sbstobf16 cblas_sbdtobf16 cblas_sbf16tos cblas_dbf16tod"
+
+exblasobjs="
+    qamax qamin qasum qaxpy qcabs1 qcopy qdot qgbmv qgemm
+    qgemv qger qmax qmin
+    qnrm2
+    qsbmv qscal qspmv qspr2
+    qspr qswap qsymm qsymv qsyr2 qsyr2k qsyr qsyrk qtbmv qtbsv
+    qtpmv qtpsv qtrmm qtrmv qtrsm qtrsv
+    qxamax qxamin qxasum qxnrm2
+    xaxpy xcopy xdotc xdotu
+    xqscal xgbmv xgemm xgemv xgerc xgeru
+    xhbmv xhemm xhemv xher2 xher2k xher xherk xhpmv xhpr2
+    xhpr xscal xswap xsymm xsyr2k xsyrk xtbmv
+    xtbsv xtpmv xtpsv xtrmm xtrmv xtrsm xtrsv
+"
+#   qrot,qrotg,qrotm,qrotmg,
+#   xdrot,xrotg,
+
+gemm3mobj=""
+
+cblasgemm3mobj=""
+
+gemm3mobjsc="
+    cgemm3m
+"
+gemm3mobjsz="
     zgemm3m
-);
+"
 
-@cblasgemm3mobjsc = (
+cblasgemm3mobjsc="
     cblas_cgemm3m
-);
-@cblasgemm3mobjsz = (
+"
+cblasgemm3mobjsz="
     cblas_zgemm3m
-);
+"
 
 
 
 
 #both underscore and no underscore
-@misc_common_objs = (
-    openblas_get_parallel,
-    openblas_get_num_procs,
-    openblas_set_num_threads,
-    openblas_get_num_threads,
-);
-
-@misc_no_underscore_objs = (
-    goto_set_num_threads,
-    openblas_get_config,
-    openblas_get_corename,
-);
-
-@misc_underscore_objs = (
-);
-
-@lapackobjss = (
-    # These routines are provided by OpenBLAS.
-    sgesv, 
-    sgetf2,
-    sgetrf,
-    slaswp,
-    sgetrs,
-    slauu2,
-    slauum,
-    spotf2,
-    spotrf,
-    strti2,
-    strtri,
-    spotri,
-);
-
-@lapackobjsd = (
- dgesv,  
- dgetf2, 
- dgetrf, 
- dlaswp, 
- dgetrs, 
- dlauu2, 
- dlauum, 
- dpotf2, 
- dpotrf, 
- dtrti2, 
- dtrtri, 
- dpotri, 
-);
-
-@lapackobjsc = (
-cgesv,  
-cgetf2, 
-cgetrf, 
-claswp, 
-cgetrs, 
-clauu2, 
-clauum, 
-cpotf2, 
-cpotrf, 
-ctrti2, 
-ctrtri, 
-cpotri, 
-);
-
-@lapackobjsz = (
-zgesv,
-zgetf2,
-zgetrf,
-zlaswp,
-zgetrs,
-zlauu2,
-zlauum,
-zpotf2,
-zpotrf,
-ztrti2,
-ztrtri,
-zpotri,
-);
-
-
-@lapackobjs2 = (
-    # These routines are provided by LAPACK (reference implementation).
-    #
-    # This list is prepared by copying all routines listed in
-    # `lapack-3.4.1/SRC/Makefile` and replacing the '.o' suffix with a comma.
-    # Thereafter the following routines should be removed:
-    # - those provided by OpenBLAS (see @lapackobjs)
-    # - extra precision routines (see @lapack_extendedprecision_objs)
-    # Each of these have been marked individually with "already provided" or "excluded".
-
-    # ALLAUX  -- Auxiliary routines called from all precisions
-    # already provided by @blasobjs: xerbla, lsame
-    ilaenv, ieeeck, lsamen,  iparmq,
-    ilaprec, ilatrans, ilauplo, iladiag,
-    ilaver, slamch, slamc3,
-);
-
-@lapackobjs2sc = (    
-    # SCLAUX  -- Auxiliary routines called from both REAL and COMPLEX.
-    # excluded: second_$(TIMER)
-    sbdsdc,
-    sbdsqr, sdisna, slabad, slacpy, sladiv, slae2,  slaebz,
-    slaed0, slaed1, slaed2, slaed3, slaed4, slaed5, slaed6,
-    slaed7, slaed8, slaed9, slaeda, slaev2, slagtf,
-    slagts, slamrg, slanst,
-    slapy2, slapy3, slarnv,
-    slarra, slarrb, slarrc, slarrd, slarre, slarrf, slarrj,
-    slarrk, slarrr, slaneg,
-    slartg, slaruv, slas2,  slascl,
-    slasd0, slasd1, slasd2, slasd3, slasd4, slasd5, slasd6,
-    slasd7, slasd8, slasda, slasdq, slasdt,
-    slaset, slasq1, slasq2, slasq3, slasq4, slasq5, slasq6,
-    slasr,  slasrt, slassq, slasv2, spttrf, sstebz, sstedc,
-    ssteqr, ssterf, slaisnan, sisnan,
-    slartgp, slartgs,
-);
-
-@lapackobjs2dz = (
-    # DZLAUX  -- Auxiliary routines called from both DOUBLE and COMPLEX*16.
-    # excluded: dsecnd_$(TIMER)
-    dbdsdc,
-    dbdsqr, ddisna, dlabad, dlacpy, dladiv, dlae2,  dlaebz,
-    dlaed0, dlaed1, dlaed2, dlaed3, dlaed4, dlaed5, dlaed6,
-    dlaed7, dlaed8, dlaed9, dlaeda, dlaev2, dlagtf,
-    dlagts, dlamrg, dlanst,
-    dlapy2, dlapy3, dlarnv,
-    dlarra, dlarrb, dlarrc, dlarrd, dlarre, dlarrf, dlarrj,
-    dlarrk, dlarrr, dlaneg,
-    dlartg, dlaruv, dlas2,  dlascl,
-    dlasd0, dlasd1, dlasd2, dlasd3, dlasd4, dlasd5, dlasd6,
-    dlasd7, dlasd8, dlasda, dlasdq, dlasdt,
-    dlaset, dlasq1, dlasq2, dlasq3, dlasq4, dlasq5, dlasq6,
-    dlasr,  dlasrt, dlassq, dlasv2, dpttrf, dstebz, dstedc,
-    dsteqr, dsterf, dlaisnan, disnan,
-    dlartgp, dlartgs,
-    dlamch, dlamc3,
-);
-
-@lapackobjs2s = (
-    # SLASRC  -- Single precision real LAPACK routines
-    # already provided by @lapackobjs:
-    #     sgesv, sgetf2, slaswp, slauu2, slauum, spotf2, spotri, strti2, strtri
-    sgbbrd, sgbcon, sgbequ, sgbrfs, sgbsv,
-    sgbsvx, sgbtf2, sgbtrf, sgbtrs, sgebak, sgebal, sgebd2,
-    sgebrd, sgecon, sgeequ, sgees,  sgeesx, sgeev,  sgeevx,
-    sgehd2, sgehrd, sgelq2, sgelqf,
-    sgels,  sgelsd, sgelss, sgelsy, sgeql2, sgeqlf,
-    sgeqp3, sgeqr2, sgeqr2p, sgeqrf, sgeqrfp, sgerfs,
-    sgerq2, sgerqf, sgesc2, sgesdd, sgesvd, sgesvx,
-    sgetc2, sgetri,
-    sggbak, sggbal, sgges,  sggesx, sggev,  sggevx,
-    sggglm, sgghrd, sgglse, sggqrf,
-    sggrqf, sgtcon, sgtrfs, sgtsv,
-    sgtsvx, sgttrf, sgttrs, sgtts2, shgeqz,
-    shsein, shseqr, slabrd, slacon, slacn2,
-    slaein, slaexc, slag2,  slags2, slagtm, slagv2, slahqr,
-    slahr2, slaic1, slaln2, slals0, slalsa, slalsd,
-    slangb, slange, slangt, slanhs, slansb, slansp,
-    slansy, slantb, slantp, slantr, slanv2,
-    slapll, slapmt,
-    slaqgb, slaqge, slaqp2, slaqps, slaqsb, slaqsp, slaqsy,
-    slaqr0, slaqr1, slaqr2, slaqr3, slaqr4, slaqr5,
-    slaqtr, slar1v, slar2v, ilaslr, ilaslc,
-    slarf,  slarfb, slarfg, slarfgp, slarft, slarfx, slargv,
-    slarrv, slartv,
-    slarz,  slarzb, slarzt, slasy2, slasyf,
-    slatbs, slatdf, slatps, slatrd, slatrs, slatrz,
-    sopgtr, sopmtr, sorg2l, sorg2r,
-    sorgbr, sorghr, sorgl2, sorglq, sorgql, sorgqr, sorgr2,
-    sorgrq, sorgtr, sorm2l, sorm2r,
-    sormbr, sormhr, sorml2, sormlq, sormql, sormqr, sormr2,
-    sormr3, sormrq, sormrz, sormtr, spbcon, spbequ, spbrfs,
-    spbstf, spbsv,  spbsvx,
-    spbtf2, spbtrf, spbtrs, spocon, spoequ, sporfs, sposv,
-    sposvx, spstrf, spstf2,
-    sppcon, sppequ,
-    spprfs, sppsv,  sppsvx, spptrf, spptri, spptrs, sptcon,
-    spteqr, sptrfs, sptsv,  sptsvx, spttrs, sptts2, srscl,
-    ssbev,  ssbevd, ssbevx, ssbgst, ssbgv,  ssbgvd, ssbgvx,
-    ssbtrd, sspcon, sspev,  sspevd, sspevx, sspgst,
-    sspgv,  sspgvd, sspgvx, ssprfs, sspsv,  sspsvx, ssptrd,
-    ssptrf, ssptri, ssptrs, sstegr, sstein, sstev,  sstevd, sstevr,
-    sstevx,
-    ssycon, ssyev,  ssyevd, ssyevr, ssyevx, ssygs2,
-    ssygst, ssygv,  ssygvd, ssygvx, ssyrfs, ssysv,  ssysvx,
-    ssytd2, ssytf2, ssytrd, ssytrf, ssytri, ssytri2, ssytri2x,
-    ssyswapr, ssytrs, ssytrs2, ssyconv,
-    stbcon,
-    stbrfs, stbtrs, stgevc, stgex2, stgexc, stgsen,
-    stgsja, stgsna, stgsy2, stgsyl, stpcon, stprfs, stptri,
-    stptrs,
-    strcon, strevc, strexc, strrfs, strsen, strsna, strsyl,
-    strtrs, stzrzf, sstemr,
-    slansf, spftrf, spftri, spftrs, ssfrk, stfsm, stftri, stfttp,
-    stfttr, stpttf, stpttr, strttf, strttp,
-    sgejsv,  sgesvj,  sgsvj0,  sgsvj1,
-    sgeequb, ssyequb, spoequb, sgbequb,
-    sbbcsd, slapmr, sorbdb, sorbdb1, sorbdb2, sorbdb3, sorbdb4,
-    sorbdb5, sorbdb6, sorcsd, sorcsd2by1,
-    sgeqrt, sgeqrt2, sgeqrt3, sgemqrt,
-    stpqrt, stpqrt2, stpmqrt, stprfb,
-);
-
-@lapackobjs2ds = (
-    # DSLASRC -- Double-single mixed precision real routines called from
-    # single, single-extra and double precision real LAPACK
-    # routines (i.e. from SLASRC, SXLASRC, DLASRC).
-    #
-    # already provided by @lapackobjs:
-    #     sgetrs, spotrf, sgetrf
-    spotrs,
-);
-
-@lapackobjs2c = (
-    # CLASRC  -- Single precision complex LAPACK routines
-    # already provided by @blasobjs:
-    # already provided by @lapackobjs:
-    #     cgesv, cgetf2, claswp, clauu2, clauum, cpotf2, cpotri, ctrti2, ctrtri
-    cbdsqr, cgbbrd, cgbcon, cgbequ, cgbrfs, cgbsv,  cgbsvx,
-    cgbtf2, cgbtrf, cgbtrs, cgebak, cgebal, cgebd2, cgebrd,
-    cgecon, cgeequ, cgees,  cgeesx, cgeev,  cgeevx,
-    cgehd2, cgehrd, cgelq2, cgelqf,
-    cgels,  cgelsd, cgelss, cgelsy, cgeql2, cgeqlf, cgeqp3,
-    cgeqr2, cgeqr2p, cgeqrf, cgeqrfp, cgerfs,
-    cgerq2, cgerqf, cgesc2, cgesdd, cgesvd,
-    cgesvx, cgetc2, cgetri,
-    cggbak, cggbal, cgges,  cggesx, cggev,  cggevx, cggglm,
-    cgghrd, cgglse, cggqrf, cggrqf,
-    cgtcon, cgtrfs, cgtsv,  cgtsvx, cgttrf, cgttrs, cgtts2, chbev,
-    chbevd, chbevx, chbgst, chbgv,  chbgvd, chbgvx, chbtrd,
-    checon, cheev,  cheevd, cheevr, cheevx, chegs2, chegst,
-    chegv,  chegvd, chegvx, cherfs, chesv,  chesvx, chetd2,
-    chetf2, chetrd,
-    chetrf, chetri, chetri2, chetri2x, cheswapr,
-    chetrs, chetrs2, chgeqz, chpcon, chpev,  chpevd,
-    chpevx, chpgst, chpgv,  chpgvd, chpgvx, chprfs, chpsv,
-    chpsvx,
-    chptrd, chptrf, chptri, chptrs, chsein, chseqr, clabrd,
-    clacgv, clacon, clacn2, clacp2, clacpy, clacrm, clacrt, cladiv,
-    claed0, claed7, claed8,
-    claein, claesy, claev2, clags2, clagtm,
-    clahef, clahqr,
-    clahr2, claic1, clals0, clalsa, clalsd, clangb, clange, clangt,
-    clanhb, clanhe,
-    clanhp, clanhs, clanht, clansb, clansp, clansy, clantb,
-    clantp, clantr, clapll, clapmt, clarcm, claqgb, claqge,
-    claqhb, claqhe, claqhp, claqp2, claqps, claqsb,
-    claqr0, claqr1, claqr2, claqr3, claqr4, claqr5,
-    claqsp, claqsy, clar1v, clar2v, ilaclr, ilaclc,
-    clarf,  clarfb, clarfg, clarft, clarfgp,
-    clarfx, clargv, clarnv, clarrv, clartg, clartv,
-    clarz,  clarzb, clarzt, clascl, claset, clasr,  classq,
-    clasyf, clatbs, clatdf, clatps, clatrd, clatrs, clatrz,
-    cpbcon, cpbequ, cpbrfs, cpbstf, cpbsv,
-    cpbsvx, cpbtf2, cpbtrf, cpbtrs, cpocon, cpoequ, cporfs,
-    cposv,  cposvx, cpstrf, cpstf2,
-    cppcon, cppequ, cpprfs, cppsv,  cppsvx, cpptrf, cpptri, cpptrs,
-    cptcon, cpteqr, cptrfs, cptsv,  cptsvx, cpttrf, cpttrs, cptts2,
-    crot,   cspcon, cspmv,  cspr,   csprfs, cspsv,
-    cspsvx, csptrf, csptri, csptrs, csrscl, cstedc,
-    cstegr, cstein, csteqr,
-    csycon,
-    csymv,
-    csyr, csyrfs, csysv,  csysvx, csytf2, csytrf, csytri, csytri2, csytri2x,
-    csyswapr, csytrs, csytrs2, csyconv,
-    ctbcon, ctbrfs, ctbtrs, ctgevc, ctgex2,
-    ctgexc, ctgsen, ctgsja, ctgsna, ctgsy2, ctgsyl, ctpcon,
-    ctprfs, ctptri,
-    ctptrs, ctrcon, ctrevc, ctrexc, ctrrfs, ctrsen, ctrsna,
-    ctrsyl, ctrtrs, ctzrzf, cung2l, cung2r,
-    cungbr, cunghr, cungl2, cunglq, cungql, cungqr, cungr2,
-    cungrq, cungtr, cunm2l, cunm2r, cunmbr, cunmhr, cunml2,
-    cunmlq, cunmql, cunmqr, cunmr2, cunmr3, cunmrq, cunmrz,
-    cunmtr, cupgtr, cupmtr, icmax1, scsum1, cstemr,
-    chfrk, ctfttp, clanhf, cpftrf, cpftri, cpftrs, ctfsm, ctftri,
-    ctfttr, ctpttf, ctpttr, ctrttf, ctrttp,
-    cgeequb, cgbequb, csyequb, cpoequb, cheequb,
-    cbbcsd, clapmr, cunbdb, cunbdb1, cunbdb2, cunbdb3, cunbdb4,
-    cunbdb5, cunbdb6, cuncsd, cuncsd2by1,
-    cgeqrt, cgeqrt2, cgeqrt3, cgemqrt,
-    ctpqrt, ctpqrt2, ctpmqrt, ctprfb,
-);
-@lapackobjs2zc = (
-    # ZCLASRC -- Double-single mixed precision complex routines called from
-    # single, single-extra and double precision complex LAPACK
-    # routines (i.e. from CLASRC, CXLASRC, ZLASRC).
-    #
-    # already provided by @lapackobjs:
-    #     cgetrs, cpotrf, cgetrf
-    cpotrs,
-);
-
-@lapackobjs2d = (
-    # DLASRC  -- Double precision real LAPACK routines
-    # already provided by @lapackobjs:
-    #     dgesv, dgetf2, dgetrs, dlaswp, dlauu2, dlauum, dpotf2, dpotrf, dpotri,
-    #     dtrti2, dtrtri
-    dgbbrd, dgbcon, dgbequ, dgbrfs, dgbsv,
-    dgbsvx, dgbtf2, dgbtrf, dgbtrs, dgebak, dgebal, dgebd2,
-    dgebrd, dgecon, dgeequ, dgees,  dgeesx, dgeev,  dgeevx,
-    dgehd2, dgehrd, dgelq2, dgelqf,
-    dgels,  dgelsd, dgelss, dgelsy, dgeql2, dgeqlf,
-    dgeqp3, dgeqr2, dgeqr2p, dgeqrf, dgeqrfp, dgerfs,
-    dgerq2, dgerqf, dgesc2, dgesdd, dgesvd, dgesvx,
-    dgetc2, dgetri,
-    dggbak, dggbal, dgges,  dggesx, dggev,  dggevx,
-    dggglm, dgghrd, dgglse, dggqrf,
-    dggrqf, dgtcon, dgtrfs, dgtsv,
-    dgtsvx, dgttrf, dgttrs, dgtts2, dhgeqz,
-    dhsein, dhseqr, dlabrd, dlacon, dlacn2,
-    dlaein, dlaexc, dlag2,  dlags2, dlagtm, dlagv2, dlahqr,
-    dlahr2, dlaic1, dlaln2, dlals0, dlalsa, dlalsd,
-    dlangb, dlange, dlangt, dlanhs, dlansb, dlansp,
-    dlansy, dlantb, dlantp, dlantr, dlanv2,
-    dlapll, dlapmt,
-    dlaqgb, dlaqge, dlaqp2, dlaqps, dlaqsb, dlaqsp, dlaqsy,
-    dlaqr0, dlaqr1, dlaqr2, dlaqr3, dlaqr4, dlaqr5,
-    dlaqtr, dlar1v, dlar2v, iladlr, iladlc,
-    dlarf,  dlarfb, dlarfg, dlarfgp, dlarft, dlarfx,
-    dlargv, dlarrv, dlartv,
-    dlarz,  dlarzb, dlarzt, dlasy2, dlasyf,
-    dlatbs, dlatdf, dlatps, dlatrd, dlatrs, dlatrz,
-    dopgtr, dopmtr, dorg2l, dorg2r,
-    dorgbr, dorghr, dorgl2, dorglq, dorgql, dorgqr, dorgr2,
-    dorgrq, dorgtr, dorm2l, dorm2r,
-    dormbr, dormhr, dorml2, dormlq, dormql, dormqr, dormr2,
-    dormr3, dormrq, dormrz, dormtr, dpbcon, dpbequ, dpbrfs,
-    dpbstf, dpbsv,  dpbsvx,
-    dpbtf2, dpbtrf, dpbtrs, dpocon, dpoequ, dporfs, dposv,
-    dposvx, dpotrs, dpstrf, dpstf2,
-    dppcon, dppequ,
-    dpprfs, dppsv,  dppsvx, dpptrf, dpptri, dpptrs, dptcon,
-    dpteqr, dptrfs, dptsv,  dptsvx, dpttrs, dptts2, drscl,
-    dsbev,  dsbevd, dsbevx, dsbgst, dsbgv,  dsbgvd, dsbgvx,
-    dsbtrd,  dspcon, dspev,  dspevd, dspevx, dspgst,
-    dspgv,  dspgvd, dspgvx, dsprfs, dspsv,  dspsvx, dsptrd,
-    dsptrf, dsptri, dsptrs, dstegr, dstein, dstev,  dstevd, dstevr,
-    dstevx,
-    dsycon, dsyev,  dsyevd, dsyevr,
-    dsyevx, dsygs2, dsygst, dsygv,  dsygvd, dsygvx, dsyrfs,
-    dsysv,  dsysvx,
-    dsytd2, dsytf2, dsytrd, dsytrf, dsytri, dsytri2, dsytri2x,
-    dsyswapr, dsytrs, dsytrs2, dsyconv,
-    dtbcon, dtbrfs, dtbtrs, dtgevc, dtgex2, dtgexc, dtgsen,
-    dtgsja, dtgsna, dtgsy2, dtgsyl, dtpcon, dtprfs, dtptri,
-    dtptrs,
-    dtrcon, dtrevc, dtrexc, dtrrfs, dtrsen, dtrsna, dtrsyl,
-    dtrtrs, dtzrzf, dstemr,
-    dsgesv, dsposv, dlag2s, slag2d, dlat2s,
-    dlansf, dpftrf, dpftri, dpftrs, dsfrk, dtfsm, dtftri, dtfttp,
-    dtfttr, dtpttf, dtpttr, dtrttf, dtrttp,
-    dgejsv,  dgesvj,  dgsvj0,  dgsvj1,
-    dgeequb, dsyequb, dpoequb, dgbequb,
-    dbbcsd, dlapmr, dorbdb, dorbdb1, dorbdb2, dorbdb3, dorbdb4,
-    dorbdb5, dorbdb6, dorcsd, dorcsd2by1,
-    dgeqrt, dgeqrt2, dgeqrt3, dgemqrt,
-    dtpqrt, dtpqrt2, dtpmqrt, dtprfb,
-);
-@lapackobjs2z = (
-    # ZLASRC  -- Double precision complex LAPACK routines
-    # already provided by @blasobjs:
-    # already provided by @lapackobjs:
-    #     zgesv, zgetrs, zgetf2, zlaswp, zlauu2, zlauum, zpotf2, zpotrf, zpotri,
-    #     ztrti2, ztrtri
-    zbdsqr, zgbbrd, zgbcon, zgbequ, zgbrfs, zgbsv,  zgbsvx,
-    zgbtf2, zgbtrf, zgbtrs, zgebak, zgebal, zgebd2, zgebrd,
-    zgecon, zgeequ, zgees,  zgeesx, zgeev,  zgeevx,
-    zgehd2, zgehrd, zgelq2, zgelqf,
-    zgels,  zgelsd, zgelss, zgelsy, zgeql2, zgeqlf, zgeqp3,
-    zgeqr2, zgeqr2p, zgeqrf, zgeqrfp, zgerfs, zgerq2, zgerqf,
-    zgesc2, zgesdd, zgesvd, zgesvx, zgetc2,
-    zgetri,
-    zggbak, zggbal, zgges,  zggesx, zggev,  zggevx, zggglm,
-    zgghrd, zgglse, zggqrf, zggrqf,
-    zgtcon, zgtrfs, zgtsv,  zgtsvx, zgttrf, zgttrs, zgtts2, zhbev,
-    zhbevd, zhbevx, zhbgst, zhbgv,  zhbgvd, zhbgvx, zhbtrd,
-    zhecon, zheev,  zheevd, zheevr, zheevx, zhegs2, zhegst,
-    zhegv,  zhegvd, zhegvx, zherfs, zhesv,  zhesvx, zhetd2,
-    zhetf2, zhetrd,
-    zhetrf, zhetri, zhetri2, zhetri2x, zheswapr,
-    zhetrs, zhetrs2, zhgeqz, zhpcon, zhpev,  zhpevd,
-    zhpevx, zhpgst, zhpgv,  zhpgvd, zhpgvx, zhprfs, zhpsv,
-    zhpsvx,
-    zhptrd, zhptrf, zhptri, zhptrs, zhsein, zhseqr, zlabrd,
-    zlacgv, zlacon, zlacn2, zlacp2, zlacpy, zlacrm, zlacrt, zladiv,
-    zlaed0, zlaed7, zlaed8,
-    zlaein, zlaesy, zlaev2, zlags2, zlagtm,
-    zlahef, zlahqr,
-    zlahr2, zlaic1, zlals0, zlalsa, zlalsd, zlangb, zlange,
-    zlangt, zlanhb,
-    zlanhe,
-    zlanhp, zlanhs, zlanht, zlansb, zlansp, zlansy, zlantb,
-    zlantp, zlantr, zlapll, zlapmt, zlaqgb, zlaqge,
-    zlaqhb, zlaqhe, zlaqhp, zlaqp2, zlaqps, zlaqsb,
-    zlaqr0, zlaqr1, zlaqr2, zlaqr3, zlaqr4, zlaqr5,
-    zlaqsp, zlaqsy, zlar1v, zlar2v, ilazlr, ilazlc,
-    zlarcm, zlarf,  zlarfb,
-    zlarfg, zlarft, zlarfgp,
-    zlarfx, zlargv, zlarnv, zlarrv, zlartg, zlartv,
-    zlarz,  zlarzb, zlarzt, zlascl, zlaset, zlasr,
-    zlassq, zlasyf,
-    zlatbs, zlatdf, zlatps, zlatrd, zlatrs, zlatrz,
-    zpbcon, zpbequ, zpbrfs, zpbstf, zpbsv,
-    zpbsvx, zpbtf2, zpbtrf, zpbtrs, zpocon, zpoequ, zporfs,
-    zposv,  zposvx, zpotrs, zpstrf, zpstf2,
-    zppcon, zppequ, zpprfs, zppsv,  zppsvx, zpptrf, zpptri, zpptrs,
-    zptcon, zpteqr, zptrfs, zptsv,  zptsvx, zpttrf, zpttrs, zptts2,
-    zrot,   zspcon, zspmv,  zspr,   zsprfs, zspsv,
-    zspsvx, zsptrf, zsptri, zsptrs, zdrscl, zstedc,
-    zstegr, zstein, zsteqr,
-    zsycon,
-    zsymv,
-    zsyr, zsyrfs, zsysv,  zsysvx, zsytf2, zsytrf, zsytri, zsytri2, zsytri2x,
-    zsyswapr, zsytrs, zsytrs2, zsyconv,
-    ztbcon, ztbrfs, ztbtrs, ztgevc, ztgex2,
-    ztgexc, ztgsen, ztgsja, ztgsna, ztgsy2, ztgsyl, ztpcon,
-    ztprfs, ztptri,
-    ztptrs, ztrcon, ztrevc, ztrexc, ztrrfs, ztrsen, ztrsna,
-    ztrsyl, ztrtrs, ztzrzf, zung2l,
-    zung2r, zungbr, zunghr, zungl2, zunglq, zungql, zungqr, zungr2,
-    zungrq, zungtr, zunm2l, zunm2r, zunmbr, zunmhr, zunml2,
-    zunmlq, zunmql, zunmqr, zunmr2, zunmr3, zunmrq, zunmrz,
-    zunmtr, zupgtr,
-    zupmtr, izmax1, dzsum1, zstemr,
-    zcgesv, zcposv, zlag2c, clag2z, zlat2c,
-    zhfrk, ztfttp, zlanhf, zpftrf, zpftri, zpftrs, ztfsm, ztftri,
-    ztfttr, ztpttf, ztpttr, ztrttf, ztrttp,
-    zgeequb, zgbequb, zsyequb, zpoequb, zheequb,
-    zbbcsd, zlapmr, zunbdb, zunbdb1, zunbdb2, zunbdb3, zunbdb4,
-    zunbdb5, zunbdb6, zuncsd, zuncsd2by1,
-    zgeqrt, zgeqrt2, zgeqrt3, zgemqrt,
-    ztpqrt, ztpqrt2, ztpmqrt, ztprfb,
-);
-    # functions added for lapack-3.6.0
-
-@lapackobjs2c = ( @lapackobjs2c,
-    cgejsv,
-    cgesvdx,
-    cgesvj,
-    cgetrf2,
-    cgges3,
-    cggev3,
-    cgghd3,
-    cggsvd3,
-    cggsvp3,
-    cgsvj0,
-    cgsvj1,
-    clagge,
-    claghe,
-    clagsy,
-    clahilb,
-    clakf2,
-    clarge,
-    clarnd,
-    claror,
-    clarot,
-    clatm1,
-    clatm2,
-    clatm3,
-    clatm5,
-    clatm6,
-    clatme,
-    clatmr,
-    clatms,
-    clatmt,
-    cpotrf2,
-    csbmv,
-    cspr2,
-    csyr2,
-    cunm22,
-);
-@lapackobjs2d = (@lapackobjs2d,
-    dbdsvdx,
-    dgesvdx,
-    dgetrf2,
-    dgges3,
-    dggev3,
-    dgghd3,
-    dggsvd3,
-    dggsvp3,
-    dladiv2,
-    dlagge,
-    dlagsy,
-    dlahilb,
-    dlakf2,
-    dlaran,
-    dlarge,
-    dlarnd,
-    dlaror,
-    dlarot,
-    dlatm1,
-    dlatm2,
-    dlatm3,
-    dlatm5,
-    dlatm6,
-    dlatm7,
-    dlatme,
-    dlatmr,
-    dlatms,
-    dlatmt,
-    dorm22,
-    dpotrf2,
-    dsecnd,
-    );
-    @lapackobjs2s = (@lapackobjs2s,
-    sbdsvdx,
-    second,
-    sgesvdx,
-    sgetrf2,
-    sgges3,
-    sggev3,
-    sgghd3,
-    sggsvd3,
-    sggsvp3,
-    sladiv2,
-    slagge,
-    slagsy,
-    slahilb,
-    slakf2,
-    slaran,
-    slarge,
-    slarnd,
-    slaror,
-    slarot,
-    slatm1,
-    slatm2,
-    slatm3,
-    slatm5,
-    slatm6,
-    slatm7,
-    slatme,
-    slatmr,
-    slatms,
-    slatmt,
-    sorm22,
-    spotrf2,
-    );
-    @lapackobjs2z = (@lapackobjs2z,
-    zgejsv,
-    zgesvdx,
-    zgesvj,
-    zgetrf2,
-    zgges3,
-    zggev3,
-    zgghd3,
-    zggsvd3,
-    zggsvp3,
-    zgsvj0,
-    zgsvj1,
-    zlagge,
-    zlaghe,
-    zlagsy,
-    zlahilb,
-    zlakf2,
-    zlarge,
-    zlarnd,
-    zlaror,
-    zlarot,
-    zlatm1,
-    zlatm2,
-    zlatm3,
-    zlatm5,
-    zlatm6,
-    zlatme,
-    zlatmr,
-    zlatms,
-    zlatmt,
-    zpotrf2,
-    zsbmv,
-    zspr2,
-    zsyr2,
-    zunm22,
-);
-    # functions added for lapack-3.7.0
-@lapackobjs2s = (@lapackobjs2s,
-    slarfy,
-    strevc3,
-    sgelqt,
-    sgelqt3,
-    sgemlqt,
-    sgetsls,
-    sgeqr,
-    slatsqr,
-    slamtsqr,
-    sgemqr,
-    sgelq,
-    slaswlq,
-    slamswlq,
-    sgemlq,
-    stplqt,
-    stplqt2,
-    stpmlqt,
-    );
-    @lapackobjs2d = (@lapackobjs2d,
-    dlarfy,
-    dsyconvf,
-    dtrevc3,
-    dgelqt,
-    dgelqt3,
-    dgemlqt,
-    dgetsls,
-    dgeqr,
-    dlatsqr,
-    dlamtsqr,
-    dgemqr,
-    dgelq,
-    dlaswlq,
-    dlamswlq,
-    dgemlq,
-    dtplqt,
-    dtplqt2,
-    dtpmlqt,
-    );
-    @lapackobjs2c = (@lapackobjs2c,
-    clarfy,
-    csyconvf,
-    ctrevc3,
-    cgelqt,
-    cgelqt3,
-    cgemlqt,
-    cgetsls,
-    cgeqr,
-    clatsqr,
-    clamtsqr,
-    cgemqr,
-    cgelq,
-    claswlq,
-    clamswlq,
-    cgemlq,
-    ctplqt,
-    ctplqt2,
-    ctpmlqt,
-    );
-    @lapackobjs2z = (@lapackobjs2z,
-    zlarfy,
-    zsyconvf,
-    ztrevc3,
-    ztplqt,
-    ztplqt2,
-    ztpmlqt,
-    zgelqt,
-    zgelqt3,
-    zgemlqt,
-    zgetsls,
-    zgeqr,
-    zlatsqr,
-    zlamtsqr,
-    zgemqr,
-    zgelq,
-    zlaswlq,
-    zlamswlq,
-    zgemlq,
-    );
-    @lapackobjs2s = (@lapackobjs2s,
-    sladiv1);
-    @lapackobjs2d = (@lapackobjs2d,
-    dladiv1);
-    @lapackobjs = (@lapackobjs,
-    iparam2stage,
-    # functions added for lapack-3.8.0
-    ilaenv2stage,
-    );
-    # functions added for lapack-3.9.0
-@lapackobjs2c = (@lapackobjs2c,
-    cgesvdq,
+misc_common_objs="
+    openblas_get_parallel
+    openblas_get_num_procs
+    openblas_set_num_threads
+    openblas_get_num_threads
+"
+
+misc_no_underscore_objs="
+    goto_set_num_threads
+    openblas_get_config
+    openblas_get_corename
+"
+
+misc_underscore_objs=""
+
+# These routines are provided by OpenBLAS.
+lapackobjss="
+    sgesv
+    sgetf2
+    sgetrf
+    slaswp
+    sgetrs
+    slauu2
+    slauum
+    spotf2
+    spotrf
+    strti2
+    strtri
+    spotri
+"
+
+lapackobjsd="
+ dgesv
+ dgetf2
+ dgetrf
+ dlaswp
+ dgetrs
+ dlauu2
+ dlauum
+ dpotf2
+ dpotrf
+ dtrti2
+ dtrtri
+ dpotri
+"
+
+lapackobjsc="
+cgesv
+cgetf2
+cgetrf
+claswp
+cgetrs
+clauu2
+clauum
+cpotf2
+cpotrf
+ctrti2
+ctrtri
+cpotri
+"
+
+lapackobjsz="
+zgesv
+zgetf2
+zgetrf
+zlaswp
+zgetrs
+zlauu2
+zlauum
+zpotf2
+zpotrf
+ztrti2
+ztrtri
+zpotri
+"
+
+
+# These routines are provided by LAPACK (reference implementation).
+#
+# This list is prepared by copying all routines listed in
+# `lapack-3.4.1/SRC/Makefile` and replacing the '.o' suffix with a comma.
+# Thereafter the following routines should be removed:
+# - those provided by OpenBLAS (see @lapackobjs)
+# - extra precision routines (see @lapack_extendedprecision_objs)
+# Each of these have been marked individually with "already provided" or "excluded".
+
+# ALLAUX  -- Auxiliary routines called from all precisions
+# already provided by b"asobjs: xerbla lsame
+lapackobjs2="
+    ilaenv ieeeck lsamen  iparmq
+    ilaprec ilatrans ilauplo iladiag
+    ilaver slamch slamc3
+"
+
+# SCLAUX  -- Auxiliary routines called from both REAL and COMPLEX.
+# excluded: second_$(TIMER)
+lapackobjs2sc="
+    sbdsdc
+    sbdsqr sdisna slabad slacpy sladiv slae2  slaebz
+    slaed0 slaed1 slaed2 slaed3 slaed4 slaed5 slaed6
+    slaed7 slaed8 slaed9 slaeda slaev2 slagtf
+    slagts slamrg slanst
+    slapy2 slapy3 slarnv
+    slarra slarrb slarrc slarrd slarre slarrf slarrj
+    slarrk slarrr slaneg
+    slartg slaruv slas2  slascl
+    slasd0 slasd1 slasd2 slasd3 slasd4 slasd5 slasd6
+    slasd7 slasd8 slasda slasdq slasdt
+    slaset slasq1 slasq2 slasq3 slasq4 slasq5 slasq6
+    slasr  slasrt slassq slasv2 spttrf sstebz sstedc
+    ssteqr ssterf slaisnan sisnan
+    slartgp slartgs
+"
+
+# DZLAUX  -- Auxiliary routines called from both DOUBLE and COMPLEX*16.
+# excluded: dsecnd_$(TIMER)
+lapackobjs2dz="
+    dbdsdc
+    dbdsqr ddisna dlabad dlacpy dladiv dlae2  dlaebz
+    dlaed0 dlaed1 dlaed2 dlaed3 dlaed4 dlaed5 dlaed6
+    dlaed7 dlaed8 dlaed9 dlaeda dlaev2 dlagtf
+    dlagts dlamrg dlanst
+    dlapy2 dlapy3 dlarnv
+    dlarra dlarrb dlarrc dlarrd dlarre dlarrf dlarrj
+    dlarrk dlarrr dlaneg
+    dlartg dlaruv dlas2  dlascl
+    dlasd0 dlasd1 dlasd2 dlasd3 dlasd4 dlasd5 dlasd6
+    dlasd7 dlasd8 dlasda dlasdq dlasdt
+    dlaset dlasq1 dlasq2 dlasq3 dlasq4 dlasq5 dlasq6
+    dlasr  dlasrt dlassq dlasv2 dpttrf dstebz dstedc
+    dsteqr dsterf dlaisnan disnan
+    dlartgp dlartgs
+    dlamch dlamc3
+"
+
+# SLASRC  -- Single precision real LAPACK routines
+# already provided by l"packobjs:
+#     sgesv sgetf2 slaswp slauu2 slauum spotf2 spotri strti2 strtri
+lapackobjs2s="
+    sgbbrd sgbcon sgbequ sgbrfs sgbsv
+    sgbsvx sgbtf2 sgbtrf sgbtrs sgebak sgebal sgebd2
+    sgebrd sgecon sgeequ sgees  sgeesx sgeev  sgeevx
+    sgehd2 sgehrd sgelq2 sgelqf
+    sgels  sgelsd sgelss sgelsy sgeql2 sgeqlf
+    sgeqp3 sgeqr2 sgeqr2p sgeqrf sgeqrfp sgerfs
+    sgerq2 sgerqf sgesc2 sgesdd sgesvd sgesvx
+    sgetc2 sgetri
+    sggbak sggbal sgges  sggesx sggev  sggevx
+    sggglm sgghrd sgglse sggqrf
+    sggrqf sgtcon sgtrfs sgtsv
+    sgtsvx sgttrf sgttrs sgtts2 shgeqz
+    shsein shseqr slabrd slacon slacn2
+    slaein slaexc slag2  slags2 slagtm slagv2 slahqr
+    slahr2 slaic1 slaln2 slals0 slalsa slalsd
+    slangb slange slangt slanhs slansb slansp
+    slansy slantb slantp slantr slanv2
+    slapll slapmt
+    slaqgb slaqge slaqp2 slaqps slaqsb slaqsp slaqsy
+    slaqr0 slaqr1 slaqr2 slaqr3 slaqr4 slaqr5
+    slaqtr slar1v slar2v ilaslr ilaslc
+    slarf  slarfb slarfg slarfgp slarft slarfx slargv
+    slarrv slartv
+    slarz  slarzb slarzt slasy2 slasyf
+    slatbs slatdf slatps slatrd slatrs slatrz
+    sopgtr sopmtr sorg2l sorg2r
+    sorgbr sorghr sorgl2 sorglq sorgql sorgqr sorgr2
+    sorgrq sorgtr sorm2l sorm2r
+    sormbr sormhr sorml2 sormlq sormql sormqr sormr2
+    sormr3 sormrq sormrz sormtr spbcon spbequ spbrfs
+    spbstf spbsv  spbsvx
+    spbtf2 spbtrf spbtrs spocon spoequ sporfs sposv
+    sposvx spstrf spstf2
+    sppcon sppequ
+    spprfs sppsv  sppsvx spptrf spptri spptrs sptcon
+    spteqr sptrfs sptsv  sptsvx spttrs sptts2 srscl
+    ssbev  ssbevd ssbevx ssbgst ssbgv  ssbgvd ssbgvx
+    ssbtrd sspcon sspev  sspevd sspevx sspgst
+    sspgv  sspgvd sspgvx ssprfs sspsv  sspsvx ssptrd
+    ssptrf ssptri ssptrs sstegr sstein sstev  sstevd sstevr
+    sstevx
+    ssycon ssyev  ssyevd ssyevr ssyevx ssygs2
+    ssygst ssygv  ssygvd ssygvx ssyrfs ssysv  ssysvx
+    ssytd2 ssytf2 ssytrd ssytrf ssytri ssytri2 ssytri2x
+    ssyswapr ssytrs ssytrs2 ssyconv
+    stbcon
+    stbrfs stbtrs stgevc stgex2 stgexc stgsen
+    stgsja stgsna stgsy2 stgsyl stpcon stprfs stptri
+    stptrs
+    strcon strevc strexc strrfs strsen strsna strsyl
+    strtrs stzrzf sstemr
+    slansf spftrf spftri spftrs ssfrk stfsm stftri stfttp
+    stfttr stpttf stpttr strttf strttp
+    sgejsv  sgesvj  sgsvj0  sgsvj1
+    sgeequb ssyequb spoequb sgbequb
+    sbbcsd slapmr sorbdb sorbdb1 sorbdb2 sorbdb3 sorbdb4
+    sorbdb5 sorbdb6 sorcsd sorcsd2by1
+    sgeqrt sgeqrt2 sgeqrt3 sgemqrt
+    stpqrt stpqrt2 stpmqrt stprfb
+"
+
+# DSLASRC -- Double-single mixed precision real routines called from
+# single, single-extra and double precision real LAPACK
+# routines (i.e. from SLASRC, SXLASRC, DLASRC).
+#
+# already provided by @lapackobjs:
+#     sgetrs, spotrf, sgetrf
+lapackobjs2ds="
+    spotrs
+"
+
+# CLASRC  -- Single precision complex LAPACK routines
+# already provided by @blasobjs:
+# already provided by @lapackobjs:
+#     cgesv, cgetf2, claswp, clauu2, clauum, cpotf2, cpotri, ctrti2, ctrtri
+lapackobjs2c="
+    cbdsqr cgbbrd cgbcon cgbequ cgbrfs cgbsv  cgbsvx
+    cgbtf2 cgbtrf cgbtrs cgebak cgebal cgebd2 cgebrd
+    cgecon cgeequ cgees  cgeesx cgeev  cgeevx
+    cgehd2 cgehrd cgelq2 cgelqf
+    cgels  cgelsd cgelss cgelsy cgeql2 cgeqlf cgeqp3
+    cgeqr2 cgeqr2p cgeqrf cgeqrfp cgerfs
+    cgerq2 cgerqf cgesc2 cgesdd cgesvd
+    cgesvx cgetc2 cgetri
+    cggbak cggbal cgges  cggesx cggev  cggevx cggglm
+    cgghrd cgglse cggqrf cggrqf
+    cgtcon cgtrfs cgtsv  cgtsvx cgttrf cgttrs cgtts2 chbev
+    chbevd chbevx chbgst chbgv  chbgvd chbgvx chbtrd
+    checon cheev  cheevd cheevr cheevx chegs2 chegst
+    chegv  chegvd chegvx cherfs chesv  chesvx chetd2
+    chetf2 chetrd
+    chetrf chetri chetri2 chetri2x cheswapr
+    chetrs chetrs2 chgeqz chpcon chpev  chpevd
+    chpevx chpgst chpgv  chpgvd chpgvx chprfs chpsv
+    chpsvx
+    chptrd chptrf chptri chptrs chsein chseqr clabrd
+    clacgv clacon clacn2 clacp2 clacpy clacrm clacrt cladiv
+    claed0 claed7 claed8
+    claein claesy claev2 clags2 clagtm
+    clahef clahqr
+    clahr2 claic1 clals0 clalsa clalsd clangb clange clangt
+    clanhb clanhe
+    clanhp clanhs clanht clansb clansp clansy clantb
+    clantp clantr clapll clapmt clarcm claqgb claqge
+    claqhb claqhe claqhp claqp2 claqps claqsb
+    claqr0 claqr1 claqr2 claqr3 claqr4 claqr5
+    claqsp claqsy clar1v clar2v ilaclr ilaclc
+    clarf  clarfb clarfg clarft clarfgp
+    clarfx clargv clarnv clarrv clartg clartv
+    clarz  clarzb clarzt clascl claset clasr  classq
+    clasyf clatbs clatdf clatps clatrd clatrs clatrz
+    cpbcon cpbequ cpbrfs cpbstf cpbsv
+    cpbsvx cpbtf2 cpbtrf cpbtrs cpocon cpoequ cporfs
+    cposv  cposvx cpstrf cpstf2
+    cppcon cppequ cpprfs cppsv  cppsvx cpptrf cpptri cpptrs
+    cptcon cpteqr cptrfs cptsv  cptsvx cpttrf cpttrs cptts2
+    crot   cspcon cspmv  cspr   csprfs cspsv
+    cspsvx csptrf csptri csptrs csrscl cstedc
+    cstegr cstein csteqr
+    csycon
+    csymv
+    csyr csyrfs csysv  csysvx csytf2 csytrf csytri csytri2 csytri2x
+    csyswapr csytrs csytrs2 csyconv
+    ctbcon ctbrfs ctbtrs ctgevc ctgex2
+    ctgexc ctgsen ctgsja ctgsna ctgsy2 ctgsyl ctpcon
+    ctprfs ctptri
+    ctptrs ctrcon ctrevc ctrexc ctrrfs ctrsen ctrsna
+    ctrsyl ctrtrs ctzrzf cung2l cung2r
+    cungbr cunghr cungl2 cunglq cungql cungqr cungr2
+    cungrq cungtr cunm2l cunm2r cunmbr cunmhr cunml2
+    cunmlq cunmql cunmqr cunmr2 cunmr3 cunmrq cunmrz
+    cunmtr cupgtr cupmtr icmax1 scsum1 cstemr
+    chfrk ctfttp clanhf cpftrf cpftri cpftrs ctfsm ctftri
+    ctfttr ctpttf ctpttr ctrttf ctrttp
+    cgeequb cgbequb csyequb cpoequb cheequb
+    cbbcsd clapmr cunbdb cunbdb1 cunbdb2 cunbdb3 cunbdb4
+    cunbdb5 cunbdb6 cuncsd cuncsd2by1
+    cgeqrt cgeqrt2 cgeqrt3 cgemqrt
+    ctpqrt ctpqrt2 ctpmqrt ctprfb
+"
+
+# ZCLASRC -- Double-single mixed precision complex routines called from
+# single, single-extra and double precision complex LAPACK
+# routines (i.e. from CLASRC, CXLASRC, ZLASRC).
+#
+# already provided by @lapackobjs:
+#     cgetrs, cpotrf, cgetrf
+lapackobjs2zc="
+    cpotrs
+"
+
+# DLASRC  -- Double precision real LAPACK routines
+# already provided by @lapackobjs:
+#     dgesv, dgetf2, dgetrs, dlaswp, dlauu2, dlauum, dpotf2, dpotrf, dpotri,
+#     dtrti2, dtrtri
+lapackobjs2d="
+    dgbbrd dgbcon dgbequ dgbrfs dgbsv
+    dgbsvx dgbtf2 dgbtrf dgbtrs dgebak dgebal dgebd2
+    dgebrd dgecon dgeequ dgees  dgeesx dgeev  dgeevx
+    dgehd2 dgehrd dgelq2 dgelqf
+    dgels  dgelsd dgelss dgelsy dgeql2 dgeqlf
+    dgeqp3 dgeqr2 dgeqr2p dgeqrf dgeqrfp dgerfs
+    dgerq2 dgerqf dgesc2 dgesdd dgesvd dgesvx
+    dgetc2 dgetri
+    dggbak dggbal dgges  dggesx dggev  dggevx
+    dggglm dgghrd dgglse dggqrf
+    dggrqf dgtcon dgtrfs dgtsv
+    dgtsvx dgttrf dgttrs dgtts2 dhgeqz
+    dhsein dhseqr dlabrd dlacon dlacn2
+    dlaein dlaexc dlag2  dlags2 dlagtm dlagv2 dlahqr
+    dlahr2 dlaic1 dlaln2 dlals0 dlalsa dlalsd
+    dlangb dlange dlangt dlanhs dlansb dlansp
+    dlansy dlantb dlantp dlantr dlanv2
+    dlapll dlapmt
+    dlaqgb dlaqge dlaqp2 dlaqps dlaqsb dlaqsp dlaqsy
+    dlaqr0 dlaqr1 dlaqr2 dlaqr3 dlaqr4 dlaqr5
+    dlaqtr dlar1v dlar2v iladlr iladlc
+    dlarf  dlarfb dlarfg dlarfgp dlarft dlarfx
+    dlargv dlarrv dlartv
+    dlarz  dlarzb dlarzt dlasy2 dlasyf
+    dlatbs dlatdf dlatps dlatrd dlatrs dlatrz
+    dopgtr dopmtr dorg2l dorg2r
+    dorgbr dorghr dorgl2 dorglq dorgql dorgqr dorgr2
+    dorgrq dorgtr dorm2l dorm2r
+    dormbr dormhr dorml2 dormlq dormql dormqr dormr2
+    dormr3 dormrq dormrz dormtr dpbcon dpbequ dpbrfs
+    dpbstf dpbsv  dpbsvx
+    dpbtf2 dpbtrf dpbtrs dpocon dpoequ dporfs dposv
+    dposvx dpotrs dpstrf dpstf2
+    dppcon dppequ
+    dpprfs dppsv  dppsvx dpptrf dpptri dpptrs dptcon
+    dpteqr dptrfs dptsv  dptsvx dpttrs dptts2 drscl
+    dsbev  dsbevd dsbevx dsbgst dsbgv  dsbgvd dsbgvx
+    dsbtrd  dspcon dspev  dspevd dspevx dspgst
+    dspgv  dspgvd dspgvx dsprfs dspsv  dspsvx dsptrd
+    dsptrf dsptri dsptrs dstegr dstein dstev  dstevd dstevr
+    dstevx
+    dsycon dsyev  dsyevd dsyevr
+    dsyevx dsygs2 dsygst dsygv  dsygvd dsygvx dsyrfs
+    dsysv  dsysvx
+    dsytd2 dsytf2 dsytrd dsytrf dsytri dsytri2 dsytri2x
+    dsyswapr dsytrs dsytrs2 dsyconv
+    dtbcon dtbrfs dtbtrs dtgevc dtgex2 dtgexc dtgsen
+    dtgsja dtgsna dtgsy2 dtgsyl dtpcon dtprfs dtptri
+    dtptrs
+    dtrcon dtrevc dtrexc dtrrfs dtrsen dtrsna dtrsyl
+    dtrtrs dtzrzf dstemr
+    dsgesv dsposv dlag2s slag2d dlat2s
+    dlansf dpftrf dpftri dpftrs dsfrk dtfsm dtftri dtfttp
+    dtfttr dtpttf dtpttr dtrttf dtrttp
+    dgejsv  dgesvj  dgsvj0  dgsvj1
+    dgeequb dsyequb dpoequb dgbequb
+    dbbcsd dlapmr dorbdb dorbdb1 dorbdb2 dorbdb3 dorbdb4
+    dorbdb5 dorbdb6 dorcsd dorcsd2by1
+    dgeqrt dgeqrt2 dgeqrt3 dgemqrt
+    dtpqrt dtpqrt2 dtpmqrt dtprfb
+"
+
+# ZLASRC  -- Double precision complex LAPACK routines
+# already provided by b"asobjs:
+# already provided by @lapackobjs:
+#     zgesv zgetrs zgetf2 zlaswp zlauu2 zlauum zpotf2 zpotrf zpotri
+#     ztrti2 ztrtri
+lapackobjs2z="
+    zbdsqr zgbbrd zgbcon zgbequ zgbrfs zgbsv  zgbsvx
+    zgbtf2 zgbtrf zgbtrs zgebak zgebal zgebd2 zgebrd
+    zgecon zgeequ zgees  zgeesx zgeev  zgeevx
+    zgehd2 zgehrd zgelq2 zgelqf
+    zgels  zgelsd zgelss zgelsy zgeql2 zgeqlf zgeqp3
+    zgeqr2 zgeqr2p zgeqrf zgeqrfp zgerfs zgerq2 zgerqf
+    zgesc2 zgesdd zgesvd zgesvx zgetc2
+    zgetri
+    zggbak zggbal zgges  zggesx zggev  zggevx zggglm
+    zgghrd zgglse zggqrf zggrqf
+    zgtcon zgtrfs zgtsv  zgtsvx zgttrf zgttrs zgtts2 zhbev
+    zhbevd zhbevx zhbgst zhbgv  zhbgvd zhbgvx zhbtrd
+    zhecon zheev  zheevd zheevr zheevx zhegs2 zhegst
+    zhegv  zhegvd zhegvx zherfs zhesv  zhesvx zhetd2
+    zhetf2 zhetrd
+    zhetrf zhetri zhetri2 zhetri2x zheswapr
+    zhetrs zhetrs2 zhgeqz zhpcon zhpev  zhpevd
+    zhpevx zhpgst zhpgv  zhpgvd zhpgvx zhprfs zhpsv
+    zhpsvx
+    zhptrd zhptrf zhptri zhptrs zhsein zhseqr zlabrd
+    zlacgv zlacon zlacn2 zlacp2 zlacpy zlacrm zlacrt zladiv
+    zlaed0 zlaed7 zlaed8
+    zlaein zlaesy zlaev2 zlags2 zlagtm
+    zlahef zlahqr
+    zlahr2 zlaic1 zlals0 zlalsa zlalsd zlangb zlange
+    zlangt zlanhb
+    zlanhe
+    zlanhp zlanhs zlanht zlansb zlansp zlansy zlantb
+    zlantp zlantr zlapll zlapmt zlaqgb zlaqge
+    zlaqhb zlaqhe zlaqhp zlaqp2 zlaqps zlaqsb
+    zlaqr0 zlaqr1 zlaqr2 zlaqr3 zlaqr4 zlaqr5
+    zlaqsp zlaqsy zlar1v zlar2v ilazlr ilazlc
+    zlarcm zlarf  zlarfb
+    zlarfg zlarft zlarfgp
+    zlarfx zlargv zlarnv zlarrv zlartg zlartv
+    zlarz  zlarzb zlarzt zlascl zlaset zlasr
+    zlassq zlasyf
+    zlatbs zlatdf zlatps zlatrd zlatrs zlatrz
+    zpbcon zpbequ zpbrfs zpbstf zpbsv
+    zpbsvx zpbtf2 zpbtrf zpbtrs zpocon zpoequ zporfs
+    zposv  zposvx zpotrs zpstrf zpstf2
+    zppcon zppequ zpprfs zppsv  zppsvx zpptrf zpptri zpptrs
+    zptcon zpteqr zptrfs zptsv  zptsvx zpttrf zpttrs zptts2
+    zrot   zspcon zspmv  zspr   zsprfs zspsv
+    zspsvx zsptrf zsptri zsptrs zdrscl zstedc
+    zstegr zstein zsteqr
+    zsycon
+    zsymv
+    zsyr zsyrfs zsysv  zsysvx zsytf2 zsytrf zsytri zsytri2 zsytri2x
+    zsyswapr zsytrs zsytrs2 zsyconv
+    ztbcon ztbrfs ztbtrs ztgevc ztgex2
+    ztgexc ztgsen ztgsja ztgsna ztgsy2 ztgsyl ztpcon
+    ztprfs ztptri
+    ztptrs ztrcon ztrevc ztrexc ztrrfs ztrsen ztrsna
+    ztrsyl ztrtrs ztzrzf zung2l
+    zung2r zungbr zunghr zungl2 zunglq zungql zungqr zungr2
+    zungrq zungtr zunm2l zunm2r zunmbr zunmhr zunml2
+    zunmlq zunmql zunmqr zunmr2 zunmr3 zunmrq zunmrz
+    zunmtr zupgtr
+    zupmtr izmax1 dzsum1 zstemr
+    zcgesv zcposv zlag2c clag2z zlat2c
+    zhfrk ztfttp zlanhf zpftrf zpftri zpftrs ztfsm ztftri
+    ztfttr ztpttf ztpttr ztrttf ztrttp
+    zgeequb zgbequb zsyequb zpoequb zheequb
+    zbbcsd zlapmr zunbdb zunbdb1 zunbdb2 zunbdb3 zunbdb4
+    zunbdb5 zunbdb6 zuncsd zuncsd2by1
+    zgeqrt zgeqrt2 zgeqrt3 zgemqrt
+    ztpqrt ztpqrt2 ztpmqrt ztprfb
+"
+
+# functions added for lapack-3.6.0
+
+lapackobjs2c="$lapackobjs2c
+    cgejsv
+    cgesvdx
+    cgesvj
+    cgetrf2
+    cgges3
+    cggev3
+    cgghd3
+    cggsvd3
+    cggsvp3
+    cgsvj0
+    cgsvj1
+    clagge
+    claghe
+    clagsy
+    clahilb
+    clakf2
+    clarge
+    clarnd
+    claror
+    clarot
+    clatm1
+    clatm2
+    clatm3
+    clatm5
+    clatm6
+    clatme
+    clatmr
+    clatms
+    clatmt
+    cpotrf2
+    csbmv
+    cspr2
+    csyr2
+    cunm22
+"
+
+lapackobjs2d="$lapackobjs2d
+    dbdsvdx
+    dgesvdx
+    dgetrf2
+    dgges3
+    dggev3
+    dgghd3
+    dggsvd3
+    dggsvp3
+    dladiv2
+    dlagge
+    dlagsy
+    dlahilb
+    dlakf2
+    dlaran
+    dlarge
+    dlarnd
+    dlaror
+    dlarot
+    dlatm1
+    dlatm2
+    dlatm3
+    dlatm5
+    dlatm6
+    dlatm7
+    dlatme
+    dlatmr
+    dlatms
+    dlatmt
+    dorm22
+    dpotrf2
+    dsecnd
+"
+
+lapackobjs2s="$lapackobjs2s
+    sbdsvdx
+    second
+    sgesvdx
+    sgetrf2
+    sgges3
+    sggev3
+    sgghd3
+    sggsvd3
+    sggsvp3
+    sladiv2
+    slagge
+    slagsy
+    slahilb
+    slakf2
+    slaran
+    slarge
+    slarnd
+    slaror
+    slarot
+    slatm1
+    slatm2
+    slatm3
+    slatm5
+    slatm6
+    slatm7
+    slatme
+    slatmr
+    slatms
+    slatmt
+    sorm22
+    spotrf2
+"
+
+lapackobjs2z="$lapackobjs2z
+    zgejsv
+    zgesvdx
+    zgesvj
+    zgetrf2
+    zgges3
+    zggev3
+    zgghd3
+    zggsvd3
+    zggsvp3
+    zgsvj0
+    zgsvj1
+    zlagge
+    zlaghe
+    zlagsy
+    zlahilb
+    zlakf2
+    zlarge
+    zlarnd
+    zlaror
+    zlarot
+    zlatm1
+    zlatm2
+    zlatm3
+    zlatm5
+    zlatm6
+    zlatme
+    zlatmr
+    zlatms
+    zlatmt
+    zpotrf2
+    zsbmv
+    zspr2
+    zsyr2
+    zunm22
+"
+
+# functions added for lapack-3.7.0
+lapackobjs2s="$lapackobjs2s
+    slarfy
+    strevc3
+    sgelqt
+    sgelqt3
+    sgemlqt
+    sgetsls
+    sgeqr
+    slatsqr
+    slamtsqr
+    sgemqr
+    sgelq
+    slaswlq
+    slamswlq
+    sgemlq
+    stplqt
+    stplqt2
+    stpmlqt
+"
+
+lapackobjs2d="$lapackobjs2d
+    dlarfy
+    dsyconvf
+    dtrevc3
+    dgelqt
+    dgelqt3
+    dgemlqt
+    dgetsls
+    dgeqr
+    dlatsqr
+    dlamtsqr
+    dgemqr
+    dgelq
+    dlaswlq
+    dlamswlq
+    dgemlq
+    dtplqt
+    dtplqt2
+    dtpmlqt
+    "
+lapackobjs2c="$lapackobjs2c
+    clarfy
+    csyconvf
+    ctrevc3
+    cgelqt
+    cgelqt3
+    cgemlqt
+    cgetsls
+    cgeqr
+    clatsqr
+    clamtsqr
+    cgemqr
+    cgelq
+    claswlq
+    clamswlq
+    cgemlq
+    ctplqt
+    ctplqt2
+    ctpmlqt
+"
+lapackobjs2z="$lapackobjs2z
+    zlarfy
+    zsyconvf
+    ztrevc3
+    ztplqt
+    ztplqt2
+    ztpmlqt
+    zgelqt
+    zgelqt3
+    zgemlqt
+    zgetsls
+    zgeqr
+    zlatsqr
+    zlamtsqr
+    zgemqr
+    zgelq
+    zlaswlq
+    zlamswlq
+    zgemlq
+"
+
+lapackobjs2s="$lapackobjs2s
+sladiv1"
+
+lapackobjs2d="$lapackobjs2d
+dladiv1"
+
+lapackobjs="$lapackobjs
+iparam2stage
+ilaenv2stage
+"
+
+# functions added for lapack-3.9.0
+lapackobjs2c="$lapackobjs2c
+    cgesvdq
     cungtsqr
-    );
-@lapackobjs2d = (@lapackobjs2d,
-    dcombssq,
-    dgesvdq,
-    dorgtsqr,
-    );
-@lapackobjs2s = (@lapackobjs2s,
-    scombssq,
-    sgesvdq,
-    sorgtsqr,
-    );
-@lapackobjs2z = (@lapackobjs2z,
-    zgesvdq,
+    "
+lapackobjs2d="$lapackobjs2d
+    dcombssq
+    dgesvdq
+    dorgtsqr
+    "
+lapackobjs2s="$lapackobjs2s
+    scombssq
+    sgesvdq
+    sorgtsqr
+    "
+lapackobjs2z="$lapackobjs2z
+    zgesvdq
     zungtsqr
-);
-
-@lapack_extendedprecision_objs = (
-    zposvxx, clagge, clatms, chesvxx, cposvxx, cgesvxx, ssyrfssx, csyrfsx,
-    dlagsy, dsysvxx, sporfsx, slatms, zlatms, zherfsx, csysvxx,
-);
-
-@lapack_deprecated_objsc = (
-    cgegs,   cggsvd,  
-    cgegv,   cggsvp,  
-    cgelsx,  clahrd,  
-    cgeqpf,  clatzm,  
-    ctzrqf,
-    );
-@lapack_deprecated_objsd = (
-    dgegs,   dgeqpf,
-    dgegv,   dggsvd,
-    dgelsx,  dggsvp,
-             dlahrd,
-  dlatzm,  dtzrqf);
-  
-@lapack_deprecated_objss = ( 
-  sgelsx,
-  sgegs,
-  sgegv,
-  sgeqpf,
-  sggsvd,
-  sggsvp,
-  slahrd,
-  slatzm,
+"
+
+lapack_extendedprecision_objs="
+    zposvxx clagge clatms chesvxx cposvxx cgesvxx ssyrfssx csyrfsx
+    dlagsy dsysvxx sporfsx slatms zlatms zherfsx csysvxx
+"
+
+lapack_deprecated_objsc="
+    cgegs   cggsvd
+    cgegv   cggsvp
+    cgelsx  clahrd
+    cgeqpf  clatzm
+    ctzrqf
+    "
+
+lapack_deprecated_objsd="
+    dgegs   dgeqpf
+    dgegv   dggsvd
+    dgelsx  dggsvp
+             dlahrd
+  dlatzm  dtzrqf"
+
+lapack_deprecated_objss="
+  sgelsx
+  sgegs
+  sgegv
+  sgeqpf
+  sggsvd
+  sggsvp
+  slahrd
+  slatzm
   stzrqf
-  );
-
-@lapack_deprecated_objsz = ( 
-  zgegs,
-  zgegv,
-  zgelsx,
-  zgeqpf,
-  zggsvd,
-  zggsvp,
-  zlahrd,
-  zlatzm,
+  "
+
+lapack_deprecated_objsz="
+  zgegs
+  zgegv
+  zgelsx
+  zgeqpf
+  zggsvd
+  zggsvp
+  zlahrd
+  zlatzm
   ztzrqf
-  );
-
-@lapacke_deprecated_objsc = (
-    LAPACKE_cggsvp,
-    LAPACKE_cggsvp_work,
-    LAPACKE_cggsvd,
-    LAPACKE_cggsvd_work,
-    LAPACKE_cgeqpf,
-    LAPACKE_cgeqpf_work,
-);  
-@lapacke_deprecated_objsd = (    
-    LAPACKE_dggsvp,
-    LAPACKE_dggsvp_work,
-    LAPACKE_dggsvd,
-    LAPACKE_dggsvd_work,
-    LAPACKE_dgeqpf,
-    LAPACKE_dgeqpf_work,
-);    
-@lapacke_deprecated_objss = (    
-    LAPACKE_sggsvp,
-    LAPACKE_sggsvp_work,
-    LAPACKE_sggsvd,
-    LAPACKE_sggsvd_work,
-    LAPACKE_sgeqpf,
-    LAPACKE_sgeqpf_work,
-);    
-@lapacke_deprecated_objsz = (    
-    LAPACKE_zggsvp,
-    LAPACKE_zggsvp_work,
-    LAPACKE_zggsvd,
-    LAPACKE_zggsvd_work,
-    LAPACKE_zgeqpf,
-    LAPACKE_zgeqpf_work,
-);
-
-
-@lapackeobjs = (
-    # LAPACK C interface routines.
-    #
-    # This list is prepared in a similar manner to @lapackobjs2, however the
-    # functions all begin with an uppercase prefix (with the exception of the
-    # make_complex_* routines).
-    #
-    # The functions corresponding to @(MATGEN_OBJ) and @(SRCX_OBJ) are not
-    # exported since the respective LAPACK routines are not built by default.
-
-    # @(OBJ) from `lapack-3.4.1/lapacke/utils/Makefile`
-    LAPACKE_lsame,
-    LAPACKE_ilaver,
-    LAPACKE_xerbla,
-    lapack_make_complex_float,
-    lapack_make_complex_double,
-    LAPACKE_get_nancheck,
-    LAPACKE_set_nancheck,
-);
-@lapackeobjsc = (
-    LAPACKE_cgb_nancheck,
-    LAPACKE_cgb_trans,
-    LAPACKE_cge_nancheck,
-    LAPACKE_cge_trans,
-    LAPACKE_cgg_nancheck,
-    LAPACKE_cgg_trans,
-    LAPACKE_cgt_nancheck,
-    LAPACKE_chb_nancheck,
-    LAPACKE_chb_trans,
-    LAPACKE_che_nancheck,
-    LAPACKE_che_trans,
-    LAPACKE_chp_nancheck,
-    LAPACKE_chp_trans,
-    LAPACKE_chs_nancheck,
-    LAPACKE_chs_trans,
-    LAPACKE_c_nancheck,
-    LAPACKE_cpb_nancheck,
-    LAPACKE_cpb_trans,
-    LAPACKE_cpf_nancheck,
-    LAPACKE_cpf_trans,
-    LAPACKE_cpo_nancheck,
-    LAPACKE_cpo_trans,
-    LAPACKE_cpp_nancheck,
-    LAPACKE_cpp_trans,
-    LAPACKE_cpt_nancheck,
-    LAPACKE_csp_nancheck,
-    LAPACKE_csp_trans,
-    LAPACKE_cst_nancheck,
-    LAPACKE_csy_nancheck,
-    LAPACKE_csy_trans,
-    LAPACKE_ctb_nancheck,
-    LAPACKE_ctb_trans,
-    LAPACKE_ctf_nancheck,
-    LAPACKE_ctf_trans,
-    LAPACKE_ctp_nancheck,
-    LAPACKE_ctp_trans,
-    LAPACKE_ctr_nancheck,
-    LAPACKE_ctr_trans,
-    LAPACKE_cbbcsd,
-    LAPACKE_cbbcsd_work,
-    LAPACKE_cbdsqr,
-    LAPACKE_cbdsqr_work,
-    LAPACKE_cgbbrd,
-    LAPACKE_cgbbrd_work,
-    LAPACKE_cgbcon,
-    LAPACKE_cgbcon_work,
-    LAPACKE_cgbequ,
-    LAPACKE_cgbequ_work,
-    LAPACKE_cgbequb,
-    LAPACKE_cgbequb_work,
-    LAPACKE_cgbrfs,
-    LAPACKE_cgbrfs_work,
-    LAPACKE_cgbsv,
-    LAPACKE_cgbsv_work,
-    LAPACKE_cgbsvx,
-    LAPACKE_cgbsvx_work,
-    LAPACKE_cgbtrf,
-    LAPACKE_cgbtrf_work,
-    LAPACKE_cgbtrs,
-    LAPACKE_cgbtrs_work,
-    LAPACKE_cgebak,
-    LAPACKE_cgebak_work,
-    LAPACKE_cgebal,
-    LAPACKE_cgebal_work,
-    LAPACKE_cgebrd,
-    LAPACKE_cgebrd_work,
-    LAPACKE_cgecon,
-    LAPACKE_cgecon_work,
-    LAPACKE_cgeequ,
-    LAPACKE_cgeequ_work,
-    LAPACKE_cgeequb,
-    LAPACKE_cgeequb_work,
-    LAPACKE_cgees,
-    LAPACKE_cgees_work,
-    LAPACKE_cgeesx,
-    LAPACKE_cgeesx_work,
-    LAPACKE_cgeev,
-    LAPACKE_cgeev_work,
-    LAPACKE_cgeevx,
-    LAPACKE_cgeevx_work,
-    LAPACKE_cgehrd,
-    LAPACKE_cgehrd_work,
-    LAPACKE_cgelq2,
-    LAPACKE_cgelq2_work,
-    LAPACKE_cgelqf,
-    LAPACKE_cgelqf_work,
-    LAPACKE_cgels,
-    LAPACKE_cgels_work,
-    LAPACKE_cgelsd,
-    LAPACKE_cgelsd_work,
-    LAPACKE_cgelss,
-    LAPACKE_cgelss_work,
-    LAPACKE_cgelsy,
-    LAPACKE_cgelsy_work,
-    LAPACKE_cgemqrt,
-    LAPACKE_cgemqrt_work,
-    LAPACKE_cgeqlf,
-    LAPACKE_cgeqlf_work,
-    LAPACKE_cgeqp3,
-    LAPACKE_cgeqp3_work,
-    LAPACKE_cgeqr2,
-    LAPACKE_cgeqr2_work,
-    LAPACKE_cgeqrf,
-    LAPACKE_cgeqrf_work,
-    LAPACKE_cgeqrfp,
-    LAPACKE_cgeqrfp_work,
-    LAPACKE_cgeqrt,
-    LAPACKE_cgeqrt2,
-    LAPACKE_cgeqrt2_work,
-    LAPACKE_cgeqrt3,
-    LAPACKE_cgeqrt3_work,
-    LAPACKE_cgeqrt_work,
-    LAPACKE_cgerfs,
-    LAPACKE_cgerfs_work,
-    LAPACKE_cgerqf,
-    LAPACKE_cgerqf_work,
-    LAPACKE_cgesdd,
-    LAPACKE_cgesdd_work,
-    LAPACKE_cgesv,
-    LAPACKE_cgesv_work,
-    LAPACKE_cgesvd,
-    LAPACKE_cgesvd_work,
-    LAPACKE_cgesvx,
-    LAPACKE_cgesvx_work,
-    LAPACKE_cgetf2,
-    LAPACKE_cgetf2_work,
-    LAPACKE_cgetrf,
-    LAPACKE_cgetrf_work,
-    LAPACKE_cgetri,
-    LAPACKE_cgetri_work,
-    LAPACKE_cgetrs,
-    LAPACKE_cgetrs_work,
-    LAPACKE_cggbak,
-    LAPACKE_cggbak_work,
-    LAPACKE_cggbal,
-    LAPACKE_cggbal_work,
-    LAPACKE_cgges,
-    LAPACKE_cgges_work,
-    LAPACKE_cggesx,
-    LAPACKE_cggesx_work,
-    LAPACKE_cggev,
-    LAPACKE_cggev_work,
-    LAPACKE_cggevx,
-    LAPACKE_cggevx_work,
-    LAPACKE_cggglm,
-    LAPACKE_cggglm_work,
-    LAPACKE_cgghrd,
-    LAPACKE_cgghrd_work,
-    LAPACKE_cgglse,
-    LAPACKE_cgglse_work,
-    LAPACKE_cggqrf,
-    LAPACKE_cggqrf_work,
-    LAPACKE_cggrqf,
-    LAPACKE_cggrqf_work,
-    LAPACKE_cgtcon,
-    LAPACKE_cgtcon_work,
-    LAPACKE_cgtrfs,
-    LAPACKE_cgtrfs_work,
-    LAPACKE_cgtsv,
-    LAPACKE_cgtsv_work,
-    LAPACKE_cgtsvx,
-    LAPACKE_cgtsvx_work,
-    LAPACKE_cgttrf,
-    LAPACKE_cgttrf_work,
-    LAPACKE_cgttrs,
-    LAPACKE_cgttrs_work,
-    LAPACKE_chbev,
-    LAPACKE_chbev_work,
-    LAPACKE_chbevd,
-    LAPACKE_chbevd_work,
-    LAPACKE_chbevx,
-    LAPACKE_chbevx_work,
-    LAPACKE_chbgst,
-    LAPACKE_chbgst_work,
-    LAPACKE_chbgv,
-    LAPACKE_chbgv_work,
-    LAPACKE_chbgvd,
-    LAPACKE_chbgvd_work,
-    LAPACKE_chbgvx,
-    LAPACKE_chbgvx_work,
-    LAPACKE_chbtrd,
-    LAPACKE_chbtrd_work,
-    LAPACKE_checon,
-    LAPACKE_checon_work,
-    LAPACKE_cheequb,
-    LAPACKE_cheequb_work,
-    LAPACKE_cheev,
-    LAPACKE_cheev_work,
-    LAPACKE_cheevd,
-    LAPACKE_cheevd_work,
-    LAPACKE_cheevr,
-    LAPACKE_cheevr_work,
-    LAPACKE_cheevx,
-    LAPACKE_cheevx_work,
-    LAPACKE_chegst,
-    LAPACKE_chegst_work,
-    LAPACKE_chegv,
-    LAPACKE_chegv_work,
-    LAPACKE_chegvd,
-    LAPACKE_chegvd_work,
-    LAPACKE_chegvx,
-    LAPACKE_chegvx_work,
-    LAPACKE_cherfs,
-    LAPACKE_cherfs_work,
-    LAPACKE_chesv,
-    LAPACKE_chesv_work,
-    LAPACKE_chesvx,
-    LAPACKE_chesvx_work,
-    LAPACKE_cheswapr,
-    LAPACKE_cheswapr_work,
-    LAPACKE_chetrd,
-    LAPACKE_chetrd_work,
-    LAPACKE_chetrf,
-    LAPACKE_chetrf_work,
-    LAPACKE_chetri,
-    LAPACKE_chetri2,
-    LAPACKE_chetri2_work,
-    LAPACKE_chetri2x,
-    LAPACKE_chetri2x_work,
-    LAPACKE_chetri_work,
-    LAPACKE_chetrs,
-    LAPACKE_chetrs2,
-    LAPACKE_chetrs2_work,
-    LAPACKE_chetrs_work,
-    LAPACKE_chfrk,
-    LAPACKE_chfrk_work,
-    LAPACKE_chgeqz,
-    LAPACKE_chgeqz_work,
-    LAPACKE_chpcon,
-    LAPACKE_chpcon_work,
-    LAPACKE_chpev,
-    LAPACKE_chpev_work,
-    LAPACKE_chpevd,
-    LAPACKE_chpevd_work,
-    LAPACKE_chpevx,
-    LAPACKE_chpevx_work,
-    LAPACKE_chpgst,
-    LAPACKE_chpgst_work,
-    LAPACKE_chpgv,
-    LAPACKE_chpgv_work,
-    LAPACKE_chpgvd,
-    LAPACKE_chpgvd_work,
-    LAPACKE_chpgvx,
-    LAPACKE_chpgvx_work,
-    LAPACKE_chprfs,
-    LAPACKE_chprfs_work,
-    LAPACKE_chpsv,
-    LAPACKE_chpsv_work,
-    LAPACKE_chpsvx,
-    LAPACKE_chpsvx_work,
-    LAPACKE_chptrd,
-    LAPACKE_chptrd_work,
-    LAPACKE_chptrf,
-    LAPACKE_chptrf_work,
-    LAPACKE_chptri,
-    LAPACKE_chptri_work,
-    LAPACKE_chptrs,
-    LAPACKE_chptrs_work,
-    LAPACKE_chsein,
-    LAPACKE_chsein_work,
-    LAPACKE_chseqr,
-    LAPACKE_chseqr_work,
-    LAPACKE_clacgv,
-    LAPACKE_clacgv_work,
-    LAPACKE_clacn2,
-    LAPACKE_clacn2_work,
-    LAPACKE_clacp2,
-    LAPACKE_clacp2_work,
-    LAPACKE_clacpy,
-    LAPACKE_clacpy_work,
-    LAPACKE_clag2z,
-    LAPACKE_clag2z_work,
-    LAPACKE_clange,
-    LAPACKE_clange_work,
-    LAPACKE_clanhe,
-    LAPACKE_clanhe_work,
-    LAPACKE_clansy,
-    LAPACKE_clansy_work,
-    LAPACKE_clantr,
-    LAPACKE_clantr_work,
-    LAPACKE_clapmr,
-    LAPACKE_clapmr_work,
-    LAPACKE_clarfb,
-    LAPACKE_clarfb_work,
-    LAPACKE_clarfg,
-    LAPACKE_clarfg_work,
-    LAPACKE_clarft,
-    LAPACKE_clarft_work,
-    LAPACKE_clarfx,
-    LAPACKE_clarfx_work,
-    LAPACKE_clarnv,
-    LAPACKE_clarnv_work,
-    LAPACKE_claset,
-    LAPACKE_claset_work,
-    LAPACKE_claswp,
-    LAPACKE_claswp_work,
-    LAPACKE_clauum,
-    LAPACKE_clauum_work,
-    LAPACKE_cpbcon,
-    LAPACKE_cpbcon_work,
-    LAPACKE_cpbequ,
-    LAPACKE_cpbequ_work,
-    LAPACKE_cpbrfs,
-    LAPACKE_cpbrfs_work,
-    LAPACKE_cpbstf,
-    LAPACKE_cpbstf_work,
-    LAPACKE_cpbsv,
-    LAPACKE_cpbsv_work,
-    LAPACKE_cpbsvx,
-    LAPACKE_cpbsvx_work,
-    LAPACKE_cpbtrf,
-    LAPACKE_cpbtrf_work,
-    LAPACKE_cpbtrs,
-    LAPACKE_cpbtrs_work,
-    LAPACKE_cpftrf,
-    LAPACKE_cpftrf_work,
-    LAPACKE_cpftri,
-    LAPACKE_cpftri_work,
-    LAPACKE_cpftrs,
-    LAPACKE_cpftrs_work,
-    LAPACKE_cpocon,
-    LAPACKE_cpocon_work,
-    LAPACKE_cpoequ,
-    LAPACKE_cpoequ_work,
-    LAPACKE_cpoequb,
-    LAPACKE_cpoequb_work,
-    LAPACKE_cporfs,
-    LAPACKE_cporfs_work,
-    LAPACKE_cposv,
-    LAPACKE_cposv_work,
-    LAPACKE_cposvx,
-    LAPACKE_cposvx_work,
-    LAPACKE_cpotrf,
-    LAPACKE_cpotrf_work,
-    LAPACKE_cpotri,
-    LAPACKE_cpotri_work,
-    LAPACKE_cpotrs,
-    LAPACKE_cpotrs_work,
-    LAPACKE_cppcon,
-    LAPACKE_cppcon_work,
-    LAPACKE_cppequ,
-    LAPACKE_cppequ_work,
-    LAPACKE_cpprfs,
-    LAPACKE_cpprfs_work,
-    LAPACKE_cppsv,
-    LAPACKE_cppsv_work,
-    LAPACKE_cppsvx,
-    LAPACKE_cppsvx_work,
-    LAPACKE_cpptrf,
-    LAPACKE_cpptrf_work,
-    LAPACKE_cpptri,
-    LAPACKE_cpptri_work,
-    LAPACKE_cpptrs,
-    LAPACKE_cpptrs_work,
-    LAPACKE_cpstrf,
-    LAPACKE_cpstrf_work,
-    LAPACKE_cptcon,
-    LAPACKE_cptcon_work,
-    LAPACKE_cpteqr,
-    LAPACKE_cpteqr_work,
-    LAPACKE_cptrfs,
-    LAPACKE_cptrfs_work,
-    LAPACKE_cptsv,
-    LAPACKE_cptsv_work,
-    LAPACKE_cptsvx,
-    LAPACKE_cptsvx_work,
-    LAPACKE_cpttrf,
-    LAPACKE_cpttrf_work,
-    LAPACKE_cpttrs,
-    LAPACKE_cpttrs_work,
-    LAPACKE_cspcon,
-    LAPACKE_cspcon_work,
-    LAPACKE_csprfs,
-    LAPACKE_csprfs_work,
-    LAPACKE_cspsv,
-    LAPACKE_cspsv_work,
-    LAPACKE_cspsvx,
-    LAPACKE_cspsvx_work,
-    LAPACKE_csptrf,
-    LAPACKE_csptrf_work,
-    LAPACKE_csptri,
-    LAPACKE_csptri_work,
-    LAPACKE_csptrs,
-    LAPACKE_csptrs_work,
-    LAPACKE_cstedc,
-    LAPACKE_cstedc_work,
-    LAPACKE_cstegr,
-    LAPACKE_cstegr_work,
-    LAPACKE_cstein,
-    LAPACKE_cstein_work,
-    LAPACKE_cstemr,
-    LAPACKE_cstemr_work,
-    LAPACKE_csteqr,
-    LAPACKE_csteqr_work,
-    LAPACKE_csycon,
-    LAPACKE_csycon_work,
-    LAPACKE_csyconv,
-    LAPACKE_csyconv_work,
-    LAPACKE_csyequb,
-    LAPACKE_csyequb_work,
-    LAPACKE_csyrfs,
-    LAPACKE_csyrfs_work,
-    LAPACKE_csysv,
-    LAPACKE_csysv_rook,
-    LAPACKE_csysv_rook_work,
-    LAPACKE_csysv_work,
-    LAPACKE_csysvx,
-    LAPACKE_csysvx_work,
-    LAPACKE_csyswapr,
-    LAPACKE_csyswapr_work,
-    LAPACKE_csytrf,
-    LAPACKE_csytrf_work,
-    LAPACKE_csytri,
-    LAPACKE_csytri2,
-    LAPACKE_csytri2_work,
-    LAPACKE_csytri2x,
-    LAPACKE_csytri2x_work,
-    LAPACKE_csytri_work,
-    LAPACKE_csytrs,
-    LAPACKE_csytrs2,
-    LAPACKE_csytrs2_work,
-    LAPACKE_csytrs_work,
-    LAPACKE_ctbcon,
-    LAPACKE_ctbcon_work,
-    LAPACKE_ctbrfs,
-    LAPACKE_ctbrfs_work,
-    LAPACKE_ctbtrs,
-    LAPACKE_ctbtrs_work,
-    LAPACKE_ctfsm,
-    LAPACKE_ctfsm_work,
-    LAPACKE_ctftri,
-    LAPACKE_ctftri_work,
-    LAPACKE_ctfttp,
-    LAPACKE_ctfttp_work,
-    LAPACKE_ctfttr,
-    LAPACKE_ctfttr_work,
-    LAPACKE_ctgevc,
-    LAPACKE_ctgevc_work,
-    LAPACKE_ctgexc,
-    LAPACKE_ctgexc_work,
-    LAPACKE_ctgsen,
-    LAPACKE_ctgsen_work,
-    LAPACKE_ctgsja,
-    LAPACKE_ctgsja_work,
-    LAPACKE_ctgsna,
-    LAPACKE_ctgsna_work,
-    LAPACKE_ctgsyl,
-    LAPACKE_ctgsyl_work,
-    LAPACKE_ctpcon,
-    LAPACKE_ctpcon_work,
-    LAPACKE_ctpmqrt,
-    LAPACKE_ctpmqrt_work,
-    LAPACKE_ctpqrt,
-    LAPACKE_ctpqrt2,
-    LAPACKE_ctpqrt2_work,
-    LAPACKE_ctpqrt_work,
-    LAPACKE_ctprfb,
-    LAPACKE_ctprfb_work,
-    LAPACKE_ctprfs,
-    LAPACKE_ctprfs_work,
-    LAPACKE_ctptri,
-    LAPACKE_ctptri_work,
-    LAPACKE_ctptrs,
-    LAPACKE_ctptrs_work,
-    LAPACKE_ctpttf,
-    LAPACKE_ctpttf_work,
-    LAPACKE_ctpttr,
-    LAPACKE_ctpttr_work,
-    LAPACKE_ctrcon,
-    LAPACKE_ctrcon_work,
-    LAPACKE_ctrevc,
-    LAPACKE_ctrevc_work,
-    LAPACKE_ctrexc,
-    LAPACKE_ctrexc_work,
-    LAPACKE_ctrrfs,
-    LAPACKE_ctrrfs_work,
-    LAPACKE_ctrsen,
-    LAPACKE_ctrsen_work,
-    LAPACKE_ctrsna,
-    LAPACKE_ctrsna_work,
-    LAPACKE_ctrsyl,
-    LAPACKE_ctrsyl_work,
-    LAPACKE_ctrtri,
-    LAPACKE_ctrtri_work,
-    LAPACKE_ctrtrs,
-    LAPACKE_ctrtrs_work,
-    LAPACKE_ctrttf,
-    LAPACKE_ctrttf_work,
-    LAPACKE_ctrttp,
-    LAPACKE_ctrttp_work,
-    LAPACKE_ctzrzf,
-    LAPACKE_ctzrzf_work,
-    LAPACKE_cunbdb,
-    LAPACKE_cunbdb_work,
-    LAPACKE_cuncsd,
-    LAPACKE_cuncsd_work,
-    LAPACKE_cungbr,
-    LAPACKE_cungbr_work,
-    LAPACKE_cunghr,
-    LAPACKE_cunghr_work,
-    LAPACKE_cunglq,
-    LAPACKE_cunglq_work,
-    LAPACKE_cungql,
-    LAPACKE_cungql_work,
-    LAPACKE_cungqr,
-    LAPACKE_cungqr_work,
-    LAPACKE_cungrq,
-    LAPACKE_cungrq_work,
-    LAPACKE_cungtr,
-    LAPACKE_cungtr_work,
-    LAPACKE_cunmbr,
-    LAPACKE_cunmbr_work,
-    LAPACKE_cunmhr,
-    LAPACKE_cunmhr_work,
-    LAPACKE_cunmlq,
-    LAPACKE_cunmlq_work,
-    LAPACKE_cunmql,
-    LAPACKE_cunmql_work,
-    LAPACKE_cunmqr,
-    LAPACKE_cunmqr_work,
-    LAPACKE_cunmrq,
-    LAPACKE_cunmrq_work,
-    LAPACKE_cunmrz,
-    LAPACKE_cunmrz_work,
-    LAPACKE_cunmtr,
-    LAPACKE_cunmtr_work,
-    LAPACKE_cupgtr,
-    LAPACKE_cupgtr_work,
-    LAPACKE_cupmtr,
-    LAPACKE_cupmtr_work,
-    LAPACKE_csyr,
-    LAPACKE_csyr_work,
-    LAPACKE_clatms,
-    LAPACKE_clatms_work,
-    LAPACKE_clagge,
-    LAPACKE_clagge_work,
-    LAPACKE_claghe,
-    LAPACKE_claghe_work,
-    LAPACKE_clagsy,
-    LAPACKE_clagsy_work,
-    LAPACKE_cgejsv,
-    LAPACKE_cgejsv_work,
-    LAPACKE_cgesvdx,
-    LAPACKE_cgesvdx_work,
-    LAPACKE_cgesvj,
-    LAPACKE_cgesvj_work,
-    LAPACKE_cgetrf2,
-    LAPACKE_cgetrf2_work,
-    LAPACKE_cgges3,
-    LAPACKE_cgges3_work,
-    LAPACKE_cggev3,
-    LAPACKE_cggev3_work,
-    LAPACKE_cgghd3,
-    LAPACKE_cgghd3_work,
-    LAPACKE_cggsvd3,
-    LAPACKE_cggsvd3_work,
-    LAPACKE_cggsvp3,
-    LAPACKE_cggsvp3_work,
-    LAPACKE_chetrf_rook,
-    LAPACKE_chetrf_rook_work,
-    LAPACKE_chetrs_rook,
-    LAPACKE_chetrs_rook_work,
-    LAPACKE_clapmt,
-    LAPACKE_clapmt_work,
-    LAPACKE_clascl,
-    LAPACKE_clascl_work,
-    LAPACKE_cpotrf2,
-    LAPACKE_cpotrf2_work,
-    LAPACKE_csytrf_rook,
-    LAPACKE_csytrf_rook_work,
-    LAPACKE_csytrs_rook,
-    LAPACKE_csytrs_rook_work,
-    LAPACKE_cuncsd2by1,
-    LAPACKE_cuncsd2by1_work,
-    LAPACKE_cgelq,
-    LAPACKE_cgelq_work,
-    LAPACKE_cgemlq,
-    LAPACKE_cgemlq_work,
-    LAPACKE_cgemqr,
-    LAPACKE_cgemqr_work,
-    LAPACKE_cgeqr,
-    LAPACKE_cgeqr_work,
-    LAPACKE_cgetsls,
-    LAPACKE_cgetsls_work,
-    LAPACKE_chbev_2stage,
-    LAPACKE_chbev_2stage_work,
-    LAPACKE_chbevd_2stage,
-    LAPACKE_chbevd_2stage_work,
-    LAPACKE_chbevx_2stage,
-    LAPACKE_chbevx_2stage_work,
-    LAPACKE_checon_3,
-    LAPACKE_checon_3_work,
-    LAPACKE_cheev_2stage,
-    LAPACKE_cheev_2stage_work,
-    LAPACKE_cheevd_2stage,
-    LAPACKE_cheevd_2stage_work,
-    LAPACKE_cheevr_2stage,
-    LAPACKE_cheevr_2stage_work,
-    LAPACKE_cheevx_2stage,
-    LAPACKE_cheevx_2stage_work,
-    LAPACKE_chegv_2stage,
-    LAPACKE_chegv_2stage_work,
-    LAPACKE_chesv_aa,
-    LAPACKE_chesv_aa_work,
-    LAPACKE_chesv_rk,
-    LAPACKE_chesv_rk_work,
-    LAPACKE_chetrf_aa,
-    LAPACKE_chetrf_aa_work,
-    LAPACKE_chetrf_rk,
-    LAPACKE_chetrf_rk_work,
-    LAPACKE_chetri_3,
-    LAPACKE_chetri_3_work,
-    LAPACKE_chetrs_aa,
-    LAPACKE_chetrs_aa_work,
-    LAPACKE_chetrs_3,
-    LAPACKE_chetrs_3_work,
-    LAPACKE_csycon_3,
-    LAPACKE_csycon_3_work,
-    LAPACKE_csysv_aa,
-    LAPACKE_csysv_aa_work,
-    LAPACKE_csysv_rk,
-    LAPACKE_csysv_rk_work,
-    LAPACKE_csytrf_aa,
-    LAPACKE_csytrf_aa_work,
-    LAPACKE_csytrf_rk,
-    LAPACKE_csytrf_rk_work,
-    LAPACKE_csytri_3,
-    LAPACKE_csytri_3_work,
-    LAPACKE_csytrs_aa,
-    LAPACKE_csytrs_aa_work,
-    LAPACKE_csytrs_3,
-    LAPACKE_csytrs_3_work,
-    LAPACKE_chesv_aa_2stage,
-    LAPACKE_chesv_aa_2stage_work,
-    LAPACKE_chetrf_aa_2stage,
-    LAPACKE_chetrf_aa_2stage_work,
-    LAPACKE_chetrs_aa_2stage,
-    LAPACKE_chetrs_aa_2stage_work,
-    LAPACKE_clacrm,
-    LAPACKE_clacrm_work,
-    LAPACKE_clarcm,
-    LAPACKE_clarcm_work,
-    LAPACKE_classq,
-    LAPACKE_classq_work,
-    LAPACKE_csysv_aa_2stage,
-    LAPACKE_csysv_aa_2stage_work,
-    LAPACKE_csytrf_aa_2stage,
-    LAPACKE_csytrf_aa_2stage_work,
-    LAPACKE_csytrs_aa_2stage,
-    LAPACKE_csytrs_aa_2stage_work,
-);
-@lapackeobjsd = (
-    LAPACKE_dgb_nancheck,
-    LAPACKE_dgb_trans,
-    LAPACKE_dge_nancheck,
-    LAPACKE_dge_trans,
-    LAPACKE_dgg_nancheck,
-    LAPACKE_dgg_trans,
-    LAPACKE_dgt_nancheck,
-    LAPACKE_dhs_nancheck,
-    LAPACKE_dhs_trans,
-    LAPACKE_d_nancheck,
-    LAPACKE_dpb_nancheck,
-    LAPACKE_dpb_trans,
-    LAPACKE_dpf_nancheck,
-    LAPACKE_dpf_trans,
-    LAPACKE_dpo_nancheck,
-    LAPACKE_dpo_trans,
-    LAPACKE_dpp_nancheck,
-    LAPACKE_dpp_trans,
-    LAPACKE_dpt_nancheck,
-    LAPACKE_dsb_nancheck,
-    LAPACKE_dsb_trans,
-    LAPACKE_dsp_nancheck,
-    LAPACKE_dsp_trans,
-    LAPACKE_dst_nancheck,
-    LAPACKE_dsy_nancheck,
-    LAPACKE_dsy_trans,
-    LAPACKE_dtb_nancheck,
-    LAPACKE_dtb_trans,
-    LAPACKE_dtf_nancheck,
-    LAPACKE_dtf_trans,
-    LAPACKE_dtp_nancheck,
-    LAPACKE_dtp_trans,
-    LAPACKE_dtr_nancheck,
-    LAPACKE_dtr_trans,
-    LAPACKE_dbbcsd,
-    LAPACKE_dbbcsd_work,
-    LAPACKE_dbdsdc,
-    LAPACKE_dbdsdc_work,
-    LAPACKE_dbdsqr,
-    LAPACKE_dbdsqr_work,
-    LAPACKE_ddisna,
-    LAPACKE_ddisna_work,
-    LAPACKE_dgbbrd,
-    LAPACKE_dgbbrd_work,
-    LAPACKE_dgbcon,
-    LAPACKE_dgbcon_work,
-    LAPACKE_dgbequ,
-    LAPACKE_dgbequ_work,
-    LAPACKE_dgbequb,
-    LAPACKE_dgbequb_work,
-    LAPACKE_dgbrfs,
-    LAPACKE_dgbrfs_work,
-    LAPACKE_dgbsv,
-    LAPACKE_dgbsv_work,
-    LAPACKE_dgbsvx,
-    LAPACKE_dgbsvx_work,
-    LAPACKE_dgbtrf,
-    LAPACKE_dgbtrf_work,
-    LAPACKE_dgbtrs,
-    LAPACKE_dgbtrs_work,
-    LAPACKE_dgebak,
-    LAPACKE_dgebak_work,
-    LAPACKE_dgebal,
-    LAPACKE_dgebal_work,
-    LAPACKE_dgebrd,
-    LAPACKE_dgebrd_work,
-    LAPACKE_dgecon,
-    LAPACKE_dgecon_work,
-    LAPACKE_dgeequ,
-    LAPACKE_dgeequ_work,
-    LAPACKE_dgeequb,
-    LAPACKE_dgeequb_work,
-    LAPACKE_dgees,
-    LAPACKE_dgees_work,
-    LAPACKE_dgeesx,
-    LAPACKE_dgeesx_work,
-    LAPACKE_dgeev,
-    LAPACKE_dgeev_work,
-    LAPACKE_dgeevx,
-    LAPACKE_dgeevx_work,
-    LAPACKE_dgehrd,
-    LAPACKE_dgehrd_work,
-    LAPACKE_dgejsv,
-    LAPACKE_dgejsv_work,
-    LAPACKE_dgelq2,
-    LAPACKE_dgelq2_work,
-    LAPACKE_dgelqf,
-    LAPACKE_dgelqf_work,
-    LAPACKE_dgels,
-    LAPACKE_dgels_work,
-    LAPACKE_dgelsd,
-    LAPACKE_dgelsd_work,
-    LAPACKE_dgelss,
-    LAPACKE_dgelss_work,
-    LAPACKE_dgelsy,
-    LAPACKE_dgelsy_work,
-    LAPACKE_dgemqrt,
-    LAPACKE_dgemqrt_work,
-    LAPACKE_dgeqlf,
-    LAPACKE_dgeqlf_work,
-    LAPACKE_dgeqp3,
-    LAPACKE_dgeqp3_work,
-    LAPACKE_dgeqr2,
-    LAPACKE_dgeqr2_work,
-    LAPACKE_dgeqrf,
-    LAPACKE_dgeqrf_work,
-    LAPACKE_dgeqrfp,
-    LAPACKE_dgeqrfp_work,
-    LAPACKE_dgeqrt,
-    LAPACKE_dgeqrt2,
-    LAPACKE_dgeqrt2_work,
-    LAPACKE_dgeqrt3,
-    LAPACKE_dgeqrt3_work,
-    LAPACKE_dgeqrt_work,
-    LAPACKE_dgerfs,
-    LAPACKE_dgerfs_work,
-    LAPACKE_dgerqf,
-    LAPACKE_dgerqf_work,
-    LAPACKE_dgesdd,
-    LAPACKE_dgesdd_work,
-    LAPACKE_dgesv,
-    LAPACKE_dgesv_work,
-    LAPACKE_dgesvd,
-    LAPACKE_dgesvd_work,
-    LAPACKE_dgesvj,
-    LAPACKE_dgesvj_work,
-    LAPACKE_dgesvx,
-    LAPACKE_dgesvx_work,
-    LAPACKE_dgetf2,
-    LAPACKE_dgetf2_work,
-    LAPACKE_dgetrf,
-    LAPACKE_dgetrf_work,
-    LAPACKE_dgetri,
-    LAPACKE_dgetri_work,
-    LAPACKE_dgetrs,
-    LAPACKE_dgetrs_work,
-    LAPACKE_dggbak,
-    LAPACKE_dggbak_work,
-    LAPACKE_dggbal,
-    LAPACKE_dggbal_work,
-    LAPACKE_dgges,
-    LAPACKE_dgges_work,
-    LAPACKE_dggesx,
-    LAPACKE_dggesx_work,
-    LAPACKE_dggev,
-    LAPACKE_dggev_work,
-    LAPACKE_dggevx,
-    LAPACKE_dggevx_work,
-    LAPACKE_dggglm,
-    LAPACKE_dggglm_work,
-    LAPACKE_dgghrd,
-    LAPACKE_dgghrd_work,
-    LAPACKE_dgglse,
-    LAPACKE_dgglse_work,
-    LAPACKE_dggqrf,
-    LAPACKE_dggqrf_work,
-    LAPACKE_dggrqf,
-    LAPACKE_dggrqf_work,
-    LAPACKE_dgtcon,
-    LAPACKE_dgtcon_work,
-    LAPACKE_dgtrfs,
-    LAPACKE_dgtrfs_work,
-    LAPACKE_dgtsv,
-    LAPACKE_dgtsv_work,
-    LAPACKE_dgtsvx,
-    LAPACKE_dgtsvx_work,
-    LAPACKE_dgttrf,
-    LAPACKE_dgttrf_work,
-    LAPACKE_dgttrs,
-    LAPACKE_dgttrs_work,
-    LAPACKE_dhgeqz,
-    LAPACKE_dhgeqz_work,
-    LAPACKE_dhsein,
-    LAPACKE_dhsein_work,
-    LAPACKE_dhseqr,
-    LAPACKE_dhseqr_work,
-    LAPACKE_dlacn2,
-    LAPACKE_dlacn2_work,
-    LAPACKE_dlacpy,
-    LAPACKE_dlacpy_work,
-    LAPACKE_dlag2s,
-    LAPACKE_dlag2s_work,
-    LAPACKE_dlamch,
-    LAPACKE_dlamch_work,
-    LAPACKE_dlange,
-    LAPACKE_dlange_work,
-    LAPACKE_dlansy,
-    LAPACKE_dlansy_work,
-    LAPACKE_dlantr,
-    LAPACKE_dlantr_work,
-    LAPACKE_dlapmr,
-    LAPACKE_dlapmr_work,
-    LAPACKE_dlapy2,
-    LAPACKE_dlapy2_work,
-    LAPACKE_dlapy3,
-    LAPACKE_dlapy3_work,
-    LAPACKE_dlarfb,
-    LAPACKE_dlarfb_work,
-    LAPACKE_dlarfg,
-    LAPACKE_dlarfg_work,
-    LAPACKE_dlarft,
-    LAPACKE_dlarft_work,
-    LAPACKE_dlarfx,
-    LAPACKE_dlarfx_work,
-    LAPACKE_dlarnv,
-    LAPACKE_dlarnv_work,
-    LAPACKE_dlartgp,
-    LAPACKE_dlartgp_work,
-    LAPACKE_dlartgs,
-    LAPACKE_dlartgs_work,
-    LAPACKE_dlaset,
-    LAPACKE_dlaset_work,
-    LAPACKE_dlasrt,
-    LAPACKE_dlasrt_work,
-    LAPACKE_dlaswp,
-    LAPACKE_dlaswp_work,
-    LAPACKE_dlauum,
-    LAPACKE_dlauum_work,
-    LAPACKE_dopgtr,
-    LAPACKE_dopgtr_work,
-    LAPACKE_dopmtr,
-    LAPACKE_dopmtr_work,
-    LAPACKE_dorbdb,
-    LAPACKE_dorbdb_work,
-    LAPACKE_dorcsd,
-    LAPACKE_dorcsd_work,
-    LAPACKE_dorgbr,
-    LAPACKE_dorgbr_work,
-    LAPACKE_dorghr,
-    LAPACKE_dorghr_work,
-    LAPACKE_dorglq,
-    LAPACKE_dorglq_work,
-    LAPACKE_dorgql,
-    LAPACKE_dorgql_work,
-    LAPACKE_dorgqr,
-    LAPACKE_dorgqr_work,
-    LAPACKE_dorgrq,
-    LAPACKE_dorgrq_work,
-    LAPACKE_dorgtr,
-    LAPACKE_dorgtr_work,
-    LAPACKE_dormbr,
-    LAPACKE_dormbr_work,
-    LAPACKE_dormhr,
-    LAPACKE_dormhr_work,
-    LAPACKE_dormlq,
-    LAPACKE_dormlq_work,
-    LAPACKE_dormql,
-    LAPACKE_dormql_work,
-    LAPACKE_dormqr,
-    LAPACKE_dormqr_work,
-    LAPACKE_dormrq,
-    LAPACKE_dormrq_work,
-    LAPACKE_dormrz,
-    LAPACKE_dormrz_work,
-    LAPACKE_dormtr,
-    LAPACKE_dormtr_work,
-    LAPACKE_dpbcon,
-    LAPACKE_dpbcon_work,
-    LAPACKE_dpbequ,
-    LAPACKE_dpbequ_work,
-    LAPACKE_dpbrfs,
-    LAPACKE_dpbrfs_work,
-    LAPACKE_dpbstf,
-    LAPACKE_dpbstf_work,
-    LAPACKE_dpbsv,
-    LAPACKE_dpbsv_work,
-    LAPACKE_dpbsvx,
-    LAPACKE_dpbsvx_work,
-    LAPACKE_dpbtrf,
-    LAPACKE_dpbtrf_work,
-    LAPACKE_dpbtrs,
-    LAPACKE_dpbtrs_work,
-    LAPACKE_dpftrf,
-    LAPACKE_dpftrf_work,
-    LAPACKE_dpftri,
-    LAPACKE_dpftri_work,
-    LAPACKE_dpftrs,
-    LAPACKE_dpftrs_work,
-    LAPACKE_dpocon,
-    LAPACKE_dpocon_work,
-    LAPACKE_dpoequ,
-    LAPACKE_dpoequ_work,
-    LAPACKE_dpoequb,
-    LAPACKE_dpoequb_work,
-    LAPACKE_dporfs,
-    LAPACKE_dporfs_work,
-    LAPACKE_dposv,
-    LAPACKE_dposv_work,
-    LAPACKE_dposvx,
-    LAPACKE_dposvx_work,
-    LAPACKE_dpotrf,
-    LAPACKE_dpotrf_work,
-    LAPACKE_dpotri,
-    LAPACKE_dpotri_work,
-    LAPACKE_dpotrs,
-    LAPACKE_dpotrs_work,
-    LAPACKE_dppcon,
-    LAPACKE_dppcon_work,
-    LAPACKE_dppequ,
-    LAPACKE_dppequ_work,
-    LAPACKE_dpprfs,
-    LAPACKE_dpprfs_work,
-    LAPACKE_dppsv,
-    LAPACKE_dppsv_work,
-    LAPACKE_dppsvx,
-    LAPACKE_dppsvx_work,
-    LAPACKE_dpptrf,
-    LAPACKE_dpptrf_work,
-    LAPACKE_dpptri,
-    LAPACKE_dpptri_work,
-    LAPACKE_dpptrs,
-    LAPACKE_dpptrs_work,
-    LAPACKE_dpstrf,
-    LAPACKE_dpstrf_work,
-    LAPACKE_dptcon,
-    LAPACKE_dptcon_work,
-    LAPACKE_dpteqr,
-    LAPACKE_dpteqr_work,
-    LAPACKE_dptrfs,
-    LAPACKE_dptrfs_work,
-    LAPACKE_dptsv,
-    LAPACKE_dptsv_work,
-    LAPACKE_dptsvx,
-    LAPACKE_dptsvx_work,
-    LAPACKE_dpttrf,
-    LAPACKE_dpttrf_work,
-    LAPACKE_dpttrs,
-    LAPACKE_dpttrs_work,
-    LAPACKE_dsbev,
-    LAPACKE_dsbev_work,
-    LAPACKE_dsbevd,
-    LAPACKE_dsbevd_work,
-    LAPACKE_dsbevx,
-    LAPACKE_dsbevx_work,
-    LAPACKE_dsbgst,
-    LAPACKE_dsbgst_work,
-    LAPACKE_dsbgv,
-    LAPACKE_dsbgv_work,
-    LAPACKE_dsbgvd,
-    LAPACKE_dsbgvd_work,
-    LAPACKE_dsbgvx,
-    LAPACKE_dsbgvx_work,
-    LAPACKE_dsbtrd,
-    LAPACKE_dsbtrd_work,
-    LAPACKE_dsfrk,
-    LAPACKE_dsfrk_work,
-    LAPACKE_dsgesv,
-    LAPACKE_dsgesv_work,
-    LAPACKE_dspcon,
-    LAPACKE_dspcon_work,
-    LAPACKE_dspev,
-    LAPACKE_dspev_work,
-    LAPACKE_dspevd,
-    LAPACKE_dspevd_work,
-    LAPACKE_dspevx,
-    LAPACKE_dspevx_work,
-    LAPACKE_dspgst,
-    LAPACKE_dspgst_work,
-    LAPACKE_dspgv,
-    LAPACKE_dspgv_work,
-    LAPACKE_dspgvd,
-    LAPACKE_dspgvd_work,
-    LAPACKE_dspgvx,
-    LAPACKE_dspgvx_work,
-    LAPACKE_dsposv,
-    LAPACKE_dsposv_work,
-    LAPACKE_dsprfs,
-    LAPACKE_dsprfs_work,
-    LAPACKE_dspsv,
-    LAPACKE_dspsv_work,
-    LAPACKE_dspsvx,
-    LAPACKE_dspsvx_work,
-    LAPACKE_dsptrd,
-    LAPACKE_dsptrd_work,
-    LAPACKE_dsptrf,
-    LAPACKE_dsptrf_work,
-    LAPACKE_dsptri,
-    LAPACKE_dsptri_work,
-    LAPACKE_dsptrs,
-    LAPACKE_dsptrs_work,
-    LAPACKE_dstebz,
-    LAPACKE_dstebz_work,
-    LAPACKE_dstedc,
-    LAPACKE_dstedc_work,
-    LAPACKE_dstegr,
-    LAPACKE_dstegr_work,
-    LAPACKE_dstein,
-    LAPACKE_dstein_work,
-    LAPACKE_dstemr,
-    LAPACKE_dstemr_work,
-    LAPACKE_dsteqr,
-    LAPACKE_dsteqr_work,
-    LAPACKE_dsterf,
-    LAPACKE_dsterf_work,
-    LAPACKE_dstev,
-    LAPACKE_dstev_work,
-    LAPACKE_dstevd,
-    LAPACKE_dstevd_work,
-    LAPACKE_dstevr,
-    LAPACKE_dstevr_work,
-    LAPACKE_dstevx,
-    LAPACKE_dstevx_work,
-    LAPACKE_dsycon,
-    LAPACKE_dsycon_work,
-    LAPACKE_dsyconv,
-    LAPACKE_dsyconv_work,
-    LAPACKE_dsyequb,
-    LAPACKE_dsyequb_work,
-    LAPACKE_dsyev,
-    LAPACKE_dsyev_work,
-    LAPACKE_dsyevd,
-    LAPACKE_dsyevd_work,
-    LAPACKE_dsyevr,
-    LAPACKE_dsyevr_work,
-    LAPACKE_dsyevx,
-    LAPACKE_dsyevx_work,
-    LAPACKE_dsygst,
-    LAPACKE_dsygst_work,
-    LAPACKE_dsygv,
-    LAPACKE_dsygv_work,
-    LAPACKE_dsygvd,
-    LAPACKE_dsygvd_work,
-    LAPACKE_dsygvx,
-    LAPACKE_dsygvx_work,
-    LAPACKE_dsyrfs,
-    LAPACKE_dsyrfs_work,
-    LAPACKE_dsysv,
-    LAPACKE_dsysv_rook,
-    LAPACKE_dsysv_rook_work,
-    LAPACKE_dsysv_work,
-    LAPACKE_dsysvx,
-    LAPACKE_dsysvx_work,
-    LAPACKE_dsyswapr,
-    LAPACKE_dsyswapr_work,
-    LAPACKE_dsytrd,
-    LAPACKE_dsytrd_work,
-    LAPACKE_dsytrf,
-    LAPACKE_dsytrf_work,
-    LAPACKE_dsytri,
-    LAPACKE_dsytri2,
-    LAPACKE_dsytri2_work,
-    LAPACKE_dsytri2x,
-    LAPACKE_dsytri2x_work,
-    LAPACKE_dsytri_work,
-    LAPACKE_dsytrs,
-    LAPACKE_dsytrs2,
-    LAPACKE_dsytrs2_work,
-    LAPACKE_dsytrs_work,
-    LAPACKE_dtbcon,
-    LAPACKE_dtbcon_work,
-    LAPACKE_dtbrfs,
-    LAPACKE_dtbrfs_work,
-    LAPACKE_dtbtrs,
-    LAPACKE_dtbtrs_work,
-    LAPACKE_dtfsm,
-    LAPACKE_dtfsm_work,
-    LAPACKE_dtftri,
-    LAPACKE_dtftri_work,
-    LAPACKE_dtfttp,
-    LAPACKE_dtfttp_work,
-    LAPACKE_dtfttr,
-    LAPACKE_dtfttr_work,
-    LAPACKE_dtgevc,
-    LAPACKE_dtgevc_work,
-    LAPACKE_dtgexc,
-    LAPACKE_dtgexc_work,
-    LAPACKE_dtgsen,
-    LAPACKE_dtgsen_work,
-    LAPACKE_dtgsja,
-    LAPACKE_dtgsja_work,
-    LAPACKE_dtgsna,
-    LAPACKE_dtgsna_work,
-    LAPACKE_dtgsyl,
-    LAPACKE_dtgsyl_work,
-    LAPACKE_dtpcon,
-    LAPACKE_dtpcon_work,
-    LAPACKE_dtpmqrt,
-    LAPACKE_dtpmqrt_work,
-    LAPACKE_dtpqrt,
-    LAPACKE_dtpqrt2,
-    LAPACKE_dtpqrt2_work,
-    LAPACKE_dtpqrt_work,
-    LAPACKE_dtprfb,
-    LAPACKE_dtprfb_work,
-    LAPACKE_dtprfs,
-    LAPACKE_dtprfs_work,
-    LAPACKE_dtptri,
-    LAPACKE_dtptri_work,
-    LAPACKE_dtptrs,
-    LAPACKE_dtptrs_work,
-    LAPACKE_dtpttf,
-    LAPACKE_dtpttf_work,
-    LAPACKE_dtpttr,
-    LAPACKE_dtpttr_work,
-    LAPACKE_dtrcon,
-    LAPACKE_dtrcon_work,
-    LAPACKE_dtrevc,
-    LAPACKE_dtrevc_work,
-    LAPACKE_dtrexc,
-    LAPACKE_dtrexc_work,
-    LAPACKE_dtrrfs,
-    LAPACKE_dtrrfs_work,
-    LAPACKE_dtrsen,
-    LAPACKE_dtrsen_work,
-    LAPACKE_dtrsna,
-    LAPACKE_dtrsna_work,
-    LAPACKE_dtrsyl,
-    LAPACKE_dtrsyl_work,
-    LAPACKE_dtrtri,
-    LAPACKE_dtrtri_work,
-    LAPACKE_dtrtrs,
-    LAPACKE_dtrtrs_work,
-    LAPACKE_dtrttf,
-    LAPACKE_dtrttf_work,
-    LAPACKE_dtrttp,
-    LAPACKE_dtrttp_work,
-    LAPACKE_dtzrzf,
-    LAPACKE_dtzrzf_work,
-    LAPACKE_dlatms,
-    LAPACKE_dlatms_work,
-    LAPACKE_dlagge,
-    LAPACKE_dlagge_work,
-    LAPACKE_dlagsy,
-    LAPACKE_dlagsy_work,
-    LAPACKE_dbdsvdx,
-    LAPACKE_dbdsvdx_work,
-    LAPACKE_dgesvdx,
-    LAPACKE_dgesvdx_work,
-    LAPACKE_dgetrf2,
-    LAPACKE_dgetrf2_work,
-    LAPACKE_dgges3,
-    LAPACKE_dgges3_work,
-    LAPACKE_dggev3,
-    LAPACKE_dggev3_work,
-    LAPACKE_dgghd3,
-    LAPACKE_dgghd3_work,
-    LAPACKE_dggsvd3,
-    LAPACKE_dggsvd3_work,
-    LAPACKE_dggsvp3,
-    LAPACKE_dggsvp3_work,
-    LAPACKE_dlapmt,
-    LAPACKE_dlapmt_work,
-    LAPACKE_dlascl,
-    LAPACKE_dlascl_work,
-    LAPACKE_dorcsd2by1,
-    LAPACKE_dorcsd2by1_work,
-    LAPACKE_dpotrf2,
-    LAPACKE_dpotrf2_work,
-    LAPACKE_dsytrf_rook,
-    LAPACKE_dsytrf_rook_work,
-    LAPACKE_dsytrs_rook,
-    LAPACKE_dsytrs_rook_work,
-    LAPACKE_dgelq,
-    LAPACKE_dgelq_work,
-    LAPACKE_dgemlq,
-    LAPACKE_dgemlq_work,
-    LAPACKE_dgemqr,
-    LAPACKE_dgemqr_work,
-    LAPACKE_dgeqr,
-    LAPACKE_dgeqr_work,
-    LAPACKE_dgetsls,
-    LAPACKE_dgetsls_work,
-    LAPACKE_dsbev_2stage,
-    LAPACKE_dsbev_2stage_work,
-    LAPACKE_dsbevd_2stage,
-    LAPACKE_dsbevd_2stage_work,
-    LAPACKE_dsbevx_2stage,
-    LAPACKE_dsbevx_2stage_work,
-    LAPACKE_dsycon_3,
-    LAPACKE_dsycon_3_work,
-    LAPACKE_dsyev_2stage,
-    LAPACKE_dsyev_2stage_work,
-    LAPACKE_dsyevd_2stage,
-    LAPACKE_dsyevd_2stage_work,
-    LAPACKE_dsyevr_2stage,
-    LAPACKE_dsyevr_2stage_work,
-    LAPACKE_dsyevx_2stage,
-    LAPACKE_dsyevx_2stage_work,
-    LAPACKE_dsygv_2stage,
-    LAPACKE_dsygv_2stage_work,
-    LAPACKE_dsysv_aa,
-    LAPACKE_dsysv_aa_work,
-    LAPACKE_dsysv_rk,
-    LAPACKE_dsysv_rk_work,
-    LAPACKE_dsytrf_aa,
-    LAPACKE_dsytrf_aa_work,
-    LAPACKE_dsytrf_rk,
-    LAPACKE_dsytrf_rk_work,
-    LAPACKE_dsytri_3,
-    LAPACKE_dsytri_3_work,
-    LAPACKE_dsytrs_aa,
-    LAPACKE_dsytrs_aa_work,
-    LAPACKE_dsytrs_3,
-    LAPACKE_dsytrs_3_work,
-    LAPACKE_dlassq,
-    LAPACKE_dlassq_work,
-    LAPACKE_dsysv_aa_2stage,
-    LAPACKE_dsysv_aa_2stage_work,
-    LAPACKE_dsytrf_aa_2stage,
-    LAPACKE_dsytrf_aa_2stage_work,
-    LAPACKE_dsytrs_aa_2stage,
-    LAPACKE_dsytrs_aa_2stage_work,
-    LAPACKE_dgesvdq,
-    LAPACKE_dgesvdq_work,
-    LAPACKE_slag2d,
-    LAPACKE_slag2d_work,
-);
-@lapackeobjss = (
-    LAPACKE_sgb_nancheck,
-    LAPACKE_sgb_trans,
-    LAPACKE_sge_nancheck,
-    LAPACKE_sge_trans,
-    LAPACKE_sgg_nancheck,
-    LAPACKE_sgg_trans,
-    LAPACKE_sgt_nancheck,
-    LAPACKE_shs_nancheck,
-    LAPACKE_shs_trans,
-    LAPACKE_s_nancheck,
-    LAPACKE_spb_nancheck,
-    LAPACKE_spb_trans,
-    LAPACKE_spf_nancheck,
-    LAPACKE_spf_trans,
-    LAPACKE_spo_nancheck,
-    LAPACKE_spo_trans,
-    LAPACKE_spp_nancheck,
-    LAPACKE_spp_trans,
-    LAPACKE_spt_nancheck,
-    LAPACKE_ssb_nancheck,
-    LAPACKE_ssb_trans,
-    LAPACKE_ssp_nancheck,
-    LAPACKE_ssp_trans,
-    LAPACKE_sst_nancheck,
-    LAPACKE_ssy_nancheck,
-    LAPACKE_ssy_trans,
-    LAPACKE_stb_nancheck,
-    LAPACKE_stb_trans,
-    LAPACKE_stf_nancheck,
-    LAPACKE_stf_trans,
-    LAPACKE_stp_nancheck,
-    LAPACKE_stp_trans,
-    LAPACKE_str_nancheck,
-    LAPACKE_str_trans,
-    LAPACKE_sbbcsd,
-    LAPACKE_sbbcsd_work,
-    LAPACKE_sbdsdc,
-    LAPACKE_sbdsdc_work,
-    LAPACKE_sbdsqr,
-    LAPACKE_sbdsqr_work,
-    LAPACKE_sdisna,
-    LAPACKE_sdisna_work,
-    LAPACKE_sgbbrd,
-    LAPACKE_sgbbrd_work,
-    LAPACKE_sgbcon,
-    LAPACKE_sgbcon_work,
-    LAPACKE_sgbequ,
-    LAPACKE_sgbequ_work,
-    LAPACKE_sgbequb,
-    LAPACKE_sgbequb_work,
-    LAPACKE_sgbrfs,
-    LAPACKE_sgbrfs_work,
-    LAPACKE_sgbsv,
-    LAPACKE_sgbsv_work,
-    LAPACKE_sgbsvx,
-    LAPACKE_sgbsvx_work,
-    LAPACKE_sgbtrf,
-    LAPACKE_sgbtrf_work,
-    LAPACKE_sgbtrs,
-    LAPACKE_sgbtrs_work,
-    LAPACKE_sgebak,
-    LAPACKE_sgebak_work,
-    LAPACKE_sgebal,
-    LAPACKE_sgebal_work,
-    LAPACKE_sgebrd,
-    LAPACKE_sgebrd_work,
-    LAPACKE_sgecon,
-    LAPACKE_sgecon_work,
-    LAPACKE_sgeequ,
-    LAPACKE_sgeequ_work,
-    LAPACKE_sgeequb,
-    LAPACKE_sgeequb_work,
-    LAPACKE_sgees,
-    LAPACKE_sgees_work,
-    LAPACKE_sgeesx,
-    LAPACKE_sgeesx_work,
-    LAPACKE_sgeev,
-    LAPACKE_sgeev_work,
-    LAPACKE_sgeevx,
-    LAPACKE_sgeevx_work,
-    LAPACKE_sgehrd,
-    LAPACKE_sgehrd_work,
-    LAPACKE_sgejsv,
-    LAPACKE_sgejsv_work,
-    LAPACKE_sgelq2,
-    LAPACKE_sgelq2_work,
-    LAPACKE_sgelqf,
-    LAPACKE_sgelqf_work,
-    LAPACKE_sgels,
-    LAPACKE_sgels_work,
-    LAPACKE_sgelsd,
-    LAPACKE_sgelsd_work,
-    LAPACKE_sgelss,
-    LAPACKE_sgelss_work,
-    LAPACKE_sgelsy,
-    LAPACKE_sgelsy_work,
-    LAPACKE_sgemqrt,
-    LAPACKE_sgemqrt_work,
-    LAPACKE_sgeqlf,
-    LAPACKE_sgeqlf_work,
-    LAPACKE_sgeqp3,
-    LAPACKE_sgeqp3_work,
-    LAPACKE_sgeqr2,
-    LAPACKE_sgeqr2_work,
-    LAPACKE_sgeqrf,
-    LAPACKE_sgeqrf_work,
-    LAPACKE_sgeqrfp,
-    LAPACKE_sgeqrfp_work,
-    LAPACKE_sgeqrt,
-    LAPACKE_sgeqrt2,
-    LAPACKE_sgeqrt2_work,
-    LAPACKE_sgeqrt3,
-    LAPACKE_sgeqrt3_work,
-    LAPACKE_sgeqrt_work,
-    LAPACKE_sgerfs,
-    LAPACKE_sgerfs_work,
-    LAPACKE_sgerqf,
-    LAPACKE_sgerqf_work,
-    LAPACKE_sgesdd,
-    LAPACKE_sgesdd_work,
-    LAPACKE_sgesv,
-    LAPACKE_sgesv_work,
-    LAPACKE_sgesvd,
-    LAPACKE_sgesvd_work,
-    LAPACKE_sgesvj,
-    LAPACKE_sgesvj_work,
-    LAPACKE_sgesvx,
-    LAPACKE_sgesvx_work,
-    LAPACKE_sgetf2,
-    LAPACKE_sgetf2_work,
-    LAPACKE_sgetrf,
-    LAPACKE_sgetrf_work,
-    LAPACKE_sgetri,
-    LAPACKE_sgetri_work,
-    LAPACKE_sgetrs,
-    LAPACKE_sgetrs_work,
-    LAPACKE_sggbak,
-    LAPACKE_sggbak_work,
-    LAPACKE_sggbal,
-    LAPACKE_sggbal_work,
-    LAPACKE_sgges,
-    LAPACKE_sgges_work,
-    LAPACKE_sggesx,
-    LAPACKE_sggesx_work,
-    LAPACKE_sggev,
-    LAPACKE_sggev_work,
-    LAPACKE_sggevx,
-    LAPACKE_sggevx_work,
-    LAPACKE_sggglm,
-    LAPACKE_sggglm_work,
-    LAPACKE_sgghrd,
-    LAPACKE_sgghrd_work,
-    LAPACKE_sgglse,
-    LAPACKE_sgglse_work,
-    LAPACKE_sggqrf,
-    LAPACKE_sggqrf_work,
-    LAPACKE_sggrqf,
-    LAPACKE_sggrqf_work,
-    LAPACKE_sgtcon,
-    LAPACKE_sgtcon_work,
-    LAPACKE_sgtrfs,
-    LAPACKE_sgtrfs_work,
-    LAPACKE_sgtsv,
-    LAPACKE_sgtsv_work,
-    LAPACKE_sgtsvx,
-    LAPACKE_sgtsvx_work,
-    LAPACKE_sgttrf,
-    LAPACKE_sgttrf_work,
-    LAPACKE_sgttrs,
-    LAPACKE_sgttrs_work,
-    LAPACKE_shgeqz,
-    LAPACKE_shgeqz_work,
-    LAPACKE_shsein,
-    LAPACKE_shsein_work,
-    LAPACKE_shseqr,
-    LAPACKE_shseqr_work,
-    LAPACKE_slacn2,
-    LAPACKE_slacn2_work,
-    LAPACKE_slacpy,
-    LAPACKE_slacpy_work,
-    LAPACKE_slamch,
-    LAPACKE_slamch_work,
-    LAPACKE_slange,
-    LAPACKE_slange_work,
-    LAPACKE_slansy,
-    LAPACKE_slansy_work,
-    LAPACKE_slantr,
-    LAPACKE_slantr_work,
-    LAPACKE_slapmr,
-    LAPACKE_slapmr_work,
-    LAPACKE_slapy2,
-    LAPACKE_slapy2_work,
-    LAPACKE_slapy3,
-    LAPACKE_slapy3_work,
-    LAPACKE_slarfb,
-    LAPACKE_slarfb_work,
-    LAPACKE_slarfg,
-    LAPACKE_slarfg_work,
-    LAPACKE_slarft,
-    LAPACKE_slarft_work,
-    LAPACKE_slarfx,
-    LAPACKE_slarfx_work,
-    LAPACKE_slarnv,
-    LAPACKE_slarnv_work,
-    LAPACKE_slartgp,
-    LAPACKE_slartgp_work,
-    LAPACKE_slartgs,
-    LAPACKE_slartgs_work,
-    LAPACKE_slaset,
-    LAPACKE_slaset_work,
-    LAPACKE_slasrt,
-    LAPACKE_slasrt_work,
-    LAPACKE_slaswp,
-    LAPACKE_slaswp_work,
-    LAPACKE_slauum,
-    LAPACKE_slauum_work,
-    LAPACKE_sopgtr,
-    LAPACKE_sopgtr_work,
-    LAPACKE_sopmtr,
-    LAPACKE_sopmtr_work,
-    LAPACKE_sorbdb,
-    LAPACKE_sorbdb_work,
-    LAPACKE_sorcsd,
-    LAPACKE_sorcsd_work,
-    LAPACKE_sorgbr,
-    LAPACKE_sorgbr_work,
-    LAPACKE_sorghr,
-    LAPACKE_sorghr_work,
-    LAPACKE_sorglq,
-    LAPACKE_sorglq_work,
-    LAPACKE_sorgql,
-    LAPACKE_sorgql_work,
-    LAPACKE_sorgqr,
-    LAPACKE_sorgqr_work,
-    LAPACKE_sorgrq,
-    LAPACKE_sorgrq_work,
-    LAPACKE_sorgtr,
-    LAPACKE_sorgtr_work,
-    LAPACKE_sormbr,
-    LAPACKE_sormbr_work,
-    LAPACKE_sormhr,
-    LAPACKE_sormhr_work,
-    LAPACKE_sormlq,
-    LAPACKE_sormlq_work,
-    LAPACKE_sormql,
-    LAPACKE_sormql_work,
-    LAPACKE_sormqr,
-    LAPACKE_sormqr_work,
-    LAPACKE_sormrq,
-    LAPACKE_sormrq_work,
-    LAPACKE_sormrz,
-    LAPACKE_sormrz_work,
-    LAPACKE_sormtr,
-    LAPACKE_sormtr_work,
-    LAPACKE_spbcon,
-    LAPACKE_spbcon_work,
-    LAPACKE_spbequ,
-    LAPACKE_spbequ_work,
-    LAPACKE_spbrfs,
-    LAPACKE_spbrfs_work,
-    LAPACKE_spbstf,
-    LAPACKE_spbstf_work,
-    LAPACKE_spbsv,
-    LAPACKE_spbsv_work,
-    LAPACKE_spbsvx,
-    LAPACKE_spbsvx_work,
-    LAPACKE_spbtrf,
-    LAPACKE_spbtrf_work,
-    LAPACKE_spbtrs,
-    LAPACKE_spbtrs_work,
-    LAPACKE_spftrf,
-    LAPACKE_spftrf_work,
-    LAPACKE_spftri,
-    LAPACKE_spftri_work,
-    LAPACKE_spftrs,
-    LAPACKE_spftrs_work,
-    LAPACKE_spocon,
-    LAPACKE_spocon_work,
-    LAPACKE_spoequ,
-    LAPACKE_spoequ_work,
-    LAPACKE_spoequb,
-    LAPACKE_spoequb_work,
-    LAPACKE_sporfs,
-    LAPACKE_sporfs_work,
-    LAPACKE_sposv,
-    LAPACKE_sposv_work,
-    LAPACKE_sposvx,
-    LAPACKE_sposvx_work,
-    LAPACKE_spotrf,
-    LAPACKE_spotrf_work,
-    LAPACKE_spotri,
-    LAPACKE_spotri_work,
-    LAPACKE_spotrs,
-    LAPACKE_spotrs_work,
-    LAPACKE_sppcon,
-    LAPACKE_sppcon_work,
-    LAPACKE_sppequ,
-    LAPACKE_sppequ_work,
-    LAPACKE_spprfs,
-    LAPACKE_spprfs_work,
-    LAPACKE_sppsv,
-    LAPACKE_sppsv_work,
-    LAPACKE_sppsvx,
-    LAPACKE_sppsvx_work,
-    LAPACKE_spptrf,
-    LAPACKE_spptrf_work,
-    LAPACKE_spptri,
-    LAPACKE_spptri_work,
-    LAPACKE_spptrs,
-    LAPACKE_spptrs_work,
-    LAPACKE_spstrf,
-    LAPACKE_spstrf_work,
-    LAPACKE_sptcon,
-    LAPACKE_sptcon_work,
-    LAPACKE_spteqr,
-    LAPACKE_spteqr_work,
-    LAPACKE_sptrfs,
-    LAPACKE_sptrfs_work,
-    LAPACKE_sptsv,
-    LAPACKE_sptsv_work,
-    LAPACKE_sptsvx,
-    LAPACKE_sptsvx_work,
-    LAPACKE_spttrf,
-    LAPACKE_spttrf_work,
-    LAPACKE_spttrs,
-    LAPACKE_spttrs_work,
-    LAPACKE_ssbev,
-    LAPACKE_ssbev_work,
-    LAPACKE_ssbevd,
-    LAPACKE_ssbevd_work,
-    LAPACKE_ssbevx,
-    LAPACKE_ssbevx_work,
-    LAPACKE_ssbgst,
-    LAPACKE_ssbgst_work,
-    LAPACKE_ssbgv,
-    LAPACKE_ssbgv_work,
-    LAPACKE_ssbgvd,
-    LAPACKE_ssbgvd_work,
-    LAPACKE_ssbgvx,
-    LAPACKE_ssbgvx_work,
-    LAPACKE_ssbtrd,
-    LAPACKE_ssbtrd_work,
-    LAPACKE_ssfrk,
-    LAPACKE_ssfrk_work,
-    LAPACKE_sspcon,
-    LAPACKE_sspcon_work,
-    LAPACKE_sspev,
-    LAPACKE_sspev_work,
-    LAPACKE_sspevd,
-    LAPACKE_sspevd_work,
-    LAPACKE_sspevx,
-    LAPACKE_sspevx_work,
-    LAPACKE_sspgst,
-    LAPACKE_sspgst_work,
-    LAPACKE_sspgv,
-    LAPACKE_sspgv_work,
-    LAPACKE_sspgvd,
-    LAPACKE_sspgvd_work,
-    LAPACKE_sspgvx,
-    LAPACKE_sspgvx_work,
-    LAPACKE_ssprfs,
-    LAPACKE_ssprfs_work,
-    LAPACKE_sspsv,
-    LAPACKE_sspsv_work,
-    LAPACKE_sspsvx,
-    LAPACKE_sspsvx_work,
-    LAPACKE_ssptrd,
-    LAPACKE_ssptrd_work,
-    LAPACKE_ssptrf,
-    LAPACKE_ssptrf_work,
-    LAPACKE_ssptri,
-    LAPACKE_ssptri_work,
-    LAPACKE_ssptrs,
-    LAPACKE_ssptrs_work,
-    LAPACKE_sstebz,
-    LAPACKE_sstebz_work,
-    LAPACKE_sstedc,
-    LAPACKE_sstedc_work,
-    LAPACKE_sstegr,
-    LAPACKE_sstegr_work,
-    LAPACKE_sstein,
-    LAPACKE_sstein_work,
-    LAPACKE_sstemr,
-    LAPACKE_sstemr_work,
-    LAPACKE_ssteqr,
-    LAPACKE_ssteqr_work,
-    LAPACKE_ssterf,
-    LAPACKE_ssterf_work,
-    LAPACKE_sstev,
-    LAPACKE_sstev_work,
-    LAPACKE_sstevd,
-    LAPACKE_sstevd_work,
-    LAPACKE_sstevr,
-    LAPACKE_sstevr_work,
-    LAPACKE_sstevx,
-    LAPACKE_sstevx_work,
-    LAPACKE_ssycon,
-    LAPACKE_ssycon_work,
-    LAPACKE_ssyconv,
-    LAPACKE_ssyconv_work,
-    LAPACKE_ssyequb,
-    LAPACKE_ssyequb_work,
-    LAPACKE_ssyev,
-    LAPACKE_ssyev_work,
-    LAPACKE_ssyevd,
-    LAPACKE_ssyevd_work,
-    LAPACKE_ssyevr,
-    LAPACKE_ssyevr_work,
-    LAPACKE_ssyevx,
-    LAPACKE_ssyevx_work,
-    LAPACKE_ssygst,
-    LAPACKE_ssygst_work,
-    LAPACKE_ssygv,
-    LAPACKE_ssygv_work,
-    LAPACKE_ssygvd,
-    LAPACKE_ssygvd_work,
-    LAPACKE_ssygvx,
-    LAPACKE_ssygvx_work,
-    LAPACKE_ssyrfs,
-    LAPACKE_ssyrfs_work,
-    LAPACKE_ssysv,
-    LAPACKE_ssysv_rook,
-    LAPACKE_ssysv_rook_work,
-    LAPACKE_ssysv_work,
-    LAPACKE_ssysvx,
-    LAPACKE_ssysvx_work,
-    LAPACKE_ssyswapr,
-    LAPACKE_ssyswapr_work,
-    LAPACKE_ssytrd,
-    LAPACKE_ssytrd_work,
-    LAPACKE_ssytrf,
-    LAPACKE_ssytrf_work,
-    LAPACKE_ssytri,
-    LAPACKE_ssytri2,
-    LAPACKE_ssytri2_work,
-    LAPACKE_ssytri2x,
-    LAPACKE_ssytri2x_work,
-    LAPACKE_ssytri_work,
-    LAPACKE_ssytrs,
-    LAPACKE_ssytrs2,
-    LAPACKE_ssytrs2_work,
-    LAPACKE_ssytrs_work,
-    LAPACKE_stbcon,
-    LAPACKE_stbcon_work,
-    LAPACKE_stbrfs,
-    LAPACKE_stbrfs_work,
-    LAPACKE_stbtrs,
-    LAPACKE_stbtrs_work,
-    LAPACKE_stfsm,
-    LAPACKE_stfsm_work,
-    LAPACKE_stftri,
-    LAPACKE_stftri_work,
-    LAPACKE_stfttp,
-    LAPACKE_stfttp_work,
-    LAPACKE_stfttr,
-    LAPACKE_stfttr_work,
-    LAPACKE_stgevc,
-    LAPACKE_stgevc_work,
-    LAPACKE_stgexc,
-    LAPACKE_stgexc_work,
-    LAPACKE_stgsen,
-    LAPACKE_stgsen_work,
-    LAPACKE_stgsja,
-    LAPACKE_stgsja_work,
-    LAPACKE_stgsna,
-    LAPACKE_stgsna_work,
-    LAPACKE_stgsyl,
-    LAPACKE_stgsyl_work,
-    LAPACKE_stpcon,
-    LAPACKE_stpcon_work,
-    LAPACKE_stpmqrt,
-    LAPACKE_stpmqrt_work,
-    LAPACKE_stpqrt2,
-    LAPACKE_stpqrt2_work,
-    LAPACKE_stprfb,
-    LAPACKE_stprfb_work,
-    LAPACKE_stprfs,
-    LAPACKE_stprfs_work,
-    LAPACKE_stptri,
-    LAPACKE_stptri_work,
-    LAPACKE_stptrs,
-    LAPACKE_stptrs_work,
-    LAPACKE_stpttf,
-    LAPACKE_stpttf_work,
-    LAPACKE_stpttr,
-    LAPACKE_stpttr_work,
-    LAPACKE_strcon,
-    LAPACKE_strcon_work,
-    LAPACKE_strevc,
-    LAPACKE_strevc_work,
-    LAPACKE_strexc,
-    LAPACKE_strexc_work,
-    LAPACKE_strrfs,
-    LAPACKE_strrfs_work,
-    LAPACKE_strsen,
-    LAPACKE_strsen_work,
-    LAPACKE_strsna,
-    LAPACKE_strsna_work,
-    LAPACKE_strsyl,
-    LAPACKE_strsyl_work,
-    LAPACKE_strtri,
-    LAPACKE_strtri_work,
-    LAPACKE_strtrs,
-    LAPACKE_strtrs_work,
-    LAPACKE_strttf,
-    LAPACKE_strttf_work,
-    LAPACKE_strttp,
-    LAPACKE_strttp_work,
-    LAPACKE_stzrzf,
-    LAPACKE_stzrzf_work,
-    LAPACKE_slatms,
-    LAPACKE_slatms_work,
-    LAPACKE_slagge,
-    LAPACKE_slagge_work,
-    LAPACKE_slagsy,
-    LAPACKE_slagsy_work,
-    LAPACKE_sbdsvdx,
-    LAPACKE_sbdsvdx_work,
-    LAPACKE_sgesvdx,
-    LAPACKE_sgesvdx_work,
-    LAPACKE_sgetrf2,
-    LAPACKE_sgetrf2_work,
-    LAPACKE_sgges3,
-    LAPACKE_sgges3_work,
-    LAPACKE_sggev3,
-    LAPACKE_sggev3_work,
-    LAPACKE_sgghd3,
-    LAPACKE_sgghd3_work,
-    LAPACKE_sggsvd3,
-    LAPACKE_sggsvd3_work,
-    LAPACKE_sggsvp3,
-    LAPACKE_sggsvp3_work,
-    LAPACKE_slapmt,
-    LAPACKE_slapmt_work,
-    LAPACKE_slascl,
-    LAPACKE_slascl_work,
-    LAPACKE_sorcsd2by1,
-    LAPACKE_sorcsd2by1_work,
-    LAPACKE_spotrf2,
-    LAPACKE_spotrf2_work,
-    LAPACKE_ssytrf_rook,
-    LAPACKE_ssytrf_rook_work,
-    LAPACKE_ssytrs_rook,
-    LAPACKE_ssytrs_rook_work,
-    LAPACKE_stpqrt,
-    LAPACKE_stpqrt_work,
-    LAPACKE_sgelq,
-    LAPACKE_sgelq_work,
-    LAPACKE_sgemlq,
-    LAPACKE_sgemlq_work,
-    LAPACKE_sgemqr,
-    LAPACKE_sgemqr_work,
-    LAPACKE_sgeqr,
-    LAPACKE_sgeqr_work,
-    LAPACKE_sgetsls,
-    LAPACKE_sgetsls_work,
-    LAPACKE_ssbev_2stage,
-    LAPACKE_ssbev_2stage_work,
-    LAPACKE_ssbevd_2stage,
-    LAPACKE_ssbevd_2stage_work,
-    LAPACKE_ssbevx_2stage,
-    LAPACKE_ssbevx_2stage_work,
-    LAPACKE_ssycon_3,
-    LAPACKE_ssycon_3_work,
-    LAPACKE_ssyev_2stage,
-    LAPACKE_ssyev_2stage_work,
-    LAPACKE_ssyevd_2stage,
-    LAPACKE_ssyevd_2stage_work,
-    LAPACKE_ssyevr_2stage,
-    LAPACKE_ssyevr_2stage_work,
-    LAPACKE_ssyevx_2stage,
-    LAPACKE_ssyevx_2stage_work,
-    LAPACKE_ssygv_2stage,
-    LAPACKE_ssygv_2stage_work,
-    LAPACKE_ssysv_aa,
-    LAPACKE_ssysv_aa_work,
-    LAPACKE_ssysv_rk,
-    LAPACKE_ssysv_rk_work,
-    LAPACKE_ssytrf_aa,
-    LAPACKE_ssytrf_aa_work,
-    LAPACKE_ssytrf_rk,
-    LAPACKE_ssytrf_rk_work,
-    LAPACKE_ssytri_3,
-    LAPACKE_ssytri_3_work,
-    LAPACKE_ssytrs_aa,
-    LAPACKE_ssytrs_aa_work,
-    LAPACKE_ssytrs_3,
-    LAPACKE_ssytrs_3_work,
-    LAPACKE_slassq,
-    LAPACKE_slassq_work,
-    LAPACKE_ssysv_aa_2stage,
-    LAPACKE_ssysv_aa_2stage_work,
-    LAPACKE_ssytrf_aa_2stage,
-    LAPACKE_ssytrf_aa_2stage_work,
-    LAPACKE_ssytrs_aa_2stage,
-    LAPACKE_ssytrs_aa_2stage_work,
-    LAPACKE_sgesvdq,
-    LAPACKE_sgesvdq_work,
-);
-@lapackeobjsz = (    
-    LAPACKE_zgb_nancheck,
-    LAPACKE_zgb_trans,
-    LAPACKE_zge_nancheck,
-    LAPACKE_zge_trans,
-    LAPACKE_zgg_nancheck,
-    LAPACKE_zgg_trans,
-    LAPACKE_zgt_nancheck,
-    LAPACKE_zhb_nancheck,
-    LAPACKE_zhb_trans,
-    LAPACKE_zhe_nancheck,
-    LAPACKE_zhe_trans,
-    LAPACKE_zhp_nancheck,
-    LAPACKE_zhp_trans,
-    LAPACKE_zhs_nancheck,
-    LAPACKE_zhs_trans,
-    LAPACKE_z_nancheck,
-    LAPACKE_zpb_nancheck,
-    LAPACKE_zpb_trans,
-    LAPACKE_zpf_nancheck,
-    LAPACKE_zpf_trans,
-    LAPACKE_zpo_nancheck,
-    LAPACKE_zpo_trans,
-    LAPACKE_zpp_nancheck,
-    LAPACKE_zpp_trans,
-    LAPACKE_zpt_nancheck,
-    LAPACKE_zsp_nancheck,
-    LAPACKE_zsp_trans,
-    LAPACKE_zst_nancheck,
-    LAPACKE_zsy_nancheck,
-    LAPACKE_zsy_trans,
-    LAPACKE_ztb_nancheck,
-    LAPACKE_ztb_trans,
-    LAPACKE_ztf_nancheck,
-    LAPACKE_ztf_trans,
-    LAPACKE_ztp_nancheck,
-    LAPACKE_ztp_trans,
-    LAPACKE_ztr_nancheck,
-    LAPACKE_ztr_trans,
-    LAPACKE_zbbcsd,
-    LAPACKE_zbbcsd_work,
-    LAPACKE_zbdsqr,
-    LAPACKE_zbdsqr_work,
-    LAPACKE_zcgesv,
-    LAPACKE_zcgesv_work,
-    LAPACKE_zcposv,
-    LAPACKE_zcposv_work,
-    LAPACKE_zgbbrd,
-    LAPACKE_zgbbrd_work,
-    LAPACKE_zgbcon,
-    LAPACKE_zgbcon_work,
-    LAPACKE_zgbequ,
-    LAPACKE_zgbequ_work,
-    LAPACKE_zgbequb,
-    LAPACKE_zgbequb_work,
-    LAPACKE_zgbrfs,
-    LAPACKE_zgbrfs_work,
-    LAPACKE_zgbsv,
-    LAPACKE_zgbsv_work,
-    LAPACKE_zgbsvx,
-    LAPACKE_zgbsvx_work,
-    LAPACKE_zgbtrf,
-    LAPACKE_zgbtrf_work,
-    LAPACKE_zgbtrs,
-    LAPACKE_zgbtrs_work,
-    LAPACKE_zgebak,
-    LAPACKE_zgebak_work,
-    LAPACKE_zgebal,
-    LAPACKE_zgebal_work,
-    LAPACKE_zgebrd,
-    LAPACKE_zgebrd_work,
-    LAPACKE_zgecon,
-    LAPACKE_zgecon_work,
-    LAPACKE_zgeequ,
-    LAPACKE_zgeequ_work,
-    LAPACKE_zgeequb,
-    LAPACKE_zgeequb_work,
-    LAPACKE_zgees,
-    LAPACKE_zgees_work,
-    LAPACKE_zgeesx,
-    LAPACKE_zgeesx_work,
-    LAPACKE_zgeev,
-    LAPACKE_zgeev_work,
-    LAPACKE_zgeevx,
-    LAPACKE_zgeevx_work,
-    LAPACKE_zgehrd,
-    LAPACKE_zgehrd_work,
-    LAPACKE_zgelq2,
-    LAPACKE_zgelq2_work,
-    LAPACKE_zgelqf,
-    LAPACKE_zgelqf_work,
-    LAPACKE_zgels,
-    LAPACKE_zgels_work,
-    LAPACKE_zgelsd,
-    LAPACKE_zgelsd_work,
-    LAPACKE_zgelss,
-    LAPACKE_zgelss_work,
-    LAPACKE_zgelsy,
-    LAPACKE_zgelsy_work,
-    LAPACKE_zgemqrt,
-    LAPACKE_zgemqrt_work,
-    LAPACKE_zgeqlf,
-    LAPACKE_zgeqlf_work,
-    LAPACKE_zgeqp3,
-    LAPACKE_zgeqp3_work,
-    LAPACKE_zgeqr2,
-    LAPACKE_zgeqr2_work,
-    LAPACKE_zgeqrf,
-    LAPACKE_zgeqrf_work,
-    LAPACKE_zgeqrfp,
-    LAPACKE_zgeqrfp_work,
-    LAPACKE_zgeqrt,
-    LAPACKE_zgeqrt2,
-    LAPACKE_zgeqrt2_work,
-    LAPACKE_zgeqrt3,
-    LAPACKE_zgeqrt3_work,
-    LAPACKE_zgeqrt_work,
-    LAPACKE_zgerfs,
-    LAPACKE_zgerfs_work,
-    LAPACKE_zgerqf,
-    LAPACKE_zgerqf_work,
-    LAPACKE_zgesdd,
-    LAPACKE_zgesdd_work,
-    LAPACKE_zgesv,
-    LAPACKE_zgesv_work,
-    LAPACKE_zgesvd,
-    LAPACKE_zgesvd_work,
-    LAPACKE_zgesvx,
-    LAPACKE_zgesvx_work,
-    LAPACKE_zgetf2,
-    LAPACKE_zgetf2_work,
-    LAPACKE_zgetrf,
-    LAPACKE_zgetrf_work,
-    LAPACKE_zgetri,
-    LAPACKE_zgetri_work,
-    LAPACKE_zgetrs,
-    LAPACKE_zgetrs_work,
-    LAPACKE_zggbak,
-    LAPACKE_zggbak_work,
-    LAPACKE_zggbal,
-    LAPACKE_zggbal_work,
-    LAPACKE_zgges,
-    LAPACKE_zgges_work,
-    LAPACKE_zggesx,
-    LAPACKE_zggesx_work,
-    LAPACKE_zggev,
-    LAPACKE_zggev_work,
-    LAPACKE_zggevx,
-    LAPACKE_zggevx_work,
-    LAPACKE_zggglm,
-    LAPACKE_zggglm_work,
-    LAPACKE_zgghrd,
-    LAPACKE_zgghrd_work,
-    LAPACKE_zgglse,
-    LAPACKE_zgglse_work,
-    LAPACKE_zggqrf,
-    LAPACKE_zggqrf_work,
-    LAPACKE_zggrqf,
-    LAPACKE_zggrqf_work,
-    LAPACKE_zgtcon,
-    LAPACKE_zgtcon_work,
-    LAPACKE_zgtrfs,
-    LAPACKE_zgtrfs_work,
-    LAPACKE_zgtsv,
-    LAPACKE_zgtsv_work,
-    LAPACKE_zgtsvx,
-    LAPACKE_zgtsvx_work,
-    LAPACKE_zgttrf,
-    LAPACKE_zgttrf_work,
-    LAPACKE_zgttrs,
-    LAPACKE_zgttrs_work,
-    LAPACKE_zhbev,
-    LAPACKE_zhbev_work,
-    LAPACKE_zhbevd,
-    LAPACKE_zhbevd_work,
-    LAPACKE_zhbevx,
-    LAPACKE_zhbevx_work,
-    LAPACKE_zhbgst,
-    LAPACKE_zhbgst_work,
-    LAPACKE_zhbgv,
-    LAPACKE_zhbgv_work,
-    LAPACKE_zhbgvd,
-    LAPACKE_zhbgvd_work,
-    LAPACKE_zhbgvx,
-    LAPACKE_zhbgvx_work,
-    LAPACKE_zhbtrd,
-    LAPACKE_zhbtrd_work,
-    LAPACKE_zhecon,
-    LAPACKE_zhecon_work,
-    LAPACKE_zheequb,
-    LAPACKE_zheequb_work,
-    LAPACKE_zheev,
-    LAPACKE_zheev_work,
-    LAPACKE_zheevd,
-    LAPACKE_zheevd_work,
-    LAPACKE_zheevr,
-    LAPACKE_zheevr_work,
-    LAPACKE_zheevx,
-    LAPACKE_zheevx_work,
-    LAPACKE_zhegst,
-    LAPACKE_zhegst_work,
-    LAPACKE_zhegv,
-    LAPACKE_zhegv_work,
-    LAPACKE_zhegvd,
-    LAPACKE_zhegvd_work,
-    LAPACKE_zhegvx,
-    LAPACKE_zhegvx_work,
-    LAPACKE_zherfs,
-    LAPACKE_zherfs_work,
-    LAPACKE_zhesv,
-    LAPACKE_zhesv_work,
-    LAPACKE_zhesvx,
-    LAPACKE_zhesvx_work,
-    LAPACKE_zheswapr,
-    LAPACKE_zheswapr_work,
-    LAPACKE_zhetrd,
-    LAPACKE_zhetrd_work,
-    LAPACKE_zhetrf,
-    LAPACKE_zhetrf_work,
-    LAPACKE_zhetri,
-    LAPACKE_zhetri2,
-    LAPACKE_zhetri2_work,
-    LAPACKE_zhetri2x,
-    LAPACKE_zhetri2x_work,
-    LAPACKE_zhetri_work,
-    LAPACKE_zhetrs,
-    LAPACKE_zhetrs2,
-    LAPACKE_zhetrs2_work,
-    LAPACKE_zhetrs_work,
-    LAPACKE_zhfrk,
-    LAPACKE_zhfrk_work,
-    LAPACKE_zhgeqz,
-    LAPACKE_zhgeqz_work,
-    LAPACKE_zhpcon,
-    LAPACKE_zhpcon_work,
-    LAPACKE_zhpev,
-    LAPACKE_zhpev_work,
-    LAPACKE_zhpevd,
-    LAPACKE_zhpevd_work,
-    LAPACKE_zhpevx,
-    LAPACKE_zhpevx_work,
-    LAPACKE_zhpgst,
-    LAPACKE_zhpgst_work,
-    LAPACKE_zhpgv,
-    LAPACKE_zhpgv_work,
-    LAPACKE_zhpgvd,
-    LAPACKE_zhpgvd_work,
-    LAPACKE_zhpgvx,
-    LAPACKE_zhpgvx_work,
-    LAPACKE_zhprfs,
-    LAPACKE_zhprfs_work,
-    LAPACKE_zhpsv,
-    LAPACKE_zhpsv_work,
-    LAPACKE_zhpsvx,
-    LAPACKE_zhpsvx_work,
-    LAPACKE_zhptrd,
-    LAPACKE_zhptrd_work,
-    LAPACKE_zhptrf,
-    LAPACKE_zhptrf_work,
-    LAPACKE_zhptri,
-    LAPACKE_zhptri_work,
-    LAPACKE_zhptrs,
-    LAPACKE_zhptrs_work,
-    LAPACKE_zhsein,
-    LAPACKE_zhsein_work,
-    LAPACKE_zhseqr,
-    LAPACKE_zhseqr_work,
-    LAPACKE_zlacgv,
-    LAPACKE_zlacgv_work,
-    LAPACKE_zlacn2,
-    LAPACKE_zlacn2_work,
-    LAPACKE_zlacp2,
-    LAPACKE_zlacp2_work,
-    LAPACKE_zlacpy,
-    LAPACKE_zlacpy_work,
-    LAPACKE_zlag2c,
-    LAPACKE_zlag2c_work,
-    LAPACKE_zlange,
-    LAPACKE_zlange_work,
-    LAPACKE_zlanhe,
-    LAPACKE_zlanhe_work,
-    LAPACKE_zlansy,
-    LAPACKE_zlansy_work,
-    LAPACKE_zlantr,
-    LAPACKE_zlantr_work,
-    LAPACKE_zlapmr,
-    LAPACKE_zlapmr_work,
-    LAPACKE_zlarfb,
-    LAPACKE_zlarfb_work,
-    LAPACKE_zlarfg,
-    LAPACKE_zlarfg_work,
-    LAPACKE_zlarft,
-    LAPACKE_zlarft_work,
-    LAPACKE_zlarfx,
-    LAPACKE_zlarfx_work,
-    LAPACKE_zlarnv,
-    LAPACKE_zlarnv_work,
-    LAPACKE_zlaset,
-    LAPACKE_zlaset_work,
-    LAPACKE_zlaswp,
-    LAPACKE_zlaswp_work,
-    LAPACKE_zlauum,
-    LAPACKE_zlauum_work,
-    LAPACKE_zpbcon,
-    LAPACKE_zpbcon_work,
-    LAPACKE_zpbequ,
-    LAPACKE_zpbequ_work,
-    LAPACKE_zpbrfs,
-    LAPACKE_zpbrfs_work,
-    LAPACKE_zpbstf,
-    LAPACKE_zpbstf_work,
-    LAPACKE_zpbsv,
-    LAPACKE_zpbsv_work,
-    LAPACKE_zpbsvx,
-    LAPACKE_zpbsvx_work,
-    LAPACKE_zpbtrf,
-    LAPACKE_zpbtrf_work,
-    LAPACKE_zpbtrs,
-    LAPACKE_zpbtrs_work,
-    LAPACKE_zpftrf,
-    LAPACKE_zpftrf_work,
-    LAPACKE_zpftri,
-    LAPACKE_zpftri_work,
-    LAPACKE_zpftrs,
-    LAPACKE_zpftrs_work,
-    LAPACKE_zpocon,
-    LAPACKE_zpocon_work,
-    LAPACKE_zpoequ,
-    LAPACKE_zpoequ_work,
-    LAPACKE_zpoequb,
-    LAPACKE_zpoequb_work,
-    LAPACKE_zporfs,
-    LAPACKE_zporfs_work,
-    LAPACKE_zposv,
-    LAPACKE_zposv_work,
-    LAPACKE_zposvx,
-    LAPACKE_zposvx_work,
-    LAPACKE_zpotrf,
-    LAPACKE_zpotrf_work,
-    LAPACKE_zpotri,
-    LAPACKE_zpotri_work,
-    LAPACKE_zpotrs,
-    LAPACKE_zpotrs_work,
-    LAPACKE_zppcon,
-    LAPACKE_zppcon_work,
-    LAPACKE_zppequ,
-    LAPACKE_zppequ_work,
-    LAPACKE_zpprfs,
-    LAPACKE_zpprfs_work,
-    LAPACKE_zppsv,
-    LAPACKE_zppsv_work,
-    LAPACKE_zppsvx,
-    LAPACKE_zppsvx_work,
-    LAPACKE_zpptrf,
-    LAPACKE_zpptrf_work,
-    LAPACKE_zpptri,
-    LAPACKE_zpptri_work,
-    LAPACKE_zpptrs,
-    LAPACKE_zpptrs_work,
-    LAPACKE_zpstrf,
-    LAPACKE_zpstrf_work,
-    LAPACKE_zptcon,
-    LAPACKE_zptcon_work,
-    LAPACKE_zpteqr,
-    LAPACKE_zpteqr_work,
-    LAPACKE_zptrfs,
-    LAPACKE_zptrfs_work,
-    LAPACKE_zptsv,
-    LAPACKE_zptsv_work,
-    LAPACKE_zptsvx,
-    LAPACKE_zptsvx_work,
-    LAPACKE_zpttrf,
-    LAPACKE_zpttrf_work,
-    LAPACKE_zpttrs,
-    LAPACKE_zpttrs_work,
-    LAPACKE_zspcon,
-    LAPACKE_zspcon_work,
-    LAPACKE_zsprfs,
-    LAPACKE_zsprfs_work,
-    LAPACKE_zspsv,
-    LAPACKE_zspsv_work,
-    LAPACKE_zspsvx,
-    LAPACKE_zspsvx_work,
-    LAPACKE_zsptrf,
-    LAPACKE_zsptrf_work,
-    LAPACKE_zsptri,
-    LAPACKE_zsptri_work,
-    LAPACKE_zsptrs,
-    LAPACKE_zsptrs_work,
-    LAPACKE_zstedc,
-    LAPACKE_zstedc_work,
-    LAPACKE_zstegr,
-    LAPACKE_zstegr_work,
-    LAPACKE_zstein,
-    LAPACKE_zstein_work,
-    LAPACKE_zstemr,
-    LAPACKE_zstemr_work,
-    LAPACKE_zsteqr,
-    LAPACKE_zsteqr_work,
-    LAPACKE_zsycon,
-    LAPACKE_zsycon_work,
-    LAPACKE_zsyconv,
-    LAPACKE_zsyconv_work,
-    LAPACKE_zsyequb,
-    LAPACKE_zsyequb_work,
-    LAPACKE_zsyrfs,
-    LAPACKE_zsyrfs_work,
-    LAPACKE_zsysv,
-    LAPACKE_zsysv_rook,
-    LAPACKE_zsysv_rook_work,
-    LAPACKE_zsysv_work,
-    LAPACKE_zsysvx,
-    LAPACKE_zsysvx_work,
-    LAPACKE_zsyswapr,
-    LAPACKE_zsyswapr_work,
-    LAPACKE_zsytrf,
-    LAPACKE_zsytrf_work,
-    LAPACKE_zsytri,
-    LAPACKE_zsytri2,
-    LAPACKE_zsytri2_work,
-    LAPACKE_zsytri2x,
-    LAPACKE_zsytri2x_work,
-    LAPACKE_zsytri_work,
-    LAPACKE_zsytrs,
-    LAPACKE_zsytrs2,
-    LAPACKE_zsytrs2_work,
-    LAPACKE_zsytrs_work,
-    LAPACKE_ztbcon,
-    LAPACKE_ztbcon_work,
-    LAPACKE_ztbrfs,
-    LAPACKE_ztbrfs_work,
-    LAPACKE_ztbtrs,
-    LAPACKE_ztbtrs_work,
-    LAPACKE_ztfsm,
-    LAPACKE_ztfsm_work,
-    LAPACKE_ztftri,
-    LAPACKE_ztftri_work,
-    LAPACKE_ztfttp,
-    LAPACKE_ztfttp_work,
-    LAPACKE_ztfttr,
-    LAPACKE_ztfttr_work,
-    LAPACKE_ztgevc,
-    LAPACKE_ztgevc_work,
-    LAPACKE_ztgexc,
-    LAPACKE_ztgexc_work,
-    LAPACKE_ztgsen,
-    LAPACKE_ztgsen_work,
-    LAPACKE_ztgsja,
-    LAPACKE_ztgsja_work,
-    LAPACKE_ztgsna,
-    LAPACKE_ztgsna_work,
-    LAPACKE_ztgsyl,
-    LAPACKE_ztgsyl_work,
-    LAPACKE_ztpcon,
-    LAPACKE_ztpcon_work,
-    LAPACKE_ztpmqrt,
-    LAPACKE_ztpmqrt_work,
-    LAPACKE_ztpqrt,
-    LAPACKE_ztpqrt2,
-    LAPACKE_ztpqrt2_work,
-    LAPACKE_ztpqrt_work,
-    LAPACKE_ztprfb,
-    LAPACKE_ztprfb_work,
-    LAPACKE_ztprfs,
-    LAPACKE_ztprfs_work,
-    LAPACKE_ztptri,
-    LAPACKE_ztptri_work,
-    LAPACKE_ztptrs,
-    LAPACKE_ztptrs_work,
-    LAPACKE_ztpttf,
-    LAPACKE_ztpttf_work,
-    LAPACKE_ztpttr,
-    LAPACKE_ztpttr_work,
-    LAPACKE_ztrcon,
-    LAPACKE_ztrcon_work,
-    LAPACKE_ztrevc,
-    LAPACKE_ztrevc_work,
-    LAPACKE_ztrexc,
-    LAPACKE_ztrexc_work,
-    LAPACKE_ztrrfs,
-    LAPACKE_ztrrfs_work,
-    LAPACKE_ztrsen,
-    LAPACKE_ztrsen_work,
-    LAPACKE_ztrsna,
-    LAPACKE_ztrsna_work,
-    LAPACKE_ztrsyl,
-    LAPACKE_ztrsyl_work,
-    LAPACKE_ztrtri,
-    LAPACKE_ztrtri_work,
-    LAPACKE_ztrtrs,
-    LAPACKE_ztrtrs_work,
-    LAPACKE_ztrttf,
-    LAPACKE_ztrttf_work,
-    LAPACKE_ztrttp,
-    LAPACKE_ztrttp_work,
-    LAPACKE_ztzrzf,
-    LAPACKE_ztzrzf_work,
-    LAPACKE_zunbdb,
-    LAPACKE_zunbdb_work,
-    LAPACKE_zuncsd,
-    LAPACKE_zuncsd_work,
-    LAPACKE_zungbr,
-    LAPACKE_zungbr_work,
-    LAPACKE_zunghr,
-    LAPACKE_zunghr_work,
-    LAPACKE_zunglq,
-    LAPACKE_zunglq_work,
-    LAPACKE_zungql,
-    LAPACKE_zungql_work,
-    LAPACKE_zungqr,
-    LAPACKE_zungqr_work,
-    LAPACKE_zungrq,
-    LAPACKE_zungrq_work,
-    LAPACKE_zungtr,
-    LAPACKE_zungtr_work,
-    LAPACKE_zunmbr,
-    LAPACKE_zunmbr_work,
-    LAPACKE_zunmhr,
-    LAPACKE_zunmhr_work,
-    LAPACKE_zunmlq,
-    LAPACKE_zunmlq_work,
-    LAPACKE_zunmql,
-    LAPACKE_zunmql_work,
-    LAPACKE_zunmqr,
-    LAPACKE_zunmqr_work,
-    LAPACKE_zunmrq,
-    LAPACKE_zunmrq_work,
-    LAPACKE_zunmrz,
-    LAPACKE_zunmrz_work,
-    LAPACKE_zunmtr,
-    LAPACKE_zunmtr_work,
-    LAPACKE_zupgtr,
-    LAPACKE_zupgtr_work,
-    LAPACKE_zupmtr,
-    LAPACKE_zupmtr_work,
-    LAPACKE_zsyr,
-    LAPACKE_zsyr_work,
-    ## @(SRCX_OBJ) from `lapack-3.4.1/lapacke/src/Makefile`
-    ## Not exported: requires LAPACKE_EXTENDED to be set and depends on the
-    ##               corresponding LAPACK extended precision routines.
-    #LAPACKE_cgbrfsx,
-    #LAPACKE_cporfsx,
-    #LAPACKE_dgerfsx,
-    #LAPACKE_sgbrfsx,
-    #LAPACKE_ssyrfsx,
-    #LAPACKE_zherfsx,
-    #LAPACKE_cgbrfsx_work,
-    #LAPACKE_cporfsx_work,
-    #LAPACKE_dgerfsx_work,
-    #LAPACKE_sgbrfsx_work,
-    #LAPACKE_ssyrfsx_work,
-    #LAPACKE_zherfsx_work,
-    #LAPACKE_cgerfsx,
-    #LAPACKE_csyrfsx,
-    #LAPACKE_dporfsx,
-    #LAPACKE_sgerfsx,
-    #LAPACKE_zgbrfsx,
-    #LAPACKE_zporfsx,
-    #LAPACKE_cgerfsx_work,
-    #LAPACKE_csyrfsx_work,
-    #LAPACKE_dporfsx_work,
-    #LAPACKE_sgerfsx_work,
-    #LAPACKE_zgbrfsx_work,
-    #LAPACKE_zporfsx_work,
-    #LAPACKE_cherfsx,
-    #LAPACKE_dgbrfsx,
-    #LAPACKE_dsyrfsx,
-    #LAPACKE_sporfsx,
-    #LAPACKE_zgerfsx,
-    #LAPACKE_zsyrfsx,
-    #LAPACKE_cherfsx_work,
-    #LAPACKE_dgbrfsx_work,
-    #LAPACKE_dsyrfsx_work,
-    #LAPACKE_sporfsx_work,
-    #LAPACKE_zgerfsx_work,
-    #LAPACKE_zsyrfsx_work,
-    #LAPACKE_cgbsvxx,
-    #LAPACKE_cposvxx,
-    #LAPACKE_dgesvxx,
-    #LAPACKE_sgbsvxx,
-    #LAPACKE_ssysvxx,
-    #LAPACKE_zhesvxx,
-    #LAPACKE_cgbsvxx_work,
-    #LAPACKE_cposvxx_work,
-    #LAPACKE_dgesvxx_work,
-    #LAPACKE_sgbsvxx_work,
-    #LAPACKE_ssysvxx_work,
-    #LAPACKE_zhesvxx_work,
-    #LAPACKE_cgesvxx,
-    #LAPACKE_csysvxx,
-    #LAPACKE_dposvxx,
-    #LAPACKE_sgesvxx,
-    #LAPACKE_zgbsvxx,
-    #LAPACKE_zposvxx,
-    #LAPACKE_cgesvxx_work,
-    #LAPACKE_csysvxx_work,
-    #LAPACKE_dposvxx_work,
-    #LAPACKE_sgesvxx_work,
-    #LAPACKE_zgbsvxx_work,
-    #LAPACKE_zposvxx_work,
-    #LAPACKE_chesvxx,
-    #LAPACKE_dgbsvxx,
-    #LAPACKE_dsysvxx,
-    #LAPACKE_sposvxx,
-    #LAPACKE_zgesvxx,
-    #LAPACKE_zsysvxx,
-    #LAPACKE_chesvxx_work,
-    #LAPACKE_dgbsvxx_work,
-    #LAPACKE_dsysvxx_work,
-    #LAPACKE_sposvxx_work,
-    #LAPACKE_zgesvxx_work,
-    #LAPACKE_zsysvxx_work,
-
-    ## @(MATGEN_OBJ) from `lapack-3.4.1/lapacke/src/Makefile`
-    ## Not exported: requires LAPACKE_TESTING to be set and depends on libtmg
-    ##               (see `lapack-3.4.1/TESTING/MATGEN`).
-    LAPACKE_zlatms,
-    LAPACKE_zlatms_work,
-    LAPACKE_zlagge,
-    LAPACKE_zlagge_work,
-    LAPACKE_zlaghe,
-    LAPACKE_zlaghe_work,
-    LAPACKE_zlagsy,
-    LAPACKE_zlagsy_work,
-    ## new function from lapack-3.6.0
-    LAPACKE_zgejsv,
-    LAPACKE_zgejsv_work,
-    LAPACKE_zgesvdx,
-    LAPACKE_zgesvdx_work,
-    LAPACKE_zgesvj,
-    LAPACKE_zgesvj_work,
-    LAPACKE_zgetrf2,
-    LAPACKE_zgetrf2_work,
-    LAPACKE_zgges3,
-    LAPACKE_zgges3_work,
-    LAPACKE_zggev3,
-    LAPACKE_zggev3_work,
-    LAPACKE_zgghd3,
-    LAPACKE_zgghd3_work,
-    LAPACKE_zggsvd3,
-    LAPACKE_zggsvd3_work,
-    LAPACKE_zggsvp3,
-    LAPACKE_zggsvp3_work,
-    LAPACKE_zhetrf_rook,
-    LAPACKE_zhetrf_rook_work,
-    LAPACKE_zhetrs_rook,
-    LAPACKE_zhetrs_rook_work,
-    LAPACKE_zlapmt,
-    LAPACKE_zlapmt_work,
-    LAPACKE_zlascl,
-    LAPACKE_zlascl_work,
-    LAPACKE_zpotrf2,
-    LAPACKE_zpotrf2_work,
-    LAPACKE_zsytrf_rook,
-    LAPACKE_zsytrf_rook_work,
-    LAPACKE_zsytrs_rook,
-    LAPACKE_zsytrs_rook_work,
-    LAPACKE_zuncsd2by1,
-    LAPACKE_zuncsd2by1_work,
-
-    ## new function from lapack-3.7.0
-    LAPACKE_zgelq,
-    LAPACKE_zgelq_work,
-    LAPACKE_zgemlq,
-    LAPACKE_zgemlq_work,
-    LAPACKE_zgemqr,
-    LAPACKE_zgemqr_work,
-    LAPACKE_zgeqr,
-    LAPACKE_zgeqr_work,
-    LAPACKE_zgetsls,
-    LAPACKE_zgetsls_work,
-    LAPACKE_zhbev_2stage,
-    LAPACKE_zhbev_2stage_work,
-    LAPACKE_zhbevd_2stage,
-    LAPACKE_zhbevd_2stage_work,
-    LAPACKE_zhbevx_2stage,
-    LAPACKE_zhbevx_2stage_work,
-    LAPACKE_zhecon_3,
-    LAPACKE_zhecon_3_work,
-    LAPACKE_zheev_2stage,
-    LAPACKE_zheev_2stage_work,
-    LAPACKE_zheevd_2stage,
-    LAPACKE_zheevd_2stage_work,
-    LAPACKE_zheevr_2stage,
-    LAPACKE_zheevr_2stage_work,
-    LAPACKE_zheevx_2stage,
-    LAPACKE_zheevx_2stage_work,
-    LAPACKE_zhegv_2stage,
-    LAPACKE_zhegv_2stage_work,
-    LAPACKE_zhesv_aa,
-    LAPACKE_zhesv_aa_work,
-    LAPACKE_zhesv_rk,
-    LAPACKE_zhesv_rk_work,
-    LAPACKE_zhetrf_aa,
-    LAPACKE_zhetrf_aa_work,
-    LAPACKE_zhetrf_rk,
-    LAPACKE_zhetrf_rk_work,
-    LAPACKE_zhetri_3,
-    LAPACKE_zhetri_3_work,
-    LAPACKE_zhetrs_aa,
-    LAPACKE_zhetrs_aa_work,
-    LAPACKE_zhetrs_3,
-    LAPACKE_zhetrs_3_work,
-    LAPACKE_zsycon_3,
-    LAPACKE_zsycon_3_work,
-    LAPACKE_zsysv_aa,
-    LAPACKE_zsysv_aa_work,
-    LAPACKE_zsysv_rk,
-    LAPACKE_zsysv_rk_work,
-    LAPACKE_zsytrf_aa,
-    LAPACKE_zsytrf_aa_work,
-    LAPACKE_zsytrf_rk,
-    LAPACKE_zsytrf_rk_work,
-    LAPACKE_zsytri_3,
-    LAPACKE_zsytri_3_work,
-    LAPACKE_zsytrs_aa,
-    LAPACKE_zsytrs_aa_work,
-    LAPACKE_zsytrs_3,
-    LAPACKE_zsytrs_3_work,
-    
-    ## new function from lapack-3.8.0
-    LAPACKE_zhesv_aa_2stage,
-    LAPACKE_zhesv_aa_2stage_work,
-    LAPACKE_zhetrf_aa_2stage,
-    LAPACKE_zhetrf_aa_2stage_work,
-    LAPACKE_zhetrs_aa_2stage,
-    LAPACKE_zhetrs_aa_2stage_work,
-    LAPACKE_zlacrm,
-    LAPACKE_zlacrm_work,
-    LAPACKE_zlarcm,
-    LAPACKE_zlarcm_work,
-    LAPACKE_zlassq,
-    LAPACKE_zlassq_work,
-    LAPACKE_zsysv_aa_2stage,
-    LAPACKE_zsysv_aa_2stage_work,
-    LAPACKE_zsytrf_aa_2stage,
-    LAPACKE_zsytrf_aa_2stage_work,
-    LAPACKE_zsytrs_aa_2stage,
-    LAPACKE_zsytrs_aa_2stage_work,
-    # new functions from 3.9.0
-    LAPACKE_zgesvdq,
+  "
+
+lapacke_deprecated_objsc="
+    LAPACKE_cggsvp
+    LAPACKE_cggsvp_work
+    LAPACKE_cggsvd
+    LAPACKE_cggsvd_work
+    LAPACKE_cgeqpf
+    LAPACKE_cgeqpf_work
+"
+
+lapacke_deprecated_objsd="
+    LAPACKE_dggsvp
+    LAPACKE_dggsvp_work
+    LAPACKE_dggsvd
+    LAPACKE_dggsvd_work
+    LAPACKE_dgeqpf
+    LAPACKE_dgeqpf_work
+"
+
+lapacke_deprecated_objss="
+    LAPACKE_sggsvp
+    LAPACKE_sggsvp_work
+    LAPACKE_sggsvd
+    LAPACKE_sggsvd_work
+    LAPACKE_sgeqpf
+    LAPACKE_sgeqpf_work
+"
+
+lapacke_deprecated_objsz="
+    LAPACKE_zggsvp
+    LAPACKE_zggsvp_work
+    LAPACKE_zggsvd
+    LAPACKE_zggsvd_work
+    LAPACKE_zgeqpf
+    LAPACKE_zgeqpf_work
+"
+
+# LAPACK C interface routines.
+#
+# This list is prepared in a similar manner to @lapackobjs2, however the
+# functions all begin with an uppercase prefix (with the exception of the
+# make_complex_* routines).
+#
+# The functions corresponding to @(MATGEN_OBJ) and @(SRCX_OBJ) are not
+# exported since the respective LAPACK routines are not built by default.
+
+# @(OBJ) from `lapack-3.4.1/lapacke/utils/Makefile`
+lapackeobjs="
+    LAPACKE_lsame
+    LAPACKE_ilaver
+    LAPACKE_xerbla
+    lapack_make_complex_float
+    lapack_make_complex_double
+    LAPACKE_get_nancheck
+    LAPACKE_set_nancheck
+"
+
+lapackeobjsc="
+    LAPACKE_cgb_nancheck
+    LAPACKE_cgb_trans
+    LAPACKE_cge_nancheck
+    LAPACKE_cge_trans
+    LAPACKE_cgg_nancheck
+    LAPACKE_cgg_trans
+    LAPACKE_cgt_nancheck
+    LAPACKE_chb_nancheck
+    LAPACKE_chb_trans
+    LAPACKE_che_nancheck
+    LAPACKE_che_trans
+    LAPACKE_chp_nancheck
+    LAPACKE_chp_trans
+    LAPACKE_chs_nancheck
+    LAPACKE_chs_trans
+    LAPACKE_c_nancheck
+    LAPACKE_cpb_nancheck
+    LAPACKE_cpb_trans
+    LAPACKE_cpf_nancheck
+    LAPACKE_cpf_trans
+    LAPACKE_cpo_nancheck
+    LAPACKE_cpo_trans
+    LAPACKE_cpp_nancheck
+    LAPACKE_cpp_trans
+    LAPACKE_cpt_nancheck
+    LAPACKE_csp_nancheck
+    LAPACKE_csp_trans
+    LAPACKE_cst_nancheck
+    LAPACKE_csy_nancheck
+    LAPACKE_csy_trans
+    LAPACKE_ctb_nancheck
+    LAPACKE_ctb_trans
+    LAPACKE_ctf_nancheck
+    LAPACKE_ctf_trans
+    LAPACKE_ctp_nancheck
+    LAPACKE_ctp_trans
+    LAPACKE_ctr_nancheck
+    LAPACKE_ctr_trans
+    LAPACKE_cbbcsd
+    LAPACKE_cbbcsd_work
+    LAPACKE_cbdsqr
+    LAPACKE_cbdsqr_work
+    LAPACKE_cgbbrd
+    LAPACKE_cgbbrd_work
+    LAPACKE_cgbcon
+    LAPACKE_cgbcon_work
+    LAPACKE_cgbequ
+    LAPACKE_cgbequ_work
+    LAPACKE_cgbequb
+    LAPACKE_cgbequb_work
+    LAPACKE_cgbrfs
+    LAPACKE_cgbrfs_work
+    LAPACKE_cgbsv
+    LAPACKE_cgbsv_work
+    LAPACKE_cgbsvx
+    LAPACKE_cgbsvx_work
+    LAPACKE_cgbtrf
+    LAPACKE_cgbtrf_work
+    LAPACKE_cgbtrs
+    LAPACKE_cgbtrs_work
+    LAPACKE_cgebak
+    LAPACKE_cgebak_work
+    LAPACKE_cgebal
+    LAPACKE_cgebal_work
+    LAPACKE_cgebrd
+    LAPACKE_cgebrd_work
+    LAPACKE_cgecon
+    LAPACKE_cgecon_work
+    LAPACKE_cgeequ
+    LAPACKE_cgeequ_work
+    LAPACKE_cgeequb
+    LAPACKE_cgeequb_work
+    LAPACKE_cgees
+    LAPACKE_cgees_work
+    LAPACKE_cgeesx
+    LAPACKE_cgeesx_work
+    LAPACKE_cgeev
+    LAPACKE_cgeev_work
+    LAPACKE_cgeevx
+    LAPACKE_cgeevx_work
+    LAPACKE_cgehrd
+    LAPACKE_cgehrd_work
+    LAPACKE_cgelq2
+    LAPACKE_cgelq2_work
+    LAPACKE_cgelqf
+    LAPACKE_cgelqf_work
+    LAPACKE_cgels
+    LAPACKE_cgels_work
+    LAPACKE_cgelsd
+    LAPACKE_cgelsd_work
+    LAPACKE_cgelss
+    LAPACKE_cgelss_work
+    LAPACKE_cgelsy
+    LAPACKE_cgelsy_work
+    LAPACKE_cgemqrt
+    LAPACKE_cgemqrt_work
+    LAPACKE_cgeqlf
+    LAPACKE_cgeqlf_work
+    LAPACKE_cgeqp3
+    LAPACKE_cgeqp3_work
+    LAPACKE_cgeqr2
+    LAPACKE_cgeqr2_work
+    LAPACKE_cgeqrf
+    LAPACKE_cgeqrf_work
+    LAPACKE_cgeqrfp
+    LAPACKE_cgeqrfp_work
+    LAPACKE_cgeqrt
+    LAPACKE_cgeqrt2
+    LAPACKE_cgeqrt2_work
+    LAPACKE_cgeqrt3
+    LAPACKE_cgeqrt3_work
+    LAPACKE_cgeqrt_work
+    LAPACKE_cgerfs
+    LAPACKE_cgerfs_work
+    LAPACKE_cgerqf
+    LAPACKE_cgerqf_work
+    LAPACKE_cgesdd
+    LAPACKE_cgesdd_work
+    LAPACKE_cgesv
+    LAPACKE_cgesv_work
+    LAPACKE_cgesvd
+    LAPACKE_cgesvd_work
+    LAPACKE_cgesvx
+    LAPACKE_cgesvx_work
+    LAPACKE_cgetf2
+    LAPACKE_cgetf2_work
+    LAPACKE_cgetrf
+    LAPACKE_cgetrf_work
+    LAPACKE_cgetri
+    LAPACKE_cgetri_work
+    LAPACKE_cgetrs
+    LAPACKE_cgetrs_work
+    LAPACKE_cggbak
+    LAPACKE_cggbak_work
+    LAPACKE_cggbal
+    LAPACKE_cggbal_work
+    LAPACKE_cgges
+    LAPACKE_cgges_work
+    LAPACKE_cggesx
+    LAPACKE_cggesx_work
+    LAPACKE_cggev
+    LAPACKE_cggev_work
+    LAPACKE_cggevx
+    LAPACKE_cggevx_work
+    LAPACKE_cggglm
+    LAPACKE_cggglm_work
+    LAPACKE_cgghrd
+    LAPACKE_cgghrd_work
+    LAPACKE_cgglse
+    LAPACKE_cgglse_work
+    LAPACKE_cggqrf
+    LAPACKE_cggqrf_work
+    LAPACKE_cggrqf
+    LAPACKE_cggrqf_work
+    LAPACKE_cgtcon
+    LAPACKE_cgtcon_work
+    LAPACKE_cgtrfs
+    LAPACKE_cgtrfs_work
+    LAPACKE_cgtsv
+    LAPACKE_cgtsv_work
+    LAPACKE_cgtsvx
+    LAPACKE_cgtsvx_work
+    LAPACKE_cgttrf
+    LAPACKE_cgttrf_work
+    LAPACKE_cgttrs
+    LAPACKE_cgttrs_work
+    LAPACKE_chbev
+    LAPACKE_chbev_work
+    LAPACKE_chbevd
+    LAPACKE_chbevd_work
+    LAPACKE_chbevx
+    LAPACKE_chbevx_work
+    LAPACKE_chbgst
+    LAPACKE_chbgst_work
+    LAPACKE_chbgv
+    LAPACKE_chbgv_work
+    LAPACKE_chbgvd
+    LAPACKE_chbgvd_work
+    LAPACKE_chbgvx
+    LAPACKE_chbgvx_work
+    LAPACKE_chbtrd
+    LAPACKE_chbtrd_work
+    LAPACKE_checon
+    LAPACKE_checon_work
+    LAPACKE_cheequb
+    LAPACKE_cheequb_work
+    LAPACKE_cheev
+    LAPACKE_cheev_work
+    LAPACKE_cheevd
+    LAPACKE_cheevd_work
+    LAPACKE_cheevr
+    LAPACKE_cheevr_work
+    LAPACKE_cheevx
+    LAPACKE_cheevx_work
+    LAPACKE_chegst
+    LAPACKE_chegst_work
+    LAPACKE_chegv
+    LAPACKE_chegv_work
+    LAPACKE_chegvd
+    LAPACKE_chegvd_work
+    LAPACKE_chegvx
+    LAPACKE_chegvx_work
+    LAPACKE_cherfs
+    LAPACKE_cherfs_work
+    LAPACKE_chesv
+    LAPACKE_chesv_work
+    LAPACKE_chesvx
+    LAPACKE_chesvx_work
+    LAPACKE_cheswapr
+    LAPACKE_cheswapr_work
+    LAPACKE_chetrd
+    LAPACKE_chetrd_work
+    LAPACKE_chetrf
+    LAPACKE_chetrf_work
+    LAPACKE_chetri
+    LAPACKE_chetri2
+    LAPACKE_chetri2_work
+    LAPACKE_chetri2x
+    LAPACKE_chetri2x_work
+    LAPACKE_chetri_work
+    LAPACKE_chetrs
+    LAPACKE_chetrs2
+    LAPACKE_chetrs2_work
+    LAPACKE_chetrs_work
+    LAPACKE_chfrk
+    LAPACKE_chfrk_work
+    LAPACKE_chgeqz
+    LAPACKE_chgeqz_work
+    LAPACKE_chpcon
+    LAPACKE_chpcon_work
+    LAPACKE_chpev
+    LAPACKE_chpev_work
+    LAPACKE_chpevd
+    LAPACKE_chpevd_work
+    LAPACKE_chpevx
+    LAPACKE_chpevx_work
+    LAPACKE_chpgst
+    LAPACKE_chpgst_work
+    LAPACKE_chpgv
+    LAPACKE_chpgv_work
+    LAPACKE_chpgvd
+    LAPACKE_chpgvd_work
+    LAPACKE_chpgvx
+    LAPACKE_chpgvx_work
+    LAPACKE_chprfs
+    LAPACKE_chprfs_work
+    LAPACKE_chpsv
+    LAPACKE_chpsv_work
+    LAPACKE_chpsvx
+    LAPACKE_chpsvx_work
+    LAPACKE_chptrd
+    LAPACKE_chptrd_work
+    LAPACKE_chptrf
+    LAPACKE_chptrf_work
+    LAPACKE_chptri
+    LAPACKE_chptri_work
+    LAPACKE_chptrs
+    LAPACKE_chptrs_work
+    LAPACKE_chsein
+    LAPACKE_chsein_work
+    LAPACKE_chseqr
+    LAPACKE_chseqr_work
+    LAPACKE_clacgv
+    LAPACKE_clacgv_work
+    LAPACKE_clacn2
+    LAPACKE_clacn2_work
+    LAPACKE_clacp2
+    LAPACKE_clacp2_work
+    LAPACKE_clacpy
+    LAPACKE_clacpy_work
+    LAPACKE_clag2z
+    LAPACKE_clag2z_work
+    LAPACKE_clange
+    LAPACKE_clange_work
+    LAPACKE_clanhe
+    LAPACKE_clanhe_work
+    LAPACKE_clansy
+    LAPACKE_clansy_work
+    LAPACKE_clantr
+    LAPACKE_clantr_work
+    LAPACKE_clapmr
+    LAPACKE_clapmr_work
+    LAPACKE_clarfb
+    LAPACKE_clarfb_work
+    LAPACKE_clarfg
+    LAPACKE_clarfg_work
+    LAPACKE_clarft
+    LAPACKE_clarft_work
+    LAPACKE_clarfx
+    LAPACKE_clarfx_work
+    LAPACKE_clarnv
+    LAPACKE_clarnv_work
+    LAPACKE_claset
+    LAPACKE_claset_work
+    LAPACKE_claswp
+    LAPACKE_claswp_work
+    LAPACKE_clauum
+    LAPACKE_clauum_work
+    LAPACKE_cpbcon
+    LAPACKE_cpbcon_work
+    LAPACKE_cpbequ
+    LAPACKE_cpbequ_work
+    LAPACKE_cpbrfs
+    LAPACKE_cpbrfs_work
+    LAPACKE_cpbstf
+    LAPACKE_cpbstf_work
+    LAPACKE_cpbsv
+    LAPACKE_cpbsv_work
+    LAPACKE_cpbsvx
+    LAPACKE_cpbsvx_work
+    LAPACKE_cpbtrf
+    LAPACKE_cpbtrf_work
+    LAPACKE_cpbtrs
+    LAPACKE_cpbtrs_work
+    LAPACKE_cpftrf
+    LAPACKE_cpftrf_work
+    LAPACKE_cpftri
+    LAPACKE_cpftri_work
+    LAPACKE_cpftrs
+    LAPACKE_cpftrs_work
+    LAPACKE_cpocon
+    LAPACKE_cpocon_work
+    LAPACKE_cpoequ
+    LAPACKE_cpoequ_work
+    LAPACKE_cpoequb
+    LAPACKE_cpoequb_work
+    LAPACKE_cporfs
+    LAPACKE_cporfs_work
+    LAPACKE_cposv
+    LAPACKE_cposv_work
+    LAPACKE_cposvx
+    LAPACKE_cposvx_work
+    LAPACKE_cpotrf
+    LAPACKE_cpotrf_work
+    LAPACKE_cpotri
+    LAPACKE_cpotri_work
+    LAPACKE_cpotrs
+    LAPACKE_cpotrs_work
+    LAPACKE_cppcon
+    LAPACKE_cppcon_work
+    LAPACKE_cppequ
+    LAPACKE_cppequ_work
+    LAPACKE_cpprfs
+    LAPACKE_cpprfs_work
+    LAPACKE_cppsv
+    LAPACKE_cppsv_work
+    LAPACKE_cppsvx
+    LAPACKE_cppsvx_work
+    LAPACKE_cpptrf
+    LAPACKE_cpptrf_work
+    LAPACKE_cpptri
+    LAPACKE_cpptri_work
+    LAPACKE_cpptrs
+    LAPACKE_cpptrs_work
+    LAPACKE_cpstrf
+    LAPACKE_cpstrf_work
+    LAPACKE_cptcon
+    LAPACKE_cptcon_work
+    LAPACKE_cpteqr
+    LAPACKE_cpteqr_work
+    LAPACKE_cptrfs
+    LAPACKE_cptrfs_work
+    LAPACKE_cptsv
+    LAPACKE_cptsv_work
+    LAPACKE_cptsvx
+    LAPACKE_cptsvx_work
+    LAPACKE_cpttrf
+    LAPACKE_cpttrf_work
+    LAPACKE_cpttrs
+    LAPACKE_cpttrs_work
+    LAPACKE_cspcon
+    LAPACKE_cspcon_work
+    LAPACKE_csprfs
+    LAPACKE_csprfs_work
+    LAPACKE_cspsv
+    LAPACKE_cspsv_work
+    LAPACKE_cspsvx
+    LAPACKE_cspsvx_work
+    LAPACKE_csptrf
+    LAPACKE_csptrf_work
+    LAPACKE_csptri
+    LAPACKE_csptri_work
+    LAPACKE_csptrs
+    LAPACKE_csptrs_work
+    LAPACKE_cstedc
+    LAPACKE_cstedc_work
+    LAPACKE_cstegr
+    LAPACKE_cstegr_work
+    LAPACKE_cstein
+    LAPACKE_cstein_work
+    LAPACKE_cstemr
+    LAPACKE_cstemr_work
+    LAPACKE_csteqr
+    LAPACKE_csteqr_work
+    LAPACKE_csycon
+    LAPACKE_csycon_work
+    LAPACKE_csyconv
+    LAPACKE_csyconv_work
+    LAPACKE_csyequb
+    LAPACKE_csyequb_work
+    LAPACKE_csyrfs
+    LAPACKE_csyrfs_work
+    LAPACKE_csysv
+    LAPACKE_csysv_rook
+    LAPACKE_csysv_rook_work
+    LAPACKE_csysv_work
+    LAPACKE_csysvx
+    LAPACKE_csysvx_work
+    LAPACKE_csyswapr
+    LAPACKE_csyswapr_work
+    LAPACKE_csytrf
+    LAPACKE_csytrf_work
+    LAPACKE_csytri
+    LAPACKE_csytri2
+    LAPACKE_csytri2_work
+    LAPACKE_csytri2x
+    LAPACKE_csytri2x_work
+    LAPACKE_csytri_work
+    LAPACKE_csytrs
+    LAPACKE_csytrs2
+    LAPACKE_csytrs2_work
+    LAPACKE_csytrs_work
+    LAPACKE_ctbcon
+    LAPACKE_ctbcon_work
+    LAPACKE_ctbrfs
+    LAPACKE_ctbrfs_work
+    LAPACKE_ctbtrs
+    LAPACKE_ctbtrs_work
+    LAPACKE_ctfsm
+    LAPACKE_ctfsm_work
+    LAPACKE_ctftri
+    LAPACKE_ctftri_work
+    LAPACKE_ctfttp
+    LAPACKE_ctfttp_work
+    LAPACKE_ctfttr
+    LAPACKE_ctfttr_work
+    LAPACKE_ctgevc
+    LAPACKE_ctgevc_work
+    LAPACKE_ctgexc
+    LAPACKE_ctgexc_work
+    LAPACKE_ctgsen
+    LAPACKE_ctgsen_work
+    LAPACKE_ctgsja
+    LAPACKE_ctgsja_work
+    LAPACKE_ctgsna
+    LAPACKE_ctgsna_work
+    LAPACKE_ctgsyl
+    LAPACKE_ctgsyl_work
+    LAPACKE_ctpcon
+    LAPACKE_ctpcon_work
+    LAPACKE_ctpmqrt
+    LAPACKE_ctpmqrt_work
+    LAPACKE_ctpqrt
+    LAPACKE_ctpqrt2
+    LAPACKE_ctpqrt2_work
+    LAPACKE_ctpqrt_work
+    LAPACKE_ctprfb
+    LAPACKE_ctprfb_work
+    LAPACKE_ctprfs
+    LAPACKE_ctprfs_work
+    LAPACKE_ctptri
+    LAPACKE_ctptri_work
+    LAPACKE_ctptrs
+    LAPACKE_ctptrs_work
+    LAPACKE_ctpttf
+    LAPACKE_ctpttf_work
+    LAPACKE_ctpttr
+    LAPACKE_ctpttr_work
+    LAPACKE_ctrcon
+    LAPACKE_ctrcon_work
+    LAPACKE_ctrevc
+    LAPACKE_ctrevc_work
+    LAPACKE_ctrexc
+    LAPACKE_ctrexc_work
+    LAPACKE_ctrrfs
+    LAPACKE_ctrrfs_work
+    LAPACKE_ctrsen
+    LAPACKE_ctrsen_work
+    LAPACKE_ctrsna
+    LAPACKE_ctrsna_work
+    LAPACKE_ctrsyl
+    LAPACKE_ctrsyl_work
+    LAPACKE_ctrtri
+    LAPACKE_ctrtri_work
+    LAPACKE_ctrtrs
+    LAPACKE_ctrtrs_work
+    LAPACKE_ctrttf
+    LAPACKE_ctrttf_work
+    LAPACKE_ctrttp
+    LAPACKE_ctrttp_work
+    LAPACKE_ctzrzf
+    LAPACKE_ctzrzf_work
+    LAPACKE_cunbdb
+    LAPACKE_cunbdb_work
+    LAPACKE_cuncsd
+    LAPACKE_cuncsd_work
+    LAPACKE_cungbr
+    LAPACKE_cungbr_work
+    LAPACKE_cunghr
+    LAPACKE_cunghr_work
+    LAPACKE_cunglq
+    LAPACKE_cunglq_work
+    LAPACKE_cungql
+    LAPACKE_cungql_work
+    LAPACKE_cungqr
+    LAPACKE_cungqr_work
+    LAPACKE_cungrq
+    LAPACKE_cungrq_work
+    LAPACKE_cungtr
+    LAPACKE_cungtr_work
+    LAPACKE_cunmbr
+    LAPACKE_cunmbr_work
+    LAPACKE_cunmhr
+    LAPACKE_cunmhr_work
+    LAPACKE_cunmlq
+    LAPACKE_cunmlq_work
+    LAPACKE_cunmql
+    LAPACKE_cunmql_work
+    LAPACKE_cunmqr
+    LAPACKE_cunmqr_work
+    LAPACKE_cunmrq
+    LAPACKE_cunmrq_work
+    LAPACKE_cunmrz
+    LAPACKE_cunmrz_work
+    LAPACKE_cunmtr
+    LAPACKE_cunmtr_work
+    LAPACKE_cupgtr
+    LAPACKE_cupgtr_work
+    LAPACKE_cupmtr
+    LAPACKE_cupmtr_work
+    LAPACKE_csyr
+    LAPACKE_csyr_work
+    LAPACKE_clatms
+    LAPACKE_clatms_work
+    LAPACKE_clagge
+    LAPACKE_clagge_work
+    LAPACKE_claghe
+    LAPACKE_claghe_work
+    LAPACKE_clagsy
+    LAPACKE_clagsy_work
+    LAPACKE_cgejsv
+    LAPACKE_cgejsv_work
+    LAPACKE_cgesvdx
+    LAPACKE_cgesvdx_work
+    LAPACKE_cgesvj
+    LAPACKE_cgesvj_work
+    LAPACKE_cgetrf2
+    LAPACKE_cgetrf2_work
+    LAPACKE_cgges3
+    LAPACKE_cgges3_work
+    LAPACKE_cggev3
+    LAPACKE_cggev3_work
+    LAPACKE_cgghd3
+    LAPACKE_cgghd3_work
+    LAPACKE_cggsvd3
+    LAPACKE_cggsvd3_work
+    LAPACKE_cggsvp3
+    LAPACKE_cggsvp3_work
+    LAPACKE_chetrf_rook
+    LAPACKE_chetrf_rook_work
+    LAPACKE_chetrs_rook
+    LAPACKE_chetrs_rook_work
+    LAPACKE_clapmt
+    LAPACKE_clapmt_work
+    LAPACKE_clascl
+    LAPACKE_clascl_work
+    LAPACKE_cpotrf2
+    LAPACKE_cpotrf2_work
+    LAPACKE_csytrf_rook
+    LAPACKE_csytrf_rook_work
+    LAPACKE_csytrs_rook
+    LAPACKE_csytrs_rook_work
+    LAPACKE_cuncsd2by1
+    LAPACKE_cuncsd2by1_work
+    LAPACKE_cgelq
+    LAPACKE_cgelq_work
+    LAPACKE_cgemlq
+    LAPACKE_cgemlq_work
+    LAPACKE_cgemqr
+    LAPACKE_cgemqr_work
+    LAPACKE_cgeqr
+    LAPACKE_cgeqr_work
+    LAPACKE_cgetsls
+    LAPACKE_cgetsls_work
+    LAPACKE_chbev_2stage
+    LAPACKE_chbev_2stage_work
+    LAPACKE_chbevd_2stage
+    LAPACKE_chbevd_2stage_work
+    LAPACKE_chbevx_2stage
+    LAPACKE_chbevx_2stage_work
+    LAPACKE_checon_3
+    LAPACKE_checon_3_work
+    LAPACKE_cheev_2stage
+    LAPACKE_cheev_2stage_work
+    LAPACKE_cheevd_2stage
+    LAPACKE_cheevd_2stage_work
+    LAPACKE_cheevr_2stage
+    LAPACKE_cheevr_2stage_work
+    LAPACKE_cheevx_2stage
+    LAPACKE_cheevx_2stage_work
+    LAPACKE_chegv_2stage
+    LAPACKE_chegv_2stage_work
+    LAPACKE_chesv_aa
+    LAPACKE_chesv_aa_work
+    LAPACKE_chesv_rk
+    LAPACKE_chesv_rk_work
+    LAPACKE_chetrf_aa
+    LAPACKE_chetrf_aa_work
+    LAPACKE_chetrf_rk
+    LAPACKE_chetrf_rk_work
+    LAPACKE_chetri_3
+    LAPACKE_chetri_3_work
+    LAPACKE_chetrs_aa
+    LAPACKE_chetrs_aa_work
+    LAPACKE_chetrs_3
+    LAPACKE_chetrs_3_work
+    LAPACKE_csycon_3
+    LAPACKE_csycon_3_work
+    LAPACKE_csysv_aa
+    LAPACKE_csysv_aa_work
+    LAPACKE_csysv_rk
+    LAPACKE_csysv_rk_work
+    LAPACKE_csytrf_aa
+    LAPACKE_csytrf_aa_work
+    LAPACKE_csytrf_rk
+    LAPACKE_csytrf_rk_work
+    LAPACKE_csytri_3
+    LAPACKE_csytri_3_work
+    LAPACKE_csytrs_aa
+    LAPACKE_csytrs_aa_work
+    LAPACKE_csytrs_3
+    LAPACKE_csytrs_3_work
+    LAPACKE_chesv_aa_2stage
+    LAPACKE_chesv_aa_2stage_work
+    LAPACKE_chetrf_aa_2stage
+    LAPACKE_chetrf_aa_2stage_work
+    LAPACKE_chetrs_aa_2stage
+    LAPACKE_chetrs_aa_2stage_work
+    LAPACKE_clacrm
+    LAPACKE_clacrm_work
+    LAPACKE_clarcm
+    LAPACKE_clarcm_work
+    LAPACKE_classq
+    LAPACKE_classq_work
+    LAPACKE_csysv_aa_2stage
+    LAPACKE_csysv_aa_2stage_work
+    LAPACKE_csytrf_aa_2stage
+    LAPACKE_csytrf_aa_2stage_work
+    LAPACKE_csytrs_aa_2stage
+    LAPACKE_csytrs_aa_2stage_work
+"
+
+lapackeobjsd="
+    LAPACKE_dgb_nancheck
+    LAPACKE_dgb_trans
+    LAPACKE_dge_nancheck
+    LAPACKE_dge_trans
+    LAPACKE_dgg_nancheck
+    LAPACKE_dgg_trans
+    LAPACKE_dgt_nancheck
+    LAPACKE_dhs_nancheck
+    LAPACKE_dhs_trans
+    LAPACKE_d_nancheck
+    LAPACKE_dpb_nancheck
+    LAPACKE_dpb_trans
+    LAPACKE_dpf_nancheck
+    LAPACKE_dpf_trans
+    LAPACKE_dpo_nancheck
+    LAPACKE_dpo_trans
+    LAPACKE_dpp_nancheck
+    LAPACKE_dpp_trans
+    LAPACKE_dpt_nancheck
+    LAPACKE_dsb_nancheck
+    LAPACKE_dsb_trans
+    LAPACKE_dsp_nancheck
+    LAPACKE_dsp_trans
+    LAPACKE_dst_nancheck
+    LAPACKE_dsy_nancheck
+    LAPACKE_dsy_trans
+    LAPACKE_dtb_nancheck
+    LAPACKE_dtb_trans
+    LAPACKE_dtf_nancheck
+    LAPACKE_dtf_trans
+    LAPACKE_dtp_nancheck
+    LAPACKE_dtp_trans
+    LAPACKE_dtr_nancheck
+    LAPACKE_dtr_trans
+    LAPACKE_dbbcsd
+    LAPACKE_dbbcsd_work
+    LAPACKE_dbdsdc
+    LAPACKE_dbdsdc_work
+    LAPACKE_dbdsqr
+    LAPACKE_dbdsqr_work
+    LAPACKE_ddisna
+    LAPACKE_ddisna_work
+    LAPACKE_dgbbrd
+    LAPACKE_dgbbrd_work
+    LAPACKE_dgbcon
+    LAPACKE_dgbcon_work
+    LAPACKE_dgbequ
+    LAPACKE_dgbequ_work
+    LAPACKE_dgbequb
+    LAPACKE_dgbequb_work
+    LAPACKE_dgbrfs
+    LAPACKE_dgbrfs_work
+    LAPACKE_dgbsv
+    LAPACKE_dgbsv_work
+    LAPACKE_dgbsvx
+    LAPACKE_dgbsvx_work
+    LAPACKE_dgbtrf
+    LAPACKE_dgbtrf_work
+    LAPACKE_dgbtrs
+    LAPACKE_dgbtrs_work
+    LAPACKE_dgebak
+    LAPACKE_dgebak_work
+    LAPACKE_dgebal
+    LAPACKE_dgebal_work
+    LAPACKE_dgebrd
+    LAPACKE_dgebrd_work
+    LAPACKE_dgecon
+    LAPACKE_dgecon_work
+    LAPACKE_dgeequ
+    LAPACKE_dgeequ_work
+    LAPACKE_dgeequb
+    LAPACKE_dgeequb_work
+    LAPACKE_dgees
+    LAPACKE_dgees_work
+    LAPACKE_dgeesx
+    LAPACKE_dgeesx_work
+    LAPACKE_dgeev
+    LAPACKE_dgeev_work
+    LAPACKE_dgeevx
+    LAPACKE_dgeevx_work
+    LAPACKE_dgehrd
+    LAPACKE_dgehrd_work
+    LAPACKE_dgejsv
+    LAPACKE_dgejsv_work
+    LAPACKE_dgelq2
+    LAPACKE_dgelq2_work
+    LAPACKE_dgelqf
+    LAPACKE_dgelqf_work
+    LAPACKE_dgels
+    LAPACKE_dgels_work
+    LAPACKE_dgelsd
+    LAPACKE_dgelsd_work
+    LAPACKE_dgelss
+    LAPACKE_dgelss_work
+    LAPACKE_dgelsy
+    LAPACKE_dgelsy_work
+    LAPACKE_dgemqrt
+    LAPACKE_dgemqrt_work
+    LAPACKE_dgeqlf
+    LAPACKE_dgeqlf_work
+    LAPACKE_dgeqp3
+    LAPACKE_dgeqp3_work
+    LAPACKE_dgeqr2
+    LAPACKE_dgeqr2_work
+    LAPACKE_dgeqrf
+    LAPACKE_dgeqrf_work
+    LAPACKE_dgeqrfp
+    LAPACKE_dgeqrfp_work
+    LAPACKE_dgeqrt
+    LAPACKE_dgeqrt2
+    LAPACKE_dgeqrt2_work
+    LAPACKE_dgeqrt3
+    LAPACKE_dgeqrt3_work
+    LAPACKE_dgeqrt_work
+    LAPACKE_dgerfs
+    LAPACKE_dgerfs_work
+    LAPACKE_dgerqf
+    LAPACKE_dgerqf_work
+    LAPACKE_dgesdd
+    LAPACKE_dgesdd_work
+    LAPACKE_dgesv
+    LAPACKE_dgesv_work
+    LAPACKE_dgesvd
+    LAPACKE_dgesvd_work
+    LAPACKE_dgesvj
+    LAPACKE_dgesvj_work
+    LAPACKE_dgesvx
+    LAPACKE_dgesvx_work
+    LAPACKE_dgetf2
+    LAPACKE_dgetf2_work
+    LAPACKE_dgetrf
+    LAPACKE_dgetrf_work
+    LAPACKE_dgetri
+    LAPACKE_dgetri_work
+    LAPACKE_dgetrs
+    LAPACKE_dgetrs_work
+    LAPACKE_dggbak
+    LAPACKE_dggbak_work
+    LAPACKE_dggbal
+    LAPACKE_dggbal_work
+    LAPACKE_dgges
+    LAPACKE_dgges_work
+    LAPACKE_dggesx
+    LAPACKE_dggesx_work
+    LAPACKE_dggev
+    LAPACKE_dggev_work
+    LAPACKE_dggevx
+    LAPACKE_dggevx_work
+    LAPACKE_dggglm
+    LAPACKE_dggglm_work
+    LAPACKE_dgghrd
+    LAPACKE_dgghrd_work
+    LAPACKE_dgglse
+    LAPACKE_dgglse_work
+    LAPACKE_dggqrf
+    LAPACKE_dggqrf_work
+    LAPACKE_dggrqf
+    LAPACKE_dggrqf_work
+    LAPACKE_dgtcon
+    LAPACKE_dgtcon_work
+    LAPACKE_dgtrfs
+    LAPACKE_dgtrfs_work
+    LAPACKE_dgtsv
+    LAPACKE_dgtsv_work
+    LAPACKE_dgtsvx
+    LAPACKE_dgtsvx_work
+    LAPACKE_dgttrf
+    LAPACKE_dgttrf_work
+    LAPACKE_dgttrs
+    LAPACKE_dgttrs_work
+    LAPACKE_dhgeqz
+    LAPACKE_dhgeqz_work
+    LAPACKE_dhsein
+    LAPACKE_dhsein_work
+    LAPACKE_dhseqr
+    LAPACKE_dhseqr_work
+    LAPACKE_dlacn2
+    LAPACKE_dlacn2_work
+    LAPACKE_dlacpy
+    LAPACKE_dlacpy_work
+    LAPACKE_dlag2s
+    LAPACKE_dlag2s_work
+    LAPACKE_dlamch
+    LAPACKE_dlamch_work
+    LAPACKE_dlange
+    LAPACKE_dlange_work
+    LAPACKE_dlansy
+    LAPACKE_dlansy_work
+    LAPACKE_dlantr
+    LAPACKE_dlantr_work
+    LAPACKE_dlapmr
+    LAPACKE_dlapmr_work
+    LAPACKE_dlapy2
+    LAPACKE_dlapy2_work
+    LAPACKE_dlapy3
+    LAPACKE_dlapy3_work
+    LAPACKE_dlarfb
+    LAPACKE_dlarfb_work
+    LAPACKE_dlarfg
+    LAPACKE_dlarfg_work
+    LAPACKE_dlarft
+    LAPACKE_dlarft_work
+    LAPACKE_dlarfx
+    LAPACKE_dlarfx_work
+    LAPACKE_dlarnv
+    LAPACKE_dlarnv_work
+    LAPACKE_dlartgp
+    LAPACKE_dlartgp_work
+    LAPACKE_dlartgs
+    LAPACKE_dlartgs_work
+    LAPACKE_dlaset
+    LAPACKE_dlaset_work
+    LAPACKE_dlasrt
+    LAPACKE_dlasrt_work
+    LAPACKE_dlaswp
+    LAPACKE_dlaswp_work
+    LAPACKE_dlauum
+    LAPACKE_dlauum_work
+    LAPACKE_dopgtr
+    LAPACKE_dopgtr_work
+    LAPACKE_dopmtr
+    LAPACKE_dopmtr_work
+    LAPACKE_dorbdb
+    LAPACKE_dorbdb_work
+    LAPACKE_dorcsd
+    LAPACKE_dorcsd_work
+    LAPACKE_dorgbr
+    LAPACKE_dorgbr_work
+    LAPACKE_dorghr
+    LAPACKE_dorghr_work
+    LAPACKE_dorglq
+    LAPACKE_dorglq_work
+    LAPACKE_dorgql
+    LAPACKE_dorgql_work
+    LAPACKE_dorgqr
+    LAPACKE_dorgqr_work
+    LAPACKE_dorgrq
+    LAPACKE_dorgrq_work
+    LAPACKE_dorgtr
+    LAPACKE_dorgtr_work
+    LAPACKE_dormbr
+    LAPACKE_dormbr_work
+    LAPACKE_dormhr
+    LAPACKE_dormhr_work
+    LAPACKE_dormlq
+    LAPACKE_dormlq_work
+    LAPACKE_dormql
+    LAPACKE_dormql_work
+    LAPACKE_dormqr
+    LAPACKE_dormqr_work
+    LAPACKE_dormrq
+    LAPACKE_dormrq_work
+    LAPACKE_dormrz
+    LAPACKE_dormrz_work
+    LAPACKE_dormtr
+    LAPACKE_dormtr_work
+    LAPACKE_dpbcon
+    LAPACKE_dpbcon_work
+    LAPACKE_dpbequ
+    LAPACKE_dpbequ_work
+    LAPACKE_dpbrfs
+    LAPACKE_dpbrfs_work
+    LAPACKE_dpbstf
+    LAPACKE_dpbstf_work
+    LAPACKE_dpbsv
+    LAPACKE_dpbsv_work
+    LAPACKE_dpbsvx
+    LAPACKE_dpbsvx_work
+    LAPACKE_dpbtrf
+    LAPACKE_dpbtrf_work
+    LAPACKE_dpbtrs
+    LAPACKE_dpbtrs_work
+    LAPACKE_dpftrf
+    LAPACKE_dpftrf_work
+    LAPACKE_dpftri
+    LAPACKE_dpftri_work
+    LAPACKE_dpftrs
+    LAPACKE_dpftrs_work
+    LAPACKE_dpocon
+    LAPACKE_dpocon_work
+    LAPACKE_dpoequ
+    LAPACKE_dpoequ_work
+    LAPACKE_dpoequb
+    LAPACKE_dpoequb_work
+    LAPACKE_dporfs
+    LAPACKE_dporfs_work
+    LAPACKE_dposv
+    LAPACKE_dposv_work
+    LAPACKE_dposvx
+    LAPACKE_dposvx_work
+    LAPACKE_dpotrf
+    LAPACKE_dpotrf_work
+    LAPACKE_dpotri
+    LAPACKE_dpotri_work
+    LAPACKE_dpotrs
+    LAPACKE_dpotrs_work
+    LAPACKE_dppcon
+    LAPACKE_dppcon_work
+    LAPACKE_dppequ
+    LAPACKE_dppequ_work
+    LAPACKE_dpprfs
+    LAPACKE_dpprfs_work
+    LAPACKE_dppsv
+    LAPACKE_dppsv_work
+    LAPACKE_dppsvx
+    LAPACKE_dppsvx_work
+    LAPACKE_dpptrf
+    LAPACKE_dpptrf_work
+    LAPACKE_dpptri
+    LAPACKE_dpptri_work
+    LAPACKE_dpptrs
+    LAPACKE_dpptrs_work
+    LAPACKE_dpstrf
+    LAPACKE_dpstrf_work
+    LAPACKE_dptcon
+    LAPACKE_dptcon_work
+    LAPACKE_dpteqr
+    LAPACKE_dpteqr_work
+    LAPACKE_dptrfs
+    LAPACKE_dptrfs_work
+    LAPACKE_dptsv
+    LAPACKE_dptsv_work
+    LAPACKE_dptsvx
+    LAPACKE_dptsvx_work
+    LAPACKE_dpttrf
+    LAPACKE_dpttrf_work
+    LAPACKE_dpttrs
+    LAPACKE_dpttrs_work
+    LAPACKE_dsbev
+    LAPACKE_dsbev_work
+    LAPACKE_dsbevd
+    LAPACKE_dsbevd_work
+    LAPACKE_dsbevx
+    LAPACKE_dsbevx_work
+    LAPACKE_dsbgst
+    LAPACKE_dsbgst_work
+    LAPACKE_dsbgv
+    LAPACKE_dsbgv_work
+    LAPACKE_dsbgvd
+    LAPACKE_dsbgvd_work
+    LAPACKE_dsbgvx
+    LAPACKE_dsbgvx_work
+    LAPACKE_dsbtrd
+    LAPACKE_dsbtrd_work
+    LAPACKE_dsfrk
+    LAPACKE_dsfrk_work
+    LAPACKE_dsgesv
+    LAPACKE_dsgesv_work
+    LAPACKE_dspcon
+    LAPACKE_dspcon_work
+    LAPACKE_dspev
+    LAPACKE_dspev_work
+    LAPACKE_dspevd
+    LAPACKE_dspevd_work
+    LAPACKE_dspevx
+    LAPACKE_dspevx_work
+    LAPACKE_dspgst
+    LAPACKE_dspgst_work
+    LAPACKE_dspgv
+    LAPACKE_dspgv_work
+    LAPACKE_dspgvd
+    LAPACKE_dspgvd_work
+    LAPACKE_dspgvx
+    LAPACKE_dspgvx_work
+    LAPACKE_dsposv
+    LAPACKE_dsposv_work
+    LAPACKE_dsprfs
+    LAPACKE_dsprfs_work
+    LAPACKE_dspsv
+    LAPACKE_dspsv_work
+    LAPACKE_dspsvx
+    LAPACKE_dspsvx_work
+    LAPACKE_dsptrd
+    LAPACKE_dsptrd_work
+    LAPACKE_dsptrf
+    LAPACKE_dsptrf_work
+    LAPACKE_dsptri
+    LAPACKE_dsptri_work
+    LAPACKE_dsptrs
+    LAPACKE_dsptrs_work
+    LAPACKE_dstebz
+    LAPACKE_dstebz_work
+    LAPACKE_dstedc
+    LAPACKE_dstedc_work
+    LAPACKE_dstegr
+    LAPACKE_dstegr_work
+    LAPACKE_dstein
+    LAPACKE_dstein_work
+    LAPACKE_dstemr
+    LAPACKE_dstemr_work
+    LAPACKE_dsteqr
+    LAPACKE_dsteqr_work
+    LAPACKE_dsterf
+    LAPACKE_dsterf_work
+    LAPACKE_dstev
+    LAPACKE_dstev_work
+    LAPACKE_dstevd
+    LAPACKE_dstevd_work
+    LAPACKE_dstevr
+    LAPACKE_dstevr_work
+    LAPACKE_dstevx
+    LAPACKE_dstevx_work
+    LAPACKE_dsycon
+    LAPACKE_dsycon_work
+    LAPACKE_dsyconv
+    LAPACKE_dsyconv_work
+    LAPACKE_dsyequb
+    LAPACKE_dsyequb_work
+    LAPACKE_dsyev
+    LAPACKE_dsyev_work
+    LAPACKE_dsyevd
+    LAPACKE_dsyevd_work
+    LAPACKE_dsyevr
+    LAPACKE_dsyevr_work
+    LAPACKE_dsyevx
+    LAPACKE_dsyevx_work
+    LAPACKE_dsygst
+    LAPACKE_dsygst_work
+    LAPACKE_dsygv
+    LAPACKE_dsygv_work
+    LAPACKE_dsygvd
+    LAPACKE_dsygvd_work
+    LAPACKE_dsygvx
+    LAPACKE_dsygvx_work
+    LAPACKE_dsyrfs
+    LAPACKE_dsyrfs_work
+    LAPACKE_dsysv
+    LAPACKE_dsysv_rook
+    LAPACKE_dsysv_rook_work
+    LAPACKE_dsysv_work
+    LAPACKE_dsysvx
+    LAPACKE_dsysvx_work
+    LAPACKE_dsyswapr
+    LAPACKE_dsyswapr_work
+    LAPACKE_dsytrd
+    LAPACKE_dsytrd_work
+    LAPACKE_dsytrf
+    LAPACKE_dsytrf_work
+    LAPACKE_dsytri
+    LAPACKE_dsytri2
+    LAPACKE_dsytri2_work
+    LAPACKE_dsytri2x
+    LAPACKE_dsytri2x_work
+    LAPACKE_dsytri_work
+    LAPACKE_dsytrs
+    LAPACKE_dsytrs2
+    LAPACKE_dsytrs2_work
+    LAPACKE_dsytrs_work
+    LAPACKE_dtbcon
+    LAPACKE_dtbcon_work
+    LAPACKE_dtbrfs
+    LAPACKE_dtbrfs_work
+    LAPACKE_dtbtrs
+    LAPACKE_dtbtrs_work
+    LAPACKE_dtfsm
+    LAPACKE_dtfsm_work
+    LAPACKE_dtftri
+    LAPACKE_dtftri_work
+    LAPACKE_dtfttp
+    LAPACKE_dtfttp_work
+    LAPACKE_dtfttr
+    LAPACKE_dtfttr_work
+    LAPACKE_dtgevc
+    LAPACKE_dtgevc_work
+    LAPACKE_dtgexc
+    LAPACKE_dtgexc_work
+    LAPACKE_dtgsen
+    LAPACKE_dtgsen_work
+    LAPACKE_dtgsja
+    LAPACKE_dtgsja_work
+    LAPACKE_dtgsna
+    LAPACKE_dtgsna_work
+    LAPACKE_dtgsyl
+    LAPACKE_dtgsyl_work
+    LAPACKE_dtpcon
+    LAPACKE_dtpcon_work
+    LAPACKE_dtpmqrt
+    LAPACKE_dtpmqrt_work
+    LAPACKE_dtpqrt
+    LAPACKE_dtpqrt2
+    LAPACKE_dtpqrt2_work
+    LAPACKE_dtpqrt_work
+    LAPACKE_dtprfb
+    LAPACKE_dtprfb_work
+    LAPACKE_dtprfs
+    LAPACKE_dtprfs_work
+    LAPACKE_dtptri
+    LAPACKE_dtptri_work
+    LAPACKE_dtptrs
+    LAPACKE_dtptrs_work
+    LAPACKE_dtpttf
+    LAPACKE_dtpttf_work
+    LAPACKE_dtpttr
+    LAPACKE_dtpttr_work
+    LAPACKE_dtrcon
+    LAPACKE_dtrcon_work
+    LAPACKE_dtrevc
+    LAPACKE_dtrevc_work
+    LAPACKE_dtrexc
+    LAPACKE_dtrexc_work
+    LAPACKE_dtrrfs
+    LAPACKE_dtrrfs_work
+    LAPACKE_dtrsen
+    LAPACKE_dtrsen_work
+    LAPACKE_dtrsna
+    LAPACKE_dtrsna_work
+    LAPACKE_dtrsyl
+    LAPACKE_dtrsyl_work
+    LAPACKE_dtrtri
+    LAPACKE_dtrtri_work
+    LAPACKE_dtrtrs
+    LAPACKE_dtrtrs_work
+    LAPACKE_dtrttf
+    LAPACKE_dtrttf_work
+    LAPACKE_dtrttp
+    LAPACKE_dtrttp_work
+    LAPACKE_dtzrzf
+    LAPACKE_dtzrzf_work
+    LAPACKE_dlatms
+    LAPACKE_dlatms_work
+    LAPACKE_dlagge
+    LAPACKE_dlagge_work
+    LAPACKE_dlagsy
+    LAPACKE_dlagsy_work
+    LAPACKE_dbdsvdx
+    LAPACKE_dbdsvdx_work
+    LAPACKE_dgesvdx
+    LAPACKE_dgesvdx_work
+    LAPACKE_dgetrf2
+    LAPACKE_dgetrf2_work
+    LAPACKE_dgges3
+    LAPACKE_dgges3_work
+    LAPACKE_dggev3
+    LAPACKE_dggev3_work
+    LAPACKE_dgghd3
+    LAPACKE_dgghd3_work
+    LAPACKE_dggsvd3
+    LAPACKE_dggsvd3_work
+    LAPACKE_dggsvp3
+    LAPACKE_dggsvp3_work
+    LAPACKE_dlapmt
+    LAPACKE_dlapmt_work
+    LAPACKE_dlascl
+    LAPACKE_dlascl_work
+    LAPACKE_dorcsd2by1
+    LAPACKE_dorcsd2by1_work
+    LAPACKE_dpotrf2
+    LAPACKE_dpotrf2_work
+    LAPACKE_dsytrf_rook
+    LAPACKE_dsytrf_rook_work
+    LAPACKE_dsytrs_rook
+    LAPACKE_dsytrs_rook_work
+    LAPACKE_dgelq
+    LAPACKE_dgelq_work
+    LAPACKE_dgemlq
+    LAPACKE_dgemlq_work
+    LAPACKE_dgemqr
+    LAPACKE_dgemqr_work
+    LAPACKE_dgeqr
+    LAPACKE_dgeqr_work
+    LAPACKE_dgetsls
+    LAPACKE_dgetsls_work
+    LAPACKE_dsbev_2stage
+    LAPACKE_dsbev_2stage_work
+    LAPACKE_dsbevd_2stage
+    LAPACKE_dsbevd_2stage_work
+    LAPACKE_dsbevx_2stage
+    LAPACKE_dsbevx_2stage_work
+    LAPACKE_dsycon_3
+    LAPACKE_dsycon_3_work
+    LAPACKE_dsyev_2stage
+    LAPACKE_dsyev_2stage_work
+    LAPACKE_dsyevd_2stage
+    LAPACKE_dsyevd_2stage_work
+    LAPACKE_dsyevr_2stage
+    LAPACKE_dsyevr_2stage_work
+    LAPACKE_dsyevx_2stage
+    LAPACKE_dsyevx_2stage_work
+    LAPACKE_dsygv_2stage
+    LAPACKE_dsygv_2stage_work
+    LAPACKE_dsysv_aa
+    LAPACKE_dsysv_aa_work
+    LAPACKE_dsysv_rk
+    LAPACKE_dsysv_rk_work
+    LAPACKE_dsytrf_aa
+    LAPACKE_dsytrf_aa_work
+    LAPACKE_dsytrf_rk
+    LAPACKE_dsytrf_rk_work
+    LAPACKE_dsytri_3
+    LAPACKE_dsytri_3_work
+    LAPACKE_dsytrs_aa
+    LAPACKE_dsytrs_aa_work
+    LAPACKE_dsytrs_3
+    LAPACKE_dsytrs_3_work
+    LAPACKE_dlassq
+    LAPACKE_dlassq_work
+    LAPACKE_dsysv_aa_2stage
+    LAPACKE_dsysv_aa_2stage_work
+    LAPACKE_dsytrf_aa_2stage
+    LAPACKE_dsytrf_aa_2stage_work
+    LAPACKE_dsytrs_aa_2stage
+    LAPACKE_dsytrs_aa_2stage_work
+    LAPACKE_dgesvdq
+    LAPACKE_dgesvdq_work
+    LAPACKE_slag2d
+    LAPACKE_slag2d_work
+"
+
+lapackeobjss="
+    LAPACKE_sgb_nancheck
+    LAPACKE_sgb_trans
+    LAPACKE_sge_nancheck
+    LAPACKE_sge_trans
+    LAPACKE_sgg_nancheck
+    LAPACKE_sgg_trans
+    LAPACKE_sgt_nancheck
+    LAPACKE_shs_nancheck
+    LAPACKE_shs_trans
+    LAPACKE_s_nancheck
+    LAPACKE_spb_nancheck
+    LAPACKE_spb_trans
+    LAPACKE_spf_nancheck
+    LAPACKE_spf_trans
+    LAPACKE_spo_nancheck
+    LAPACKE_spo_trans
+    LAPACKE_spp_nancheck
+    LAPACKE_spp_trans
+    LAPACKE_spt_nancheck
+    LAPACKE_ssb_nancheck
+    LAPACKE_ssb_trans
+    LAPACKE_ssp_nancheck
+    LAPACKE_ssp_trans
+    LAPACKE_sst_nancheck
+    LAPACKE_ssy_nancheck
+    LAPACKE_ssy_trans
+    LAPACKE_stb_nancheck
+    LAPACKE_stb_trans
+    LAPACKE_stf_nancheck
+    LAPACKE_stf_trans
+    LAPACKE_stp_nancheck
+    LAPACKE_stp_trans
+    LAPACKE_str_nancheck
+    LAPACKE_str_trans
+    LAPACKE_sbbcsd
+    LAPACKE_sbbcsd_work
+    LAPACKE_sbdsdc
+    LAPACKE_sbdsdc_work
+    LAPACKE_sbdsqr
+    LAPACKE_sbdsqr_work
+    LAPACKE_sdisna
+    LAPACKE_sdisna_work
+    LAPACKE_sgbbrd
+    LAPACKE_sgbbrd_work
+    LAPACKE_sgbcon
+    LAPACKE_sgbcon_work
+    LAPACKE_sgbequ
+    LAPACKE_sgbequ_work
+    LAPACKE_sgbequb
+    LAPACKE_sgbequb_work
+    LAPACKE_sgbrfs
+    LAPACKE_sgbrfs_work
+    LAPACKE_sgbsv
+    LAPACKE_sgbsv_work
+    LAPACKE_sgbsvx
+    LAPACKE_sgbsvx_work
+    LAPACKE_sgbtrf
+    LAPACKE_sgbtrf_work
+    LAPACKE_sgbtrs
+    LAPACKE_sgbtrs_work
+    LAPACKE_sgebak
+    LAPACKE_sgebak_work
+    LAPACKE_sgebal
+    LAPACKE_sgebal_work
+    LAPACKE_sgebrd
+    LAPACKE_sgebrd_work
+    LAPACKE_sgecon
+    LAPACKE_sgecon_work
+    LAPACKE_sgeequ
+    LAPACKE_sgeequ_work
+    LAPACKE_sgeequb
+    LAPACKE_sgeequb_work
+    LAPACKE_sgees
+    LAPACKE_sgees_work
+    LAPACKE_sgeesx
+    LAPACKE_sgeesx_work
+    LAPACKE_sgeev
+    LAPACKE_sgeev_work
+    LAPACKE_sgeevx
+    LAPACKE_sgeevx_work
+    LAPACKE_sgehrd
+    LAPACKE_sgehrd_work
+    LAPACKE_sgejsv
+    LAPACKE_sgejsv_work
+    LAPACKE_sgelq2
+    LAPACKE_sgelq2_work
+    LAPACKE_sgelqf
+    LAPACKE_sgelqf_work
+    LAPACKE_sgels
+    LAPACKE_sgels_work
+    LAPACKE_sgelsd
+    LAPACKE_sgelsd_work
+    LAPACKE_sgelss
+    LAPACKE_sgelss_work
+    LAPACKE_sgelsy
+    LAPACKE_sgelsy_work
+    LAPACKE_sgemqrt
+    LAPACKE_sgemqrt_work
+    LAPACKE_sgeqlf
+    LAPACKE_sgeqlf_work
+    LAPACKE_sgeqp3
+    LAPACKE_sgeqp3_work
+    LAPACKE_sgeqr2
+    LAPACKE_sgeqr2_work
+    LAPACKE_sgeqrf
+    LAPACKE_sgeqrf_work
+    LAPACKE_sgeqrfp
+    LAPACKE_sgeqrfp_work
+    LAPACKE_sgeqrt
+    LAPACKE_sgeqrt2
+    LAPACKE_sgeqrt2_work
+    LAPACKE_sgeqrt3
+    LAPACKE_sgeqrt3_work
+    LAPACKE_sgeqrt_work
+    LAPACKE_sgerfs
+    LAPACKE_sgerfs_work
+    LAPACKE_sgerqf
+    LAPACKE_sgerqf_work
+    LAPACKE_sgesdd
+    LAPACKE_sgesdd_work
+    LAPACKE_sgesv
+    LAPACKE_sgesv_work
+    LAPACKE_sgesvd
+    LAPACKE_sgesvd_work
+    LAPACKE_sgesvj
+    LAPACKE_sgesvj_work
+    LAPACKE_sgesvx
+    LAPACKE_sgesvx_work
+    LAPACKE_sgetf2
+    LAPACKE_sgetf2_work
+    LAPACKE_sgetrf
+    LAPACKE_sgetrf_work
+    LAPACKE_sgetri
+    LAPACKE_sgetri_work
+    LAPACKE_sgetrs
+    LAPACKE_sgetrs_work
+    LAPACKE_sggbak
+    LAPACKE_sggbak_work
+    LAPACKE_sggbal
+    LAPACKE_sggbal_work
+    LAPACKE_sgges
+    LAPACKE_sgges_work
+    LAPACKE_sggesx
+    LAPACKE_sggesx_work
+    LAPACKE_sggev
+    LAPACKE_sggev_work
+    LAPACKE_sggevx
+    LAPACKE_sggevx_work
+    LAPACKE_sggglm
+    LAPACKE_sggglm_work
+    LAPACKE_sgghrd
+    LAPACKE_sgghrd_work
+    LAPACKE_sgglse
+    LAPACKE_sgglse_work
+    LAPACKE_sggqrf
+    LAPACKE_sggqrf_work
+    LAPACKE_sggrqf
+    LAPACKE_sggrqf_work
+    LAPACKE_sgtcon
+    LAPACKE_sgtcon_work
+    LAPACKE_sgtrfs
+    LAPACKE_sgtrfs_work
+    LAPACKE_sgtsv
+    LAPACKE_sgtsv_work
+    LAPACKE_sgtsvx
+    LAPACKE_sgtsvx_work
+    LAPACKE_sgttrf
+    LAPACKE_sgttrf_work
+    LAPACKE_sgttrs
+    LAPACKE_sgttrs_work
+    LAPACKE_shgeqz
+    LAPACKE_shgeqz_work
+    LAPACKE_shsein
+    LAPACKE_shsein_work
+    LAPACKE_shseqr
+    LAPACKE_shseqr_work
+    LAPACKE_slacn2
+    LAPACKE_slacn2_work
+    LAPACKE_slacpy
+    LAPACKE_slacpy_work
+    LAPACKE_slamch
+    LAPACKE_slamch_work
+    LAPACKE_slange
+    LAPACKE_slange_work
+    LAPACKE_slansy
+    LAPACKE_slansy_work
+    LAPACKE_slantr
+    LAPACKE_slantr_work
+    LAPACKE_slapmr
+    LAPACKE_slapmr_work
+    LAPACKE_slapy2
+    LAPACKE_slapy2_work
+    LAPACKE_slapy3
+    LAPACKE_slapy3_work
+    LAPACKE_slarfb
+    LAPACKE_slarfb_work
+    LAPACKE_slarfg
+    LAPACKE_slarfg_work
+    LAPACKE_slarft
+    LAPACKE_slarft_work
+    LAPACKE_slarfx
+    LAPACKE_slarfx_work
+    LAPACKE_slarnv
+    LAPACKE_slarnv_work
+    LAPACKE_slartgp
+    LAPACKE_slartgp_work
+    LAPACKE_slartgs
+    LAPACKE_slartgs_work
+    LAPACKE_slaset
+    LAPACKE_slaset_work
+    LAPACKE_slasrt
+    LAPACKE_slasrt_work
+    LAPACKE_slaswp
+    LAPACKE_slaswp_work
+    LAPACKE_slauum
+    LAPACKE_slauum_work
+    LAPACKE_sopgtr
+    LAPACKE_sopgtr_work
+    LAPACKE_sopmtr
+    LAPACKE_sopmtr_work
+    LAPACKE_sorbdb
+    LAPACKE_sorbdb_work
+    LAPACKE_sorcsd
+    LAPACKE_sorcsd_work
+    LAPACKE_sorgbr
+    LAPACKE_sorgbr_work
+    LAPACKE_sorghr
+    LAPACKE_sorghr_work
+    LAPACKE_sorglq
+    LAPACKE_sorglq_work
+    LAPACKE_sorgql
+    LAPACKE_sorgql_work
+    LAPACKE_sorgqr
+    LAPACKE_sorgqr_work
+    LAPACKE_sorgrq
+    LAPACKE_sorgrq_work
+    LAPACKE_sorgtr
+    LAPACKE_sorgtr_work
+    LAPACKE_sormbr
+    LAPACKE_sormbr_work
+    LAPACKE_sormhr
+    LAPACKE_sormhr_work
+    LAPACKE_sormlq
+    LAPACKE_sormlq_work
+    LAPACKE_sormql
+    LAPACKE_sormql_work
+    LAPACKE_sormqr
+    LAPACKE_sormqr_work
+    LAPACKE_sormrq
+    LAPACKE_sormrq_work
+    LAPACKE_sormrz
+    LAPACKE_sormrz_work
+    LAPACKE_sormtr
+    LAPACKE_sormtr_work
+    LAPACKE_spbcon
+    LAPACKE_spbcon_work
+    LAPACKE_spbequ
+    LAPACKE_spbequ_work
+    LAPACKE_spbrfs
+    LAPACKE_spbrfs_work
+    LAPACKE_spbstf
+    LAPACKE_spbstf_work
+    LAPACKE_spbsv
+    LAPACKE_spbsv_work
+    LAPACKE_spbsvx
+    LAPACKE_spbsvx_work
+    LAPACKE_spbtrf
+    LAPACKE_spbtrf_work
+    LAPACKE_spbtrs
+    LAPACKE_spbtrs_work
+    LAPACKE_spftrf
+    LAPACKE_spftrf_work
+    LAPACKE_spftri
+    LAPACKE_spftri_work
+    LAPACKE_spftrs
+    LAPACKE_spftrs_work
+    LAPACKE_spocon
+    LAPACKE_spocon_work
+    LAPACKE_spoequ
+    LAPACKE_spoequ_work
+    LAPACKE_spoequb
+    LAPACKE_spoequb_work
+    LAPACKE_sporfs
+    LAPACKE_sporfs_work
+    LAPACKE_sposv
+    LAPACKE_sposv_work
+    LAPACKE_sposvx
+    LAPACKE_sposvx_work
+    LAPACKE_spotrf
+    LAPACKE_spotrf_work
+    LAPACKE_spotri
+    LAPACKE_spotri_work
+    LAPACKE_spotrs
+    LAPACKE_spotrs_work
+    LAPACKE_sppcon
+    LAPACKE_sppcon_work
+    LAPACKE_sppequ
+    LAPACKE_sppequ_work
+    LAPACKE_spprfs
+    LAPACKE_spprfs_work
+    LAPACKE_sppsv
+    LAPACKE_sppsv_work
+    LAPACKE_sppsvx
+    LAPACKE_sppsvx_work
+    LAPACKE_spptrf
+    LAPACKE_spptrf_work
+    LAPACKE_spptri
+    LAPACKE_spptri_work
+    LAPACKE_spptrs
+    LAPACKE_spptrs_work
+    LAPACKE_spstrf
+    LAPACKE_spstrf_work
+    LAPACKE_sptcon
+    LAPACKE_sptcon_work
+    LAPACKE_spteqr
+    LAPACKE_spteqr_work
+    LAPACKE_sptrfs
+    LAPACKE_sptrfs_work
+    LAPACKE_sptsv
+    LAPACKE_sptsv_work
+    LAPACKE_sptsvx
+    LAPACKE_sptsvx_work
+    LAPACKE_spttrf
+    LAPACKE_spttrf_work
+    LAPACKE_spttrs
+    LAPACKE_spttrs_work
+    LAPACKE_ssbev
+    LAPACKE_ssbev_work
+    LAPACKE_ssbevd
+    LAPACKE_ssbevd_work
+    LAPACKE_ssbevx
+    LAPACKE_ssbevx_work
+    LAPACKE_ssbgst
+    LAPACKE_ssbgst_work
+    LAPACKE_ssbgv
+    LAPACKE_ssbgv_work
+    LAPACKE_ssbgvd
+    LAPACKE_ssbgvd_work
+    LAPACKE_ssbgvx
+    LAPACKE_ssbgvx_work
+    LAPACKE_ssbtrd
+    LAPACKE_ssbtrd_work
+    LAPACKE_ssfrk
+    LAPACKE_ssfrk_work
+    LAPACKE_sspcon
+    LAPACKE_sspcon_work
+    LAPACKE_sspev
+    LAPACKE_sspev_work
+    LAPACKE_sspevd
+    LAPACKE_sspevd_work
+    LAPACKE_sspevx
+    LAPACKE_sspevx_work
+    LAPACKE_sspgst
+    LAPACKE_sspgst_work
+    LAPACKE_sspgv
+    LAPACKE_sspgv_work
+    LAPACKE_sspgvd
+    LAPACKE_sspgvd_work
+    LAPACKE_sspgvx
+    LAPACKE_sspgvx_work
+    LAPACKE_ssprfs
+    LAPACKE_ssprfs_work
+    LAPACKE_sspsv
+    LAPACKE_sspsv_work
+    LAPACKE_sspsvx
+    LAPACKE_sspsvx_work
+    LAPACKE_ssptrd
+    LAPACKE_ssptrd_work
+    LAPACKE_ssptrf
+    LAPACKE_ssptrf_work
+    LAPACKE_ssptri
+    LAPACKE_ssptri_work
+    LAPACKE_ssptrs
+    LAPACKE_ssptrs_work
+    LAPACKE_sstebz
+    LAPACKE_sstebz_work
+    LAPACKE_sstedc
+    LAPACKE_sstedc_work
+    LAPACKE_sstegr
+    LAPACKE_sstegr_work
+    LAPACKE_sstein
+    LAPACKE_sstein_work
+    LAPACKE_sstemr
+    LAPACKE_sstemr_work
+    LAPACKE_ssteqr
+    LAPACKE_ssteqr_work
+    LAPACKE_ssterf
+    LAPACKE_ssterf_work
+    LAPACKE_sstev
+    LAPACKE_sstev_work
+    LAPACKE_sstevd
+    LAPACKE_sstevd_work
+    LAPACKE_sstevr
+    LAPACKE_sstevr_work
+    LAPACKE_sstevx
+    LAPACKE_sstevx_work
+    LAPACKE_ssycon
+    LAPACKE_ssycon_work
+    LAPACKE_ssyconv
+    LAPACKE_ssyconv_work
+    LAPACKE_ssyequb
+    LAPACKE_ssyequb_work
+    LAPACKE_ssyev
+    LAPACKE_ssyev_work
+    LAPACKE_ssyevd
+    LAPACKE_ssyevd_work
+    LAPACKE_ssyevr
+    LAPACKE_ssyevr_work
+    LAPACKE_ssyevx
+    LAPACKE_ssyevx_work
+    LAPACKE_ssygst
+    LAPACKE_ssygst_work
+    LAPACKE_ssygv
+    LAPACKE_ssygv_work
+    LAPACKE_ssygvd
+    LAPACKE_ssygvd_work
+    LAPACKE_ssygvx
+    LAPACKE_ssygvx_work
+    LAPACKE_ssyrfs
+    LAPACKE_ssyrfs_work
+    LAPACKE_ssysv
+    LAPACKE_ssysv_rook
+    LAPACKE_ssysv_rook_work
+    LAPACKE_ssysv_work
+    LAPACKE_ssysvx
+    LAPACKE_ssysvx_work
+    LAPACKE_ssyswapr
+    LAPACKE_ssyswapr_work
+    LAPACKE_ssytrd
+    LAPACKE_ssytrd_work
+    LAPACKE_ssytrf
+    LAPACKE_ssytrf_work
+    LAPACKE_ssytri
+    LAPACKE_ssytri2
+    LAPACKE_ssytri2_work
+    LAPACKE_ssytri2x
+    LAPACKE_ssytri2x_work
+    LAPACKE_ssytri_work
+    LAPACKE_ssytrs
+    LAPACKE_ssytrs2
+    LAPACKE_ssytrs2_work
+    LAPACKE_ssytrs_work
+    LAPACKE_stbcon
+    LAPACKE_stbcon_work
+    LAPACKE_stbrfs
+    LAPACKE_stbrfs_work
+    LAPACKE_stbtrs
+    LAPACKE_stbtrs_work
+    LAPACKE_stfsm
+    LAPACKE_stfsm_work
+    LAPACKE_stftri
+    LAPACKE_stftri_work
+    LAPACKE_stfttp
+    LAPACKE_stfttp_work
+    LAPACKE_stfttr
+    LAPACKE_stfttr_work
+    LAPACKE_stgevc
+    LAPACKE_stgevc_work
+    LAPACKE_stgexc
+    LAPACKE_stgexc_work
+    LAPACKE_stgsen
+    LAPACKE_stgsen_work
+    LAPACKE_stgsja
+    LAPACKE_stgsja_work
+    LAPACKE_stgsna
+    LAPACKE_stgsna_work
+    LAPACKE_stgsyl
+    LAPACKE_stgsyl_work
+    LAPACKE_stpcon
+    LAPACKE_stpcon_work
+    LAPACKE_stpmqrt
+    LAPACKE_stpmqrt_work
+    LAPACKE_stpqrt2
+    LAPACKE_stpqrt2_work
+    LAPACKE_stprfb
+    LAPACKE_stprfb_work
+    LAPACKE_stprfs
+    LAPACKE_stprfs_work
+    LAPACKE_stptri
+    LAPACKE_stptri_work
+    LAPACKE_stptrs
+    LAPACKE_stptrs_work
+    LAPACKE_stpttf
+    LAPACKE_stpttf_work
+    LAPACKE_stpttr
+    LAPACKE_stpttr_work
+    LAPACKE_strcon
+    LAPACKE_strcon_work
+    LAPACKE_strevc
+    LAPACKE_strevc_work
+    LAPACKE_strexc
+    LAPACKE_strexc_work
+    LAPACKE_strrfs
+    LAPACKE_strrfs_work
+    LAPACKE_strsen
+    LAPACKE_strsen_work
+    LAPACKE_strsna
+    LAPACKE_strsna_work
+    LAPACKE_strsyl
+    LAPACKE_strsyl_work
+    LAPACKE_strtri
+    LAPACKE_strtri_work
+    LAPACKE_strtrs
+    LAPACKE_strtrs_work
+    LAPACKE_strttf
+    LAPACKE_strttf_work
+    LAPACKE_strttp
+    LAPACKE_strttp_work
+    LAPACKE_stzrzf
+    LAPACKE_stzrzf_work
+    LAPACKE_slatms
+    LAPACKE_slatms_work
+    LAPACKE_slagge
+    LAPACKE_slagge_work
+    LAPACKE_slagsy
+    LAPACKE_slagsy_work
+    LAPACKE_sbdsvdx
+    LAPACKE_sbdsvdx_work
+    LAPACKE_sgesvdx
+    LAPACKE_sgesvdx_work
+    LAPACKE_sgetrf2
+    LAPACKE_sgetrf2_work
+    LAPACKE_sgges3
+    LAPACKE_sgges3_work
+    LAPACKE_sggev3
+    LAPACKE_sggev3_work
+    LAPACKE_sgghd3
+    LAPACKE_sgghd3_work
+    LAPACKE_sggsvd3
+    LAPACKE_sggsvd3_work
+    LAPACKE_sggsvp3
+    LAPACKE_sggsvp3_work
+    LAPACKE_slapmt
+    LAPACKE_slapmt_work
+    LAPACKE_slascl
+    LAPACKE_slascl_work
+    LAPACKE_sorcsd2by1
+    LAPACKE_sorcsd2by1_work
+    LAPACKE_spotrf2
+    LAPACKE_spotrf2_work
+    LAPACKE_ssytrf_rook
+    LAPACKE_ssytrf_rook_work
+    LAPACKE_ssytrs_rook
+    LAPACKE_ssytrs_rook_work
+    LAPACKE_stpqrt
+    LAPACKE_stpqrt_work
+    LAPACKE_sgelq
+    LAPACKE_sgelq_work
+    LAPACKE_sgemlq
+    LAPACKE_sgemlq_work
+    LAPACKE_sgemqr
+    LAPACKE_sgemqr_work
+    LAPACKE_sgeqr
+    LAPACKE_sgeqr_work
+    LAPACKE_sgetsls
+    LAPACKE_sgetsls_work
+    LAPACKE_ssbev_2stage
+    LAPACKE_ssbev_2stage_work
+    LAPACKE_ssbevd_2stage
+    LAPACKE_ssbevd_2stage_work
+    LAPACKE_ssbevx_2stage
+    LAPACKE_ssbevx_2stage_work
+    LAPACKE_ssycon_3
+    LAPACKE_ssycon_3_work
+    LAPACKE_ssyev_2stage
+    LAPACKE_ssyev_2stage_work
+    LAPACKE_ssyevd_2stage
+    LAPACKE_ssyevd_2stage_work
+    LAPACKE_ssyevr_2stage
+    LAPACKE_ssyevr_2stage_work
+    LAPACKE_ssyevx_2stage
+    LAPACKE_ssyevx_2stage_work
+    LAPACKE_ssygv_2stage
+    LAPACKE_ssygv_2stage_work
+    LAPACKE_ssysv_aa
+    LAPACKE_ssysv_aa_work
+    LAPACKE_ssysv_rk
+    LAPACKE_ssysv_rk_work
+    LAPACKE_ssytrf_aa
+    LAPACKE_ssytrf_aa_work
+    LAPACKE_ssytrf_rk
+    LAPACKE_ssytrf_rk_work
+    LAPACKE_ssytri_3
+    LAPACKE_ssytri_3_work
+    LAPACKE_ssytrs_aa
+    LAPACKE_ssytrs_aa_work
+    LAPACKE_ssytrs_3
+    LAPACKE_ssytrs_3_work
+    LAPACKE_slassq
+    LAPACKE_slassq_work
+    LAPACKE_ssysv_aa_2stage
+    LAPACKE_ssysv_aa_2stage_work
+    LAPACKE_ssytrf_aa_2stage
+    LAPACKE_ssytrf_aa_2stage_work
+    LAPACKE_ssytrs_aa_2stage
+    LAPACKE_ssytrs_aa_2stage_work
+    LAPACKE_sgesvdq
+    LAPACKE_sgesvdq_work
+"
+
+lapackeobjsz="
+    LAPACKE_zgb_nancheck
+    LAPACKE_zgb_trans
+    LAPACKE_zge_nancheck
+    LAPACKE_zge_trans
+    LAPACKE_zgg_nancheck
+    LAPACKE_zgg_trans
+    LAPACKE_zgt_nancheck
+    LAPACKE_zhb_nancheck
+    LAPACKE_zhb_trans
+    LAPACKE_zhe_nancheck
+    LAPACKE_zhe_trans
+    LAPACKE_zhp_nancheck
+    LAPACKE_zhp_trans
+    LAPACKE_zhs_nancheck
+    LAPACKE_zhs_trans
+    LAPACKE_z_nancheck
+    LAPACKE_zpb_nancheck
+    LAPACKE_zpb_trans
+    LAPACKE_zpf_nancheck
+    LAPACKE_zpf_trans
+    LAPACKE_zpo_nancheck
+    LAPACKE_zpo_trans
+    LAPACKE_zpp_nancheck
+    LAPACKE_zpp_trans
+    LAPACKE_zpt_nancheck
+    LAPACKE_zsp_nancheck
+    LAPACKE_zsp_trans
+    LAPACKE_zst_nancheck
+    LAPACKE_zsy_nancheck
+    LAPACKE_zsy_trans
+    LAPACKE_ztb_nancheck
+    LAPACKE_ztb_trans
+    LAPACKE_ztf_nancheck
+    LAPACKE_ztf_trans
+    LAPACKE_ztp_nancheck
+    LAPACKE_ztp_trans
+    LAPACKE_ztr_nancheck
+    LAPACKE_ztr_trans
+    LAPACKE_zbbcsd
+    LAPACKE_zbbcsd_work
+    LAPACKE_zbdsqr
+    LAPACKE_zbdsqr_work
+    LAPACKE_zcgesv
+    LAPACKE_zcgesv_work
+    LAPACKE_zcposv
+    LAPACKE_zcposv_work
+    LAPACKE_zgbbrd
+    LAPACKE_zgbbrd_work
+    LAPACKE_zgbcon
+    LAPACKE_zgbcon_work
+    LAPACKE_zgbequ
+    LAPACKE_zgbequ_work
+    LAPACKE_zgbequb
+    LAPACKE_zgbequb_work
+    LAPACKE_zgbrfs
+    LAPACKE_zgbrfs_work
+    LAPACKE_zgbsv
+    LAPACKE_zgbsv_work
+    LAPACKE_zgbsvx
+    LAPACKE_zgbsvx_work
+    LAPACKE_zgbtrf
+    LAPACKE_zgbtrf_work
+    LAPACKE_zgbtrs
+    LAPACKE_zgbtrs_work
+    LAPACKE_zgebak
+    LAPACKE_zgebak_work
+    LAPACKE_zgebal
+    LAPACKE_zgebal_work
+    LAPACKE_zgebrd
+    LAPACKE_zgebrd_work
+    LAPACKE_zgecon
+    LAPACKE_zgecon_work
+    LAPACKE_zgeequ
+    LAPACKE_zgeequ_work
+    LAPACKE_zgeequb
+    LAPACKE_zgeequb_work
+    LAPACKE_zgees
+    LAPACKE_zgees_work
+    LAPACKE_zgeesx
+    LAPACKE_zgeesx_work
+    LAPACKE_zgeev
+    LAPACKE_zgeev_work
+    LAPACKE_zgeevx
+    LAPACKE_zgeevx_work
+    LAPACKE_zgehrd
+    LAPACKE_zgehrd_work
+    LAPACKE_zgelq2
+    LAPACKE_zgelq2_work
+    LAPACKE_zgelqf
+    LAPACKE_zgelqf_work
+    LAPACKE_zgels
+    LAPACKE_zgels_work
+    LAPACKE_zgelsd
+    LAPACKE_zgelsd_work
+    LAPACKE_zgelss
+    LAPACKE_zgelss_work
+    LAPACKE_zgelsy
+    LAPACKE_zgelsy_work
+    LAPACKE_zgemqrt
+    LAPACKE_zgemqrt_work
+    LAPACKE_zgeqlf
+    LAPACKE_zgeqlf_work
+    LAPACKE_zgeqp3
+    LAPACKE_zgeqp3_work
+    LAPACKE_zgeqr2
+    LAPACKE_zgeqr2_work
+    LAPACKE_zgeqrf
+    LAPACKE_zgeqrf_work
+    LAPACKE_zgeqrfp
+    LAPACKE_zgeqrfp_work
+    LAPACKE_zgeqrt
+    LAPACKE_zgeqrt2
+    LAPACKE_zgeqrt2_work
+    LAPACKE_zgeqrt3
+    LAPACKE_zgeqrt3_work
+    LAPACKE_zgeqrt_work
+    LAPACKE_zgerfs
+    LAPACKE_zgerfs_work
+    LAPACKE_zgerqf
+    LAPACKE_zgerqf_work
+    LAPACKE_zgesdd
+    LAPACKE_zgesdd_work
+    LAPACKE_zgesv
+    LAPACKE_zgesv_work
+    LAPACKE_zgesvd
+    LAPACKE_zgesvd_work
+    LAPACKE_zgesvx
+    LAPACKE_zgesvx_work
+    LAPACKE_zgetf2
+    LAPACKE_zgetf2_work
+    LAPACKE_zgetrf
+    LAPACKE_zgetrf_work
+    LAPACKE_zgetri
+    LAPACKE_zgetri_work
+    LAPACKE_zgetrs
+    LAPACKE_zgetrs_work
+    LAPACKE_zggbak
+    LAPACKE_zggbak_work
+    LAPACKE_zggbal
+    LAPACKE_zggbal_work
+    LAPACKE_zgges
+    LAPACKE_zgges_work
+    LAPACKE_zggesx
+    LAPACKE_zggesx_work
+    LAPACKE_zggev
+    LAPACKE_zggev_work
+    LAPACKE_zggevx
+    LAPACKE_zggevx_work
+    LAPACKE_zggglm
+    LAPACKE_zggglm_work
+    LAPACKE_zgghrd
+    LAPACKE_zgghrd_work
+    LAPACKE_zgglse
+    LAPACKE_zgglse_work
+    LAPACKE_zggqrf
+    LAPACKE_zggqrf_work
+    LAPACKE_zggrqf
+    LAPACKE_zggrqf_work
+    LAPACKE_zgtcon
+    LAPACKE_zgtcon_work
+    LAPACKE_zgtrfs
+    LAPACKE_zgtrfs_work
+    LAPACKE_zgtsv
+    LAPACKE_zgtsv_work
+    LAPACKE_zgtsvx
+    LAPACKE_zgtsvx_work
+    LAPACKE_zgttrf
+    LAPACKE_zgttrf_work
+    LAPACKE_zgttrs
+    LAPACKE_zgttrs_work
+    LAPACKE_zhbev
+    LAPACKE_zhbev_work
+    LAPACKE_zhbevd
+    LAPACKE_zhbevd_work
+    LAPACKE_zhbevx
+    LAPACKE_zhbevx_work
+    LAPACKE_zhbgst
+    LAPACKE_zhbgst_work
+    LAPACKE_zhbgv
+    LAPACKE_zhbgv_work
+    LAPACKE_zhbgvd
+    LAPACKE_zhbgvd_work
+    LAPACKE_zhbgvx
+    LAPACKE_zhbgvx_work
+    LAPACKE_zhbtrd
+    LAPACKE_zhbtrd_work
+    LAPACKE_zhecon
+    LAPACKE_zhecon_work
+    LAPACKE_zheequb
+    LAPACKE_zheequb_work
+    LAPACKE_zheev
+    LAPACKE_zheev_work
+    LAPACKE_zheevd
+    LAPACKE_zheevd_work
+    LAPACKE_zheevr
+    LAPACKE_zheevr_work
+    LAPACKE_zheevx
+    LAPACKE_zheevx_work
+    LAPACKE_zhegst
+    LAPACKE_zhegst_work
+    LAPACKE_zhegv
+    LAPACKE_zhegv_work
+    LAPACKE_zhegvd
+    LAPACKE_zhegvd_work
+    LAPACKE_zhegvx
+    LAPACKE_zhegvx_work
+    LAPACKE_zherfs
+    LAPACKE_zherfs_work
+    LAPACKE_zhesv
+    LAPACKE_zhesv_work
+    LAPACKE_zhesvx
+    LAPACKE_zhesvx_work
+    LAPACKE_zheswapr
+    LAPACKE_zheswapr_work
+    LAPACKE_zhetrd
+    LAPACKE_zhetrd_work
+    LAPACKE_zhetrf
+    LAPACKE_zhetrf_work
+    LAPACKE_zhetri
+    LAPACKE_zhetri2
+    LAPACKE_zhetri2_work
+    LAPACKE_zhetri2x
+    LAPACKE_zhetri2x_work
+    LAPACKE_zhetri_work
+    LAPACKE_zhetrs
+    LAPACKE_zhetrs2
+    LAPACKE_zhetrs2_work
+    LAPACKE_zhetrs_work
+    LAPACKE_zhfrk
+    LAPACKE_zhfrk_work
+    LAPACKE_zhgeqz
+    LAPACKE_zhgeqz_work
+    LAPACKE_zhpcon
+    LAPACKE_zhpcon_work
+    LAPACKE_zhpev
+    LAPACKE_zhpev_work
+    LAPACKE_zhpevd
+    LAPACKE_zhpevd_work
+    LAPACKE_zhpevx
+    LAPACKE_zhpevx_work
+    LAPACKE_zhpgst
+    LAPACKE_zhpgst_work
+    LAPACKE_zhpgv
+    LAPACKE_zhpgv_work
+    LAPACKE_zhpgvd
+    LAPACKE_zhpgvd_work
+    LAPACKE_zhpgvx
+    LAPACKE_zhpgvx_work
+    LAPACKE_zhprfs
+    LAPACKE_zhprfs_work
+    LAPACKE_zhpsv
+    LAPACKE_zhpsv_work
+    LAPACKE_zhpsvx
+    LAPACKE_zhpsvx_work
+    LAPACKE_zhptrd
+    LAPACKE_zhptrd_work
+    LAPACKE_zhptrf
+    LAPACKE_zhptrf_work
+    LAPACKE_zhptri
+    LAPACKE_zhptri_work
+    LAPACKE_zhptrs
+    LAPACKE_zhptrs_work
+    LAPACKE_zhsein
+    LAPACKE_zhsein_work
+    LAPACKE_zhseqr
+    LAPACKE_zhseqr_work
+    LAPACKE_zlacgv
+    LAPACKE_zlacgv_work
+    LAPACKE_zlacn2
+    LAPACKE_zlacn2_work
+    LAPACKE_zlacp2
+    LAPACKE_zlacp2_work
+    LAPACKE_zlacpy
+    LAPACKE_zlacpy_work
+    LAPACKE_zlag2c
+    LAPACKE_zlag2c_work
+    LAPACKE_zlange
+    LAPACKE_zlange_work
+    LAPACKE_zlanhe
+    LAPACKE_zlanhe_work
+    LAPACKE_zlansy
+    LAPACKE_zlansy_work
+    LAPACKE_zlantr
+    LAPACKE_zlantr_work
+    LAPACKE_zlapmr
+    LAPACKE_zlapmr_work
+    LAPACKE_zlarfb
+    LAPACKE_zlarfb_work
+    LAPACKE_zlarfg
+    LAPACKE_zlarfg_work
+    LAPACKE_zlarft
+    LAPACKE_zlarft_work
+    LAPACKE_zlarfx
+    LAPACKE_zlarfx_work
+    LAPACKE_zlarnv
+    LAPACKE_zlarnv_work
+    LAPACKE_zlaset
+    LAPACKE_zlaset_work
+    LAPACKE_zlaswp
+    LAPACKE_zlaswp_work
+    LAPACKE_zlauum
+    LAPACKE_zlauum_work
+    LAPACKE_zpbcon
+    LAPACKE_zpbcon_work
+    LAPACKE_zpbequ
+    LAPACKE_zpbequ_work
+    LAPACKE_zpbrfs
+    LAPACKE_zpbrfs_work
+    LAPACKE_zpbstf
+    LAPACKE_zpbstf_work
+    LAPACKE_zpbsv
+    LAPACKE_zpbsv_work
+    LAPACKE_zpbsvx
+    LAPACKE_zpbsvx_work
+    LAPACKE_zpbtrf
+    LAPACKE_zpbtrf_work
+    LAPACKE_zpbtrs
+    LAPACKE_zpbtrs_work
+    LAPACKE_zpftrf
+    LAPACKE_zpftrf_work
+    LAPACKE_zpftri
+    LAPACKE_zpftri_work
+    LAPACKE_zpftrs
+    LAPACKE_zpftrs_work
+    LAPACKE_zpocon
+    LAPACKE_zpocon_work
+    LAPACKE_zpoequ
+    LAPACKE_zpoequ_work
+    LAPACKE_zpoequb
+    LAPACKE_zpoequb_work
+    LAPACKE_zporfs
+    LAPACKE_zporfs_work
+    LAPACKE_zposv
+    LAPACKE_zposv_work
+    LAPACKE_zposvx
+    LAPACKE_zposvx_work
+    LAPACKE_zpotrf
+    LAPACKE_zpotrf_work
+    LAPACKE_zpotri
+    LAPACKE_zpotri_work
+    LAPACKE_zpotrs
+    LAPACKE_zpotrs_work
+    LAPACKE_zppcon
+    LAPACKE_zppcon_work
+    LAPACKE_zppequ
+    LAPACKE_zppequ_work
+    LAPACKE_zpprfs
+    LAPACKE_zpprfs_work
+    LAPACKE_zppsv
+    LAPACKE_zppsv_work
+    LAPACKE_zppsvx
+    LAPACKE_zppsvx_work
+    LAPACKE_zpptrf
+    LAPACKE_zpptrf_work
+    LAPACKE_zpptri
+    LAPACKE_zpptri_work
+    LAPACKE_zpptrs
+    LAPACKE_zpptrs_work
+    LAPACKE_zpstrf
+    LAPACKE_zpstrf_work
+    LAPACKE_zptcon
+    LAPACKE_zptcon_work
+    LAPACKE_zpteqr
+    LAPACKE_zpteqr_work
+    LAPACKE_zptrfs
+    LAPACKE_zptrfs_work
+    LAPACKE_zptsv
+    LAPACKE_zptsv_work
+    LAPACKE_zptsvx
+    LAPACKE_zptsvx_work
+    LAPACKE_zpttrf
+    LAPACKE_zpttrf_work
+    LAPACKE_zpttrs
+    LAPACKE_zpttrs_work
+    LAPACKE_zspcon
+    LAPACKE_zspcon_work
+    LAPACKE_zsprfs
+    LAPACKE_zsprfs_work
+    LAPACKE_zspsv
+    LAPACKE_zspsv_work
+    LAPACKE_zspsvx
+    LAPACKE_zspsvx_work
+    LAPACKE_zsptrf
+    LAPACKE_zsptrf_work
+    LAPACKE_zsptri
+    LAPACKE_zsptri_work
+    LAPACKE_zsptrs
+    LAPACKE_zsptrs_work
+    LAPACKE_zstedc
+    LAPACKE_zstedc_work
+    LAPACKE_zstegr
+    LAPACKE_zstegr_work
+    LAPACKE_zstein
+    LAPACKE_zstein_work
+    LAPACKE_zstemr
+    LAPACKE_zstemr_work
+    LAPACKE_zsteqr
+    LAPACKE_zsteqr_work
+    LAPACKE_zsycon
+    LAPACKE_zsycon_work
+    LAPACKE_zsyconv
+    LAPACKE_zsyconv_work
+    LAPACKE_zsyequb
+    LAPACKE_zsyequb_work
+    LAPACKE_zsyrfs
+    LAPACKE_zsyrfs_work
+    LAPACKE_zsysv
+    LAPACKE_zsysv_rook
+    LAPACKE_zsysv_rook_work
+    LAPACKE_zsysv_work
+    LAPACKE_zsysvx
+    LAPACKE_zsysvx_work
+    LAPACKE_zsyswapr
+    LAPACKE_zsyswapr_work
+    LAPACKE_zsytrf
+    LAPACKE_zsytrf_work
+    LAPACKE_zsytri
+    LAPACKE_zsytri2
+    LAPACKE_zsytri2_work
+    LAPACKE_zsytri2x
+    LAPACKE_zsytri2x_work
+    LAPACKE_zsytri_work
+    LAPACKE_zsytrs
+    LAPACKE_zsytrs2
+    LAPACKE_zsytrs2_work
+    LAPACKE_zsytrs_work
+    LAPACKE_ztbcon
+    LAPACKE_ztbcon_work
+    LAPACKE_ztbrfs
+    LAPACKE_ztbrfs_work
+    LAPACKE_ztbtrs
+    LAPACKE_ztbtrs_work
+    LAPACKE_ztfsm
+    LAPACKE_ztfsm_work
+    LAPACKE_ztftri
+    LAPACKE_ztftri_work
+    LAPACKE_ztfttp
+    LAPACKE_ztfttp_work
+    LAPACKE_ztfttr
+    LAPACKE_ztfttr_work
+    LAPACKE_ztgevc
+    LAPACKE_ztgevc_work
+    LAPACKE_ztgexc
+    LAPACKE_ztgexc_work
+    LAPACKE_ztgsen
+    LAPACKE_ztgsen_work
+    LAPACKE_ztgsja
+    LAPACKE_ztgsja_work
+    LAPACKE_ztgsna
+    LAPACKE_ztgsna_work
+    LAPACKE_ztgsyl
+    LAPACKE_ztgsyl_work
+    LAPACKE_ztpcon
+    LAPACKE_ztpcon_work
+    LAPACKE_ztpmqrt
+    LAPACKE_ztpmqrt_work
+    LAPACKE_ztpqrt
+    LAPACKE_ztpqrt2
+    LAPACKE_ztpqrt2_work
+    LAPACKE_ztpqrt_work
+    LAPACKE_ztprfb
+    LAPACKE_ztprfb_work
+    LAPACKE_ztprfs
+    LAPACKE_ztprfs_work
+    LAPACKE_ztptri
+    LAPACKE_ztptri_work
+    LAPACKE_ztptrs
+    LAPACKE_ztptrs_work
+    LAPACKE_ztpttf
+    LAPACKE_ztpttf_work
+    LAPACKE_ztpttr
+    LAPACKE_ztpttr_work
+    LAPACKE_ztrcon
+    LAPACKE_ztrcon_work
+    LAPACKE_ztrevc
+    LAPACKE_ztrevc_work
+    LAPACKE_ztrexc
+    LAPACKE_ztrexc_work
+    LAPACKE_ztrrfs
+    LAPACKE_ztrrfs_work
+    LAPACKE_ztrsen
+    LAPACKE_ztrsen_work
+    LAPACKE_ztrsna
+    LAPACKE_ztrsna_work
+    LAPACKE_ztrsyl
+    LAPACKE_ztrsyl_work
+    LAPACKE_ztrtri
+    LAPACKE_ztrtri_work
+    LAPACKE_ztrtrs
+    LAPACKE_ztrtrs_work
+    LAPACKE_ztrttf
+    LAPACKE_ztrttf_work
+    LAPACKE_ztrttp
+    LAPACKE_ztrttp_work
+    LAPACKE_ztzrzf
+    LAPACKE_ztzrzf_work
+    LAPACKE_zunbdb
+    LAPACKE_zunbdb_work
+    LAPACKE_zuncsd
+    LAPACKE_zuncsd_work
+    LAPACKE_zungbr
+    LAPACKE_zungbr_work
+    LAPACKE_zunghr
+    LAPACKE_zunghr_work
+    LAPACKE_zunglq
+    LAPACKE_zunglq_work
+    LAPACKE_zungql
+    LAPACKE_zungql_work
+    LAPACKE_zungqr
+    LAPACKE_zungqr_work
+    LAPACKE_zungrq
+    LAPACKE_zungrq_work
+    LAPACKE_zungtr
+    LAPACKE_zungtr_work
+    LAPACKE_zunmbr
+    LAPACKE_zunmbr_work
+    LAPACKE_zunmhr
+    LAPACKE_zunmhr_work
+    LAPACKE_zunmlq
+    LAPACKE_zunmlq_work
+    LAPACKE_zunmql
+    LAPACKE_zunmql_work
+    LAPACKE_zunmqr
+    LAPACKE_zunmqr_work
+    LAPACKE_zunmrq
+    LAPACKE_zunmrq_work
+    LAPACKE_zunmrz
+    LAPACKE_zunmrz_work
+    LAPACKE_zunmtr
+    LAPACKE_zunmtr_work
+    LAPACKE_zupgtr
+    LAPACKE_zupgtr_work
+    LAPACKE_zupmtr
+    LAPACKE_zupmtr_work
+    LAPACKE_zsyr
+    LAPACKE_zsyr_work
+    LAPACKE_zlatms
+    LAPACKE_zlatms_work
+    LAPACKE_zlagge
+    LAPACKE_zlagge_work
+    LAPACKE_zlaghe
+    LAPACKE_zlaghe_work
+    LAPACKE_zlagsy
+    LAPACKE_zlagsy_work
+    LAPACKE_zgejsv
+    LAPACKE_zgejsv_work
+    LAPACKE_zgesvdx
+    LAPACKE_zgesvdx_work
+    LAPACKE_zgesvj
+    LAPACKE_zgesvj_work
+    LAPACKE_zgetrf2
+    LAPACKE_zgetrf2_work
+    LAPACKE_zgges3
+    LAPACKE_zgges3_work
+    LAPACKE_zggev3
+    LAPACKE_zggev3_work
+    LAPACKE_zgghd3
+    LAPACKE_zgghd3_work
+    LAPACKE_zggsvd3
+    LAPACKE_zggsvd3_work
+    LAPACKE_zggsvp3
+    LAPACKE_zggsvp3_work
+    LAPACKE_zhetrf_rook
+    LAPACKE_zhetrf_rook_work
+    LAPACKE_zhetrs_rook
+    LAPACKE_zhetrs_rook_work
+    LAPACKE_zlapmt
+    LAPACKE_zlapmt_work
+    LAPACKE_zlascl
+    LAPACKE_zlascl_work
+    LAPACKE_zpotrf2
+    LAPACKE_zpotrf2_work
+    LAPACKE_zsytrf_rook
+    LAPACKE_zsytrf_rook_work
+    LAPACKE_zsytrs_rook
+    LAPACKE_zsytrs_rook_work
+    LAPACKE_zuncsd2by1
+    LAPACKE_zuncsd2by1_work
+    LAPACKE_zgelq
+    LAPACKE_zgelq_work
+    LAPACKE_zgemlq
+    LAPACKE_zgemlq_work
+    LAPACKE_zgemqr
+    LAPACKE_zgemqr_work
+    LAPACKE_zgeqr
+    LAPACKE_zgeqr_work
+    LAPACKE_zgetsls
+    LAPACKE_zgetsls_work
+    LAPACKE_zhbev_2stage
+    LAPACKE_zhbev_2stage_work
+    LAPACKE_zhbevd_2stage
+    LAPACKE_zhbevd_2stage_work
+    LAPACKE_zhbevx_2stage
+    LAPACKE_zhbevx_2stage_work
+    LAPACKE_zhecon_3
+    LAPACKE_zhecon_3_work
+    LAPACKE_zheev_2stage
+    LAPACKE_zheev_2stage_work
+    LAPACKE_zheevd_2stage
+    LAPACKE_zheevd_2stage_work
+    LAPACKE_zheevr_2stage
+    LAPACKE_zheevr_2stage_work
+    LAPACKE_zheevx_2stage
+    LAPACKE_zheevx_2stage_work
+    LAPACKE_zhegv_2stage
+    LAPACKE_zhegv_2stage_work
+    LAPACKE_zhesv_aa
+    LAPACKE_zhesv_aa_work
+    LAPACKE_zhesv_rk
+    LAPACKE_zhesv_rk_work
+    LAPACKE_zhetrf_aa
+    LAPACKE_zhetrf_aa_work
+    LAPACKE_zhetrf_rk
+    LAPACKE_zhetrf_rk_work
+    LAPACKE_zhetri_3
+    LAPACKE_zhetri_3_work
+    LAPACKE_zhetrs_aa
+    LAPACKE_zhetrs_aa_work
+    LAPACKE_zhetrs_3
+    LAPACKE_zhetrs_3_work
+    LAPACKE_zsycon_3
+    LAPACKE_zsycon_3_work
+    LAPACKE_zsysv_aa
+    LAPACKE_zsysv_aa_work
+    LAPACKE_zsysv_rk
+    LAPACKE_zsysv_rk_work
+    LAPACKE_zsytrf_aa
+    LAPACKE_zsytrf_aa_work
+    LAPACKE_zsytrf_rk
+    LAPACKE_zsytrf_rk_work
+    LAPACKE_zsytri_3
+    LAPACKE_zsytri_3_work
+    LAPACKE_zsytrs_aa
+    LAPACKE_zsytrs_aa_work
+    LAPACKE_zsytrs_3
+    LAPACKE_zsytrs_3_work
+    LAPACKE_zhesv_aa_2stage
+    LAPACKE_zhesv_aa_2stage_work
+    LAPACKE_zhetrf_aa_2stage
+    LAPACKE_zhetrf_aa_2stage_work
+    LAPACKE_zhetrs_aa_2stage
+    LAPACKE_zhetrs_aa_2stage_work
+    LAPACKE_zlacrm
+    LAPACKE_zlacrm_work
+    LAPACKE_zlarcm
+    LAPACKE_zlarcm_work
+    LAPACKE_zlassq
+    LAPACKE_zlassq_work
+    LAPACKE_zsysv_aa_2stage
+    LAPACKE_zsysv_aa_2stage_work
+    LAPACKE_zsytrf_aa_2stage
+    LAPACKE_zsytrf_aa_2stage_work
+    LAPACKE_zsytrs_aa_2stage
+    LAPACKE_zsytrs_aa_2stage_work
+    LAPACKE_zgesvdq
     LAPACKE_zgesvdq_work
-);
+"
+## @(SRCX_OBJ) from `lapack-3.4.1/lapacke/src/Makefile`
+## Not exported: requires LAPACKE_EXTENDED to be set and depends on the
+##               corresponding LAPACK extended precision routines.
+#LAPACKE_cgbrfsx,
+#LAPACKE_cporfsx,
+#LAPACKE_dgerfsx,
+#LAPACKE_sgbrfsx,
+#LAPACKE_ssyrfsx,
+#LAPACKE_zherfsx,
+#LAPACKE_cgbrfsx_work,
+#LAPACKE_cporfsx_work,
+#LAPACKE_dgerfsx_work,
+#LAPACKE_sgbrfsx_work,
+#LAPACKE_ssyrfsx_work,
+#LAPACKE_zherfsx_work,
+#LAPACKE_cgerfsx,
+#LAPACKE_csyrfsx,
+#LAPACKE_dporfsx,
+#LAPACKE_sgerfsx,
+#LAPACKE_zgbrfsx,
+#LAPACKE_zporfsx,
+#LAPACKE_cgerfsx_work,
+#LAPACKE_csyrfsx_work,
+#LAPACKE_dporfsx_work,
+#LAPACKE_sgerfsx_work,
+#LAPACKE_zgbrfsx_work,
+#LAPACKE_zporfsx_work,
+#LAPACKE_cherfsx,
+#LAPACKE_dgbrfsx,
+#LAPACKE_dsyrfsx,
+#LAPACKE_sporfsx,
+#LAPACKE_zgerfsx,
+#LAPACKE_zsyrfsx,
+#LAPACKE_cherfsx_work,
+#LAPACKE_dgbrfsx_work,
+#LAPACKE_dsyrfsx_work,
+#LAPACKE_sporfsx_work,
+#LAPACKE_zgerfsx_work,
+#LAPACKE_zsyrfsx_work,
+#LAPACKE_cgbsvxx,
+#LAPACKE_cposvxx,
+#LAPACKE_dgesvxx,
+#LAPACKE_sgbsvxx,
+#LAPACKE_ssysvxx,
+#LAPACKE_zhesvxx,
+#LAPACKE_cgbsvxx_work,
+#LAPACKE_cposvxx_work,
+#LAPACKE_dgesvxx_work,
+#LAPACKE_sgbsvxx_work,
+#LAPACKE_ssysvxx_work,
+#LAPACKE_zhesvxx_work,
+#LAPACKE_cgesvxx,
+#LAPACKE_csysvxx,
+#LAPACKE_dposvxx,
+#LAPACKE_sgesvxx,
+#LAPACKE_zgbsvxx,
+#LAPACKE_zposvxx,
+#LAPACKE_cgesvxx_work,
+#LAPACKE_csysvxx_work,
+#LAPACKE_dposvxx_work,
+#LAPACKE_sgesvxx_work,
+#LAPACKE_zgbsvxx_work,
+#LAPACKE_zposvxx_work,
+#LAPACKE_chesvxx,
+#LAPACKE_dgbsvxx,
+#LAPACKE_dsysvxx,
+#LAPACKE_sposvxx,
+#LAPACKE_zgesvxx,
+#LAPACKE_zsysvxx,
+#LAPACKE_chesvxx_work,
+#LAPACKE_dgbsvxx_work,
+#LAPACKE_dsysvxx_work,
+#LAPACKE_sposvxx_work,
+#LAPACKE_zgesvxx_work,
+#LAPACKE_zsysvxx_work,
+
+## @(MATGEN_OBJ) from `lapack-3.4.1/lapacke/src/Makefile`
+## Not exported: requires LAPACKE_TESTING to be set and depends on libtmg
+##               (see `lapack-3.4.1/TESTING/MATGEN`).
 
 #These function may need 2 underscores.
-@lapack_embeded_underscore_objs=(
-    xerbla_array, chla_transtype,
-    );
-@lapack_embeded_underscore_objs_s=(    
-     slasyf_rook,
-    ssytf2_rook, ssytrf_rook, ssytrs_rook,
-    ssytri_rook, ssycon_rook, ssysv_rook,
-    slasyf_rk, ssyconvf_rook, ssytf2_rk,
-    ssytrf_rk, ssytrs_3, ssytri_3,
-    ssytri_3x, ssycon_3, ssysv_rk,
-    slasyf_aa, ssysv_aa, ssytrf_aa,
-    ssytrs_aa, ssytrd_2stage, ssytrd_sy2sb,
-    ssytrd_sb2st, ssb2st_kernels, ssyevd_2stage,
-    ssyev_2stage, ssyevx_2stage, ssyevr_2stage,
-    ssbev_2stage, ssbevx_2stage, ssbevd_2stage,
-    ssygv_2stage, 
-    ssysv_aa_2stage, ssytrf_aa_2stage,
-    ssytrs_aa_2stage, 
-    slaorhr_col_getrfnp, slaorhr_col_getrfnp2, sorhr_col,
-);
-@lapack_embeded_underscore_objs_c=(    
-    chetf2_rook, chetrf_rook, chetri_rook,
-    chetrs_rook, checon_rook, chesv_rook,
-    clahef_rook, clasyf_rook,
-    csytf2_rook, csytrf_rook, csytrs_rook,
-    csytri_rook, csycon_rook, csysv_rook,
-    chetf2_rk,
-    chetrf_rk, chetri_3, chetri_3x,
-    chetrs_3, checon_3, chesv_rk,
-    chesv_aa, chetrf_aa, chetrs_aa,
-    clahef_aa, clahef_rk, clasyf_rk,
-    clasyf_aa, csytf2_rk, csytrf_rk,
-    csytrf_aa, csytrs_3, csytrs_aa,
-    csytri_3, csytri_3x, csycon_3,
-    csysv_rk, csysv_aa, csyconvf_rook,
-    chetrd_2stage, chetrd_he2hb, chetrd_hb2st,
-    chb2st_kernels, cheevd_2stage, cheev_2stage,
-    cheevx_2stage, cheevr_2stage, chbev_2stage,
-    chbevx_2stage, chbevd_2stage, chegv_2stage,
-    chesv_aa_2stage,
-    chetrf_aa_2stage, chetrs_aa_2stage,
-    csysv_aa_2stage, csytrf_aa_2stage,
-    csytrs_aa_2stage,
-    claunhr_col_getrfnp, claunhr_col_getrfnp2, cunhr_col,
-);
-@lapack_embeded_underscore_objs_d=(    
-    dlasyf_rook,
-    dsytf2_rook, dsytrf_rook, dsytrs_rook,
-    dsytri_rook, dsycon_rook, dsysv_rook,
-    dlasyf_rk, dsyconvf_rook,
-    dsytf2_rk, dsytrf_rk, dsytrs_3,
-    dsytri_3, dsytri_3x, dsycon_3,
-    dsysv_rk, dlasyf_aa, dsysv_aa,
-    dsytrf_aa, dsytrs_aa, dsytrd_2stage,
-    dsytrd_sy2sb, dsytrd_sb2st, dsb2st_kernels,
-    dsyevd_2stage, dsyev_2stage, dsyevx_2stage,
-    dsyevr_2stage, dsbev_2stage, dsbevx_2stage,
-    dsbevd_2stage, dsygv_2stage, 
-     dsysv_aa_2stage,
-    dsytrf_aa_2stage, dsytrs_aa_2stage,
-    dlaorhr_col_getrfnp, dlaorhr_col_getrfnp2, dorhr_col,
-);
-@lapack_embeded_underscore_objs_z=(    
-    zhetf2_rook, zhetrf_rook, zhetri_rook,
-    zhetrs_rook, zhecon_rook, zhesv_rook,
-    zlahef_rook, zlasyf_rook,
-    zsytf2_rook, zsytrf_rook, zsytrs_rook,
-    zsytri_rook, zsycon_rook, zsysv_rook,
-    zhetf2_rk, zhetrf_rk, zhetri_3,
-    zhetri_3x, zhetrs_3, zhecon_3,
-    zhesv_rk, zhesv_aa, zhetrf_aa,
-    zhetrs_aa, zlahef_aa, zlahef_rk,
-    zlasyf_rk, zlasyf_aa, zsyconvf_rook,
-    zsytrs_aa, zsytf2_rk, zsytrf_rk,
-    zsytrf_aa, zsytrs_3, zsytri_3,
-    zsytri_3x, zsycon_3, zsysv_rk,
-    zsysv_aa, zhetrd_2stage, zhetrd_he2hb,
-    zhetrd_hb2st, zhb2st_kernels, zheevd_2stage,
-    zheev_2stage, zheevx_2stage, zheevr_2stage,
-    zhbev_2stage, zhbevx_2stage, zhbevd_2stage,
-    zhegv_2stage,
-    zhesv_aa_2stage, zhetrf_aa_2stage,
-    zhetrs_aa_2stage, zsysv_aa_2stage,
-    zsytrf_aa_2stage, zsytrs_aa_2stage,
-    zlaunhr_col_getrfnp, zlaunhr_col_getrfnp2, zunhr_col
-);
-
-
-use File::Spec;
-use File::Basename;
-my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib");
-
-if ($ARGV[12] == 1) {
-       @blasobjs = (@blasobjs, @bfblasobjs);
-       @cblasobjs = (@cblasobjs, @bfcblasobjs);
-}
-if ($ARGV[13] == 1) {
-       @blasobjs = (@blasobjs, @blasobjss);
-       @cblasobjs = (@cblasobjs, @cblasobjss);
-       @lapackobjs = (@lapackobjs, @lapackobjss);
-       @lapackobjs2 = (@lapackobjs2, @lapackobjs2s);
-       @lapackobjs2 = (@lapackobjs2, @lapackobjs2sc);
-       @lapackobjs2 = (@lapackobjs2, @lapackobjs2ds);
-       @lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objss);
-       @lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objss);
-       @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_s); 
-       @lapackeobjs = (@lapackeobjs, @lapackeobjss);
-}
-if ($ARGV[14] == 1) {
-       @blasobjs = (@blasobjs, @blasobjsd);
-       @cblasobjs = (@cblasobjs, @cblasobjsd);
-       @lapackobjs = (@lapackobjs, @lapackobjsd);
-       if ($ARGV[13] == 0) { 
-               @lapackobjs2 = (@lapackobjs2, @lapackobjs2ds);
-       }
-       @lapackobjs2 = (@lapackobjs2, @lapackobjs2d, @lapackobjs2dz);
-       @lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsd);
-       @lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objsd);
-       @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_d);
-       @lapackeobjs = (@lapackeobjs, @lapackeobjsd);
-}
-if ($ARGV[15] == 1) {
-       @blasobjs = (@blasobjs, @blasobjsc);
-       @cblasobjs = (@cblasobjs, @cblasobjsc);
-       @gemm3mobjs = (@gemm3mobjs, @gemm3mobjsc);
-       @cblasgemm3mobjs = (@cblasgemm3mobjs, @cblasgemm3mobjsc);
-       @lapackobjs = (@lapackobjs, @lapackobjsc);
-       @lapackobjs2 = (@lapackobjs2, @lapackobjs2c, @lapackobjs2zc);
-       if ($ARGV[13] == 0) { 
-               @lapackobjs2 = (@lapackobjs2, @lapackobjs2sc);
-       }
-       @lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsc);
-       @lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objsc);
-       @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_c);
-       @lapackeobjs = (@lapackeobjs, @lapackeobjsc);
-}
-if ($ARGV[16] == 1) {
-       @blasobjs = (@blasobjs, @blasobjsz);
-       @cblasobjs = (@cblasobjs, @cblasobjsz);
-       @gemm3mobjs = (@gemm3mobjs, @gemm3mobjsz);
-       @cblasgemm3mobjs = (@cblasgemm3mobjs, @cblasgemm3mobjsz);
-       @lapackobjs = (@lapackobjs, @lapackobjsz);
-       @lapackobjs2 = (@lapackobjs2, @lapackobjs2z);
-       if ($ARGV[15] == 0) { 
-               @lapackobjs2 = (@lapackobjs2, @lapackobjs2zc);
-       }
-       if ($ARGV[14] == 0) { 
-               @lapackobjs2 = (@lapackobjs2, @lapackobjs2dz);
-       }
-       @lapack_deprecated_objs = (@lapack_deprecated_objs, @lapack_deprecated_objsz);
-       @lapacke_deprecated_objs = (@lapacke_deprecated_objs, @lapacke_deprecated_objsz);
-       @lapack_embeded_underscore_objs = (@lapack_embeded_underscore_objs,  @lapack_embeded_underscore_objs_z);
-       @lapackeobjs = (@lapackeobjs, @lapackeobjsz);
-}
-if ($ARGV[8] == 1) {
+lapack_embeded_underscore_objs="
+    xerbla_array chla_transtype
+    "
+lapack_embeded_underscore_objs_s="
+     slasyf_rook
+    ssytf2_rook ssytrf_rook ssytrs_rook
+    ssytri_rook ssycon_rook ssysv_rook
+    slasyf_rk ssyconvf_rook ssytf2_rk
+    ssytrf_rk ssytrs_3 ssytri_3
+    ssytri_3x ssycon_3 ssysv_rk
+    slasyf_aa ssysv_aa ssytrf_aa
+    ssytrs_aa ssytrd_2stage ssytrd_sy2sb
+    ssytrd_sb2st ssb2st_kernels ssyevd_2stage
+    ssyev_2stage ssyevx_2stage ssyevr_2stage
+    ssbev_2stage ssbevx_2stage ssbevd_2stage
+    ssygv_2stage
+    ssysv_aa_2stage ssytrf_aa_2stage
+    ssytrs_aa_2stage
+    slaorhr_col_getrfnp slaorhr_col_getrfnp2 sorhr_col
+"
+lapack_embeded_underscore_objs_c="
+    chetf2_rook chetrf_rook chetri_rook
+    chetrs_rook checon_rook chesv_rook
+    clahef_rook clasyf_rook
+    csytf2_rook csytrf_rook csytrs_rook
+    csytri_rook csycon_rook csysv_rook
+    chetf2_rk
+    chetrf_rk chetri_3 chetri_3x
+    chetrs_3 checon_3 chesv_rk
+    chesv_aa chetrf_aa chetrs_aa
+    clahef_aa clahef_rk clasyf_rk
+    clasyf_aa csytf2_rk csytrf_rk
+    csytrf_aa csytrs_3 csytrs_aa
+    csytri_3 csytri_3x csycon_3
+    csysv_rk csysv_aa csyconvf_rook
+    chetrd_2stage chetrd_he2hb chetrd_hb2st
+    chb2st_kernels cheevd_2stage cheev_2stage
+    cheevx_2stage cheevr_2stage chbev_2stage
+    chbevx_2stage chbevd_2stage chegv_2stage
+    chesv_aa_2stage
+    chetrf_aa_2stage chetrs_aa_2stage
+    csysv_aa_2stage csytrf_aa_2stage
+    csytrs_aa_2stage
+    claunhr_col_getrfnp claunhr_col_getrfnp2 cunhr_col
+"
+lapack_embeded_underscore_objs_d="
+    dlasyf_rook
+    dsytf2_rook dsytrf_rook dsytrs_rook
+    dsytri_rook dsycon_rook dsysv_rook
+    dlasyf_rk dsyconvf_rook
+    dsytf2_rk dsytrf_rk dsytrs_3
+    dsytri_3 dsytri_3x dsycon_3
+    dsysv_rk dlasyf_aa dsysv_aa
+    dsytrf_aa dsytrs_aa dsytrd_2stage
+    dsytrd_sy2sb dsytrd_sb2st dsb2st_kernels
+    dsyevd_2stage dsyev_2stage dsyevx_2stage
+    dsyevr_2stage dsbev_2stage dsbevx_2stage
+    dsbevd_2stage dsygv_2stage
+     dsysv_aa_2stage
+    dsytrf_aa_2stage dsytrs_aa_2stage
+    dlaorhr_col_getrfnp dlaorhr_col_getrfnp2 dorhr_col
+"
+lapack_embeded_underscore_objs_z="
+    zhetf2_rook zhetrf_rook zhetri_rook
+    zhetrs_rook zhecon_rook zhesv_rook
+    zlahef_rook zlasyf_rook
+    zsytf2_rook zsytrf_rook zsytrs_rook
+    zsytri_rook zsycon_rook zsysv_rook
+    zhetf2_rk zhetrf_rk zhetri_3
+    zhetri_3x zhetrs_3 zhecon_3
+    zhesv_rk zhesv_aa zhetrf_aa
+    zhetrs_aa zlahef_aa zlahef_rk
+    zlasyf_rk zlasyf_aa zsyconvf_rook
+    zsytrs_aa zsytf2_rk zsytrf_rk
+    zsytrf_aa zsytrs_3 zsytri_3
+    zsytri_3x zsycon_3 zsysv_rk
+    zsysv_aa zhetrd_2stage zhetrd_he2hb
+    zhetrd_hb2st zhb2st_kernels zheevd_2stage
+    zheev_2stage zheevx_2stage zheevr_2stage
+    zhbev_2stage zhbevx_2stage zhbevd_2stage
+    zhegv_2stage
+    zhesv_aa_2stage zhetrf_aa_2stage
+    zhetrs_aa_2stage zsysv_aa_2stage
+    zsytrf_aa_2stage zsytrs_aa_2stage
+    zlaunhr_col_getrfnp zlaunhr_col_getrfnp2 zunhr_col
+"
+
+dirname=`pwd`/lapack-netlib
+
+p1=$1
+p2=$2
+p3=$3
+p4=$4
+p5=$5
+p6=$6
+p7=$7
+p8=$8
+p9=$9
+shift
+p10=$9
+shift
+p11=$9
+shift
+p12=$9
+shift
+p13=$9
+shift
+p14=$9
+shift
+p15=$9
+shift
+p16=$9
+shift
+p17=$9
+
+if [ $p13 -eq 1 ]; then
+       blasobjs="$blasobjs $bfblasobjs"
+       cblasobjs="$cblasobjs $bfcblasobjs"
+fi
+
+if [ $p14 -eq 1 ]; then
+       blasobjs="$blasobjs $blasobjss"
+       cblasobjs="$cblasobjs $cblasobjss"
+       lapackobjs="$lapackobjs $lapackobjss"
+       lapackobjs2="$lapackobjs2 $lapackobjs2s"
+       lapackobjs2="$lapackobjs2 $lapackobjs2sc"
+       lapackobjs2="$lapackobjs2 $lapackobjs2ds"
+       lapack_deprecated_objs="$lapack_deprecated_objs $lapack_deprecated_objss"
+       lapacke_deprecated_objs="$lapacke_deprecated_objs $lapacke_deprecated_objss"
+       lapack_embeded_underscore_objs="$lapack_embeded_underscore_objs  $lapack_embeded_underscore_objs_s"
+       lapackeobjs="$lapackeobjs $lapackeobjss"
+fi
+
+if [ $p15 -eq 1 ]; then
+       blasobjs="$blasobjs $blasobjsd"
+       cblasobjs="$cblasobjs $cblasobjsd"
+       lapackobjs="$lapackobjs $lapackobjsd"
+    if [ $p14 -eq 0 ]; then
+               lapackobjs2="$lapackobjs2 $lapackobjs2ds"
+       fi
+       lapackobjs2="$lapackobjs2 $lapackobjs2d $lapackobjs2dz"
+       lapack_deprecated_objs="$lapack_deprecated_objs $lapack_deprecated_objsd"
+       lapacke_deprecated_objs="$lapacke_deprecated_objs $lapacke_deprecated_objsd"
+       lapack_embeded_underscore_objs="$lapack_embeded_underscore_objs  $lapack_embeded_underscore_objs_d"
+       lapackeobjs="$lapackeobjs $lapackeobjsd"
+fi
+
+if [ $p16 -eq 1 ]; then
+       blasobjs="$blasobjs $blasobjsc"
+       cblasobjs="$cblasobjs $cblasobjsc"
+       gemm3mobjs="$gemm3mobjs $gemm3mobjsc"
+       cblasgemm3mobjs="$cblasgemm3mobjs $cblasgemm3mobjsc"
+       lapackobjs="$lapackobjs $lapackobjsc"
+       lapackobjs2="$lapackobjs2 $lapackobjs2c $lapackobjs2zc"
+    if [ $p14 -eq 0 ]; then
+               lapackobjs2="$lapackobjs2 $lapackobjs2sc"
+       fi
+       lapack_deprecated_objs="$lapack_deprecated_objs $lapack_deprecated_objsc"
+       lapacke_deprecated_objs="$lapacke_deprecated_objs $lapacke_deprecated_objsc"
+       lapack_embeded_underscore_objs="$lapack_embeded_underscore_objs  $lapack_embeded_underscore_objs_c"
+       lapackeobjs="$lapackeobjs $lapackeobjsc"
+fi
+
+if [ $p17 -eq 1 ]; then
+       blasobjs="$blasobjs $blasobjsz"
+       cblasobjs="$cblasobjs $cblasobjsz"
+       gemm3mobjs="$gemm3mobjs $gemm3mobjsz"
+       cblasgemm3mobjs="$cblasgemm3mobjs $cblasgemm3mobjsz"
+       lapackobjs="$lapackobjs $lapackobjsz"
+       lapackobjs2="$lapackobjs2 $lapackobjs2z"
+       if [ $p16 -eq 0 ]; then
+               lapackobjs2="$lapackobjs2 $lapackobjs2zc"
+       fi
+       if [ $p15 -eq 0 ]; then
+               lapackobjs2="$lapackobjs2 $lapackobjs2dz"
+       fi
+       lapack_deprecated_objs="$lapack_deprecated_objs $lapack_deprecated_objsz"
+       lapacke_deprecated_objs="$lapacke_deprecated_objs $lapacke_deprecated_objsz"
+       lapack_embeded_underscore_objs="$lapack_embeded_underscore_objs  $lapack_embeded_underscore_objs_z"
+       lapackeobjs="$lapackeobjs $lapackeobjsz"
+fi
+
+if [ $p9 -eq 1 ]; then
     #ONLY_CBLAS=1
-    @underscore_objs = (@misc_underscore_objs);
-} elsif ($ARGV[5] == 1) {
+    underscore_objs="$misc_underscore_objs"
+elif [ $p6 -eq 1 ]; then
     #NO_LAPACK=1
-    @underscore_objs = (@blasobjs, @misc_underscore_objs);
-} elsif (-d $dirname) {
-    if ($ARGV[7] == 0) {
+    underscore_objs="$blasobjs $misc_underscore_objs"
+elif [ -d "$dirname" ]; then
+    if [ $p8 -eq 0 ]; then
         # NEED2UNDERSCORES=0
         # Don't need 2 underscores
-        @underscore_objs = (@blasobjs, @lapackobjs, @lapackobjs2, @misc_underscore_objs, @lapack_embeded_underscore_objs);
-    } else {
+        underscore_objs="$blasobjs $lapackobjs $lapackobjs2 $misc_underscore_objs $lapack_embeded_underscore_objs"
+    else
         # Need 2 underscores
-        @underscore_objs = (@blasobjs, @lapackobjs, @lapackobjs2, @misc_underscore_objs);
-        @need_2underscore_objs = (@lapack_embeded_underscore_objs);
-    };
-
-    if ($ARGV[11] == 1) {
-        #BUILD_LAPACK_DEPRECATED=1
-        @underscore_objs = (@underscore_objs, @lapack_deprecated_objs);
-    }
-} else {
-    @underscore_objs = (@blasobjs, @lapackobjs, @misc_underscore_objs);
-}
+        underscore_objs="$blasobjs $lapackobjs $lapackobjs2 $misc_underscore_objs"
+        need_2underscore_objs="$lapack_embeded_underscore_objs"
+    fi
 
-if ($ARGV[8] == 1) {
-    #ONLY_CBLAS=1
-    @gemm3mobjs=();
-    @exblasobjs=();
-}
-
-if ($ARGV[3] == 1) {
-    @underscore_objs = (@underscore_objs, @exblasobjs);
-};
-
-if ($ARGV[1] eq "x86_64") { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
-if ($ARGV[1] eq "x86")    { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
-if ($ARGV[1] eq "ia64")   { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
-if ($ARGV[1] eq "MIPS")   { @underscore_objs = (@underscore_objs, @gemm3mobjs); };
-
-if ($ARGV[4] == 0) {
-    @no_underscore_objs = (@cblasobjs, @misc_no_underscore_objs);
-    if ($ARGV[1] eq "x86_64") { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
-    if ($ARGV[1] eq "x86")    { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
-    if ($ARGV[1] eq "ia64")   { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
-    if ($ARGV[1] eq "MIPS")   { @no_underscore_objs = (@no_underscore_objs, @cblasgemm3mobjs); };
-}else{
-    #NO_CBLAS=1
-    @no_underscore_objs = (@misc_no_underscore_objs);
-}
-if ($ARGV[6] == 1) {
-    #NO_LAPACKE=1
-    @no_underscore_objs = (@no_underscore_objs);
-} else {
-    if ($ARGV[11] == 1) {
+    if [ $p12 -eq 1 ]; then
         #BUILD_LAPACK_DEPRECATED=1
-        @no_underscore_objs = (@no_underscore_objs, @lapackeobjs, @lapacke_deprecated_objs);
-    } else {
-        @no_underscore_objs = (@no_underscore_objs, @lapackeobjs);
-    }
-}
-
-@hplobjs  = (daxpy, dcopy, dscal, idamax, dgemv, dtrsv, dger, dgemm, dtrsm);
-@hplobjs2 = (HPL_dlaswp00N, HPL_dlaswp01N, HPL_dlaswp01T);
-
-$bu = $ARGV[2];
-
-$bu = "" if (($bu eq "0") || ($bu eq "1"));
-
-$symbolprefix = $ARGV[9];
-
-$symbolsuffix = $ARGV[10];
-
-if ($ARGV[0] eq "osx") {
-    @underscore_objs = (@underscore_objs, @misc_common_objs);
-    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);
-
-    foreach $objs (@underscore_objs) {
-        print "_", $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        print "_", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@no_underscore_objs) {
-        print "_", $symbolprefix, $objs, $symbolsuffix, "\n";
-    }
-    exit(0);
-}
-
-if ($ARGV[0] eq "aix"){
-    @underscore_objs = (@underscore_objs, @misc_common_objs);
-    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);
-
-    foreach $objs (@underscore_objs) {
-        print $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        print $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@no_underscore_objs) {
-        print $symbolprefix, $objs, $symbolsuffix, "\n";
-    }
-    exit(0);
-}
-
-if ($ARGV[0] eq "objcopy") {
-    @underscore_objs = (@underscore_objs, @misc_common_objs);
-    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);
-
-    foreach $objs (@underscore_objs) {
-        print $objs, $bu, " ", $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        print $objs, $bu, $bu, " ", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@no_underscore_objs) {
-        print $objs, " ", $symbolprefix, $objs, $symbolsuffix, "\n";
-    }
-    exit(0);
-}
-
-if ($ARGV[0] eq "objconv") {
-    @underscore_objs = (@underscore_objs, @misc_common_objs);
-    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);
-
-    foreach $objs (@underscore_objs) {
-        print "-nr:_", $objs, $bu, ":_", $symbolprefix, $objs, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        print "-nr:_", $objs, $bu, $bu, ":_", $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "\n";
-    }
-
-    foreach $objs (@no_underscore_objs) {
-        print "-nr:_", $objs, ":_", $symbolprefix, $objs, $symbolsuffix, "\n";
-    }
-    exit(0);
-}
-
-if ($ARGV[0] eq "win2k"){
-    print "EXPORTS\n";
-    $count = 1;
-
-    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);
-
-    foreach $objs (@underscore_objs) {
-        $uppercase = $objs;
-        $uppercase =~ tr/[a-z]/[A-Z]/;
-        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","_  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_  \@", $count, "\n";
-        $count ++;
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        $uppercase = $objs;
-        $uppercase =~ tr/[a-z]/[A-Z]/;
-        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","__  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $objs, "__", $symbolsuffix, "=$objs","__  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "__  \@", $count, "\n";
-        $count ++;
-    }
-
-    #for misc_common_objs
-    foreach $objs (@misc_common_objs) {
-        $uppercase = $objs;
-        $uppercase =~ tr/[a-z]/[A-Z]/;
-        print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_  \@", $count, "\n";
-        $count ++;
-    }
-
-
-    foreach $objs (@no_underscore_objs) {
-        print "\t",$symbolprefix,$objs,$symbolsuffix,"=$objs","  \@", $count, "\n";
-        $count ++;
-    }
-
-    exit(0);
-}
-
-if ($ARGV[0] eq "win2khpl") {
-    print "EXPORTS\n";
-    $count = 1;
-    foreach $objs (@hplobjs) {
-        $uppercase = $objs;
-        $uppercase =~ tr/[a-z]/[A-Z]/;
-        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","_  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $objs, "_", $symbolsuffix, "=$objs","_  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "_  \@", $count, "\n";
-        $count ++;
-    }
-
-    exit(0);
-}
-
-if ($ARGV[0] eq "microsoft"){
-    @underscore_objs = (@underscore_objs, @misc_common_objs);
-
-    print "EXPORTS\n";
-    $count = 1;
-    foreach $objs (@underscore_objs) {
-        $uppercase = $objs;
-        $uppercase =~ tr/[a-z]/[A-Z]/;
-        print "\t",$symbolprefix, $objs, $symbolsuffix, " = $objs","_\n";
-        $count ++;
-        print "\t",$symbolprefix, $objs, "\_", $symbolsuffix, " = $objs","_\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, $symbolsuffix, " = $objs","_\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, "\_", $symbolsuffix, " = $objs","_\n";
-        $count ++;
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        $uppercase = $objs;
-        $uppercase =~ tr/[a-z]/[A-Z]/;
-        print "\t",$symbolprefix, $objs, $symbolsuffix, "=$objs","__  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $objs, "__", $symbolsuffix, "=$objs","__  \@", $count, "\n";
-        $count ++;
-        print "\t",$symbolprefix, $uppercase, $symbolsuffix, "=$objs", "__  \@", $count, "\n";
-        $count ++;
-    }
-
-    exit(0);
-}
-
-if ($ARGV[0] eq "linktest") {
-    @underscore_objs = (@underscore_objs, @misc_common_objs);
-    @no_underscore_objs = (@no_underscore_objs, @misc_common_objs);
-
-    print "int main(void){\n";
-    foreach $objs (@underscore_objs) {
-        print $symbolprefix, $objs, $bu, $symbolsuffix, "();\n" if $objs ne "xerbla";
-    }
-
-    foreach $objs (@need_2underscore_objs) {
-        print $symbolprefix, $objs, $bu, $bu, $symbolsuffix, "();\n";
-    }
-
-    foreach $objs (@no_underscore_objs) {
-        print $symbolprefix, $objs, $symbolsuffix, "();\n";
-    }
-
-    print "return 0;}\n";
-    exit(0);
-}
+        underscore_objs="$underscore_objs $lapack_deprecated_objs"
+    fi
+else
+    underscore_objs="$blasobjs $lapackobjs $misc_underscore_objs"
+fi
+
+if [ $p9 -eq 1 ]; then
+    # ONLY_CBLAS=1
+    gemm3mobjs=''
+    exblasobjs=''
+fi
+
+if [ $p4 -eq 1 ]; then
+    underscore_objs="$underscore_objs $exblasobjs"
+fi
+
+case $p2 in
+    x86_64|x86|ia64|MIPS)
+        underscore_objs="$underscore_objs $gemm3mobjs"
+    ;;
+esac
+
+if [ $p5 -eq 0 ]; then
+    no_underscore_objs="$cblasobjs $misc_no_underscore_objs"
+    case $p2 in
+        x86_64|x86|ia64|MIPS)
+            no_underscore_objs="$no_underscore_objs $cblasgemm3mobjs"
+        ;;
+    esac
+else
+    # NO_CBLAS=1
+    no_underscore_objs="$misc_no_underscore_objs"
+fi
+
+if [ $p7 -ne 1 ]; then
+    if [ $p12 -eq 1 ]; then
+        # BUILD_LAPACK_DEPRECATED=1
+        no_underscore_objs="$no_underscore_objs $lapackeobjs $lapacke_deprecated_objs"
+    else
+        no_underscore_objs="$no_underscore_objs $lapackeobjs"
+    fi
+fi
+
+hplobjs="daxpy dcopy dscal idamax dgemv dtrsv dger dgemm dtrsm"
+#hplobjs2="HPL_dlaswp00N HPL_dlaswp01N HPL_dlaswp01T"
+
+bu="$p3"
+
+if [ "$bu" = "0" ] || [ "$bu" = "1" ]; then
+    bu=""
+fi
+
+symbolprefix=$p10
+symbolsuffix=$p11
+
+case "$p1" in
+    osx)
+        underscore_objs="$underscore_objs $misc_common_objs"
+        no_underscore_objs="$no_underscore_objs $misc_common_objs"
+
+        for obj in $underscore_objs; do
+            printf '_%s%s%s%s\n' "$symbolprefix" "$obj" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $need_2underscore_objs; do
+            printf '_%s%s%s%s%s\n' "$symbolprefix" "$obj" "$bu" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $no_underscore_objs; do
+            printf '_%s%s%s\n' "$symbolprefix" "$obj" "$symbolsuffix"
+        done
+    ;;
+
+    aix)
+        underscore_objs="$underscore_objs $misc_common_objs"
+        no_underscore_objs="$no_underscore_objs $misc_common_objs"
+
+        for obj in $underscore_objs; do
+            printf '_%s%s%s%s\n' "$symbolprefix" "$obj" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $need_2underscore_objs; do
+            printf '_%s%s%s%s%s\n' "$symbolprefix" "$obj" "$bu" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $no_underscore_objs; do
+            printf '_%s%s%s\n' "$symbolprefix" "$obj" "$symbolsuffix"
+        done
+    ;;
+
+    objcopy)
+        underscore_objs="$underscore_objs $misc_common_objs"
+        no_underscore_objs="$no_underscore_objs $misc_common_objs"
+
+        for obj in $underscore_objs; do
+            printf '%s%s %s%s%s%s\n' "$obj" "$bu" \
+                "$symbolprefix" "$obj" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $need_2underscore_objs; do
+            printf '%s%s%s %s%s%s%s%s\n' "$obj" "$bu" "$bu" \
+                "$symbolprefix" "$obj" "$bu" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $no_underscore_objs; do
+            printf '%s %s%s%s\n' "$obj" "$symbolprefix" "$obj" "$symbolsuffix"
+        done
+    ;;
+
+    objconv)
+        underscore_objs="$underscore_objs $misc_common_objs"
+        no_underscore_objs="$no_underscore_objs $misc_common_objs"
+
+        for obj in $underscore_objs; do
+            printf -- '-nr:_%s%s:_%s%s%s%s\n' "$obj" "$bu" \
+                "$symbolprefix" "$obj" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $need_2underscore_objs; do
+            printf -- '-nr:_%s%s%s:_%s%s%s%s%s\n' "$obj" "$bu" "$bu" \
+                "$symbolprefix" "$obj" "$bu" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $no_underscore_objs; do
+            printf -- '-nr:_%s:_%s%s%s\n' "$obj" \
+                "$symbolprefix" "$obj" "$symbolsuffix"
+        done
+    ;;
+
+    win2k)
+        printf 'EXPORTS\n'
+        count=1
+
+        no_underscore_objs="$no_underscore_objs $misc_common_objs"
+
+        for obj in $underscore_objs; do
+            uppercase=`echo "$obj" | tr '[[:lower:]]' '[[:upper:]]'`
+            printf '\t%s%s%s=%s_ @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s_%s=%s_ @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s%s=%s_ @%s\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+        done
+
+        for obj in $need_2underscore_objs; do
+            uppercase=`echo "$obj" | tr '[[:lower:]]' '[[:upper:]]'`
+            printf '\t%s%s%s=%s__ @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s__%s=%s__ @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s%s=%s__ @%s\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+        done
+
+        for obj in $misc_common_objs; do
+            uppercase=`echo "$obj" | tr '[[:lower:]]' '[[:upper:]]'`
+            printf '\t%s%s_%s=%s_ @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s%s=%s_ @%s\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+        done
+
+        for obj in $no_underscore_objs; do
+            printf '\t%s%s%s=%s  @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+        done
+    ;;
+
+    win2khpl)
+        printf 'EXPORTS\n'
+        count=1
+        for obj in $hplobjs; do
+            uppercase=`echo "$obj" | tr '[[:lower:]]' '[[:upper:]]'`
+            printf '\t%s%s%s=%s_  @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s_%s=%s_  @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s%s=%s_  @%s\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+        done
+    ;;
+
+    microsoft)
+        underscore_objs="$underscore_objs $misc_common_objs"
+
+        printf 'EXPORTS\n'
+        count=1
+        for obj in $underscore_objs; do
+            uppercase=`echo "$obj" | tr '[[:lower:]]' '[[:upper:]]'`
+            printf '\t%s%s%s = %s_\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj"
+            count=`expr $count + 1`
+            printf '\t%s%s_%s = %s_\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj"
+            count=`expr $count + 1`
+            printf '\t%s%s%s = %s_\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj"
+            count=`expr $count + 1`
+            printf '\t%s%s_%s = %s_\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj"
+            count=`expr $count + 1`
+        done
+
+        for obj in $need_2underscore_objs; do
+            uppercase=`echo "$obj" | tr '[[:lower:]]' '[[:upper:]]'`
+            printf '\t%s%s%s=%s__  @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s__%s=%s__  @%s\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+            printf '\t%s%s%s=%s__  @%s\n' \
+                "$symbolprefix" "$uppercase" "$symbolsuffix" "$obj" "$count"
+            count=`expr $count + 1`
+        done
+    ;;
+
+    linktest)
+
+        underscore_objs="$underscore_objs $misc_common_objs"
+        no_underscore_objs="$no_underscore_objs $misc_common_objs"
+
+        printf 'int main(void){\n'
+        for obj in $underscore_objs; do
+            [ "$obj" != "xerbla" ] && printf '%s%s%s%s();\n' \
+                "$symbolprefix" "$obj" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $need_2underscore_objs; do
+            printf '%s%s%s%s%s();\n' \
+                "$symbolprefix" "$obj" "$bu" "$bu" "$symbolsuffix"
+        done
+
+        for obj in $no_underscore_objs; do
+            printf '%s%s%s();\n' \
+                "$symbolprefix" "$obj" "$symbolsuffix"
+        done
+
+        printf 'return 0;}\n'
+    ;;
+esac
diff --git a/f_check b/f_check
old mode 100644 (file)
new mode 100755 (executable)
index 71293b5..7be51e9
--- a/f_check
+++ b/f_check
@@ -1,6 +1,16 @@
-#!/usr/bin/env perl
+#!/bin/sh
+
+split() {
+    set -f
+    old_ifs=$IFS
+    IFS=$2
+    set -- $1
+    printf '%s ' "$@"
+    IFS=$old_ifs
+    set +f
+}
 
-$hostos   = `uname -s | sed -e s/\-.*//`;    chop($hostos);
+hostos="$(uname -s | sed 's/\-.*//')"
 
 #
 # 1. Not specified
@@ -12,407 +22,386 @@ $hostos   = `uname -s | sed -e s/\-.*//`;    chop($hostos);
 #     2.2.2 Path is not correct, invalid compiler name, then gfortran is default with NOFORTRAN definition
 #
 
-$makefile = shift(@ARGV);
-$config   = shift(@ARGV);
+makefile="$1"
+config="$2"
+
+nofortran=0
 
-$nofortran = 0;
+shift 2
+compiler="$*"
+compiler_bin="$1"
 
-$compiler = join(" ", @ARGV);
-$compiler_bin = shift(@ARGV);
 # f77 is too ambiguous
-$compiler = "" if $compiler eq "f77";
-
-@path = split(/:/, $ENV{"PATH"});
-
-if ($compiler eq "") {
-
-    @lists = ("gfortran", "g95", "frt", "fort", "openf90", "openf95",
-             "sunf77", "sunf90", "sunf95",
-              "xlf95", "xlf90", "xlf",
-              "ppuf77", "ppuf95", "ppuf90", "ppuxlf",
-             "pathf90", "pathf95",
-             "pgf95", "pgf90", "pgf77", "pgfortran", "nvfortran",
-             "flang", "egfortran",
-              "ifort", "nagfor");
-
-OUTER:
-    foreach $lists (@lists) {
-        foreach $path (@path) {
-            if (-x $path . "/" . $lists) {
-                $compiler = $lists;
-                $compiler_bin = $lists;
-                last OUTER;
+[ "$compiler" = "f77" ] && compiler=''
+
+path=`split "$PATH" ':'`
+
+if [ -z "$compiler" ]; then
+
+    lists="gfortran g95 frt fort openf90 openf95
+             sunf77 sunf90 sunf95
+              xlf95 xlf90 xlf
+              ppuf77 ppuf95 ppuf90 ppuxlf
+             pathf90 pathf95
+             pgf95 pgf90 pgf77 pgfortran nvfortran
+             flang egfortran
+              ifort nagfor"
+
+    for list in $lists; do
+        for p in $path; do
+            if [ -x "$p/$list" ]; then
+                compiler=$list
+                compiler_bin=$list
+                break 2
+            fi
+        done
+    done
+fi
+
+if [ -z "$compiler" ]; then
+
+    nofortran=1
+    compiler=gfortran
+    vendor=GFORTRAN
+    bu="_"
+
+else
+    {
+        data="$(command -v "$compiler_bin" >/dev/null 2>&1)"
+        vendor=""
+    } && {
+       data=`$compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.s && rm -f ftest.s`
+       if [ -z "$data" ]; then
+               data=`$compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.c && rm -f ftest.c`
+       fi
+
+        case "$data" in *zhoge_*) bu=_ ;; esac
+
+        case "$data" in
+            *Fujitsu*)
+                vendor=FUJITSU
+                openmp='-Kopenmp'
+                ;;
+            *GNU*|*GCC*)
+
+                v="${data##*GCC: *\) }"
+                v="${v%%\"*}"
+
+                major="${v%%.*}"
+
+                if [ "$major" -ge 4 ]; then
+                    vendor=GFORTRAN
+                    openmp='-fopenmp'
+                else
+                    case "$compiler" in
+                        *flang*)
+                            vendor=FLANG
+                            openmp='-fopenmp'
+                            ;;
+                        *pgf*|*nvf*)
+                            vendor=PGI
+                            openmp='-mp'
+                            ;;
+                        *)
+                            vendor=G77
+                            openmp=''
+                            ;;
+                    esac
+                fi
+                ;;
+            *g95*)
+                vendor=G95
+                openmp=''
+                ;;
+            *Intel*)
+                vendor=INTEL
+                openmp='-fopenmp'
+                ;;
+            *'Sun Fortran'*)
+                vendor=SUN
+                openmp='-xopenmp=parallel'
+                ;;
+            *PathScale*)
+                vendor=PATHSCALE
+                openmp='-openmp'
+                ;;
+            *Open64*)
+                vendor=OPEN64
+                openmp='-mp'
+                ;;
+            *PGF*|*NVF*)
+                vendor=PGI
+                openmp='-mp'
+                ;;
+            *'IBM XL'*)
+                vendor=IBM
+                openmp='-openmp'
+                ;;
+            *NAG*)
+                vendor=NAG
+                openmp='-openmp'
+                ;;
+        esac
+
+       # for embedded underscore name, e.g. zho_ge, it may append 2 underscores.
+       data=`$compiler -O2 -S ftest3.f >/dev/null 2>&1 && cat ftest3.s && rm -f ftest3.s`
+
+       [ -z "$data" ] && {
+               data=`$compiler -O2 -S ftest3.f >/dev/null 2>&1 && cat ftest3.c && rm -f ftest3.c`
+       }
+
+       case "$data" in *' zho_ge__'*) need2bu=1 ;; esac
+       case "$vendor" in *G95*) [ "$NO_LAPACKE" != 1 ] && need2bu='' ;; esac
+       }
+
+    if [ -z "$vendor" ]; then
+        case "$compiler" in
+            *g77*)
+                vendor=G77
+                bu=_
+                openmp=''
+                ;;
+            *g95*)
+                vendor=G95
+                bu=_
+                openmp=''
+                ;;
+            *gfortran*)
+                vendor=GFORTRAN
+                bu=_
+                openmp='-fopenmp'
+                ;;
+            *ifort*)
+                vendor=INTEL
+                bu=_
+                openmp='-fopenmp'
+                ;;
+            *pathf*)
+               vendor=PATHSCALE
+               bu=_
+               openmp='-mp'
+               ;;
+            *pgf*|*nvf*)
+                vendor=PGI
+                bu=_
+                openmp='-mp'
+                ;;
+            *ftn*)
+               vendor=PGI
+               bu=_
+               openmp=-openmp
+               ;;
+            *frt*)
+                vendor=FUJITSU
+                bu=_
+                openmp='-openmp'
+                ;;
+            *sunf77*|*sunf90*|*sunf95*)
+                vendor=SUN
+                bu=_
+                openmp='-xopenmp=parallel'
+                ;;
+            *ppuf*|*xlf*)
+                vendor=IBM
+                openmp='-openmp'
+                ;;
+            *open64*)
+                vendor=OPEN64
+                openmp='-mp'
+                ;;
+            *flang*)
+                vendor=FLANG
+                bu=_
+                openmp='-fopenmp'
+                ;;
+            *nagfor*)
+                vendor=NAG
+                bu=_
+                openmp='-openmp'
+                ;;
+        esac
+
+       if [ -z "$vendor" ]; then
+           nofortran=1
+           compiler="gfortran"
+           vendor=GFORTRAN
+           bu=_
+           openmp=''
+       fi
+    fi
+fi
+
+{
+    data=`command -v $compiler_bin >/dev/null 2>&1`
+} && {
+
+    binary=$BINARY
+
+    [ "$USE_OPENMP" != 1 ] && openmp=''
+
+    case "$binary" in
+        32)
+            {
+                link=`$compiler $openmp -m32 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                link=`$compiler $openmp -q32 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                # for AIX
+                link=`$compiler $openmp -maix32 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                # for gfortran MIPS
+                mips_data=`$compiler_bin -E -dM - < /dev/null`
+                case "$mips_data" in
+                    *_MIPS_ISA_MIPS64*)
+                        link=`$compiler $openmp -mabi=n32 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+                        ;;
+                    *)
+                        link=`$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+                        ;;
+                esac
+            } || {
+                binary=''
             }
-        }
-    }
-
-}
-
-if ($compiler eq "") {
-
-    $nofortran = 1;
-    $compiler = "gfortran";
-    $vendor = GFORTRAN;
-    $bu       = "_";
-
-} else {
-
-    $data = `which $compiler_bin > /dev/null 2> /dev/null`;
-    $vendor = "";
-
-    if (!$?) {
-
-       $data = `$compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.s && rm -f ftest.s`;
-       if ($data eq "") {
-               $data = `$compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.c && rm -f ftest.c`;
-       }
-       if ($data =~ /zhoge_/) {
-           $bu       = "_";
-       }
-
-       if ($data =~ /Fujitsu/) {
-
-           $vendor = FUJITSU;
-           $openmp = "-Kopenmp";
-
-       } elsif ($data =~ /GNU/ || $data =~ /GCC/ ) {
-
-            $data =~ s/\(+.*?\)+//g;
-           $data =~ /(\d+)\.(\d+).(\d+)/;
-           $major = $1;
-           $minor = $2;
-
-           if ($major >= 4) {
-               $vendor = GFORTRAN;
-               $openmp = "-fopenmp";
-           } else {
-               if ($compiler =~ /flang/) {
-                   $vendor = FLANG;
-                   $openmp = "-fopenmp";
-           } elsif ($compiler =~ /pgf/ || $compiler =~ /nvf/) {
-                   $vendor = PGI;
-                   $openmp = "-mp";
-               } else {
-                   $vendor = G77;
-                   $openmp = "";
-               }
-           }
-
-       }
-
-       if ($data =~ /g95/) {
-           $vendor = G95;
-           $openmp = "";
-       }
-
-       if ($data =~ /Intel/) {
-           $vendor = INTEL;
-           $openmp = "-fopenmp";
-       }
-
-        if ($data =~ /Sun Fortran/) {
-            $vendor = SUN;
-           $openmp = "-xopenmp=parallel";
-        }
-
-       if ($data =~ /PathScale/) {
-           $vendor = PATHSCALE;
-           $openmp = "-openmp";
-       }
-
-       if ($data =~ /Open64/) {
-           $vendor = OPEN64;
-           $openmp = "-mp";
-       }
-
-       if ($data =~ /PGF/ || $data =~ /NVF/) {
-           $vendor = PGI;
-           $openmp = "-mp";
-       }
-
-       if ($data =~ /IBM XL/) {
-           $vendor = IBM;
-           $openmp = "-openmp";
-       }
-
-       if ($data =~ /NAG/) {
-           $vendor = NAG;
-           $openmp = "-openmp";
-       }
-
-       # for embedded underscore name, e.g. zho_ge, it may append 2 underscores.
-       $data = `$compiler -O2 -S ftest3.f > /dev/null 2>&1 && cat ftest3.s && rm -f ftest3.s`;
-       if ($data eq "") {
-               $data = `$compiler -O2 -S ftest3.f > /dev/null 2>&1 && cat ftest3.c && rm -f ftest3.c`;
-       }
-       if ($data =~ / zho_ge__/) {
-           $need2bu       = 1;
-       }
-       if ($vendor =~ /G95/) {
-         if ($ENV{NO_LAPACKE} != 1) {
-               $need2bu = "";
-         }
-       }
-    }
-
-    if ($vendor eq "") {
-
-       if ($compiler =~ /g77/) {
-           $vendor = G77;
-           $bu       = "_";
-           $openmp = "";
-       }
-
-       if ($compiler =~ /g95/) {
-           $vendor = G95;
-           $bu       = "_";
-           $openmp = "";
-       }
-
-       if ($compiler =~ /gfortran/) {
-           $vendor = GFORTRAN;
-           $bu       = "_";
-           $openmp = "-fopenmp";
-       }
-
-       if ($compiler =~ /ifort/) {
-           $vendor = INTEL;
-           $bu       = "_";
-           $openmp = "-fopenmp";
-       }
-
-       if ($compiler =~ /pathf/) {
-           $vendor = PATHSCALE;
-           $bu       = "_";
-           $openmp = "-mp";
-       }
-
-       if ($compiler =~ /pgf/ || $compiler =~ /nvf/) {
-           $vendor = PGI;
-           $bu       = "_";
-           $openmp = "-mp";
-       }
-
-       if ($compiler =~ /ftn/) {
-           $vendor = PGI;
-           $bu       = "_";
-           $openmp = "-openmp";
-       }
-
-       if ($compiler =~ /frt/) {
-           $vendor = FUJITSU;
-           $bu       = "_";
-           $openmp = "-openmp";
-       }
-
-       if ($compiler =~ /sunf77|sunf90|sunf95/) {
-           $vendor = SUN;
-           $bu       = "_";
-           $openmp = "-xopenmp=parallel";
-       }
-
-       if ($compiler =~ /ppuf/) {
-           $vendor = IBM;
-           $openmp = "-openmp";
-       }
-
-       if ($compiler =~ /xlf/) {
-           $vendor = IBM;
-           $openmp = "-openmp";
-       }
-
-       if ($compiler =~ /open64/) {
-           $vendor = OPEN64;
-           $openmp = "-mp";
-       }
-
-       if ($compiler =~ /flang/) {
-           $vendor = FLANG;
-           $bu     = "_";
-           $openmp = "-fopenmp";
-       }
-
-       if ($compiler =~ /nagfor/) {
-           $vendor = NAG;
-           $bu     = "_";
-           $openmp = "-openmp";
-       }
-
-       if ($vendor eq "") {
-           $nofortran = 1;
-           $compiler = "gfortran";
-           $vendor = GFORTRAN;
-           $bu       = "_";
-           $openmp = "";
-       }
+            ;;
+        64)
+            {
+                link=`$compiler $openmp -m64 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                link=`$compiler $openmp -q64 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                # for AIX
+                link=`$compiler $openmp -maix64 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                # for gfortran MIPS
+                link=`$compiler $openmp -mabi=64 -v ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                # for nagfor
+                link=`$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`
+            } || {
+                binary=''
+            }
+            ;;
+    esac
 
-    }
+    if [ -z "$binary" ]; then
+        link=`$compiler $openmp -v ftest2.f 2>&1 && rm -f a.out a.exe`
+    fi
 }
 
-$data = `which $compiler_bin > /dev/null 2> /dev/null`;
+if [ "$vendor" = "NAG" ]; then
+    link=`$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`
+fi
+linker_L=""
+linker_l=""
+linker_a=""
 
-if (!$?) {
+if [ -n "$link" ]; then
 
-    $binary = $ENV{"BINARY"};
+    link=`echo "$link" | sed 's/\-Y[[:space:]]P\,/\-Y/g'`
 
-    $openmp = "" if $ENV{USE_OPENMP} != 1;
+    link=`echo "$link" | sed 's/\-R[[:space:]]*/\-rpath\%/g'`
 
-    if ($binary == 32) {
-       $link = `$compiler $openmp -m32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       if ($?) {
-           $link = `$compiler $openmp -q32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       }
-        # for AIX
-       if ($?) {
-           $link = `$compiler $openmp -maix32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       }
-       #For gfortran MIPS
-       if ($?) {
-    $mips_data = `$compiler_bin -E -dM - < /dev/null`;
-    if ($mips_data =~ /_MIPS_ISA_MIPS64/) {
-        $link = `$compiler $openmp -mabi=n32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-    } else {
-        $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-    }
-       }
-       $binary = "" if ($?);
-    }
+    link=`echo "$link" | sed 's/\-rpath[[:space:]]+/\-rpath\%/g'`
 
-    if ($binary == 64) {
-       $link = `$compiler $openmp -m64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       if ($?) {
-           $link = `$compiler $openmp -q64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       }
-        # for AIX
-       if ($?) {
-           $link = `$compiler $openmp -maix64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       }
-       #For gfortran MIPS
-       if ($?) {
-           $link = `$compiler $openmp -mabi=64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-       }
-       #For nagfor
-       if ($?) {
-           $link = `$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`;
-        }
-       $binary = "" if ($?);
-    }
-    if ($binary eq "") {
-       $link = `$compiler $openmp -v ftest2.f 2>&1 && rm -f a.out a.exe`;
-    }
-}
+    link=`echo "$link" | sed 's/\-rpath-link[[:space:]]+/\-rpath-link\%/g'`
 
-if ( $vendor eq "NAG") {
-           $link = `$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`;
-    }
-$linker_L = "";
-$linker_l = "";
-$linker_a = "";
-
-if ($link ne "") {
-
-    $link =~ s/\-Y\sP\,/\-Y/g;
-    
-    $link =~ s/\-R\s*/\-rpath\%/g;
-
-    $link =~ s/\-rpath\s+/\-rpath\%/g;
-
-    $link =~ s/\-rpath-link\s+/\-rpath-link\%/g;
-
-    @flags = split(/[\s\,\n]/, $link);
+    flags=`echo "$link" | tr ',\n' ' '`
     # remove leading and trailing quotes from each flag.
-    @flags = map {s/^['"]|['"]$//g; $_} @flags;
-
-    foreach $flags (@flags) {
-       if (
-           ($flags =~ /^\-L/)
-           && ($flags !~ /^-LIST:/)
-           && ($flags !~ /^-LANG:/)
-           ) {
-           $linker_L .= $flags . " ";
-       }
-
-       if ($flags =~ /^\-Y/) {
-           next if ($hostos eq 'SunOS');
-           $linker_L .= "-Wl,". $flags . " ";
-        }
-
-       if ($flags =~ /^\--exclude-libs/) {
-           $linker_L .= "-Wl,". $flags . " ";
-           $flags="";
-       }
-
-
-       if ($flags =~ /^\-rpath\%/) {
-           $flags =~ s/\%/\,/g;
-           $linker_L .= "-Wl,". $flags . " " ;
-       }
-
-       if ($flags =~ /^\-rpath-link\%/) {
-           $flags =~ s/\%/\,/g;
-           $linker_L .= "-Wl,". $flags . " " ;
-       }
-       if ($flags =~ /-lgomp/ && $ENV{"CC"} =~ /clang/) {
-           $flags = "-lomp";
-       }
-
-       if (
-           ($flags =~ /^\-l/)
-           && ($flags !~ /ibrary/)
-           && ($flags !~ /gfortranbegin/)
-           && ($flags !~ /flangmain/)
-           && ($flags !~ /frtbegin/)
-           && ($flags !~ /pathfstart/)
-           && ($flags !~ /crt[0-9]/)
-           && ($flags !~ /gcc/)
-           && ($flags !~ /user32/)
-           && ($flags !~ /kernel32/)
-           && ($flags !~ /advapi32/)
-           && ($flags !~ /shell32/)
-           && ($flags !~ /omp/ || ($vendor !~ /PGI/ && $vendor !~ /FUJITSU/ && $flags =~ /omp/))
-           && ($flags !~ /[0-9]+/ || ($vendor == FUJITSU && $flags =~ /^-lfj90/))
-               && ($flags !~ /^\-l$/)
-           ) {
-           $linker_l .= $flags . " ";
-       }
-
-       if ( $flags =~ /quickfit.o/ && $vendor == NAG) {
-           $linker_l .= $flags . " ";
-       }
-       if ( $flags =~ /safefit.o/ && $vendor == NAG) {
-           $linker_l .= $flags . " ";
-       }
-       if ( $flags =~ /thsafe.o/ && $vendor == NAG) {
-           $linker_l .= $flags . " ";
-       }
-
-       $linker_a .= $flags . " " if $flags =~ /\.a$/;
-    }
-
-}
-
-if ($vendor eq "FLANG"){
-    $linker_a .= "-lflang"
-}
-
-open(MAKEFILE, ">> $makefile") || die "Can't append $makefile";
-open(CONFFILE, ">> $config"  ) || die "Can't append $config";
-
-print MAKEFILE "F_COMPILER=$vendor\n";
-print MAKEFILE "FC=$compiler\n";
-print MAKEFILE "BU=$bu\n" if $bu ne "";
-print MAKEFILE "NOFORTRAN=1\n" if $nofortran == 1;
-
-print CONFFILE "#define BUNDERSCORE\t$bu\n" if $bu ne "";
-print CONFFILE "#define NEEDBUNDERSCORE\t1\n" if $bu ne "";
-print CONFFILE "#define NEED2UNDERSCORES\t1\n" if $need2bu ne "";
-
-print MAKEFILE "NEED2UNDERSCORES=1\n" if $need2bu ne "";
-
-if (($linker_l ne "") || ($linker_a ne "")) {
-    print MAKEFILE "FEXTRALIB=$linker_L $linker_l $linker_a\n";
-}
+    #@flags = map {s/^['"]|['"]$//g; $_} @flags;
+
+    for flag in $flags; do
+        case "$flag" in -L*)
+            case "$flag" in
+                -LIST:*|-LANG:*) ;;
+                *) linker_L="$linker_L $flag" ;;
+            esac
+        esac
+
+       case "$flag" in -Y*)
+           [ "$hostos" = "SunOS" ] && continue
+           linker_L="$linker_L -Wl,$flag"
+           ;;
+        esac
+
+       case "$flag" in --exclude-libs*)
+            linker_L="$linker_L -Wl,$flag"
+            flag=""
+            ;;
+        esac
+
+       case "$flag" in -rpath%*)
+           flag=`echo "$flag" | sed 's/\%/\,/g'`
+           linker_L="$linker_L -Wl,$flag"
+        esac
+
+       case "$flag" in -rpath-link%*)
+           flag=`echo "$flag" | sed 's/\%/\,/g'`
+           linker_L="$linker_L -Wl,$flag"
+           ;;
+       esac
+
+       case "$flag" in *-lgomp*)
+           case "$CC" in *clang*)
+               flag="-lomp"
+               ;;
+           esac
+       esac
+
+        case "$flag" in -l*)
+            case "$flag" in
+                *ibrary*|*gfortranbegin*|*flangmain*|*frtbegin*|*pathfstart*|\
+                    *crt[0-9]*|*gcc*|*user32*|*kernel32*|*advapi32*|*shell32*|\
+                    -l) ;;
+                *omp*)
+                    case "$vendor" in
+                        *PGI*|*FUJITSU*) ;;
+                        *) linker_l="$linker_l $flag" ;;
+                    esac
+                    ;;
+                *[0-9]*)
+                    if [ "$vendor" = "FUJITSU" ]; then
+                        case "$flag" in
+                            -lfj90*) linker_l="$linker_l $flag" ;;
+                            *) ;;
+                        esac
+                    fi
+                    ;;
+                *) linker_l="$linker_l $flag" ;;
+            esac
+       esac
+
+        case "$flag" in *quickfit.o*)
+            [ "$vendor" = "NAG" ] && linker_l="$linker_l $flag" ;;
+        esac
+
+        case "$flag" in *safefit.o*)
+            [ "$vendor" = "NAG" ] && linker_l="$linker_l $flag" ;;
+        esac
+
+        case "$flag" in *thsafe.o*)
+            [ "$vendor" = "NAG" ] && linker_l="$linker_l $flag" ;;
+        esac
+
+       case "$flag" in *.a) linker_a="$linker_a $flag" ;; esac
+    done
+fi
+
+if [ "$vendor" = "FLANG" ]; then
+    linker_a="$linker_a -lflang"
+fi
+
+printf "F_COMPILER=%s\n" "$vendor"               >> "$makefile"
+printf "FC=%s\n" "$compiler"                     >> "$makefile"
+[ -n "$bu" ] && printf 'BU=%s\n' "$bu"           >> "$makefile"
+[ "$nofortran" -eq 1 ] && printf 'NOFORTRAN=1\n' >> "$makefile"
+
+[ -n "$bu" ] && printf '#define BUNDERSCORE\t%s\n' "$bu"    >> "$config"
+[ -n "$bu" ] && printf '#define NEEDBUNDERSCORE\t1\n'       >> "$config"
+[ -n "$need2bu" ] && printf "#define NEED2UNDERSCORES\t1\n" >> "$config"
+
+[ -n "$need2bu" ] && printf "#define NEED2UNDERSCORES=1\n"  >> "$config"
+
+if [ -n "$linker_l" ] || [ -n "$linker_a" ]; then
+    printf "FEXTRALIB=%s %s %s\n" "$linker_L" "$linker_l" "$linker_a" >> "$makefile"
+fi
 
-close(MAKEFILE);
-close(CONFFILE);
index 0b9cefa..3547a0c 100755 (executable)
@@ -1,22 +1,22 @@
-#!/usr/bin/env perl
+#!/bin/sh
 
-$count = 0;
+count=0
 
-foreach (@ARGV) {
-    print "#define\tinterface_", $_, "\t\t", $count, "\n";
-    $count ++;
-}
+for arg in "$@"; do
+    printf "#define\tinterface_%s\t\t%d\n" "$arg" "$count"
+    count=`expr $count + 1`
+done
 
-print "#ifdef USE_FUNCTABLE\n";
+printf "#ifdef USE_FUNCTABLE\n"
 
-print "#define MAX_PROF_TABLE ", $count, "\n";
+printf "#define MAX_PROF_TABLE %d\n" "$count"
 
-print "static char *func_table[] = {\n";
+printf "static char *func_table[] = {\n"
 
-foreach (@ARGV) {
-    print "\"", $_, "\",\n";
-}
+for arg in "$@"; do
+    printf "\"%s\",\n" "$arg"
+done
 
-print "};\n";
-print "#endif\n";
+printf "};\n"
+printf "#endif\n"