1set(CTEST_PROJECT_NAME "tokudb")
2get_filename_component(CTEST_SOURCE_DIRECTORY "${CTEST_SCRIPT_DIRECTORY}/.." ABSOLUTE)
3
4## given an executable, follows symlinks and resolves paths until it runs
5## out of symlinks, then gives you the basename
6macro(real_executable_name filename_input out)
7  set(res 0)
8  set(filename ${filename_input})
9  while(NOT(res))
10    execute_process(
11      COMMAND which ${filename}
12      RESULT_VARIABLE res
13      OUTPUT_VARIABLE full_filename
14      OUTPUT_STRIP_TRAILING_WHITESPACE)
15    if(NOT(res))
16      execute_process(
17        COMMAND readlink ${full_filename}
18        RESULT_VARIABLE res
19        OUTPUT_VARIABLE link_target
20        OUTPUT_STRIP_TRAILING_WHITESPACE)
21      if(NOT(res))
22        execute_process(
23          COMMAND dirname ${full_filename}
24          OUTPUT_VARIABLE filepath
25          OUTPUT_STRIP_TRAILING_WHITESPACE)
26        set(filename "${filepath}/${link_target}")
27      else()
28        set(filename ${full_filename})
29      endif()
30    else()
31      set(filename ${filename})
32    endif()
33  endwhile()
34  execute_process(
35    COMMAND basename ${filename}
36    OUTPUT_VARIABLE real_filename
37    OUTPUT_STRIP_TRAILING_WHITESPACE)
38  set(${out} ${real_filename})
39endmacro(real_executable_name)
40
41## gives you `uname ${flag}`
42macro(uname flag out)
43  execute_process(
44    COMMAND uname ${flag}
45    OUTPUT_VARIABLE ${out}
46    OUTPUT_STRIP_TRAILING_WHITESPACE)
47endmacro(uname)
48
49## gather machine info
50uname("-m" machine_type)
51get_filename_component(branchname "${CTEST_SOURCE_DIRECTORY}" NAME)
52
53set(ncpus 2)
54execute_process(
55  COMMAND grep bogomips /proc/cpuinfo
56  COMMAND wc -l
57  RESULT_VARIABLE res
58  OUTPUT_VARIABLE proc_ncpus
59  OUTPUT_STRIP_TRAILING_WHITESPACE
60  )
61if(NOT res)
62  set(ncpus ${proc_ncpus})
63endif()
64
65## construct BUILDNAME
66set(BUILDNAME "${branchname} ${CMAKE_SYSTEM} ${machine_type}" CACHE STRING "CTest build name" FORCE)
67set(CTEST_BUILD_NAME "${BUILDNAME}")
68set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
69site_name(CTEST_SITE)
70
71find_program(CTEST_SVN_COMMAND NAMES svn)
72find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
73find_program(CTEST_COVERAGE_COMMAND NAMES gcov)
74
75list(APPEND CTEST_NOTES_FILES
76  "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}"
77  "${CMAKE_CURRENT_LIST_FILE}"
78  )
79
80set(all_opts
81  -DBUILD_TESTING=ON
82  -DUSE_CILK=OFF
83  )
84set(rel_opts
85  ${all_opts}
86  -DCMAKE_BUILD_TYPE=Release
87  )
88set(dbg_opts
89  ${all_opts}
90  -DCMAKE_BUILD_TYPE=Debug
91  )
92set(cov_opts
93  ${all_opts}
94  -DCMAKE_BUILD_TYPE=Debug
95  -DUSE_GCOV=ON
96  )
97
98set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/NightlyRelease")
99ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
100ctest_start(Nightly ${CTEST_SOURCE_DIRECTORY} ${CTEST_BINARY_DIRECTORY})
101ctest_update(SOURCE ${CTEST_SOURCE_DIRECTORY})
102ctest_configure(BUILD ${CTEST_BINARY_DIRECTORY} SOURCE ${CTEST_SOURCE_DIRECTORY}
103  OPTIONS "${rel_opts}")
104configure_file("${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake" "${CTEST_BINARY_DIRECTORY}/CTestConfig.cmake")
105configure_file("${CTEST_SOURCE_DIRECTORY}/CTestCustom.cmake" "${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake")
106ctest_build(BUILD ${CTEST_BINARY_DIRECTORY})
107ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
108ctest_test(BUILD ${CTEST_BINARY_DIRECTORY} PARALLEL_LEVEL ${ncpus})
109ctest_submit()
110
111set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/NightlyDebug")
112ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
113ctest_start(Nightly ${CTEST_SOURCE_DIRECTORY} ${CTEST_BINARY_DIRECTORY})
114ctest_configure(BUILD ${CTEST_BINARY_DIRECTORY} SOURCE ${CTEST_SOURCE_DIRECTORY}
115  OPTIONS "${dbg_opts}")
116configure_file("${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake" "${CTEST_BINARY_DIRECTORY}/CTestConfig.cmake")
117configure_file("${CTEST_SOURCE_DIRECTORY}/CTestCustom.cmake" "${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake")
118ctest_build(BUILD ${CTEST_BINARY_DIRECTORY})
119ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
120ctest_test(BUILD ${CTEST_BINARY_DIRECTORY} PARALLEL_LEVEL ${ncpus})
121ctest_memcheck(BUILD ${CTEST_BINARY_DIRECTORY} PARALLEL_LEVEL ${ncpus})
122ctest_submit()
123
124set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/NightlyCoverage")
125ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
126ctest_start(Nightly ${CTEST_SOURCE_DIRECTORY} ${CTEST_BINARY_DIRECTORY})
127ctest_configure(BUILD ${CTEST_BINARY_DIRECTORY} SOURCE ${CTEST_SOURCE_DIRECTORY}
128  OPTIONS "${cov_opts}")
129configure_file("${CTEST_SOURCE_DIRECTORY}/CTestConfig.cmake" "${CTEST_BINARY_DIRECTORY}/CTestConfig.cmake")
130configure_file("${CTEST_SOURCE_DIRECTORY}/CTestCustom.cmake" "${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake")
131ctest_build(BUILD ${CTEST_BINARY_DIRECTORY})
132ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
133ctest_test(BUILD ${CTEST_BINARY_DIRECTORY} PARALLEL_LEVEL ${ncpus})
134ctest_coverage(BUILD ${CTEST_BINARY_DIRECTORY} LABELS RUN_GCOV)
135ctest_submit()
136