PROJECT(DumpInformation)

# first get the standard information for th platform
INCLUDE_DIRECTORIES("This does not exists")
GET_DIRECTORY_PROPERTY(incl INCLUDE_DIRECTORIES)
SET_DIRECTORY_PROPERTIES(PROPERTIES INCLUDE_DIRECTORIES "${DumpInformation_BINARY_DIR};${DumpInformation_SOURCE_DIR}")

CONFIGURE_FILE("${CMAKE_ROOT}/Modules/SystemInformation.in" "${RESULT_FILE}")


FILE(APPEND "${RESULT_FILE}" 
  "\n=================================================================\n")
FILE(APPEND "${RESULT_FILE}" 
  "=== VARIABLES\n")
FILE(APPEND "${RESULT_FILE}" 
  "=================================================================\n")
GET_CMAKE_PROPERTY(res VARIABLES)
FOREACH(var ${res})
  FILE(APPEND "${RESULT_FILE}" "${var} \"${${var}}\"\n")
ENDFOREACH(var ${res})

FILE(APPEND "${RESULT_FILE}" 
  "\n=================================================================\n")
FILE(APPEND "${RESULT_FILE}" 
  "=== COMMANDS\n")
FILE(APPEND "${RESULT_FILE}" 
  "=================================================================\n")
GET_CMAKE_PROPERTY(res COMMANDS)
FOREACH(var ${res})
  FILE(APPEND "${RESULT_FILE}" "${var}\n")
ENDFOREACH(var ${res})

FILE(APPEND "${RESULT_FILE}" 
  "\n=================================================================\n")
FILE(APPEND "${RESULT_FILE}" 
  "=== MACROS\n")
FILE(APPEND "${RESULT_FILE}" 
  "=================================================================\n")
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/AllMacros.txt "")
GET_CMAKE_PROPERTY(res MACROS)
FOREACH(var ${res})
  FILE(APPEND "${RESULT_FILE}" "${var}\n")
ENDFOREACH(var ${res})

FILE(APPEND "${RESULT_FILE}" 
  "\n=================================================================\n")
FILE(APPEND "${RESULT_FILE}" 
  "=== OTHER\n")
FILE(APPEND "${RESULT_FILE}" 
  "=================================================================\n")
GET_DIRECTORY_PROPERTY(res INCLUDE_DIRECTORIES)
FOREACH(var ${res})
  FILE(APPEND "${RESULT_FILE}" "INCLUDE_DIRECTORY: ${var}\n")
ENDFOREACH(var)

GET_DIRECTORY_PROPERTY(res LINK_DIRECTORIES)
FOREACH(var ${res})
  FILE(APPEND "${RESULT_FILE}" "LINK_DIRECTORIES: ${var}\n")
ENDFOREACH(var)

GET_DIRECTORY_PROPERTY(res INCLUDE_REGULAR_EXPRESSION)
FILE(APPEND "${RESULT_FILE}" "INCLUDE_REGULAR_EXPRESSION: ${res}\n")

# include other files if they are present, such as when run from within the
# binary tree
MACRO(DUMP_FILE THE_FILE)
  IF (EXISTS "${THE_FILE}")
    FILE(APPEND "${RESULT_FILE}" 
      "\n=================================================================\n")
    FILE(APPEND "${RESULT_FILE}" 
      "=== ${THE_FILE}\n")
    FILE(APPEND "${RESULT_FILE}" 
      "=================================================================\n")
  
    FILE(READ "${THE_FILE}" FILE_CONTENTS LIMIT 50000)
    FILE(APPEND "${RESULT_FILE}" "${FILE_CONTENTS}")
  ENDIF (EXISTS "${THE_FILE}")
ENDMACRO(DUMP_FILE)

DUMP_FILE("../CMakeCache.txt")
DUMP_FILE("../CMakeFiles/CMakeOutput.log")
DUMP_FILE("../CMakeFiles/CMakeError.log")
DUMP_FILE("../CMakeFiles/CMakeSystem.cmake")

FOREACH (EXTRA_FILE ${EXTRA_DUMP_FILES})
  DUMP_FILE("${EXTRA_FILE}")
ENDFOREACH (EXTRA_FILE)

