1#
2# Check C# VS project for required elements.
3#
4set(csProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.csproj")
5if(NOT EXISTS "${csProjectFile}")
6  set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.")
7  return()
8endif()
9
10
11set(inDebug FALSE)
12set(inRelease FALSE)
13set(debugOK FALSE)
14set(releaseOK FALSE)
15
16
17file(STRINGS "${csProjectFile}" lines)
18foreach(line IN LISTS lines)
19  #message(STATUS ${line})
20  if(line MATCHES "^ *<PropertyGroup .*Debug\\|(Win32|x64).*")
21    set(inDebug TRUE)
22  elseif(line MATCHES "^ *<PropertyGroup .*Release\\|(Win32|x64).*")
23    set(inRelease TRUE)
24  elseif(line MATCHES "^ *</PropertyGroup> *$")
25    set(inRelease FALSE)
26    set(inDebug  FALSE)
27  elseif(inDebug AND
28    (line MATCHES "^ *<NoWarn>.*505.*</NoWarn> *$") AND
29    (line MATCHES "^ *<NoWarn>.*707.*</NoWarn> *$") AND
30    (line MATCHES "^ *<NoWarn>.*808.*</NoWarn> *$") AND
31    (line MATCHES "^ *<NoWarn>.*909.*</NoWarn> *$")
32    )
33    set(debugOK TRUE)
34  elseif(inRelease AND
35    (NOT (line MATCHES "^ *<NoWarn>.*505.*</NoWarn> *$")) AND
36    (line MATCHES "^ *<NoWarn>.*707.*</NoWarn> *$") AND
37    (line MATCHES "^ *<NoWarn>.*808.*</NoWarn> *$") AND
38    (line MATCHES "^ *<NoWarn>.*909.*</NoWarn> *$")
39    )
40    set(releaseOK TRUE)
41  endif()
42endforeach()
43
44function(print_csprojfile)
45  file(STRINGS "${csProjectFile}" lines)
46  foreach(line IN LISTS lines)
47    message(STATUS ${line})
48  endforeach()
49endfunction()
50
51
52if(NOT debugOK)
53  message(STATUS "Failed to set Debug configuration warning config correctly.")
54  set(RunCMake_TEST_FAILED "Failed to set Debug configuration defines correctly.")
55  print_csprojfile()
56  return()
57endif()
58
59if(NOT releaseOK)
60  message(STATUS "Failed to set Release configuration warning config correctly.")
61  set(RunCMake_TEST_FAILED "Failed to set Release configuration defines correctly.")
62  print_csprojfile()
63  return()
64endif()
65