message(FATAL_ERROR "Neither static nor shared are enabled.")
endif ()
+set(DBLAS_OBJS "")
foreach (BLAS_DIR ${BLASDIRS})
add_subdirectory(${BLAS_DIR})
endforeach ()
+# get obj vars into format that add_library likes: $<TARGET_OBJS:objlib> (see http://www.cmake.org/cmake/help/v3.0/command/add_library.html)
+set(TARGET_OBJS "")
+foreach (DBLAS_OBJ ${DBLAS_OBJS})
+ list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:${DBLAS_OBJ}>")
+endforeach ()
+add_library(openblas ${TARGET_OBJS})
+
#Save the config files for installation
# @cp Makefile.conf Makefile.conf_last
# @cp config.h config_last.h
function(GenerateObjects sources_in defines_in all_defines_in)
AllCombinations("${defines_in}")
set(define_combos ${LIST_OUT})
+ set(OBJ_LIST_OUT "")
foreach (source_file ${sources_in})
foreach (def_combo ${define_combos})
if (cur_defines AND NOT "${cur_defines}" STREQUAL " ") # using space as the empty set
set_target_properties(${obj_name} PROPERTIES COMPILE_DEFINITIONS "${cur_defines}")
endif ()
+ list(APPEND OBJ_LIST_OUT ${obj_name})
endforeach ()
endforeach ()
+ set(OBJ_LIST_OUT ${OBJ_LIST_OUT} PARENT_SCOPE)
endfunction ()
# )
#endif ()
-set(DBLAS_TARGETS DBLAS_NONE DBLAS_T DBLAS_L DBLAS_U DBLAS_TU)
-
-foreach (DBLAS_TARGET ${DBLAS_TARGETS})
- set_target_properties(${DBLAS_TARGET} PROPERTIES COMPILE_DEFINITIONS DOUBLE)
-endforeach ()
+list(APPEND DBLAS_OBJS "DBLAS_NONE;DBLAS_T;DBLAS_L;DBLAS_U;DBLAS_TU")
+set(DBLAS_OBJS ${DBLAS_OBJS} PARENT_SCOPE) # list append removes the scope from DBLAS_OBJS
foreach (GEMM_DEFINE ${GEMM_DEFINES})
add_library(GEMM_${GEMM_DEFINE}_OBJS OBJECT gemm.c)
set_target_properties(GEMM_${GEMM_DEFINE}_OBJS PROPERTIES COMPILE_DEFINITIONS ${GEMM_DEFINE})
+ list(APPEND DBLAS_OBJS GEMM_${GEMM_DEFINE}_OBJS)
endforeach ()
+
GenerateObjects("trmm_L.c;trmm_R.c;trsm_L.c;trsm_R.c" "TRANS;UPPER;UNIT" "DOUBLE")
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
GenerateObjects("symm_k.c" "LOWER;RSIDE" "NN;DOUBLE")
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
GenerateObjects("syrk_k.c;syr2k_k.c" "LOWER;TRANS" "DOUBLE")
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
GenerateObjects("syrk_kernel.c;syr2k_kernel.c" "LOWER" "DOUBLE")
+list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
#if (SMP)
#
# dgemm_thread_tn.c dgemm_thread_tt.c
#endif
#
+
+set(DBLAS_OBJS ${DBLAS_OBJS} PARENT_SCOPE) # list append removes the scope from DBLAS_OBJS
+
set(MEMORY memory.c)
endif ()
-add_library(COMMONOBJS OBJECT
+add_library(COMMON_OBJS OBJECT
${MEMORY}
xerbla.c
abs.c # TODO: this is split into c_abs (DOUBLE unset) and z_abs (DOUBLE set) in the Makefile
# trmm is trsm with a compiler flag set
add_library(TRMM_OBJ OBJECT trsm.c)
-set_target_properties(TRMM_OBJ PROPERTIES COMPILE_DEFINITIONS TRMM)
+set_target_properties(TRMM_OBJ PROPERTIES COMPILE_DEFINITIONS "TRMM")
+
+list(APPEND DBLAS_OBJS "DBLAS1OBJS;AMAX_OBJ;AMIN_OBJ;MIN_OBJ;DBLAS2OBJS;DBLAS3OBJS;TRMM_OBJ")
+set(DBLAS_OBJS ${DBLAS_OBJS} PARENT_SCOPE) # list append removes the scope from DBLAS_OBJS