diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 93fa245f5f81..000000000000 --- a/appveyor.yml +++ /dev/null @@ -1,28 +0,0 @@ -# appveyor file -# http://www.appveyor.com/docs/appveyor-yml -version: "{build}" - -init: - - git config --global core.autocrlf input - -environment: - matrix: - - nodejs_version: 0.10 - -platform: - - x86 - -install: - - ps: Install-Product node $env:nodejs_version - - cmd: SET PATH=C:\Program Files (x86)\MSBuild\12.0\bin\;%PATH% - - cmd: SET PATH=C:\python27;%PATH% - - cmd: python script/bootstrap.py - - cmd: python script/build.py -c Debug - -test_script: - - node --version - - npm --version - - cmd: python script/cpplint.py - - cmd: python script/coffeelint.py - -build: off diff --git a/atom.gyp b/atom.gyp index 7ccdcf6daa10..ed09e23686c5 100644 --- a/atom.gyp +++ b/atom.gyp @@ -1,403 +1,18 @@ { 'variables': { - 'includes': [ - 'vendor/native_mate/native_mate_files.gypi', - ], 'project_name%': 'atom', 'product_name%': 'Atom', - 'app_sources': [ - 'atom/app/atom_main.cc', - 'atom/app/atom_main.h', - ], - 'bundle_sources': [ - 'atom/browser/resources/mac/atom.icns', - ], - 'coffee_sources': [ - 'atom/browser/api/lib/app.coffee', - 'atom/browser/api/lib/atom-delegate.coffee', - 'atom/browser/api/lib/auto-updater.coffee', - 'atom/browser/api/lib/browser-window.coffee', - 'atom/browser/api/lib/content-tracing.coffee', - 'atom/browser/api/lib/dialog.coffee', - 'atom/browser/api/lib/global-shortcut.coffee', - 'atom/browser/api/lib/ipc.coffee', - 'atom/browser/api/lib/menu.coffee', - 'atom/browser/api/lib/menu-item.coffee', - 'atom/browser/api/lib/power-monitor.coffee', - 'atom/browser/api/lib/protocol.coffee', - 'atom/browser/api/lib/screen.coffee', - 'atom/browser/api/lib/tray.coffee', - 'atom/browser/api/lib/web-contents.coffee', - 'atom/browser/lib/chrome-extension.coffee', - 'atom/browser/lib/guest-view-manager.coffee', - 'atom/browser/lib/guest-window-manager.coffee', - 'atom/browser/lib/init.coffee', - 'atom/browser/lib/objects-registry.coffee', - 'atom/browser/lib/rpc-server.coffee', - 'atom/common/api/lib/callbacks-registry.coffee', - 'atom/common/api/lib/clipboard.coffee', - 'atom/common/api/lib/crash-reporter.coffee', - 'atom/common/api/lib/id-weak-map.coffee', - 'atom/common/api/lib/native-image.coffee', - 'atom/common/api/lib/original-fs.coffee', - 'atom/common/api/lib/shell.coffee', - 'atom/common/lib/init.coffee', - 'atom/renderer/lib/chrome-api.coffee', - 'atom/renderer/lib/init.coffee', - 'atom/renderer/lib/inspector.coffee', - 'atom/renderer/lib/override.coffee', - 'atom/renderer/lib/web-view/guest-view-internal.coffee', - 'atom/renderer/lib/web-view/web-view.coffee', - 'atom/renderer/lib/web-view/web-view-attributes.coffee', - 'atom/renderer/lib/web-view/web-view-constants.coffee', - 'atom/renderer/api/lib/ipc.coffee', - 'atom/renderer/api/lib/remote.coffee', - 'atom/renderer/api/lib/screen.coffee', - 'atom/renderer/api/lib/web-frame.coffee', - ], - 'coffee2c_sources': [ - 'atom/common/lib/asar.coffee', - 'atom/common/lib/asar_init.coffee', - ], - 'lib_sources': [ - 'atom/app/atom_content_client.cc', - 'atom/app/atom_content_client.h', - 'atom/app/atom_main_args.cc', - 'atom/app/atom_main_args.h', - 'atom/app/atom_main_delegate.cc', - 'atom/app/atom_main_delegate.h', - 'atom/app/atom_main_delegate_mac.mm', - 'atom/app/node_main.cc', - 'atom/app/node_main.h', - 'atom/browser/api/atom_api_app.cc', - 'atom/browser/api/atom_api_app.h', - 'atom/browser/api/atom_api_auto_updater.cc', - 'atom/browser/api/atom_api_auto_updater.h', - 'atom/browser/api/atom_api_content_tracing.cc', - 'atom/browser/api/atom_api_dialog.cc', - 'atom/browser/api/atom_api_global_shortcut.cc', - 'atom/browser/api/atom_api_global_shortcut.h', - 'atom/browser/api/atom_api_menu.cc', - 'atom/browser/api/atom_api_menu.h', - 'atom/browser/api/atom_api_menu_views.cc', - 'atom/browser/api/atom_api_menu_views.h', - 'atom/browser/api/atom_api_menu_mac.h', - 'atom/browser/api/atom_api_menu_mac.mm', - 'atom/browser/api/atom_api_power_monitor.cc', - 'atom/browser/api/atom_api_power_monitor.h', - 'atom/browser/api/atom_api_protocol.cc', - 'atom/browser/api/atom_api_protocol.h', - 'atom/browser/api/atom_api_screen.cc', - 'atom/browser/api/atom_api_screen.h', - 'atom/browser/api/atom_api_tray.cc', - 'atom/browser/api/atom_api_tray.h', - 'atom/browser/api/atom_api_web_contents.cc', - 'atom/browser/api/atom_api_web_contents.h', - 'atom/browser/api/atom_api_web_view_manager.cc', - 'atom/browser/api/atom_api_window.cc', - 'atom/browser/api/atom_api_window.h', - 'atom/browser/api/event.cc', - 'atom/browser/api/event.h', - 'atom/browser/api/event_emitter.cc', - 'atom/browser/api/event_emitter.h', - 'atom/browser/auto_updater.cc', - 'atom/browser/auto_updater.h', - 'atom/browser/auto_updater_delegate.h', - 'atom/browser/auto_updater_linux.cc', - 'atom/browser/auto_updater_mac.mm', - 'atom/browser/auto_updater_win.cc', - 'atom/browser/atom_access_token_store.cc', - 'atom/browser/atom_access_token_store.h', - 'atom/browser/atom_browser_client.cc', - 'atom/browser/atom_browser_client.h', - 'atom/browser/atom_browser_context.cc', - 'atom/browser/atom_browser_context.h', - 'atom/browser/atom_browser_main_parts.cc', - 'atom/browser/atom_browser_main_parts.h', - 'atom/browser/atom_browser_main_parts_linux.cc', - 'atom/browser/atom_browser_main_parts_mac.mm', - 'atom/browser/atom_javascript_dialog_manager.cc', - 'atom/browser/atom_javascript_dialog_manager.h', - 'atom/browser/atom_resource_dispatcher_host_delegate.cc', - 'atom/browser/atom_resource_dispatcher_host_delegate.h', - 'atom/browser/atom_speech_recognition_manager_delegate.cc', - 'atom/browser/atom_speech_recognition_manager_delegate.h', - 'atom/browser/browser.cc', - 'atom/browser/browser.h', - 'atom/browser/browser_linux.cc', - 'atom/browser/browser_mac.mm', - 'atom/browser/browser_win.cc', - 'atom/browser/browser_observer.h', - 'atom/browser/javascript_environment.cc', - 'atom/browser/javascript_environment.h', - 'atom/browser/mac/atom_application.h', - 'atom/browser/mac/atom_application.mm', - 'atom/browser/mac/atom_application_delegate.h', - 'atom/browser/mac/atom_application_delegate.mm', - 'atom/browser/native_window.cc', - 'atom/browser/native_window.h', - 'atom/browser/native_window_views.cc', - 'atom/browser/native_window_views.h', - 'atom/browser/native_window_mac.h', - 'atom/browser/native_window_mac.mm', - 'atom/browser/native_window_observer.h', - 'atom/browser/net/adapter_request_job.cc', - 'atom/browser/net/adapter_request_job.h', - 'atom/browser/net/asar/asar_protocol_handler.cc', - 'atom/browser/net/asar/asar_protocol_handler.h', - 'atom/browser/net/asar/url_request_asar_job.cc', - 'atom/browser/net/asar/url_request_asar_job.h', - 'atom/browser/net/atom_url_request_job_factory.cc', - 'atom/browser/net/atom_url_request_job_factory.h', - 'atom/browser/net/url_request_string_job.cc', - 'atom/browser/net/url_request_string_job.h', - 'atom/browser/net/url_request_buffer_job.cc', - 'atom/browser/net/url_request_buffer_job.h', - 'atom/browser/node_debugger.cc', - 'atom/browser/node_debugger.h', - 'atom/browser/ui/accelerator_util.cc', - 'atom/browser/ui/accelerator_util.h', - 'atom/browser/ui/accelerator_util_mac.mm', - 'atom/browser/ui/accelerator_util_views.cc', - 'atom/browser/ui/cocoa/atom_menu_controller.h', - 'atom/browser/ui/cocoa/atom_menu_controller.mm', - 'atom/browser/ui/cocoa/event_processing_window.h', - 'atom/browser/ui/cocoa/event_processing_window.mm', - 'atom/browser/ui/file_dialog.h', - 'atom/browser/ui/file_dialog_gtk.cc', - 'atom/browser/ui/file_dialog_mac.mm', - 'atom/browser/ui/file_dialog_win.cc', - 'atom/browser/ui/message_box.h', - 'atom/browser/ui/message_box_mac.mm', - 'atom/browser/ui/message_box_views.cc', - 'atom/browser/ui/tray_icon.cc', - 'atom/browser/ui/tray_icon.h', - 'atom/browser/ui/tray_icon_gtk.cc', - 'atom/browser/ui/tray_icon_gtk.h', - 'atom/browser/ui/tray_icon_cocoa.h', - 'atom/browser/ui/tray_icon_cocoa.mm', - 'atom/browser/ui/tray_icon_observer.h', - 'atom/browser/ui/tray_icon_win.cc', - 'atom/browser/ui/views/frameless_view.cc', - 'atom/browser/ui/views/frameless_view.h', - 'atom/browser/ui/views/global_menu_bar_x11.cc', - 'atom/browser/ui/views/global_menu_bar_x11.h', - 'atom/browser/ui/views/menu_bar.cc', - 'atom/browser/ui/views/menu_bar.h', - 'atom/browser/ui/views/menu_delegate.cc', - 'atom/browser/ui/views/menu_delegate.h', - 'atom/browser/ui/views/menu_layout.cc', - 'atom/browser/ui/views/menu_layout.h', - 'atom/browser/ui/views/submenu_button.cc', - 'atom/browser/ui/views/submenu_button.h', - 'atom/browser/ui/views/win_frame_view.cc', - 'atom/browser/ui/views/win_frame_view.h', - 'atom/browser/ui/win/notify_icon_host.cc', - 'atom/browser/ui/win/notify_icon_host.h', - 'atom/browser/ui/win/notify_icon.cc', - 'atom/browser/ui/win/notify_icon.h', - 'atom/browser/ui/x/window_state_watcher.cc', - 'atom/browser/ui/x/window_state_watcher.h', - 'atom/browser/ui/x/x_window_utils.cc', - 'atom/browser/ui/x/x_window_utils.h', - 'atom/browser/web_view_manager.cc', - 'atom/browser/web_view_manager.h', - 'atom/browser/web_dialog_helper.cc', - 'atom/browser/web_dialog_helper.h', - 'atom/browser/window_list.cc', - 'atom/browser/window_list.h', - 'atom/browser/window_list_observer.h', - 'atom/common/api/api_messages.h', - 'atom/common/api/atom_api_asar.cc', - 'atom/common/api/atom_api_clipboard.cc', - 'atom/common/api/atom_api_crash_reporter.cc', - 'atom/common/api/atom_api_id_weak_map.cc', - 'atom/common/api/atom_api_id_weak_map.h', - 'atom/common/api/atom_api_native_image.cc', - 'atom/common/api/atom_api_native_image.h', - 'atom/common/api/atom_api_native_image_mac.mm', - 'atom/common/api/atom_api_shell.cc', - 'atom/common/api/atom_api_v8_util.cc', - 'atom/common/api/atom_bindings.cc', - 'atom/common/api/atom_bindings.h', - 'atom/common/api/object_life_monitor.cc', - 'atom/common/api/object_life_monitor.h', - 'atom/common/asar/archive.cc', - 'atom/common/asar/archive.h', - 'atom/common/asar/asar_util.cc', - 'atom/common/asar/asar_util.h', - 'atom/common/asar/scoped_temporary_file.cc', - 'atom/common/asar/scoped_temporary_file.h', - 'atom/common/common_message_generator.cc', - 'atom/common/common_message_generator.h', - 'atom/common/crash_reporter/crash_reporter.cc', - 'atom/common/crash_reporter/crash_reporter.h', - 'atom/common/crash_reporter/crash_reporter_linux.cc', - 'atom/common/crash_reporter/crash_reporter_linux.h', - 'atom/common/crash_reporter/crash_reporter_mac.h', - 'atom/common/crash_reporter/crash_reporter_mac.mm', - 'atom/common/crash_reporter/crash_reporter_win.cc', - 'atom/common/crash_reporter/crash_reporter_win.h', - 'atom/common/crash_reporter/linux/crash_dump_handler.cc', - 'atom/common/crash_reporter/linux/crash_dump_handler.h', - 'atom/common/crash_reporter/win/crash_service.cc', - 'atom/common/crash_reporter/win/crash_service.h', - 'atom/common/crash_reporter/win/crash_service_main.cc', - 'atom/common/crash_reporter/win/crash_service_main.h', - 'atom/common/draggable_region.cc', - 'atom/common/draggable_region.h', - 'atom/common/google_api_key.h', - 'atom/common/linux/application_info.cc', - 'atom/common/native_mate_converters/accelerator_converter.cc', - 'atom/common/native_mate_converters/accelerator_converter.h', - 'atom/common/native_mate_converters/file_path_converter.h', - 'atom/common/native_mate_converters/gfx_converter.cc', - 'atom/common/native_mate_converters/gfx_converter.h', - 'atom/common/native_mate_converters/gurl_converter.h', - 'atom/common/native_mate_converters/image_converter.cc', - 'atom/common/native_mate_converters/image_converter.h', - 'atom/common/native_mate_converters/string16_converter.h', - 'atom/common/native_mate_converters/v8_value_converter.cc', - 'atom/common/native_mate_converters/v8_value_converter.h', - 'atom/common/native_mate_converters/value_converter.cc', - 'atom/common/native_mate_converters/value_converter.h', - 'atom/common/node_bindings.cc', - 'atom/common/node_bindings.h', - 'atom/common/node_bindings_linux.cc', - 'atom/common/node_bindings_linux.h', - 'atom/common/node_bindings_mac.cc', - 'atom/common/node_bindings_mac.h', - 'atom/common/node_bindings_win.cc', - 'atom/common/node_bindings_win.h', - 'atom/common/node_includes.h', - 'atom/common/options_switches.cc', - 'atom/common/options_switches.h', - 'atom/common/platform_util.h', - 'atom/common/platform_util_linux.cc', - 'atom/common/platform_util_mac.mm', - 'atom/common/platform_util_win.cc', - 'atom/renderer/api/atom_api_renderer_ipc.cc', - 'atom/renderer/api/atom_api_spell_check_client.cc', - 'atom/renderer/api/atom_api_spell_check_client.h', - 'atom/renderer/api/atom_api_web_frame.cc', - 'atom/renderer/api/atom_api_web_frame.h', - 'atom/renderer/atom_render_view_observer.cc', - 'atom/renderer/atom_render_view_observer.h', - 'atom/renderer/atom_renderer_client.cc', - 'atom/renderer/atom_renderer_client.h', - 'atom/renderer/guest_view_container.cc', - 'atom/renderer/guest_view_container.h', - 'chromium_src/chrome/browser/browser_process.cc', - 'chromium_src/chrome/browser/browser_process.h', - 'chromium_src/chrome/browser/chrome_notification_types.h', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener.cc', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener.h', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener_mac.mm', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener_mac.h', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener_x11.cc', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener_x11.h', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener_win.cc', - 'chromium_src/chrome/browser/extensions/global_shortcut_listener_win.h', - 'chromium_src/chrome/browser/printing/print_job.cc', - 'chromium_src/chrome/browser/printing/print_job.h', - 'chromium_src/chrome/browser/printing/print_job_manager.cc', - 'chromium_src/chrome/browser/printing/print_job_manager.h', - 'chromium_src/chrome/browser/printing/print_job_worker.cc', - 'chromium_src/chrome/browser/printing/print_job_worker.h', - 'chromium_src/chrome/browser/printing/print_job_worker_owner.cc', - 'chromium_src/chrome/browser/printing/print_job_worker_owner.h', - 'chromium_src/chrome/browser/printing/print_view_manager_base.cc', - 'chromium_src/chrome/browser/printing/print_view_manager_base.h', - 'chromium_src/chrome/browser/printing/print_view_manager_basic.cc', - 'chromium_src/chrome/browser/printing/print_view_manager_basic.h', - 'chromium_src/chrome/browser/printing/print_view_manager_observer.h', - 'chromium_src/chrome/browser/printing/printer_query.cc', - 'chromium_src/chrome/browser/printing/printer_query.h', - 'chromium_src/chrome/browser/printing/printing_message_filter.cc', - 'chromium_src/chrome/browser/printing/printing_message_filter.h', - 'chromium_src/chrome/browser/speech/tts_controller.h', - 'chromium_src/chrome/browser/speech/tts_controller_impl.cc', - 'chromium_src/chrome/browser/speech/tts_controller_impl.h', - 'chromium_src/chrome/browser/speech/tts_linux.cc', - 'chromium_src/chrome/browser/speech/tts_mac.mm', - 'chromium_src/chrome/browser/speech/tts_message_filter.cc', - 'chromium_src/chrome/browser/speech/tts_message_filter.h', - 'chromium_src/chrome/browser/speech/tts_platform.cc', - 'chromium_src/chrome/browser/speech/tts_platform.h', - 'chromium_src/chrome/browser/speech/tts_win.cc', - 'chromium_src/chrome/browser/ui/browser_dialogs.h', - 'chromium_src/chrome/browser/ui/cocoa/color_chooser_mac.mm', - 'chromium_src/chrome/browser/ui/views/color_chooser_aura.cc', - 'chromium_src/chrome/browser/ui/views/color_chooser_aura.h', - 'chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc', - 'chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.h', - 'chromium_src/chrome/common/print_messages.cc', - 'chromium_src/chrome/common/print_messages.h', - 'chromium_src/chrome/common/tts_messages.h', - 'chromium_src/chrome/common/tts_utterance_request.cc', - 'chromium_src/chrome/common/tts_utterance_request.h', - 'chromium_src/chrome/renderer/printing/print_web_view_helper.cc', - 'chromium_src/chrome/renderer/printing/print_web_view_helper_linux.cc', - 'chromium_src/chrome/renderer/printing/print_web_view_helper_mac.mm', - 'chromium_src/chrome/renderer/printing/print_web_view_helper_pdf_win.cc', - 'chromium_src/chrome/renderer/printing/print_web_view_helper.h', - 'chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.cc', - 'chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.h', - 'chromium_src/chrome/renderer/tts_dispatcher.cc', - 'chromium_src/chrome/renderer/tts_dispatcher.h', - 'chromium_src/library_loaders/libgio_loader.cc', - 'chromium_src/library_loaders/libgio.h', - 'chromium_src/library_loaders/libspeechd_loader.cc', - 'chromium_src/library_loaders/libspeechd.h', - '<@(native_mate_files)', - '<(SHARED_INTERMEDIATE_DIR)/atom_natives.h', - ], - 'lib_sources_win': [ - 'chromium_src/chrome/browser/ui/views/color_chooser_dialog.cc', - 'chromium_src/chrome/browser/ui/views/color_chooser_dialog.h', - 'chromium_src/chrome/browser/ui/views/color_chooser_win.cc', - ], - 'framework_sources': [ - 'atom/app/atom_library_main.h', - 'atom/app/atom_library_main.mm', - ], - 'locales': [ - 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', - 'en-US', 'es-419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he', - 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv', - 'ml', 'mr', 'ms', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru', - 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk', - 'vi', 'zh-CN', 'zh-TW', - ], + 'atom_source_root': '!@(<(apply_locales_cmd) -d ZZLOCALE.lproj <(locales))', ], @@ -490,20 +106,41 @@ ], }], # OS!="mac" ['OS=="win"', { + 'msvs_settings': { + 'VCLinkerTool': { + 'AdditionalOptions': [ + # Force linking even though we have duplicate symbols between + # BoringSSL and OpenSSL. + '/FORCE:MULTIPLE', + ], + }, + }, 'copies': [ { + 'variables': { + 'conditions': [ + ['libchromiumcontent_component', { + 'copied_libraries': [ + '<@(libchromiumcontent_shared_libraries)', + '<@(libchromiumcontent_shared_v8_libraries)', + ], + }, { + 'copied_libraries': [], + }], + ], + }, 'destination': '<(PRODUCT_DIR)', 'files': [ - '<(libchromiumcontent_library_dir)/chromiumcontent.dll', - '<(libchromiumcontent_library_dir)/ffmpegsumo.dll', - '<(libchromiumcontent_library_dir)/libEGL.dll', - '<(libchromiumcontent_library_dir)/libGLESv2.dll', - '<(libchromiumcontent_resources_dir)/icudtl.dat', - '<(libchromiumcontent_resources_dir)/content_resources_200_percent.pak', - '<(libchromiumcontent_resources_dir)/content_shell.pak', - '<(libchromiumcontent_resources_dir)/ui_resources_200_percent.pak', - '<(libchromiumcontent_resources_dir)/natives_blob.bin', - '<(libchromiumcontent_resources_dir)/snapshot_blob.bin', + '<@(copied_libraries)', + '<(libchromiumcontent_dir)/ffmpegsumo.dll', + '<(libchromiumcontent_dir)/libEGL.dll', + '<(libchromiumcontent_dir)/libGLESv2.dll', + '<(libchromiumcontent_dir)/icudtl.dat', + '<(libchromiumcontent_dir)/content_resources_200_percent.pak', + '<(libchromiumcontent_dir)/content_shell.pak', + '<(libchromiumcontent_dir)/ui_resources_200_percent.pak', + '<(libchromiumcontent_dir)/natives_blob.bin', + '<(libchromiumcontent_dir)/snapshot_blob.bin', 'external_binaries/d3dcompiler_47.dll', 'external_binaries/msvcp120.dll', 'external_binaries/msvcr120.dll', @@ -522,14 +159,29 @@ ['OS=="linux"', { 'copies': [ { + 'variables': { + 'conditions': [ + ['libchromiumcontent_component', { + 'copied_libraries': [ + '<(PRODUCT_DIR)/lib/libnode.so', + '<@(libchromiumcontent_shared_libraries)', + '<@(libchromiumcontent_shared_v8_libraries)', + ], + }, { + 'copied_libraries': [ + '<(PRODUCT_DIR)/lib/libnode.so', + ], + }], + ], + }, 'destination': '<(PRODUCT_DIR)', 'files': [ - '<(libchromiumcontent_library_dir)/libchromiumcontent.so', - '<(libchromiumcontent_library_dir)/libffmpegsumo.so', - '<(libchromiumcontent_resources_dir)/icudtl.dat', - '<(libchromiumcontent_resources_dir)/content_shell.pak', - '<(libchromiumcontent_resources_dir)/natives_blob.bin', - '<(libchromiumcontent_resources_dir)/snapshot_blob.bin', + '<@(copied_libraries)', + '<(libchromiumcontent_dir)/libffmpegsumo.so', + '<(libchromiumcontent_dir)/icudtl.dat', + '<(libchromiumcontent_dir)/content_shell.pak', + '<(libchromiumcontent_dir)/natives_blob.bin', + '<(libchromiumcontent_dir)/snapshot_blob.bin', ], }, { @@ -559,6 +211,8 @@ # Defined in Chromium but not exposed in its gyp file. 'V8_USE_EXTERNAL_STARTUP_DATA', 'ENABLE_PLUGINS', + # Needed by Node. + 'NODE_WANT_INTERNALS=1', ], 'sources': [ '<@(lib_sources)', @@ -575,11 +229,11 @@ 'vendor/node/deps/http_parser', 'vendor/node/deps/uv/include', # The `node.h` is using `#include"v8.h"`. - 'vendor/brightray/vendor/download/libchromiumcontent/src/v8/include', + '<(libchromiumcontent_src_dir)/v8/include', # The `node.h` is using `#include"ares.h"`. 'vendor/node/deps/cares/include', # The `third_party/WebKit/Source/platform/weborigin/SchemeRegistry.h` is using `platform/PlatformExport.h`. - 'vendor/brightray/vendor/download/libchromiumcontent/src/third_party/WebKit/Source', + '<(libchromiumcontent_src_dir)/third_party/WebKit/Source', ], 'direct_dependent_settings': { 'include_dirs': [ @@ -590,6 +244,11 @@ 'vendor/brightray/brightray.gyp:brightray', ], 'conditions': [ + ['libchromiumcontent_component', { + 'link_settings': { + 'libraries': [ '<@(libchromiumcontent_v8_libraries)' ], + }, + }], ['OS=="win"', { 'sources': [ '<@(lib_sources_win)', @@ -603,6 +262,13 @@ ], }, 'dependencies': [ + # Node is built as static_library on Windows, so we also need to + # include its dependencies here. + 'vendor/node/deps/cares/cares.gyp:cares', + 'vendor/node/deps/http_parser/http_parser.gyp:http_parser', + 'vendor/node/deps/uv/uv.gyp:libuv', + 'vendor/node/deps/zlib/zlib.gyp:zlib', + # Build with breakpad support. 'vendor/breakpad/breakpad.gyp:breakpad_handler', 'vendor/breakpad/breakpad.gyp:breakpad_sender', ], @@ -624,15 +290,13 @@ ], }, # Required settings of using breakpad. - 'include_dirs': [ - 'vendor/breakpad/src', - ], - 'cflags': [ - '_dump_symbols - { - 'target_name': 'copy_chromedriver', - 'type': 'none', - 'actions': [ - { - 'action_name': 'Copy ChromeDriver Binary', - 'variables': { - 'conditions': [ - ['OS=="win"', { - 'chromedriver_binary': 'chromedriver.exe', - },{ - 'chromedriver_binary': 'chromedriver', - }], - ], - }, - 'inputs': [ - '<(libchromiumcontent_library_dir)/<(chromedriver_binary)', - ], - 'outputs': [ - '<(PRODUCT_DIR)/<(chromedriver_binary)', - ], - 'action': [ - 'python', - 'tools/copy_binary.py', - '<@(_inputs)', - '<@(_outputs)', - ], - } - ], - }, # copy_chromedriver ], 'conditions': [ ['OS=="mac"', { @@ -839,7 +371,7 @@ 'include_dirs': [ '.', 'vendor', - '<(libchromiumcontent_include_dir)', + '<(libchromiumcontent_src_dir)', ], 'defines': [ 'PRODUCT_NAME="<(product_name)"', @@ -859,10 +391,10 @@ 'mac_bundle': 1, 'mac_bundle_resources': [ 'atom/common/resources/mac/MainMenu.xib', - '<(libchromiumcontent_resources_dir)/content_shell.pak', - '<(libchromiumcontent_resources_dir)/icudtl.dat', - '<(libchromiumcontent_resources_dir)/natives_blob.bin', - '<(libchromiumcontent_resources_dir)/snapshot_blob.bin', + '<(libchromiumcontent_dir)/content_shell.pak', + '<(libchromiumcontent_dir)/icudtl.dat', + '<(libchromiumcontent_dir)/natives_blob.bin', + '<(libchromiumcontent_dir)/snapshot_blob.bin', ], 'xcode_settings': { 'INFOPLIST_FILE': 'atom/common/resources/mac/Info.plist', @@ -876,11 +408,25 @@ }, 'copies': [ { + 'variables': { + 'conditions': [ + ['libchromiumcontent_component', { + 'copied_libraries': [ + '<(PRODUCT_DIR)/libnode.dylib', + '<@(libchromiumcontent_shared_libraries)', + '<@(libchromiumcontent_shared_v8_libraries)', + ], + }, { + 'copied_libraries': [ + '<(PRODUCT_DIR)/libnode.dylib', + ], + }], + ], + }, 'destination': '<(PRODUCT_DIR)/<(product_name) Framework.framework/Versions/A/Libraries', 'files': [ - '<(libchromiumcontent_library_dir)/ffmpegsumo.so', - '<(libchromiumcontent_library_dir)/libchromiumcontent.dylib', - '<(PRODUCT_DIR)/libnode.dylib', + '<@(copied_libraries)', + '<(libchromiumcontent_dir)/ffmpegsumo.so', ], }, { @@ -961,37 +507,5 @@ }, ], }], # OS!="mac" - ['OS=="win"', { - 'targets': [ - { - 'target_name': 'generate_node_lib', - 'type': 'none', - 'dependencies': [ - '<(project_name)', - ], - 'actions': [ - { - 'action_name': 'Create node.lib', - 'inputs': [ - '<(PRODUCT_DIR)/node.dll.lib', - '<(libchromiumcontent_library_dir)/chromiumcontent.dll.lib', - ], - 'outputs': [ - '<(PRODUCT_DIR)/node.lib', - ], - 'action': [ - 'lib.exe', - '/nologo', - # We can't use <(_outputs) here because that escapes the - # backslash in the path, which confuses lib.exe. - '/OUT:<(PRODUCT_DIR)\\node.lib', - '<@(_inputs)', - ], - 'msvs_cygwin_shell': 0, - }, - ], - }, # target generate_node_lib - ], - }], # OS==win ], } diff --git a/atom/browser/atom_browser_main_parts_linux.cc b/atom/browser/atom_browser_main_parts_linux.cc index e205d98307b1..278e49ac1f1e 100644 --- a/atom/browser/atom_browser_main_parts_linux.cc +++ b/atom/browser/atom_browser_main_parts_linux.cc @@ -4,9 +4,10 @@ #include "atom/browser/atom_browser_main_parts.h" +#include + #include "base/command_line.h" #include "base/strings/string_number_conversions.h" -#include "library_loaders/libgio.h" #include "ui/gfx/switches.h" namespace atom { @@ -16,8 +17,8 @@ namespace { const char* kInterfaceSchema = "org.gnome.desktop.interface"; const char* kScaleFactor = "scaling-factor"; -bool SchemaExists(const LibGioLoader& libgio_loader, const char* schema_name) { - const gchar* const* schemas = libgio_loader.g_settings_list_schemas(); +bool SchemaExists(const char* schema_name) { + const gchar* const* schemas = g_settings_list_schemas(); while (*schemas) { if (strcmp(schema_name, static_cast(*schemas)) == 0) return true; @@ -26,9 +27,8 @@ bool SchemaExists(const LibGioLoader& libgio_loader, const char* schema_name) { return false; } -bool KeyExists(const LibGioLoader& libgio_loader, GSettings* client, - const char* key) { - gchar** keys = libgio_loader.g_settings_list_keys(client); +bool KeyExists(GSettings* client, const char* key) { + gchar** keys = g_settings_list_keys(client); if (!keys) return false; @@ -45,24 +45,15 @@ bool KeyExists(const LibGioLoader& libgio_loader, GSettings* client, } void GetDPIFromGSettings(guint* scale_factor) { - LibGioLoader libgio_loader; - - // Try also without .0 at the end; on some systems this may be required. - if (!libgio_loader.Load("libgio-2.0.so.0") && - !libgio_loader.Load("libgio-2.0.so")) { - VLOG(1) << "Cannot load gio library. Will fall back to gconf."; - return; - } - GSettings* client = nullptr; - if (!SchemaExists(libgio_loader, kInterfaceSchema) || - !(client = libgio_loader.g_settings_new(kInterfaceSchema))) { + if (!SchemaExists(kInterfaceSchema) || + !(client = g_settings_new(kInterfaceSchema))) { VLOG(1) << "Cannot create gsettings client."; return; } - if (KeyExists(libgio_loader, client, kScaleFactor)) - *scale_factor = libgio_loader.g_settings_get_uint(client, kScaleFactor); + if (KeyExists(client, kScaleFactor)) + *scale_factor = g_settings_get_uint(client, kScaleFactor); g_object_unref(client); } diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index bb5928dae77c..d807a9d4a8b0 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -54,8 +54,9 @@ #include "ui/gfx/geometry/size_conversions.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/rect.h" -#include "ui/gfx/screen.h" #include "ui/gfx/geometry/size.h" +#include "ui/gfx/screen.h" +#include "ui/gl/gpu_switching_manager.h" #if defined(OS_WIN) #include "ui/gfx/switches.h" @@ -65,10 +66,6 @@ using content::NavigationEntry; using content::RenderWidgetHostView; using content::RenderWidgetHost; -namespace content { -CONTENT_EXPORT extern bool g_use_transparent_window; -} - namespace atom { namespace { @@ -115,7 +112,7 @@ NativeWindow::NativeWindow(content::WebContents* web_contents, // Tell the content module to initialize renderer widget with transparent // mode. - content::g_use_transparent_window = transparent_; + ui::GpuSwitchingManager::SetTransparent(transparent_); // Read icon before window is created. options.Get(switches::kIcon, &icon_); diff --git a/atom/common/node_bindings.cc b/atom/common/node_bindings.cc index 1ff9c1685c4b..ef74459b1c0f 100644 --- a/atom/common/node_bindings.cc +++ b/atom/common/node_bindings.cc @@ -52,6 +52,14 @@ REFERENCE_MODULE(atom_renderer_ipc); REFERENCE_MODULE(atom_renderer_web_frame); #undef REFERENCE_MODULE +// The "v8::Function::kLineOffsetNotFound" is exported in node.dll, but the +// linker can not find it, could be a bug of VS. +#if defined(OS_WIN) && !defined(DEBUG) +namespace v8 { +const int Function::kLineOffsetNotFound = -1; +} +#endif + namespace atom { namespace { diff --git a/chromium_src/library_loaders/libgio.h b/chromium_src/library_loaders/libgio.h deleted file mode 100644 index 0e9708c406a3..000000000000 --- a/chromium_src/library_loaders/libgio.h +++ /dev/null @@ -1,48 +0,0 @@ -// This is generated file. Do not modify directly. -// Path to the code generator: tools/generate_library_loader/generate_library_loader.py . - -#ifndef LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H -#define LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H - -#include -#define LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN - - -#include - -class LibGioLoader { - public: - LibGioLoader(); - ~LibGioLoader(); - - bool Load(const std::string& library_name) - __attribute__((warn_unused_result)); - - bool loaded() const { return loaded_; } - - typeof(&::g_settings_new) g_settings_new; - typeof(&::g_settings_get_child) g_settings_get_child; - typeof(&::g_settings_get_string) g_settings_get_string; - typeof(&::g_settings_get_boolean) g_settings_get_boolean; - typeof(&::g_settings_get_uint) g_settings_get_uint; - typeof(&::g_settings_get_strv) g_settings_get_strv; - typeof(&::g_settings_is_writable) g_settings_is_writable; - typeof(&::g_settings_list_schemas) g_settings_list_schemas; - typeof(&::g_settings_list_keys) g_settings_list_keys; - - - private: - void CleanUp(bool unload); - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - void* library_; -#endif - - bool loaded_; - - // Disallow copy constructor and assignment operator. - LibGioLoader(const LibGioLoader&); - void operator=(const LibGioLoader&); -}; - -#endif // LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H diff --git a/chromium_src/library_loaders/libgio_loader.cc b/chromium_src/library_loaders/libgio_loader.cc deleted file mode 100644 index 268f190dcfd6..000000000000 --- a/chromium_src/library_loaders/libgio_loader.cc +++ /dev/null @@ -1,174 +0,0 @@ -// This is generated file. Do not modify directly. -// Path to the code generator: tools/generate_library_loader/generate_library_loader.py . - -#include "library_loaders/libgio.h" - -#include - -// Put these sanity checks here so that they fire at most once -// (to avoid cluttering the build output). -#if !defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) && !defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) -#error neither LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN nor LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED defined -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) && defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) -#error both LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN and LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED defined -#endif - -LibGioLoader::LibGioLoader() : loaded_(false) { -} - -LibGioLoader::~LibGioLoader() { - CleanUp(loaded_); -} - -bool LibGioLoader::Load(const std::string& library_name) { - if (loaded_) - return false; - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - library_ = dlopen(library_name.c_str(), RTLD_LAZY); - if (!library_) - return false; -#endif - - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_new = - reinterpret_castg_settings_new)>( - dlsym(library_, "g_settings_new")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_new = &::g_settings_new; -#endif - if (!g_settings_new) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_get_child = - reinterpret_castg_settings_get_child)>( - dlsym(library_, "g_settings_get_child")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_get_child = &::g_settings_get_child; -#endif - if (!g_settings_get_child) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_get_string = - reinterpret_castg_settings_get_string)>( - dlsym(library_, "g_settings_get_string")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_get_string = &::g_settings_get_string; -#endif - if (!g_settings_get_string) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_get_boolean = - reinterpret_castg_settings_get_boolean)>( - dlsym(library_, "g_settings_get_boolean")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_get_boolean = &::g_settings_get_boolean; -#endif - if (!g_settings_get_boolean) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_get_uint = - reinterpret_castg_settings_get_uint)>( - dlsym(library_, "g_settings_get_uint")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_get_uint = &::g_settings_get_uint; -#endif - if (!g_settings_get_uint) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_get_strv = - reinterpret_castg_settings_get_strv)>( - dlsym(library_, "g_settings_get_strv")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_get_strv = &::g_settings_get_strv; -#endif - if (!g_settings_get_strv) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_is_writable = - reinterpret_castg_settings_is_writable)>( - dlsym(library_, "g_settings_is_writable")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_is_writable = &::g_settings_is_writable; -#endif - if (!g_settings_is_writable) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_list_schemas = - reinterpret_castg_settings_list_schemas)>( - dlsym(library_, "g_settings_list_schemas")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_list_schemas = &::g_settings_list_schemas; -#endif - if (!g_settings_list_schemas) { - CleanUp(true); - return false; - } - -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - g_settings_list_keys = - reinterpret_castg_settings_list_keys)>( - dlsym(library_, "g_settings_list_keys")); -#endif -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DT_NEEDED) - g_settings_list_keys = &::g_settings_list_keys; -#endif - if (!g_settings_list_keys) { - CleanUp(true); - return false; - } - - loaded_ = true; - return true; -} - -void LibGioLoader::CleanUp(bool unload) { -#if defined(LIBRARY_LOADER_OUT_RELEASE_GEN_LIBRARY_LOADERS_LIBGIO_H_DLOPEN) - if (unload) { - dlclose(library_); - library_ = NULL; - } -#endif - loaded_ = false; - g_settings_new = NULL; - g_settings_get_child = NULL; - g_settings_get_string = NULL; - g_settings_get_boolean = NULL; - g_settings_get_uint = NULL; - g_settings_get_strv = NULL; - g_settings_is_writable = NULL; - g_settings_list_schemas = NULL; - g_settings_list_keys = NULL; - -} diff --git a/common.gypi b/common.gypi index d39d20ec4571..912c6773a74e 100644 --- a/common.gypi +++ b/common.gypi @@ -3,18 +3,12 @@ 'vendor/brightray/brightray.gypi', ], 'variables': { - 'clang': 0, - 'openssl_no_asm': 1, - 'conditions': [ - ['OS=="mac" or OS=="linux"', { - 'clang': 1, - }], - ], # Required by breakpad. 'os_bsd': 0, # Reflects node's config.gypi. 'component%': 'static_library', 'python': 'python', + 'openssl_no_asm': 1, 'node_install_npm': 'false', 'node_prefix': '', 'node_shared_cares': 'false', @@ -40,10 +34,11 @@ # Settings to compile node under Windows. 'target_defaults': { 'target_conditions': [ - ['_target_name in ["libuv", "http_parser", "cares", "openssl", "openssl-cli", "node", "zlib"]', { + ['_target_name in ["libuv", "http_parser", "openssl", "cares", "node", "zlib"]', { 'msvs_disabled_warnings': [ 4703, # potentially uninitialized local pointer variable 'req' used 4013, # 'free' undefined; assuming extern returning int + 4018, # signed/unsigned mismatch 4054, # 4057, # 'function' : 'volatile LONG *' differs in indirection to slightly different base types from 'unsigned long *' 4189, # @@ -53,6 +48,7 @@ 4152, # function/data pointer conversion in expression 4206, # translation unit is empty 4204, # non-constant aggregate initializer + 4210, # nonstandard extension used : function given file scope 4214, # bit field types other than int 4232, # address of dllimport 'free' is not static, identity not guaranteed 4291, # no matching operator delete found @@ -76,6 +72,7 @@ '-Wno-unused-function', '-Wno-sometimes-uninitialized', '-Wno-pointer-sign', + '-Wno-sign-compare', '-Wno-string-plus-int', '-Wno-unused-variable', '-Wno-deprecated-declarations', @@ -95,34 +92,63 @@ '-Wno-unused-value', '-Wno-deprecated-declarations', '-Wno-return-type', - # Fix relocation error when compiling as shared library. + # Required when building as shared library. '-fPIC', ], }], ], }], - ['_target_name in ["node", "atom_lib"]', { - 'include_dirs': [ - 'vendor/brightray/vendor/download/libchromiumcontent/src/v8/include', + ['_target_name=="node"', { + 'include_dirs': [ '<(libchromiumcontent_src_dir)/v8/include' ], + 'conditions': [ + ['OS=="mac" and libchromiumcontent_component==0', { + # -all_load is the "whole-archive" on OS X. + 'xcode_settings': { + 'OTHER_LDFLAGS': [ '-Wl,-all_load' ], + }, + }], + ['OS=="win" and libchromiumcontent_component==0', { + 'libraries': [ '-lwinmm.lib' ], + 'msvs_settings': { + 'VCLinkerTool': { + # There is nothing like "whole-archive" on Windows, so we + # have to manually force some objets files to be included + # by referencing them. + 'ForceSymbolReferences': [ + '_u_errorName_52', + '_ubidi_setPara_52', + '_ucsdet_getName_52', + '_ulocdata_close_52', + '_uregex_matches_52', + '_uscript_getCode_52', + '_usearch_setPattern_52', + '?createInstance@Transliterator@icu_52@@SAPAV12@ABVUnicodeString@2@W4UTransDirection@@AAW4UErrorCode@@@Z', + '?nameToUnicodeUTF8@IDNA@icu_52@@UBEXABVStringPiece@2@AAVByteSink@2@AAVIDNAInfo@2@AAW4UErrorCode@@@Z', + '?kLineOffsetNotFound@Function@v8@@2HB', + ], # '/INCLUDE' + }, + }, + }], + ['OS=="linux" and libchromiumcontent_component==0', { + # Prevent the linker from stripping symbols. + 'ldflags': [ + '-Wl,--whole-archive', + '<@(libchromiumcontent_v8_libraries)', + '-Wl,--no-whole-archive', + ], + }, { + 'libraries': [ '<@(libchromiumcontent_v8_libraries)' ], + }], ], }], - ['_target_name=="node"', { - 'conditions': [ - ['OS=="linux"', { - 'libraries': [ - '<(libchromiumcontent_library_dir)/libchromiumcontent.so', - ], - }], - ['OS=="win"', { - 'libraries': [ - '<(libchromiumcontent_library_dir)/chromiumcontent.dll.lib', - ], - }], - ['OS=="mac"', { - 'libraries': [ - '<(libchromiumcontent_library_dir)/libchromiumcontent.dylib', - ], - }], + ['_target_name=="openssl"', { + 'xcode_settings': { + 'DEAD_CODE_STRIPPING': 'YES', # -Wl,-dead_strip + 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES', + 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', + }, + 'cflags': [ + '-fvisibility=hidden', ], }], ['_target_name=="libuv"', { @@ -152,16 +178,14 @@ '-Wno-empty-body', ], }], # OS=="linux" + ['OS=="win"', { + 'msvs_disabled_warnings': [ + # unreferenced local function has been removed. + 4505, + ], + }], # OS=="win" ], }], - ['_type in ["executable", "shared_library"]', { - # On some machines setting CLANG_CXX_LIBRARY doesn't work for linker. - 'xcode_settings': { - 'OTHER_LDFLAGS': [ - '-stdlib=libc++' - ], - }, - }], ], 'msvs_cygwin_shell': 0, # Strangely setting it to 1 would make building under cygwin fail. 'msvs_disabled_warnings': [ @@ -173,64 +197,8 @@ 4819, # The file contains a character that cannot be represented in the current code page 4996, # (atlapp.h) 'GetVersionExW': was declared deprecated ], - 'msvs_settings': { - 'VCCLCompilerTool': { - # Programs that use the Standard C++ library must be compiled with C++ - # exception handling enabled. - # http://support.microsoft.com/kb/154419 - 'ExceptionHandling': 1, - }, - 'VCLinkerTool': { - 'AdditionalOptions': [ - # ATL 8.0 included in WDK 7.1 makes the linker to generate following - # warnings: - # - warning LNK4254: section 'ATL' (50000040) merged into - # '.rdata' (40000040) with different attributes - # - warning LNK4078: multiple 'ATL' sections found with - # different attributes - '/ignore:4254', - '/ignore:4078', - # views_chromiumcontent.lib generates this warning because it's - # symobls are defined as dllexport but used as static library: - # - warning LNK4217: locally defined symbol imported in function - # - warning LNK4049: locally defined symbol imported - '/ignore:4217', - '/ignore:4049', - ], - }, - }, - 'xcode_settings': { - 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym', - }, }, 'conditions': [ - # Settings to compile with clang under OS X. - ['clang==1', { - 'make_global_settings': [ - ['CC', '/usr/bin/clang'], - ['CXX', '/usr/bin/clang++'], - ['LINK', '$(CXX)'], - ['CC.host', '$(CC)'], - ['CXX.host', '$(CXX)'], - ['LINK.host', '$(LINK)'], - ], - 'target_defaults': { - 'cflags_cc': [ - '-std=c++11', - ], - 'xcode_settings': { - 'CC': '/usr/bin/clang', - 'LDPLUSPLUS': '/usr/bin/clang++', - 'OTHER_CFLAGS': [ - '-fcolor-diagnostics', - ], - - 'GCC_C_LANGUAGE_STANDARD': 'c99', # -std=c99 - 'CLANG_CXX_LIBRARY': 'libc++', # -stdlib=libc++ - 'CLANG_CXX_LANGUAGE_STANDARD': 'c++11', # -std=c++11 - }, - }, - }], # clang==1 # The breakdpad on Windows assumes Debug_x64 and Release_x64 configurations. ['OS=="win"', { 'target_defaults': { @@ -251,24 +219,5 @@ }, }, }], # OS=="mac" - # The breakpad on Linux needs the binary to be built with -g to generate - # unmangled symbols. - ['OS=="linux"', { - 'target_defaults': { - 'cflags': [ '-g' ], - 'conditions': [ - ['target_arch=="ia32"', { - 'target_conditions': [ - ['_toolset=="target"', { - 'ldflags': [ - # Workaround for linker OOM. - '-Wl,--no-keep-memory', - ], - }], - ], - }], - ], - }, - }], ], } diff --git a/docs/README.md b/docs/README.md index e9ceda79bdfa..34688848b354 100644 --- a/docs/README.md +++ b/docs/README.md @@ -59,6 +59,7 @@ Modules for both processes: * [Coding style](development/coding-style.md) * [Source code directory structure](development/source-code-directory-structure.md) * [Technical differences to NW.js (formerly node-webkit)](development/atom-shell-vs-node-webkit.md) +* [Build system overview](development/build-system-overview.md) * [Build instructions (Mac)](development/build-instructions-mac.md) * [Build instructions (Windows)](development/build-instructions-windows.md) * [Build instructions (Linux)](development/build-instructions-linux.md) diff --git a/docs/development/build-instructions-linux.md b/docs/development/build-instructions-linux.md index a7895d22261e..eba2c4b0f2dd 100644 --- a/docs/development/build-instructions-linux.md +++ b/docs/development/build-instructions-linux.md @@ -9,7 +9,10 @@ On Ubuntu you could install the libraries via: ```bash -$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev libnotify-dev libgnome-keyring-dev libgconf2-dev gcc-multilib g++-multilib +$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \ + libnotify-dev libgnome-keyring-dev libgconf2-dev \ + libasound2-dev libcap-dev libcups2-dev libxtst-dev \ + gcc-multilib g++-multilib ``` Latest Node.js could be installed via ppa: @@ -52,10 +55,10 @@ $ ./script/build.py You can also only build the `Debug` target: ```bash -$ ./script/build.py -c Debug +$ ./script/build.py -c D ``` -After building is done, you can find `atom` under `out/Debug`. +After building is done, you can find `atom` under `out/D`. ## Troubleshooting diff --git a/docs/development/build-instructions-mac.md b/docs/development/build-instructions-mac.md index ebc5876a74ef..3d35b84d3b7f 100644 --- a/docs/development/build-instructions-mac.md +++ b/docs/development/build-instructions-mac.md @@ -39,10 +39,10 @@ $ ./script/build.py You can also only build the `Debug` target: ```bash -$ ./script/build.py -c Debug +$ ./script/build.py -c D ``` -After building is done, you can find `Atom.app` under `out/Debug`. +After building is done, you can find `Atom.app` under `out/D`. ## 32bit support diff --git a/docs/development/build-instructions-windows.md b/docs/development/build-instructions-windows.md index c6934dac4793..60d3dca8a928 100644 --- a/docs/development/build-instructions-windows.md +++ b/docs/development/build-instructions-windows.md @@ -49,10 +49,10 @@ python script\build.py You can also only build the Debug target: ```powershell -python script\build.py -c Debug +python script\build.py -c D ``` -After building is done, you can find `atom.exe` under `out\Debug`. +After building is done, you can find `atom.exe` under `out\D`. ## 64bit support diff --git a/docs/development/build-system-overview.md b/docs/development/build-system-overview.md new file mode 100644 index 000000000000..c2a29cf5ebcd --- /dev/null +++ b/docs/development/build-system-overview.md @@ -0,0 +1,64 @@ +# Build system overview + +Atom Shell uses `gyp` for project generation, and `ninja` for building, project +configurations can be found in `.gyp` and `.gypi` files. + +## Gyp files + +Following `gyp` files contain the main rules of building Atom Shell: + +* `atom.gyp` defines how Atom Shell itself is built. +* `common.gypi` adjusts the build configurations of Node to make it build + together with Chromium. +* `vendor/brightray/brightray.gyp` defines how `brightray` is built, and + includes the default configurations of linking with Chromium. +* `vendor/brightray/brightray.gypi` includes general build configurations about + building. + +## Component build + +Since Chromium is quite a large project, the final linking stage would take +quite a few minutes, making it hard for development. In order to solve this, +Chromium introduced the "component build", which builds each component as a +separate shared library, making linking very quick but sacrificing file size +and performance. + +In Atom Shell we took a very similar approach: for `Debug` builds, the binary +will be linked to shared library version of Chromium's components to achieve +fast linking time; for `Release` builds, the binary will be linked to the static +library versions, so we can have the best possible binary size and performance. + +## Minimal bootstrapping + +All of Chromium's prebuilt binaries are downloaded when running the bootstrap +script. By default both static libraries and shared libraries will be +downloaded and the final size should be between 800MB and 2GB according to the +platform. + +If you only want to build Atom Shell quickly for testing or development, you +can only download the shared library versions by passing the `--dev` parameter: + +```bash +$ ./script/bootstrap.py --dev +$ ./script/build.py -c D +``` + +## Two-phrase project generation + +Atom Shell links with different sets of libraries in `Release` and `Debug` +builds, however `gyp` doesn't support configuring different link settings for +different configurations. + +To work around this Atom Shell uses a `gyp` variable +`libchromiumcontent_component` to control which link settings to use, and only +generates one target when running `gyp`. + +## Target names + +Unlike most projects that use `Release` and `Debug` as target names, Atom Shell +uses `R` and `D` instead. This is because `gyp` randomly crashes if there is +only one `Release` or `Debug` build configuration is defined, and Atom Shell has +to only generate one target for one time as stated above. + +This only affects developers, if you are only building Atom Shell for rebranding +you are not affected. diff --git a/filename_rules.gypi b/filename_rules.gypi deleted file mode 100644 index e1ee46dddee8..000000000000 --- a/filename_rules.gypi +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2012 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -# This gypi file defines the patterns used for determining whether a -# file is excluded from the build on a given platform. It is -# included by common.gypi for chromium_code. - -{ - 'target_conditions': [ - ['OS!="win"', { - 'sources/': [ ['exclude', '_win(_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)win/'], - ['exclude', '(^|/)win_[^/]*\\.(h|cc)$'] ], - }], - ['OS!="mac"', { - 'sources/': [ ['exclude', '_(cocoa|mac)(_unittest)?\\.(h|cc|mm?)$'], - ['exclude', '(^|/)(cocoa|mac)/'] ], - }], - ['OS!="ios"', { - 'sources/': [ ['exclude', '_ios(_unittest)?\\.(h|cc|mm?)$'], - ['exclude', '(^|/)ios/'] ], - }], - ['OS!="mac" and OS!="ios"', { - 'sources/': [ ['exclude', '\\.mm?$' ] ], - }], - # Do not exclude the linux files on *BSD since most of them can be - # shared at this point. - # In case a file is not needed, it is going to be excluded later on. - # TODO(evan): the above is not correct; we shouldn't build _linux - # files on non-linux. - ['OS!="linux" and OS!="openbsd" and OS!="freebsd"', { - 'sources/': [ - ['exclude', '(^|/)library_loaders/'], - ['exclude', '_linux(_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)linux_[^/]*\\.(h|cc)$'], - ['exclude', '(^|/)linux/'], - ['exclude', '_x11(_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)x11_[^/]*\\.(h|cc)$'], - ['exclude', '(^|/)x11/'], - ], - }], - ['OS!="android"', { - 'sources/': [ - ['exclude', '_android(_unittest)?\\.cc$'], - ['exclude', '(^|/)android/'], - ], - }], - ['OS=="win"', { - 'sources/': [ - ['exclude', '_posix(_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)posix/'], - ], - }], - ['OS!="linux" and OS!="openbsd" and OS!="freebsd"', { - 'sources/': [ - ['exclude', '_xdg(_unittest)?\\.(h|cc)$'], - ], - }], - ['OS!="linux" and OS!="openbsd" and OS!="freebsd"', { - 'sources/': [ - ['exclude', '_gtk(_browsertest|_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)gtk/'], - ['exclude', '(^|/)gtk_[^/]*\\.(h|cc)$'], - ['exclude', '(^|/)libgtk2ui/'], - ['exclude', '(^|/)x/'], - ], - }], - ['OS=="mac"', { - 'sources/': [ ['exclude', '_aura(_browsertest|_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)aura/'], - ['exclude', '_views\\.(h|cc)$'], - ['exclude', '(^|/)views/'], - ], - }], - ] -} diff --git a/filenames.gypi b/filenames.gypi new file mode 100644 index 000000000000..d14c935ab728 --- /dev/null +++ b/filenames.gypi @@ -0,0 +1,377 @@ +{ + 'variables': { + 'app_sources': [ + 'atom/app/atom_main.cc', + 'atom/app/atom_main.h', + ], + 'bundle_sources': [ + 'atom/browser/resources/mac/atom.icns', + ], + 'coffee_sources': [ + 'atom/browser/api/lib/app.coffee', + 'atom/browser/api/lib/atom-delegate.coffee', + 'atom/browser/api/lib/auto-updater.coffee', + 'atom/browser/api/lib/browser-window.coffee', + 'atom/browser/api/lib/content-tracing.coffee', + 'atom/browser/api/lib/dialog.coffee', + 'atom/browser/api/lib/global-shortcut.coffee', + 'atom/browser/api/lib/ipc.coffee', + 'atom/browser/api/lib/menu.coffee', + 'atom/browser/api/lib/menu-item.coffee', + 'atom/browser/api/lib/power-monitor.coffee', + 'atom/browser/api/lib/protocol.coffee', + 'atom/browser/api/lib/screen.coffee', + 'atom/browser/api/lib/tray.coffee', + 'atom/browser/api/lib/web-contents.coffee', + 'atom/browser/lib/chrome-extension.coffee', + 'atom/browser/lib/guest-view-manager.coffee', + 'atom/browser/lib/guest-window-manager.coffee', + 'atom/browser/lib/init.coffee', + 'atom/browser/lib/objects-registry.coffee', + 'atom/browser/lib/rpc-server.coffee', + 'atom/common/api/lib/callbacks-registry.coffee', + 'atom/common/api/lib/clipboard.coffee', + 'atom/common/api/lib/crash-reporter.coffee', + 'atom/common/api/lib/id-weak-map.coffee', + 'atom/common/api/lib/native-image.coffee', + 'atom/common/api/lib/original-fs.coffee', + 'atom/common/api/lib/shell.coffee', + 'atom/common/lib/init.coffee', + 'atom/renderer/lib/chrome-api.coffee', + 'atom/renderer/lib/init.coffee', + 'atom/renderer/lib/inspector.coffee', + 'atom/renderer/lib/override.coffee', + 'atom/renderer/lib/web-view/guest-view-internal.coffee', + 'atom/renderer/lib/web-view/web-view.coffee', + 'atom/renderer/lib/web-view/web-view-attributes.coffee', + 'atom/renderer/lib/web-view/web-view-constants.coffee', + 'atom/renderer/api/lib/ipc.coffee', + 'atom/renderer/api/lib/remote.coffee', + 'atom/renderer/api/lib/screen.coffee', + 'atom/renderer/api/lib/web-frame.coffee', + ], + 'coffee2c_sources': [ + 'atom/common/lib/asar.coffee', + 'atom/common/lib/asar_init.coffee', + ], + 'lib_sources': [ + 'atom/app/atom_content_client.cc', + 'atom/app/atom_content_client.h', + 'atom/app/atom_main_args.cc', + 'atom/app/atom_main_args.h', + 'atom/app/atom_main_delegate.cc', + 'atom/app/atom_main_delegate.h', + 'atom/app/atom_main_delegate_mac.mm', + 'atom/app/node_main.cc', + 'atom/app/node_main.h', + 'atom/browser/api/atom_api_app.cc', + 'atom/browser/api/atom_api_app.h', + 'atom/browser/api/atom_api_auto_updater.cc', + 'atom/browser/api/atom_api_auto_updater.h', + 'atom/browser/api/atom_api_content_tracing.cc', + 'atom/browser/api/atom_api_dialog.cc', + 'atom/browser/api/atom_api_global_shortcut.cc', + 'atom/browser/api/atom_api_global_shortcut.h', + 'atom/browser/api/atom_api_menu.cc', + 'atom/browser/api/atom_api_menu.h', + 'atom/browser/api/atom_api_menu_views.cc', + 'atom/browser/api/atom_api_menu_views.h', + 'atom/browser/api/atom_api_menu_mac.h', + 'atom/browser/api/atom_api_menu_mac.mm', + 'atom/browser/api/atom_api_power_monitor.cc', + 'atom/browser/api/atom_api_power_monitor.h', + 'atom/browser/api/atom_api_protocol.cc', + 'atom/browser/api/atom_api_protocol.h', + 'atom/browser/api/atom_api_screen.cc', + 'atom/browser/api/atom_api_screen.h', + 'atom/browser/api/atom_api_tray.cc', + 'atom/browser/api/atom_api_tray.h', + 'atom/browser/api/atom_api_web_contents.cc', + 'atom/browser/api/atom_api_web_contents.h', + 'atom/browser/api/atom_api_web_view_manager.cc', + 'atom/browser/api/atom_api_window.cc', + 'atom/browser/api/atom_api_window.h', + 'atom/browser/api/event.cc', + 'atom/browser/api/event.h', + 'atom/browser/api/event_emitter.cc', + 'atom/browser/api/event_emitter.h', + 'atom/browser/auto_updater.cc', + 'atom/browser/auto_updater.h', + 'atom/browser/auto_updater_delegate.h', + 'atom/browser/auto_updater_linux.cc', + 'atom/browser/auto_updater_mac.mm', + 'atom/browser/auto_updater_win.cc', + 'atom/browser/atom_access_token_store.cc', + 'atom/browser/atom_access_token_store.h', + 'atom/browser/atom_browser_client.cc', + 'atom/browser/atom_browser_client.h', + 'atom/browser/atom_browser_context.cc', + 'atom/browser/atom_browser_context.h', + 'atom/browser/atom_browser_main_parts.cc', + 'atom/browser/atom_browser_main_parts.h', + 'atom/browser/atom_browser_main_parts_linux.cc', + 'atom/browser/atom_browser_main_parts_mac.mm', + 'atom/browser/atom_javascript_dialog_manager.cc', + 'atom/browser/atom_javascript_dialog_manager.h', + 'atom/browser/atom_resource_dispatcher_host_delegate.cc', + 'atom/browser/atom_resource_dispatcher_host_delegate.h', + 'atom/browser/atom_speech_recognition_manager_delegate.cc', + 'atom/browser/atom_speech_recognition_manager_delegate.h', + 'atom/browser/browser.cc', + 'atom/browser/browser.h', + 'atom/browser/browser_linux.cc', + 'atom/browser/browser_mac.mm', + 'atom/browser/browser_win.cc', + 'atom/browser/browser_observer.h', + 'atom/browser/javascript_environment.cc', + 'atom/browser/javascript_environment.h', + 'atom/browser/mac/atom_application.h', + 'atom/browser/mac/atom_application.mm', + 'atom/browser/mac/atom_application_delegate.h', + 'atom/browser/mac/atom_application_delegate.mm', + 'atom/browser/native_window.cc', + 'atom/browser/native_window.h', + 'atom/browser/native_window_views.cc', + 'atom/browser/native_window_views.h', + 'atom/browser/native_window_mac.h', + 'atom/browser/native_window_mac.mm', + 'atom/browser/native_window_observer.h', + 'atom/browser/net/adapter_request_job.cc', + 'atom/browser/net/adapter_request_job.h', + 'atom/browser/net/asar/asar_protocol_handler.cc', + 'atom/browser/net/asar/asar_protocol_handler.h', + 'atom/browser/net/asar/url_request_asar_job.cc', + 'atom/browser/net/asar/url_request_asar_job.h', + 'atom/browser/net/atom_url_request_job_factory.cc', + 'atom/browser/net/atom_url_request_job_factory.h', + 'atom/browser/net/url_request_string_job.cc', + 'atom/browser/net/url_request_string_job.h', + 'atom/browser/net/url_request_buffer_job.cc', + 'atom/browser/net/url_request_buffer_job.h', + 'atom/browser/node_debugger.cc', + 'atom/browser/node_debugger.h', + 'atom/browser/ui/accelerator_util.cc', + 'atom/browser/ui/accelerator_util.h', + 'atom/browser/ui/accelerator_util_mac.mm', + 'atom/browser/ui/accelerator_util_views.cc', + 'atom/browser/ui/cocoa/atom_menu_controller.h', + 'atom/browser/ui/cocoa/atom_menu_controller.mm', + 'atom/browser/ui/cocoa/event_processing_window.h', + 'atom/browser/ui/cocoa/event_processing_window.mm', + 'atom/browser/ui/file_dialog.h', + 'atom/browser/ui/file_dialog_gtk.cc', + 'atom/browser/ui/file_dialog_mac.mm', + 'atom/browser/ui/file_dialog_win.cc', + 'atom/browser/ui/message_box.h', + 'atom/browser/ui/message_box_mac.mm', + 'atom/browser/ui/message_box_views.cc', + 'atom/browser/ui/tray_icon.cc', + 'atom/browser/ui/tray_icon.h', + 'atom/browser/ui/tray_icon_gtk.cc', + 'atom/browser/ui/tray_icon_gtk.h', + 'atom/browser/ui/tray_icon_cocoa.h', + 'atom/browser/ui/tray_icon_cocoa.mm', + 'atom/browser/ui/tray_icon_observer.h', + 'atom/browser/ui/tray_icon_win.cc', + 'atom/browser/ui/views/frameless_view.cc', + 'atom/browser/ui/views/frameless_view.h', + 'atom/browser/ui/views/global_menu_bar_x11.cc', + 'atom/browser/ui/views/global_menu_bar_x11.h', + 'atom/browser/ui/views/menu_bar.cc', + 'atom/browser/ui/views/menu_bar.h', + 'atom/browser/ui/views/menu_delegate.cc', + 'atom/browser/ui/views/menu_delegate.h', + 'atom/browser/ui/views/menu_layout.cc', + 'atom/browser/ui/views/menu_layout.h', + 'atom/browser/ui/views/submenu_button.cc', + 'atom/browser/ui/views/submenu_button.h', + 'atom/browser/ui/views/win_frame_view.cc', + 'atom/browser/ui/views/win_frame_view.h', + 'atom/browser/ui/win/notify_icon_host.cc', + 'atom/browser/ui/win/notify_icon_host.h', + 'atom/browser/ui/win/notify_icon.cc', + 'atom/browser/ui/win/notify_icon.h', + 'atom/browser/ui/x/window_state_watcher.cc', + 'atom/browser/ui/x/window_state_watcher.h', + 'atom/browser/ui/x/x_window_utils.cc', + 'atom/browser/ui/x/x_window_utils.h', + 'atom/browser/web_view_manager.cc', + 'atom/browser/web_view_manager.h', + 'atom/browser/web_dialog_helper.cc', + 'atom/browser/web_dialog_helper.h', + 'atom/browser/window_list.cc', + 'atom/browser/window_list.h', + 'atom/browser/window_list_observer.h', + 'atom/common/api/api_messages.h', + 'atom/common/api/atom_api_asar.cc', + 'atom/common/api/atom_api_clipboard.cc', + 'atom/common/api/atom_api_crash_reporter.cc', + 'atom/common/api/atom_api_id_weak_map.cc', + 'atom/common/api/atom_api_id_weak_map.h', + 'atom/common/api/atom_api_native_image.cc', + 'atom/common/api/atom_api_native_image.h', + 'atom/common/api/atom_api_native_image_mac.mm', + 'atom/common/api/atom_api_shell.cc', + 'atom/common/api/atom_api_v8_util.cc', + 'atom/common/api/atom_bindings.cc', + 'atom/common/api/atom_bindings.h', + 'atom/common/api/object_life_monitor.cc', + 'atom/common/api/object_life_monitor.h', + 'atom/common/asar/archive.cc', + 'atom/common/asar/archive.h', + 'atom/common/asar/asar_util.cc', + 'atom/common/asar/asar_util.h', + 'atom/common/asar/scoped_temporary_file.cc', + 'atom/common/asar/scoped_temporary_file.h', + 'atom/common/common_message_generator.cc', + 'atom/common/common_message_generator.h', + 'atom/common/crash_reporter/crash_reporter.cc', + 'atom/common/crash_reporter/crash_reporter.h', + 'atom/common/crash_reporter/crash_reporter_linux.cc', + 'atom/common/crash_reporter/crash_reporter_linux.h', + 'atom/common/crash_reporter/crash_reporter_mac.h', + 'atom/common/crash_reporter/crash_reporter_mac.mm', + 'atom/common/crash_reporter/crash_reporter_win.cc', + 'atom/common/crash_reporter/crash_reporter_win.h', + 'atom/common/crash_reporter/linux/crash_dump_handler.cc', + 'atom/common/crash_reporter/linux/crash_dump_handler.h', + 'atom/common/crash_reporter/win/crash_service.cc', + 'atom/common/crash_reporter/win/crash_service.h', + 'atom/common/crash_reporter/win/crash_service_main.cc', + 'atom/common/crash_reporter/win/crash_service_main.h', + 'atom/common/draggable_region.cc', + 'atom/common/draggable_region.h', + 'atom/common/google_api_key.h', + 'atom/common/linux/application_info.cc', + 'atom/common/native_mate_converters/accelerator_converter.cc', + 'atom/common/native_mate_converters/accelerator_converter.h', + 'atom/common/native_mate_converters/file_path_converter.h', + 'atom/common/native_mate_converters/gfx_converter.cc', + 'atom/common/native_mate_converters/gfx_converter.h', + 'atom/common/native_mate_converters/gurl_converter.h', + 'atom/common/native_mate_converters/image_converter.cc', + 'atom/common/native_mate_converters/image_converter.h', + 'atom/common/native_mate_converters/string16_converter.h', + 'atom/common/native_mate_converters/v8_value_converter.cc', + 'atom/common/native_mate_converters/v8_value_converter.h', + 'atom/common/native_mate_converters/value_converter.cc', + 'atom/common/native_mate_converters/value_converter.h', + 'atom/common/node_bindings.cc', + 'atom/common/node_bindings.h', + 'atom/common/node_bindings_linux.cc', + 'atom/common/node_bindings_linux.h', + 'atom/common/node_bindings_mac.cc', + 'atom/common/node_bindings_mac.h', + 'atom/common/node_bindings_win.cc', + 'atom/common/node_bindings_win.h', + 'atom/common/node_includes.h', + 'atom/common/options_switches.cc', + 'atom/common/options_switches.h', + 'atom/common/platform_util.h', + 'atom/common/platform_util_linux.cc', + 'atom/common/platform_util_mac.mm', + 'atom/common/platform_util_win.cc', + 'atom/renderer/api/atom_api_renderer_ipc.cc', + 'atom/renderer/api/atom_api_spell_check_client.cc', + 'atom/renderer/api/atom_api_spell_check_client.h', + 'atom/renderer/api/atom_api_web_frame.cc', + 'atom/renderer/api/atom_api_web_frame.h', + 'atom/renderer/atom_render_view_observer.cc', + 'atom/renderer/atom_render_view_observer.h', + 'atom/renderer/atom_renderer_client.cc', + 'atom/renderer/atom_renderer_client.h', + 'atom/renderer/guest_view_container.cc', + 'atom/renderer/guest_view_container.h', + 'chromium_src/chrome/browser/browser_process.cc', + 'chromium_src/chrome/browser/browser_process.h', + 'chromium_src/chrome/browser/chrome_notification_types.h', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener.cc', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener.h', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener_mac.mm', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener_mac.h', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener_x11.cc', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener_x11.h', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener_win.cc', + 'chromium_src/chrome/browser/extensions/global_shortcut_listener_win.h', + 'chromium_src/chrome/browser/printing/print_job.cc', + 'chromium_src/chrome/browser/printing/print_job.h', + 'chromium_src/chrome/browser/printing/print_job_manager.cc', + 'chromium_src/chrome/browser/printing/print_job_manager.h', + 'chromium_src/chrome/browser/printing/print_job_worker.cc', + 'chromium_src/chrome/browser/printing/print_job_worker.h', + 'chromium_src/chrome/browser/printing/print_job_worker_owner.cc', + 'chromium_src/chrome/browser/printing/print_job_worker_owner.h', + 'chromium_src/chrome/browser/printing/print_view_manager_base.cc', + 'chromium_src/chrome/browser/printing/print_view_manager_base.h', + 'chromium_src/chrome/browser/printing/print_view_manager_basic.cc', + 'chromium_src/chrome/browser/printing/print_view_manager_basic.h', + 'chromium_src/chrome/browser/printing/print_view_manager_observer.h', + 'chromium_src/chrome/browser/printing/printer_query.cc', + 'chromium_src/chrome/browser/printing/printer_query.h', + 'chromium_src/chrome/browser/printing/printing_message_filter.cc', + 'chromium_src/chrome/browser/printing/printing_message_filter.h', + 'chromium_src/chrome/browser/speech/tts_controller.h', + 'chromium_src/chrome/browser/speech/tts_controller_impl.cc', + 'chromium_src/chrome/browser/speech/tts_controller_impl.h', + 'chromium_src/chrome/browser/speech/tts_linux.cc', + 'chromium_src/chrome/browser/speech/tts_mac.mm', + 'chromium_src/chrome/browser/speech/tts_message_filter.cc', + 'chromium_src/chrome/browser/speech/tts_message_filter.h', + 'chromium_src/chrome/browser/speech/tts_platform.cc', + 'chromium_src/chrome/browser/speech/tts_platform.h', + 'chromium_src/chrome/browser/speech/tts_win.cc', + 'chromium_src/chrome/browser/ui/browser_dialogs.h', + 'chromium_src/chrome/browser/ui/cocoa/color_chooser_mac.mm', + 'chromium_src/chrome/browser/ui/views/color_chooser_aura.cc', + 'chromium_src/chrome/browser/ui/views/color_chooser_aura.h', + 'chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc', + 'chromium_src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.h', + 'chromium_src/chrome/common/print_messages.cc', + 'chromium_src/chrome/common/print_messages.h', + 'chromium_src/chrome/common/tts_messages.h', + 'chromium_src/chrome/common/tts_utterance_request.cc', + 'chromium_src/chrome/common/tts_utterance_request.h', + 'chromium_src/chrome/renderer/printing/print_web_view_helper.cc', + 'chromium_src/chrome/renderer/printing/print_web_view_helper_linux.cc', + 'chromium_src/chrome/renderer/printing/print_web_view_helper_mac.mm', + 'chromium_src/chrome/renderer/printing/print_web_view_helper_pdf_win.cc', + 'chromium_src/chrome/renderer/printing/print_web_view_helper.h', + 'chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.cc', + 'chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.h', + 'chromium_src/chrome/renderer/tts_dispatcher.cc', + 'chromium_src/chrome/renderer/tts_dispatcher.h', + 'chromium_src/library_loaders/libspeechd_loader.cc', + 'chromium_src/library_loaders/libspeechd.h', + '<@(native_mate_files)', + '<(SHARED_INTERMEDIATE_DIR)/atom_natives.h', + ], + 'lib_sources_win': [ + 'chromium_src/chrome/browser/ui/views/color_chooser_dialog.cc', + 'chromium_src/chrome/browser/ui/views/color_chooser_dialog.h', + 'chromium_src/chrome/browser/ui/views/color_chooser_win.cc', + ], + 'framework_sources': [ + 'atom/app/atom_library_main.h', + 'atom/app/atom_library_main.mm', + ], + 'locales': [ + 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', + 'en-US', 'es-419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he', + 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv', + 'ml', 'mr', 'ms', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru', + 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk', + 'vi', 'zh-CN', 'zh-TW', + ], + 'atom_source_root': ' (.+) \(.*\)$') @@ -159,30 +147,10 @@ def create_version(): version_file.write(ATOM_SHELL_VERSION) -def download_libchromiumcontent_symbols(url): - brightray_dir = os.path.join(SOURCE_ROOT, 'vendor', 'brightray', 'vendor') - target_dir = os.path.join(brightray_dir, 'download', 'libchromiumcontent') - symbols_path = os.path.join(target_dir, 'Release', SYMBOL_NAME) - if os.path.exists(symbols_path): - return - - download = os.path.join(brightray_dir, 'libchromiumcontent', 'script', - 'download') - subprocess.check_call([sys.executable, download, '-f', '-s', '-c', - LIBCHROMIUMCONTENT_COMMIT, url, target_dir]) - - def create_symbols(): - directory = 'Atom-Shell.breakpad.syms' - rm_rf(os.path.join(OUT_DIR, directory)) - - build = os.path.join(SOURCE_ROOT, 'script', 'build.py') - subprocess.check_output([sys.executable, build, '-c', 'Release', - '-t', 'atom_dump_symbols']) - - shutil.copytree(os.path.join(OUT_DIR, directory), - os.path.join(DIST_DIR, directory), - symlinks=True) + destination = os.path.join(DIST_DIR, 'Atom-Shell.breakpad.syms') + dump_symbols = os.path.join(SOURCE_ROOT, 'script', 'dump-symbols.py') + execute([sys.executable, dump_symbols, destination]) def create_dist_zip(): diff --git a/script/dump-symbols.py b/script/dump-symbols.py new file mode 100755 index 000000000000..10471517b698 --- /dev/null +++ b/script/dump-symbols.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +import os +import sys + +from lib.config import TARGET_PLATFORM +from lib.util import execute, rm_rf + + +SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) +DIST_DIR = os.path.join(SOURCE_ROOT, 'dist') +OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'R') +CHROMIUM_DIR = os.path.join(SOURCE_ROOT, 'vendor', 'brightray', 'vendor', + 'download', 'libchromiumcontent', 'static_library') + + +def main(destination): + if TARGET_PLATFORM == 'win32': + register_required_dll() + + rm_rf(destination) + (project_name, product_name) = get_names_from_gyp() + + if TARGET_PLATFORM in ['darwin', 'linux']: + # Generate the dump_syms tool. + build = os.path.join(SOURCE_ROOT, 'script', 'build.py') + execute([sys.executable, build, '-c', 'R', '-t', 'dump_syms']) + + generate_breakpad_symbols = os.path.join(SOURCE_ROOT, 'tools', 'posix', + 'generate_breakpad_symbols.py') + if TARGET_PLATFORM == 'darwin': + start = os.path.join(OUT_DIR, '{0}.app'.format(product_name), 'Contents', + 'MacOS', product_name) + else: + start = os.path.join(OUT_DIR, project_name) + args = [ + '--build-dir={0}'.format(OUT_DIR), + '--binary={0}'.format(start), + '--symbols-dir={0}'.format(destination), + '--libchromiumcontent-dir={0}'.format(CHROMIUM_DIR), + '--clear', + '--jobs=16', + ] + else: + generate_breakpad_symbols = os.path.join(SOURCE_ROOT, 'tools', 'win', + 'generate_breakpad_symbols.py') + args = [ + '--symbols-dir={0}'.format(destination), + '--jobs=16', + os.path.relpath(OUT_DIR), + ] + + execute([sys.executable, generate_breakpad_symbols] + args) + + +def register_required_dll(): + register = os.path.join(SOURCE_ROOT, 'tools', 'win', + 'register_msdia80_dll.js') + execute(['node.exe', os.path.relpath(register)]); + + +def get_names_from_gyp(): + gyp = os.path.join(SOURCE_ROOT, 'atom.gyp') + with open(gyp) as f: + o = eval(f.read()); + return (o['variables']['project_name%'], o['variables']['product_name%']) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1])) diff --git a/script/lib/config.py b/script/lib/config.py index b39b22eee29c..388ca02fffa9 100644 --- a/script/lib/config.py +++ b/script/lib/config.py @@ -4,7 +4,7 @@ import platform import sys BASE_URL = 'http://gh-contractor-zcbenz.s3.amazonaws.com/libchromiumcontent' -LIBCHROMIUMCONTENT_COMMIT = 'c01b10faf0d478e48f537210ec263fabd551578d' +LIBCHROMIUMCONTENT_COMMIT = 'f1ad1412461ba3345a27cfe935ffc872dba0ac5b' ARCH = { 'cygwin': '32bit', diff --git a/script/lib/util.py b/script/lib/util.py index 1c4f26b76ad5..698da95080a4 100644 --- a/script/lib/util.py +++ b/script/lib/util.py @@ -160,9 +160,9 @@ def get_atom_shell_version(): def get_chromedriver_version(): SOURCE_ROOT = os.path.abspath(os.path.join(__file__, '..', '..', '..')) - chromedriver = os.path.join(SOURCE_ROOT, 'out', 'Release', 'chromedriver') + chromedriver = os.path.join(SOURCE_ROOT, 'dist', 'chromedriver') output = subprocess.check_output([chromedriver, '-v']).strip() - return 'v' + output[13:] + return 'v' + output[13:output.rfind(' ')] def parse_version(version): diff --git a/script/test.py b/script/test.py index c21e52ab548c..712c94128b59 100755 --- a/script/test.py +++ b/script/test.py @@ -11,13 +11,17 @@ SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) def main(): os.chdir(SOURCE_ROOT) + config = 'D' + if len(sys.argv) == 2 and sys.argv[1] == '-R': + config = 'R' + if sys.platform == 'darwin': - atom_shell = os.path.join(SOURCE_ROOT, 'out', 'Debug', 'Atom.app', + atom_shell = os.path.join(SOURCE_ROOT, 'out', config, 'Atom.app', 'Contents', 'MacOS', 'Atom') elif sys.platform == 'win32': - atom_shell = os.path.join(SOURCE_ROOT, 'out', 'Debug', 'atom.exe') + atom_shell = os.path.join(SOURCE_ROOT, 'out', config, 'atom.exe') else: - atom_shell = os.path.join(SOURCE_ROOT, 'out', 'Debug', 'atom') + atom_shell = os.path.join(SOURCE_ROOT, 'out', config, 'atom') subprocess.check_call([atom_shell, 'spec'] + sys.argv[1:]) diff --git a/script/update-external-binaries.py b/script/update-external-binaries.py index ad4dc55fcd9d..c497923e491f 100755 --- a/script/update-external-binaries.py +++ b/script/update-external-binaries.py @@ -29,7 +29,6 @@ def main(): download_and_unzip('Squirrel') elif sys.platform in ['cygwin', 'win32']: download_and_unzip('directxsdk') - download_and_unzip('vs2012_crt') with open(version_file, 'w') as f: f.write(VERSION) diff --git a/script/update.py b/script/update.py index 2fe52e7f3a61..ba3380d67c3e 100755 --- a/script/update.py +++ b/script/update.py @@ -14,7 +14,7 @@ def main(): os.chdir(SOURCE_ROOT) update_external_binaries() - update_gyp() + return update_gyp() def update_external_binaries(): @@ -23,28 +23,37 @@ def update_external_binaries(): def update_gyp(): - gyp = os.path.join('vendor', 'brightray', 'vendor', 'gyp', 'gyp_main.py') - python = sys.executable - arch = DIST_ARCH + target_arch = DIST_ARCH if sys.platform == 'darwin': # Only have 64bit build on OS X. - arch = 'x64' + target_arch = 'x64' elif sys.platform in ['cygwin', 'win32']: # Only have 32bit build on Windows. - arch = 'ia32' - if sys.platform == 'cygwin': - # Force using win32 python on cygwin. - python = os.path.join('vendor', 'python_26', 'python.exe') + target_arch = 'ia32' - ret = subprocess.call([python, gyp, - '-f', 'ninja', '--depth', '.', 'atom.gyp', - '-Icommon.gypi', - '-Dlinux_clang=0', # Disable brightray's clang setting - '-Dtarget_arch={0}'.format(arch), - '-Dlibrary=static_library']) - if ret != 0: - sys.exit(ret) + # Since gyp doesn't support specify link_settings for each configuration, + # we are not able to link to different libraries in "Debug" and "Release" + # configurations. + # In order to work around this, we decided to generate the configuration + # for twice, one is to generate "Debug" config, the other one to generate + # the "Release" config. And the settings are controlled by the variable + # "libchromiumcontent_component" which is defined before running gyp. + return (run_gyp(target_arch, 0) or run_gyp(target_arch, 1)) +def run_gyp(target_arch, component): + python = sys.executable + if sys.platform == 'cygwin': + # Force using win32 python on cygwin. + python = os.path.join('vendor', 'python_26', 'python.exe') + gyp = os.path.join('vendor', 'brightray', 'vendor', 'gyp', 'gyp_main.py') + defines = [ + '-Dlibchromiumcontent_component={0}'.format(component), + '-Dtarget_arch={0}'.format(target_arch), + '-Dlibrary=static_library', + ] + return subprocess.call([python, gyp, '-f', 'ninja', '--depth', '.', + 'atom.gyp', '-Icommon.gypi'] + defines) + if __name__ == '__main__': sys.exit(main()) diff --git a/script/upload-node-headers.py b/script/upload-node-headers.py index 6734929c10e7..7add94b33429 100755 --- a/script/upload-node-headers.py +++ b/script/upload-node-headers.py @@ -14,7 +14,7 @@ from lib.util import execute, safe_mkdir, scoped_cwd, s3_config, s3put SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) DIST_DIR = os.path.join(SOURCE_ROOT, 'dist') NODE_DIR = os.path.join(SOURCE_ROOT, 'vendor', 'node') -OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'Release') +OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'R') HEADERS_SUFFIX = [ '.h', @@ -110,12 +110,12 @@ def upload_node(bucket, access_key, secret_key, version): 'atom-shell/dist/{0}'.format(version), glob.glob('node-*.tar.gz')) if TARGET_PLATFORM == 'win32': - # Generate the node.lib. - build = os.path.join(SOURCE_ROOT, 'script', 'build.py') - execute([sys.executable, build, '-c', 'Release', '-t', 'generate_node_lib']) + # Copy atom.lib to node.lib + node_lib = os.path.join(OUT_DIR, 'node.lib') + atom_lib = os.path.join(OUT_DIR, 'node.dll.lib') + shutil.copy2(atom_lib, node_lib) # Upload the 32bit node.lib. - node_lib = os.path.join(OUT_DIR, 'node.lib') s3put(bucket, access_key, secret_key, OUT_DIR, 'atom-shell/dist/{0}'.format(version), [node_lib]) diff --git a/script/upload-windows-pdb.py b/script/upload-windows-pdb.py index e03e2bcfac7c..c9a5f279c31b 100755 --- a/script/upload-windows-pdb.py +++ b/script/upload-windows-pdb.py @@ -10,8 +10,7 @@ SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) SYMBOLS_DIR = 'dist\\symbols' DOWNLOAD_DIR = 'vendor\\brightray\\vendor\\download\\libchromiumcontent' PDB_LIST = [ - 'out\\Release\\atom.exe.pdb', - DOWNLOAD_DIR + '\\Release\\chromiumcontent.dll.pdb', + 'out\\R\\atom.exe.pdb', ] diff --git a/script/upload.py b/script/upload.py index e066d89423d2..677247a2e6e7 100755 --- a/script/upload.py +++ b/script/upload.py @@ -18,7 +18,7 @@ ATOM_SHELL_VERSION = get_atom_shell_version() CHROMEDRIVER_VERSION = get_chromedriver_version() SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) -OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'Release') +OUT_DIR = os.path.join(SOURCE_ROOT, 'out', 'R') DIST_DIR = os.path.join(SOURCE_ROOT, 'dist') DIST_NAME = 'atom-shell-{0}-{1}-{2}.zip'.format(ATOM_SHELL_VERSION, TARGET_PLATFORM, @@ -84,12 +84,12 @@ def parse_args(): def get_atom_shell_build_version(): if TARGET_PLATFORM == 'darwin': - atom_shell = os.path.join(SOURCE_ROOT, 'out', 'Release', 'Atom.app', + atom_shell = os.path.join(SOURCE_ROOT, 'out', 'R', 'Atom.app', 'Contents', 'MacOS', 'Atom') elif TARGET_PLATFORM == 'win32': - atom_shell = os.path.join(SOURCE_ROOT, 'out', 'Release', 'atom.exe') + atom_shell = os.path.join(SOURCE_ROOT, 'out', 'R', 'atom.exe') else: - atom_shell = os.path.join(SOURCE_ROOT, 'out', 'Release', 'atom') + atom_shell = os.path.join(SOURCE_ROOT, 'out', 'R', 'atom') return subprocess.check_output([atom_shell, '--version']).strip() diff --git a/tools/copy_binary.py b/tools/copy_binary.py deleted file mode 100755 index a21b652a439b..000000000000 --- a/tools/copy_binary.py +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env python - -import os -import shutil -import stat -import sys - -src = sys.argv[1] -dist = sys.argv[2] - -shutil.copyfile(src, dist) -os.chmod(dist, os.stat(dist).st_mode | stat.S_IEXEC) diff --git a/tools/posix/generate_breakpad_symbols.py b/tools/posix/generate_breakpad_symbols.py index 6b6c75158604..d3f98d4d794f 100755 --- a/tools/posix/generate_breakpad_symbols.py +++ b/tools/posix/generate_breakpad_symbols.py @@ -61,8 +61,10 @@ def FindBundlePart(full_path): def GetDSYMBundle(options, binary_path): """Finds the .dSYM bundle to the binary.""" - if binary_path[0] == '/' or binary_path == '': - return binary_path + if os.path.isabs(binary_path): + dsym_path = binary_path + '.dSYM' + if os.path.exists(dsym_path): + return dsym_path filename = FindBundlePart(binary_path) search_dirs = [options.build_dir, options.libchromiumcontent_dir] diff --git a/tools/win/generate_breakpad_symbols.py b/tools/win/generate_breakpad_symbols.py old mode 100644 new mode 100755 index f69c30c712a1..a294d8c5e583 --- a/tools/win/generate_breakpad_symbols.py +++ b/tools/win/generate_breakpad_symbols.py @@ -47,11 +47,6 @@ def mkdir_p(path): else: raise -def RegisterRequiredDll(): - register = os.path.join(os.path.dirname(__file__), 'register_msdia80_dll.js') - subprocess.check_call(['node.exe', register]); - - def GenerateSymbols(options, binaries): """Dumps the symbols of binary and places them in the given directory.""" @@ -124,7 +119,6 @@ def main(): pdbs += glob.glob(os.path.join(directory, '*.exe.pdb')) pdbs += glob.glob(os.path.join(directory, '*.dll.pdb')) - RegisterRequiredDll(); GenerateSymbols(options, pdbs) return 0 diff --git a/vendor/brightray b/vendor/brightray index f71216bd7301..f2b33daa4ea5 160000 --- a/vendor/brightray +++ b/vendor/brightray @@ -1 +1 @@ -Subproject commit f71216bd73014199df70425a01dd269ba2dd0c6c +Subproject commit f2b33daa4ea5a1e1ba0a5b18a3f0470d99b6f962 diff --git a/vendor/node b/vendor/node index 790c4a3af361..da4d745446fc 160000 --- a/vendor/node +++ b/vendor/node @@ -1 +1 @@ -Subproject commit 790c4a3af36144fcdd5fe39d0cb6cd622f282434 +Subproject commit da4d745446fcc63bfc205477703533712dd01e2c