File: check_c_inline.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 (54 lines) | stat: -rw-r--r-- 1,646 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
#
# Copyright (c) 2007-2010 High Performance Computing Center Stuttgart, 
#                         University of Stuttgart.  All rights reserved.
# $COPYRIGHT$
# 
# Additional copyrights may follow
# 
# $HEADER$
#


MACRO(CHECK_C_INLINE)
  #
  # Return the inline definition string.
  #
  
  IF(NOT HAVE_INLINE)
    
    # path of foo test programs
    SET (FOO_SOURCE_DIR ${OpenMPI_SOURCE_DIR}/CMakeTests)
    
    MESSAGE( STATUS "Check inline definition...")
    
    FOREACH(KEYWORD "inline" "__inline__" "__inline")
      
      SET(HAVE_INLINE FALSE)
      FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_inline.c"
        "typedef int foo_t;
         static inline foo_t static_foo(){return 0;}
         foo_t foo(){return 0;}
         int main(int argc, char *argv[]){return 0;}
        ")
      
      TRY_COMPILE(C_HAS_${KEYWORD} "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CMakeTmp/"
        "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_inline.c"
        COMPILE_DEFINITIONS "-Dinline=${KEYWORD}")

      IF(C_HAS_${KEYWORD})
        SET(HAVE_INLINE TRUE CACHE INTERNAL "have 'inline' definition")
        SET(INLINE_STRING ${KEYWORD} CACHE INTERNAL "'inline' definition")
        MESSAGE( STATUS "Checking inline definition...${INLINE_STRING}")
        BREAK()
      ENDIF(C_HAS_${KEYWORD})
    ENDFOREACH(KEYWORD)
    
    IF(NOT HAVE_INLINE)
      MESSAGE(FATAL_ERROR "Check inline definition...failed. Cannot continue.")
    ENDIF(NOT HAVE_INLINE)
    
  ENDIF(NOT HAVE_INLINE)

  OMPI_DEF(inline ${INLINE_STRING} "Define to `__inline__' or `__inline'." 0 1)

ENDMACRO(CHECK_C_INLINE)