Started implementing kernel/Makefile in cmake.
authorHank Anderson <hank.p.anderson@gmail.com>
Fri, 6 Feb 2015 03:05:11 +0000 (21:05 -0600)
committerHank Anderson <hank.p.anderson@gmail.com>
Fri, 6 Feb 2015 03:05:11 +0000 (21:05 -0600)
CMakeLists.txt
cmake/c_check.cmake
cmake/prebuild.cmake
kernel/CMakeLists.txt [new file with mode: 0644]

index eb15fa4..41cb52b 100644 (file)
@@ -9,8 +9,8 @@ set(OpenBLAS_MINOR_VERSION 2)
 set(OpenBLAS_PATCH_VERSION 13)
 set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
 
-# is this necessary? lapack-netlib has its own fortran checks in its CMakeLists.txt
 enable_language(Fortran)
+enable_language(ASM)
 
 message(WARNING "CMake support is experimental. This will not produce the same Makefiles that OpenBLAS ships with.")
 
@@ -19,7 +19,7 @@ include("${CMAKE_SOURCE_DIR}/cmake/system.cmake")
 
 set(BLASDIRS interface driver/level2 driver/level3 driver/others)
 
-if (NOT ${DYNAMIC_ARCH})
+if (NOT DYNAMIC_ARCH)
   list(APPEND BLASDIRS kernel)
 endif ()
 
index 2e5ce5e..aaa3da7 100644 (file)
@@ -26,8 +26,8 @@
 
 # N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables.
 
-# TODO: detect NEED_FU/FU
-set(NEED_FU 1)
+# TODO: detect FU (front underscore) by compiling ctest1.c
+set(FU "_")
 
 # Convert CMake vars into the format that OpenBLAS expects
 string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS)
@@ -74,5 +74,5 @@ file(WRITE ${TARGET_CONF}
   "#define ARCH_${ARCH}\t1\n"
   "#define C_${COMPILER_ID}\t1\n"
   "#define __${BINARY}BIT__\t1\n"
-  "#define FUNDERSCORE\t${NEED_FU}\n")
+  "#define FUNDERSCORE\t${FU}\n")
 
index 6312a51..32faeee 100644 (file)
@@ -54,7 +54,6 @@ include("${CMAKE_SOURCE_DIR}/cmake/c_check.cmake")
 include("${CMAKE_SOURCE_DIR}/cmake/f_check.cmake")
 
 # compile getarch
-enable_language(ASM)
 set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build")
 set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}")
 file(MAKE_DIRECTORY ${GETARCH_DIR})
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a36cb83
--- /dev/null
@@ -0,0 +1,85 @@
+
+include_directories(${CMAKE_SOURCE_DIR})
+
+# TODO: need to read ${KERNELDIR}/KERNEL into CMake vars
+
+
+# Makefile.L1
+
+# these are using hardcoded filenames for now, should get them from the KERNEL vars, e.g. DAMAXKERNEL instead of amax.S
+GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "USE_ABS" "amax_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "USE_ABS;USE_MIN" "amin_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "" "max_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/amax.S" "DOUBLE" "" "min_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "USE_ABS" "i*amax_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "USE_ABS;USE_MIN" "i*amin_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "" "i*max_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+GenerateNamedObjects("${KERNELDIR}/iamax.S" "DOUBLE" "" "i*min_k" 0)
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
+
+#DBLASOBJS     += \
+#      dasum_k$(TSUFFIX).$(SUFFIX) daxpy_k$(TSUFFIX).$(SUFFIX) dcopy_k$(TSUFFIX).$(SUFFIX) ddot_k$(TSUFFIX).$(SUFFIX) \
+#      dnrm2_k$(TSUFFIX).$(SUFFIX) drot_k$(TSUFFIX).$(SUFFIX) dscal_k$(TSUFFIX).$(SUFFIX) dswap_k$(TSUFFIX).$(SUFFIX) \
+#      daxpby_k$(TSUFFIX).$(SUFFIX)
+
+# Makefile.L2
+#DBLASOBJS     += \
+#      dgemv_n$(TSUFFIX).$(SUFFIX) dgemv_t$(TSUFFIX).$(SUFFIX) dsymv_U$(TSUFFIX).$(SUFFIX) dsymv_L$(TSUFFIX).$(SUFFIX) \
+#      dger_k$(TSUFFIX).$(SUFFIX)
+
+
+# Makefile.L3
+#DKERNELOBJS   += \
+#      dgemm_kernel$(TSUFFIX).$(SUFFIX) \
+#      $(DGEMMINCOPYOBJ) $(DGEMMITCOPYOBJ) \
+#      $(DGEMMONCOPYOBJ) $(DGEMMOTCOPYOBJ)
+
+#DBLASOBJS     += \
+#      dgemm_beta$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_kernel_LN$(TSUFFIX).$(SUFFIX) dtrmm_kernel_LT$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_kernel_RN$(TSUFFIX).$(SUFFIX) dtrmm_kernel_RT$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_kernel_LN$(TSUFFIX).$(SUFFIX) dtrsm_kernel_LT$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_kernel_RN$(TSUFFIX).$(SUFFIX) dtrsm_kernel_RT$(TSUFFIX).$(SUFFIX) \
+
+#DBLASOBJS += \
+#      dtrmm_iunucopy$(TSUFFIX).$(SUFFIX) dtrmm_iunncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_ilnucopy$(TSUFFIX).$(SUFFIX) dtrmm_ilnncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_iutucopy$(TSUFFIX).$(SUFFIX) dtrmm_iutncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_iltucopy$(TSUFFIX).$(SUFFIX) dtrmm_iltncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_ounucopy$(TSUFFIX).$(SUFFIX) dtrmm_ounncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_olnucopy$(TSUFFIX).$(SUFFIX) dtrmm_olnncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_outucopy$(TSUFFIX).$(SUFFIX) dtrmm_outncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrmm_oltucopy$(TSUFFIX).$(SUFFIX) dtrmm_oltncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_iunucopy$(TSUFFIX).$(SUFFIX) dtrsm_iunncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_ilnucopy$(TSUFFIX).$(SUFFIX) dtrsm_ilnncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_iutucopy$(TSUFFIX).$(SUFFIX) dtrsm_iutncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_iltucopy$(TSUFFIX).$(SUFFIX) dtrsm_iltncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_ounucopy$(TSUFFIX).$(SUFFIX) dtrsm_ounncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_olnucopy$(TSUFFIX).$(SUFFIX) dtrsm_olnncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_outucopy$(TSUFFIX).$(SUFFIX) dtrsm_outncopy$(TSUFFIX).$(SUFFIX) \
+#      dtrsm_oltucopy$(TSUFFIX).$(SUFFIX) dtrsm_oltncopy$(TSUFFIX).$(SUFFIX) \
+#      dsymm_iutcopy$(TSUFFIX).$(SUFFIX) dsymm_iltcopy$(TSUFFIX).$(SUFFIX) \
+#      dsymm_outcopy$(TSUFFIX).$(SUFFIX) dsymm_oltcopy$(TSUFFIX).$(SUFFIX)
+
+#DBLASOBJS += \
+#      domatcopy_k_cn$(TSUFFIX).$(SUFFIX) domatcopy_k_rn$(TSUFFIX).$(SUFFIX) \
+#      domatcopy_k_ct$(TSUFFIX).$(SUFFIX) domatcopy_k_rt$(TSUFFIX).$(SUFFIX)
+
+# Makefile.LA
+#DBLASOBJS     += dneg_tcopy$(TSUFFIX).$(SUFFIX) dlaswp_ncopy$(TSUFFIX).$(SUFFIX)
+
+set(DBLAS_OBJS ${DBLAS_OBJS} PARENT_SCOPE) # list append removes the scope from DBLAS_OBJS