From e98c1c41a8ee1ff71156a4c46ddf79abd89930db Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Tue, 9 Apr 2013 21:37:44 +0000 Subject: [PATCH] - Windows: Fix ninja build (issue #922). - Update make_distrib.py to support ninja builds via a new "ninja-build" flag (issue #922). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1193 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- cef.gyp | 43 ++++----------------- tools/make_distrib.py | 89 ++++++++++++++++++++++++++++++------------- 2 files changed, 69 insertions(+), 63 deletions(-) diff --git a/cef.gyp b/cef.gyp index 45ee04392..db9f4c3d6 100644 --- a/cef.gyp +++ b/cef.gyp @@ -422,34 +422,6 @@ 'type': 'shared_library', 'msvs_guid': 'C13650D5-CF1A-4259-BE45-B1EBA6280E47', 'dependencies': [ - '<(DEPTH)/content/content.gyp:content_app', - '<(DEPTH)/content/content.gyp:content_browser', - '<(DEPTH)/content/content.gyp:content_common', - '<(DEPTH)/content/content.gyp:content_gpu', - '<(DEPTH)/content/content.gyp:content_plugin', - '<(DEPTH)/content/content.gyp:content_ppapi_plugin', - '<(DEPTH)/content/content.gyp:content_renderer', - '<(DEPTH)/content/content.gyp:content_utility', - '<(DEPTH)/content/content.gyp:content_worker', - '<(DEPTH)/content/content_resources.gyp:content_resources', - '<(DEPTH)/base/base.gyp:base', - '<(DEPTH)/base/base.gyp:base_prefs', - '<(DEPTH)/base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', - '<(DEPTH)/build/temp_gyp/googleurl.gyp:googleurl', - '<(DEPTH)/ipc/ipc.gyp:ipc', - '<(DEPTH)/media/media.gyp:media', - '<(DEPTH)/net/net.gyp:net', - '<(DEPTH)/net/net.gyp:net_with_v8', - '<(DEPTH)/skia/skia.gyp:skia', - '<(DEPTH)/third_party/libxml/libxml.gyp:libxml', - '<(DEPTH)/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp:webcore', - '<(DEPTH)/third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', - '<(DEPTH)/third_party/zlib/zlib.gyp:minizip', - '<(DEPTH)/ui/gl/gl.gyp:gl', - '<(DEPTH)/ui/ui.gyp:ui', - '<(DEPTH)/v8/tools/gyp/v8.gyp:v8', - '<(DEPTH)/webkit/support/webkit_support.gyp:glue', - '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_storage', 'libcef_static', ], 'defines': [ @@ -458,12 +430,6 @@ 'include_dirs': [ '.', ], - # Avoid "RC1102: internal error : too many arguments to RCPP" error by - # explicitly specifying a short list of resource include directories. - 'resource_include_dirs' : [ - '.', - '..', - ], 'sources': [ '<@(includes_common)', '<@(includes_capi)', @@ -487,6 +453,11 @@ '<(DEPTH)/base/allocator/allocator.gyp:allocator', ], }], + ['toolkit_uses_gtk == 1', { + 'dependencies': [ + '<(DEPTH)/build/linux/system.gyp:gtk', + ], + }], ['OS=="win"', { 'configurations': { 'Debug_Base': { @@ -501,8 +472,8 @@ '<@(includes_win)', # TODO(cef): Remove ui_unscaled_resources.rc once custom cursor # resources can be loaded via ResourceBundle. See crbug.com/147663. - '$(OutDir)/obj/global_intermediate/webkit/webkit_resources.rc', - '$(OutDir)/obj/global_intermediate/ui/ui_resources/ui_unscaled_resources.rc', + '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_resources.rc', + '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_unscaled_resources.rc', 'libcef_dll/libcef_dll.rc', ], 'link_settings': { diff --git a/tools/make_distrib.py b/tools/make_distrib.py index 89e03b386..611e70e43 100644 --- a/tools/make_distrib.py +++ b/tools/make_distrib.py @@ -101,6 +101,7 @@ def transfer_files(cef_dir, script_dir, transfer_cfg, output_dir, quiet): def generate_msvs_projects(version): """ Generate MSVS projects for the specified version. """ sys.stdout.write('Generating '+version+' project files...') + os.environ['GYP_GENERATORS'] = 'msvs' os.environ['GYP_MSVS_VERSION'] = version gyper = [ 'python', 'tools/gyp_cef', os.path.relpath(os.path.join(output_dir, 'cefclient.gyp'), cef_dir) ] RunAction(cef_dir, gyper); @@ -165,6 +166,9 @@ parser.add_option('--allow-partial', parser.add_option('--no-symbols', action='store_true', dest='nosymbols', default=False, help='do not create symbol files') +parser.add_option('--ninja-build', + action='store_true', dest='ninjabuild', default=False, + help='build was created using ninja') parser.add_option('-q', '--quiet', action='store_true', dest='quiet', default=False, help='do not output detailed status information') @@ -296,9 +300,16 @@ if platform == 'windows': transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_win'], \ 'tests/cefclient/', cefclient_dir, options.quiet) + if options.ninjabuild: + out_dir = os.path.join(src_dir, 'out') + libcef_dll_file = 'libcef.dll.lib' + else: + out_dir = os.path.join(src_dir, 'build') + libcef_dll_file = 'lib/libcef.lib' + # transfer build/Debug files - build_dir = os.path.join(src_dir, 'build/Debug'); - if not options.allowpartial or path_exists(build_dir): + build_dir = os.path.join(out_dir, 'Debug'); + if not options.allowpartial or path_exists(os.path.join(build_dir, 'cefclient.exe')): dst_dir = os.path.join(output_dir, 'Debug') make_dir(dst_dir, options.quiet) copy_files(os.path.join(script_dir, 'distrib/win/*.dll'), dst_dir, options.quiet) @@ -312,13 +323,14 @@ if platform == 'windows': # transfer lib/Debug files dst_dir = os.path.join(output_dir, 'lib/Debug') make_dir(dst_dir, options.quiet) - copy_file(os.path.join(build_dir, 'lib/libcef.lib'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, libcef_dll_file), os.path.join(dst_dir, 'libcef.lib'), \ + options.quiet) else: sys.stderr.write("No Debug build files.\n") # transfer build/Release files - build_dir = os.path.join(src_dir, 'build/Release'); - if not options.allowpartial or path_exists(build_dir): + build_dir = os.path.join(out_dir, 'Release'); + if not options.allowpartial or path_exists(os.path.join(build_dir, 'cefclient.exe')): dst_dir = os.path.join(output_dir, 'Release') make_dir(dst_dir, options.quiet) copy_files(os.path.join(script_dir, 'distrib/win/*.dll'), dst_dir, options.quiet) @@ -332,7 +344,8 @@ if platform == 'windows': # transfer lib/Release files dst_dir = os.path.join(output_dir, 'lib/Release') make_dir(dst_dir, options.quiet) - copy_file(os.path.join(build_dir, 'lib/libcef.lib'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, libcef_dll_file), os.path.join(dst_dir, 'libcef.lib'), \ + options.quiet) if not options.nosymbols: # transfer symbols @@ -378,20 +391,27 @@ elif platform == 'macosx': copy_dir(os.path.join(cef_dir, 'tests/cefclient/mac/'), os.path.join(output_dir, 'cefclient/mac/'), \ options.quiet) + if options.ninjabuild: + out_dir = os.path.join(src_dir, 'out') + else: + out_dir = os.path.join(src_dir, 'xcodebuild') + + valid_build_dir = None + # transfer xcodebuild/Debug files - build_dir = os.path.join(src_dir, 'xcodebuild/Debug') - if not options.allowpartial or path_exists(build_dir): + build_dir = os.path.join(out_dir, 'Debug') + if not options.allowpartial or path_exists(os.path.join(build_dir, 'cefclient.app')): + valid_build_dir = build_dir dst_dir = os.path.join(output_dir, 'Debug') make_dir(dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'ffmpegsumo.so'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'libcef.dylib'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'libplugin_carbon_interpose.dylib'), dst_dir, options.quiet) - else: - build_dir = None # transfer xcodebuild/Release files - build_dir = os.path.join(src_dir, 'xcodebuild/Release') - if not options.allowpartial or path_exists(build_dir): + build_dir = os.path.join(out_dir, 'Release') + if not options.allowpartial or path_exists(os.path.join(build_dir, 'cefclient.app')): + valid_build_dir = build_dir dst_dir = os.path.join(output_dir, 'Release') make_dir(dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'ffmpegsumo.so'), dst_dir, options.quiet) @@ -404,11 +424,10 @@ elif platform == 'macosx': src_path = os.path.join(build_dir, 'libcef.dylib.dSYM/Contents/Resources/DWARF/libcef.dylib') dst_path = os.path.join(symbol_dir, 'libcef.dylib.dSYM') run('dsymutil '+src_path+' -o '+dst_path, cef_dir) - else: - build_dir = None - if not build_dir is None: + if not valid_build_dir is None: # transfer resource files + build_dir = valid_build_dir dst_dir = os.path.join(output_dir, 'Resources') make_dir(dst_dir, options.quiet) copy_files(os.path.join(build_dir, 'cefclient.app/Contents/Frameworks/Chromium Embedded Framework.framework/Resources/*.*'), \ @@ -420,6 +439,7 @@ elif platform == 'macosx': # Generate Xcode project files sys.stdout.write('Generating Xcode project files...') + os.environ['GYP_GENERATORS'] = 'xcode' gyper = [ 'python', 'tools/gyp_cef', os.path.relpath(os.path.join(output_dir, 'cefclient.gyp'), cef_dir) ] RunAction(cef_dir, gyper); @@ -436,26 +456,37 @@ elif platform == 'linux': create_readme(os.path.join(script_dir, 'distrib/linux/README.txt'), output_dir, cef_url, \ cef_rev, cef_ver, chromium_url, chromium_rev, chromium_ver, date) + out_dir = os.path.join(src_dir, 'out') + if options.ninjabuild: + lib_dir_name = 'lib' + else: + lib_dir_name = 'lib.target' + + valid_build_dir = None + # transfer out/Debug files - build_dir = os.path.join(src_dir, 'out/Debug'); - if not options.allowpartial or path_exists(build_dir): + build_dir = os.path.join(out_dir, 'Debug'); + if not options.allowpartial or path_exists(os.path.join(build_dir, 'cefclient')): + valid_build_dir = build_dir dst_dir = os.path.join(output_dir, 'Debug') make_dir(dst_dir, options.quiet) - copy_file(os.path.join(build_dir, 'lib.target/libcef.so'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, lib_dir_name, 'libcef.so'), dst_dir, options.quiet) else: sys.stderr.write("No Debug build files.\n") # transfer out/Release files - build_dir = os.path.join(src_dir, 'out/Release'); - if not options.allowpartial or path_exists(build_dir): + build_dir = os.path.join(out_dir, 'Release'); + if not options.allowpartial or path_exists(os.path.join(build_dir, 'cefclient')): + valid_build_dir = build_dir dst_dir = os.path.join(output_dir, 'Release') make_dir(dst_dir, options.quiet) - copy_file(os.path.join(build_dir, 'lib.target/libcef.so'), dst_dir, options.quiet) + copy_file(os.path.join(build_dir, lib_dir_name, 'libcef.so'), dst_dir, options.quiet) else: sys.stderr.write("No Release build files.\n") - if not build_dir is None: + if not valid_build_dir is None: # transfer resource files + build_dir = valid_build_dir dst_dir = os.path.join(output_dir, 'Resources') make_dir(dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'cef.pak'), dst_dir, options.quiet) @@ -477,22 +508,26 @@ elif platform == 'linux': transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib/linux/transfer.cfg'), \ output_dir, options.quiet) - # Back up the existing Makefile makefile = os.path.join(src_dir, 'Makefile') - makefile_tmp = makefile + '.cef_bak' - copy_file(makefile, makefile_tmp, options.quiet) + makefile_tmp = '' + if path_exists(makefile): + # Back up the existing Makefile + makefile_tmp = makefile + '.cef_bak' + copy_file(makefile, makefile_tmp, options.quiet) # Generate make project files sys.stdout.write('Generating make project files...') + os.environ['GYP_GENERATORS'] = 'make' gyper = [ 'python', 'tools/gyp_cef', os.path.relpath(os.path.join(output_dir, 'cefclient.gyp'), cef_dir) ] RunAction(cef_dir, gyper); # Copy the resulting Makefile to the destination directory copy_file(makefile, output_dir, options.quiet) - # Restore the original Makefile remove_file(makefile, options.quiet) - move_file(makefile_tmp, makefile, options.quiet) + if makefile_tmp != '': + # Restore the original Makefile + move_file(makefile_tmp, makefile, options.quiet) # Post-process the make files fix_make_projects()