From 20c67427b39ce6cb4d7250cffceb76e89225333f Mon Sep 17 00:00:00 2001 From: John Kirkham Date: Wed, 23 May 2018 13:46:29 -0400 Subject: [PATCH] Release 0.3.0 --- recipe/gh_1247.patch | 144 ---- recipe/gh_1256.patch | 748 -------------------- recipe/gh_1259.patch | 505 ------------- recipe/gh_1264.patch | 1192 ------------------------------- recipe/gh_1279.patch | 1607 ------------------------------------------ recipe/gh_1323.patch | 123 ---- recipe/gh_1350.patch | 1198 ------------------------------- recipe/gh_1377.patch | 35 - recipe/gh_1417.patch | 28 - recipe/meta.yaml | 16 +- 10 files changed, 3 insertions(+), 5593 deletions(-) delete mode 100644 recipe/gh_1247.patch delete mode 100644 recipe/gh_1256.patch delete mode 100644 recipe/gh_1259.patch delete mode 100644 recipe/gh_1264.patch delete mode 100644 recipe/gh_1279.patch delete mode 100644 recipe/gh_1323.patch delete mode 100644 recipe/gh_1350.patch delete mode 100644 recipe/gh_1377.patch delete mode 100644 recipe/gh_1417.patch diff --git a/recipe/gh_1247.patch b/recipe/gh_1247.patch deleted file mode 100644 index c44c432..0000000 --- a/recipe/gh_1247.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 88a35ff457f55e527e0e8a503a0dc61976c1846d Mon Sep 17 00:00:00 2001 -From: Martin Kroeker -Date: Tue, 25 Jul 2017 08:39:35 +0200 -Subject: [PATCH] Revert #1246, "honor cgroup/cpuset limits" for now - -Unsafe usage of the __GLIBC_PREREQ macro lead to build breakage on non-glibc systems ---- - driver/others/init.c | 49 +++++-------------------------------------------- - driver/others/memory.c | 37 ------------------------------------- - 2 files changed, 5 insertions(+), 81 deletions(-) - -diff --git a/driver/others/init.c b/driver/others/init.c -index 4c75d72e4..3e6176967 100644 ---- a/driver/others/init.c -+++ b/driver/others/init.c -@@ -778,11 +778,11 @@ static int initialized = 0; - void gotoblas_affinity_init(void) { - - int cpu, num_avail; --#ifndef USE_OPENMP -+#ifndef USE_OPENMP - cpu_set_t cpu_mask; - #endif - int i; -- -+ - if (initialized) return; - - initialized = 1; -@@ -826,54 +826,15 @@ void gotoblas_affinity_init(void) { - common -> shmid = pshmid; - - if (common -> magic != SH_MAGIC) { -- cpu_set_t *cpusetp; -- int nums; -- int ret; -- - #ifdef DEBUG - fprintf(stderr, "Shared Memory Initialization.\n"); - #endif - - //returns the number of processors which are currently online -- -- nums = sysconf(_SC_NPROCESSORS_CONF); -- --#if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 3) -- common->num_procs = nums; --#elif __GLIBC_PREREQ(2, 7) -- cpusetp = CPU_ALLOC(nums); -- if (cpusetp == NULL) { -- common->num_procs = nums; -- } else { -- size_t size; -- size = CPU_ALLOC_SIZE(nums); -- ret = sched_getaffinity(0,size,cpusetp); -- if (ret!=0) -- common->num_procs = nums; -- else -- common->num_procs = CPU_COUNT_S(size,cpusetp); -- } -- CPU_FREE(cpusetp); --#else -- ret = sched_getaffinity(0,sizeof(cpu_set_t), cpusetp); -- if (ret!=0) { -- common->num_procs = nums; -- } else { --#if !__GLIBC_PREREQ(2, 6) -- int i; -- int n = 0; -- for (i=0;inum_procs = n; -- } --#else -- common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp); --#endif -- --#endif -+ common -> num_procs = sysconf(_SC_NPROCESSORS_CONF);; - - if(common -> num_procs > MAX_CPUS) { -- fprintf(stderr, "\nOpenBLAS Warning : The number of CPU/Cores(%d) is beyond the limit(%d). Terminated.\n", common->num_procs, MAX_CPUS); -+ fprintf(stderr, "\nOpenBLAS Warining : The number of CPU/Cores(%d) is beyond the limit(%d). Terminated.\n", common->num_procs, MAX_CPUS); - exit(1); - } - -@@ -886,7 +847,7 @@ void gotoblas_affinity_init(void) { - if (common -> num_nodes > 1) numa_mapping(); - - common -> final_num_procs = 0; -- for(i = 0; i < common -> avail_count; i++) common -> final_num_procs += rcount(common -> avail[i]) + 1; //Make the max cpu number. -+ for(i = 0; i < common -> avail_count; i++) common -> final_num_procs += rcount(common -> avail[i]) + 1; //Make the max cpu number. - - for (cpu = 0; cpu < common -> final_num_procs; cpu ++) common -> cpu_use[cpu] = 0; - -diff --git a/driver/others/memory.c b/driver/others/memory.c -index 38d063715..916950315 100644 ---- a/driver/others/memory.c -+++ b/driver/others/memory.c -@@ -175,44 +175,7 @@ int get_num_procs(void); - #else - int get_num_procs(void) { - static int nums = 0; --cpu_set_t *cpusetp; --size_t size; --int ret; --int i,n; -- - if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF); --#if !defined(OS_LINUX) -- return nums; --#endif -- --#if !defined(__GLIBC_PREREQ) -- return nums; --#endif --#if !__GLIBC_PREREQ(2, 3) -- return nums; --#endif -- --#if !__GLIBC_PREREQ(2, 7) -- ret = sched_getaffinity(0,sizeof(cpu_set_t), cpusetp); -- if (ret!=0) return nums; -- n=0; --#if !__GLIBC_PREREQ(2, 6) -- for (i=0;i -Date: Fri, 28 Jul 2017 11:49:39 +0530 -Subject: [PATCH 01/18] check compiler is msvc instead of msvc - ---- - cmake/prebuild.cmake | 11 +++++------ - kernel/CMakeLists.txt | 2 +- - 2 files changed, 6 insertions(+), 7 deletions(-) - -diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake -index a7f98bfb8..eacf518cd 100644 ---- a/cmake/prebuild.cmake -+++ b/cmake/prebuild.cmake -@@ -63,15 +63,14 @@ set(GETARCH_SRC - ${CPUIDEMO} - ) - --if (NOT MSVC) -+if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") -+ #Use generic for MSVC now -+ message("MSVC") -+ set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC) -+else() - list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S) - endif () - --if (MSVC) --#Use generic for MSVC now --set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC) --endif() -- - if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - # disable WindowsStore strict CRT checks - set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS) -diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt -index 8bfcccf17..2a5cb0d8f 100644 ---- a/kernel/CMakeLists.txt -+++ b/kernel/CMakeLists.txt -@@ -22,7 +22,7 @@ ParseMakefileVars("${KERNELDIR}/KERNEL") - ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}") - - if (${ARCH} STREQUAL "x86") --if (NOT MSVC) -+if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true) - else() - GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true) - -From ca17b4b75cc4c897b7c7e8dca51c9e465ed46ef8 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Fri, 28 Jul 2017 11:50:29 +0530 -Subject: [PATCH 02/18] Fix complex support for MSVC headers - ---- - common.h | 50 +++++++++++++++++++++++----------------------- - common_param.h | 12 +++++------ - kernel/x86_64/cdot.c | 9 ++++----- - kernel/x86_64/zdot.c | 9 ++++----- - openblas_config_template.h | 2 +- - 5 files changed, 40 insertions(+), 42 deletions(-) - -diff --git a/common.h b/common.h -index 4463141c8..22ec383ac 100644 ---- a/common.h -+++ b/common.h -@@ -495,6 +495,31 @@ static void __inline blas_lock(volatile BLASULONG *address){ - #define MMAP_POLICY (MAP_PRIVATE | MAP_ANONYMOUS) - #endif - -+/* C99 supports complex floating numbers natively, which GCC also offers as an -+ extension since version 3.0. If neither are available, use a compatible -+ structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ -+#if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ -+ (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) && !defined(_MSC_VER) -+ #define OPENBLAS_COMPLEX_C99 -+ #ifndef __cplusplus -+ #include -+ #endif -+ typedef float _Complex openblas_complex_float; -+ typedef double _Complex openblas_complex_double; -+ typedef xdouble _Complex openblas_complex_xdouble; -+ #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) -+ #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) -+ #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) -+#else -+ #define OPENBLAS_COMPLEX_STRUCT -+ typedef struct { float real, imag; } openblas_complex_float; -+ typedef struct { double real, imag; } openblas_complex_double; -+ typedef struct { xdouble real, imag; } openblas_complex_xdouble; -+ #define openblas_make_complex_float(real, imag) {(real), (imag)} -+ #define openblas_make_complex_double(real, imag) {(real), (imag)} -+ #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} -+#endif -+ - #include "param.h" - #include "common_param.h" - -@@ -524,31 +549,6 @@ static void __inline blas_lock(volatile BLASULONG *address){ - #include - #endif // NOINCLUDE - --/* C99 supports complex floating numbers natively, which GCC also offers as an -- extension since version 3.0. If neither are available, use a compatible -- structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ --#if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ -- (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) -- #define OPENBLAS_COMPLEX_C99 -- #ifndef __cplusplus -- #include -- #endif -- typedef float _Complex openblas_complex_float; -- typedef double _Complex openblas_complex_double; -- typedef xdouble _Complex openblas_complex_xdouble; -- #define openblas_make_complex_float(real, imag) ((real) + ((imag) * _Complex_I)) -- #define openblas_make_complex_double(real, imag) ((real) + ((imag) * _Complex_I)) -- #define openblas_make_complex_xdouble(real, imag) ((real) + ((imag) * _Complex_I)) --#else -- #define OPENBLAS_COMPLEX_STRUCT -- typedef struct { float real, imag; } openblas_complex_float; -- typedef struct { double real, imag; } openblas_complex_double; -- typedef struct { xdouble real, imag; } openblas_complex_xdouble; -- #define openblas_make_complex_float(real, imag) {(real), (imag)} -- #define openblas_make_complex_double(real, imag) {(real), (imag)} -- #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} --#endif -- - #ifdef XDOUBLE - #define OPENBLAS_COMPLEX_FLOAT openblas_complex_xdouble - #define OPENBLAS_MAKE_COMPLEX_FLOAT(r,i) openblas_make_complex_xdouble(r,i) -diff --git a/common_param.h b/common_param.h -index 36d6149ea..0513ace9f 100644 ---- a/common_param.h -+++ b/common_param.h -@@ -333,8 +333,8 @@ BLASLONG (*icamin_k)(BLASLONG, float *, BLASLONG); - float (*cnrm2_k) (BLASLONG, float *, BLASLONG); - float (*casum_k) (BLASLONG, float *, BLASLONG); - int (*ccopy_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG); -- float _Complex (*cdotu_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG); -- float _Complex (*cdotc_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG); -+ openblas_complex_float (*cdotu_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG); -+ openblas_complex_float (*cdotc_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG); - int (*csrot_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG, float, float); - - int (*caxpy_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG); -@@ -496,8 +496,8 @@ BLASLONG (*izamin_k)(BLASLONG, double *, BLASLONG); - double (*znrm2_k) (BLASLONG, double *, BLASLONG); - double (*zasum_k) (BLASLONG, double *, BLASLONG); - int (*zcopy_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG); -- double _Complex (*zdotu_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG); -- double _Complex (*zdotc_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG); -+ openblas_complex_double (*zdotu_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG); -+ openblas_complex_double (*zdotc_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG); - int (*zdrot_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG, double, double); - - int (*zaxpy_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG); -@@ -661,8 +661,8 @@ BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG); - xdouble (*xnrm2_k) (BLASLONG, xdouble *, BLASLONG); - xdouble (*xasum_k) (BLASLONG, xdouble *, BLASLONG); - int (*xcopy_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); -- xdouble _Complex (*xdotu_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); -- xdouble _Complex (*xdotc_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); -+ openblas_complex_xdouble (*xdotu_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); -+ openblas_complex_xdouble (*xdotc_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); - int (*xqrot_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble); - - int (*xaxpy_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG); -diff --git a/kernel/x86_64/cdot.c b/kernel/x86_64/cdot.c -index ce396a2ce..5f01f7eeb 100644 ---- a/kernel/x86_64/cdot.c -+++ b/kernel/x86_64/cdot.c -@@ -91,16 +91,15 @@ static void cdot_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) - - #endif - --FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) - { - BLASLONG i; - BLASLONG ix,iy; -- FLOAT _Complex result; - FLOAT dot[8] = { 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 } ; - - if ( n <= 0 ) - { -- result = OPENBLAS_MAKE_COMPLEX_FLOAT (0.0, 0.0) ; -+ OPENBLAS_COMPLEX_FLOAT result = OPENBLAS_MAKE_COMPLEX_FLOAT (0.0, 0.0) ; - return(result); - - } -@@ -160,11 +159,11 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG in - } - - #if !defined(CONJ) -- result = OPENBLAS_MAKE_COMPLEX_FLOAT (dot[0]-dot[1], dot[4]+dot[5]) ; -+ OPENBLAS_COMPLEX_FLOAT result = OPENBLAS_MAKE_COMPLEX_FLOAT (dot[0]-dot[1], dot[4]+dot[5]) ; - // CREAL(result) = dot[0] - dot[1]; - // CIMAG(result) = dot[4] + dot[5]; - #else -- result = OPENBLAS_MAKE_COMPLEX_FLOAT (dot[0]+dot[1], dot[4]-dot[5]) ; -+ OPENBLAS_COMPLEX_FLOAT result = OPENBLAS_MAKE_COMPLEX_FLOAT (dot[0]+dot[1], dot[4]-dot[5]) ; - // CREAL(result) = dot[0] + dot[1]; - // CIMAG(result) = dot[4] - dot[5]; - -diff --git a/kernel/x86_64/zdot.c b/kernel/x86_64/zdot.c -index 2fcacc87a..d11c76647 100644 ---- a/kernel/x86_64/zdot.c -+++ b/kernel/x86_64/zdot.c -@@ -86,18 +86,17 @@ static void zdot_kernel_8(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *d) - - #endif - --FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) -+OPENBLAS_COMPLEX_FLOAT CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG inc_y) - { - BLASLONG i; - BLASLONG ix,iy; -- FLOAT _Complex result; - FLOAT dot[4] = { 0.0, 0.0, 0.0 , 0.0 } ; - - if ( n <= 0 ) - { - // CREAL(result) = 0.0 ; - // CIMAG(result) = 0.0 ; -- result=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0,0.0); -+ OPENBLAS_COMPLEX_FLOAT result=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0,0.0); - return(result); - - } -@@ -151,11 +150,11 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT *x, BLASLONG inc_x, FLOAT *y, BLASLONG in - } - - #if !defined(CONJ) -- result=OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]-dot[1],dot[2]+dot[3]); -+ OPENBLAS_COMPLEX_FLOAT result=OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]-dot[1],dot[2]+dot[3]); - // CREAL(result) = dot[0] - dot[1]; - // CIMAG(result) = dot[2] + dot[3]; - #else -- result=OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]+dot[1],dot[2]-dot[3]); -+ OPENBLAS_COMPLEX_FLOAT result=OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]+dot[1],dot[2]-dot[3]); - // CREAL(result) = dot[0] + dot[1]; - // CIMAG(result) = dot[2] - dot[3]; - -diff --git a/openblas_config_template.h b/openblas_config_template.h -index fd6171492..52dd49da2 100644 ---- a/openblas_config_template.h -+++ b/openblas_config_template.h -@@ -59,7 +59,7 @@ typedef int blasint; - extension since version 3.0. If neither are available, use a compatible - structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ - #if ((defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ -- (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) -+ (__GNUC__ >= 3 && !defined(__cplusplus))) && !(defined(FORCE_OPENBLAS_COMPLEX_STRUCT))) && !defined(_MSC_VER) - #define OPENBLAS_COMPLEX_C99 - #ifndef __cplusplus - #include - -From eb98fdddfc4ef33dc7fe9817da4e6fe0c369db38 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 20:38:16 +0530 -Subject: [PATCH 03/18] typedefs only for c - ---- - common.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/common.h b/common.h -index 22ec383ac..ae98279ef 100644 ---- a/common.h -+++ b/common.h -@@ -495,6 +495,7 @@ static void __inline blas_lock(volatile BLASULONG *address){ - #define MMAP_POLICY (MAP_PRIVATE | MAP_ANONYMOUS) - #endif - -+#ifndef ASSEMBLER - /* C99 supports complex floating numbers natively, which GCC also offers as an - extension since version 3.0. If neither are available, use a compatible - structure as fallback (see Clause 6.2.5.13 of the C99 standard). */ -@@ -519,6 +520,7 @@ static void __inline blas_lock(volatile BLASULONG *address){ - #define openblas_make_complex_double(real, imag) {(real), (imag)} - #define openblas_make_complex_xdouble(real, imag) {(real), (imag)} - #endif -+#endif - - #include "param.h" - #include "common_param.h" - -From 4c5df489db4792acfc861135b8d90e03de9805a6 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 20:59:17 +0530 -Subject: [PATCH 04/18] clang on windows needs FU='' - ---- - cmake/c_check.cmake | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/cmake/c_check.cmake b/cmake/c_check.cmake -index 56ae612ea..a0784f09c 100644 ---- a/cmake/c_check.cmake -+++ b/cmake/c_check.cmake -@@ -28,6 +28,8 @@ - set(FU "") - if(APPLE) - set(FU "_") -+elseif(MSVC AND ${CMAKE_C_COMPILER_ID} MATCHES "Clang") -+set(FU "") - elseif(MSVC) - set(FU "_") - elseif(UNIX) - -From ea1095135ebf60350cd8a60f35c299c1b100a224 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:00:32 +0530 -Subject: [PATCH 05/18] Ninja complains that file openblas.def does not exist - ---- - cmake/export.cmake | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/cmake/export.cmake b/cmake/export.cmake -index 629f8fbc2..a9d1fc458 100644 ---- a/cmake/export.cmake -+++ b/cmake/export.cmake -@@ -51,7 +51,8 @@ else() - endif() - - add_custom_command( -- TARGET ${OpenBLAS_LIBNAME} PRE_LINK -+ 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" - COMMENT "Create openblas.def file" - -From b03d50b7944259e38af324bed466d842618348af Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:16:00 +0530 -Subject: [PATCH 06/18] Test clang in appveyor.yml - ---- - appveyor.yml | 21 ++++++++++++++++----- - 1 file changed, 16 insertions(+), 5 deletions(-) - -diff --git a/appveyor.yml b/appveyor.yml -index c9d8e47ac..837e81292 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -12,9 +12,6 @@ clone_folder: c:\projects\OpenBLAS - init: - - git config --global core.autocrlf input - --build: -- project: OpenBLAS.sln -- - clone_depth: 5 - - #branches to build -@@ -27,16 +24,30 @@ branches: - skip_tags: true - - matrix: -- fast_finish: true -+ fast_finish: false - - skip_commits: - # Add [av skip] to commit messages - message: /\[av skip\]/ - -+environment: -+ matrix: -+ - COMPILER: cl -+ - COMPILER: clang-cl -+ -+install: -+ - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat -+ - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force -+ - if [%COMPILER%]==[clang-cl] conda install clangdev ninja cmake -+ - before_build: - - echo Running cmake... - - cd c:\projects\OpenBLAS -- - cmake -G "Visual Studio 12 Win64" . -+ - if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" . -+ - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER_ID=clang-cl -DCMAKE_C_COMPILER_ID=clang-cl . -+ -+build: -+ - cmake --build . - - test_script: - - echo Running Test - -From c56d4881f9e14a0a7a25f9c70f5bfd5732ab5752 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:37:48 +0530 -Subject: [PATCH 07/18] Fix appveyor.yml - ---- - appveyor.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/appveyor.yml b/appveyor.yml -index 837e81292..8394d3bac 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -46,7 +46,7 @@ before_build: - - if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" . - - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER_ID=clang-cl -DCMAKE_C_COMPILER_ID=clang-cl . - --build: -+build_script: - - cmake --build . - - test_script: - -From ff17e3eb9f4e79e661c5bad2180e2d4c65ecfa2d Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:47:15 +0530 -Subject: [PATCH 08/18] build clang-cl first - ---- - appveyor.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/appveyor.yml b/appveyor.yml -index 8394d3bac..5022d179e 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -32,8 +32,8 @@ skip_commits: - - environment: - matrix: -- - COMPILER: cl - - COMPILER: clang-cl -+ - COMPILER: cl - - install: - - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat - -From 7a4ebf825bae6f994f064c37805356a01d62e87f Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:48:49 +0530 -Subject: [PATCH 09/18] add --yes to conda in appveyor.yml - ---- - appveyor.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/appveyor.yml b/appveyor.yml -index 5022d179e..d6f175763 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -38,7 +38,7 @@ environment: - install: - - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force -- - if [%COMPILER%]==[clang-cl] conda install clangdev ninja cmake -+ - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake - - before_build: - - echo Running cmake... - -From 1169f489a4246da9492322c37680f4b0672fdf64 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:54:32 +0530 -Subject: [PATCH 10/18] Fix CMAKE_C_COMPILER in appveyor - ---- - appveyor.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/appveyor.yml b/appveyor.yml -index d6f175763..7a1a17a7a 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -44,7 +44,7 @@ before_build: - - echo Running cmake... - - cd c:\projects\OpenBLAS - - if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" . -- - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER_ID=clang-cl -DCMAKE_C_COMPILER_ID=clang-cl . -+ - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl . - - build_script: - - cmake --build . - -From a36e9764918d635f36ee51e7472174fbf6219115 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 21:58:53 +0530 -Subject: [PATCH 11/18] vsvarsall in appveyor - ---- - appveyor.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/appveyor.yml b/appveyor.yml -index 7a1a17a7a..d8b9a04b0 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -39,6 +39,7 @@ install: - - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force - - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake -+ - if [%COMPILER%]==[clang-cl] "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 - - before_build: - - echo Running cmake... - -From 7345795e64b4875cc187821d62cd230b1a0ad23b Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 22:16:53 +0530 -Subject: [PATCH 12/18] Try adding RC to path - ---- - appveyor.yml | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/appveyor.yml b/appveyor.yml -index d8b9a04b0..1aa8e391d 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -40,6 +40,7 @@ install: - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force - - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake - - if [%COMPILER%]==[clang-cl] "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 -+ - if [%COMPILER%]==[clang-cl] set "PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\x64" - - before_build: - - echo Running cmake... - -From 5e0f67c666a48243b02dfe9c58e31c70c5d1ae6f Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 23:30:15 +0530 -Subject: [PATCH 13/18] Make ARCH variable a CACHE variable - ---- - cmake/c_check.cmake | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/cmake/c_check.cmake b/cmake/c_check.cmake -index a0784f09c..776850e11 100644 ---- a/cmake/c_check.cmake -+++ b/cmake/c_check.cmake -@@ -61,7 +61,8 @@ endif () - # CMAKE_HOST_SYSTEM_PROCESSOR - The name of the CPU CMake is running on. - # - # TODO: CMAKE_SYSTEM_PROCESSOR doesn't seem to be correct - instead get it from the compiler a la c_check --set(ARCH ${CMAKE_SYSTEM_PROCESSOR}) -+set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture") -+ - if (${ARCH} STREQUAL "AMD64") - set(ARCH "x86_64") - endif () - -From 02c1f860551f18f2efaf874e59fd7be4ecaa4d38 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 23:42:38 +0530 -Subject: [PATCH 14/18] Fix copying libopenblas.dll - ---- - utest/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/utest/CMakeLists.txt b/utest/CMakeLists.txt -index bd31ed9c6..46c46c5ff 100644 ---- a/utest/CMakeLists.txt -+++ b/utest/CMakeLists.txt -@@ -35,7 +35,7 @@ endforeach() - if (MSVC) - add_custom_command(TARGET ${OpenBLAS_utest_bin} - POST_BUILD -- COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib/$/${OpenBLAS_LIBNAME}.dll ${CMAKE_CURRENT_BINARY_DIR}/. -+ COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/lib/${CMAKE_CFG_INTDIR}/${OpenBLAS_LIBNAME}.dll ${CMAKE_CURRENT_BINARY_DIR}/. - ) - endif() - - -From 1a02a087a18297fc5f1bffd3d0911b9cf8ffa790 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sat, 29 Jul 2017 23:42:56 +0530 -Subject: [PATCH 15/18] Fix vcvarsall call in appveyor - ---- - appveyor.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/appveyor.yml b/appveyor.yml -index 1aa8e391d..5ae6c44c0 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -39,7 +39,7 @@ install: - - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force - - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake -- - if [%COMPILER%]==[clang-cl] "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 -+ - if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 - - if [%COMPILER%]==[clang-cl] set "PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\x64" - - before_build: - -From f00bbb9dbf6df423c183bc63aa078e501a5281e3 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Sun, 30 Jul 2017 00:00:37 +0530 -Subject: [PATCH 16/18] Remove unnecessary line in appveyor - ---- - appveyor.yml | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/appveyor.yml b/appveyor.yml -index 5ae6c44c0..cebd3aec6 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -40,7 +40,6 @@ install: - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force - - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake - - if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -- - if [%COMPILER%]==[clang-cl] set "PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\x64" - - before_build: - - echo Running cmake... - -From ca32b66a1c682bd227fd28380fe65768a751c127 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Fri, 4 Aug 2017 07:57:20 +0530 -Subject: [PATCH 17/18] New utest for clang - ---- - utest/CMakeLists.txt | 10 ++++++--- - utest/utest_main2.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 68 insertions(+), 3 deletions(-) - create mode 100644 utest/utest_main2.c - -diff --git a/utest/CMakeLists.txt b/utest/CMakeLists.txt -index d51125bc1..a7f3871c3 100644 ---- a/utest/CMakeLists.txt -+++ b/utest/CMakeLists.txt -@@ -1,10 +1,14 @@ - include_directories(${PROJECT_SOURCE_DIR}) - include_directories(${PROJECT_BINARY_DIR}) - --set(OpenBLAS_utest_src -- utest_main.c -- test_amax.c -+if (MSVC AND "${CMAKE_C_COMPILER_ID}" MATCHES Clang) -+ set(OpenBLAS_utest_src utest_main2.c) -+else () -+ set(OpenBLAS_utest_src -+ utest_main.c -+ test_amax.c - ) -+endif () - - if (NOT NO_LAPACK) - set(OpenBLAS_utest_src -diff --git a/utest/utest_main2.c b/utest/utest_main2.c -new file mode 100644 -index 000000000..565872b16 ---- /dev/null -+++ b/utest/utest_main2.c -@@ -0,0 +1,61 @@ -+/***************************************************************************** -+Copyright (c) 2011-2016, The OpenBLAS Project -+All rights reserved. -+ -+Redistribution and use in source and binary forms, with or without -+modification, are permitted provided that the following conditions are -+met: -+ -+ 1. Redistributions of source code must retain the above copyright -+ notice, this list of conditions and the following disclaimer. -+ -+ 2. Redistributions in binary form must reproduce the above copyright -+ notice, this list of conditions and the following disclaimer in -+ the documentation and/or other materials provided with the -+ distribution. -+ 3. Neither the name of the OpenBLAS project nor the names of -+ its contributors may be used to endorse or promote products -+ derived from this software without specific prior written -+ permission. -+ -+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+**********************************************************************************/ -+ -+#include -+ -+#define CTEST_MAIN -+#define CTEST_SEGFAULT -+#define CTEST_ADD_TESTS_MANUALLY -+ -+#include "openblas_utest.h" -+ -+CTEST(amax, samax){ -+ blasint N=3, inc=1; -+ float te_max=0.0, tr_max=0.0; -+ float x[]={-1.1, 2.2, -3.3}; -+ te_max=BLASFUNC(samax)(&N, x, &inc); -+ tr_max=3.3; -+ -+ ASSERT_DBL_NEAR_TOL((double)(tr_max), (double)(te_max), SINGLE_EPS); -+} -+ -+int main(int argc, const char ** argv){ -+ -+ CTEST_ADD(amax, samax); -+ int num_fail=0; -+ -+ num_fail=ctest_main(argc, argv); -+ -+ return num_fail; -+} -+ - -From 7abbe40980d7f03a35645565443f53aa416b16fa Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Fri, 4 Aug 2017 08:04:16 +0530 -Subject: [PATCH 18/18] Build all branches so that appveyor works in forks - ---- - appveyor.yml | 7 ------- - 1 file changed, 7 deletions(-) - -diff --git a/appveyor.yml b/appveyor.yml -index cebd3aec6..087b22665 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -14,13 +14,6 @@ init: - - clone_depth: 5 - --#branches to build --branches: -- only: -- - master -- - develop -- - cmake -- - skip_tags: true - - matrix: diff --git a/recipe/gh_1259.patch b/recipe/gh_1259.patch deleted file mode 100644 index 9affebc..0000000 --- a/recipe/gh_1259.patch +++ /dev/null @@ -1,505 +0,0 @@ -From 7a96499b29c6b059ecd1baa97bb8b15da6601487 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Tue, 1 Aug 2017 11:02:00 +0530 -Subject: [PATCH 1/5] Don't change timestamps - ---- - .gitignore | 1 + - CMakeLists.txt | 44 ++++++++++++++++++-------------------------- - cmake/c_check.cmake | 4 ++-- - cmake/f_check.cmake | 4 ++-- - cmake/prebuild.cmake | 14 +++++++++----- - cmake/utils.cmake | 4 +++- - 6 files changed, 35 insertions(+), 36 deletions(-) - -diff --git a/.gitignore b/.gitignore -index a2ec7dd08..e9d08ca7e 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -5,6 +5,7 @@ - *.def - *.o - *.out -+*.tmp - lapack-3.1.1 - lapack-3.1.1.tgz - lapack-3.4.1 -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0243ca963..45111ce30 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -231,42 +231,34 @@ install(TARGETS ${OpenBLAS_LIBNAME} - - # Install include files - set (GENCONFIG_BIN ${CMAKE_BINARY_DIR}/gen_config_h${CMAKE_EXECUTABLE_SUFFIX}) -- ADD_CUSTOM_COMMAND( -- OUTPUT ${CMAKE_BINARY_DIR}/openblas_config.h -- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h -- COMMAND ${GENCONFIG_BIN} ${CMAKE_CURRENT_SOURCE_DIR}/config.h ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h > ${CMAKE_BINARY_DIR}/openblas_config.h -- ) - -- ADD_CUSTOM_TARGET(genconfig -- ALL -- DEPENDS openblas_config.h -- ) -- add_dependencies(genconfig ${OpenBLAS_LIBNAME}) -+ execute_process(COMMAND ${GENCONFIG_BIN} -+ ${CMAKE_CURRENT_SOURCE_DIR}/config.h -+ ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h -+ OUTPUT_VARIABLE OPENBLAS_CONFIG_H_CONTENTS) -+ -+ file(WRITE ${CMAKE_BINARY_DIR}/openblas_config.tmp "${OPENBLAS_CONFIG_H_CONTENTS}") -+ configure_file(${CMAKE_BINARY_DIR}/openblas_config.tmp ${CMAKE_BINARY_DIR}/openblas_config.h COPYONLY) - - install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") - -- ADD_CUSTOM_TARGET(genf77blas -- ALL -- COMMAND ${AWK} 'BEGIN{print \"\#ifndef OPENBLAS_F77BLAS_H\" \; print \"\#define OPENBLAS_F77BLAS_H\" \; print \"\#include \\"openblas_config.h\\" \"}; NF {print}; END{print \"\#endif\"}' ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h > ${CMAKE_BINARY_DIR}/f77blas.h -- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/config.h -- ) -- add_dependencies(genf77blas ${OpenBLAS_LIBNAME}) -- -+ file(WRITE ${CMAKE_BINARY_DIR}/f77blas.tmp "") -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "${COMMON_INTERFACE_H_CONTENTS}") -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#endif") -+ configure_file(${CMAKE_BINARY_DIR}/f77blas.tmp ${CMAKE_BINARY_DIR}/f77blas.h COPYONLY) - install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - if(NOT NO_CBLAS) - message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") - -- ADD_CUSTOM_TARGET(gencblas -- ALL -- COMMAND ${SED} 's/common/openblas_config/g' ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h > "${CMAKE_BINARY_DIR}/cblas.tmp" -- COMMAND cp "${CMAKE_BINARY_DIR}/cblas.tmp" "${CMAKE_BINARY_DIR}/cblas.h" -- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h -- ) -- add_dependencies(gencblas ${OpenBLAS_LIBNAME}) -- -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h CBLAS_H_CONTENTS) -+ string(REPLACE "common" "openblas_config" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS}") -+ file(WRITE ${CMAKE_BINARY_DIR}/cblas.tmp "${CBLAS_H_CONTENTS_NEW}") -+ configure_file(${CMAKE_BINARY_DIR}/cblas.tmp ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h COPYONLY) - install (FILES ${CMAKE_BINARY_DIR}/cblas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - endif() - -@@ -277,7 +269,7 @@ if(NOT NO_LAPACKE) - install (FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - ADD_CUSTOM_TARGET(genlapacke -- COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke_mangling_with_flags.h.in "${CMAKE_BINARY_DIR}/lapacke_mangling.h" -+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke_mangling_with_flags.h.in "${CMAKE_BINARY_DIR}/lapacke_mangling.h" - ) - install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - endif() -diff --git a/cmake/c_check.cmake b/cmake/c_check.cmake -index 56ae612ea..fc376c659 100644 ---- a/cmake/c_check.cmake -+++ b/cmake/c_check.cmake -@@ -84,7 +84,7 @@ endif () - - string(TOUPPER ${ARCH} UC_ARCH) - --file(WRITE ${TARGET_CONF} -+file(WRITE ${TARGET_CONF_TEMP} - "#define OS_${HOST_OS}\t1\n" - "#define ARCH_${UC_ARCH}\t1\n" - "#define C_${COMPILER_ID}\t1\n" -@@ -92,7 +92,7 @@ file(WRITE ${TARGET_CONF} - "#define FUNDERSCORE\t${FU}\n") - - if (${HOST_OS} STREQUAL "WINDOWSSTORE") -- file(APPEND ${TARGET_CONF} -+ file(APPEND ${TARGET_CONF_TEMP} - "#define OS_WINNT\t1\n") - endif () - -diff --git a/cmake/f_check.cmake b/cmake/f_check.cmake -index e8fe4bfa7..6eee027a5 100644 ---- a/cmake/f_check.cmake -+++ b/cmake/f_check.cmake -@@ -44,7 +44,7 @@ if (NOT ONLY_CBLAS) - # TODO: set FEXTRALIB flags a la f_check? - - set(BU "_") -- file(APPEND ${TARGET_CONF} -+ file(APPEND ${TARGET_CONF_TEMP} - "#define BUNDERSCORE _\n" - "#define NEEDBUNDERSCORE 1\n" - "#define NEED2UNDERSCORES 0\n") -@@ -56,7 +56,7 @@ else () - set(NO_FBLAS 1) - #set(F_COMPILER GFORTRAN) # CMake handles the fortran compiler - set(BU "_") -- file(APPEND ${TARGET_CONF} -+ file(APPEND ${TARGET_CONF_TEMP} - "#define BUNDERSCORE _\n" - "#define NEEDBUNDERSCORE 1\n") - endif() -diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake -index a7f98bfb8..422d4cb37 100644 ---- a/cmake/prebuild.cmake -+++ b/cmake/prebuild.cmake -@@ -51,6 +51,7 @@ else() - set(TARGET_CONF "config.h") - endif () - -+set(TARGET_CONF_TEMP "${TARGET_CONF}.tmp") - include("${PROJECT_SOURCE_DIR}/cmake/c_check.cmake") - - if (NOT NOFORTRAN) -@@ -80,10 +81,11 @@ endif () - set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build") - set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}") - file(MAKE_DIRECTORY ${GETARCH_DIR}) -+configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY) - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - try_compile(GETARCH_RESULT ${GETARCH_DIR} - SOURCES ${GETARCH_SRC} -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${PROJECT_SOURCE_DIR} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} - OUTPUT_VARIABLE GETARCH_LOG - COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} - ) -@@ -101,16 +103,17 @@ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 1 OUTPUT_VARIABLE G - message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}") - - # append config data from getarch to the TARGET file and read in CMake vars --file(APPEND ${TARGET_CONF} ${GETARCH_CONF_OUT}) -+file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT}) - ParseGetArchVars(${GETARCH_MAKE_OUT}) - - set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build") - set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}") - file(MAKE_DIRECTORY ${GETARCH2_DIR}) -+configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY) - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - try_compile(GETARCH2_RESULT ${GETARCH2_DIR} - SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${PROJECT_SOURCE_DIR} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} - OUTPUT_VARIABLE GETARCH2_LOG - COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} - ) -@@ -125,7 +128,8 @@ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 0 OUTPUT_VARIABLE - execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) - - # append config data from getarch_2nd to the TARGET file and read in CMake vars --file(APPEND ${TARGET_CONF} ${GETARCH2_CONF_OUT}) -+file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) -+configure_file(${TARGET_CONF_TEMP} ${TARGET_CONF} COPYONLY) - ParseGetArchVars(${GETARCH2_MAKE_OUT}) - - # compile get_config_h -@@ -145,4 +149,4 @@ if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - if (NOT ${GEN_CONFIG_H_RESULT}) - MESSAGE(FATAL_ERROR "Compiling gen_config_h failed ${GEN_CONFIG_H_LOG}") - endif () --endif () -\ No newline at end of file -+endif () -diff --git a/cmake/utils.cmake b/cmake/utils.cmake -index 6e2a98069..f20ce0533 100644 ---- a/cmake/utils.cmake -+++ b/cmake/utils.cmake -@@ -234,7 +234,9 @@ function(GenerateNamedObjects sources_in) - - string(REPLACE ";" "\n#define " define_source "${obj_defines}") - string(REPLACE "=" " " define_source "${define_source}") -- file(WRITE ${new_source_file} "#define ${define_source}\n#include \"${old_source_file}\"") -+ file(WRITE ${new_source_file}.tmp "#define ${define_source}\n#include \"${old_source_file}\"") -+ configure_file(${new_source_file}.tmp ${new_source_file} COPYONLY) -+ file(REMOVE ${new_source_file}.tmp) - list(APPEND SRC_LIST_OUT ${new_source_file}) - - endforeach () - -From c9c13a8a0c7b6aca3d26b2249702e711d7d1e95f Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Tue, 1 Aug 2017 14:58:49 +0530 -Subject: [PATCH 2/5] Fix installing cblas.h and fix tabs - ---- - CMakeLists.txt | 33 ++++++++++++++++----------------- - 1 file changed, 16 insertions(+), 17 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 45111ce30..e75f915c2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -232,34 +232,33 @@ install(TARGETS ${OpenBLAS_LIBNAME} - # Install include files - set (GENCONFIG_BIN ${CMAKE_BINARY_DIR}/gen_config_h${CMAKE_EXECUTABLE_SUFFIX}) - -- execute_process(COMMAND ${GENCONFIG_BIN} -- ${CMAKE_CURRENT_SOURCE_DIR}/config.h -- ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h -- OUTPUT_VARIABLE OPENBLAS_CONFIG_H_CONTENTS) -+ execute_process(COMMAND ${GENCONFIG_BIN} -+ ${CMAKE_CURRENT_SOURCE_DIR}/config.h -+ ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h -+ OUTPUT_VARIABLE OPENBLAS_CONFIG_H_CONTENTS) - -- file(WRITE ${CMAKE_BINARY_DIR}/openblas_config.tmp "${OPENBLAS_CONFIG_H_CONTENTS}") -- configure_file(${CMAKE_BINARY_DIR}/openblas_config.tmp ${CMAKE_BINARY_DIR}/openblas_config.h COPYONLY) -+ file(WRITE ${CMAKE_BINARY_DIR}/openblas_config.tmp "${OPENBLAS_CONFIG_H_CONTENTS}") -+ configure_file(${CMAKE_BINARY_DIR}/openblas_config.tmp ${CMAKE_BINARY_DIR}/openblas_config.h COPYONLY) - - install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") - -- file(WRITE ${CMAKE_BINARY_DIR}/f77blas.tmp "") -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") -- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "${COMMON_INTERFACE_H_CONTENTS}") -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#endif") -- configure_file(${CMAKE_BINARY_DIR}/f77blas.tmp ${CMAKE_BINARY_DIR}/f77blas.h COPYONLY) -+ file(WRITE ${CMAKE_BINARY_DIR}/f77blas.tmp "") -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "${COMMON_INTERFACE_H_CONTENTS}") -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#endif") -+ configure_file(${CMAKE_BINARY_DIR}/f77blas.tmp ${CMAKE_BINARY_DIR}/f77blas.h COPYONLY) - install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - if(NOT NO_CBLAS) - message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") - -- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h CBLAS_H_CONTENTS) -- string(REPLACE "common" "openblas_config" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS}") -- file(WRITE ${CMAKE_BINARY_DIR}/cblas.tmp "${CBLAS_H_CONTENTS_NEW}") -- configure_file(${CMAKE_BINARY_DIR}/cblas.tmp ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h COPYONLY) -- install (FILES ${CMAKE_BINARY_DIR}/cblas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cblas.h CBLAS_H_CONTENTS) -+ string(REPLACE "common" "openblas_config" CBLAS_H_CONTENTS_NEW "${CBLAS_H_CONTENTS}") -+ file(WRITE ${CMAKE_BINARY_DIR}/cblas.tmp "${CBLAS_H_CONTENTS_NEW}") -+ install (FILES ${CMAKE_BINARY_DIR}/cblas.tmp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} RENAME cblas.h) - endif() - - if(NOT NO_LAPACKE) - -From d245caa49a6f41a90a77ed885e526838132ddec3 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Tue, 1 Aug 2017 15:10:41 +0530 -Subject: [PATCH 3/5] Support out-of-source build - ---- - cmake/prebuild.cmake | 8 ++++---- - ctest/CMakeLists.txt | 1 + - driver/level2/CMakeLists.txt | 1 + - driver/level3/CMakeLists.txt | 1 + - driver/others/CMakeLists.txt | 1 + - interface/CMakeLists.txt | 1 + - kernel/CMakeLists.txt | 1 + - lapack/CMakeLists.txt | 1 + - test/CMakeLists.txt | 3 ++- - utest/CMakeLists.txt | 3 ++- - 10 files changed, 15 insertions(+), 6 deletions(-) - -diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake -index 422d4cb37..21dc7a380 100644 ---- a/cmake/prebuild.cmake -+++ b/cmake/prebuild.cmake -@@ -51,7 +51,7 @@ else() - set(TARGET_CONF "config.h") - endif () - --set(TARGET_CONF_TEMP "${TARGET_CONF}.tmp") -+set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp") - include("${PROJECT_SOURCE_DIR}/cmake/c_check.cmake") - - if (NOT NOFORTRAN) -@@ -85,7 +85,7 @@ configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY) - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - try_compile(GETARCH_RESULT ${GETARCH_DIR} - SOURCES ${GETARCH_SRC} -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} - OUTPUT_VARIABLE GETARCH_LOG - COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} - ) -@@ -113,7 +113,7 @@ configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY) - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - try_compile(GETARCH2_RESULT ${GETARCH2_DIR} - SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} - OUTPUT_VARIABLE GETARCH2_LOG - COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} - ) -@@ -129,7 +129,7 @@ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE - - # append config data from getarch_2nd to the TARGET file and read in CMake vars - file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) --configure_file(${TARGET_CONF_TEMP} ${TARGET_CONF} COPYONLY) -+configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/${TARGET_CONF} COPYONLY) - ParseGetArchVars(${GETARCH2_MAKE_OUT}) - - # compile get_config_h -diff --git a/ctest/CMakeLists.txt b/ctest/CMakeLists.txt -index addcffeac..73070d429 100644 ---- a/ctest/CMakeLists.txt -+++ b/ctest/CMakeLists.txt -@@ -1,4 +1,5 @@ - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - enable_language(Fortran) - -diff --git a/driver/level2/CMakeLists.txt b/driver/level2/CMakeLists.txt -index f444469bd..aa5f03107 100644 ---- a/driver/level2/CMakeLists.txt -+++ b/driver/level2/CMakeLists.txt -@@ -1,5 +1,6 @@ - - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - # sources that need to be compiled twice, once with no flags and once with LOWER - set(UL_SOURCES -diff --git a/driver/level3/CMakeLists.txt b/driver/level3/CMakeLists.txt -index 36677a942..c91e85f9c 100644 ---- a/driver/level3/CMakeLists.txt -+++ b/driver/level3/CMakeLists.txt -@@ -1,4 +1,5 @@ - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - # N.B. In the original makefile there was a BLOCKS define used in the compilation of these files but I don't see any evidence of it being set anywhere. -hpa - -diff --git a/driver/others/CMakeLists.txt b/driver/others/CMakeLists.txt -index 8e0be1e0e..376cc66c4 100644 ---- a/driver/others/CMakeLists.txt -+++ b/driver/others/CMakeLists.txt -@@ -1,4 +1,5 @@ - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - if (${CORE} STREQUAL "PPC440") - set(MEMORY memory_qalloc.c) -diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt -index 1722dc661..8b25344c0 100644 ---- a/interface/CMakeLists.txt -+++ b/interface/CMakeLists.txt -@@ -1,5 +1,6 @@ - - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - - set(BLAS1_SOURCES -diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt -index 8bfcccf17..0c3569259 100644 ---- a/kernel/CMakeLists.txt -+++ b/kernel/CMakeLists.txt -@@ -1,5 +1,6 @@ - - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - include("${PROJECT_SOURCE_DIR}/cmake/kernel.cmake") - - # Makefile -diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt -index afd583c11..b613c6c2b 100644 ---- a/lapack/CMakeLists.txt -+++ b/lapack/CMakeLists.txt -@@ -1,5 +1,6 @@ - - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - - set(LAPACK_SOURCES -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 5e9baf928..69a1ceb91 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -1,4 +1,5 @@ - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - enable_language(Fortran) - -@@ -35,4 +36,4 @@ add_test(NAME "${float_type}blas2" - COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/${float_type}blat2" "${PROJECT_SOURCE_DIR}/test/${float_type}blat2.dat" ${float_type_upper}BLAT2.SUMM) - add_test(NAME "${float_type}blas3" - COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/${float_type}blat3" "${PROJECT_SOURCE_DIR}/test/${float_type}blat3.dat" ${float_type_upper}BLAT3.SUMM) --endforeach() -\ No newline at end of file -+endforeach() -diff --git a/utest/CMakeLists.txt b/utest/CMakeLists.txt -index bd31ed9c6..e52fb2c90 100644 ---- a/utest/CMakeLists.txt -+++ b/utest/CMakeLists.txt -@@ -1,4 +1,5 @@ - include_directories(${PROJECT_SOURCE_DIR}) -+include_directories(${PROJECT_BINARY_DIR}) - - set(OpenBLAS_utest_src - utest_main.c -@@ -39,4 +40,4 @@ add_custom_command(TARGET ${OpenBLAS_utest_bin} - ) - endif() - --add_test(${OpenBLAS_utest_bin} ${CMAKE_CURRENT_BINARY_DIR}/${OpenBLAS_utest_bin}) -\ No newline at end of file -+add_test(${OpenBLAS_utest_bin} ${CMAKE_CURRENT_BINARY_DIR}/${OpenBLAS_utest_bin}) - -From 8381591f5601afca6648031d7daa9406cf183091 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Tue, 1 Aug 2017 15:27:19 +0530 -Subject: [PATCH 4/5] No need of a temp file for f77blas.h - ---- - CMakeLists.txt | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e75f915c2..16bce3526 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -244,12 +244,11 @@ install(TARGETS ${OpenBLAS_LIBNAME} - - message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") - -- file(WRITE ${CMAKE_BINARY_DIR}/f77blas.tmp "") -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") -+ file(WRITE ${CMAKE_BINARY_DIR}/f77blas.h "") -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "${COMMON_INTERFACE_H_CONTENTS}") -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.tmp "#endif") -- configure_file(${CMAKE_BINARY_DIR}/f77blas.tmp ${CMAKE_BINARY_DIR}/f77blas.h COPYONLY) -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "${COMMON_INTERFACE_H_CONTENTS}") -+ file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#endif") - install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - - if(NOT NO_CBLAS) - -From 89ec2be11099b84c02e7dbd22f5bb10824601bfb Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Tue, 1 Aug 2017 15:47:14 +0530 -Subject: [PATCH 5/5] Fix lapacke copying - ---- - cmake/lapacke.cmake | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cmake/lapacke.cmake b/cmake/lapacke.cmake -index f56a22886..fd5aee134 100644 ---- a/cmake/lapacke.cmake -+++ b/cmake/lapacke.cmake -@@ -2391,6 +2391,6 @@ foreach (Utils_FILE ${Utils_SRC}) - endforeach () - - set(lapacke_include_dir "${NETLIB_LAPACK_DIR}/LAPACKE/include") --execute_process(COMMAND ${CMAKE_COMMAND} -E copy "${lapacke_include_dir}/lapacke_mangling_with_flags.h.in" "${lapacke_include_dir}/lapacke_mangling.h") -+configure_file("${lapacke_include_dir}/lapacke_mangling_with_flags.h.in" "${lapacke_include_dir}/lapacke_mangling.h" COPYONLY) - include_directories(${lapacke_include_dir}) - set_source_files_properties(${LAPACKE_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_CFLAGS}") diff --git a/recipe/gh_1264.patch b/recipe/gh_1264.patch deleted file mode 100644 index 7f72681..0000000 --- a/recipe/gh_1264.patch +++ /dev/null @@ -1,1192 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 16bce35..a91ea5f 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -27,6 +27,7 @@ option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON - endif() - option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF) - option(BUILD_DEBUG "Build Debug Version" OFF) -+option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF) - ####### - if(BUILD_WITHOUT_LAPACK) - set(NO_LAPACK 1) -@@ -153,6 +154,22 @@ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") - endif() - -+#ifeq ($(DYNAMIC_ARCH), 1) -+# @$(MAKE) -C kernel commonlibs || exit 1 -+# @for d in $(DYNAMIC_CORE) ; \ -+# do $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\ -+# done -+# @echo DYNAMIC_ARCH=1 >> Makefile.conf_last -+#endif -+if (${DYNAMIC_ARCH}) -+ add_subdirectory(kernel) -+ foreach(TARGET_CORE ${DYNAMIC_CORE}) -+ message("${TARGET_CORE}") -+ list(APPEND TARGET_OBJS "$") -+ endforeach() -+endif () -+ -+ - # add objects to the openblas lib - add_library(${OpenBLAS_LIBNAME} SHARED ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE}) - -@@ -209,13 +226,7 @@ set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES - # @echo "#define EXPRECISION">> config_last.h - #endif - ### --#ifeq ($(DYNAMIC_ARCH), 1) --# @$(MAKE) -C kernel commonlibs || exit 1 --# @for d in $(DYNAMIC_CORE) ; \ --# do $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\ --# done --# @echo DYNAMIC_ARCH=1 >> Makefile.conf_last --#endif -+ - #ifdef USE_THREAD - # @echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last - #endif -diff --git a/appveyor.yml b/appveyor.yml -index 087b226..1c0474d 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -26,6 +26,8 @@ skip_commits: - environment: - matrix: - - COMPILER: clang-cl -+ DYNAMIC_ARCH: ON -+ - COMPILER: clang-cl - - COMPILER: cl - - install: -@@ -39,6 +41,7 @@ before_build: - - cd c:\projects\OpenBLAS - - if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" . - - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl . -+ - if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON . - - build_script: - - cmake --build . -diff --git a/cmake/arch.cmake b/cmake/arch.cmake -index d32d4fc..5b897d8 100644 ---- a/cmake/arch.cmake -+++ b/cmake/arch.cmake -@@ -64,16 +64,16 @@ endif () - - if (DYNAMIC_ARCH) - if (${ARCH} STREQUAL "x86") -- set(DYNAMIC_CORE "KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO") -+ set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) - endif () - - if (${ARCH} STREQUAL "x86_64") -- set(DYNAMIC_CORE "PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO") -+ set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) - if (NOT NO_AVX) -- set(DYNAMIC_CORE "${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER") -+ set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR) - endif () - if (NOT NO_AVX2) -- set(DYNAMIC_CORE "${DYNAMIC_CORE} HASWELL ZEN") -+ set(DYNAMIC_CORE ${DYNAMIC_CORE} HASWELL ZEN) - endif () - endif () - -diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake -index 2ed9f6c..2c262b0 100644 ---- a/cmake/prebuild.cmake -+++ b/cmake/prebuild.cmake -@@ -46,9 +46,11 @@ if (DEFINED TARGET_CORE) - set(GETARCH2_FLAGS "-DBUILD_KERNEL") - set(TARGET_MAKE "Makefile_kernel.conf") - set(TARGET_CONF "config_kernel.h") -+ set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}) - else() - set(TARGET_MAKE "Makefile.conf") - set(TARGET_CONF "config.h") -+ set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) - endif () - - set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp") -@@ -128,7 +130,13 @@ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE - - # append config data from getarch_2nd to the TARGET file and read in CMake vars - file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) --configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/${TARGET_CONF} COPYONLY) -+ -+if (${BUILD_KERNEL}) -+ configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}/${TARGET_CONF} COPYONLY) -+else () -+ configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/${TARGET_CONF} COPYONLY) -+endif () -+ - ParseGetArchVars(${GETARCH2_MAKE_OUT}) - - # compile get_config_h -diff --git a/cmake/system.cmake b/cmake/system.cmake -index 75c8e9c..3d32707 100644 ---- a/cmake/system.cmake -+++ b/cmake/system.cmake -@@ -2,7 +2,6 @@ - ## Author: Hank Anderson - ## Description: Ported from OpenBLAS/Makefile.system - ## -- - set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib") - - # TODO: Makefile.system detects Darwin (mac) and switches to clang here -hpa -diff --git a/cmake/utils.cmake b/cmake/utils.cmake -index f20ce05..28ef65f 100644 ---- a/cmake/utils.cmake -+++ b/cmake/utils.cmake -@@ -202,6 +202,8 @@ function(GenerateNamedObjects sources_in) - if (use_cblas) - set(obj_name "cblas_${obj_name}") - list(APPEND obj_defines "CBLAS") -+ elseif (NOT "${obj_name}" MATCHES "${ARCH_SUFFIX}") -+ set(obj_name "${obj_name}${ARCH_SUFFIX}") - endif () - - list(APPEND obj_defines "ASMNAME=${FU}${obj_name};ASMFNAME=${FU}${obj_name}${BU};NAME=${obj_name}${BU};CNAME=${obj_name};CHAR_NAME=\"${obj_name}${BU}\";CHAR_CNAME=\"${obj_name}\"") -diff --git a/driver/others/dynamic.c b/driver/others/dynamic.c -index e1e159d..fbf7cd4 100644 ---- a/driver/others/dynamic.c -+++ b/driver/others/dynamic.c -@@ -38,6 +38,10 @@ - - #include "common.h" - -+#ifdef _MSC_VER -+#define strncasecmp _strnicmp -+#define strcasecmp _stricmp -+#endif - - #ifdef ARCH_X86 - #define EXTERN extern -diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt -index 0dc42a0..849ef21 100644 ---- a/kernel/CMakeLists.txt -+++ b/kernel/CMakeLists.txt -@@ -1,451 +1,515 @@ - - include_directories(${PROJECT_SOURCE_DIR}) --include_directories(${PROJECT_BINARY_DIR}) --include("${PROJECT_SOURCE_DIR}/cmake/kernel.cmake") - - # Makefile -- --if (DEFINED TARGET_CORE) -- #override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -- set(BUILD_KERNEL 1) -- set(KDIR "") -- set(TSUFFIX "_${TARGET_CORE}") --else () -- set(TARGET_CORE ${CORE}) -- set(KDIR "") -- set(TSUFFIX "") --endif () -- --SetDefaultL1() --SetDefaultL2() --SetDefaultL3() --ParseMakefileVars("${KERNELDIR}/KERNEL") --ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}") -- --if (${ARCH} STREQUAL "x86") --if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") -- GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true) --else() -- GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true) --endif() --endif () -- --# don't use float type name mangling here --GenerateNamedObjects("${KERNELDIR}/${LSAME_KERNEL}" "F_INTERFACE" "lsame" false "" "" true) --GenerateNamedObjects("${KERNELDIR}/${SCABS_KERNEL}" "COMPLEX;F_INTERFACE" "scabs1" false "" "" true) --GenerateNamedObjects("${KERNELDIR}/${DCABS_KERNEL}" "DOUBLE;COMPLEX;F_INTERFACE" "dcabs1" false "" "" true) -- --# Makefile.L1 --foreach (float_type ${FLOAT_TYPES}) -- # a bit of metaprogramming here to pull out the appropriate KERNEL var -- string(SUBSTRING ${float_type} 0 1 float_char) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}AMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false ${float_type}) -- if (DEFINED ${float_char}MAXKERNEL) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}MAXKERNEL}" "" "max_k" false "" "" false ${float_type}) -- endif () -- if (DEFINED ${float_char}MINKERNEL) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}MINKERNEL}" "" "min_k" false "" "" false ${float_type}) -- endif () -- GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false ${float_type}) -- if (DEFINED I${float_char}MAXKERNEL) -- GenerateNamedObjects("${KERNELDIR}/${I${float_char}MAXKERNEL}" "" "i*max_k" false "" "" false ${float_type}) -- endif () -- if (DEFINED I${float_char}MINKERNEL) -- GenerateNamedObjects("${KERNELDIR}/${I${float_char}MINKERNEL}" "" "i*min_k" false "" "" false ${float_type}) -- endif () -- GenerateNamedObjects("${KERNELDIR}/${${float_char}ASUMKERNEL}" "" "asum_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "" "axpy_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}COPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}NRM2KERNEL}" "" "nrm2_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "rot_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}SCALKERNEL}" "" "scal_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}SWAPKERNEL}" "" "swap_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPBYKERNEL}" "" "axpby_k" false "" "" false ${float_type}) -- -- if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") -- GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dotu_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "CONJ" "dotc_k" false "" "" false ${float_type}) -- else () -- GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dot_k" false "" "" false ${float_type}) -- endif () -- -- if (${float_type} STREQUAL "COMPLEX") -- GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "srot_k" false "" "" false ${float_type}) -- endif() -- if (${float_type} STREQUAL "ZCOMPLEX") -- GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "drot_k" false "" "" false ${float_type}) -- endif() -- --endforeach () -- --#dsdot,sdsdot --GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "d*dot_k" false "" "" false "SINGLE") --GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "dsdot_k" false "" "" false "SINGLE") -- --# Makefile.L2 --GenerateCombinationObjects("generic/symv_k.c" "LOWER" "U" "" 1 "" "" 3) --GenerateNamedObjects("generic/ger.c" "" "ger_k" false "" "" "" 3) --foreach (float_type ${FLOAT_TYPES}) -- string(SUBSTRING ${float_type} 0 1 float_char) -- if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "" "geru_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ" "gerc_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "XCONJ" "gerv_k" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ;XCONJ" "gerd_k" false "" "" false ${float_type}) -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false ${float_type}) -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_U_KERNEL}" "HEMV" "hemv_U" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_L_KERNEL}" "HEMV;LOWER" "hemv_L" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_V_KERNEL}" "HEMV;HEMVREV" "hemv_V" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_M_KERNEL}" "HEMV;HEMVREV;LOWER" "hemv_M" false "" "" false ${float_type}) -- -- else () -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false ${float_type}) -- endif () --endforeach () -- --# Makefile.L3 --set(USE_TRMM false) -- --if (${ARCH} STREQUAL "arm" OR ${ARCH} STREQUAL "arm64" OR "${TARGET}" STREQUAL "LONGSOON3B" OR "${TARGET}" STREQUAL "GENERIC" OR "${CORE}" STREQUAL "generic" OR "${TARGET}" STREQUAL "HASWELL" OR "${CORE}" STREQUAL "haswell" OR "{CORE}" STREQUAL "zen") -- set(USE_TRMM true) --endif () -- --foreach (float_type ${FLOAT_TYPES}) -- string(SUBSTRING ${float_type} 0 1 float_char) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "" "gemm_kernel" false "" "" false ${float_type}) -- -- if (${float_char}GEMMINCOPY) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMINCOPY}" "${float_type}" "${${float_char}GEMMINCOPYOBJ}" false "" "" true ${float_type}) -- endif () -- -- if (${float_char}GEMMITCOPY) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMITCOPY}" "${float_type}" "${${float_char}GEMMITCOPYOBJ}" false "" "" true ${float_type}) -- endif () -- -- if (${float_char}GEMMONCOPY) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMONCOPY}" "${float_type}" "${${float_char}GEMMONCOPYOBJ}" false "" "" true ${float_type}) -- endif () -- -- if (${float_char}GEMMOTCOPY) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMOTCOPY}" "${float_type}" "${${float_char}GEMMOTCOPYOBJ}" false "" "" true ${float_type}) -- endif () -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_BETA}" "" "gemm_beta" false "" "" false ${float_type}) -- -- if (USE_TRMM) -- set(TRMM_KERNEL "${${float_char}TRMMKERNEL}") -- else () -- set(TRMM_KERNEL "${${float_char}GEMMKERNEL}") -- endif () -- -- if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") -- -- # just enumerate all these. there is an extra define for these indicating which side is a conjugate (e.g. CN NC NN) that I don't really want to work into GenerateCombinationObjects -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false ${float_type}) -- -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;NN" "trmm_kernel_LN" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;NN" "trmm_kernel_LT" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;CONJ;CN" "trmm_kernel_LR" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;CONJ;CN" "trmm_kernel_LC" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;NN" "trmm_kernel_RN" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;NN" "trmm_kernel_RT" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;CONJ;NC" "trmm_kernel_RR" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;CONJ;NC" "trmm_kernel_RC" false "" "" false ${float_type}) -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false ${float_type}) -- -- -- #hemm -- GenerateNamedObjects("generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "hemm_iutcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "hemm_iltcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "hemm_outcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "hemm_oltcopy" false "" "" false ${float_type}) -- -- # symm for c and z -- GenerateNamedObjects("generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_M}.c" "" "symm_iutcopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "symm_iltcopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iunncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iutncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) -- -- #gemm3m -- if (USE_GEMM3M) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM3MKERNEL}" "NN" "gemm3m_kernel" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_oncopyb" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_oncopyr" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_oncopyi" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_otcopyb" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_otcopyr" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_otcopyi" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_incopyb" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_incopyr" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_incopyi" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_itcopyb" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_itcopyr" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_itcopyi" false "" "" false ${float_type}) -- -- endif() -- -- else () #For real -- GenerateCombinationObjects("${KERNELDIR}/${TRMM_KERNEL}" "LEFT;TRANSA" "R;N" "TRMMKERNEL" 2 "trmm_kernel" false ${float_type}) -- -- # symm for s and d -- GenerateNamedObjects("generic/symm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/symm_ucopy_${${float_char}GEMM_UNROLL_M}.c" "" "symm_iutcopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/symm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/symm_lcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "symm_iltcopy" false "" "" false ${float_type}) -- -- # These don't use a scheme that is easy to iterate over - the filenames have part of the DEFINE codes in them, for UPPER/TRANS but not for UNIT/OUTER. Also TRANS is not passed in as a define. -- # Could simplify it a bit by pairing up by -UUNIT/-DUNIT. -- -- GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iunncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iutncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) -- -- GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) -- GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) -- -- endif () -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false ${float_type}) -- -- -- -- if (NOT DEFINED ${float_char}OMATCOPY_CN) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_CN ../arm/zomatcopy_cn.c) -- else () -- set(${float_char}OMATCOPY_CN ../arm/omatcopy_cn.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}OMATCOPY_RN) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_RN ../arm/zomatcopy_rn.c) -- else () -- set(${float_char}OMATCOPY_RN ../arm/omatcopy_rn.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}OMATCOPY_CT) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_CT ../arm/zomatcopy_ct.c) -- else () -- set(${float_char}OMATCOPY_CT ../arm/omatcopy_ct.c) -+function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) -+ set (OPENBLAS_SRC "") -+ set (ARCH_SUFFIX "") -+ include("${PROJECT_SOURCE_DIR}/cmake/kernel.cmake") -+ if (${DYNAMIC_ARCH}) -+ include("${PROJECT_SOURCE_DIR}/cmake/system.cmake") - endif () -- endif () -- if (NOT DEFINED ${float_char}OMATCOPY_RT) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_RT ../arm/zomatcopy_rt.c) -- else () -- set(${float_char}OMATCOPY_RT ../arm/omatcopy_rt.c) -+ SetDefaultL1() -+ SetDefaultL2() -+ SetDefaultL3() -+ ParseMakefileVars("${KERNELDIR}/KERNEL") -+ ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}") -+ -+ set(KERNEL_INTERFACE common_level1.h common_level2.h common_level3.h) -+ if(NOT ${NO_LAPACK}) -+ set(KERNEL_INTERFACE ${KERNEL_INTERFACE} common_lapack.h) - endif () -- endif () - -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CN}" "" "omatcopy_k_cn" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RN}" "ROWM" "omatcopy_k_rn" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CT}" "" "omatcopy_k_ct" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RT}" "ROWM" "omatcopy_k_rt" false "" "" false ${float_type}) -- -- if (NOT DEFINED ${float_char}OMATCOPY_CNC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_CNC ../arm/zomatcopy_cnc.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}OMATCOPY_RNC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_RNC ../arm/zomatcopy_rnc.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}OMATCOPY_CTC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_CTC ../arm/zomatcopy_ctc.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}OMATCOPY_RTC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}OMATCOPY_RTC ../arm/zomatcopy_rtc.c) -- endif () -- endif () -- -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CNC}" "CONJ" "omatcopy_k_cnc" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RNC}" "CONJ;ROWM" "omatcopy_k_rnc" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CTC}" "CONJ" "omatcopy_k_ctc" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${float_type}) -- endif() -- -- #imatcopy -- if (NOT DEFINED ${float_char}IMATCOPY_CN) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_CN ../generic/zimatcopy_cn.c) -- else () -- set(${float_char}IMATCOPY_CN ../generic/imatcopy_cn.c) -- endif () -- endif () -- -- if (NOT DEFINED ${float_char}IMATCOPY_RN) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_RN ../generic/zimatcopy_rn.c) -- else () -- set(${float_char}IMATCOPY_RN ../generic/imatcopy_rn.c) -+ if (${ADD_COMMONOBJS}) -+ if (${ARCH} STREQUAL "x86") -+ if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") -+ GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true) -+ else() -+ GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true) -+ endif() -+ endif () -+ -+ # don't use float type name mangling here -+ GenerateNamedObjects("${KERNELDIR}/${LSAME_KERNEL}" "F_INTERFACE" "lsame" false "" "" true "") -+ GenerateNamedObjects("${KERNELDIR}/${SCABS_KERNEL}" "COMPLEX;F_INTERFACE" "scabs1" false "" "" true "") -+ GenerateNamedObjects("${KERNELDIR}/${DCABS_KERNEL}" "DOUBLE;COMPLEX;F_INTERFACE" "dcabs1" false "" "" true "") - endif () -- endif () - -- if (NOT DEFINED ${float_char}IMATCOPY_CT) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_CT ../generic/zimatcopy_ct.c) -- else () -- set(${float_char}IMATCOPY_CT ../generic/imatcopy_ct.c) -+ # Run with no ARCH_SUFFIX for above -+ set (ARCH_SUFFIX "${TSUFFIX}") -+ # Makefile.L1 -+ foreach (float_type ${FLOAT_TYPES}) -+ # a bit of metaprogramming here to pull out the appropriate KERNEL var -+ string(SUBSTRING ${float_type} 0 1 float_char) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}AMAXKERNEL}" "USE_ABS" "amax_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "amin_k" false "" "" false ${float_type}) -+ if (DEFINED ${float_char}MAXKERNEL) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}MAXKERNEL}" "" "max_k" false "" "" false ${float_type}) -+ endif () -+ if (DEFINED ${float_char}MINKERNEL) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}MINKERNEL}" "" "min_k" false "" "" false ${float_type}) -+ endif () -+ GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMAXKERNEL}" "USE_ABS" "i*amax_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${I${float_char}AMINKERNEL}" "USE_ABS;USE_MIN" "i*amin_k" false "" "" false ${float_type}) -+ if (DEFINED I${float_char}MAXKERNEL) -+ GenerateNamedObjects("${KERNELDIR}/${I${float_char}MAXKERNEL}" "" "i*max_k" false "" "" false ${float_type}) -+ endif () -+ if (DEFINED I${float_char}MINKERNEL) -+ GenerateNamedObjects("${KERNELDIR}/${I${float_char}MINKERNEL}" "" "i*min_k" false "" "" false ${float_type}) -+ endif () -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}ASUMKERNEL}" "" "asum_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "" "axpy_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}COPYKERNEL}" "C_INTERFACE" "copy_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}NRM2KERNEL}" "" "nrm2_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "rot_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}SCALKERNEL}" "" "scal_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}SWAPKERNEL}" "" "swap_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPBYKERNEL}" "" "axpby_k" false "" "" false ${float_type}) -+ -+ if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}AXPYKERNEL}" "CONJ" "axpyc_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dotu_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "CONJ" "dotc_k" false "" "" false ${float_type}) -+ else () -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}DOTKERNEL}" "" "dot_k" false "" "" false ${float_type}) -+ endif () -+ -+ if (${float_type} STREQUAL "COMPLEX") -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "srot_k" false "" "" false ${float_type}) -+ endif() -+ if (${float_type} STREQUAL "ZCOMPLEX") -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}ROTKERNEL}" "" "drot_k" false "" "" false ${float_type}) -+ endif() -+ -+ endforeach () -+ -+ #dsdot,sdsdot -+ GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "d*dot_k" false "" "" false "SINGLE") -+ GenerateNamedObjects("${KERNELDIR}/${DSDOTKERNEL}" "DSDOT" "dsdot_k" false "" "" false "SINGLE") -+ -+ # Makefile.L2 -+ GenerateCombinationObjects("generic/symv_k.c" "LOWER" "U" "" 1 "" "" 3) -+ GenerateNamedObjects("generic/ger.c" "" "ger_k" false "" "" "" 3) -+ foreach (float_type ${FLOAT_TYPES}) -+ string(SUBSTRING ${float_type} 0 1 float_char) -+ if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "" "geru_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ" "gerc_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GERUKERNEL}" "XCONJ" "gerv_k" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GERCKERNEL}" "CONJ;XCONJ" "gerd_k" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANSA" "gemv_t" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "CONJ" "gemv_r" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "CONJ;TRANSA" "gemv_c" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ" "gemv_o" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;TRANSA" "gemv_u" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "XCONJ;CONJ" "gemv_s" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "XCONJ;CONJ;TRANSA" "gemv_d" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_U_KERNEL}" "HEMV" "hemv_U" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_L_KERNEL}" "HEMV;LOWER" "hemv_L" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_V_KERNEL}" "HEMV;HEMVREV" "hemv_V" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}HEMV_M_KERNEL}" "HEMV;HEMVREV;LOWER" "hemv_M" false "" "" false ${float_type}) -+ -+ else () -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVNKERNEL}" "" "gemv_n" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMVTKERNEL}" "TRANS" "gemv_t" false "" "" false ${float_type}) -+ endif () -+ endforeach () -+ -+ # Makefile.L3 -+ set(USE_TRMM false) -+ -+ if (${ARCH} STREQUAL "arm" OR ${ARCH} STREQUAL "arm64" OR "${TARGET}" STREQUAL "LONGSOON3B" OR "${TARGET}" STREQUAL "GENERIC" OR "${CORE}" STREQUAL "generic" OR "${TARGET}" STREQUAL "HASWELL" OR "${CORE}" STREQUAL "haswell" OR "{CORE}" STREQUAL "zen") -+ set(USE_TRMM true) - endif () -- endif () - -- if (NOT DEFINED ${float_char}IMATCOPY_RT) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_RT ../generic/zimatcopy_rt.c) -- else () -- set(${float_char}IMATCOPY_RT ../generic/imatcopy_rt.c) -+ foreach (float_type ${FLOAT_TYPES}) -+ string(SUBSTRING ${float_type} 0 1 float_char) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "" "gemm_kernel" false "" "" false ${float_type}) -+ -+ if (${float_char}GEMMINCOPY) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMINCOPY}" "${float_type}" "${${float_char}GEMMINCOPYOBJ}" false "" "" true ${float_type}) -+ endif () -+ -+ if (${float_char}GEMMITCOPY) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMITCOPY}" "${float_type}" "${${float_char}GEMMITCOPYOBJ}" false "" "" true ${float_type}) -+ endif () -+ -+ if (${float_char}GEMMONCOPY) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMONCOPY}" "${float_type}" "${${float_char}GEMMONCOPYOBJ}" false "" "" true ${float_type}) -+ endif () -+ -+ if (${float_char}GEMMOTCOPY) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMOTCOPY}" "${float_type}" "${${float_char}GEMMOTCOPYOBJ}" false "" "" true ${float_type}) -+ endif () -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM_BETA}" "" "gemm_beta" false "" "" false ${float_type}) -+ -+ if (USE_TRMM) -+ set(TRMM_KERNEL "${${float_char}TRMMKERNEL}") -+ else () -+ set(TRMM_KERNEL "${${float_char}GEMMKERNEL}") -+ endif () -+ -+ if (${float_type} STREQUAL "COMPLEX" OR ${float_type} STREQUAL "ZCOMPLEX") -+ -+ # just enumerate all these. there is an extra define for these indicating which side is a conjugate (e.g. CN NC NN) that I don't really want to work into GenerateCombinationObjects -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NN" "gemm_kernel_n" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CN" "gemm_kernel_l" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "NC" "gemm_kernel_r" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMMKERNEL}" "CC" "gemm_kernel_b" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;NN" "trmm_kernel_LN" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;NN" "trmm_kernel_LT" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;CONJ;CN" "trmm_kernel_LR" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;LEFT;TRANSA;CONJ;CN" "trmm_kernel_LC" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;NN" "trmm_kernel_RN" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;NN" "trmm_kernel_RT" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;CONJ;NC" "trmm_kernel_RR" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${TRMM_KERNEL}" "TRMMKERNEL;TRANSA;CONJ;NC" "trmm_kernel_RC" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL;CONJ" "trsm_kernel_LR" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL;CONJ" "trsm_kernel_LC" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL;CONJ" "trsm_kernel_RR" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL;CONJ" "trsm_kernel_RC" false "" "" false ${float_type}) -+ -+ -+ #hemm -+ GenerateNamedObjects("generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "hemm_iutcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "hemm_iltcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zhemm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "hemm_outcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zhemm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "hemm_oltcopy" false "" "" false ${float_type}) -+ -+ # symm for c and z -+ GenerateNamedObjects("generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zsymm_ucopy_${${float_char}GEMM_UNROLL_M}.c" "" "symm_iutcopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zsymm_lcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "symm_iltcopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iunncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iutncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/ztrsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) -+ -+ #gemm3m -+ if (USE_GEMM3M) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEMM3MKERNEL}" "NN" "gemm3m_kernel" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_oncopyb" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_oncopyr" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_oncopyi" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA" "gemm3m_otcopyb" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;REAL_ONLY" "gemm3m_otcopyr" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_N}.c" "USE_ALPHA;IMAGE_ONLY" "gemm3m_otcopyi" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_incopyb" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_incopyr" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_ncopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_incopyi" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY" "gemm3m_itcopyb" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;REAL_ONLY" "gemm3m_itcopyr" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/zgemm3m_tcopy_${${float_char}GEMM3M_UNROLL_M}.c" "ICOPY;IMAGE_ONLY" "gemm3m_itcopyi" false "" "" false ${float_type}) -+ -+#hemm3m and symm3m -+ foreach(name symm3m hemm3m) -+ GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_oucopyb.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_oucopyr.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_oucopyi.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA" "${name}_olcopyb.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;REAL_ONLY" "${name}_olcopyr.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "USE_ALPHA;IMAGE_ONLY" "${name}_olcopyi.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_iucopyb.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_iucopyr.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_ucopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_iucopyi.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "" "${name}_ilcopyb.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "REAL_ONLY" "${name}_ilcopyr.c" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/z${name}_lcopy_${${float_char}GEMM3M_UNROLL_M}.c" "IMAGE_ONLY" "${name}_ilcopyi.c" false "" "" false ${float_type}) -+ -+ endforeach () -+ -+ endif() -+ -+ else () #For real -+ GenerateCombinationObjects("${KERNELDIR}/${TRMM_KERNEL}" "LEFT;TRANSA" "R;N" "TRMMKERNEL" 2 "trmm_kernel" false ${float_type}) -+ -+ # symm for s and d -+ GenerateNamedObjects("generic/symm_ucopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "symm_outcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/symm_ucopy_${${float_char}GEMM_UNROLL_M}.c" "" "symm_iutcopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/symm_lcopy_${${float_char}GEMM_UNROLL_N}.c" "LOWER;OUTER" "symm_oltcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/symm_lcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "symm_iltcopy" false "" "" false ${float_type}) -+ -+ # These don't use a scheme that is easy to iterate over - the filenames have part of the DEFINE codes in them, for UPPER/TRANS but not for UNIT/OUTER. Also TRANS is not passed in as a define. -+ # Could simplify it a bit by pairing up by -UUNIT/-DUNIT. -+ -+ GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iunucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iunncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_ounucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_ounncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_ilnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_ilnncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_olnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_olnncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trmm_iutucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trmm_iutncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trmm_outucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trmm_outncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trmm_iltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trmm_iltncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trmm_oltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trmm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trmm_oltncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iunucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iunncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_ounucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_uncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_ounncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_ilnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_ilnncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_olnucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_lncopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_olnncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "UNIT" "trsm_iutucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_M}.c" "" "trsm_iutncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;UNIT" "trsm_outucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_utcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER" "trsm_outncopy" false "" "" false ${float_type}) -+ -+ GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER;UNIT" "trsm_iltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_M}.c" "LOWER" "trsm_iltncopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER;UNIT" "trsm_oltucopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("generic/trsm_ltcopy_${${float_char}GEMM_UNROLL_N}.c" "OUTER;LOWER" "trsm_oltncopy" false "" "" false ${float_type}) -+ -+ endif () -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LN}" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_LT}" "LT;TRSMKERNEL" "trsm_kernel_LT" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RN}" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}TRSMKERNEL_RT}" "RT;TRSMKERNEL" "trsm_kernel_RT" false "" "" false ${float_type}) -+ -+ -+ -+ if (NOT DEFINED ${float_char}OMATCOPY_CN) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_CN ../arm/zomatcopy_cn.c) -+ else () -+ set(${float_char}OMATCOPY_CN ../arm/omatcopy_cn.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}OMATCOPY_RN) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_RN ../arm/zomatcopy_rn.c) -+ else () -+ set(${float_char}OMATCOPY_RN ../arm/omatcopy_rn.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}OMATCOPY_CT) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_CT ../arm/zomatcopy_ct.c) -+ else () -+ set(${float_char}OMATCOPY_CT ../arm/omatcopy_ct.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}OMATCOPY_RT) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_RT ../arm/zomatcopy_rt.c) -+ else () -+ set(${float_char}OMATCOPY_RT ../arm/omatcopy_rt.c) -+ endif () -+ endif () -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CN}" "" "omatcopy_k_cn" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RN}" "ROWM" "omatcopy_k_rn" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CT}" "" "omatcopy_k_ct" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RT}" "ROWM" "omatcopy_k_rt" false "" "" false ${float_type}) -+ -+ if (NOT DEFINED ${float_char}OMATCOPY_CNC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_CNC ../arm/zomatcopy_cnc.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}OMATCOPY_RNC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_RNC ../arm/zomatcopy_rnc.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}OMATCOPY_CTC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_CTC ../arm/zomatcopy_ctc.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}OMATCOPY_RTC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}OMATCOPY_RTC ../arm/zomatcopy_rtc.c) -+ endif () -+ endif () -+ -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CNC}" "CONJ" "omatcopy_k_cnc" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RNC}" "CONJ;ROWM" "omatcopy_k_rnc" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_CTC}" "CONJ" "omatcopy_k_ctc" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}OMATCOPY_RTC}" "CONJ;ROWM" "omatcopy_k_rtc" false "" "" false ${float_type}) -+ endif() -+ -+ #imatcopy -+ if (NOT DEFINED ${float_char}IMATCOPY_CN) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_CN ../generic/zimatcopy_cn.c) -+ else () -+ set(${float_char}IMATCOPY_CN ../generic/imatcopy_cn.c) -+ endif () -+ endif () -+ -+ if (NOT DEFINED ${float_char}IMATCOPY_RN) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_RN ../generic/zimatcopy_rn.c) -+ else () -+ set(${float_char}IMATCOPY_RN ../generic/imatcopy_rn.c) -+ endif () -+ endif () -+ -+ if (NOT DEFINED ${float_char}IMATCOPY_CT) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_CT ../generic/zimatcopy_ct.c) -+ else () -+ set(${float_char}IMATCOPY_CT ../generic/imatcopy_ct.c) -+ endif () -+ endif () -+ -+ if (NOT DEFINED ${float_char}IMATCOPY_RT) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_RT ../generic/zimatcopy_rt.c) -+ else () -+ set(${float_char}IMATCOPY_RT ../generic/imatcopy_rt.c) -+ endif () -+ endif () -+ -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${float_type}) -+ -+ -+ if (NOT DEFINED ${float_char}IMATCOPY_CNC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_CNC ../generic/zimatcopy_cnc.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}IMATCOPY_RNC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_RNC ../generic/zimatcopy_rnc.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}IMATCOPY_CTC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_CTC ../generic/zimatcopy_ctc.c) -+ endif () -+ endif () -+ if (NOT DEFINED ${float_char}IMATCOPY_RTC) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ set(${float_char}IMATCOPY_RTC ../generic/zimatcopy_rtc.c) -+ endif () -+ endif () -+ -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${float_type}) -+ endif() -+ -+ #geadd -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type}) -+ endforeach () -+ -+ if (${DYNAMIC_ARCH}) -+ set(SETPARAM_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/setparam-ref.c SETPARAM_REF_CONTENTS) -+ string(REPLACE "TS" "${TSUFFIX}" SETPARAM_REF_CONTENTS_NEW "${SETPARAM_REF_CONTENTS}") -+ file(WRITE ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp "${SETPARAM_REF_CONTENTS_NEW}") -+ configure_file(${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.c COPYONLY) -+ set(OPENBLAS_SRC ${OPENBLAS_SRC} ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.c) -+ file(REMOVE ${SETPARAM_TARGET_DIR}/setparam${TSUFFIX}.tmp) -+ -+ set(KERNEL_TSUFFIX_CONTENTS "") -+ foreach (KERNEL_INTERFACE_H ${KERNEL_INTERFACE}) -+ file(READ ${PROJECT_SOURCE_DIR}/${KERNEL_INTERFACE_H} KERNEL_INTERFACE_H_CONTENTS) -+ string(REGEX REPLACE "[ ]*\\(" "${TSUFFIX}(" KERNEL_INTERFACE_H_CONTENTS_NEW "${KERNEL_INTERFACE_H_CONTENTS}") -+ set(KERNEL_TSUFFIX_CONTENTS "${KERNEL_TSUFFIX_CONTENTS}\n${KERNEL_INTERFACE_H_CONTENTS_NEW}") -+ endforeach() -+ file(WRITE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp "${KERNEL_TSUFFIX_CONTENTS}") -+ configure_file(${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.h COPYONLY) -+ file(REMOVE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp) - endif () -- endif () -- -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CN}" "" "imatcopy_k_cn" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RN}" "ROWM" "imatcopy_k_rn" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CT}" "" "imatcopy_k_ct" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RT}" "ROWM" "imatcopy_k_rt" false "" "" false ${float_type}) -- - -- if (NOT DEFINED ${float_char}IMATCOPY_CNC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_CNC ../generic/zimatcopy_cnc.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}IMATCOPY_RNC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_RNC ../generic/zimatcopy_rnc.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}IMATCOPY_CTC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_CTC ../generic/zimatcopy_ctc.c) -- endif () -- endif () -- if (NOT DEFINED ${float_char}IMATCOPY_RTC) -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- set(${float_char}IMATCOPY_RTC ../generic/zimatcopy_rtc.c) -- endif () -- endif () -- -- if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C") -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CNC}" "CONJ" "imatcopy_k_cnc" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RNC}" "CONJ;ROWM" "imatcopy_k_rnc" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_CTC}" "CONJ" "imatcopy_k_ctc" false "" "" false ${float_type}) -- GenerateNamedObjects("${KERNELDIR}/${${float_char}IMATCOPY_RTC}" "CONJ;ROWM" "imatcopy_k_rtc" false "" "" false ${float_type}) -- endif() -- -- #geadd -- GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type}) --endforeach () -- --# Makefile.LA --#DBLASOBJS += dneg_tcopy$(TSUFFIX).$(SUFFIX) dlaswp_ncopy$(TSUFFIX).$(SUFFIX) -+ # Makefile.LA -+ #DBLASOBJS += dneg_tcopy$(TSUFFIX).$(SUFFIX) dlaswp_ncopy$(TSUFFIX).$(SUFFIX) -+ -+ add_library(kernel${TSUFFIX} OBJECT ${OPENBLAS_SRC}) -+ set_target_properties(kernel${TSUFFIX} PROPERTIES COMPILE_FLAGS "${KERNEL_DEFINITIONS}") -+ get_target_property(KERNEL_INCLUDE_DIRECTORIES kernel${TSUFFIX} INCLUDE_DIRECTORIES) -+ set_target_properties(kernel${TSUFFIX} PROPERTIES INCLUDE_DIRECTORIES "${KERNEL_INCLUDE_DIRECTORIES};${TARGET_CONF_DIR}") -+endfunction () -+ -+ -+set(ADD_COMMONOBJS 1) -+if (${DYNAMIC_ARCH}) -+ foreach(TARGET_CORE ${DYNAMIC_CORE}) -+ set(BUILD_KERNEL 1) -+ set(KDIR "") -+ set(TSUFFIX "_${TARGET_CORE}") -+ set(KERNEL_DEFINITIONS "-DBUILD_KERNEL -DTABLE_NAME=gotoblas_${TARGET_CORE} -DTS=${TSUFFIX}") -+ build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}") -+ set(ADD_COMMONOBJS 0) -+ endforeach() -+else () -+ set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) -+ set(TARGET_CORE ${CORE}) -+ set(KDIR "") -+ set(TSUFFIX "") -+ set(KERNEL_DEFINITIONS "") -+ build_core("${TARGET_CORE}" "${KDIR}" "${TSUFFIX}" "${KERNEL_DEFINITIONS}") -+endif () - --add_library(kernel OBJECT ${OPENBLAS_SRC}) -diff --git a/kernel/x86_64/KERNEL.BULLDOZER b/kernel/x86_64/KERNEL.BULLDOZER -index 90834d9..eb91118 100644 ---- a/kernel/x86_64/KERNEL.BULLDOZER -+++ b/kernel/x86_64/KERNEL.BULLDOZER -@@ -69,9 +69,9 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) - CGEMM3MKERNEL = zgemm3m_kernel_8x4_barcelona.S - ZGEMM3MKERNEL = zgemm3m_kernel_4x4_barcelona.S - --STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c --STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c --STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c -+STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c -+STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c -+STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c - STRSMKERNEL_RT = strsm_kernel_RT_bulldozer.c - - DTRSMKERNEL_LN = dtrsm_kernel_LN_bulldozer.c -diff --git a/kernel/x86_64/KERNEL.EXCAVATOR b/kernel/x86_64/KERNEL.EXCAVATOR -index 4ec7482..568319c 100644 ---- a/kernel/x86_64/KERNEL.EXCAVATOR -+++ b/kernel/x86_64/KERNEL.EXCAVATOR -@@ -72,9 +72,9 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) - CGEMM3MKERNEL = zgemm3m_kernel_8x4_barcelona.S - ZGEMM3MKERNEL = zgemm3m_kernel_4x4_barcelona.S - --STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c --STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c --STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c -+STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c -+STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c -+STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c - STRSMKERNEL_RT = strsm_kernel_RT_bulldozer.c - - DTRSMKERNEL_LN = dtrsm_kernel_LN_bulldozer.c -diff --git a/kernel/x86_64/KERNEL.PILEDRIVER b/kernel/x86_64/KERNEL.PILEDRIVER -index 3ad1420..39891a6 100644 ---- a/kernel/x86_64/KERNEL.PILEDRIVER -+++ b/kernel/x86_64/KERNEL.PILEDRIVER -@@ -66,9 +66,9 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) - CGEMM3MKERNEL = zgemm3m_kernel_8x4_barcelona.S - ZGEMM3MKERNEL = zgemm3m_kernel_4x4_barcelona.S - --STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c --STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c --STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c -+STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c -+STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c -+STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c - STRSMKERNEL_RT = strsm_kernel_RT_bulldozer.c - - DTRSMKERNEL_LN = dtrsm_kernel_LN_bulldozer.c -diff --git a/kernel/x86_64/KERNEL.STEAMROLLER b/kernel/x86_64/KERNEL.STEAMROLLER -index 4ec7482..568319c 100644 ---- a/kernel/x86_64/KERNEL.STEAMROLLER -+++ b/kernel/x86_64/KERNEL.STEAMROLLER -@@ -72,9 +72,9 @@ ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX) - CGEMM3MKERNEL = zgemm3m_kernel_8x4_barcelona.S - ZGEMM3MKERNEL = zgemm3m_kernel_4x4_barcelona.S - --STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c --STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c --STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c -+STRSMKERNEL_LN = strsm_kernel_LN_bulldozer.c -+STRSMKERNEL_LT = strsm_kernel_LT_bulldozer.c -+STRSMKERNEL_RN = strsm_kernel_RN_bulldozer.c - STRSMKERNEL_RT = strsm_kernel_RT_bulldozer.c - - DTRSMKERNEL_LN = dtrsm_kernel_LN_bulldozer.c diff --git a/recipe/gh_1279.patch b/recipe/gh_1279.patch deleted file mode 100644 index 314a9cb..0000000 --- a/recipe/gh_1279.patch +++ /dev/null @@ -1,1607 +0,0 @@ -diff --git a/.travis.yml b/.travis.yml -index e86f281..c6d43cd 100644 ---- a/.travis.yml -+++ b/.travis.yml -@@ -119,6 +119,34 @@ jobs: - - TARGET_BOX=LINUX64_MUSL - - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=core2" - -+ - &test-cmake -+ stage: test -+ compiler: clang -+ addons: -+ apt: -+ packages: -+ - gfortran -+ - cmake -+ dist: trusty -+ sudo: true -+ before_script: -+ - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32" -+ script: -+ - set -e -+ - mkdir build -+ - CONFIG=Release -+ - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG -+ - cmake --build build --config $CONFIG -- -j2 -+ env: -+ - CMAKE=1 -+ - <<: *test-cmake -+ env: -+ - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1" -+ - <<: *test-cmake -+ compiler: gcc -+ env: -+ - CMAKE=1 -+ - # whitelist - branches: - only: -diff --git a/CMakeLists.txt b/CMakeLists.txt -index a91ea5f..771764e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -3,15 +3,12 @@ - ## - - cmake_minimum_required(VERSION 2.8.5) --project(OpenBLAS) -+project(OpenBLAS C ASM) - set(OpenBLAS_MAJOR_VERSION 0) - set(OpenBLAS_MINOR_VERSION 2) - set(OpenBLAS_PATCH_VERSION 20) - set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") - --enable_language(ASM) --enable_language(C) -- - # Adhere to GNU filesystem layout conventions - include(GNUInstallDirs) - -@@ -26,7 +23,6 @@ if(MSVC) - option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON) - endif() - option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF) --option(BUILD_DEBUG "Build Debug Version" OFF) - option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF) - ####### - if(BUILD_WITHOUT_LAPACK) -@@ -34,22 +30,6 @@ set(NO_LAPACK 1) - set(NO_LAPACKE 1) - endif() - --if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator? -- set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE) -- set(CMAKE_BUILD_TYPE -- Debug Debug -- Release Release -- ) --else() -- if( NOT CMAKE_BUILD_TYPE ) -- if(BUILD_DEBUG) -- set(CMAKE_BUILD_TYPE Debug) -- else() -- set(CMAKE_BUILD_TYPE Release) -- endif() -- endif() --endif() -- - if(BUILD_WITHOUT_CBLAS) - set(NO_CBLAS 1) - endif() -@@ -107,19 +87,10 @@ if (BUILD_COMPLEX16) - list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE - endif () - --set(SUBDIRS_ALL ${SUBDIRS} test ctest utest exports benchmark ../laswp ../bench) -- --# all :: libs netlib tests shared -- --# libs : - if (NOT DEFINED CORE OR "${CORE}" STREQUAL "UNKNOWN") - message(FATAL_ERROR "Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for details.") - endif () - --if (${NO_STATIC} AND ${NO_SHARED}) -- message(FATAL_ERROR "Neither static nor shared are enabled.") --endif () -- - #Set default output directory - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) -@@ -141,26 +112,20 @@ endforeach () - # Not using add_subdirectory here because lapack-netlib already has its own CMakeLists.txt. Instead include a cmake script with the sources we want. - if (NOT NOFORTRAN AND NOT NO_LAPACK) - include("${PROJECT_SOURCE_DIR}/cmake/lapack.cmake") --if (NOT NO_LAPACKE) -- include("${PROJECT_SOURCE_DIR}/cmake/lapacke.cmake") --endif () -+ if (NOT NO_LAPACKE) -+ include("${PROJECT_SOURCE_DIR}/cmake/lapacke.cmake") -+ endif () - endif () - - # Only generate .def for dll on MSVC and always produce pdb files for debug and release - if(MSVC) --set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def") --set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") --set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi") --set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") -+ if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.4) -+ set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def") -+ endif() -+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi") -+ set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") - endif() - --#ifeq ($(DYNAMIC_ARCH), 1) --# @$(MAKE) -C kernel commonlibs || exit 1 --# @for d in $(DYNAMIC_CORE) ; \ --# do $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\ --# done --# @echo DYNAMIC_ARCH=1 >> Makefile.conf_last --#endif - if (${DYNAMIC_ARCH}) - add_subdirectory(kernel) - foreach(TARGET_CORE ${DYNAMIC_CORE}) -@@ -169,11 +134,24 @@ if (${DYNAMIC_ARCH}) - endforeach() - endif () - -+# Only build shared libs for MSVC -+if (MSVC) -+ set(BUILD_SHARED_LIBS ON) -+endif() - --# add objects to the openblas lib --add_library(${OpenBLAS_LIBNAME} SHARED ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE}) - --include("${PROJECT_SOURCE_DIR}/cmake/export.cmake") -+# add objects to the openblas lib -+add_library(${OpenBLAS_LIBNAME} ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE}) -+ -+# Handle MSVC exports -+if(MSVC AND BUILD_SHARED_LIBS) -+ if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.4) -+ include("${PROJECT_SOURCE_DIR}/cmake/export.cmake") -+ else() -+ # Creates verbose .def file (51KB vs 18KB) -+ set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true) -+ endif() -+endif() - - # Set output for libopenblas - set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) -@@ -188,25 +166,28 @@ foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) - endforeach() - - enable_testing() --add_subdirectory(utest) -- --if (NOT MSVC) -- #only build shared library for MSVC -- -- add_library(${OpenBLAS_LIBNAME}_static STATIC ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS}) -- set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME}) -- set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - -- if(SMP) -- target_link_libraries(${OpenBLAS_LIBNAME} pthread) -- target_link_libraries(${OpenBLAS_LIBNAME}_static pthread) -+if (USE_THREAD) -+ # Add threading library to linker -+ find_package(Threads) -+ if (THREADS_HAVE_PTHREAD_ARG) -+ set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY COMPILE_OPTIONS "-pthread") -+ set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") -+ endif() -+ target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT}) - endif() - --#build test and ctest --add_subdirectory(test) --if(NOT NO_CBLAS) --add_subdirectory(ctest) -+if (MSVC OR NOT NOFORTRAN) -+ # Broken without fortran on unix -+ add_subdirectory(utest) - endif() -+ -+if (NOT MSVC AND NOT NOFORTRAN) -+ # Build test and ctest -+ add_subdirectory(test) -+ if(NOT NO_CBLAS) -+ add_subdirectory(ctest) -+ endif() - endif() - - set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES -@@ -214,53 +195,42 @@ set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES - SOVERSION ${OpenBLAS_MAJOR_VERSION} - ) - -- --# TODO: Why is the config saved here? Is this necessary with CMake? --#Save the config files for installation --# @cp Makefile.conf Makefile.conf_last --# @cp config.h config_last.h --#ifdef QUAD_PRECISION --# @echo "#define QUAD_PRECISION">> config_last.h --#endif --#ifeq ($(EXPRECISION), 1) --# @echo "#define EXPRECISION">> config_last.h --#endif --### -- --#ifdef USE_THREAD --# @echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last --#endif --# @touch lib.grd -- - # Install project - - # Install libraries - install(TARGETS ${OpenBLAS_LIBNAME} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) -- --# Install include files -- set (GENCONFIG_BIN ${CMAKE_BINARY_DIR}/gen_config_h${CMAKE_EXECUTABLE_SUFFIX}) -- -- execute_process(COMMAND ${GENCONFIG_BIN} -- ${CMAKE_CURRENT_SOURCE_DIR}/config.h -- ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h -- OUTPUT_VARIABLE OPENBLAS_CONFIG_H_CONTENTS) -- -- file(WRITE ${CMAKE_BINARY_DIR}/openblas_config.tmp "${OPENBLAS_CONFIG_H_CONTENTS}") -- configure_file(${CMAKE_BINARY_DIR}/openblas_config.tmp ${CMAKE_BINARY_DIR}/openblas_config.h COPYONLY) -- -- install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -- -- message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") -- -- file(WRITE ${CMAKE_BINARY_DIR}/f77blas.h "") -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") -- file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "${COMMON_INTERFACE_H_CONTENTS}") -- file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#endif") -- install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) -+ -+message(STATUS "Generating openblas_config.h in ${CMAKE_INSTALL_INCLUDEDIR}") -+ -+set(OPENBLAS_CONFIG_H ${CMAKE_BINARY_DIR}/openblas_config.h) -+file(WRITE ${OPENBLAS_CONFIG_H} "#ifndef OPENBLAS_CONFIG_H\n") -+file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_CONFIG_H\n") -+file(STRINGS ${PROJECT_BINARY_DIR}/config.h __lines) -+foreach(line ${__lines}) -+ string(REPLACE "#define " "" line ${line}) -+ file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_${line}\n") -+endforeach() -+file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_VERSION \"OpenBLAS ${OpenBLAS_VERSION}\"\n") -+file(READ ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h OPENBLAS_CONFIG_TEMPLATE_H_CONTENTS) -+file(APPEND ${OPENBLAS_CONFIG_H} "${OPENBLAS_CONFIG_TEMPLATE_H_CONTENTS}\n") -+file(APPEND ${OPENBLAS_CONFIG_H} "#endif /* OPENBLAS_CONFIG_H */\n") -+install (FILES ${OPENBLAS_CONFIG_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ -+if(NOT NOFORTRAN) -+ message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") -+ -+ set(F77BLAS_H ${CMAKE_BINARY_DIR}/f77blas.h) -+ file(WRITE ${F77BLAS_H} "#ifndef OPENBLAS_F77BLAS_H\n") -+ file(APPEND ${F77BLAS_H} "#define OPENBLAS_F77BLAS_H\n") -+ file(APPEND ${F77BLAS_H} "#include \"openblas_config.h\"\n") -+ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) -+ file(APPEND ${F77BLAS_H} "${COMMON_INTERFACE_H_CONTENTS}\n") -+ file(APPEND ${F77BLAS_H} "#endif") -+ install (FILES ${F77BLAS_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+endif() - - if(NOT NO_CBLAS) - message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") -@@ -282,10 +252,6 @@ if(NOT NO_LAPACKE) - ) - install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - endif() -- --if(NOT MSVC) -- install (TARGETS ${OpenBLAS_LIBNAME}_static DESTINATION ${CMAKE_INSTALL_LIBDIR}) --endif() - - include(FindPkgConfig QUIET) - if(PKG_CONFIG_FOUND) -diff --git a/cmake/arch.cmake b/cmake/arch.cmake -index 5b897d8..798a9ef 100644 ---- a/cmake/arch.cmake -+++ b/cmake/arch.cmake -@@ -3,9 +3,9 @@ - ## Description: Ported from portion of OpenBLAS/Makefile.system - ## Sets various variables based on architecture. - --if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64") -+if (X86 OR X86_64) - -- if (${ARCH} STREQUAL "x86") -+ if (X86) - if (NOT BINARY) - set(NO_BINARY_MODE 1) - endif () -@@ -33,41 +33,22 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel") - endif () - - if (USE_OPENMP) -- -- if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LSB") -- set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp") -- endif () -- -- if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang") -- message(WARNING "Clang doesn't support OpenMP yet.") -- set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp") -- endif () -- -- if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel") -- set(CCOMMON_OPT "${CCOMMON_OPT} -openmp") -- endif () -- -- if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI") -- set(CCOMMON_OPT "${CCOMMON_OPT} -mp") -- endif () -- -- if (${CMAKE_C_COMPILER_ID} STREQUAL "OPEN64") -- set(CCOMMON_OPT "${CCOMMON_OPT} -mp") -- set(CEXTRALIB "${CEXTRALIB} -lstdc++") -- endif () -- -- if (${CMAKE_C_COMPILER_ID} STREQUAL "PATHSCALE") -- set(CCOMMON_OPT "${CCOMMON_OPT} -mp") -- endif () -+ # USE_SIMPLE_THREADED_LEVEL3 = 1 -+ # NO_AFFINITY = 1 -+ find_package(OpenMP REQUIRED) -+ if (OpenMP_FOUND) -+ set(CCOMMON_OPT "${CCOMMON_OPT} ${OpenMP_C_FLAGS} -DUSE_OPENMP") -+ set(FCOMMON_OPT "${FCOMMON_OPT} ${OpenMP_Fortran_FLAGS}") -+ endif() - endif () - - - if (DYNAMIC_ARCH) -- if (${ARCH} STREQUAL "x86") -+ if (X86) - set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) - endif () - -- if (${ARCH} STREQUAL "x86_64") -+ if (X86_64) - set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) - if (NOT NO_AVX) - set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR) -@@ -94,7 +75,7 @@ if (${ARCH} STREQUAL "ia64") - endif () - endif () - --if (${ARCH} STREQUAL "mips64") -+if (MIPS64) - set(NO_BINARY_MODE 1) - endif () - -@@ -103,12 +84,12 @@ if (${ARCH} STREQUAL "alpha") - set(BINARY_DEFINED 1) - endif () - --if (${ARCH} STREQUAL "arm") -+if (ARM) - set(NO_BINARY_MODE 1) - set(BINARY_DEFINED 1) - endif () - --if (${ARCH} STREQUAL "arm64") -+if (ARM64) - set(NO_BINARY_MODE 1) - set(BINARY_DEFINED 1) - endif () -diff --git a/cmake/c_check.cmake b/cmake/c_check.cmake -deleted file mode 100644 -index 2249a87..0000000 ---- a/cmake/c_check.cmake -+++ /dev/null -@@ -1,101 +0,0 @@ --## --## Author: Hank Anderson --## Description: Ported from the OpenBLAS/c_check perl script. --## This is triggered by prebuild.cmake and runs before any of the code is built. --## Creates config.h and Makefile.conf. -- --# CMake vars set by this file: --# OSNAME (use CMAKE_SYSTEM_NAME) --# ARCH --# C_COMPILER (use CMAKE_C_COMPILER) --# BINARY32 --# BINARY64 --# FU --# CROSS_SUFFIX --# CROSS --# CEXTRALIB -- --# Defines set by this file: --# OS_ --# ARCH_ --# C_ --# __32BIT__ --# __64BIT__ --# FUNDERSCORE --# PTHREAD_CREATE_FUNC -- --# N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables. --set(FU "") --if(APPLE) --set(FU "_") --elseif(MSVC AND ${CMAKE_C_COMPILER_ID} MATCHES "Clang") --set(FU "") --elseif(MSVC) --set(FU "_") --elseif(UNIX) --set(FU "") --endif() -- --# Convert CMake vars into the format that OpenBLAS expects --string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS) --if (${HOST_OS} STREQUAL "WINDOWS") -- set(HOST_OS WINNT) --endif () -- --# added by hpa - check size of void ptr to detect 64-bit compile --if (NOT DEFINED BINARY) -- set(BINARY 32) -- if (CMAKE_SIZEOF_VOID_P EQUAL 8) -- set(BINARY 64) -- endif () --endif () -- --if (BINARY EQUAL 64) -- set(BINARY64 1) --else () -- set(BINARY32 1) --endif () -- --# CMake docs define these: --# CMAKE_SYSTEM_PROCESSOR - The name of the CPU CMake is building for. --# CMAKE_HOST_SYSTEM_PROCESSOR - The name of the CPU CMake is running on. --# --# TODO: CMAKE_SYSTEM_PROCESSOR doesn't seem to be correct - instead get it from the compiler a la c_check --set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture") -- --if (${ARCH} STREQUAL "AMD64") -- set(ARCH "x86_64") --endif () -- --# If you are using a 32-bit compiler on a 64-bit system CMAKE_SYSTEM_PROCESSOR will be wrong --if (${ARCH} STREQUAL "x86_64" AND BINARY EQUAL 32) -- set(ARCH x86) --endif () -- --if (${ARCH} STREQUAL "X86") -- set(ARCH x86) --endif () -- --if (${ARCH} MATCHES "ppc") -- set(ARCH power) --endif () -- --set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID}) --if (${COMPILER_ID} STREQUAL "GNU") -- set(COMPILER_ID "GCC") --endif () -- --string(TOUPPER ${ARCH} UC_ARCH) -- --file(WRITE ${TARGET_CONF_TEMP} -- "#define OS_${HOST_OS}\t1\n" -- "#define ARCH_${UC_ARCH}\t1\n" -- "#define C_${COMPILER_ID}\t1\n" -- "#define __${BINARY}BIT__\t1\n" -- "#define FUNDERSCORE\t${FU}\n") -- --if (${HOST_OS} STREQUAL "WINDOWSSTORE") -- file(APPEND ${TARGET_CONF_TEMP} -- "#define OS_WINNT\t1\n") --endif () -- -diff --git a/cmake/cc.cmake b/cmake/cc.cmake -index de19652..98f9298 100644 ---- a/cmake/cc.cmake -+++ b/cmake/cc.cmake -@@ -15,7 +15,7 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR - - if (NO_BINARY_MODE) - -- if (${ARCH} STREQUAL "mips64") -+ if (MIPS64) - if (BINARY64) - set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64") - else () -@@ -24,17 +24,12 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR - set(BINARY_DEFINED 1) - endif () - -- if (${CORE} STREQUAL "LOONGSON3A") -+ if (${CORE} STREQUAL "LOONGSON3A" OR ${CORE} STREQUAL "LOONGSON3B") - set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64") - set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") - endif () - -- if (${CORE} STREQUAL "LOONGSON3B") -- set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64") -- set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") -- endif () -- -- if (${OSNAME} STREQUAL "AIX") -+ if (CMAKE_SYSTEM_NAME STREQUAL "AIX") - set(BINARY_DEFINED 1) - endif () - endif () -@@ -66,7 +61,7 @@ endif () - - if (${CMAKE_C_COMPILER} STREQUAL "OPEN64") - -- if (${ARCH} STREQUAL "mips64") -+ if (MIPS64) - - if (NOT BINARY64) - set(CCOMMON_OPT "${CCOMMON_OPT} -n32") -@@ -94,10 +89,10 @@ endif () - - if (${CMAKE_C_COMPILER} STREQUAL "SUN") - set(CCOMMON_OPT "${CCOMMON_OPT} -w") -- if (${ARCH} STREQUAL "x86") -+ if (X86) - set(CCOMMON_OPT "${CCOMMON_OPT} -m32") - else () -- set(FCOMMON_OPT "${FCOMMON_OPT} -m64") -+ set(CCOMMON_OPT "${CCOMMON_OPT} -m64") - endif () - endif () - -diff --git a/cmake/f_check.cmake b/cmake/f_check.cmake -index 6eee027..4848553 100644 ---- a/cmake/f_check.cmake -+++ b/cmake/f_check.cmake -@@ -34,11 +34,7 @@ else() - endif() - - if (NOT ONLY_CBLAS) -- # N.B. f_check is not cross-platform, so instead try to use CMake variables - # run f_check (appends to TARGET files) --# message(STATUS "Running f_check...") --# execute_process(COMMAND perl f_check ${TARGET_MAKE} ${TARGET_CONF} ${CMAKE_Fortran_COMPILER} --# WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) - - # TODO: detect whether underscore needed, set #defines and BU appropriately - use try_compile - # TODO: set FEXTRALIB flags a la f_check? -diff --git a/cmake/fc.cmake b/cmake/fc.cmake -index ee9d205..f1c69d9 100644 ---- a/cmake/fc.cmake -+++ b/cmake/fc.cmake -@@ -50,7 +50,7 @@ if (${F_COMPILER} STREQUAL "GFORTRAN") - set(EXTRALIB "{EXTRALIB} -lgfortran") - endif () - if (NO_BINARY_MODE) -- if (${ARCH} STREQUAL "mips64") -+ if (MIPS64) - if (BINARY64) - set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64") - else () -@@ -130,7 +130,7 @@ if (${F_COMPILER} STREQUAL "PATHSCALE") - endif () - endif () - -- if (NOT ${ARCH} STREQUAL "mips64") -+ if (NOT MIPS64) - if (NOT BINARY64) - set(FCOMMON_OPT "${FCOMMON_OPT} -m32") - else () -@@ -158,7 +158,7 @@ if (${F_COMPILER} STREQUAL "OPEN64") - endif () - endif () - -- if (${ARCH} STREQUAL "mips64") -+ if (MIPS64) - - if (NOT BINARY64) - set(FCOMMON_OPT "${FCOMMON_OPT} -n32") -@@ -189,7 +189,7 @@ endif () - - if (${F_COMPILER} STREQUAL "SUN") - set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN") -- if (${ARCH} STREQUAL "x86") -+ if (X86) - set(FCOMMON_OPT "${FCOMMON_OPT} -m32") - else () - set(FCOMMON_OPT "${FCOMMON_OPT} -m64") -diff --git a/cmake/os.cmake b/cmake/os.cmake -index e9df68d..1321ef6 100644 ---- a/cmake/os.cmake -+++ b/cmake/os.cmake -@@ -3,19 +3,6 @@ - ## Description: Ported from portion of OpenBLAS/Makefile.system - ## Detects the OS and sets appropriate variables. - --if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") -- set(ENV{MACOSX_DEPLOYMENT_TARGET} "10.2") # TODO: should be exported as an env var -- set(MD5SUM "md5 -r") --endif () -- --if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") -- set(MD5SUM "md5 -r") --endif () -- --if (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD") -- set(MD5SUM "md5 -n") --endif () -- - if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(EXTRALIB "${EXTRALIB} -lm") - set(NO_EXPRECISION 1) -@@ -56,7 +43,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - - # Ensure the correct stack alignment on Win32 - # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97 -- if (${ARCH} STREQUAL "x86") -+ if (X86) - if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") - set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2") - endif () -@@ -78,7 +65,7 @@ if (CYGWIN) - endif () - - if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") -- if (SMP) -+ if (USE_THREAD) - set(EXTRALIB "${EXTRALIB} -lpthread") - endif () - endif () -@@ -88,7 +75,7 @@ if (QUAD_PRECISION) - set(NO_EXPRECISION 1) - endif () - --if (${ARCH} STREQUAL "x86") -+if (X86) - set(NO_EXPRECISION 1) - endif () - -diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake -index 2c262b0..cc54756 100644 ---- a/cmake/prebuild.cmake -+++ b/cmake/prebuild.cmake -@@ -37,123 +37,208 @@ - - # CPUIDEMU = ../../cpuid/table.o - -+ - if (DEFINED CPUIDEMU) - set(EXFLAGS "-DCPUIDEMU -DVENDOR=99") - endif () - --if (DEFINED TARGET_CORE) -+if (BUILD_KERNEL) - # set the C flags for just this file - set(GETARCH2_FLAGS "-DBUILD_KERNEL") -- set(TARGET_MAKE "Makefile_kernel.conf") - set(TARGET_CONF "config_kernel.h") - set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}) - else() -- set(TARGET_MAKE "Makefile.conf") - set(TARGET_CONF "config.h") - set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) - endif () - - set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp") --include("${PROJECT_SOURCE_DIR}/cmake/c_check.cmake") - --if (NOT NOFORTRAN) -- include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake") -+# c_check -+set(FU "") -+if (APPLE OR (MSVC AND NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang")) -+ set(FU "_") -+endif() -+ -+set(COMPILER_ID ${CMAKE_C_COMPILER_ID}) -+if (${COMPILER_ID} STREQUAL "GNU") -+ set(COMPILER_ID "GCC") - endif () - --# compile getarch --set(GETARCH_SRC -- ${PROJECT_SOURCE_DIR}/getarch.c -- ${CPUIDEMO} --) -+string(TOUPPER ${ARCH} UC_ARCH) - --if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") -- #Use generic for MSVC now -- message("MSVC") -- set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC) --else() -- list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S) -+file(WRITE ${TARGET_CONF_TEMP} -+ "#define OS_${HOST_OS}\t1\n" -+ "#define ARCH_${UC_ARCH}\t1\n" -+ "#define C_${COMPILER_ID}\t1\n" -+ "#define __${BINARY}BIT__\t1\n" -+ "#define FUNDERSCORE\t${FU}\n") -+ -+if (${HOST_OS} STREQUAL "WINDOWSSTORE") -+ file(APPEND ${TARGET_CONF_TEMP} -+ "#define OS_WINNT\t1\n") - endif () - --if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -- # disable WindowsStore strict CRT checks -- set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS) -+# f_check -+if (NOT NOFORTRAN) -+ include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake") - endif () - --set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build") --set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}") --file(MAKE_DIRECTORY ${GETARCH_DIR}) --configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY) --if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -- try_compile(GETARCH_RESULT ${GETARCH_DIR} -- SOURCES ${GETARCH_SRC} -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -- OUTPUT_VARIABLE GETARCH_LOG -- COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} -+# Cannot run getarch on target if we are cross-compiling -+if (DEFINED CORE AND CMAKE_CROSSCOMPILING) -+ # Write to config as getarch would -+ -+ # TODO: Set up defines that getarch sets up based on every other target -+ # Perhaps this should be inside a different file as it grows larger -+ file(APPEND ${TARGET_CONF_TEMP} -+ "#define ${CORE}\n" -+ "#define CHAR_CORENAME \"${CORE}\"\n") -+ if ("${CORE}" STREQUAL "ARMV7") -+ file(APPEND ${TARGET_CONF_TEMP} -+ "#define L1_DATA_SIZE\t65536\n" -+ "#define L1_DATA_LINESIZE\t32\n" -+ "#define L2_SIZE\t512488\n" -+ "#define L2_LINESIZE\t32\n" -+ "#define DTB_DEFAULT_ENTRIES\t64\n" -+ "#define DTB_SIZE\t4096\n" -+ "#define L2_ASSOCIATIVE\t4\n" -+ "#define HAVE_VFPV3\n" -+ "#define HAVE_VFP\n") -+ set(SGEMM_UNROLL_M 4) -+ set(SGEMM_UNROLL_N 4) -+ set(DGEMM_UNROLL_M 4) -+ set(DGEMM_UNROLL_N 4) -+ elseif ("${CORE}" STREQUAL "ARMV8") -+ file(APPEND ${TARGET_CONF_TEMP} -+ "#define L1_DATA_SIZE\t32768\n" -+ "#define L1_DATA_LINESIZE\t64\n" -+ "#define L2_SIZE\t262144\n" -+ "#define L2_LINESIZE\t64\n" -+ "#define DTB_DEFAULT_ENTRIES\t64\n" -+ "#define DTB_SIZE\t4096\n" -+ "#define L2_ASSOCIATIVE\t32\n") -+ set(SGEMM_UNROLL_M 4) -+ set(SGEMM_UNROLL_N 4) -+ elseif ("${CORE}" STREQUAL "CORTEXA57") -+ file(APPEND ${TARGET_CONF_TEMP} -+ "#define L1_CODE_SIZE\t49152\n" -+ "#define L1_CODE_LINESIZE\t64\n" -+ "#define L1_CODE_ASSOCIATIVE\t3\n" -+ "#define L1_DATA_SIZE\t32768\n" -+ "#define L1_DATA_LINESIZE\t64\n" -+ "#define L1_DATA_ASSOCIATIVE\t2\n" -+ "#define L2_SIZE\t2097152\n" -+ "#define L2_LINESIZE\t64\n" -+ "#define L2_ASSOCIATIVE\t16\n" -+ "#define DTB_DEFAULT_ENTRIES\t64\n" -+ "#define DTB_SIZE\t4096\n" -+ "#define HAVE_VFPV4\n" -+ "#define HAVE_VFPV3\n" -+ "#define HAVE_VFP\n" -+ "#define HAVE_NEON\n") -+ set(SGEMM_UNROLL_M 16) -+ set(SGEMM_UNROLL_N 4) -+ set(DGEMM_UNROLL_M 8) -+ set(DGEMM_UNROLL_N 4) -+ set(CGEMM_UNROLL_M 8) -+ set(CGEMM_UNROLL_N 4) -+ set(ZGEMM_UNROLL_M 8) -+ set(ZGEMM_UNROLL_N 4) -+ endif() -+ -+ # Or should this actually be NUM_CORES? -+ if (${NUM_THREADS} GREATER 0) -+ file(APPEND ${TARGET_CONF_TEMP} "#define NUM_CORES\t${NUM_THREADS}\n") -+ endif() -+ -+ # GetArch_2nd -+ foreach(float_char S;D;Q;C;Z;X) -+ if (NOT DEFINED ${float_char}GEMM_UNROLL_M) -+ set(${float_char}GEMM_UNROLL_M 2) -+ endif() -+ if (NOT DEFINED ${float_char}GEMM_UNROLL_N) -+ set(${float_char}GEMM_UNROLL_N 2) -+ endif() -+ endforeach() -+ file(APPEND ${TARGET_CONF_TEMP} -+ "#define GEMM_MULTITHREAD_THRESHOLD\t${GEMM_MULTITHREAD_THRESHOLD}\n") -+ # Move to where gen_config_h would place it -+ file(RENAME ${TARGET_CONF_TEMP} "${TARGET_CONF_DIR}/${TARGET_CONF}") -+ -+else(NOT CMAKE_CROSSCOMPILING) -+ # compile getarch -+ set(GETARCH_SRC -+ ${PROJECT_SOURCE_DIR}/getarch.c -+ ${CPUIDEMU} - ) - -- if (NOT ${GETARCH_RESULT}) -- MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}") -+ if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") -+ #Use generic for MSVC now -+ message("MSVC") -+ set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC) -+ else() -+ list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S) - endif () --endif () --message(STATUS "Running getarch") -- --# use the cmake binary w/ the -E param to run a shell command in a cross-platform way --execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT) --execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 1 OUTPUT_VARIABLE GETARCH_CONF_OUT) -- --message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}") -- --# append config data from getarch to the TARGET file and read in CMake vars --file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT}) --ParseGetArchVars(${GETARCH_MAKE_OUT}) -- --set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build") --set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}") --file(MAKE_DIRECTORY ${GETARCH2_DIR}) --configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY) --if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -- try_compile(GETARCH2_RESULT ${GETARCH2_DIR} -- SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -- OUTPUT_VARIABLE GETARCH2_LOG -- COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} -- ) - -- if (NOT ${GETARCH2_RESULT}) -- MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}") -+ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -+ # disable WindowsStore strict CRT checks -+ set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS) - endif () --endif () - --# use the cmake binary w/ the -E param to run a shell command in a cross-platform way --execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT) --execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) -+ set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build") -+ set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}") -+ file(MAKE_DIRECTORY ${GETARCH_DIR}) -+ configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY) -+ if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -+ try_compile(GETARCH_RESULT ${GETARCH_DIR} -+ SOURCES ${GETARCH_SRC} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -+ OUTPUT_VARIABLE GETARCH_LOG -+ COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} -+ ) -+ -+ if (NOT ${GETARCH_RESULT}) -+ MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}") -+ endif () -+ endif () -+ message(STATUS "Running getarch") -+ -+ # use the cmake binary w/ the -E param to run a shell command in a cross-platform way -+ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT) -+ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 1 OUTPUT_VARIABLE GETARCH_CONF_OUT) -+ -+ message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}") -+ -+ # append config data from getarch to the TARGET file and read in CMake vars -+ file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT}) -+ ParseGetArchVars(${GETARCH_MAKE_OUT}) -+ -+ set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build") -+ set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}") -+ file(MAKE_DIRECTORY ${GETARCH2_DIR}) -+ configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY) -+ if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -+ try_compile(GETARCH2_RESULT ${GETARCH2_DIR} -+ SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -+ OUTPUT_VARIABLE GETARCH2_LOG -+ COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} -+ ) -+ -+ if (NOT ${GETARCH2_RESULT}) -+ MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}") -+ endif () -+ endif () - --# append config data from getarch_2nd to the TARGET file and read in CMake vars --file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) -+ # use the cmake binary w/ the -E param to run a shell command in a cross-platform way -+ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT) -+ execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) - --if (${BUILD_KERNEL}) -- configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}/${TARGET_CONF} COPYONLY) --else () -- configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/${TARGET_CONF} COPYONLY) --endif () -+ # append config data from getarch_2nd to the TARGET file and read in CMake vars -+ file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) - --ParseGetArchVars(${GETARCH2_MAKE_OUT}) -+ configure_file(${TARGET_CONF_TEMP} ${TARGET_CONF_DIR}/${TARGET_CONF} COPYONLY) - --# compile get_config_h --set(GEN_CONFIG_H_DIR "${PROJECT_BINARY_DIR}/genconfig_h_build") --set(GEN_CONFIG_H_BIN "gen_config_h${CMAKE_EXECUTABLE_SUFFIX}") --set(GEN_CONFIG_H_FLAGS "-DVERSION=\"${OpenBLAS_VERSION}\"") --file(MAKE_DIRECTORY ${GEN_CONFIG_H_DIR}) -+ ParseGetArchVars(${GETARCH2_MAKE_OUT}) - --if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") -- try_compile(GEN_CONFIG_H_RESULT ${GEN_CONFIG_H_DIR} -- SOURCES ${PROJECT_SOURCE_DIR}/gen_config_h.c -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GEN_CONFIG_H_FLAGS} -I${PROJECT_SOURCE_DIR} -- OUTPUT_VARIABLE GEN_CONFIG_H_LOG -- COPY_FILE ${PROJECT_BINARY_DIR}/${GEN_CONFIG_H_BIN} -- ) -- -- if (NOT ${GEN_CONFIG_H_RESULT}) -- MESSAGE(FATAL_ERROR "Compiling gen_config_h failed ${GEN_CONFIG_H_LOG}") -- endif () --endif () -+endif() -diff --git a/cmake/system.cmake b/cmake/system.cmake -index 3d32707..daa2683 100644 ---- a/cmake/system.cmake -+++ b/cmake/system.cmake -@@ -4,10 +4,25 @@ - ## - set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib") - --# TODO: Makefile.system detects Darwin (mac) and switches to clang here -hpa --# http://stackoverflow.com/questions/714100/os-detecting-makefile -+# System detection, via CMake. -+include("${PROJECT_SOURCE_DIR}/cmake/system_check.cmake") -+ -+if(CMAKE_CROSSCOMPILING AND NOT DEFINED TARGET) -+ # Detect target without running getarch -+ if (ARM64) -+ set(TARGET "ARMV8") -+ elseif(ARM) -+ set(TARGET "ARMV7") # TODO: Ask compiler which arch this is -+ else() -+ message(FATAL_ERROR "When cross compiling, a TARGET is required.") -+ endif() -+endif() - --# TODO: Makefile.system sets HOSTCC = $(CC) here if not already set -hpa -+# Other files expect CORE, which is actually TARGET and will become TARGET_CORE for kernel build. Confused yet? -+# It seems we are meant to use TARGET as input and CORE internally as kernel. -+if(NOT DEFINED CORE AND DEFINED TARGET) -+ set(CORE ${TARGET}) -+endif() - - # TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1. - if (DEFINED TARGET_CORE) -@@ -27,7 +42,7 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32) - endif () - - if (DEFINED TARGET) -- message(STATUS "Targetting the ${TARGET} architecture.") -+ message(STATUS "Targeting the ${TARGET} architecture.") - set(GETARCH_FLAGS "-DFORCE_${TARGET}") - endif () - -@@ -52,21 +67,16 @@ if (NO_AVX2) - set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2") - endif () - --if (CMAKE_BUILD_TYPE STREQUAL Debug) -- set(GETARCH_FLAGS "${GETARCH_FLAGS} -g") -+if (CMAKE_BUILD_TYPE STREQUAL "Debug") -+ set(GETARCH_FLAGS "${GETARCH_FLAGS} ${CMAKE_C_FLAGS_DEBUG}") - endif () - --# TODO: let CMake handle this? -hpa --#if (${QUIET_MAKE}) --# set(MAKE "${MAKE} -s") --#endif() -- - if (NOT DEFINED NO_PARALLEL_MAKE) - set(NO_PARALLEL_MAKE 0) - endif () - set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}") - --if (CMAKE_CXX_COMPILER STREQUAL loongcc) -+if (CMAKE_C_COMPILER STREQUAL loongcc) - set(GETARCH_FLAGS "${GETARCH_FLAGS} -static") - endif () - -@@ -77,51 +87,39 @@ else () - set(ONLY_CBLAS 0) - endif () - --include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake") -+# N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa -+if (NOT CMAKE_CROSSCOMPILING) -+ if (NOT DEFINED NUM_CORES) -+ include(ProcessorCount) -+ ProcessorCount(NUM_CORES) -+ endif() -+ -+ if (NOT NUM_CORES EQUAL 0) -+ # HT? -+ set(NUM_THREADS ${NUM_CORES}) -+ endif () -+endif() - - if (NOT DEFINED NUM_THREADS) -- set(NUM_THREADS ${NUM_CORES}) --endif () -+ set(NUM_THREADS 0) -+endif() - --if (${NUM_THREADS} EQUAL 1) -+if (${NUM_THREADS} LESS 2) - set(USE_THREAD 0) -+elseif(NOT DEFINED USE_THREAD) -+ set(USE_THREAD 1) - endif () - --if (DEFINED USE_THREAD) -- if (NOT ${USE_THREAD}) -- unset(SMP) -- else () -- set(SMP 1) -- endif () --else () -- # N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa -- if (${NUM_THREADS} EQUAL 1) -- unset(SMP) -- else () -- set(SMP 1) -- endif () -+if (USE_THREAD) -+ message(STATUS "Multi-threading enabled with ${NUM_THREADS} threads.") - endif () - --if (${SMP}) -- message(STATUS "SMP enabled.") --endif () -+include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake") - - if (NOT DEFINED NEED_PIC) - set(NEED_PIC 1) - endif () - --# TODO: I think CMake should be handling all this stuff -hpa --unset(ARFLAGS) --set(CPP "${COMPILER} -E") --set(AR "${CROSS_SUFFIX}ar") --set(AS "${CROSS_SUFFIX}as") --set(LD "${CROSS_SUFFIX}ld") --set(RANLIB "${CROSS_SUFFIX}ranlib") --set(NM "${CROSS_SUFFIX}nm") --set(DLLWRAP "${CROSS_SUFFIX}dllwrap") --set(OBJCOPY "${CROSS_SUFFIX}objcopy") --set(OBJCONV "${CROSS_SUFFIX}objconv") -- - # OS dependent settings - include("${PROJECT_SOURCE_DIR}/cmake/os.cmake") - -@@ -149,11 +147,13 @@ if (NEED_PIC) - set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC") - endif () - -- if (${F_COMPILER} STREQUAL "SUN") -- set(FCOMMON_OPT "${FCOMMON_OPT} -pic") -- else () -- set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC") -- endif () -+ if (NOT NOFORTRAN) -+ if (${F_COMPILER} STREQUAL "SUN") -+ set(FCOMMON_OPT "${FCOMMON_OPT} -pic") -+ else () -+ set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC") -+ endif () -+ endif() - endif () - - if (DYNAMIC_ARCH) -@@ -174,7 +174,7 @@ if (NO_AVX) - set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") - endif () - --if (${ARCH} STREQUAL "x86") -+if (X86) - set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") - endif () - -@@ -182,25 +182,20 @@ if (NO_AVX2) - set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2") - endif () - --if (SMP) -+if (USE_THREAD) -+ # USE_SIMPLE_THREADED_LEVEL3 = 1 -+ # NO_AFFINITY = 1 - set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER") - -- if (${ARCH} STREQUAL "mips64") -+ if (MIPS64) - if (NOT ${CORE} STREQUAL "LOONGSON3B") - set(USE_SIMPLE_THREADED_LEVEL3 1) - endif () - endif () - -- if (USE_OPENMP) -- # USE_SIMPLE_THREADED_LEVEL3 = 1 -- # NO_AFFINITY = 1 -- set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP") -- endif () -- - if (BIGNUMA) - set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA") - endif () -- - endif () - - if (NO_WARMUP) -@@ -263,7 +258,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(NO_AFFINITY 1) - endif () - --if (NOT ${ARCH} STREQUAL "x86_64" AND NOT ${ARCH} STREQUAL "x86" AND NOT ${CORE} STREQUAL "LOONGSON3B") -+if (NOT X86_64 AND NOT X86 AND NOT ${CORE} STREQUAL "LOONGSON3B") - set(NO_AFFINITY 1) - endif () - -@@ -295,52 +290,19 @@ if (MIXED_MEMORY_ALLOCATION) - set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION") - endif () - --if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") -- set(TAR gtar) -- set(PATCH gpatch) -- set(GREP ggrep) --else () -- set(TAR tar) -- set(PATCH patch) -- set(GREP grep) --endif () -- --if (NOT DEFINED MD5SUM) -- set(MD5SUM md5sum) --endif () -- --set(AWK awk) -- --set(SED sed) -- - set(REVISION "-r${OpenBLAS_VERSION}") - set(MAJOR_VERSION ${OpenBLAS_MAJOR_VERSION}) - --if (DEBUG) -- set(COMMON_OPT "${COMMON_OPT} -g") --endif () -- --if (NOT DEFINED COMMON_OPT) -- set(COMMON_OPT "-O2") --endif () -- --#For x86 32-bit --if (DEFINED BINARY AND BINARY EQUAL 32) --if (NOT MSVC) -- set(COMMON_OPT "${COMMON_OPT} -m32") --endif() --endif() -- --set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}") -+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CCOMMON_OPT}") - if(NOT MSVC) --set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}") -+set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CCOMMON_OPT}") - endif() - # TODO: not sure what PFLAGS is -hpa --set(PFLAGS "${PFLAGS} ${COMMON_OPT} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}") -+set(PFLAGS "${PFLAGS} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}") - --set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${COMMON_OPT} ${FCOMMON_OPT}") -+set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FCOMMON_OPT}") - # TODO: not sure what FPFLAGS is -hpa --set(FPFLAGS "${FPFLAGS} ${COMMON_OPT} ${FCOMMON_OPT} ${COMMON_PROF}") -+set(FPFLAGS "${FPFLAGS} ${FCOMMON_OPT} ${COMMON_PROF}") - - #For LAPACK Fortran codes. - set(LAPACK_FFLAGS "${LAPACK_FFLAGS} ${CMAKE_Fortran_FLAGS}") -@@ -348,7 +310,7 @@ set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}") - - #Disable -fopenmp for LAPACK Fortran codes on Windows. - if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") -- set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parralel") -+ set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel") - foreach (FILTER_FLAG ${FILTER_FLAGS}) - string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS}) - string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS}) -@@ -386,7 +348,7 @@ if (NOT DEFINED LIBSUFFIX) - endif () - - if (DYNAMIC_ARCH) -- if (DEFINED SMP) -+ if (USE_THREAD) - set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}") - set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}") - else () -@@ -394,7 +356,7 @@ if (DYNAMIC_ARCH) - set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}") - endif () - else () -- if (DEFINED SMP) -+ if (USE_THREAD) - set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}") - set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}") - else () -@@ -436,7 +398,7 @@ endif () - set(USE_GEMM3M 0) - - if (DEFINED ARCH) -- if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64" OR ${ARCH} STREQUAL "ia64" OR ${ARCH} STREQUAL "MIPS") -+ if (X86 OR X86_64 OR ${ARCH} STREQUAL "ia64" OR MIPS64) - set(USE_GEMM3M 1) - endif () - -@@ -519,35 +481,3 @@ endif () - # export CUFLAGS - # export CULIB - #endif -- --#.SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f --# --#.f.$(SUFFIX): --# $(FC) $(FFLAGS) -c $< -o $(@F) --# --#.f.$(PSUFFIX): --# $(FC) $(FPFLAGS) -pg -c $< -o $(@F) -- --# these are not cross-platform --#ifdef BINARY64 --#PATHSCALEPATH = /opt/pathscale/lib/3.1 --#PGIPATH = /opt/pgi/linux86-64/7.1-5/lib --#else --#PATHSCALEPATH = /opt/pathscale/lib/3.1/32 --#PGIPATH = /opt/pgi/linux86/7.1-5/lib --#endif -- --#ACMLPATH = /opt/acml/4.3.0 --#ifneq ($(OSNAME), Darwin) --#MKLPATH = /opt/intel/mkl/10.2.2.025/lib --#else --#MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib --#endif --#ATLASPATH = /opt/atlas/3.9.17/opteron --#FLAMEPATH = $(HOME)/flame/lib --#ifneq ($(OSNAME), SunOS) --#SUNPATH = /opt/sunstudio12.1 --#else --#SUNPATH = /opt/SUNWspro --#endif -- -diff --git a/cmake/system_check.cmake b/cmake/system_check.cmake -new file mode 100644 -index 0000000..d47c38c ---- /dev/null -+++ b/cmake/system_check.cmake -@@ -0,0 +1,68 @@ -+## -+## Author: Hank Anderson -+## Description: Ported from the OpenBLAS/c_check perl script. -+## This is triggered by prebuild.cmake and runs before any of the code is built. -+## Creates config.h and Makefile.conf. -+ -+# Convert CMake vars into the format that OpenBLAS expects -+string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS) -+if (${HOST_OS} STREQUAL "WINDOWS") -+ set(HOST_OS WINNT) -+endif () -+ -+if(CMAKE_COMPILER_IS_GNUCC AND WIN32) -+ execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine -+ OUTPUT_VARIABLE OPENBLAS_GCC_TARGET_MACHINE -+ OUTPUT_STRIP_TRAILING_WHITESPACE) -+ if(OPENBLAS_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") -+ set(MINGW64 1) -+ endif() -+endif() -+ -+# Pretty thorough determination of arch. Add more if needed -+if(CMAKE_CL_64 OR MINGW64) -+ set(X86_64 1) -+elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING)) -+ set(X86 1) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc.*|power.*|Power.*") -+ set(PPC 1) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64.*") -+ set(MIPS64 1) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") -+ set(X86_64 1) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") -+ set(X86 1) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") -+ set(ARM 1) -+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") -+ set(ARM64 1) -+endif() -+ -+if (X86_64) -+ set(ARCH "x86_64") -+elseif(X86) -+ set(ARCH "x86") -+elseif(PPC) -+ set(ARCH "power") -+elseif(ARM) -+ set(ARCH "arm") -+elseif(ARM64) -+ set(ARCH "arm64") -+else() -+ set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture") -+endif () -+ -+if (NOT BINARY) -+ if (X86_64 OR ARM64 OR PPC OR MIPS64) -+ set(BINARY 64) -+ else () -+ set(BINARY 32) -+ endif () -+endif() -+ -+if(BINARY EQUAL 64) -+ set(BINARY64 1) -+else() -+ set(BINARY32 1) -+endif() -+ -diff --git a/ctest/CMakeLists.txt b/ctest/CMakeLists.txt -index 73070d4..14c9d19 100644 ---- a/ctest/CMakeLists.txt -+++ b/ctest/CMakeLists.txt -@@ -16,7 +16,7 @@ foreach(float_type ${FLOAT_TYPES}) - add_executable(x${float_char}cblat1 - c_${float_char}blat1.f - c_${float_char}blas1.c) -- target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME}_static) -+ target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME}) - add_test(NAME "x${float_char}cblat1" - COMMAND "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat1") - -@@ -28,7 +28,7 @@ foreach(float_type ${FLOAT_TYPES}) - auxiliary.c - c_xerbla.c - constant.c) -- target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME}_static) -+ target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME}) - add_test(NAME "x${float_char}cblat2" - COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat2" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in2") - -@@ -40,7 +40,7 @@ foreach(float_type ${FLOAT_TYPES}) - auxiliary.c - c_xerbla.c - constant.c) -- target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME}_static) -+ target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME}) - add_test(NAME "x${float_char}cblat3" - COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat3" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in3") - -diff --git a/driver/level2/CMakeLists.txt b/driver/level2/CMakeLists.txt -index aa5f031..8fceba9 100644 ---- a/driver/level2/CMakeLists.txt -+++ b/driver/level2/CMakeLists.txt -@@ -73,7 +73,7 @@ GenerateNamedObjects("zgbmv_k.c" "TRANS;CONJ;XCONJ" "gbmv_d" false "" "" "" 2) - # special defines for complex - foreach (float_type ${FLOAT_TYPES}) - -- if (SMP) -+ if (USE_THREAD) - GenerateNamedObjects("gemv_thread.c" "" "gemv_thread_n" false "" "" false ${float_type}) - GenerateNamedObjects("gemv_thread.c" "TRANSA" "gemv_thread_t" false "" "" false ${float_type}) - -@@ -107,7 +107,7 @@ foreach (float_type ${FLOAT_TYPES}) - GenerateNamedObjects("z${ulvm_source}" "LOWER;HEMVREV" "${op_name}_M" false "" "" false ${float_type}) - endforeach() - -- if (SMP) -+ if (USE_THREAD) - - GenerateNamedObjects("gemv_thread.c" "CONJ" "gemv_thread_r" false "" "" false ${float_type}) - GenerateNamedObjects("gemv_thread.c" "CONJ;TRANSA" "gemv_thread_c" false "" "" false ${float_type}) -@@ -186,7 +186,7 @@ foreach (float_type ${FLOAT_TYPES}) - GenerateCombinationObjects("${l_source}" "UNIT" "N" "TRANSA" 0 "${op_name}_TU" false ${float_type}) - endforeach () - -- if (SMP) -+ if (USE_THREAD) - GenerateNamedObjects("ger_thread.c" "" "" false "" "" false ${float_type}) - foreach(nu_smp_source ${NU_SMP_SOURCES}) - string(REGEX MATCH "[a-z]+_[a-z]+" op_name ${nu_smp_source}) -@@ -197,7 +197,7 @@ foreach (float_type ${FLOAT_TYPES}) - endif () - endforeach () - --if (SMP) -+if (USE_THREAD) - GenerateCombinationObjects("${UL_SMP_SOURCES}" "LOWER" "U" "" 2) - endif () - -diff --git a/driver/level3/CMakeLists.txt b/driver/level3/CMakeLists.txt -index c91e85f..f788c45 100644 ---- a/driver/level3/CMakeLists.txt -+++ b/driver/level3/CMakeLists.txt -@@ -9,7 +9,7 @@ set(GEMM_COMPLEX_DEFINES RN CN RT CT NR TR RR CR NC TC RC CC) - foreach (GEMM_DEFINE ${GEMM_DEFINES}) - string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) - GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0) -- if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) -+ if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) - GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0) - endif () - endforeach () -@@ -32,7 +32,7 @@ GenerateCombinationObjects("syrk_k.c" "LOWER;TRANS" "U;N" "" 1) - GenerateCombinationObjects("syr2k_k.c" "LOWER;TRANS" "U;N" "" 1) - GenerateCombinationObjects("syrk_kernel.c" "LOWER" "U" "" 2) - GenerateCombinationObjects("syr2k_kernel.c" "LOWER" "U" "" 2) --if (SMP) -+if (USE_THREAD) - - # N.B. these do NOT have a float type (e.g. DOUBLE) defined! - GenerateNamedObjects("gemm_thread_m.c;gemm_thread_n.c;gemm_thread_mn.c;gemm_thread_variable.c;syrk_thread.c" "" "" 0 "" "" 1) -@@ -71,7 +71,7 @@ foreach (float_type ${FLOAT_TYPES}) - GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER" "her2k_LN" false "" "" false ${float_type}) - GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER;TRANS;CONJ" "her2k_LC" false "" "" false ${float_type}) - -- if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) -+ if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) - #herk - GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3" 3 "herk_thread_N" false ${float_type}) - GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3;TRANS;CONJ" 3 "herk_thread_C" false ${float_type}) -@@ -93,7 +93,7 @@ foreach (float_type ${FLOAT_TYPES}) - if(USE_GEMM3M) - GenerateNamedObjects("gemm3m.c" "${gemm_define}" "gemm3m_${gemm_define_LC}" false "" "" false ${float_type}) - endif() -- if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) -+ if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) - GenerateNamedObjects("gemm.c" "${gemm_define};THREADED_LEVEL3" "gemm_thread_${gemm_define_LC}" false "" "" false ${float_type}) - if(USE_GEMM3M) - GenerateNamedObjects("gemm3m.c" "${gemm_define};THREADED_LEVEL3" "gemm3m_thread_${gemm_define_LC}" false "" "" false ${float_type}) -@@ -106,7 +106,7 @@ foreach (float_type ${FLOAT_TYPES}) - foreach (GEMM_DEFINE ${GEMM_DEFINES}) - string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) - GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE}" "gemm3m_${GEMM_DEFINE_LC}" false "" "" false ${float_type}) -- if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) -+ if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) - GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm3m_thread_${GEMM_DEFINE_LC}" false "" "" false ${float_type}) - endif () - endforeach () -diff --git a/driver/others/CMakeLists.txt b/driver/others/CMakeLists.txt -index 376cc66..e20b14e 100644 ---- a/driver/others/CMakeLists.txt -+++ b/driver/others/CMakeLists.txt -@@ -7,7 +7,7 @@ else () - set(MEMORY memory.c) - endif () - --if (SMP) -+if (USE_THREAD) - - if (USE_OPENMP) - set(BLAS_SERVER blas_server_omp.c) -diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt -index 849ef21..09e513c 100644 ---- a/kernel/CMakeLists.txt -+++ b/kernel/CMakeLists.txt -@@ -21,8 +21,8 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - endif () - - if (${ADD_COMMONOBJS}) -- if (${ARCH} STREQUAL "x86") -- if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") -+ if (X86) -+ if (NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") - GenerateNamedObjects("${KERNELDIR}/cpuid.S" "" "" false "" "" true) - else() - GenerateNamedObjects("${KERNELDIR}/cpuid_win.c" "" "" false "" "" true) -@@ -121,7 +121,7 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - # Makefile.L3 - set(USE_TRMM false) - -- if (${ARCH} STREQUAL "arm" OR ${ARCH} STREQUAL "arm64" OR "${TARGET}" STREQUAL "LONGSOON3B" OR "${TARGET}" STREQUAL "GENERIC" OR "${CORE}" STREQUAL "generic" OR "${TARGET}" STREQUAL "HASWELL" OR "${CORE}" STREQUAL "haswell" OR "{CORE}" STREQUAL "zen") -+ if (ARM OR ARM64 OR "${TARGET}" STREQUAL "LONGSOON3B" OR "${TARGET}" STREQUAL "GENERIC" OR "${CORE}" STREQUAL "generic" OR "${TARGET}" STREQUAL "HASWELL" OR "${CORE}" STREQUAL "haswell" OR "{CORE}" STREQUAL "zen") - set(USE_TRMM true) - endif () - -@@ -464,6 +464,30 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - GenerateNamedObjects("${KERNELDIR}/${${float_char}GEADD_KERNEL}" "" "geadd_k" false "" "" false ${float_type}) - endforeach () - -+ # Makefile.LA -+ if(NOT NO_LAPACK) -+ foreach (float_type ${FLOAT_TYPES}) -+ if (NOT DEFINED ${float_char}NEG_TCOPY) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C" OR ${float_char} STREQUAL "X") -+ set(${float_char}NEG_TCOPY ../generic/zneg_tcopy.c) -+ else () -+ set(${float_char}NEG_TCOPY ../generic/neg_tcopy.c) -+ endif () -+ endif () -+ -+ if (NOT DEFINED ${float_char}LASWP_NCOPY) -+ if (${float_char} STREQUAL "Z" OR ${float_char} STREQUAL "C" OR ${float_char} STREQUAL "X") -+ set(${float_char}LASWP_NCOPY ../generic/zlaswp_ncopy.c) -+ else () -+ set(${float_char}LASWP_NCOPY ../generic/laswp_ncopy.c) -+ endif () -+ endif () -+ string(SUBSTRING ${float_type} 0 1 float_char) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}NEG_TCOPY}_${${float_char}GEMM_UNROLL_M}" "" "neg_tcopy" false "" "" false ${float_type}) -+ GenerateNamedObjects("${KERNELDIR}/${${float_char}LASWP_NCOPY}_${${float_char}GEMM_UNROLL_N}" "" "laswp_ncopy" false "" "" false ${float_type}) -+ endforeach() -+ endif() -+ - if (${DYNAMIC_ARCH}) - set(SETPARAM_TARGET_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/setparam-ref.c SETPARAM_REF_CONTENTS) -@@ -484,9 +508,6 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - file(REMOVE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp) - endif () - -- # Makefile.LA -- #DBLASOBJS += dneg_tcopy$(TSUFFIX).$(SUFFIX) dlaswp_ncopy$(TSUFFIX).$(SUFFIX) -- - add_library(kernel${TSUFFIX} OBJECT ${OPENBLAS_SRC}) - set_target_properties(kernel${TSUFFIX} PROPERTIES COMPILE_FLAGS "${KERNEL_DEFINITIONS}") - get_target_property(KERNEL_INCLUDE_DIRECTORIES kernel${TSUFFIX} INCLUDE_DIRECTORIES) -diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt -index b613c6c..9fb0006 100644 ---- a/lapack/CMakeLists.txt -+++ b/lapack/CMakeLists.txt -@@ -46,7 +46,7 @@ GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3) - GenerateNamedObjects("laswp/generic/laswp_k.c" "" "laswp_plus" false "" "" false 3) - GenerateNamedObjects("laswp/generic/laswp_k.c" "MINUS" "laswp_minus" false "" "" false 3) - --if (SMP) -+if (USE_THREAD) - - if (USE_OPENMP) - set(GETRF_SRC getrf/getrf_parallel_omp.c) -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 69a1ceb..adeee34 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -11,7 +11,7 @@ set(OpenBLAS_Tests - - foreach(test_bin ${OpenBLAS_Tests}) - add_executable(${test_bin} ${test_bin}.f) --target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME}_static) -+target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME}) - endforeach() - - # $1 exec, $2 input, $3 output_result diff --git a/recipe/gh_1323.patch b/recipe/gh_1323.patch deleted file mode 100644 index cb537d2..0000000 --- a/recipe/gh_1323.patch +++ /dev/null @@ -1,123 +0,0 @@ -From c7a8512d121c15a2f4fde2f156853b1335971f27 Mon Sep 17 00:00:00 2001 -From: Martin Kroeker -Date: Mon, 9 Oct 2017 23:34:18 +0200 -Subject: [PATCH] Cmake fixes for DYNAMIC_ARCH builds and whitespace in path - names (#1323) - -* prebuild.cmake: Put quotes around path names that may contain whitespace -(Copied from alexkaratakis' PR #1295) -* kernel/CMakeLists.txt: Fix common_lapack header inclusion and DYNAMIC_ARCH generation of ?neg_tcopy and ?laswp_ncopy files -* lapack/CMakeLists.txt: Use correct template for ?laswp_(plus,minus) functions ---- - cmake/prebuild.cmake | 12 ++++++------ - kernel/CMakeLists.txt | 13 +++++++++++-- - lapack/CMakeLists.txt | 13 ++++++++++--- - 3 files changed, 27 insertions(+), 11 deletions(-) - -diff --git a/cmake/prebuild.cmake b/cmake/prebuild.cmake -index cc54756..b783ef9 100644 ---- a/cmake/prebuild.cmake -+++ b/cmake/prebuild.cmake -@@ -192,7 +192,7 @@ else(NOT CMAKE_CROSSCOMPILING) - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - try_compile(GETARCH_RESULT ${GETARCH_DIR} - SOURCES ${GETARCH_SRC} -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I"${PROJECT_SOURCE_DIR}" -I"${PROJECT_BINARY_DIR}" - OUTPUT_VARIABLE GETARCH_LOG - COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} - ) -@@ -204,8 +204,8 @@ else(NOT CMAKE_CROSSCOMPILING) - message(STATUS "Running getarch") - - # use the cmake binary w/ the -E param to run a shell command in a cross-platform way -- execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT) -- execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 1 OUTPUT_VARIABLE GETARCH_CONF_OUT) -+execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT) -+execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 1 OUTPUT_VARIABLE GETARCH_CONF_OUT) - - message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}") - -@@ -220,7 +220,7 @@ else(NOT CMAKE_CROSSCOMPILING) - if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") - try_compile(GETARCH2_RESULT ${GETARCH2_DIR} - SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c -- COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -+ COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I"${PROJECT_SOURCE_DIR}" -I"${PROJECT_BINARY_DIR}" - OUTPUT_VARIABLE GETARCH2_LOG - COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} - ) -@@ -231,8 +231,8 @@ else(NOT CMAKE_CROSSCOMPILING) - endif () - - # use the cmake binary w/ the -E param to run a shell command in a cross-platform way -- execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT) -- execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) -+execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT) -+execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) - - # append config data from getarch_2nd to the TARGET file and read in CMake vars - file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) -diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt -index 09e513c..a720f62 100644 ---- a/kernel/CMakeLists.txt -+++ b/kernel/CMakeLists.txt -@@ -16,7 +16,7 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - ParseMakefileVars("${KERNELDIR}/KERNEL.${TARGET_CORE}") - - set(KERNEL_INTERFACE common_level1.h common_level2.h common_level3.h) -- if(NOT ${NO_LAPACK}) -+ if(NOT NO_LAPACK) - set(KERNEL_INTERFACE ${KERNEL_INTERFACE} common_lapack.h) - endif () - -@@ -500,12 +500,21 @@ function (build_core TARGET_CORE KDIR TSUFFIX KERNEL_DEFINITIONS) - set(KERNEL_TSUFFIX_CONTENTS "") - foreach (KERNEL_INTERFACE_H ${KERNEL_INTERFACE}) - file(READ ${PROJECT_SOURCE_DIR}/${KERNEL_INTERFACE_H} KERNEL_INTERFACE_H_CONTENTS) -- string(REGEX REPLACE "[ ]*\\(" "${TSUFFIX}(" KERNEL_INTERFACE_H_CONTENTS_NEW "${KERNEL_INTERFACE_H_CONTENTS}") -+ string(REGEX REPLACE " *\\(" "${TSUFFIX}(" KERNEL_INTERFACE_H_CONTENTS_NEW "${KERNEL_INTERFACE_H_CONTENTS}") - set(KERNEL_TSUFFIX_CONTENTS "${KERNEL_TSUFFIX_CONTENTS}\n${KERNEL_INTERFACE_H_CONTENTS_NEW}") - endforeach() - file(WRITE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp "${KERNEL_TSUFFIX_CONTENTS}") - configure_file(${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.h COPYONLY) - file(REMOVE ${SETPARAM_TARGET_DIR}/kernel${TSUFFIX}.tmp) -+ -+ foreach (float_type ${FLOAT_TYPES}) -+ # a bit of metaprogramming here to pull out the appropriate KERNEL var -+ string(SUBSTRING ${float_type} 0 1 float_char) -+ GenerateNamedObjects("generic/neg_tcopy_${${float_char}GEMM_UNROLL_M}.c" "" "neg_tcopy" false "" ${TSUFFIX} false ${float_type}) -+ GenerateNamedObjects("generic/laswp_ncopy_${${float_char}GEMM_UNROLL_N}.c" "" "laswp_ncopy" false "" ${TSUFFIX} false ${float_type}) -+ endforeach () -+ -+ - endif () - - add_library(kernel${TSUFFIX} OBJECT ${OPENBLAS_SRC}) -diff --git a/lapack/CMakeLists.txt b/lapack/CMakeLists.txt -index 9fb0006..c0a7543 100644 ---- a/lapack/CMakeLists.txt -+++ b/lapack/CMakeLists.txt -@@ -42,9 +42,16 @@ set(UNIT_SOURCES2 - GenerateNamedObjects("${LAPACK_SOURCES}") - GenerateNamedObjects("${LAPACK_MANGLED_SOURCES}" "" "" false "" "" false 3) - --# TODO: laswp needs arch specific code --GenerateNamedObjects("laswp/generic/laswp_k.c" "" "laswp_plus" false "" "" false 3) --GenerateNamedObjects("laswp/generic/laswp_k.c" "MINUS" "laswp_minus" false "" "" false 3) -+GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" "" false 3) -+GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" "" false 3) -+ -+# dynamic_arch laswp needs arch specific code ? -+#foreach(TARGET_CORE ${DYNAMIC_CORE}) -+# set(TSUFFIX "_${TARGET_CORE}") -+# -+#GenerateNamedObjects("laswp/generic/laswp_k_4.c" "" "laswp_plus" false "" ${TSUFFIX} false 3) -+#GenerateNamedObjects("laswp/generic/laswp_k_4.c" "MINUS" "laswp_minus" false "" ${TSUFFIX} false 3) -+#endforeach () - - if (USE_THREAD) - --- -2.7.4 - diff --git a/recipe/gh_1350.patch b/recipe/gh_1350.patch deleted file mode 100644 index 064ff0b..0000000 --- a/recipe/gh_1350.patch +++ /dev/null @@ -1,1198 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 4fdfb3f..6c52b25 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -70,6 +70,10 @@ if (NOT DEFINED BUILD_SINGLE AND NOT DEFINED BUILD_DOUBLE AND NOT DEFINED BUILD_ - set(BUILD_COMPLEX16 true) - endif () - -+if (NOT DEFINED BUILD_MATGEN) -+ set(BUILD_MATGEN true) -+endif() -+ - set(FLOAT_TYPES "") - if (BUILD_SINGLE) - message(STATUS "Building Single Precision") -@@ -163,7 +167,7 @@ set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES LIBRARY_OUTPUT_NAME_DEBUG - - foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) - string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) -- -+ - set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) - set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) - set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) -@@ -194,7 +198,7 @@ if (NOT MSVC AND NOT NOFORTRAN) - endif() - endif() - --set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES -+set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES - VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION} - SOVERSION ${OpenBLAS_MAJOR_VERSION} - ) -@@ -206,7 +210,7 @@ install(TARGETS ${OpenBLAS_LIBNAME} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) -- -+ - message(STATUS "Generating openblas_config.h in ${CMAKE_INSTALL_INCLUDEDIR}") - - set(OPENBLAS_CONFIG_H ${CMAKE_BINARY_DIR}/openblas_config.h) -@@ -250,7 +254,7 @@ if(NOT NO_LAPACKE) - add_dependencies( ${OpenBLAS_LIBNAME} genlapacke) - FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/*.h") - install (FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -- -+ - ADD_CUSTOM_TARGET(genlapacke - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke_mangling_with_flags.h.in "${CMAKE_BINARY_DIR}/lapacke_mangling.h" - ) -diff --git a/appveyor.yml b/appveyor.yml -index 1c0474d..4eaae5e 100644 ---- a/appveyor.yml -+++ b/appveyor.yml -@@ -24,23 +24,32 @@ skip_commits: - message: /\[av skip\]/ - - environment: -+ global: -+ CONDA_INSTALL_LOCN: C:\\Miniconda36-x64 - matrix: - - COMPILER: clang-cl -- DYNAMIC_ARCH: ON -+ WITH_FORTRAN: yes - - COMPILER: clang-cl -+ DYNAMIC_ARCH: ON -+ WITH_FORTRAN: no - - COMPILER: cl - - install: -- - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat -+ - if [%COMPILER%]==[clang-cl] call %CONDA_INSTALL_LOCN%\Scripts\activate.bat - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force -- - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake -+ - if [%WITH_FORTRAN%]==[yes] conda config --add channels isuruf/label/flang --force -+ - if [%COMPILER%]==[clang-cl] conda install --yes --quiet clangdev ninja cmake -+ - if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet flangdev clangdev cmake - - if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -+ - if [%COMPILER%]==[clang-cl] set "LIB=%CONDA_INSTALL_LOCN%\Library\lib;%LIB%" -+ - if [%COMPILER%]==[clang-cl] set "CPATH=%CONDA_INSTALL_LOCN%\Library\include;%CPATH%" - - before_build: - - echo Running cmake... - - cd c:\projects\OpenBLAS - - if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" . -- - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl . -+ - if [%WITH_FORTRAN%]==[no] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl . -+ - if [%WITH_FORTRAN%]==[yes] cmake -G "NMake Makefiles" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_WITHOUT_LAPACK=no -DNOFORTRAN=0 . - - if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON . - - build_script: -diff --git a/cmake/f_check.cmake b/cmake/f_check.cmake -index 4848553..f877fc3 100644 ---- a/cmake/f_check.cmake -+++ b/cmake/f_check.cmake -@@ -20,12 +20,6 @@ - # NEEDBUNDERSCORE - # NEED2UNDERSCORES - --if (MSVC) -- # had to do this for MSVC, else CMake automatically assumes I have ifort... -hpa -- include(CMakeForceCompiler) -- CMAKE_FORCE_Fortran_COMPILER(gfortran GNU) --endif () -- - if (NOT NO_LAPACK) - enable_language(Fortran) - else() -diff --git a/cmake/lapack.cmake b/cmake/lapack.cmake -index e6cd537..a4ac00e 100644 ---- a/cmake/lapack.cmake -+++ b/cmake/lapack.cmake -@@ -1,387 +1,485 @@ - # Sources for compiling lapack-netlib. Can't use CMakeLists.txt because lapack-netlib already has its own cmake files. - --set(ALLAUX -- ilaenv.f ieeeck.f lsamen.f xerbla_array.f iparmq.f -- ilaprec.f ilatrans.f ilauplo.f iladiag.f iparam2stage.F chla_transtype.f -- ../INSTALL/ilaver.f ../INSTALL/slamch.f --) -+set(ALLAUX ilaenv.f ieeeck.f lsamen.f iparmq.f iparam2stage.F -+ ilaprec.f ilatrans.f ilauplo.f iladiag.f chla_transtype.f -+ ../INSTALL/ilaver.f xerbla_array.f -+ ../INSTALL/slamch.f) - - set(SCLAUX -- sbdsdc.f -- sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f slaebz.f -- slaed0.f slaed1.f slaed2.f slaed3.f slaed4.f slaed5.f slaed6.f -- slaed7.f slaed8.f slaed9.f slaeda.f slaev2.f slagtf.f -- slagts.f slamrg.f slanst.f -- slapy2.f slapy3.f slarnv.f -- slarra.f slarrb.f slarrc.f slarrd.f slarre.f slarrf.f slarrj.f -- slarrk.f slarrr.f slaneg.f -- slartg.f slaruv.f slas2.f slascl.f -- slasd0.f slasd1.f slasd2.f slasd3.f slasd4.f slasd5.f slasd6.f -- slasd7.f slasd8.f slasda.f slasdq.f slasdt.f -- slaset.f slasq1.f slasq2.f slasq3.f slasq4.f slasq5.f slasq6.f -- slasr.f slasrt.f slassq.f slasv2.f spttrf.f sstebz.f sstedc.f -- ssteqr.f ssterf.f slaisnan.f sisnan.f -- slartgp.f slartgs.f -- ../INSTALL/second_${TIMER}.f --) -+ sbdsdc.f -+ sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f slaebz.f -+ slaed0.f slaed1.f slaed2.f slaed3.f slaed4.f slaed5.f slaed6.f -+ slaed7.f slaed8.f slaed9.f slaeda.f slaev2.f slagtf.f -+ slagts.f slamrg.f slanst.f -+ slapy2.f slapy3.f slarnv.f -+ slarra.f slarrb.f slarrc.f slarrd.f slarre.f slarrf.f slarrj.f -+ slarrk.f slarrr.f slaneg.f -+ slartg.f slaruv.f slas2.f slascl.f -+ slasd0.f slasd1.f slasd2.f slasd3.f slasd4.f slasd5.f slasd6.f -+ slasd7.f slasd8.f slasda.f slasdq.f slasdt.f -+ slaset.f slasq1.f slasq2.f slasq3.f slasq4.f slasq5.f slasq6.f -+ slasr.f slasrt.f slassq.f slasv2.f spttrf.f sstebz.f sstedc.f -+ ssteqr.f ssterf.f slaisnan.f sisnan.f -+ slartgp.f slartgs.f -+ ../INSTALL/second_${TIMER}.f) - - set(DZLAUX -- dbdsdc.f dbdsvdx.f -- dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f -- dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f -- dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f -- dlagts.f dlamrg.f dlanst.f -- dlapy2.f dlapy3.f dlarnv.f -- dlarra.f dlarrb.f dlarrc.f dlarrd.f dlarre.f dlarrf.f dlarrj.f -- dlarrk.f dlarrr.f dlaneg.f -- dlartg.f dlaruv.f dlas2.f dlascl.f -- dlasd0.f dlasd1.f dlasd2.f dlasd3.f dlasd4.f dlasd5.f dlasd6.f -- dlasd7.f dlasd8.f dlasda.f dlasdq.f dlasdt.f -- dlaset.f dlasq1.f dlasq2.f dlasq3.f dlasq4.f dlasq5.f dlasq6.f -- dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f -- dsteqr.f dsterf.f dlaisnan.f disnan.f -- dlartgp.f dlartgs.f -- ../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f -- dgelq.f dgelqt.f dgelqt3.f dgemlq.f dgemlqt.f dgemqr.f dgeqr.f -- dgetsls.f dlamswlq.f dlamtsqr.f dlaswlq.f dlatsqr.f dtplqt.f -- dtplqt2.f dtpmlqt.f dsysv_aa.f dsytrf_aa.f dsytrs_aa.f dlasyf_aa.f -- dsytf2_rk.f dlasyf_rk.f dsytrf_rk.f dsytrs_3.f dsycon_3.f dsytri_3.f -- dsytri_3x.f dsysv_rk.f dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f -- dsbevx_2stage.f dsyev_2stage.f dsyevd_2stage.f dsyevr_2stage.f -- dsyevx_2stage.f dsygv_2stage.f dsytrd_2stage.f dsytrd_sb2st.F -- dsytrd_sy2sb.f dlarfy.f --) -+ dbdsdc.f -+ dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f -+ dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f -+ dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f -+ dlagts.f dlamrg.f dlanst.f -+ dlapy2.f dlapy3.f dlarnv.f -+ dlarra.f dlarrb.f dlarrc.f dlarrd.f dlarre.f dlarrf.f dlarrj.f -+ dlarrk.f dlarrr.f dlaneg.f -+ dlartg.f dlaruv.f dlas2.f dlascl.f -+ dlasd0.f dlasd1.f dlasd2.f dlasd3.f dlasd4.f dlasd5.f dlasd6.f -+ dlasd7.f dlasd8.f dlasda.f dlasdq.f dlasdt.f -+ dlaset.f dlasq1.f dlasq2.f dlasq3.f dlasq4.f dlasq5.f dlasq6.f -+ dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f -+ dsteqr.f dsterf.f dlaisnan.f disnan.f -+ dlartgp.f dlartgs.f -+ ../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f) - - set(SLASRC -- sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f -- sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f -- sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f -- DEPRECATED/sgegs.f DEPRECATED/sgegv.f sgehd2.f sgehrd.f sgelq2.f sgelqf.f -- sgels.f sgelsd.f sgelss.f DEPRECATED/sgelsx.f sgelsy.f sgeql2.f sgeqlf.f -- sgeqp3.f DEPRECATED/sgeqpf.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f -- sgerq2.f sgerqf.f sgesc2.f sgesdd.f sgesvd.f sgesvdx.f sgesvx.f -- sgetc2.f sgetri.f sgetrf2.f -- sggbak.f sggbal.f sgghd3.f sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f -- sggglm.f sgghrd.f sgglse.f sggqrf.f -- sggrqf.f DEPRECATED/sggsvd.f sggsvd3.f DEPRECATED/sggsvp.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f -- sgtsvx.f sgttrf.f sgttrs.f sgtts2.f shgeqz.f -- shsein.f shseqr.f slabrd.f slacon.f slacn2.f -- slaein.f slaexc.f slag2.f slags2.f slagtm.f slagv2.f slahqr.f -- DEPRECATED/slahrd.f slahr2.f slaic1.f slaln2.f slals0.f slalsa.f slalsd.f -- slangb.f slange.f slangt.f slanhs.f slansb.f slansp.f -- slansy.f slantb.f slantp.f slantr.f slanv2.f -- slapll.f slapmt.f -- slaqgb.f slaqge.f slaqp2.f slaqps.f slaqsb.f slaqsp.f slaqsy.f -- slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f -- slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f -- slarf.f slarfb.f slarfg.f slarfgp.f slarft.f slarfx.f slargv.f -- slarrv.f slartv.f -- slarz.f slarzb.f slarzt.f slasy2.f slasyf.f slasyf_rook.f -- slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f DEPRECATED/slatzm.f -- sopgtr.f sopmtr.f sorg2l.f sorg2r.f -- sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f -- sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f -- sormbr.f sormhr.f sorml2.f sormlq.f sormql.f sormqr.f sormr2.f -- sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f -- spbstf.f spbsv.f spbsvx.f -- spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f -- sposvx.f spstrf.f spstf2.f -- sppcon.f sppequ.f -- spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f -- spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f -- ssbev.f ssbevd.f ssbevx.f ssbgst.f ssbgv.f ssbgvd.f ssbgvx.f -- ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f -- sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f -- ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f -- sstevx.f -- ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f -- ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f -- ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f -- ssyswapr.f ssytrs.f ssytrs2.f ssyconv.f -- ssytf2_rook.f ssytrf_rook.f ssytrs_rook.f -- ssytri_rook.f ssycon_rook.f ssysv_rook.f -- stbcon.f -- stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f -- stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f -- stptrs.f -- strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f -- strtrs.f DEPRECATED/stzrqf.f stzrzf.f sstemr.f -- slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f -- stfttr.f stpttf.f stpttr.f strttf.f strttp.f -- sgejsv.f sgesvj.f sgsvj0.f sgsvj1.f -- sgeequb.f ssyequb.f spoequb.f sgbequb.f -- sbbcsd.f slapmr.f sorbdb.f sorbdb1.f sorbdb2.f sorbdb3.f sorbdb4.f -- sorbdb5.f sorbdb6.f sorcsd.f sorcsd2by1.f -- sgeqrt.f sgeqrt2.f sgeqrt3.f sgemqrt.f -- stpqrt.f stpqrt2.f stpmqrt.f stprfb.f spotri.f -- sgelq.f sgelqt.f sgelqt3.f sgemlq.f sgemlqt.f sgemqr.f sgeqr.f sgetsls.f -- slamswlq.f slamtsqr.f slaswlq.f slatsqr.f stplqt.f stplqt2.f stpmlqt.f -- ssysv_aa.f ssytrf_aa.f ssytrs_aa.f slasyf_aa.f ssytf2_rk.f slasyf_rk.f -- ssytrf_rk.f ssytrs_3.f ssycon_3.f ssytri_3.f ssytri_3x.f ssysv_rk.f -- ssb2st_kernels.f ssbev_2stage.f ssbevd_2stage.f ssbevx_2stage.f -- ssyev_2stage.f ssyevd_2stage.f ssyevr_2stage.f ssyevx_2stage.f -- ssygv_2stage.f ssytrd_2stage.f ssytrd_sb2st.F ssytrd_sy2sb.f slarfy.f --) -+ sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f -+ sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f -+ sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f -+ sgehd2.f sgehrd.f sgelq2.f sgelqf.f -+ sgels.f sgelsd.f sgelss.f sgelsy.f sgeql2.f sgeqlf.f -+ sgeqp3.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f sgerq2.f sgerqf.f -+ sgesc2.f sgesdd.f sgesvd.f sgesvdx.f sgesvx.f sgetc2.f -+ sgetrf2.f sgetri.f -+ sggbak.f sggbal.f -+ sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f -+ sggglm.f sgghrd.f sgghd3.f sgglse.f sggqrf.f -+ sggrqf.f sggsvd3.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f -+ sgtsvx.f sgttrf.f sgttrs.f sgtts2.f shgeqz.f -+ shsein.f shseqr.f slabrd.f slacon.f slacn2.f -+ slaein.f slaexc.f slag2.f slags2.f slagtm.f slagv2.f slahqr.f -+ slahr2.f slaic1.f slaln2.f slals0.f slalsa.f slalsd.f -+ slangb.f slange.f slangt.f slanhs.f slansb.f slansp.f -+ slansy.f slantb.f slantp.f slantr.f slanv2.f -+ slapll.f slapmt.f -+ slaqgb.f slaqge.f slaqp2.f slaqps.f slaqsb.f slaqsp.f slaqsy.f -+ slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f -+ slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f -+ slarf.f slarfb.f slarfg.f slarfgp.f slarft.f slarfx.f slarfy.f slargv.f -+ slarrv.f slartv.f -+ slarz.f slarzb.f slarzt.f slasy2.f -+ slasyf.f slasyf_rook.f slasyf_rk.f slasyf_aa.f -+ slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f -+ sopgtr.f sopmtr.f sorg2l.f sorg2r.f -+ sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f -+ sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f -+ sormbr.f sormhr.f sorml2.f sormlq.f sormql.f sormqr.f sormr2.f -+ sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f -+ spbstf.f spbsv.f spbsvx.f -+ spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f -+ sposvx.f spotrf2.f spotri.f spstrf.f spstf2.f -+ sppcon.f sppequ.f -+ spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f -+ spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f -+ ssbev.f ssbevd.f ssbevx.f ssbgst.f ssbgv.f ssbgvd.f ssbgvx.f -+ ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f -+ sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f -+ ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f -+ sstevx.f ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f -+ ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f -+ ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f -+ ssyswapr.f ssytrs.f ssytrs2.f -+ ssyconv.f ssyconvf.f ssyconvf_rook.f -+ ssysv_aa.f ssytrf_aa.f ssytrs_aa.f -+ ssytf2_rook.f ssytrf_rook.f ssytrs_rook.f -+ ssytri_rook.f ssycon_rook.f ssysv_rook.f -+ ssytf2_rk.f ssytrf_rk.f ssytrs_3.f -+ ssytri_3.f ssytri_3x.f ssycon_3.f ssysv_rk.f -+ ssysv_aa.f ssytrf_aa.f ssytrs_aa.f -+ stbcon.f -+ stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f -+ stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f -+ stptrs.f -+ strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f -+ strtrs.f stzrzf.f sstemr.f -+ slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f -+ stfttr.f stpttf.f stpttr.f strttf.f strttp.f -+ sgejsv.f sgesvj.f sgsvj0.f sgsvj1.f -+ sgeequb.f ssyequb.f spoequb.f sgbequb.f -+ sbbcsd.f slapmr.f sorbdb.f sorbdb1.f sorbdb2.f sorbdb3.f sorbdb4.f -+ sorbdb5.f sorbdb6.f sorcsd.f sorcsd2by1.f -+ sgeqrt.f sgeqrt2.f sgeqrt3.f sgemqrt.f -+ stpqrt.f stpqrt2.f stpmqrt.f stprfb.f -+ sgelqt.f sgelqt3.f sgemlqt.f -+ sgetsls.f sgeqr.f slatsqr.f slamtsqr.f sgemqr.f -+ sgelq.f slaswlq.f slamswlq.f sgemlq.f -+ stplqt.f stplqt2.f stpmlqt.f -+ ssytrd_2stage.f ssytrd_sy2sb.f ssytrd_sb2st.F ssb2st_kernels.f -+ ssyevd_2stage.f ssyev_2stage.f ssyevx_2stage.f ssyevr_2stage.f -+ ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f) - --set(DSLASRC spotrs.f spotrf2.f) -+set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f -+ sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f -+ sla_syrfsx_extended.f sla_syamv.f sla_syrcond.f sla_syrpvgrw.f -+ sposvxx.f sporfsx.f sla_porfsx_extended.f sla_porcond.f -+ sla_porpvgrw.f sgbsvxx.f sgbrfsx.f sla_gbrfsx_extended.f -+ sla_gbamv.f sla_gbrcond.f sla_gbrpvgrw.f sla_lin_berr.f slarscl2.f -+ slascl2.f sla_wwaddw.f) - - set(CLASRC -- cbdsqr.f cgbbrd.f cgbcon.f cgbequ.f cgbrfs.f cgbsv.f cgbsvx.f -- cgbtf2.f cgbtrf.f cgbtrs.f cgebak.f cgebal.f cgebd2.f cgebrd.f -- cgecon.f cgeequ.f cgees.f cgeesx.f cgeev.f cgeevx.f -- DEPRECATED/cgegs.f DEPRECATED/cgegv.f cgehd2.f cgehrd.f cgelq2.f cgelqf.f -- cgels.f cgelsd.f cgelss.f DEPRECATED/cgelsx.f cgelsy.f cgeql2.f cgeqlf.f cgeqp3.f -- DEPRECATED/cgeqpf.f cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f -- cgerq2.f cgerqf.f cgesc2.f cgesdd.f cgesvd.f -- cgesvx.f cgetc2.f cgetri.f -- cggbak.f cggbal.f cgges.f cggesx.f cggev.f cggevx.f cggglm.f -- cgghrd.f cgglse.f cggqrf.f cggrqf.f -- DEPRECATED/cggsvd.f DEPRECATED/cggsvp.f -- cgtcon.f cgtrfs.f cgtsv.f cgtsvx.f cgttrf.f cgttrs.f cgtts2.f chbev.f -- chbevd.f chbevx.f chbgst.f chbgv.f chbgvd.f chbgvx.f chbtrd.f -- checon.f cheev.f cheevd.f cheevr.f cheevx.f chegs2.f chegst.f -- chegv.f chegvd.f chegvx.f cherfs.f chesv.f chesvx.f chetd2.f -- chetf2.f chetrd.f -- chetrf.f chetri.f chetri2.f chetri2x.f cheswapr.f -- chetrs.f chetrs2.f -- chetf2_rook.f chetrf_rook.f chetri_rook.f chetrs_rook.f checon_rook.f chesv_rook.f -- chgeqz.f chpcon.f chpev.f chpevd.f -- chpevx.f chpgst.f chpgv.f chpgvd.f chpgvx.f chprfs.f chpsv.f -- chpsvx.f -- chptrd.f chptrf.f chptri.f chptrs.f chsein.f chseqr.f clabrd.f -- clacgv.f clacon.f clacn2.f clacp2.f clacpy.f clacrm.f clacrt.f cladiv.f -- claed0.f claed7.f claed8.f -- claein.f claesy.f claev2.f clags2.f clagtm.f -- clahef.f clahef_rook.f clahqr.f -- DEPRECATED/clahrd.f clahr2.f claic1.f clals0.f clalsa.f clalsd.f clangb.f clange.f clangt.f -- clanhb.f clanhe.f -- clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f -- clantp.f clantr.f clapll.f clapmt.f clarcm.f claqgb.f claqge.f -- claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqsb.f -- claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f -- claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f -- clarf.f clarfb.f clarfg.f clarft.f clarfgp.f -- clarfx.f clargv.f clarnv.f clarrv.f clartg.f clartv.f -- clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f -- clasyf.f clasyf_rook.f clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f -- DEPRECATED/clatzm.f cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f -- cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f -- cposv.f cposvx.f cpstrf.f cpstf2.f -- cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f -- cptcon.f cpteqr.f cptrfs.f cptsv.f cptsvx.f cpttrf.f cpttrs.f cptts2.f -- crot.f cspcon.f csprfs.f cspsv.f -- cspsvx.f csptrf.f csptri.f csptrs.f csrscl.f cstedc.f -- cstegr.f cstein.f csteqr.f -- csycon.f -- csyrfs.f csysv.f csysvx.f csytf2.f csytrf.f csytri.f csytri2.f csytri2x.f -- csyswapr.f csytrs.f csytrs2.f csyconv.f -- csytf2_rook.f csytrf_rook.f csytrs_rook.f -- csytri_rook.f csycon_rook.f csysv_rook.f -- ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f -- ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f -- ctprfs.f ctptri.f -- ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f -- ctrsyl.f ctrtrs.f DEPRECATED/ctzrqf.f ctzrzf.f cung2l.f cung2r.f -- cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f -- cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f -- cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f -- cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f -- chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f -- ctfttr.f ctpttf.f ctpttr.f ctrttf.f ctrttp.f -- cgeequb.f cgbequb.f csyequb.f cpoequb.f cheequb.f -- cbbcsd.f clapmr.f cunbdb.f cunbdb1.f cunbdb2.f cunbdb3.f cunbdb4.f -- cunbdb5.f cunbdb6.f cuncsd.f cuncsd2by1.f -- cgeqrt.f cgeqrt2.f cgeqrt3.f cgemqrt.f -- ctpqrt.f ctpqrt2.f ctpmqrt.f ctprfb.f cpotri.f -- cgelq.f cgelqt.f cgelqt3.f cgemlq.f cgemlqt.f cgemqr.f cgeqr.f cgetsls.f -- clamswlq.f clamtsqr.f claswlq.f clatsqr.f ctplqt.f ctplqt2.f ctpmlqt.f -- chesv_aa.f chetrf_aa.f chetrs_aa.f clahef_aa.f csytf2_rk.f clasyf_rk.f -- csytrf_rk.f csytrs_3.f csycon_3.f csytri_3.f csytri_3x.f csysv_rk.f -- chetf2_rk.f clahef_rk.f chetrf_rk.f chetrs_3.f checon_3.f chetri_3.f -- chetri_3x.f chesv_rk.f chb2st_kernels.f chbev_2stage.f chbevd_2stage.f -- chbevx_2stage.f cheev_2stage.f cheevd_2stage.f cheevr_2stage.f cheevx_2stage.f -- chegv_2stage.f chetrd_2stage.f chetrd_hb2st.F chetrd_he2hb.f clarfy.f --) -+ cbdsqr.f cgbbrd.f cgbcon.f cgbequ.f cgbrfs.f cgbsv.f cgbsvx.f -+ cgbtf2.f cgbtrf.f cgbtrs.f cgebak.f cgebal.f cgebd2.f cgebrd.f -+ cgecon.f cgeequ.f cgees.f cgeesx.f cgeev.f cgeevx.f -+ cgehd2.f cgehrd.f cgelq2.f cgelqf.f -+ cgels.f cgelsd.f cgelss.f cgelsy.f cgeql2.f cgeqlf.f cgeqp3.f -+ cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f cgerq2.f cgerqf.f -+ cgesc2.f cgesdd.f cgesvd.f cgesvdx.f -+ cgesvj.f cgejsv.f cgsvj0.f cgsvj1.f -+ cgesvx.f cgetc2.f cgetrf2.f -+ cgetri.f -+ cggbak.f cggbal.f -+ cgges.f cgges3.f cggesx.f cggev.f cggev3.f cggevx.f -+ cggglm.f cgghrd.f cgghd3.f cgglse.f cggqrf.f cggrqf.f -+ cggsvd3.f cggsvp3.f -+ cgtcon.f cgtrfs.f cgtsv.f cgtsvx.f cgttrf.f cgttrs.f cgtts2.f chbev.f -+ chbevd.f chbevx.f chbgst.f chbgv.f chbgvd.f chbgvx.f chbtrd.f -+ checon.f cheev.f cheevd.f cheevr.f cheevx.f chegs2.f chegst.f -+ chegv.f chegvd.f chegvx.f cherfs.f chesv.f chesvx.f chetd2.f -+ chetf2.f chetrd.f -+ chetrf.f chetri.f chetri2.f chetri2x.f cheswapr.f -+ chetrs.f chetrs2.f -+ chetf2_rook.f chetrf_rook.f chetri_rook.f -+ chetrs_rook.f checon_rook.f chesv_rook.f -+ chetf2_rk.f chetrf_rk.f chetri_3.f chetri_3x.f -+ chetrs_3.f checon_3.f chesv_rk.f -+ chesv_aa.f chetrf_aa.f chetrs_aa.f -+ chgeqz.f chpcon.f chpev.f chpevd.f -+ chpevx.f chpgst.f chpgv.f chpgvd.f chpgvx.f chprfs.f chpsv.f -+ chpsvx.f -+ chptrd.f chptrf.f chptri.f chptrs.f chsein.f chseqr.f clabrd.f -+ clacgv.f clacon.f clacn2.f clacp2.f clacpy.f clacrm.f clacrt.f cladiv.f -+ claed0.f claed7.f claed8.f -+ claein.f claesy.f claev2.f clags2.f clagtm.f -+ clahef.f clahef_rook.f clahef_rk.f clahef_aa.f clahqr.f -+ clahr2.f claic1.f clals0.f clalsa.f clalsd.f clangb.f clange.f clangt.f -+ clanhb.f clanhe.f -+ clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f -+ clantp.f clantr.f clapll.f clapmt.f clarcm.f claqgb.f claqge.f -+ claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqsb.f -+ claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f -+ claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f -+ clarf.f clarfb.f clarfg.f clarfgp.f clarft.f -+ clarfx.f clarfy.f clargv.f clarnv.f clarrv.f clartg.f clartv.f -+ clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f -+ clasyf.f clasyf_rook.f clasyf_rk.f clasyf_aa.f -+ clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f -+ cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f -+ cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f -+ cposv.f cposvx.f cpotrf2.f cpotri.f cpstrf.f cpstf2.f -+ cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f -+ cptcon.f cpteqr.f cptrfs.f cptsv.f cptsvx.f cpttrf.f cpttrs.f cptts2.f -+ crot.f cspcon.f csprfs.f cspsv.f -+ cspsvx.f csptrf.f csptri.f csptrs.f csrscl.f cstedc.f -+ cstegr.f cstein.f csteqr.f csycon.f -+ csyrfs.f csysv.f csysvx.f csytf2.f csytrf.f csytri.f -+ csytri2.f csytri2x.f csyswapr.f -+ csytrs.f csytrs2.f -+ csyconv.f csyconvf.f csyconvf_rook.f -+ csytf2_rook.f csytrf_rook.f csytrs_rook.f -+ csytri_rook.f csycon_rook.f csysv_rook.f -+ csytf2_rk.f csytrf_rk.f csytrf_aa.f csytrs_3.f csytrs_aa.f -+ csytri_3.f csytri_3x.f csycon_3.f csysv_rk.f csysv_aa.f -+ ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f -+ ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f -+ ctprfs.f ctptri.f -+ ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f -+ ctrsyl.f ctrtrs.f ctzrzf.f cung2l.f cung2r.f -+ cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f -+ cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunm22.f -+ cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f -+ cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f -+ chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f -+ ctfttr.f ctpttf.f ctpttr.f ctrttf.f ctrttp.f -+ cgeequb.f cgbequb.f csyequb.f cpoequb.f cheequb.f -+ cbbcsd.f clapmr.f cunbdb.f cunbdb1.f cunbdb2.f cunbdb3.f cunbdb4.f -+ cunbdb5.f cunbdb6.f cuncsd.f cuncsd2by1.f -+ cgeqrt.f cgeqrt2.f cgeqrt3.f cgemqrt.f -+ ctpqrt.f ctpqrt2.f ctpmqrt.f ctprfb.f -+ cgelqt.f cgelqt3.f cgemlqt.f -+ cgetsls.f cgeqr.f clatsqr.f clamtsqr.f cgemqr.f -+ cgelq.f claswlq.f clamswlq.f cgemlq.f -+ ctplqt.f ctplqt2.f ctpmlqt.f -+ chetrd_2stage.f chetrd_he2hb.f chetrd_hb2st.F chb2st_kernels.f -+ cheevd_2stage.f cheev_2stage.f cheevx_2stage.f cheevr_2stage.f -+ chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f) - --set(ZCLASRC cpotrs.f) -+set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f -+ cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f -+ csysvxx.f csyrfsx.f cla_syrfsx_extended.f cla_syamv.f -+ cla_syrcond_c.f cla_syrcond_x.f cla_syrpvgrw.f -+ cposvxx.f cporfsx.f cla_porfsx_extended.f -+ cla_porcond_c.f cla_porcond_x.f cla_porpvgrw.f -+ cgbsvxx.f cgbrfsx.f cla_gbrfsx_extended.f cla_gbamv.f -+ cla_gbrcond_c.f cla_gbrcond_x.f cla_gbrpvgrw.f -+ chesvxx.f cherfsx.f cla_herfsx_extended.f cla_heamv.f -+ cla_hercond_c.f cla_hercond_x.f cla_herpvgrw.f -+ cla_lin_berr.f clarscl2.f clascl2.f cla_wwaddw.f) - - set(DLASRC -- dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f -- dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f -- dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f -- DEPRECATED/dgegs.f DEPRECATED/dgegv.f dgehd2.f dgehrd.f dgelq2.f dgelqf.f -- dgels.f dgelsd.f dgelss.f DEPRECATED/dgelsx.f dgelsy.f dgeql2.f dgeqlf.f -- dgeqp3.f DEPRECATED/dgeqpf.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f -- dgerq2.f dgerqf.f dgesc2.f dgesdd.f dgesvd.f dgesvdx.f dgesvx.f -- dgetc2.f dgetri.f dgetrf2.f -- dggbak.f dggbal.f dgges.f dgges3.f dggesx.f dggev.f dggev3.f dggevx.f -- dggglm.f dgghd3.f dgghrd.f dgglse.f dggqrf.f -- dggrqf.f dggsvd3.f dggsvp3.f DEPRECATED/dggsvd.f DEPRECATED/dggsvp.f dgtcon.f dgtrfs.f dgtsv.f -- dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f -- dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f -- dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f -- DEPRECATED/dlahrd.f dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f -- dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f -- dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f -- dlapll.f dlapmt.f -- dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f -- dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f -- dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f -- dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f -- dlargv.f dlarrv.f dlartv.f -- dlarz.f dlarzb.f dlarzt.f dlasy2.f dlasyf.f dlasyf_rook.f -- dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f DEPRECATED/dlatzm.f -- dopgtr.f dopmtr.f dorg2l.f dorg2r.f -- dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f -- dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f -- dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f -- dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f -- dpbstf.f dpbsv.f dpbsvx.f -- dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f -- dposvx.f dpotrf2.f dpotrs.f dpstrf.f dpstf2.f -- dppcon.f dppequ.f -- dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f -- dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f -- dsbev.f dsbevd.f dsbevx.f dsbgst.f dsbgv.f dsbgvd.f dsbgvx.f -- dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f -- dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f -- dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f -- dstevx.f -- dsycon.f dsyev.f dsyevd.f dsyevr.f -- dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f -- dsysv.f dsysvx.f -- dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytri2.f dsytri2x.f -- dsyswapr.f dsytrs.f dsytrs2.f dsyconv.f -- dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f -- dsytri_rook.f dsycon_rook.f dsysv_rook.f -- dtbcon.f dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f -- dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f -- dtptrs.f -- dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f -- dtrtrs.f DEPRECATED/dtzrqf.f dtzrzf.f dstemr.f -- dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f -- dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f -- dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f -- dgejsv.f dgesvj.f dgsvj0.f dgsvj1.f -- dgeequb.f dsyequb.f dpoequb.f dgbequb.f -- dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f -- dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f -- dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f -- dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f dpotri.f -- dgelq.f dgelqt.f dgelqt3.f dgemlq.f dgemlqt.f dgemqr.f dgeqr.f dgetsls.f -- dlamswlq.f dlamtsqr.f dlaswlq.f dlatsqr.f dtplqt.f dtplqt2.f dtpmlqt.f -- dsysv_aa.f dsytrf_aa.f dsytrs_aa.f dlasyf_aa.f dsytf2_rk.f dlasyf_rk.f -- dsytrf_rk.f dsytrs_3.f dsycon_3.f dsytri_3.f dsytri_3x.f dsysv_rk.f -- dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f dsbevx_2stage.f -- dsyev_2stage.f dsyevd_2stage.f dsyevr_2stage.f dsyevx_2stage.f -- dsygv_2stage.f dsytrd_2stage.f dsytrd_sb2st.F dsytrd_sy2sb.f dlarfy.f --) -+ dbdsvdx.f dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f -+ dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f -+ dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f -+ dgehd2.f dgehrd.f dgelq2.f dgelqf.f -+ dgels.f dgelsd.f dgelss.f dgelsy.f dgeql2.f dgeqlf.f -+ dgeqp3.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f dgerq2.f dgerqf.f -+ dgesc2.f dgesdd.f dgesvd.f dgesvdx.f dgesvx.f dgetc2.f -+ dgetrf2.f dgetri.f -+ dggbak.f dggbal.f -+ dgges.f dgges3.f dggesx.f dggev.f dggev3.f dggevx.f -+ dggglm.f dgghrd.f dgghd3.f dgglse.f dggqrf.f -+ dggrqf.f dggsvd3.f dggsvp3.f dgtcon.f dgtrfs.f dgtsv.f -+ dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f -+ dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f -+ dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f -+ dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f -+ dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f -+ dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f -+ dlapll.f dlapmt.f -+ dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f -+ dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f -+ dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f -+ dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f dlarfy.f -+ dlargv.f dlarrv.f dlartv.f -+ dlarz.f dlarzb.f dlarzt.f dlasy2.f -+ dlasyf.f dlasyf_rook.f dlasyf_rk.f dlasyf_aa.f -+ dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f -+ dopgtr.f dopmtr.f dorg2l.f dorg2r.f -+ dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f -+ dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f -+ dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f -+ dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f -+ dpbstf.f dpbsv.f dpbsvx.f -+ dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f -+ dposvx.f dpotrf2.f dpotri.f dpotrs.f dpstrf.f dpstf2.f -+ dppcon.f dppequ.f -+ dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f -+ dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f -+ dsbev.f dsbevd.f dsbevx.f dsbgst.f dsbgv.f dsbgvd.f dsbgvx.f -+ dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f -+ dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f -+ dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f -+ dstevx.f dsycon.f dsyev.f dsyevd.f dsyevr.f -+ dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f -+ dsysv.f dsysvx.f -+ dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytrs.f dsytrs2.f -+ dsytri2.f dsytri2x.f dsyswapr.f -+ dsyconv.f dsyconvf.f dsyconvf_rook.f -+ dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f -+ dsytri_rook.f dsycon_rook.f dsysv_rook.f -+ dsytf2_rk.f dsytrf_rk.f dsytrs_3.f -+ dsytri_3.f dsytri_3x.f dsycon_3.f dsysv_rk.f -+ dsysv_aa.f dsytrf_aa.f dsytrs_aa.f -+ dtbcon.f -+ dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f -+ dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f -+ dtptrs.f -+ dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f -+ dtrtrs.f dtzrzf.f dstemr.f -+ dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f -+ dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f -+ dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f -+ dgejsv.f dgesvj.f dgsvj0.f dgsvj1.f -+ dgeequb.f dsyequb.f dpoequb.f dgbequb.f -+ dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f -+ dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f -+ dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f -+ dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f -+ dgelqt.f dgelqt3.f dgemlqt.f -+ dgetsls.f dgeqr.f dlatsqr.f dlamtsqr.f dgemqr.f -+ dgelq.f dlaswlq.f dlamswlq.f dgemlq.f -+ dtplqt.f dtplqt2.f dtpmlqt.f -+ dsytrd_2stage.f dsytrd_sy2sb.f dsytrd_sb2st.F dsb2st_kernels.f -+ dsyevd_2stage.f dsyev_2stage.f dsyevx_2stage.f dsyevr_2stage.f -+ dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f) -+ -+set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f -+ dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f -+ dla_syrfsx_extended.f dla_syamv.f dla_syrcond.f dla_syrpvgrw.f -+ dposvxx.f dporfsx.f dla_porfsx_extended.f dla_porcond.f -+ dla_porpvgrw.f dgbsvxx.f dgbrfsx.f dla_gbrfsx_extended.f -+ dla_gbamv.f dla_gbrcond.f dla_gbrpvgrw.f dla_lin_berr.f dlarscl2.f -+ dlascl2.f dla_wwaddw.f) - - set(ZLASRC -- zbdsqr.f zgbbrd.f zgbcon.f zgbequ.f zgbrfs.f zgbsv.f zgbsvx.f -- zgbtf2.f zgbtrf.f zgbtrs.f zgebak.f zgebal.f zgebd2.f zgebrd.f -- zgecon.f zgeequ.f zgees.f zgeesx.f zgeev.f zgeevx.f -- DEPRECATED/zgegs.f DEPRECATED/zgegv.f zgehd2.f zgehrd.f zgejsv.f zgelq2.f zgelqf.f -- zgels.f zgelsd.f zgelss.f DEPRECATED/zgelsx.f zgelsy.f zgeql2.f zgeqlf.f zgeqp3.f -- DEPRECATED/zgeqpf.f zgeqr2.f zgeqr2p.f zgeqrf.f zgeqrfp.f zgerfs.f zgerq2.f zgerqf.f -- zgesc2.f zgesdd.f zgesvd.f zgesvdx.f zgesvj.f zgesvx.f zgetc2.f -- zgetri.f zgetrf2.f -- zggbak.f zggbal.f zgges.f zgges3.f zggesx.f zggev.f zggev3.f zggevx.f zggglm.f -- zgghd3.f zgghrd.f zgglse.f zggqrf.f zggrqf.f -- DEPRECATED/zggsvd.f zggsvd3.f DEPRECATED/zggsvp.f zggsvp3.f -- zgsvj0.f zgsvj1.f -- zgtcon.f zgtrfs.f zgtsv.f zgtsvx.f zgttrf.f zgttrs.f zgtts2.f zhbev.f -- zhbevd.f zhbevx.f zhbgst.f zhbgv.f zhbgvd.f zhbgvx.f zhbtrd.f -- zhecon.f zheev.f zheevd.f zheevr.f zheevx.f zhegs2.f zhegst.f -- zhegv.f zhegvd.f zhegvx.f zherfs.f zhesv.f zhesvx.f zhetd2.f -- zhetf2.f zhetrd.f -- zhetrf.f zhetri.f zhetri2.f zhetri2x.f zheswapr.f -- zhetrs.f zhetrs2.f -- zhetf2_rook.f zhetrf_rook.f zhetri_rook.f zhetrs_rook.f zhecon_rook.f zhesv_rook.f -- zhgeqz.f zhpcon.f zhpev.f zhpevd.f -- zhpevx.f zhpgst.f zhpgv.f zhpgvd.f zhpgvx.f zhprfs.f zhpsv.f -- zhpsvx.f -- zhptrd.f zhptrf.f zhptri.f zhptrs.f zhsein.f zhseqr.f zlabrd.f -- zlacgv.f zlacon.f zlacn2.f zlacp2.f zlacpy.f zlacrm.f zlacrt.f zladiv.f -- zlaed0.f zlaed7.f zlaed8.f -- zlaein.f zlaesy.f zlaev2.f zlags2.f zlagtm.f -- zlahef.f zlahef_rook.f zlahqr.f -- DEPRECATED/zlahrd.f zlahr2.f zlaic1.f zlals0.f zlalsa.f zlalsd.f zlangb.f zlange.f -- zlangt.f zlanhb.f -- zlanhe.f -- zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f -- zlantp.f zlantr.f zlapll.f zlapmt.f zlaqgb.f zlaqge.f -- zlaqhb.f zlaqhe.f zlaqhp.f zlaqp2.f zlaqps.f zlaqsb.f -- zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f -- zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f -- zlarcm.f zlarf.f zlarfb.f -- zlarfg.f zlarft.f zlarfgp.f -- zlarfx.f zlargv.f zlarnv.f zlarrv.f zlartg.f zlartv.f -- zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f -- zlassq.f zlasyf.f zlasyf_rook.f zlasyf_aa.f -- zlatbs.f zlatdf.f zlatps.f zlatrd.f zlatrs.f zlatrz.f DEPRECATED/zlatzm.f -- zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f -- zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpocon.f zpoequ.f zporfs.f -- zposv.f zposvx.f zpotrf2.f zpotrs.f zpstrf.f zpstf2.f -- zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f -- zptcon.f zpteqr.f zptrfs.f zptsv.f zptsvx.f zpttrf.f zpttrs.f zptts2.f -- zrot.f zspcon.f zsprfs.f zspsv.f -- zspsvx.f zsptrf.f zsptri.f zsptrs.f zdrscl.f zstedc.f -- zstegr.f zstein.f zsteqr.f -- zsycon.f zsysv_aa.f -- zsyrfs.f zsysv.f zsysvx.f zsytf2.f zsytrf.f zsytri.f zsytri2.f zsytri2x.f -- zsyswapr.f zsytrs.f zsytrs_aa.f zsytrs2.f zsyconv.f -- zsytf2_rook.f zsytrf_rook.f zsytrs_rook.f -- zsytri_rook.f zsycon_rook.f zsysv_rook.f -- ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f -- ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f -- ztprfs.f ztptri.f -- ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f -- ztrsyl.f ztrtrs.f DEPRECATED/ztzrqf.f ztzrzf.f zung2l.f -- zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f -- zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunm22.f zunml2.f -- zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f -- zunmtr.f zupgtr.f -- zupmtr.f izmax1.f dzsum1.f zstemr.f -- zcgesv.f zcposv.f zlag2c.f clag2z.f zlat2c.f -- zhfrk.f ztfttp.f zlanhf.f zpftrf.f zpftri.f zpftrs.f ztfsm.f ztftri.f -- ztfttr.f ztpttf.f ztpttr.f ztrttf.f ztrttp.f -- zgeequb.f zgbequb.f zsyequb.f zpoequb.f zheequb.f -- zbbcsd.f zlapmr.f zunbdb.f zunbdb1.f zunbdb2.f zunbdb3.f zunbdb4.f -- zunbdb5.f zunbdb6.f zuncsd.f zuncsd2by1.f -- zgeqrt.f zgeqrt2.f zgeqrt3.f zgemqrt.f -- ztpqrt.f ztpqrt2.f ztpmqrt.f ztprfb.f zpotri.f -- zgelq.f zgelqt.f zgelqt3.f zgemlq.f zgemlqt.f zgemqr.f zgeqr.f zgetsls.f -- zlamswlq.f zlamtsqr.f zlaswlq.f zlatsqr.f ztplqt.f ztplqt2.f ztpmlqt.f -- zhesv_aa.f zhetrf_aa.f zhetrs_aa.f zlahef_aa.f zsytf2_rk.f zlasyf_rk.f -- zsytrf_aa.f zsytrf_rk.f zsytrs_3.f zsycon_3.f zsytri_3.f zsytri_3x.f zsysv_rk.f -- zhetf2_rk.f zlahef_rk.f zhetrf_rk.f zhetrs_3.f zhecon_3.f zhetri_3.f -- zhetri_3x.f zhesv_rk.f zhb2st_kernels.f zhbev_2stage.f zhbevd_2stage.f -- zhbevx_2stage.f zheev_2stage.f zheevd_2stage.f zheevr_2stage.f -- zheevx_2stage.f zhegv_2stage.f zhetrd_2stage.f zhetrd_hb2st.F zhetrd_he2hb.f -- zlarfy.f --) -+ zbdsqr.f zgbbrd.f zgbcon.f zgbequ.f zgbrfs.f zgbsv.f zgbsvx.f -+ zgbtf2.f zgbtrf.f zgbtrs.f zgebak.f zgebal.f zgebd2.f zgebrd.f -+ zgecon.f zgeequ.f zgees.f zgeesx.f zgeev.f zgeevx.f -+ zgehd2.f zgehrd.f zgelq2.f zgelqf.f -+ zgels.f zgelsd.f zgelss.f zgelsy.f zgeql2.f zgeqlf.f zgeqp3.f -+ zgeqr2.f zgeqr2p.f zgeqrf.f zgeqrfp.f zgerfs.f zgerq2.f zgerqf.f -+ zgesc2.f zgesdd.f zgesvd.f zgesvdx.f zgesvx.f -+ zgesvj.f zgejsv.f zgsvj0.f zgsvj1.f -+ zgetc2.f zgetrf2.f -+ zgetri.f -+ zggbak.f zggbal.f -+ zgges.f zgges3.f zggesx.f zggev.f zggev3.f zggevx.f -+ zggglm.f zgghrd.f zgghd3.f zgglse.f zggqrf.f zggrqf.f -+ zggsvd3.f zggsvp3.f -+ zgtcon.f zgtrfs.f zgtsv.f zgtsvx.f zgttrf.f zgttrs.f zgtts2.f zhbev.f -+ zhbevd.f zhbevx.f zhbgst.f zhbgv.f zhbgvd.f zhbgvx.f zhbtrd.f -+ zhecon.f zheev.f zheevd.f zheevr.f zheevx.f zhegs2.f zhegst.f -+ zhegv.f zhegvd.f zhegvx.f zherfs.f zhesv.f zhesvx.f zhetd2.f -+ zhetf2.f zhetrd.f -+ zhetrf.f zhetri.f zhetri2.f zhetri2x.f zheswapr.f -+ zhetrs.f zhetrs2.f -+ zhetf2_rook.f zhetrf_rook.f zhetri_rook.f -+ zhetrs_rook.f zhecon_rook.f zhesv_rook.f -+ zhetf2_rk.f zhetrf_rk.f zhetri_3.f zhetri_3x.f -+ zhetrs_3.f zhecon_3.f zhesv_rk.f -+ zhesv_aa.f zhetrf_aa.f zhetrs_aa.f -+ zhgeqz.f zhpcon.f zhpev.f zhpevd.f -+ zhpevx.f zhpgst.f zhpgv.f zhpgvd.f zhpgvx.f zhprfs.f zhpsv.f -+ zhpsvx.f -+ zhptrd.f zhptrf.f zhptri.f zhptrs.f zhsein.f zhseqr.f zlabrd.f -+ zlacgv.f zlacon.f zlacn2.f zlacp2.f zlacpy.f zlacrm.f zlacrt.f zladiv.f -+ zlaed0.f zlaed7.f zlaed8.f -+ zlaein.f zlaesy.f zlaev2.f zlags2.f zlagtm.f -+ zlahef.f zlahef_rook.f zlahef_rk.f zlahef_aa.f zlahqr.f -+ zlahr2.f zlaic1.f zlals0.f zlalsa.f zlalsd.f zlangb.f zlange.f -+ zlangt.f zlanhb.f -+ zlanhe.f -+ zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f -+ zlantp.f zlantr.f zlapll.f zlapmt.f zlaqgb.f zlaqge.f -+ zlaqhb.f zlaqhe.f zlaqhp.f zlaqp2.f zlaqps.f zlaqsb.f -+ zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f -+ zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f -+ zlarcm.f zlarf.f zlarfb.f -+ zlarfg.f zlarfgp.f zlarft.f -+ zlarfx.f zlarfy.f zlargv.f zlarnv.f zlarrv.f zlartg.f zlartv.f -+ zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f -+ zlassq.f zlasyf.f zlasyf_rook.f zlasyf_rk.f zlasyf_aa.f -+ zlatbs.f zlatdf.f zlatps.f zlatrd.f zlatrs.f zlatrz.f -+ zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f -+ zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpocon.f zpoequ.f zporfs.f -+ zposv.f zposvx.f zpotrf2.f zpotri.f zpotrs.f zpstrf.f zpstf2.f -+ zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f -+ zptcon.f zpteqr.f zptrfs.f zptsv.f zptsvx.f zpttrf.f zpttrs.f zptts2.f -+ zrot.f zspcon.f zsprfs.f zspsv.f -+ zspsvx.f zsptrf.f zsptri.f zsptrs.f zdrscl.f zstedc.f -+ zstegr.f zstein.f zsteqr.f zsycon.f -+ zsyrfs.f zsysv.f zsysvx.f zsytf2.f zsytrf.f zsytri.f -+ zsytri2.f zsytri2x.f zsyswapr.f -+ zsytrs.f zsytrs2.f -+ zsyconv.f zsyconvf.f zsyconvf_rook.f -+ zsytf2_rook.f zsytrf_rook.f zsytrs_rook.f zsytrs_aa.f -+ zsytri_rook.f zsycon_rook.f zsysv_rook.f -+ zsytf2_rk.f zsytrf_rk.f zsytrf_aa.f zsytrs_3.f -+ zsytri_3.f zsytri_3x.f zsycon_3.f zsysv_rk.f zsysv_aa.f -+ ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f -+ ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f -+ ztprfs.f ztptri.f -+ ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f -+ ztrsyl.f ztrtrs.f ztzrzf.f zung2l.f -+ zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f -+ zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f -+ zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f -+ zunmtr.f zupgtr.f -+ zupmtr.f izmax1.f dzsum1.f zstemr.f -+ zcgesv.f zcposv.f zlag2c.f clag2z.f zlat2c.f -+ zhfrk.f ztfttp.f zlanhf.f zpftrf.f zpftri.f zpftrs.f ztfsm.f ztftri.f -+ ztfttr.f ztpttf.f ztpttr.f ztrttf.f ztrttp.f -+ zgeequb.f zgbequb.f zsyequb.f zpoequb.f zheequb.f -+ zbbcsd.f zlapmr.f zunbdb.f zunbdb1.f zunbdb2.f zunbdb3.f zunbdb4.f -+ zunbdb5.f zunbdb6.f zuncsd.f zuncsd2by1.f -+ zgeqrt.f zgeqrt2.f zgeqrt3.f zgemqrt.f -+ ztpqrt.f ztpqrt2.f ztpmqrt.f ztprfb.f -+ ztplqt.f ztplqt2.f ztpmlqt.f -+ zgelqt.f zgelqt3.f zgemlqt.f -+ zgetsls.f zgeqr.f zlatsqr.f zlamtsqr.f zgemqr.f -+ zgelq.f zlaswlq.f zlamswlq.f zgemlq.f -+ zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f -+ zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f -+ zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f) -+ -+set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f -+ zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f -+ zla_syrfsx_extended.f zla_syamv.f zla_syrcond_c.f zla_syrcond_x.f -+ zla_syrpvgrw.f zposvxx.f zporfsx.f zla_porfsx_extended.f -+ zla_porcond_c.f zla_porcond_x.f zla_porpvgrw.f zgbsvxx.f zgbrfsx.f -+ zla_gbrfsx_extended.f zla_gbamv.f zla_gbrcond_c.f zla_gbrcond_x.f -+ zla_gbrpvgrw.f zhesvxx.f zherfsx.f zla_herfsx_extended.f -+ zla_heamv.f zla_hercond_c.f zla_hercond_x.f zla_herpvgrw.f -+ zla_lin_berr.f zlarscl2.f zlascl2.f zla_wwaddw.f) -+ - --set(LA_REL_SRC ${ALLAUX}) --if (BUILD_SINGLE) -- list(APPEND LA_REL_SRC ${SLASRC} ${DSLASRC} ${SCLAUX}) --endif () -+if(USE_XBLAS) -+ set(ALLXOBJ ${SXLASRC} ${DXLASRC} ${CXLASRC} ${ZXLASRC}) -+endif() - --if (BUILD_DOUBLE) -- list(APPEND LA_REL_SRC ${DLASRC} ${DSLASRC} ${DZLAUX}) --endif () -+list(APPEND SLASRC DEPRECATED/sgegs.f DEPRECATED/sgegv.f -+ DEPRECATED/sgeqpf.f DEPRECATED/sgelsx.f DEPRECATED/sggsvd.f -+ DEPRECATED/sggsvp.f DEPRECATED/slahrd.f DEPRECATED/slatzm.f DEPRECATED/stzrqf.f) -+list(APPEND DLASRC DEPRECATED/dgegs.f DEPRECATED/dgegv.f -+ DEPRECATED/dgeqpf.f DEPRECATED/dgelsx.f DEPRECATED/dggsvd.f -+ DEPRECATED/dggsvp.f DEPRECATED/dlahrd.f DEPRECATED/dlatzm.f DEPRECATED/dtzrqf.f) -+list(APPEND CLASRC DEPRECATED/cgegs.f DEPRECATED/cgegv.f -+ DEPRECATED/cgeqpf.f DEPRECATED/cgelsx.f DEPRECATED/cggsvd.f -+ DEPRECATED/cggsvp.f DEPRECATED/clahrd.f DEPRECATED/clatzm.f DEPRECATED/ctzrqf.f) -+list(APPEND ZLASRC DEPRECATED/zgegs.f DEPRECATED/zgegv.f -+ DEPRECATED/zgeqpf.f DEPRECATED/zgelsx.f DEPRECATED/zggsvd.f -+ DEPRECATED/zggsvp.f DEPRECATED/zlahrd.f DEPRECATED/zlatzm.f DEPRECATED/ztzrqf.f) -+message(STATUS "Building deprecated routines") -+ -+set(DSLASRC spotrs.f) -+ -+set(ZCLASRC cpotrs.f) - --if (BUILD_COMPLEX) -- list(APPEND LA_REL_SRC ${CLASRC} ${ZCLASRC} ${SCLAUX}) --endif () -+set(SCATGEN slatm1.f slaran.f slarnd.f) - --if (BUILD_COMPLEX16) -- list(APPEND LA_REL_SRC ${ZLASRC} ${ZCLASRC} ${DZLAUX}) --endif () -+set(SMATGEN slatms.f slatme.f slatmr.f slatmt.f -+ slagge.f slagsy.f slakf2.f slarge.f slaror.f slarot.f slatm2.f -+ slatm3.f slatm5.f slatm6.f slatm7.f slahilb.f) -+ -+set(CMATGEN clatms.f clatme.f clatmr.f clatmt.f -+ clagge.f claghe.f clagsy.f clakf2.f clarge.f claror.f clarot.f -+ clatm1.f clarnd.f clatm2.f clatm3.f clatm5.f clatm6.f clahilb.f slatm7.f) -+ -+set(DZATGEN dlatm1.f dlaran.f dlarnd.f) -+ -+set(DMATGEN dlatms.f dlatme.f dlatmr.f dlatmt.f -+ dlagge.f dlagsy.f dlakf2.f dlarge.f dlaror.f dlarot.f dlatm2.f -+ dlatm3.f dlatm5.f dlatm6.f dlatm7.f dlahilb.f) -+ -+set(ZMATGEN zlatms.f zlatme.f zlatmr.f zlatmt.f -+ zlagge.f zlaghe.f zlagsy.f zlakf2.f zlarge.f zlaror.f zlarot.f -+ zlatm1.f zlarnd.f zlatm2.f zlatm3.f zlatm5.f zlatm6.f zlahilb.f dlatm7.f) -+ -+if(BUILD_SINGLE) -+ set(LA_REL_SRC ${SLASRC} ${DSLASRC} ${ALLAUX} ${SCLAUX}) -+ set(LA_GEN_SRC ${SMATGEN} ${SCATGEN}) -+ message(STATUS "Building Single Precision") -+endif() -+if(BUILD_DOUBLE) -+ set(LA_REL_SRC ${LA_REL_SRC} ${DLASRC} ${DSLASRC} ${ALLAUX} ${DZLAUX}) -+ set(LA_GEN_SRC ${LA_GEN_SRC} ${DMATGEN} ${DZATGEN}) -+ message(STATUS "Building Double Precision") -+endif() -+if(BUILD_COMPLEX) -+ set(LA_REL_SRC ${LA_REL_SRC} ${CLASRC} ${ZCLASRC} ${ALLAUX} ${SCLAUX}) -+ SET(LA_GEN_SRC ${LA_GEN_SRC} ${CMATGEN} ${SCATGEN}) -+ message(STATUS "Building Complex Precision") -+endif() -+if(BUILD_COMPLEX16) -+ set(LA_REL_SRC ${LA_REL_SRC} ${ZLASRC} ${ZCLASRC} ${ALLAUX} ${DZLAUX}) -+ SET(LA_GEN_SRC ${LA_GEN_SRC} ${ZMATGEN} ${DZATGEN}) -+ message(STATUS "Building Double Complex Precision") -+endif() - - # add lapack-netlib folder to the sources - set(LA_SOURCES "") - foreach (LA_FILE ${LA_REL_SRC}) - list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}") - endforeach () -+foreach (LA_FILE ${LA_GEN_SRC}) -+ list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/TESTING/MATGEN/${LA_FILE}") -+endforeach () - set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}") -diff --git a/cmake/lapacke.cmake b/cmake/lapacke.cmake -index fd5aee1..93e2824 100644 ---- a/cmake/lapacke.cmake -+++ b/cmake/lapacke.cmake -@@ -1,5 +1,5 @@ - --set(C_SRC -+set(CSRC - lapacke_cbbcsd.c - lapacke_cbbcsd_work.c - lapacke_cbdsqr.c -@@ -1839,6 +1839,12 @@ set(ZSRC - lapacke_zhbevd_work.c - lapacke_zhbevx.c - lapacke_zhbevx_work.c -+ lapacke_zhbev_2stage.c -+ lapacke_zhbev_2stage_work.c -+ lapacke_zhbevd_2stage.c -+ lapacke_zhbevd_2stage_work.c -+ lapacke_zhbevx_2stage.c -+ lapacke_zhbevx_2stage_work.c - lapacke_zhbgst.c - lapacke_zhbgst_work.c - lapacke_zhbgv.c -@@ -2263,104 +2269,91 @@ set(ZSRC - ) - - set(SRCX -- lapacke_cgbrfsx.c lapacke_cporfsx.c lapacke_dgerfsx.c lapacke_sgbrfsx.c lapacke_ssyrfsx.c lapacke_zherfsx.c -- lapacke_cgbrfsx_work.c lapacke_cporfsx_work.c lapacke_dgerfsx_work.c lapacke_sgbrfsx_work.c lapacke_ssyrfsx_work.c lapacke_zherfsx_work.c -- lapacke_cgerfsx.c lapacke_csyrfsx.c lapacke_dporfsx.c lapacke_sgerfsx.c lapacke_zgbrfsx.c lapacke_zporfsx.c -- lapacke_cgerfsx_work.c lapacke_csyrfsx_work.c lapacke_dporfsx_work.c lapacke_sgerfsx_work.c lapacke_zgbrfsx_work.c lapacke_zporfsx_work.c -- lapacke_cherfsx.c lapacke_dgbrfsx.c lapacke_dsyrfsx.c lapacke_sporfsx.c lapacke_zgerfsx.c lapacke_zsyrfsx.c -- lapacke_cherfsx_work.c lapacke_dgbrfsx_work.c lapacke_dsyrfsx_work.c lapacke_sporfsx_work.c lapacke_zgerfsx_work.c lapacke_zsyrfsx_work.c -- lapacke_cgbsvxx.c lapacke_cposvxx.c lapacke_dgesvxx.c lapacke_sgbsvxx.c lapacke_ssysvxx.c lapacke_zhesvxx.c -- lapacke_cgbsvxx_work.c lapacke_cposvxx_work.c lapacke_dgesvxx_work.c lapacke_sgbsvxx_work.c lapacke_ssysvxx_work.c lapacke_zhesvxx_work.c -- lapacke_cgesvxx.c lapacke_csysvxx.c lapacke_dposvxx.c lapacke_sgesvxx.c lapacke_zgbsvxx.c lapacke_zposvxx.c -- lapacke_cgesvxx_work.c lapacke_csysvxx_work.c lapacke_dposvxx_work.c lapacke_sgesvxx_work.c lapacke_zgbsvxx_work.c lapacke_zposvxx_work.c -- lapacke_chesvxx.c lapacke_dgbsvxx.c lapacke_dsysvxx.c lapacke_sposvxx.c lapacke_zgesvxx.c lapacke_zsysvxx.c -+ lapacke_cgbrfsx.c lapacke_cporfsx.c lapacke_dgerfsx.c lapacke_sgbrfsx.c lapacke_ssyrfsx.c lapacke_zherfsx.c -+ lapacke_cgbrfsx_work.c lapacke_cporfsx_work.c lapacke_dgerfsx_work.c lapacke_sgbrfsx_work.c lapacke_ssyrfsx_work.c lapacke_zherfsx_work.c -+ lapacke_cgerfsx.c lapacke_csyrfsx.c lapacke_dporfsx.c lapacke_sgerfsx.c lapacke_zgbrfsx.c lapacke_zporfsx.c -+ lapacke_cgerfsx_work.c lapacke_csyrfsx_work.c lapacke_dporfsx_work.c lapacke_sgerfsx_work.c lapacke_zgbrfsx_work.c lapacke_zporfsx_work.c -+ lapacke_cherfsx.c lapacke_dgbrfsx.c lapacke_dsyrfsx.c lapacke_sporfsx.c lapacke_zgerfsx.c lapacke_zsyrfsx.c -+ lapacke_cherfsx_work.c lapacke_dgbrfsx_work.c lapacke_dsyrfsx_work.c lapacke_sporfsx_work.c lapacke_zgerfsx_work.c lapacke_zsyrfsx_work.c -+ lapacke_cgbsvxx.c lapacke_cposvxx.c lapacke_dgesvxx.c lapacke_sgbsvxx.c lapacke_ssysvxx.c lapacke_zhesvxx.c -+ lapacke_cgbsvxx_work.c lapacke_cposvxx_work.c lapacke_dgesvxx_work.c lapacke_sgbsvxx_work.c lapacke_ssysvxx_work.c lapacke_zhesvxx_work.c -+ lapacke_cgesvxx.c lapacke_csysvxx.c lapacke_dposvxx.c lapacke_sgesvxx.c lapacke_zgbsvxx.c lapacke_zposvxx.c -+ lapacke_cgesvxx_work.c lapacke_csysvxx_work.c lapacke_dposvxx_work.c lapacke_sgesvxx_work.c lapacke_zgbsvxx_work.c lapacke_zposvxx_work.c -+ lapacke_chesvxx.c lapacke_dgbsvxx.c lapacke_dsysvxx.c lapacke_sposvxx.c lapacke_zgesvxx.c lapacke_zsysvxx.c - lapacke_chesvxx_work.c lapacke_dgbsvxx_work.c lapacke_dsysvxx_work.c lapacke_sposvxx_work.c lapacke_zgesvxx_work.c lapacke_zsysvxx_work.c - ) - - --# FILE PARTS OF TMGLIB -+# FILE PARTS OF TMGLIB - set(MATGEN -- lapacke_clatms.c -- lapacke_clatms_work.c -- lapacke_dlatms.c -- lapacke_dlatms_work.c -- lapacke_slatms.c -- lapacke_slatms_work.c -- lapacke_zlatms.c -- lapacke_zlatms_work.c -- lapacke_clagge.c -- lapacke_clagge_work.c -- lapacke_dlagge.c -- lapacke_dlagge_work.c -- lapacke_slagge.c -- lapacke_slagge_work.c -- lapacke_zlagge.c -- lapacke_zlagge_work.c -- lapacke_claghe.c -- lapacke_claghe_work.c -- lapacke_zlaghe.c -- lapacke_zlaghe_work.c -- lapacke_clagsy.c -- lapacke_clagsy_work.c -- lapacke_dlagsy.c -- lapacke_dlagsy_work.c -- lapacke_slagsy.c -- lapacke_slagsy_work.c -- lapacke_zlagsy.c -+ lapacke_clatms.c -+ lapacke_clatms_work.c -+ lapacke_dlatms.c -+ lapacke_dlatms_work.c -+ lapacke_slatms.c -+ lapacke_slatms_work.c -+ lapacke_zlatms.c -+ lapacke_zlatms_work.c -+ lapacke_clagge.c -+ lapacke_clagge_work.c -+ lapacke_dlagge.c -+ lapacke_dlagge_work.c -+ lapacke_slagge.c -+ lapacke_slagge_work.c -+ lapacke_zlagge.c -+ lapacke_zlagge_work.c -+ lapacke_claghe.c -+ lapacke_claghe_work.c -+ lapacke_zlaghe.c -+ lapacke_zlaghe_work.c -+ lapacke_clagsy.c -+ lapacke_clagsy_work.c -+ lapacke_dlagsy.c -+ lapacke_dlagsy_work.c -+ lapacke_slagsy.c -+ lapacke_slagsy_work.c -+ lapacke_zlagsy.c - lapacke_zlagsy_work.c - ) - - set(Utils_SRC --lapacke_cgb_nancheck.c lapacke_dpf_nancheck.c lapacke_ssy_trans.c --lapacke_cgb_trans.c lapacke_dpf_trans.c lapacke_stb_nancheck.c --lapacke_cge_nancheck.c lapacke_dpo_nancheck.c lapacke_stb_trans.c --lapacke_cge_trans.c lapacke_dpo_trans.c lapacke_stf_nancheck.c --lapacke_cgg_nancheck.c lapacke_dpp_nancheck.c lapacke_stf_trans.c --lapacke_cgg_trans.c lapacke_dpp_trans.c lapacke_stp_nancheck.c --lapacke_cgt_nancheck.c lapacke_dpt_nancheck.c lapacke_stp_trans.c --lapacke_chb_nancheck.c lapacke_dsb_nancheck.c lapacke_str_nancheck.c --lapacke_chb_trans.c lapacke_dsb_trans.c lapacke_str_trans.c --lapacke_che_nancheck.c lapacke_dsp_nancheck.c lapacke_xerbla.c --lapacke_che_trans.c lapacke_dsp_trans.c lapacke_zgb_nancheck.c --lapacke_chp_nancheck.c lapacke_dst_nancheck.c lapacke_zgb_trans.c --lapacke_chp_trans.c lapacke_dsy_nancheck.c lapacke_zge_nancheck.c --lapacke_chs_nancheck.c lapacke_dsy_trans.c lapacke_zge_trans.c --lapacke_chs_trans.c lapacke_dtb_nancheck.c lapacke_zgg_nancheck.c --lapacke_c_nancheck.c lapacke_dtb_trans.c lapacke_zgg_trans.c --lapacke_cpb_nancheck.c lapacke_dtf_nancheck.c lapacke_zgt_nancheck.c --lapacke_cpb_trans.c lapacke_dtf_trans.c lapacke_zhb_nancheck.c --lapacke_cpf_nancheck.c lapacke_dtp_nancheck.c lapacke_zhb_trans.c --lapacke_cpf_trans.c lapacke_dtp_trans.c lapacke_zhe_nancheck.c --lapacke_cpo_nancheck.c lapacke_dtr_nancheck.c lapacke_zhe_trans.c --lapacke_cpo_trans.c lapacke_dtr_trans.c lapacke_zhp_nancheck.c --lapacke_cpp_nancheck.c lapacke_lsame.c lapacke_zhp_trans.c --lapacke_cpp_trans.c lapacke_make_complex_double.c lapacke_zhs_nancheck.c --lapacke_cpt_nancheck.c lapacke_make_complex_float.c lapacke_zhs_trans.c --lapacke_csp_nancheck.c lapacke_sgb_nancheck.c lapacke_z_nancheck.c --lapacke_csp_trans.c lapacke_sgb_trans.c lapacke_zpb_nancheck.c --lapacke_cst_nancheck.c lapacke_sge_nancheck.c lapacke_zpb_trans.c --lapacke_csy_nancheck.c lapacke_sge_trans.c lapacke_zpf_nancheck.c --lapacke_csy_trans.c lapacke_sgg_nancheck.c lapacke_zpf_trans.c --lapacke_ctb_nancheck.c lapacke_sgg_trans.c lapacke_zpo_nancheck.c --lapacke_ctb_trans.c lapacke_sgt_nancheck.c lapacke_zpo_trans.c --lapacke_ctf_nancheck.c lapacke_shs_nancheck.c lapacke_zpp_nancheck.c --lapacke_ctf_trans.c lapacke_shs_trans.c lapacke_zpp_trans.c --lapacke_ctp_nancheck.c lapacke_s_nancheck.c lapacke_zpt_nancheck.c --lapacke_ctp_trans.c lapacke_spb_nancheck.c lapacke_zsp_nancheck.c --lapacke_ctr_nancheck.c lapacke_spb_trans.c lapacke_zsp_trans.c --lapacke_ctr_trans.c lapacke_spf_nancheck.c lapacke_zst_nancheck.c --lapacke_dgb_nancheck.c lapacke_spf_trans.c lapacke_zsy_nancheck.c --lapacke_dgb_trans.c lapacke_spo_nancheck.c lapacke_zsy_trans.c --lapacke_dge_nancheck.c lapacke_spo_trans.c lapacke_ztb_nancheck.c --lapacke_dge_trans.c lapacke_spp_nancheck.c lapacke_ztb_trans.c --lapacke_dgg_nancheck.c lapacke_spp_trans.c lapacke_ztf_nancheck.c --lapacke_dgg_trans.c lapacke_spt_nancheck.c lapacke_ztf_trans.c --lapacke_dgt_nancheck.c lapacke_ssb_nancheck.c lapacke_ztp_nancheck.c --lapacke_dhs_nancheck.c lapacke_ssb_trans.c lapacke_ztp_trans.c --lapacke_dhs_trans.c lapacke_ssp_nancheck.c lapacke_ztr_nancheck.c --lapacke_d_nancheck.c lapacke_ssp_trans.c lapacke_ztr_trans.c --lapacke_dpb_nancheck.c lapacke_sst_nancheck.c --lapacke_dpb_trans.c lapacke_ssy_nancheck.c -+ lapacke_c_nancheck.c lapacke_ctr_trans.c lapacke_make_complex_float.c lapacke_zgb_nancheck.c -+ lapacke_cgb_nancheck.c lapacke_d_nancheck.c lapacke_s_nancheck.c lapacke_zgb_trans.c -+ lapacke_cgb_trans.c lapacke_dgb_nancheck.c lapacke_sgb_nancheck.c lapacke_zge_nancheck.c -+ lapacke_cge_nancheck.c lapacke_dgb_trans.c lapacke_sgb_trans.c lapacke_zge_trans.c -+ lapacke_cge_trans.c lapacke_dge_nancheck.c lapacke_sge_nancheck.c lapacke_zgg_nancheck.c -+ lapacke_cgg_nancheck.c lapacke_dge_trans.c lapacke_sge_trans.c lapacke_zgg_trans.c -+ lapacke_cgg_trans.c lapacke_dgg_nancheck.c lapacke_sgg_nancheck.c lapacke_zgt_nancheck.c -+ lapacke_cgt_nancheck.c lapacke_dgg_trans.c lapacke_sgg_trans.c lapacke_zhb_nancheck.c -+ lapacke_chb_nancheck.c lapacke_dgt_nancheck.c lapacke_sgt_nancheck.c lapacke_zhb_trans.c -+ lapacke_chb_trans.c lapacke_dhs_nancheck.c lapacke_shs_nancheck.c lapacke_zhe_nancheck.c -+ lapacke_che_nancheck.c lapacke_dhs_trans.c lapacke_shs_trans.c lapacke_zhe_trans.c -+ lapacke_che_trans.c lapacke_dpb_nancheck.c lapacke_spb_nancheck.c lapacke_zhp_nancheck.c -+ lapacke_chp_nancheck.c lapacke_dpb_trans.c lapacke_spb_trans.c lapacke_zhp_trans.c -+ lapacke_chp_trans.c lapacke_dpf_nancheck.c lapacke_spf_nancheck.c lapacke_zhs_nancheck.c -+ lapacke_chs_nancheck.c lapacke_dpf_trans.c lapacke_spf_trans.c lapacke_zhs_trans.c -+ lapacke_chs_trans.c lapacke_dpo_nancheck.c lapacke_spo_nancheck.c lapacke_zpb_nancheck.c -+ lapacke_cpb_nancheck.c lapacke_dpo_trans.c lapacke_spo_trans.c lapacke_zpb_trans.c -+ lapacke_cpb_trans.c lapacke_dpp_nancheck.c lapacke_spp_nancheck.c lapacke_zpf_nancheck.c -+ lapacke_cpf_nancheck.c lapacke_dpp_trans.c lapacke_spp_trans.c lapacke_zpf_trans.c -+ lapacke_cpf_trans.c lapacke_dpt_nancheck.c lapacke_spt_nancheck.c lapacke_zpo_nancheck.c -+ lapacke_cpo_nancheck.c lapacke_dsb_nancheck.c lapacke_ssb_nancheck.c lapacke_zpo_trans.c -+ lapacke_cpo_trans.c lapacke_dsb_trans.c lapacke_ssb_trans.c lapacke_zpp_nancheck.c -+ lapacke_cpp_nancheck.c lapacke_dsp_nancheck.c lapacke_ssp_nancheck.c lapacke_zpp_trans.c -+ lapacke_cpp_trans.c lapacke_dsp_trans.c lapacke_ssp_trans.c lapacke_zpt_nancheck.c -+ lapacke_cpt_nancheck.c lapacke_dst_nancheck.c lapacke_sst_nancheck.c lapacke_zsp_nancheck.c -+ lapacke_csp_nancheck.c lapacke_dsy_nancheck.c lapacke_ssy_nancheck.c lapacke_zsp_trans.c -+ lapacke_csp_trans.c lapacke_dsy_trans.c lapacke_ssy_trans.c lapacke_zst_nancheck.c -+ lapacke_cst_nancheck.c lapacke_dtb_nancheck.c lapacke_stb_nancheck.c lapacke_zsy_nancheck.c -+ lapacke_csy_nancheck.c lapacke_dtb_trans.c lapacke_stb_trans.c lapacke_zsy_trans.c -+ lapacke_csy_trans.c lapacke_dtf_nancheck.c lapacke_stf_nancheck.c lapacke_ztb_nancheck.c -+ lapacke_ctb_nancheck.c lapacke_dtf_trans.c lapacke_stf_trans.c lapacke_ztb_trans.c -+ lapacke_ctb_trans.c lapacke_dtp_nancheck.c lapacke_stp_nancheck.c lapacke_ztf_nancheck.c -+ lapacke_ctf_nancheck.c lapacke_dtp_trans.c lapacke_stp_trans.c lapacke_ztf_trans.c -+ lapacke_ctf_trans.c lapacke_dtr_nancheck.c lapacke_str_nancheck.c lapacke_ztp_nancheck.c -+ lapacke_ctp_nancheck.c lapacke_dtr_trans.c lapacke_str_trans.c lapacke_ztp_trans.c -+ lapacke_ctp_trans.c lapacke_lsame.c lapacke_xerbla.c lapacke_ztr_nancheck.c -+ lapacke_ctr_nancheck.c lapacke_make_complex_double.c lapacke_z_nancheck.c lapacke_ztr_trans.c - ) - - set(LAPACKE_REL_SRC "") -@@ -2380,6 +2373,10 @@ if (BUILD_COMPLEX16) - list(APPEND LAPACKE_REL_SRC ${ZSRC}) - endif () - -+if (BUILD_MATGEN) -+ list(APPEND LAPACKE_REL_SRC ${MATGEN}) -+endif () -+ - # add lapack-netlib folder to the sources - set(LAPACKE_SOURCES "") - foreach (LAE_FILE ${LAPACKE_REL_SRC}) -diff --git a/exports/gensymbol b/exports/gensymbol -index 89c6e83..f1983d4 100644 ---- a/exports/gensymbol -+++ b/exports/gensymbol -@@ -3411,13 +3411,17 @@ - ); - - -+use File::Spec; -+use File::Basename; -+my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib"); -+ - if ($ARGV[8] == 1) { - #ONLY_CBLAS=1 - @underscore_objs = (@misc_underscore_objs); - } elsif ($ARGV[5] == 1) { - #NO_LAPACK=1 - @underscore_objs = (@blasobjs, @misc_underscore_objs); --} elsif (-d "../lapack-netlib") { -+} elsif (-d $dirname) { - if ($ARGV[7] == 0) { - # NEED2UNDERSCORES=0 - # Don't need 2 underscores diff --git a/recipe/gh_1377.patch b/recipe/gh_1377.patch deleted file mode 100644 index cff4945..0000000 --- a/recipe/gh_1377.patch +++ /dev/null @@ -1,35 +0,0 @@ -From e0ddd7d12411320c16026e741863ccdea8df3b52 Mon Sep 17 00:00:00 2001 -From: Isuru Fernando -Date: Fri, 1 Dec 2017 01:39:46 -0600 -Subject: [PATCH] Allow overriding NUM_THREADS - ---- - cmake/system.cmake | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/cmake/system.cmake b/cmake/system.cmake -index 236a7e888..064e7e4f2 100644 ---- a/cmake/system.cmake -+++ b/cmake/system.cmake -@@ -94,16 +94,17 @@ if (NOT CMAKE_CROSSCOMPILING) - ProcessorCount(NUM_CORES) - endif() - -+endif() -+ -+if (NOT DEFINED NUM_THREADS) - if (NOT NUM_CORES EQUAL 0) - # HT? - set(NUM_THREADS ${NUM_CORES}) -+ else () -+ set(NUM_THREADS 0) - endif () - endif() - --if (NOT DEFINED NUM_THREADS) -- set(NUM_THREADS 0) --endif() -- - if (${NUM_THREADS} LESS 2) - set(USE_THREAD 0) - elseif(NOT DEFINED USE_THREAD) diff --git a/recipe/gh_1417.patch b/recipe/gh_1417.patch deleted file mode 100644 index 392dcd9..0000000 --- a/recipe/gh_1417.patch +++ /dev/null @@ -1,28 +0,0 @@ -From b3f24c96640db9d01c073c5d61600a88e52b5dd5 Mon Sep 17 00:00:00 2001 -From: xoviat -Date: Thu, 11 Jan 2018 11:34:53 -0600 -Subject: [PATCH] CMake: Use the correct library name on windows - -FindBLAS and FindLAPACK don't correctly detect the OpenBLAS library -name on windows. I am unsure why this was originally set this way, but -it has caused me some trouble. ---- - CMakeLists.txt | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1bdcd52ee..b5789119a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -12,11 +12,7 @@ set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${Open - # Adhere to GNU filesystem layout conventions - include(GNUInstallDirs) - --if(MSVC) --set(OpenBLAS_LIBNAME libopenblas) --else() - set(OpenBLAS_LIBNAME openblas) --endif() - - ####### - if(MSVC) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index f518c62..0d9c577 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "0.2.20" %} +{% set version = "0.3.0" %} package: name: openblas @@ -7,20 +7,10 @@ package: source: fn: openblas-{{ version }}.tar.gz url: https://github.com/xianyi/OpenBLAS/archive/v{{ version }}.tar.gz - sha256: 5ef38b15d9c652985774869efd548b8e3e972e1e99475c673b25537ed7bcf394 - patches: - - gh_1247.patch - - gh_1259.patch - - gh_1256.patch - - gh_1264.patch - - gh_1279.patch - - gh_1323.patch - - gh_1350.patch - - gh_1377.patch - - gh_1417.patch + sha256: cf51543709abe364d8ecfb5c09a2b533d2b725ea1a66f203509b21a8e9d8f1a1 build: - number: 7 + number: 0 skip: true # [win32] features: - vc14 # [win]