blob: 4be39fb23b065dab7e88c1b947009275e1a279e1 [file] [log] [blame]
#!/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())