File: find_ofed_sdk.cmake

package info (click to toggle)
openmpi 1.6.5-9.1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 91,628 kB
  • ctags: 44,305
  • sloc: ansic: 408,966; cpp: 44,454; sh: 27,828; makefile: 10,486; asm: 3,882; python: 1,239; lex: 805; perl: 549; csh: 253; fortran: 232; f90: 126; tcl: 12
file content (97 lines) | stat: -rw-r--r-- 4,009 bytes parent folder | download | duplicates (2)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Copyright (c) 2010      High Performance Computing Center Stuttgart, 
#                         University of Stuttgart.  All rights reserved.
# $COPYRIGHT$
# 
# Additional copyrights may follow
# 
# $HEADER$
#

# Find OFED SDK headers and libraries.

#
#  OFED_SDK_PATH           - path to OFED SDK dir
#  OFED_SDK_INCLUDE_PATH   - path to verbs.h
#  OFED_SDK_FOUND          - system has OFED SDK
#

# This module is included in a .windows file, it must return two variables:
# RESULT                : find result
# RESULT_INCLUDE_PATH   : the path need to include if RESULT is true
# RESULT_LINK_LIBRARIES : libraries need to be linked

IF(NOT OMPI_WANT_OFED)
  SET(RESULT FALSE)
ELSE(NOT OMPI_WANT_OFED)

  SET(OFED_SDK_PATH "" CACHE PATH
    "Path to OFED SDK root directory, if not in system path, has to be set manually by user.")

  #generate the lex file, if it's not there
  IF(NOT EXISTS ${PROJECT_SOURCE_DIR}/mca/btl/openib/btl_openib_lex.c)
    ADD_FLEX_FILE(OPAL_SOURCE_FILES ./mca/btl/openib/btl_openib_lex.l
    btl_openib_ini_yy "${PROJECT_BINARY_DIR}/mca/btl/openib/")
    SET(RESULT_APPEND_FILES ${PROJECT_BINARY_DIR}/mca/btl/openib/btl_openib_lex.c)
  ENDIF(NOT EXISTS ${PROJECT_SOURCE_DIR}/mca/btl/openib/btl_openib_lex.c)

  IF(NOT OFED_SDK_FOUND)

    MESSAGE(STATUS "looking for OFED SDK...")

    # set the default search path
    IF("${OFED_SDK_PATH}" STREQUAL "")
      SET(OFED_SDK_PATH "$ENV{SystemDrive}/OFED_SDK")
    ENDIF("${OFED_SDK_PATH}" STREQUAL "")

    # clear the old find results and start a new search
    UNSET(OFED_SDK_INCLUDE_PATH)
	UNSET(OFED_SDK_LIBIBVERBS)

    FIND_PATH(OFED_SDK_INCLUDE_PATH NAMES verbs.h PATHS ${OFED_SDK_PATH}/Inc/infiniband
      DOC "Path to OFED SDK include directory, will be detected automatically.")

	FIND_LIBRARY(OFED_SDK_LIBIBVERBS libibverbs PATHS ${OFED_SDK_PATH}/Lib
      DOC "Path to OFED SDK libraries directory, will be detected automatically.")

    FIND_LIBRARY(OFED_SDK_LIBRDMACM librdmacm PATHS ${OFED_SDK_PATH}/Lib
      DOC "Path to OFED SDK libraries directory, will be detected automatically.")

    IF(OFED_SDK_INCLUDE_PATH AND OFED_SDK_LIBIBVERBS)
      SET(OFED_SDK_FOUND TRUE CACHE INTERNAL "find result of OFED SDK.")
      SET(RESULT_INCLUDE_PATH ${OFED_SDK_INCLUDE_PATH}/..;${PROJECT_SOURCE_DIR}/mca/btl/openib)
	  SET(RESULT_LINK_LIBRARIES ${OFED_SDK_LIBIBVERBS} ${OFED_SDK_LIBRDMACM})
      SET(RESULT TRUE)
      MESSAGE(STATUS "looking for OFED SDK...found.")

      UNSET(CMAKE_REQUIRED_INCLUDES)
      UNSET(CMAKE_REQUIRED_LIBRARIES)

      SET(CMAKE_REQUIRED_INCLUDES ${OFED_SDK_PATH}/Inc/infiniband/verbs.h ${OFED_SDK_PATH}/Inc/infiniband/sa.h)
      SET(CMAKE_REQUIRED_LIBRARIES ${OFED_SDK_PATH}/Lib/libibverbs.lib ${OFED_SDK_PATH}/Lib/librdmacm.lib)

      OMPI_CHECK_FUNCTION_EXISTS(ibv_fork_init HAVE_IBV_FORK_INIT)
      OMPI_CHECK_FUNCTION_EXISTS(ibv_get_device_list HAVE_IBV_GET_DEVICE_LIST)
      OMPI_CHECK_FUNCTION_EXISTS(ibv_resize_cq HAVE_IBV_RESIZE_CQ)
      OMPI_CHECK_SYMBOL_EXISTS(IBV_EVENT_CLIENT_REREGISTER "" HAVE_DECL_IBV_EVENT_CLIENT_REREGISTER)

      INSTALL(FILES ${PROJECT_SOURCE_DIR}/mca/btl/openib/mca-btl-openib-device-params.ini
        ${PROJECT_SOURCE_DIR}/mca/btl/openib/help-mpi-btl-openib.txt
        DESTINATION share/openmpi)

    ELSE(OFED_SDK_INCLUDE_PATH AND OFED_SDK_LIBIBVERBS)
      SET(OFED_SDK_FOUND FALSE CACHE INTERNAL "find result of OFED SDK.")
      SET(RESULT FALSE)
      MESSAGE(STATUS "looking for OFED SDK...not found.")
    ENDIF(OFED_SDK_INCLUDE_PATH AND OFED_SDK_LIBIBVERBS)

  ELSE(NOT OFED_SDK_FOUND)
    SET(RESULT_INCLUDE_PATH ${OFED_SDK_INCLUDE_PATH}/..;${OpenMPI_SOURCE_DIR}/ompi/mca/btl/openib)
    SET(RESULT_LINK_LIBRARIES ${OFED_SDK_LIBIBVERBS} ${OFED_SDK_LIBRDMACM})
    SET(RESULT TRUE)

    INSTALL(FILES ${PROJECT_SOURCE_DIR}/mca/btl/openib/mca-btl-openib-device-params.ini
      ${PROJECT_SOURCE_DIR}/mca/btl/openib/help-mpi-btl-openib.txt
      DESTINATION share/openmpi)
  ENDIF(NOT OFED_SDK_FOUND)

ENDIF(NOT OMPI_WANT_OFED)