| #!/usr/bin/python |
| |
| # Copyright 2016 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. |
| |
| """Script for exporting iOS header files.""" |
| |
| import errno |
| import sys |
| |
| import argparse |
| import os |
| import shutil |
| |
| LEGACY_HEADER_DIRS = ['talk/app/webrtc/objc/public', 'webrtc/base/objc/'] |
| HEADER_DIRS = ['webrtc/api/objc/', 'webrtc/base/objc/', |
| 'webrtc/modules/audio_device/ios/objc'] |
| # Individual header files that should also be exported. |
| LEGACY_HEADER_INCLUDES = [] |
| HEADER_INCLUDES = [] |
| # Individual header files that should not be exported. |
| LEGACY_HEADER_EXCLUDES = ['talk/app/webrtc/objc/public/RTCNSGLVideoView.h'] |
| HEADER_EXCLUDES = [ |
| 'webrtc/api/objc/avfoundationvideocapturer.h', |
| 'webrtc/api/objc/RTCNSGLVideoView.h', |
| 'webrtc/api/objc/RTCVideoRendererAdapter.h', |
| 'webrtc/base/objc/NSString+StdString.h', |
| 'webrtc/base/objc/RTCUIApplication.h', |
| 'webrtc/modules/audio_device/ios/objc/RTCAudioSessionDelegateAdapter.h', |
| ] |
| |
| |
| def ExportHeaders(include_base_dir, use_legacy_headers): |
| """Exports iOS header files. |
| |
| Creates an include directory and recreates the hierarchy for the header files |
| within the include directory. |
| |
| Args: |
| include_base_dir: directory where the include directory should be created |
| use_legacy_headers: whether or not to export the old headers |
| """ |
| |
| include_dir_name = 'include' |
| include_path = os.path.join(include_base_dir, include_dir_name) |
| # Remove existing directory first in case files change. |
| if os.path.exists(include_path): |
| shutil.rmtree(include_path) |
| |
| script_path = sys.path[0] |
| webrtc_base_path = os.path.join(script_path, '../../..') |
| |
| header_dirs = HEADER_DIRS |
| include_headers = HEADER_INCLUDES |
| exclude_headers = HEADER_EXCLUDES |
| if use_legacy_headers: |
| header_dirs = LEGACY_HEADER_DIRS |
| include_headers = LEGACY_HEADER_INCLUDES |
| exclude_headers = LEGACY_HEADER_EXCLUDES |
| |
| for directory in header_dirs: |
| full_dir_path = os.path.join(webrtc_base_path, directory) |
| filenames = os.listdir(full_dir_path) |
| for filename in filenames: |
| if filename.endswith('.h') and not filename.endswith('+Private.h'): |
| include_headers.append(os.path.join(directory, filename)) |
| |
| for header in exclude_headers: |
| include_headers.remove(header) |
| |
| for header_path in include_headers: |
| output_dir = os.path.join(include_path, os.path.dirname(header_path)) |
| # Create hierarchy for the header file within the include directory. |
| try: |
| os.makedirs(output_dir) |
| except OSError as exc: |
| if exc.errno != errno.EEXIST: |
| raise exc |
| current_path = os.path.join(webrtc_base_path, header_path) |
| new_path = os.path.join(include_path, header_path) |
| shutil.copy(current_path, new_path) |
| |
| |
| def Main(): |
| parser_description = 'Export WebRTC ObjC API headers.' |
| parser = argparse.ArgumentParser(description=parser_description) |
| parser.add_argument('output_dir', |
| help='Output directory to write headers to.', |
| type=str) |
| parser.add_argument('use_legacy_headers', |
| help='Reads the old headers instead of the current ones.', |
| type=int) |
| args = parser.parse_args() |
| use_legacy_headers = args.use_legacy_headers != 0 |
| output_dir = args.output_dir |
| ExportHeaders(output_dir, use_legacy_headers) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(Main()) |