Changeset 183505 in webkit


Ignore:
Timestamp:
Apr 28, 2015 1:39:23 PM (9 years ago)
Author:
Michael Catanzaro
Message:

[GTK] Clean up feature detection and make it hard to accidentally build without optional features
https://bugs.webkit.org/show_bug.cgi?id=143546

Reviewed by Martin Robinson.

Add USE_GSTREAMER_MPEGTS option and turn it off by default. Turn off ENABLE_SUBTLE_CRYPTO
by default. Turn on ENABLE_GEOLOCATION by default. Add USE_LIBNOTIFY and turn it on by
default. Fail the build with an informative error message if an optional dependency required
for an enabled feature is not present. Perform find_package commands only when necessary.
Make ENABLE_API_TESTS private. Alphabetize the feature checks (yes, this is actually
possible now!).

  • Source/cmake/OptionsGTK.cmake:
Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r183491 r183505  
     12015-04-28  Michael Catanzaro  <mcatanzaro@igalia.com>
     2
     3        [GTK] Clean up feature detection and make it hard to accidentally build without optional features
     4        https://bugs.webkit.org/show_bug.cgi?id=143546
     5
     6        Reviewed by Martin Robinson.
     7
     8        Add USE_GSTREAMER_MPEGTS option and turn it off by default. Turn off ENABLE_SUBTLE_CRYPTO
     9        by default. Turn on ENABLE_GEOLOCATION by default. Add USE_LIBNOTIFY and turn it on by
     10        default. Fail the build with an informative error message if an optional dependency required
     11        for an enabled feature is not present. Perform find_package commands only when necessary.
     12        Make ENABLE_API_TESTS private. Alphabetize the feature checks (yes, this is actually
     13        possible now!).
     14
     15        * Source/cmake/OptionsGTK.cmake:
     16
    1172015-04-28  Michael Catanzaro  <mcatanzaro@igalia.com>
    218
  • trunk/Source/cmake/OptionsGTK.cmake

    r183491 r183505  
    4242find_package(ATSPI 2.5.3)
    4343find_package(EGL)
    44 find_package(GObjectIntrospection)
    45 find_package(GeoClue2 2.1.5)
    46 find_package(GnuTLS 3.0.0)
    47 find_package(LibNotify)
    4844find_package(OpenGL)
    49 
    50 if (NOT GEOCLUE2_FOUND)
    51     find_package(GeoClue)
    52 endif ()
    5345
    5446WEBKIT_OPTION_BEGIN()
     
    6153WEBKIT_OPTION_DEFINE(ENABLE_X11_TARGET "Whether to enable support for the X11 windowing target." PUBLIC ON)
    6254WEBKIT_OPTION_DEFINE(ENABLE_WAYLAND_TARGET "Whether to enable support for the Wayland windowing target." PUBLIC OFF)
     55WEBKIT_OPTION_DEFINE(USE_LIBNOTIFY "Whether to enable the default web notification implementation." PUBLIC ON)
    6356
    6457WEBKIT_OPTION_DEFINE(USE_GSTREAMER_GL "Whether to enable support for GStreamer GL" PRIVATE OFF)
     58WEBKIT_OPTION_DEFINE(USE_GSTREAMER_MPEGTS "Whether to enable support for MPEG-TS" PRIVATE OFF)
    6559WEBKIT_OPTION_DEFINE(USE_REDIRECTED_XCOMPOSITE_WINDOW "Whether to use a Redirected XComposite Window for accelerated compositing in X11." PRIVATE ON)
    6660
     
    8074WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_OPENGL)
    8175WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_VIDEO)
    82 
    83 if (GNUTLS_FOUND)
    84     WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SUBTLE_CRYPTO PUBLIC ON)
    85 else ()
    86     WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SUBTLE_CRYPTO PUBLIC OFF)
    87 endif ()
    88 
    89 if (ENABLE_SUBTLE_CRYPTO AND NOT(GNUTLS_FOUND))
    90     message(FATAL_ERROR "Subtle crypto support needs GnuTLS 3.0.0")
    91 endif ()
    92 
    93 if (GEOCLUE2_FOUND OR GEOCLUE_FOUND)
    94     WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON)
    95 else ()
    96     WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC OFF)
    97 endif ()
     76WEBKIT_OPTION_DEPEND(USE_GSTREAMER_MPEGTS ENABLE_VIDEO)
    9877
    9978# FIXME: There is no reason these should be different.
     
    10180if (DEVELOPER_MODE)
    10281    WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MINIBROWSER PUBLIC ON)
    103     WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS PUBLIC ON)
     82    WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS PRIVATE ON)
    10483else ()
    10584    WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MINIBROWSER PUBLIC OFF)
    106     WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS PUBLIC OFF)
     85    WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS PRIVATE OFF)
    10786    set(WebKit2_VERSION_SCRIPT "-Wl,--version-script,${CMAKE_MODULE_PATH}/gtksymbols.filter")
    10887endif ()
     
    145124WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CREDENTIAL_STORAGE PUBLIC ON)
    146125WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON)
     126WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON)
    147127WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ICONDATABASE PUBLIC ON)
    148128WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_JIT PUBLIC ON)
     
    192172WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SECCOMP_FILTERS PRIVATE OFF)
    193173WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SMOOTH_SCROLLING PRIVATE ON)
     174WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SUBTLE_CRYPTO PRIVATE OFF)
    194175WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEMPLATE_ELEMENT PRIVATE ON)
    195176WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_USERSELECT_ALL PRIVATE ON)
     
    208189WEBKIT_OPTION_END()
    209190
    210 if (ENABLE_PLUGIN_PROCESS_GTK2)
    211     find_package(GTK2 2.24.10 REQUIRED)
    212     find_package(GDK2 2.24.10 REQUIRED)
    213 endif ()
    214 
    215 SET_AND_EXPOSE_TO_BUILD(WTF_USE_LIBNOTIFY ${LIBNOTIFY_FOUND})
    216191SET_AND_EXPOSE_TO_BUILD(WTF_PLATFORM_X11 ${ENABLE_X11_TARGET})
    217192SET_AND_EXPOSE_TO_BUILD(MOZ_X11 ${ENABLE_X11_TARGET})
     
    247222add_definitions(-DWEBKITGTK_API_VERSION_STRING="${WEBKITGTK_API_VERSION}")
    248223
    249 if (ENABLE_X11_TARGET)
    250     find_package(X11 REQUIRED)
    251 endif ()
    252 
    253224if (ENABLE_WAYLAND_TARGET)
    254     find_package(Wayland REQUIRED)
     225    set(GTK3_REQUIRED_VERSION 3.12.0)
     226else ()
     227    set(GTK3_REQUIRED_VERSION 3.6.0)
     228endif ()
     229
     230find_package(GTK3 ${GTK3_REQUIRED_VERSION} REQUIRED)
     231find_package(GDK3 ${GTK3_REQUIRED_VERSION} REQUIRED)
     232find_package(GTKUnixPrint)
     233
     234set(GTK_LIBRARIES ${GTK3_LIBRARIES})
     235set(GTK_INCLUDE_DIRS ${GTK3_INCLUDE_DIRS})
     236set(GDK_LIBRARIES ${GDK3_LIBRARIES})
     237set(GDK_INCLUDE_DIRS ${GDK3_INCLUDE_DIRS})
     238
     239SET_AND_EXPOSE_TO_BUILD(HAVE_GTK_UNIX_PRINTING ${GTK_UNIX_PRINT_FOUND})
     240SET_AND_EXPOSE_TO_BUILD(HAVE_GTK_GESTURES ${GTK_SUPPORTS_GESTURES})
     241
     242set(glib_components gio gobject gthread gmodule)
     243if (ENABLE_GAMEPAD_DEPRECATED OR ENABLE_GEOLOCATION)
     244    list(APPEND glib_components gio-unix)
     245endif ()
     246find_package(GLIB 2.33.2 REQUIRED COMPONENTS ${glib_components})
     247
     248if (ENABLE_CREDENTIAL_STORAGE)
     249    find_package(Libsecret)
     250    if (NOT LIBSECRET_FOUND)
     251        message(FATAL_ERROR "libsecretr is needed for ENABLE_CREDENTIAL_STORAGE")
     252    endif ()
     253endif ()
     254
     255if (ENABLE_FTL_JIT)
     256    find_package(LLVM)
     257    if (NOT LLVM_FOUND)
     258        message(FATAL_ERROR "LLVM is needed for ENABLE_FTL_JIT")
     259    endif ()
     260    SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
     261endif ()
     262
     263if (ENABLE_GAMEPAD_DEPRECATED)
     264    find_package(GUdev)
     265    if (NOT GUDEV_FOUND)
     266        message(FATAL_ERROR "GUdev is needed for ENABLE_GAMEPAD_DEPRECATED")
     267    endif ()
     268endif ()
     269
     270if (ENABLE_GEOLOCATION)
     271    find_package(GeoClue2 2.1.5)
     272    if (GEOCLUE2_FOUND)
     273        SET_AND_EXPOSE_TO_BUILD(WTF_USE_GEOCLUE2 ${GEOCLUE2_FOUND})
     274    else ()
     275        find_package(GeoClue)
     276        if (NOT GEOCLUE_FOUND)
     277            message(FATAL_ERROR "Geoclue is needed for ENABLE_GEOLOCATION.")
     278        endif ()
     279    endif ()
     280endif ()
     281
     282if (ENABLE_INTROSPECTION)
     283    find_package(GObjectIntrospection)
     284    if (NOT INTROSPECTION_FOUND)
     285        message(FATAL_ERROR "GObjectIntrospection is needed for ENABLE_INTROSPECTION.")
     286    endif ()
     287endif ()
     288
     289if (ENABLE_MEDIA_STREAM)
     290    find_package(OpenWebRTC)
     291    if (NOT OPENWEBRTC_FOUND)
     292        message(FATAL_ERROR "OpenWebRTC is needed for ENABLE_MEDIA_STREAM.")
     293    endif ()
     294    SET_AND_EXPOSE_TO_BUILD(WTF_USE_OPENWEBRTC TRUE)
    255295endif ()
    256296
     
    292332endif ()
    293333
     334if (ENABLE_PLUGIN_PROCESS_GTK2)
     335    find_package(GTK2 2.24.10 REQUIRED)
     336    find_package(GDK2 2.24.10 REQUIRED)
     337endif ()
     338
     339if (ENABLE_SPELLCHECK)
     340    find_package(Enchant)
     341    if (NOT PC_ENCHANT_FOUND)
     342        message(FATAL_ERROR "Enchant is needed for ENABLE_SPELLCHECK")
     343    endif ()
     344endif ()
     345
     346if (ENABLE_SUBTLE_CRYPTO)
     347    find_package(GnuTLS 3.0.0)
     348    if (NOT GNUTLS_FOUND)
     349        message(FATAL_ERROR "GnuTLS is needed for ENABLE_SUBTLE_CRYPTO")
     350    endif ()
     351endif ()
     352
    294353if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
    295354    set(GSTREAMER_COMPONENTS app pbutils)
     
    306365    find_package(GStreamer 1.0.3 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
    307366
    308     if (PC_GSTREAMER_MPEGTS_FOUND)
     367    if (USE_GSTREAMER_MPEGTS)
     368        if (NOT PC_GSTREAMER_MPEGTS_FOUND)
     369            message(FATAL_ERROR "GStreamer MPEG-TS is needed for USE_GSTREAMER_MPEGTS.")
     370        endif ()
    309371        SET_AND_EXPOSE_TO_BUILD(WTF_USE_GSTREAMER_MPEGTS TRUE)
    310372    endif ()
     
    318380endif ()
    319381
     382if (ENABLE_X11_TARGET)
     383    find_package(X11 REQUIRED)
     384endif ()
     385
    320386if (ENABLE_WAYLAND_TARGET)
    321     set(GTK3_REQUIRED_VERSION 3.12.0)
    322 else ()
    323     set(GTK3_REQUIRED_VERSION 3.6.0)
    324 endif ()
    325 
    326 find_package(GTK3 ${GTK3_REQUIRED_VERSION} REQUIRED)
    327 find_package(GDK3 ${GTK3_REQUIRED_VERSION} REQUIRED)
    328 set(GTK_LIBRARIES ${GTK3_LIBRARIES})
    329 set(GTK_INCLUDE_DIRS ${GTK3_INCLUDE_DIRS})
    330 set(GDK_LIBRARIES ${GDK3_LIBRARIES})
    331 set(GDK_INCLUDE_DIRS ${GDK3_INCLUDE_DIRS})
    332 
    333 set(glib_components gio gobject gthread gmodule)
    334 if (ENABLE_GAMEPAD_DEPRECATED OR ENABLE_GEOLOCATION)
    335     list(APPEND glib_components gio-unix)
    336 endif ()
    337 find_package(GLIB 2.33.2 REQUIRED COMPONENTS ${glib_components})
    338 
    339 if (ENABLE_GEOLOCATION)
    340     SET_AND_EXPOSE_TO_BUILD(WTF_USE_GEOCLUE2 ${GEOCLUE2_FOUND})
    341 endif ()
    342 
    343 if (ENABLE_MEDIA_STREAM)
    344     find_package(OpenWebRTC)
    345     SET_AND_EXPOSE_TO_BUILD(WTF_USE_OPENWEBRTC ${OPENWEBRTC_FOUND})
    346 endif ()
    347 
    348 find_package(GTKUnixPrint)
    349 SET_AND_EXPOSE_TO_BUILD(HAVE_GTK_UNIX_PRINTING ${GTK_UNIX_PRINT_FOUND})
    350 
    351 if (ENABLE_CREDENTIAL_STORAGE)
    352     find_package(Libsecret REQUIRED)
    353 endif ()
    354 
    355 SET_AND_EXPOSE_TO_BUILD(HAVE_GTK_GESTURES ${GTK_SUPPORTS_GESTURES})
    356 
    357 if (ENABLE_SPELLCHECK)
    358     find_package(Enchant REQUIRED)
    359 endif ()
    360 
    361 if (ENABLE_GAMEPAD_DEPRECATED)
    362     find_package(GUdev)
    363 endif ()
    364 
    365 if (ENABLE_FTL_JIT)
    366     find_package(LLVM REQUIRED)
    367     SET_AND_EXPOSE_TO_BUILD(HAVE_LLVM TRUE)
     387    find_package(Wayland REQUIRED)
     388endif ()
     389
     390if (USE_LIBNOTIFY)
     391    find_package(LibNotify)
     392    if (NOT LIBNOTIFY_FOUND)
     393       message(FATAL_ERROR "libnotify is needed for USE_LIBNOTIFY.")
     394    endif ()
     395    SET_AND_EXPOSE_TO_BUILD(WTF_USE_LIBNOTIFY TRUE)
    368396endif ()
    369397
Note: See TracChangeset for help on using the changeset viewer.