158 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # This file defines the Feature Logging macros.
 | |
| #
 | |
| # MACRO_LOG_FEATURE(VAR FEATURE DESCRIPTION URL [REQUIRED [MIN_VERSION [COMMENTS]]])
 | |
| #   Logs the information so that it can be displayed at the end
 | |
| #   of the configure run
 | |
| #   VAR : TRUE or FALSE, indicating whether the feature is supported
 | |
| #   FEATURE: name of the feature, e.g. "libjpeg"
 | |
| #   DESCRIPTION: description what this feature provides
 | |
| #   URL: home page
 | |
| #   REQUIRED: TRUE or FALSE, indicating whether the feature is required
 | |
| #   MIN_VERSION: minimum version number. empty string if unneeded
 | |
| #   COMMENTS: More info you may want to provide.  empty string if unnecessary
 | |
| #
 | |
| # MACRO_DISPLAY_FEATURE_LOG()
 | |
| #   Call this to display the collected results.
 | |
| #   Exits CMake with a FATAL error message if a required feature is missing
 | |
| #
 | |
| # Example:
 | |
| #
 | |
| # INCLUDE(MacroLogFeature)
 | |
| #
 | |
| # FIND_PACKAGE(JPEG)
 | |
| # MACRO_LOG_FEATURE(JPEG_FOUND "libjpeg" "Support JPEG images" "http://www.ijg.org" TRUE "3.2a" "")
 | |
| # ...
 | |
| # MACRO_DISPLAY_FEATURE_LOG()
 | |
| 
 | |
| # Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
 | |
| # Copyright (c) 2006, Allen Winter, <winter@kde.org>
 | |
| # Copyright (c) 2009, Sebastian Trueg, <trueg@kde.org>
 | |
| #
 | |
| # Redistribution and use is allowed according to the terms of the BSD license.
 | |
| # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
 | |
| 
 | |
| IF (NOT _macroLogFeatureAlreadyIncluded)
 | |
|    SET(_file ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
 | |
|    IF (EXISTS ${_file})
 | |
|       FILE(REMOVE ${_file})
 | |
|    ENDIF (EXISTS ${_file})
 | |
| 
 | |
|    SET(_file ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
 | |
|    IF (EXISTS ${_file})
 | |
|       FILE(REMOVE ${_file})
 | |
|    ENDIF (EXISTS ${_file})
 | |
| 
 | |
|    SET(_file ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
 | |
|    IF (EXISTS ${_file})
 | |
|       FILE(REMOVE ${_file})
 | |
|   ENDIF (EXISTS ${_file})
 | |
| 
 | |
|   SET(_macroLogFeatureAlreadyIncluded TRUE)
 | |
| 
 | |
|   INCLUDE(FeatureSummary)
 | |
| 
 | |
| ENDIF (NOT _macroLogFeatureAlreadyIncluded)
 | |
| 
 | |
| 
 | |
| MACRO(MACRO_LOG_FEATURE _var _package _description _url ) # _required _minvers _comments)
 | |
| 
 | |
|    STRING(TOUPPER "${ARGV4}" _required)
 | |
|    SET(_minvers "${ARGV5}")
 | |
|    SET(_comments "${ARGV6}")
 | |
| 
 | |
|    IF (${_var})
 | |
|      SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
 | |
|    ELSE (${_var})
 | |
|      IF ("${_required}" STREQUAL "TRUE")
 | |
|        SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
 | |
|      ELSE ("${_required}" STREQUAL "TRUE")
 | |
|        SET(_LOGFILENAME ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
 | |
|      ENDIF ("${_required}" STREQUAL "TRUE")
 | |
|    ENDIF (${_var})
 | |
| 
 | |
|    SET(_logtext "   * ${_package}")
 | |
| 
 | |
|    IF (NOT ${_var})
 | |
|       IF (${_minvers} MATCHES ".*")
 | |
|         SET(_logtext "${_logtext} (${_minvers} or higher)")
 | |
|       ENDIF (${_minvers} MATCHES ".*")
 | |
|       SET(_logtext "${_logtext}  <${_url}>\n     ")
 | |
|    ELSE (NOT ${_var})
 | |
|      SET(_logtext "${_logtext} - ")
 | |
|    ENDIF (NOT ${_var})
 | |
| 
 | |
|    SET(_logtext "${_logtext}${_description}")
 | |
| 
 | |
|    IF (NOT ${_var})
 | |
|       IF (${_comments} MATCHES ".*")
 | |
|         SET(_logtext "${_logtext}\n     ${_comments}")
 | |
|       ENDIF (${_comments} MATCHES ".*")
 | |
| #      SET(_logtext "${_logtext}\n") #double-space missing features?
 | |
|    ENDIF (NOT ${_var})
 | |
| 
 | |
|    FILE(APPEND "${_LOGFILENAME}" "${_logtext}\n")
 | |
| 
 | |
|    IF(COMMAND SET_PACKAGE_INFO)  # in FeatureSummary.cmake since CMake 2.8.3
 | |
|      SET_PACKAGE_INFO("${_package}" "\"${_description}\"" "${_url}" "\"${_comments}\"")
 | |
|    ENDIF(COMMAND SET_PACKAGE_INFO)
 | |
| 
 | |
| ENDMACRO(MACRO_LOG_FEATURE)
 | |
| 
 | |
| 
 | |
| MACRO(MACRO_DISPLAY_FEATURE_LOG)
 | |
|    IF(COMMAND FEATURE_SUMMARY) # in FeatureSummary.cmake since CMake 2.8.3
 | |
|       FEATURE_SUMMARY(FILENAME ${CMAKE_CURRENT_BINARY_DIR}/FindPackageLog.txt
 | |
|                       WHAT ALL)
 | |
|    ENDIF(COMMAND FEATURE_SUMMARY)
 | |
| 
 | |
|    SET(_missingFile ${CMAKE_BINARY_DIR}/MissingRequirements.txt)
 | |
|    SET(_enabledFile ${CMAKE_BINARY_DIR}/EnabledFeatures.txt)
 | |
|    SET(_disabledFile ${CMAKE_BINARY_DIR}/DisabledFeatures.txt)
 | |
| 
 | |
|    IF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile})
 | |
|      SET(_printSummary TRUE)
 | |
|    ENDIF (EXISTS ${_missingFile} OR EXISTS ${_enabledFile} OR EXISTS ${_disabledFile})
 | |
| 
 | |
|    IF(_printSummary)
 | |
|      SET(_missingDeps 0)
 | |
|      IF (EXISTS ${_enabledFile})
 | |
|        FILE(READ ${_enabledFile} _enabled)
 | |
|        FILE(REMOVE ${_enabledFile})
 | |
|        SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following external packages were located on your system.\n-- This installation will have the extra features provided by these packages.\n-----------------------------------------------------------------------------\n${_enabled}")
 | |
|      ENDIF (EXISTS ${_enabledFile})
 | |
| 
 | |
| 
 | |
|      IF (EXISTS ${_disabledFile})
 | |
|        SET(_missingDeps 1)
 | |
|        FILE(READ ${_disabledFile} _disabled)
 | |
|        FILE(REMOVE ${_disabledFile})
 | |
|        SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following OPTIONAL packages could NOT be located on your system.\n-- Consider installing them to enable more features from this software.\n-----------------------------------------------------------------------------\n${_disabled}")
 | |
|      ENDIF (EXISTS ${_disabledFile})
 | |
| 
 | |
| 
 | |
|      IF (EXISTS ${_missingFile})
 | |
|        SET(_missingDeps 1)
 | |
|        FILE(READ ${_missingFile} _requirements)
 | |
|        SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- The following REQUIRED packages could NOT be located on your system.\n-- You must install these packages before continuing.\n-----------------------------------------------------------------------------\n${_requirements}")
 | |
|        FILE(REMOVE ${_missingFile})
 | |
|        SET(_haveMissingReq 1)
 | |
|      ENDIF (EXISTS ${_missingFile})
 | |
| 
 | |
| 
 | |
|      IF (NOT ${_missingDeps})
 | |
|        SET(_summary "${_summary}\n-----------------------------------------------------------------------------\n-- Congratulations! All external packages have been found.")
 | |
|      ENDIF (NOT ${_missingDeps})
 | |
| 
 | |
| 
 | |
|      MESSAGE(${_summary})
 | |
|      MESSAGE("-----------------------------------------------------------------------------\n")
 | |
| 
 | |
| 
 | |
|      IF(_haveMissingReq)
 | |
|        MESSAGE(SYSTEM_ERROR_FATAL "Exiting: Missing Requirements")
 | |
|      ENDIF(_haveMissingReq)
 | |
| 
 | |
|    ENDIF(_printSummary)
 | |
| 
 | |
| ENDMACRO(MACRO_DISPLAY_FEATURE_LOG)
 |