diff --git a/build/common.gypi b/build/common.gypi new file mode 100644 index 0000000000..8ab8f7cb86 --- /dev/null +++ b/build/common.gypi @@ -0,0 +1,74 @@ +# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +# This file contains common settings for building WebRTC components. + +{ + 'variables': { + # TODO(ajm): use webrtc_standalone to match NaCl? + 'build_with_chromium%': 1, # 1 to build webrtc with chromium + + # Selects fixed-point code where possible. + # TODO(ajm): we'd like to set this based on the target OS/architecture. + 'prefer_fixed_point%': 0, + + 'conditions': [ + ['OS=="win"', { + # TODO(ajm, perkj): does this need to be here? + # Path needed to build Direct Show base classes on Windows. + # The code is included in the Windows SDK. + 'direct_show_base_classes': + 'C:/Program Files/Microsoft SDKs/Windows/v7.1/Samples/multimedia/directshow/baseclasses/', + }], + ], # conditions + }, + 'target_defaults': { + 'include_dirs': [ + '..', # common_types.h, typedefs.h + ], + 'conditions': [ + ['OS=="linux"', { + 'defines': [ + 'WEBRTC_TARGET_PC', + 'WEBRTC_LINUX', + 'WEBRTC_THREAD_RR', + # TODO(ajm): can we select this automatically? + # Define this if the Linux system does not support CLOCK_MONOTONIC. + #'WEBRTC_CLOCK_TYPE_REALTIME', + ], + }], + ['OS=="mac"', { + # TODO(ajm): what about PowerPC? + # Setup for Intel + 'defines': [ + 'WEBRTC_TARGET_MAC_INTEL', + 'WEBRTC_MAC_INTEL', + 'WEBRTC_MAC', + 'WEBRTC_THREAD_RR', + 'WEBRTC_CLOCK_TYPE_REALTIME', + ], + }], + ['OS=="win"', { + 'defines': [ + 'WEBRTC_TARGET_PC', + ], + }], + ['build_with_chromium==1', { + 'defines': [ + 'WEBRTC_VIDEO_EXTERNAL_CAPTURE_AND_RENDER', + ], + }], + ], # conditions + }, # target_defaults +} + +# Local Variables: +# tab-width:2 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/build/common_standalone.gypi b/build/common_standalone.gypi new file mode 100644 index 0000000000..55d4371e33 --- /dev/null +++ b/build/common_standalone.gypi @@ -0,0 +1,97 @@ +# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +# This is included when gyp_webrtc is run, and provides the settings +# necessary for a standalone WebRTC build. + +{ + 'variables': { + # .gyp files or targets should set webrtc_code to 1 if they build + # WebRTC-specific code, as opposed to external code. This variable is + # used to control such things as the set of warnings to enable, and + # whether warnings are treated as errors. + 'webrtc_code%': 0, + + 'variables': { + # Compute the architecture that we're building on. + 'conditions': [ + ['OS=="win" or OS=="mac"', { + 'host_arch%': 'ia32', + }, { + # This handles the Unix platforms for which there is some support. + # Anything else gets passed through, which probably won't work very + # well; such hosts should pass an explicit target_arch to gyp. + 'host_arch%': + ' 2: + specified_includes.add(os.path.realpath(arg[2:])) + + result = [] + def AddInclude(path): + if os.path.realpath(path) not in specified_includes: + result.append(path) + + # Always include common.gypi & features_override.gypi + AddInclude(os.path.join(script_dir, 'common_standalone.gypi')) + #AddInclude(os.path.join(script_dir, 'features_override.gypi')) + + # Optionally add supplemental .gypi files if present. + supplements = glob.glob(os.path.join(webrtc_src, '*', 'supplement.gypi')) + for supplement in supplements: + AddInclude(supplement) + + return result + +if __name__ == '__main__': + args = sys.argv[1:] + + # This could give false positives since it doesn't actually do real option + # parsing. Oh well. + gyp_file_specified = False + for arg in args: + if arg.endswith('.gyp'): + gyp_file_specified = True + break + + # If we didn't get a file, check an env var, and then fall back to + # assuming 'all.gyp' from the same directory as the script. + if not gyp_file_specified: + gyp_file = os.environ.get('WEBRTC_GYP_FILE') + if gyp_file: + # Note that CHROMIUM_GYP_FILE values can't have backslashes as + # path separators even on Windows due to the use of shlex.split(). + args.extend(shlex.split(gyp_file)) + else: + # TODO(ajm): move webrtc.gyp to script_dir? + args.append(os.path.join(webrtc_src, 'webrtc.gyp')) + + args.extend(['-I' + i for i in additional_include_files(args)]) + + # Pick depth explicitly. + args += ['--depth', '.'] + + #Building WebRTC as standalone (not as part of Chrome) + #args += ['-D', 'webrtc_standalone=1'] + args += ['-D', 'build_with_chromium=0'] + + print 'Updating projects from gyp files...' + sys.stdout.flush() + + # Off we go... + sys.exit(gyp.main(args)) diff --git a/common_settings.gypi b/common_settings.gypi index dd1c8f0c88..8d6428877a 100644 --- a/common_settings.gypi +++ b/common_settings.gypi @@ -6,67 +6,12 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. -# This file contains common settings for building WebRTC components. +# Placeholder until all gyp files point to build/common.gypi instead. { - 'variables': { - 'build_with_chromium%': 0, # 1 to build webrtc with chromium - 'inside_chromium_build%': 0, - - # Selects fixed-point code where possible. - # TODO(ajm): we'd like to set this based on the target OS/architecture. - 'prefer_fixed_point%': 0, - - 'conditions': [ - ['inside_chromium_build==1', { - 'build_with_chromium': 1, - }], - ['OS=="win"', { - # Path needed to build Direct Show base classes on Windows. The code is included in Windows SDK. - 'direct_show_base_classes':'C:/Program Files/Microsoft SDKs/Windows/v7.1/Samples/multimedia/directshow/baseclasses/', - }], - ], # conditions - }, - 'target_defaults': { - 'include_dirs': [ - '.', # For common_typs.h and typedefs.h - ], - 'conditions': [ - ['OS=="linux"', { - 'defines': [ - 'WEBRTC_TARGET_PC', - 'WEBRTC_LINUX', - 'WEBRTC_THREAD_RR', - # INTEL_OPT is for iLBC floating point code optimized for Intel processors - # supporting SSE3. The compiler will be automatically switched to Intel - # compiler icc in the iLBC folder for iLBC floating point library build. - #'INTEL_OPT', - # Define WEBRTC_CLOCK_TYPE_REALTIME if the Linux system does not support CLOCK_MONOTONIC - #'WEBRTC_CLOCK_TYPE_REALTIME', - ], - }], - ['OS=="mac"', { - # Setup for Intel - 'defines': [ - 'WEBRTC_TARGET_MAC_INTEL', - 'WEBRTC_MAC_INTEL', - 'WEBRTC_MAC', - 'WEBRTC_THREAD_RR', - 'WEBRTC_CLOCK_TYPE_REALTIME', - ], - }], - ['OS=="win"', { - 'defines': [ - 'WEBRTC_TARGET_PC', - ], - }], - ['build_with_chromium==1', { - 'defines': [ - 'WEBRTC_VIDEO_EXTERNAL_CAPTURE_AND_RENDER', - ], - }], - ], # conditions - }, # target-defaults + 'includes': [ + 'build/common.gypi', + ], } # Local Variables: