You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

lapack_build.cmake 8.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. ##
  2. ## HINTS: ctest -Ddashboard_model=Continuous -S $(pwd)/lapack/lapack_build.cmake
  3. ## HINTS: ctest -Ddashboard_model=Experimental -S $(pwd)/lapack/lapack_build.cmake
  4. ## HINTS: ctest -Ddashboard_model=Nightly -S $(pwd)/lapack/lapack_build.cmake
  5. ##
  6. cmake_minimum_required(VERSION 2.8.10)
  7. ###################################################################
  8. # The values in this section must always be provided
  9. ###################################################################
  10. if(UNIX)
  11. if(NOT compiler)
  12. set(compiler gcc)
  13. endif()
  14. if(NOT c_compiler)
  15. set(c_compiler gcc)
  16. endif()
  17. if(NOT full_compiler)
  18. set(full_compiler g++)
  19. endif()
  20. endif()
  21. if(EXISTS "/proc/cpuinfo")
  22. set(parallel 1)
  23. file(STRINGS "/proc/cpuinfo" CPUINFO)
  24. foreach(line ${CPUINFO})
  25. if("${line}" MATCHES processor)
  26. math(EXPR parallel "${parallel} + 1")
  27. endif()
  28. endforeach()
  29. endif()
  30. if(WIN32)
  31. set(VSLOCATIONS
  32. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup;VsCommonDir]/MSDev98/Bin"
  33. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.0\\Setup\\VS;EnvironmentDirectory]"
  34. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VS;EnvironmentDirectory]"
  35. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]"
  36. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup;Dbghelp_path]"
  37. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VS;EnvironmentDirectory]"
  38. )
  39. set(GENERATORS
  40. "Visual Studio 6"
  41. "Visual Studio 7"
  42. "Visual Studio 7 .NET 2003"
  43. "Visual Studio 8 2005"
  44. "Visual Studio 8 2005"
  45. "Visual Studio 9 2008"
  46. )
  47. set(vstype 0)
  48. foreach(p ${VSLOCATIONS})
  49. get_filename_component(VSPATH ${p} PATH)
  50. if(NOT "${VSPATH}" STREQUAL "/" AND EXISTS "${VSPATH}")
  51. message(" found VS install = ${VSPATH}")
  52. set(genIndex ${vstype})
  53. endif()
  54. math(EXPR vstype "${vstype} +1")
  55. endforeach()
  56. if(NOT DEFINED genIndex)
  57. message(FATAL_ERROR "Could not find installed visual stuido")
  58. endif()
  59. list(GET GENERATORS ${genIndex} GENERATOR)
  60. set(CTEST_CMAKE_GENERATOR "${GENERATOR}")
  61. message("${CTEST_CMAKE_GENERATOR} - found")
  62. set(compiler cl)
  63. endif()
  64. find_program(HOSTNAME NAMES hostname)
  65. find_program(UNAME NAMES uname)
  66. # Get the build name and hostname
  67. execute_process(${HOSTNAME}
  68. OUTPUT_VARIABLE hostname)
  69. string(REGEX REPLACE "[/\\\\+<> #]" "-" hostname "${hostname}")
  70. message("HOSTNAME: ${hostname}")
  71. # default to parallel 1
  72. if(NOT DEFINED parallel)
  73. set(parallel 1)
  74. endif()
  75. find_package(Git REQUIRED)
  76. set(CTEST_GIT_COMMAND ${GIT_EXECUTABLE})
  77. set(CTEST_UPDATE_COMMAND ${GIT_EXECUTABLE})
  78. macro(getuname name flag)
  79. execute_process(COMMAND "${UNAME}" "${flag}"
  80. OUTPUT_VARIABLE "${name}")
  81. string(REGEX REPLACE "[/\\\\+<> #]" "-" "${name}" "${${name}}")
  82. string(REGEX REPLACE "^(......|.....|....|...|..|.).*" "\\1" "${name}" "${${name}}")
  83. endmacro()
  84. getuname(osname -s)
  85. getuname(osver -v)
  86. getuname(osrel -r)
  87. getuname(cpu -m)
  88. if("${osname}" MATCHES Darwin)
  89. find_program(SW_VER sw_vers)
  90. execute_process(COMMAND "${SW_VER}" -productVersion OUTPUT_VARIABLE osver)
  91. string(REPLACE "\n" "" osver "${osver}")
  92. set(osname "MacOSX")
  93. set(osrel "")
  94. if("${cpu}" MATCHES "Power")
  95. set(cpu "ppc")
  96. endif()
  97. endif()
  98. if(NOT compiler)
  99. message(FATAL_ERROR "compiler must be set")
  100. endif()
  101. set(BUILDNAME "${osname}${osver}${osrel}${cpu}-${compiler}")
  102. message("BUILDNAME: ${BUILDNAME}")
  103. # this is the module name that should be checked out
  104. set (CTEST_DIR_NAME "lapackGIT")
  105. # Settings:
  106. message("NOSPACES = ${NOSPACES}")
  107. if(NOSPACES)
  108. set(CTEST_DASHBOARD_ROOT "$ENV{HOME}/Dashboards/MyTests-${BUILDNAME}")
  109. else()
  110. set(CTEST_DASHBOARD_ROOT "$ENV{HOME}/Dashboards/My Tests-${BUILDNAME}")
  111. endif()
  112. set(CTEST_SITE "${hostname}")
  113. set(CTEST_BUILD_NAME "${BUILDNAME}")
  114. set(CTEST_TEST_TIMEOUT "36000")
  115. # GIT command and the checkout command
  116. # Select Git source to use.
  117. if(NOT DEFINED dashboard_git_url)
  118. set(dashboard_git_url "https://github.com/Reference-LAPACK/lapack.git")
  119. endif()
  120. if(NOT DEFINED dashboard_git_branch)
  121. set(dashboard_git_branch master)
  122. endif()
  123. if(NOT EXISTS "${CTEST_DASHBOARD_ROOT}/${CTEST_DIR_NAME}")
  124. set(CTEST_CHECKOUT_COMMAND
  125. "\"${CTEST_UPDATE_COMMAND}\" clone ${dashboard_git_url} ${CTEST_DIR_NAME}")
  126. endif()
  127. # Explicitly specify the remote as "origin". This ensure we are pulling from
  128. # the correct remote and prevents command failures when the git tracking
  129. # branch has not been configured.
  130. set(CTEST_GIT_UPDATE_CUSTOM "${CTEST_GIT_COMMAND}" pull origin ${dashboard_git_branch})
  131. # Set the generator and build configuration
  132. if(NOT DEFINED CTEST_CMAKE_GENERATOR)
  133. set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
  134. endif()
  135. set(CTEST_PROJECT_NAME "LAPACK")
  136. set(CTEST_BUILD_CONFIGURATION "Release")
  137. # Extra special variables
  138. set(ENV{DISPLAY} "")
  139. if(CTEST_CMAKE_GENERATOR MATCHES Makefiles)
  140. set(ENV{CC} "${c_compiler}")
  141. set(ENV{FC} "${f_compiler}")
  142. set(ENV{CXX} "${full_compiler}")
  143. endif()
  144. #----------------------------------------------------------------------------------
  145. # Should not need to edit under this line
  146. #----------------------------------------------------------------------------------
  147. # if you do not want to use the default location for a
  148. # dashboard then set this variable to the directory
  149. # the dashboard should be in
  150. make_directory("${CTEST_DASHBOARD_ROOT}")
  151. # these are the names of the source and binary directory on disk.
  152. # They will be appended to DASHBOARD_ROOT
  153. set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_DIR_NAME}")
  154. set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}-${CTEST_BUILD_NAME}")
  155. set(CTEST_NOTES_FILES "${CTEST_NOTES_FILES}"
  156. "${CMAKE_CURRENT_LIST_FILE}"
  157. )
  158. # check for parallel
  159. if(parallel GREATER 1 )
  160. if(NOT CTEST_BUILD_COMMAND)
  161. set(CTEST_BUILD_COMMAND "make -j${parallel} -i")
  162. endif()
  163. message("Use parallel build")
  164. message("CTEST_BUILD_COMMAND: ${CTEST_BUILD_COMMAND}")
  165. message("CTEST_CONFIGURE_COMMAND: ${CTEST_CONFIGURE_COMMAND}")
  166. endif()
  167. ###################################################################
  168. # Values for the cmake build
  169. ###################################################################
  170. set( CACHE_CONTENTS "
  171. SITE:STRING=${hostname}
  172. BUILDNAME:STRING=${BUILDNAME}
  173. DART_ROOT:PATH=
  174. GITCOMMAND:FILEPATH=${CTEST_UPDATE_COMMAND}
  175. DROP_METHOD:STRING=https
  176. DART_TESTING_TIMEOUT:STRING=${CTEST_TEST_TIMEOUT}
  177. #Set build type to use optimized build
  178. CMAKE_BUILD_TYPE:STRING=Release
  179. # Enable LAPACKE
  180. LAPACKE:OPTION=ON
  181. CBLAS:OPTION=ON
  182. # Use Reference BLAS by default
  183. USE_OPTIMIZED_BLAS:OPTION=OFF
  184. USE_OPTIMIZED_LAPACK:OPTION=OFF
  185. " )
  186. ##########################################################################
  187. # wipe the binary dir
  188. message("Remove binary directory...")
  189. ctest_empty_binary_directory("${CTEST_BINARY_DIRECTORY}")
  190. message("CTest Directory: ${CTEST_DASHBOARD_ROOT}")
  191. message("Initial checkout: ${CTEST_CVS_CHECKOUT}")
  192. message("Initial cmake: ${CTEST_CMAKE_COMMAND}")
  193. message("CTest command: ${CTEST_COMMAND}")
  194. # this is the initial cache to use for the binary tree, be careful to escape
  195. # any quotes inside of this string if you use it
  196. file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" "${CACHE_CONTENTS}")
  197. # Select the model (Nightly, Experimental, Continuous).
  198. if(NOT DEFINED dashboard_model)
  199. set(dashboard_model Nightly)
  200. endif()
  201. if(NOT "${dashboard_model}" MATCHES "^(Nightly|Experimental|Continuous)$")
  202. message(FATAL_ERROR "dashboard_model must be Nightly, Experimental, or Continuous")
  203. endif()
  204. message("Start dashboard...")
  205. ctest_start(${dashboard_model})
  206. #ctest_start(Experimental)
  207. message(" Update")
  208. ctest_update(SOURCE "${CTEST_SOURCE_DIRECTORY}" RETURN_VALUE res)
  209. message(" Configure")
  210. ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  211. message("read custom files after configure")
  212. ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
  213. message(" Build")
  214. ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  215. message(" Test")
  216. ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res)
  217. #ctest_test(BUILD "${CTEST_BINARY_DIRECTORY}" INCLUDE "Summary")
  218. message(" Submit")
  219. ctest_submit(RETURN_VALUE res)
  220. message(" All done")