diff --git a/webrtc/build/generate_asm_header.gypi b/webrtc/build/generate_asm_header.gypi
new file mode 100644
index 0000000000..7afba7da78
--- /dev/null
+++ b/webrtc/build/generate_asm_header.gypi
@@ -0,0 +1,64 @@
+# Copyright (c) 2012 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 is meant to be included into a target to provide an action
+# to generate C header files. These headers include definitions
+# that can be used in ARM assembly files.
+#
+# To use this, create a gyp target with the following form:
+# {
+# 'target_name': 'my_asm_headers_lib',
+# 'type': 'static_library',
+# 'sources': [
+# 'foo.c',
+# 'bar.c',
+# ],
+# 'includes': ['path/to/this/gypi/file'],
+# }
+#
+# The headers are guaranteed to be generated before any
+# source files, even within this target, are compiled.
+#
+# The 'asm_header_dir' variable specifies the path suffix that output
+# files are generated under.
+
+# TODO(kma): port this block from Android into other build systems.
+{
+ 'variables': {
+ 'gen_header': '<(DEPTH)/webrtc/build/generate_asm_header.py',
+ 'out_dir': '<(SHARED_INTERMEDIATE_DIR)/<(asm_header_dir)',
+ 'process_outputs_as_sources': 1,
+ },
+ 'rules': [
+ {
+ 'rule_name': 'generate_asm_header',
+ 'extension': 'c',
+ 'inputs': [
+ '<(gen_header)',
+ ],
+ 'outputs': [
+ '<(out_dir)/<(RULE_INPUT_ROOT).h',
+ ],
+ 'action': [
+ 'python',
+ '<(gen_header)',
+ '--compiler=$(CC)', # Specifiy the compiler.
+ '--options=-I.. -I<@(android_ndk_include) -S', # Compiler options.
+ '--dir=<(out_dir)',
+ '<(RULE_INPUT_PATH)',
+ ],
+ 'message': 'Generating assembly header files',
+ 'process_outputs_as_sources': 1,
+ },
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': ['<(out_dir)',],
+ },
+ # This target exports a hard dependency because it generates header files.
+ 'hard_dependency': 1,
+}
diff --git a/webrtc/build/generate_asm_header.py b/webrtc/build/generate_asm_header.py
index 7d275efb81..69862617a2 100644
--- a/webrtc/build/generate_asm_header.py
+++ b/webrtc/build/generate_asm_header.py
@@ -8,34 +8,53 @@
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
-"""This script generates a C header file of offsets from an ARM assembler file.
+"""This script is a tool to generate special header files from input
+C source files.
-It parses an ARM assembler generated .S file, finds declarations of variables
+It first assembles the input source files to generate intermediate assembly
+files (*.s). Then it parses the .s files and finds declarations of variables
whose names start with the string specified as the third argument in the
-command-line, translates the variable names and values into constant defines and
-writes them into a header file.
+command-line, translates the variable names and values into constant defines
+and writes them into header files.
"""
+import os
import sys
-
-def usage():
- print("Usage: generate_asm_header.py " +
- "