#
# This code validates that the install trees of the shared and static builds
# of "mfc1" have the expected contents:
#
set(binary_dir "@binary_dir@")
message("binary_dir='${binary_dir}'")

# There should be exactly one file in the static install tree "bin" directory
# and it should be named "mfc1.exe"
#
message(STATUS "===== mfcStatic install tree =====")
file(GLOB_RECURSE files "${binary_dir}/mfcStatic-prefix/bin/*.*")
message(STATUS "mfcStatic files='${files}'")
list(LENGTH files len)
if(NOT len EQUAL 1)
  message(FATAL_ERROR
    "len='${len}' is not '1' (count of static 'bin' files)")
endif()
get_filename_component(name "${files}" NAME)
string(TOLOWER "${name}" name)
if(NOT "${name}" STREQUAL "mfc1.exe")
  message(FATAL_ERROR "unexpected mfcStatic file name '${name}'")
endif()

# There should be at least 3 files in the shared install tree "bin"
# directory: mfc1.exe, the main MFC dll and the C runtime dll. With more
# recent versions of VS, there will also be an MFC language dll and a
# manifest file.
#
message(STATUS "===== mfcShared install tree =====")
file(GLOB_RECURSE files "${binary_dir}/mfcShared-prefix/bin/*.*")
message(STATUS "mfcShared files='${files}'")
list(LENGTH files len)

set(msvc6 "@MSVC60@")
if("${msvc6}" STREQUAL "1")
  set(expected_minimum_file_count 1)
else()
  set(expected_minimum_file_count 3)
endif()

if(len LESS ${expected_minimum_file_count})
  message(FATAL_ERROR
    "len='${len}' is less than '${expected_minimum_file_count}' (count of shared 'bin' files)")
endif()
foreach(f ${files})
  message(STATUS "file '${f}'")
  get_filename_component(ext "${f}" EXT)
  string(TOLOWER "${ext}" ext)

  if("${ext}" MATCHES "\\.exe$")
    message(STATUS "  exe file")
    get_filename_component(name "${f}" NAME)
    string(TOLOWER "${name}" name)
    if(NOT "${name}" STREQUAL "mfc1.exe")
      message(FATAL_ERROR "unexpected mfcShared .exe file name '${name}'")
    endif()
  elseif("${ext}" MATCHES "\\.dll$")
    message(STATUS "  dll file")
  elseif("${ext}" MATCHES "\\.manifest$")
    message(STATUS "  manifest file")
  else()
    message(STATUS "  unknown file")
    message(FATAL_ERROR "unexpected mfcShared ${ext} file name '${f}'")
  endif()
endforeach()

message(STATUS "All mfc1 build validation tests pass.")
