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