cmake/WebKitFeatures.cmake
changeset 0 4f2f89ce4247
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmake/WebKitFeatures.cmake	Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,91 @@
+SET(DEFAULT 0)
+SET(DEPENDS 1)
+
+SET(WEBKIT_FEATURES "")
+
+SET(HTML_FEATURES "")
+SET(SVG_FEATURES "")
+
+MACRO(WEBKIT_SEPARATE_FEATURES _name _value)
+        FOREACH(f ${ARGN})
+                LIST(APPEND ${f}_FEATURES "${_name}=${_value}")
+        ENDFOREACH()
+ENDMACRO(WEBKIT_SEPARATE_FEATURES)
+
+MACRO(WEBKIT_FEATURE_CHECK_DEPS _deps _deps_ok)
+        SET(${_deps_ok} TRUE)
+
+	LIST(LENGTH ${_deps} ${_deps_ok}_LIST_SIZE)
+	IF (${${_deps_ok}_LIST_SIZE} GREATER 1)
+		FOREACH(_dep ${${_deps}})
+			IF (NOT ${_dep})
+				SET(${_deps_ok} FALSE)
+				BREAK()
+			ENDIF ()
+		ENDFOREACH ()
+	ELSE ()
+		IF (NOT ${_deps})
+			SET(${_deps_ok} FALSE)
+		ENDIF ()
+	ENDIF ()
+ENDMACRO()
+
+MACRO(WEBKIT_FEATURE _feature _description _type _args)
+	IF (${_type} EQUAL ${DEPENDS})
+                WEBKIT_FEATURE_CHECK_DEPS(${_args} DEPS_OK_${_feature})
+		OPTION(${_feature} "${_description}" DEPS_OK_${_feature})
+	ELSEIF (${_type} EQUAL ${DEFAULT})
+		OPTION(${_feature} "${_description}" ${_args})
+	ENDIF ()
+	
+	LIST(APPEND WEBKIT_FEATURES ${_feature})
+
+	IF (${_feature})
+		SET(${_feature}_VALUE 1)
+		WEBKIT_SEPARATE_FEATURES(${_feature} 1 ${ARGN})
+		LIST(APPEND FEATURE_DEFINES ${_feature})
+	ELSE ()
+		SET(${_feature}_VALUE 0)
+		WEBKIT_SEPARATE_FEATURES(${_feature} 0 ${ARGN})
+	ENDIF ()
+ENDMACRO()
+
+MACRO(WEBKIT_PRINT_FEATURES)
+	MESSAGE(STATUS "Enabled features:")
+
+	SET(MAX_FEATURE_LENGTH 0)
+	FOREACH (_feature ${WEBKIT_FEATURES})
+		STRING(LENGTH ${_feature} FEATURE_LENGTH)
+		IF (FEATURE_LENGTH GREATER MAX_FEATURE_LENGTH)
+			SET(MAX_FEATURE_LENGTH ${FEATURE_LENGTH})
+		ENDIF ()
+	ENDFOREACH ()
+
+	SET(ODD 0)
+	FOREACH (_feature ${WEBKIT_FEATURES})
+		STRING(LENGTH ${_feature} FEATURE_LENGTH)
+		SET(SPACES "")
+
+		IF (ODD)
+			FOREACH (IGNORE RANGE ${FEATURE_LENGTH} ${MAX_FEATURE_LENGTH})
+				SET(SPACES "${SPACES} ")
+			ENDFOREACH ()
+			SET(ODD 0)
+		ELSE ()
+			FOREACH (IGNORE RANGE ${FEATURE_LENGTH} ${MAX_FEATURE_LENGTH})
+				SET(SPACES "${SPACES}.")
+			ENDFOREACH ()
+			SET(ODD 1)
+		ENDIF ()
+
+		IF (${_feature})
+			MESSAGE(STATUS "  ${_feature} ${SPACES} ON")
+		ELSE ()
+			MESSAGE(STATUS "  ${_feature} ${SPACES} OFF")
+		ENDIF ()
+	ENDFOREACH ()
+
+	UNSET(FEATURE_LENGTH)
+	UNSET(MAX_FEATURE_LENGTH)
+	UNSET(ODD)
+ENDMACRO()