Started implementing kernel/Makefile in cmake.

This commit is contained in:
Hank Anderson 2015-02-05 21:05:11 -06:00
parent 627d5e7401
commit 189fadfde0
4 changed files with 90 additions and 6 deletions

View File

@ -9,8 +9,8 @@ set(OpenBLAS_MINOR_VERSION 2)
set(OpenBLAS_PATCH_VERSION 13) set(OpenBLAS_PATCH_VERSION 13)
set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") 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(Fortran)
enable_language(ASM)
message(WARNING "CMake support is experimental. This will not produce the same Makefiles that OpenBLAS ships with.") 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) set(BLASDIRS interface driver/level2 driver/level3 driver/others)
if (NOT ${DYNAMIC_ARCH}) if (NOT DYNAMIC_ARCH)
list(APPEND BLASDIRS kernel) list(APPEND BLASDIRS kernel)
endif () endif ()

View File

@ -26,8 +26,8 @@
# N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables. # N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables.
# TODO: detect NEED_FU/FU # TODO: detect FU (front underscore) by compiling ctest1.c
set(NEED_FU 1) set(FU "_")
# Convert CMake vars into the format that OpenBLAS expects # Convert CMake vars into the format that OpenBLAS expects
string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS) string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS)
@ -74,5 +74,5 @@ file(WRITE ${TARGET_CONF}
"#define ARCH_${ARCH}\t1\n" "#define ARCH_${ARCH}\t1\n"
"#define C_${COMPILER_ID}\t1\n" "#define C_${COMPILER_ID}\t1\n"
"#define __${BINARY}BIT__\t1\n" "#define __${BINARY}BIT__\t1\n"
"#define FUNDERSCORE\t${NEED_FU}\n") "#define FUNDERSCORE\t${FU}\n")

View File

@ -54,7 +54,6 @@ include("${CMAKE_SOURCE_DIR}/cmake/c_check.cmake")
include("${CMAKE_SOURCE_DIR}/cmake/f_check.cmake") include("${CMAKE_SOURCE_DIR}/cmake/f_check.cmake")
# compile getarch # compile getarch
enable_language(ASM)
set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build") set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build")
set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}") set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}")
file(MAKE_DIRECTORY ${GETARCH_DIR}) file(MAKE_DIRECTORY ${GETARCH_DIR})

85
kernel/CMakeLists.txt Normal file
View File

@ -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