mirror of
https://github.com/Adamcake/Bolt.git
synced 2026-04-24 02:46:56 -04:00
meson: don't subproject cef
This is a truly disgusting bit of engineering, but there's no other possible way to integrate CEF into Meson as far as I know. Meson is staggeringly deficient in basic features it easily has the architecture to support...
This commit is contained in:
199
meson.build
199
meson.build
@@ -1,12 +1,197 @@
|
||||
project('Bolt', 'cpp', subproject_dir: 'cef', default_options: ['buildtype=debugoptimized', 'cpp_std=c++17', 'cpp_eh=none', 'prefix=/opt', 'bindir=bolt'])
|
||||
cmake = import('cmake')
|
||||
libcef_dll_wrapper = cmake.subproject('dist').dependency('libcef_dll_wrapper')
|
||||
project('Bolt', 'cpp', default_options: ['buildtype=debugoptimized', 'cpp_std=c++17', 'cpp_eh=none', 'prefix=/opt', 'bindir=bolt'])
|
||||
|
||||
# Configure files in cef binary distributable
|
||||
cef_include = include_directories('cef/dist')
|
||||
libcef = custom_target('libcef', output: 'libcef.so', command: ['./cef/install.sh', '@SOURCE_ROOT@', '@OUTDIR@'])
|
||||
meson.add_install_script('cef/install.sh')
|
||||
|
||||
deps = [libcef_dll_wrapper, dependency('fmt'), dependency('tesseract')]
|
||||
# CEF binary_distrib comes with a cmake project to build its dll wrapper. Unfortunately, with Meson
|
||||
# it's impossible to target a cmake project while also configuring files (such as libcef.so) in that
|
||||
# same project. So instead of targeting cmake, we build the wrapper directly, like this.
|
||||
#
|
||||
# If files are added or deleted in a different CEF version, this will definitely break. This list is for 113.0.5672.93.
|
||||
libcef_dll_wrapper = static_library(
|
||||
'libcef_dll_wrapper',
|
||||
'cef/dist/libcef_dll/base/cef_atomic_flag.cc',
|
||||
'cef/dist/libcef_dll/base/cef_callback_helpers.cc',
|
||||
'cef/dist/libcef_dll/base/cef_callback_internal.cc',
|
||||
'cef/dist/libcef_dll/base/cef_lock.cc',
|
||||
'cef/dist/libcef_dll/base/cef_lock_impl.cc',
|
||||
'cef/dist/libcef_dll/base/cef_logging.cc',
|
||||
'cef/dist/libcef_dll/base/cef_ref_counted.cc',
|
||||
'cef/dist/libcef_dll/base/cef_thread_checker_impl.cc',
|
||||
'cef/dist/libcef_dll/base/cef_weak_ptr.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/accessibility_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/app_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/audio_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/base_ref_counted_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/base_scoped_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/browser_process_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/client_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/command_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/completion_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/context_menu_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/cookie_access_filter_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/cookie_visitor_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/delete_cookies_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/display_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/domvisitor_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/download_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/download_image_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/drag_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/extension_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/focus_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/frame_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/jsdialog_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/keyboard_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/life_span_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/load_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/media_observer_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/dialog_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/find_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/read_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/media_route_create_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/menu_model_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/navigation_entry_visitor_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/permission_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/print_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/render_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/render_process_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/request_context_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/request_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/resolve_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/resource_bundle_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/resource_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/resource_request_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/response_filter_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/scheme_handler_factory_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/server_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/string_visitor_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/task_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/urlrequest_client_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/v8accessor_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/v8handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/v8interceptor_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/browser_view_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/button_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/panel_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/view_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/cpptoc/write_handler_cpptoc.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/auth_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/before_download_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/binary_value_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/browser_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/browser_host_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/command_line_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/context_menu_params_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/cookie_manager_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/dictionary_value_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/domdocument_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/domnode_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/download_item_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/download_item_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/drag_data_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/extension_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/frame_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/image_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/list_value_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/media_access_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/media_router_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/media_route_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/media_sink_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/media_source_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/menu_model_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/navigation_entry_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/permission_prompt_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/post_data_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/registration_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/post_data_element_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/preference_manager_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/preference_registrar_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/print_job_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/print_settings_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/process_message_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/request_context_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/request_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/resource_bundle_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/resource_read_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/resource_skip_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/response_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/run_context_menu_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/run_quick_menu_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/scheme_registrar_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/select_client_certificate_callback_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/server_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/shared_memory_region_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/shared_process_message_builder_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/sslinfo_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/sslstatus_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/stream_reader_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/stream_writer_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/task_runner_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/thread_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/urlrequest_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/v8context_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/v8exception_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/v8stack_frame_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/v8stack_trace_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/v8value_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/value_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/box_layout_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/browser_view_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/button_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/display_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/fill_layout_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/label_button_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/layout_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/menu_button_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/menu_button_pressed_lock_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/overlay_controller_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/panel_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/scroll_view_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/textfield_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/view_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/views/window_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/waitable_event_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/x509certificate_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/x509cert_principal_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/xml_reader_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/ctocpp/zip_reader_ctocpp.cc',
|
||||
'cef/dist/libcef_dll/shutdown_checker.cc',
|
||||
'cef/dist/libcef_dll/transfer_util.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_byte_read_handler.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_closure_task.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_message_router.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_resource_manager.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_scoped_temp_dir.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_stream_resource_handler.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_xml_object.cc',
|
||||
'cef/dist/libcef_dll/wrapper/cef_zip_archive.cc',
|
||||
'cef/dist/libcef_dll/wrapper/libcef_dll_wrapper.cc',
|
||||
'cef/dist/libcef_dll/wrapper/libcef_dll_wrapper2.cc',
|
||||
include_directories: [cef_include],
|
||||
cpp_args: ['-DWRAPPING_CEF_SHARED'],
|
||||
)
|
||||
|
||||
deps = [dependency('fmt'), dependency('tesseract')]
|
||||
if build_machine.system() == 'linux'
|
||||
deps += [dependency('x11'), dependency('xcb'), dependency('xcb-record')]
|
||||
xcb_dep = dependency('xcb')
|
||||
deps += [dependency('x11'), xcb_dep, dependency('xcb-record')]
|
||||
endif
|
||||
|
||||
if host_machine.system() == 'linux'
|
||||
@@ -17,6 +202,7 @@ elif host_machine.system() == 'darwin'
|
||||
client_native = 'src/native/client_cocoa.mm'
|
||||
endif
|
||||
|
||||
# C++ executable
|
||||
executable(
|
||||
'bolt',
|
||||
'src/main.cxx', 'src/browser/app.cxx', 'src/browser.cxx', 'src/browser/client.cxx', 'src/browser/dom_visitor.cxx',
|
||||
@@ -24,7 +210,8 @@ executable(
|
||||
client_native,
|
||||
cpp_args: ['-Wall'],
|
||||
dependencies: deps,
|
||||
include_directories: [cef_include],
|
||||
install: true,
|
||||
install_rpath: '.',
|
||||
link_with: [libcef]
|
||||
link_with: [libcef, libcef_dll_wrapper]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user