[CMake] Autogenerate cmakeconfig.h.cmake
[WebKit-https.git] / Source / cmake / WebKitFeatures.cmake
index 5df3a58..88fb36f 100644 (file)
@@ -9,6 +9,7 @@ macro(WEBKIT_OPTION_DEFINE _name _description _public _initial_value)
     set(_WEBKIT_AVAILABLE_OPTIONS_INITIAL_VALUE_${_name} ${_initial_value})
     set(_WEBKIT_AVAILABLE_OPTIONS_${_name}_DEPENDENCIES "")
     list(APPEND _WEBKIT_AVAILABLE_OPTIONS ${_name})
+    EXPOSE_VARIABLE_TO_BUILD(${_name})
 endmacro()
 
 macro(WEBKIT_OPTION_DEFAULT_PORT_VALUE _name _public _value)
@@ -80,6 +81,7 @@ macro(WEBKIT_OPTION_BEGIN)
     WEBKIT_OPTION_DEFINE(ENABLE_ICONDATABASE "Toggle Icon database support" PRIVATE ON)
     WEBKIT_OPTION_DEFINE(ENABLE_IMAGE_DECODER_DOWN_SAMPLING "Toggle image decoder down sampling support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_INDEXED_DATABASE "Toggle Indexed Database API support" PRIVATE OFF)
+    WEBKIT_OPTION_DEFINE(ENABLE_INDEXED_DATABASE_IN_WORKERS "Toggle support for indexed database in workers" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_INDIE_UI "Toggle Indie UI support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_INPUT_TYPE_COLOR "Toggle Color Input support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_INPUT_TYPE_COLOR_POPOVER "Toggle popover color input support" PRIVATE OFF)
@@ -132,6 +134,7 @@ macro(WEBKIT_OPTION_BEGIN)
     WEBKIT_OPTION_DEFINE(ENABLE_SATURATED_LAYOUT_ARITHMETIC "Toggle saturated layout arithmetic support" PRIVATE ON)
     WEBKIT_OPTION_DEFINE(ENABLE_SECCOMP_FILTERS "Toggle Linux seccomp filters for the WebProcess support" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_SERVICE_CONTROLS "Toggle service controls support" PRIVATE OFF)
+    WEBKIT_OPTION_DEFINE(ENABLE_SMOOTH_SCROLLING "Toggle smooth scrolling" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_SPEECH_SYNTHESIS "Toggle Speech Synthesis API support)" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_SPELLCHECK "Toggle Spellchecking support (requires Enchant)" PRIVATE OFF)
     WEBKIT_OPTION_DEFINE(ENABLE_STREAMS_API "Toggle Streams API support" PRIVATE ON)
@@ -239,3 +242,44 @@ macro(PRINT_WEBKIT_OPTIONS)
         endif ()
     endforeach ()
 endmacro()
+
+set(_WEBKIT_CONFIG_FILE_VARIABLES "")
+
+macro(EXPOSE_VARIABLE_TO_BUILD _variable_name)
+    list(APPEND _WEBKIT_CONFIG_FILE_VARIABLES ${_variable_name})
+endmacro()
+
+macro(SET_AND_EXPOSE_TO_BUILD _variable_name)
+    # It's important to handle the case where the value isn't passed, because often
+    # during configuration an empty variable is the result of a failed package search.
+    if (${ARGC} GREATER 1)
+        set(_variable_value ${ARGV1})
+    else ()
+        set(_variable_value OFF)
+    endif ()
+
+    set(${_variable_name} ${_variable_value})
+    EXPOSE_VARIABLE_TO_BUILD(${_variable_name})
+endmacro()
+
+macro(CREATE_CONFIGURATION_HEADER)
+    list(SORT _WEBKIT_CONFIG_FILE_VARIABLES)
+    set(_file_contents "#ifndef CMAKECONFIG_H\n")
+    set(_file_contents "${_file_contents}#define CMAKECONFIG_H\n\n")
+    foreach (_variable_name ${_WEBKIT_CONFIG_FILE_VARIABLES})
+        if (${${_variable_name}})
+            set(_file_contents "${_file_contents}#define ${_variable_name} 1\n")
+        else ()
+            set(_file_contents "${_file_contents}#define ${_variable_name} 0\n")
+        endif ()
+    endforeach ()
+    set(_file_contents "${_file_contents}\n#endif /* CMAKECONFIG_H */\n")
+
+    file(WRITE "${CMAKE_BINARY_DIR}/cmakeconfig.h.tmp" "${_file_contents}")
+    execute_process(COMMAND ${CMAKE_COMMAND}
+        -E copy_if_different
+        "${CMAKE_BINARY_DIR}/cmakeconfig.h.tmp"
+        "${CMAKE_BINARY_DIR}/cmakeconfig.h"
+    )
+    file(REMOVE "${CMAKE_BINARY_DIR}/cmakeconfig.h.tmp")
+endmacro()