initial import
[vuplus_webkit] / Source / cmake / WebKitFeatures.cmake
1 SET(DEFAULT 0)
2 SET(DEPENDS 1)
3 SET(ALWAYS 2)
4
5 SET(WEBKIT_FEATURES "")
6
7 SET(HTML_FEATURES "")
8 SET(SVG_FEATURES "")
9
10 MACRO(WEBKIT_SEPARATE_FEATURES _name _value)
11         FOREACH(f ${ARGN})
12                 LIST(APPEND ${f}_FEATURES "${_name}=${_value}")
13         ENDFOREACH()
14 ENDMACRO(WEBKIT_SEPARATE_FEATURES)
15
16 MACRO(WEBKIT_FEATURE_CHECK_DEPS _deps _deps_ok)
17         SET(${_deps_ok} TRUE)
18
19         LIST(LENGTH ${_deps} ${_deps_ok}_LIST_SIZE)
20         IF (${${_deps_ok}_LIST_SIZE} GREATER 1)
21                 FOREACH(_dep ${${_deps}})
22                         IF (NOT ${_dep})
23                                 SET(${_deps_ok} FALSE)
24                                 BREAK()
25                         ENDIF ()
26                 ENDFOREACH ()
27         ELSE ()
28                 IF (NOT ${_deps})
29                         SET(${_deps_ok} FALSE)
30                 ENDIF ()
31         ENDIF ()
32 ENDMACRO()
33
34 MACRO(WEBKIT_FEATURE _feature _description _type _args)
35         IF (${_type} EQUAL ${DEPENDS})
36                 WEBKIT_FEATURE_CHECK_DEPS(${_args} DEPS_OK_${_feature})
37                 OPTION(${_feature} "${_description}" DEPS_OK_${_feature})
38         ELSEIF (${_type} EQUAL ${DEFAULT})
39                 OPTION(${_feature} "${_description}" ${_args})
40         ELSEIF (${_type} EQUAL ${ALWAYS})
41                 SET(${_feature} ${_args})
42         ENDIF ()
43
44         LIST(APPEND WEBKIT_FEATURES ${_feature})
45
46         IF (${_feature})
47                 SET(${_feature} 1)
48                 WEBKIT_SEPARATE_FEATURES(${_feature} 1 ${ARGN})
49                 LIST(APPEND FEATURE_DEFINES ${_feature})
50         ELSE ()
51                 SET(${_feature} 0)
52                 WEBKIT_SEPARATE_FEATURES(${_feature} 0 ${ARGN})
53         ENDIF ()
54 ENDMACRO()
55
56 MACRO(WEBKIT_PRINT_FEATURES)
57         MESSAGE(STATUS "Enabled features:")
58
59         SET(MAX_FEATURE_LENGTH 0)
60         FOREACH (_feature ${WEBKIT_FEATURES})
61                 STRING(LENGTH ${_feature} FEATURE_LENGTH)
62                 IF (FEATURE_LENGTH GREATER MAX_FEATURE_LENGTH)
63                         SET(MAX_FEATURE_LENGTH ${FEATURE_LENGTH})
64                 ENDIF ()
65         ENDFOREACH ()
66
67         SET(ODD 0)
68         FOREACH (_feature ${WEBKIT_FEATURES})
69                 STRING(LENGTH ${_feature} FEATURE_LENGTH)
70                 SET(SPACES "")
71
72                 IF (ODD)
73                         FOREACH (IGNORE RANGE ${FEATURE_LENGTH} ${MAX_FEATURE_LENGTH})
74                                 SET(SPACES "${SPACES} ")
75                         ENDFOREACH ()
76                         SET(ODD 0)
77                 ELSE ()
78                         FOREACH (IGNORE RANGE ${FEATURE_LENGTH} ${MAX_FEATURE_LENGTH})
79                                 SET(SPACES "${SPACES}.")
80                         ENDFOREACH ()
81                         SET(ODD 1)
82                 ENDIF ()
83
84                 IF (${_feature})
85                         MESSAGE(STATUS "  ${_feature} ${SPACES} ON")
86                 ELSE ()
87                         MESSAGE(STATUS "  ${_feature} ${SPACES} OFF")
88                 ENDIF ()
89         ENDFOREACH ()
90
91         UNSET(FEATURE_LENGTH)
92         UNSET(MAX_FEATURE_LENGTH)
93         UNSET(ODD)
94 ENDMACRO()