-
Notifications
You must be signed in to change notification settings - Fork 6
/
FindBlisSerial.cmake
73 lines (63 loc) · 2.38 KB
/
FindBlisSerial.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
SET(BLIS_PREFIX "Blis-Serial: ")
SET(BLIS_LIB_NAME Serial)
IF ( EXISTS /etc/debian_version )
# We are on debian
MESSAGE(STATUS "${BLIS_PREFIX} ${CMAKE_LIBRARY_ARCHITECTURE} ")
SET(SEARCH_PATH /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/blis-serial /usr/lib /usr/lib64)
SET(SEARCH_NAME blis)
ELSE()
SET(SEARCH_PATH /usr/lib/ /usr/lib64 /usr/local/lib /usr/local/lib64)
SET(SEARCH_NAME blis)
ENDIF()
FIND_LIBRARY(Blis${BLIS_LIB_NAME}_LIBRARY NAMES ${SEARCH_NAME} HINTS ${SEARCH_PATH} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH DOC "Blis-Serial Location")
IF (Blis${BLIS_LIB_NAME}_LIBRARY)
MESSAGE(STATUS "${BLIS_PREFIX} Candidate: ${Blis${BLIS_LIB_NAME}_LIBRARY}")
IF(INTEGER8 STREQUAL ON)
SET(CF "-DINTEGER8")
ELSE()
SET(CF "")
ENDIF()
SET(TEST_CODE "
#ifdef NDEBUG
#undef NDEBUG
#endif
#include<assert.h>
#include<stdint.h>
extern int bli_info_get_enable_blas()\;
extern int bli_info_get_enable_openmp()\;
extern int bli_info_get_enable_pthreads()\;
int main() { assert(bli_info_get_enable_pthreads() == 0 && bli_info_get_enable_openmp()==0)\; return 0\;}
")
FILE(WRITE ${CMAKE_BINARY_DIR}/otest.c ${TEST_CODE})
TRY_RUN(_RUN_RES _COMPILE_RES ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/otest.c LINK_LIBRARIES ${Blis${BLIS_LIB_NAME}_LIBRARY}
COMPILE_DEFINITIONS ${CF}
COMPILE_OUTPUT_VARIABLE COMPILE_OUT
RUN_OUTPUT_VARIABLE RUN_OUT)
IF(FIND_DEBUG)
MESSAGE(STATUS "_RUN_RES : ${_RUN_RES}")
MESSAGE(STATUS "_COMPILE_RES: ${_COMPILE_RES}")
MESSAGE(STATUS "COMPILE_OUT: ${COMPILE_OUT}")
MESSAGE(STATUS "RUN_OUT: ${RUN_OUT}")
ENDIF()
FILE(REMOVE ${CMAKE_BINARY_DIR}/otest.c)
IF ( NOT (_RUN_RES EQUAL 0 AND _COMPILE_RES) )
MESSAGE(STATUS "${BLIS_PREFIX} ${Blis${BLIS_LIB_NAME}_LIBRARY} does not contain the ${BLIS_LIB_NAME} version of Blis.")
SET(Blis${BLIS_LIB_NAME}_LIBRARY FALSE)
ENDIF()
UNSET(_RUN_RES)
UNSET(_COMPILE_RES)
UNSET(COMPILE_OUT)
UNSET(RUN_OUT)
ELSE()
SET(Blis${BLIS_LIB_NAME}_FOUND FALSE)
ENDIF()
include(FindPackageHandleStandardArgs)
# INCLUDE(find_package_handle_standard_args)
find_package_handle_standard_args(Blis${BLIS_LIB_NAME} REQUIRED_VARS Blis${BLIS_LIB_NAME}_LIBRARY)
UNSET(CF)
UNSET(TEST_CODE)
UNSET(SEARCH_NAME)
UNSET(SEARCH_PATH)
UNSET(BLIS_PREFIX)
UNSET(BLIS_LIB_NAME)
UNSET(BLIS_GET_PARALLEL)