aboutsummaryrefslogtreecommitdiff
path: root/tests/freealut/admin/CMakeModules/FindSleepFunction.cmake
blob: ebb823fe590a5626e0075ed0857af62b9998db37 (plain)
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
MACRO(CHECK_INCLUDE_FILE_DEFINE HEADER VAR)
CHECK_INCLUDE_FILE(${HEADER} HAVE_INCLUDE_FILE)
IF(HAVE_INCLUDE_FILE)
  ADD_DEFINE("${VAR} 1")
  SET(${VAR} 1 CACHE INTERNAL "")
ENDIF(HAVE_INCLUDE_FILE)
ENDMACRO(CHECK_INCLUDE_FILE_DEFINE ARG)

MACRO(CHECK_FUNCTION_DEFINE HEADERS FUNC PARAM VAR)
CHECK_C_SOURCE_COMPILES(
"
${HEADERS}
int main(){
${FUNC} ${PARAM};
}
" ${VAR})
IF(${VAR})
  ADD_DEFINE("${VAR} 1")
ENDIF(${VAR})
ENDMACRO(CHECK_FUNCTION_DEFINE HEADERS FUNC PARAM VAR)


IF(WIN32)
  CHECK_INCLUDE_FILE_DEFINE(windows.h HAVE_WINDOWS_H)
  IF(HAVE_WINDOWS_H)
    CHECK_FUNCTION_DEFINE("#include <windows.h>" Sleep "(0)" HAVE_SLEEP)
  ENDIF(HAVE_WINDOWS_H)
ELSE(WIN32)

  CHECK_INCLUDE_FILE_DEFINE(time.h HAVE_TIME_H)
  IF(HAVE_TIME_H)
    CHECK_FUNCTION_DEFINE("#include <time.h>" nanosleep "((struct timespec*)0, (struct timespec*)0)" HAVE_NANOSLEEP)
  ELSE(HAVE_TIME_H)

    CHECK_INCLUDE_FILE_DEFINE(unistd.h HAVE_UNISTD_H)
    IF(HAVE_UNISTD_H)
      CHECK_FUNCTION_DEFINE("#include <unistd.h>" usleep "(0)" HAVE_USLEEP)
    ENDIF(HAVE_UNISTD_H)
  ENDIF(HAVE_TIME_H)
ENDIF(WIN32)