Add GYP build for the src/tools directory on Mac and Linux.

This GYP-ifies the src/processor and src/common directories on those platforms
as well. The Makefile build uses much more granular unittest executables, so
the new processor_unittests does not yet link because of multiple main() symbols,
but this will be fixed later.

Update issue 575

R=mark@chromium.org

Review URL: https://breakpad.appspot.com/10674002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1358 4c0a9323-5329-0410-9bdc-e9ce6186880e
diff --git a/src/build/all.gyp b/src/build/all.gyp
new file mode 100644
index 0000000..4b59d91
--- /dev/null
+++ b/src/build/all.gyp
@@ -0,0 +1,41 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'targets': [
+    {
+      'target_name': 'All',
+      'type': 'none',
+      'dependencies': [
+        '../common/common.gyp:*',
+        '../processor/processor.gyp:*',
+        '../tools/tools.gyp:*',
+      ],
+    },
+  ],
+}
diff --git a/src/build/common.gypi b/src/build/common.gypi
index 097fadc..0e1e7dc 100644
--- a/src/build/common.gypi
+++ b/src/build/common.gypi
@@ -203,21 +203,6 @@
     'enable_new_npdevice_api%': 0,
 
     'conditions': [
-      ['OS=="linux" or OS=="freebsd" or OS=="openbsd"', {
-        # This will set gcc_version to XY if you are running gcc X.Y.*.
-        # This is used to tweak build flags for gcc 4.4.
-        'gcc_version%': '<!(python <(DEPTH)/build/compiler_version.py)',
-        # Figure out the python architecture to decide if we build pyauto.
-        'python_arch%': '<!(<(DEPTH)/build/linux/python_arch.sh <(sysroot)/usr/lib/libpython<(python_ver).so.1.0)',
-        'linux_breakpad%': 1,
-        'linux_dump_symbols%': 1,
-      }],  # OS=="linux" or OS=="freebsd" or OS=="openbsd"
-      ['OS=="mac"', {
-        # Mac wants Title Case strings
-        'use_titlecase_in_grd_files%': 1,
-        'mac_breakpad%': 0,
-        'mac_keystone%': 0,
-      }],  # OS=="mac"
       # Whether to use multiple cores to compile with visual studio. This is
       # optional because it sometimes causes corruption on VS 2005.
       # It is on by default on VS 2008 and off on VS 2005.
@@ -241,24 +226,6 @@
           'NACL_WIN64',
         ],
       }],
-      # Compute based on OS and target architecture whether the GPU
-      # plugin / process is supported.
-      [ 'OS=="win" or (OS=="linux" and target_arch!="arm") or OS=="mac"', {
-        # Enable a variable used elsewhere throughout the GYP files to determine
-        # whether to compile in the sources for the GPU plugin / process.
-        'enable_gpu%': 1,
-      }, {  # GPU plugin not supported
-        'enable_gpu%': 0,
-      }],
-      # Compute based on OS, target architecture and device whether GLES
-      # is supported
-      [ 'OS=="linux" and target_arch=="arm"', {
-        # Enable a variable used elsewhere throughout the GYP files to determine
-        # whether to compile in the sources for the GLES support.
-        'enable_gles%': 1,
-      }, {  # GLES not supported
-        'enable_gles%': 0,
-      }],
     ],
 
     # NOTE: When these end up in the Mac bundle, we need to replace '-' for '_'
@@ -273,6 +240,9 @@
     ],
   },
   'target_defaults': {
+    'includes': [
+      'filename_rules.gypi',
+    ],
     'variables': {
       # See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html
       'mac_release_optimization%': '3', # Use -O3 unless overridden
@@ -299,16 +269,6 @@
           }],
         ],
       }],
-      ['enable_gpu==1', {
-        'defines': [
-          'ENABLE_GPU=1',
-        ],
-      }],
-      ['enable_gles==1', {
-        'defines': [
-          'ENABLE_GLES=1',
-        ],
-      }],
       ['coverage!=0', {
         'conditions': [
           ['OS=="mac"', {
@@ -610,7 +570,7 @@
           '-fvisibility=hidden',
         ],
         'cflags_cc': [
-          '-fno-rtti',
+          '-frtti',
           '-fno-threadsafe-statics',
           # Make inline functions have hidden visiblity by default.
           # Surprisingly, not covered by -fvisibility=hidden.
@@ -658,12 +618,6 @@
                            '$_LIBDIRFLAGS', '$LDMODULEFLAGS', '$SOURCES',
                            '-Wl,--start-group', '$_LIBFLAGS', '-Wl,--end-group']],
           'IMPLICIT_COMMAND_DEPENDENCIES': 0,
-          # -rpath is only used when building with shared libraries.
-          'conditions': [
-            [ 'component=="shared_library"', {
-              'RPATH': '$LIB_DIR',
-            }],
-          ],
         },
         'scons_import_variables': [
           'AS',
@@ -847,21 +801,6 @@
               '-fno-strict-aliasing',
             ],
           }],
-          ['linux_breakpad==1', {
-            'cflags': [ '-gstabs' ],
-            'defines': ['USE_LINUX_BREAKPAD'],
-          }],
-          ['library=="shared_library"', {
-            # When building with shared libraries, remove the visiblity-hiding
-            # flag.
-            'cflags!': [ '-fvisibility=hidden' ],
-            'conditions': [
-              ['target_arch=="x64" or target_arch=="arm"', {
-                # Shared libraries need -fPIC on x86-64 and arm
-                'cflags': ['-fPIC']
-              }]
-            ],
-          }],
           ['linux_use_heapchecker==1', {
             'variables': {'linux_use_tcmalloc%': 1},
           }],
@@ -903,7 +842,7 @@
           'GCC_DYNAMIC_NO_PIC': 'NO',               # No -mdynamic-no-pic
                                                     # (Equivalent to -fPIC)
           'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',        # -fno-exceptions
-          'GCC_ENABLE_CPP_RTTI': 'NO',              # -fno-rtti
+          'GCC_ENABLE_CPP_RTTI': 'YES',             # -frtti
           'GCC_ENABLE_PASCAL_STRINGS': 'NO',        # No -mpascal-strings
           # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
           'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
@@ -931,51 +870,6 @@
           ['_mac_bundle', {
             'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-ObjC']},
           }],
-          ['_type=="executable" or _type=="shared_library"', {
-            'target_conditions': [
-              ['mac_real_dsym == 1', {
-                # To get a real .dSYM bundle produced by dsymutil, set the
-                # debug information format to dwarf-with-dsym.  Since
-                # strip_from_xcode will not be used, set Xcode to do the
-                # stripping as well.
-                'configurations': {
-                  'Release_Base': {
-                    'xcode_settings': {
-                      'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
-                      'DEPLOYMENT_POSTPROCESSING': 'YES',
-                      'STRIP_INSTALLED_PRODUCT': 'YES',
-                      'target_conditions': [
-                        ['_type=="shared_library"', {
-                          # The Xcode default is to strip debugging symbols
-                          # only (-S).  Local symbols should be stripped as
-                          # well, which will be handled by -x.  Xcode will
-                          # continue to insert -S when stripping even when
-                          # additional flags are added with STRIPFLAGS.
-                          'STRIPFLAGS': '-x',
-                        }],  # _type=="shared_library"
-                      ],  # target_conditions
-                    },  # xcode_settings
-                  },  # configuration "Release"
-                },  # configurations
-              }, {  # mac_real_dsym != 1
-                # To get a fast fake .dSYM bundle, use a post-build step to
-                # produce the .dSYM and strip the executable.  strip_from_xcode
-                # only operates in the Release configuration.
-                'postbuilds': [
-                  {
-                    'variables': {
-                      # Define strip_from_xcode in a variable ending in _path
-                      # so that gyp understands it's a path and performs proper
-                      # relativization during dict merging.
-                      'strip_from_xcode_path': 'mac/strip_from_xcode',
-                    },
-                    'postbuild_name': 'Strip If Needed',
-                    'action': ['<(strip_from_xcode_path)'],
-                  },
-                ],  # postbuilds
-              }],  # mac_real_dsym
-            ],  # target_conditions
-          }],  # _type=="executable" or _type=="shared_library"
         ],  # target_conditions
       },  # target_defaults
     }],  # OS=="mac"
diff --git a/src/build/filename_rules.gypi b/src/build/filename_rules.gypi
new file mode 100644
index 0000000..78cd180
--- /dev/null
+++ b/src/build/filename_rules.gypi
@@ -0,0 +1,57 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_conditions': [
+    ['OS!="win"', {
+      'sources/': [
+        ['exclude', '(^|/)windows/'],
+      ],
+    }],
+    ['OS!="linux"', {
+      'sources/': [
+        ['exclude', '(^|/)linux/'],
+      ],
+    }],
+    ['OS!="mac"', {
+      'sources/': [
+        ['exclude', '(^|/)mac/'],
+      ],
+    }],
+    ['OS!="android"', {
+      'sources/': [
+        ['exclude', '(^|/)android/'],
+      ],
+    }],
+    ['OS!="solaris"', {
+      'sources/': [
+        ['exclude', '(^|/)solaris/'],
+      ],
+    }],
+  ],
+}
diff --git a/src/build/gyp_breakpad b/src/build/gyp_breakpad
new file mode 100755
index 0000000..0b8077d
--- /dev/null
+++ b/src/build/gyp_breakpad
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+import os
+import platform
+import sys
+
+script_dir = os.path.dirname(os.path.realpath(__file__))
+breakpad_root = os.path.abspath(os.path.join(script_dir, os.pardir))
+
+sys.path.insert(0, os.path.join(breakpad_root, 'tools', 'gyp', 'pylib'))
+import gyp
+
+def run_gyp(args):
+  rc = gyp.main(args)
+  if rc != 0:
+    print 'Error running GYP'
+    sys.exit(rc)
+
+
+def main():
+  args = sys.argv[1:]
+  args.append(os.path.join(script_dir, 'all.gyp'))
+
+  args.append('-I')
+  args.append(os.path.join(breakpad_root, 'build', 'common.gypi'))
+
+  args.extend(['-D', 'gyp_output_dir=out'])
+
+  # Set the GYP DEPTH variable to the root of the project.
+  args.append('--depth=' + os.path.relpath(breakpad_root))
+
+  print 'Updating projects from gyp files...'
+  sys.stdout.flush()
+
+  run_gyp(args)
+
+
+if __name__ == '__main__':
+  sys.exit(main())
diff --git a/src/build/testing.gypi b/src/build/testing.gypi
new file mode 100644
index 0000000..3a77230
--- /dev/null
+++ b/src/build/testing.gypi
@@ -0,0 +1,90 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'targets': [
+    {
+      'target_name': 'gtest',
+      'type': 'static_library',
+      'sources': [
+        '../testing/gtest/src/gtest-all.cc',
+      ],
+      'include_dirs': [
+        '../testing/gtest',
+        '../testing/gtest/include',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '../testing/gtest/include',
+        ],
+      },
+    },
+    {
+      'target_name': 'gtest_main',
+      'type': 'static_library',
+      'dependencies': [
+        'gtest',
+      ],
+      'sources': [
+        'gtest/src/gtest_main.cc',
+      ],
+    },
+    {
+      'target_name': 'gmock',
+      'type': 'static_library',
+      'dependencies': [
+        'gtest',
+      ],
+      'sources': [
+        '../testing/src/gmock-all.cc',
+      ],
+      'include_dirs': [
+        '../testing',
+        '../testing/include',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          '../testing/include',
+        ],
+      },
+      'export_dependent_settings': [
+        'gtest',
+      ],
+    },
+    {
+      'target_name': 'gmock_main',
+      'type': 'static_library',
+      'dependencies': [
+        'gmock',
+      ],
+      'sources': [
+        '../testing/src/gmock_main.cc',
+      ],
+    },
+  ],
+}
diff --git a/src/common/common.gyp b/src/common/common.gyp
new file mode 100644
index 0000000..3c87150
--- /dev/null
+++ b/src/common/common.gyp
@@ -0,0 +1,240 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'target_conditions': [
+      ['OS=="mac"', {
+        'defines': ['HAVE_MACH_O_NLIST_H'],
+      }],
+      ['OS=="linux"', {
+        'defines': ['HAVE_A_OUT_H'],
+      }],
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'common',
+      'type': 'static_library',
+      'sources': [
+        'android/breakpad_getcontext.S',
+        'android/include/elf.h',
+        'android/include/link.h',
+        'android/include/sgidefs.h',
+        'android/include/stab.h',
+        'android/include/sys/procfs.h',
+        'android/include/sys/signal.h',
+        'android/include/sys/ucontext.h',
+        'android/include/sys/user.h',
+        'android/include/ucontext.h',
+        'android/testing/include/wchar.h',
+        'android/testing/mkdtemp.h',
+        'android/testing/pthread_fixes.h',
+        'android/ucontext_constants.h',
+        'basictypes.h',
+        'byte_cursor.h',
+        'convert_UTF.c',
+        'convert_UTF.h',
+        'dwarf/bytereader-inl.h',
+        'dwarf/bytereader.cc',
+        'dwarf/bytereader.h',
+        'dwarf/cfi_assembler.cc',
+        'dwarf/cfi_assembler.h',
+        'dwarf/dwarf2diehandler.cc',
+        'dwarf/dwarf2diehandler.h',
+        'dwarf/dwarf2enums.h',
+        'dwarf/dwarf2reader.cc',
+        'dwarf/dwarf2reader.h',
+        'dwarf/dwarf2reader_test_common.h',
+        'dwarf/functioninfo.cc',
+        'dwarf/functioninfo.h',
+        'dwarf/line_state_machine.h',
+        'dwarf/types.h',
+        'dwarf_cfi_to_module.cc',
+        'dwarf_cfi_to_module.h',
+        'dwarf_cu_to_module.cc',
+        'dwarf_cu_to_module.h',
+        'dwarf_line_to_module.cc',
+        'dwarf_line_to_module.h',
+        'language.cc',
+        'language.h',
+        'linux/crc32.cc',
+        'linux/crc32.h',
+        'linux/dump_symbols.cc',
+        'linux/dump_symbols.h',
+        'linux/eintr_wrapper.h',
+        'linux/elf_core_dump.cc',
+        'linux/elf_core_dump.h',
+        'linux/elf_gnu_compat.h',
+        'linux/elf_symbols_to_module.cc',
+        'linux/elf_symbols_to_module.h',
+        'linux/elfutils-inl.h',
+        'linux/elfutils.cc',
+        'linux/elfutils.h',
+        'linux/file_id.cc',
+        'linux/file_id.h',
+        'linux/google_crashdump_uploader.cc',
+        'linux/google_crashdump_uploader.h',
+        'linux/guid_creator.cc',
+        'linux/guid_creator.h',
+        'linux/http_upload.cc',
+        'linux/http_upload.h',
+        'linux/ignore_ret.h',
+        'linux/libcurl_wrapper.cc',
+        'linux/libcurl_wrapper.h',
+        'linux/linux_libc_support.cc',
+        'linux/linux_libc_support.h',
+        'linux/memory_mapped_file.cc',
+        'linux/memory_mapped_file.h',
+        'linux/safe_readlink.cc',
+        'linux/safe_readlink.h',
+        'linux/synth_elf.cc',
+        'linux/synth_elf.h',
+        'mac/arch_utilities.cc',
+        'mac/arch_utilities.h',
+        'mac/bootstrap_compat.cc',
+        'mac/bootstrap_compat.h',
+        'mac/byteswap.h',
+        'mac/dump_syms.h',
+        'mac/dump_syms.mm',
+        'mac/file_id.cc',
+        'mac/file_id.h',
+        'mac/GTMDefines.h',
+        'mac/GTMLogger.h',
+        'mac/GTMLogger.m',
+        'mac/HTTPMultipartUpload.h',
+        'mac/HTTPMultipartUpload.m',
+        'mac/MachIPC.h',
+        'mac/MachIPC.mm',
+        'mac/macho_id.cc',
+        'mac/macho_id.h',
+        'mac/macho_reader.cc',
+        'mac/macho_reader.h',
+        'mac/macho_utilities.cc',
+        'mac/macho_utilities.h',
+        'mac/macho_walker.cc',
+        'mac/macho_walker.h',
+        'mac/scoped_task_suspend-inl.h',
+        'mac/string_utilities.cc',
+        'mac/string_utilities.h',
+        'md5.cc',
+        'md5.h',
+        'memory.h',
+        'memory_range.h',
+        'module.cc',
+        'module.h',
+        'scoped_ptr.h',
+        'simple_string_dictionary.cc',
+        'simple_string_dictionary.h',
+        'solaris/dump_symbols.cc',
+        'solaris/dump_symbols.h',
+        'solaris/file_id.cc',
+        'solaris/file_id.h',
+        'solaris/guid_creator.cc',
+        'solaris/guid_creator.h',
+        'solaris/message_output.h',
+        'stabs_reader.cc',
+        'stabs_reader.h',
+        'stabs_to_module.cc',
+        'stabs_to_module.h',
+        'string_conversion.cc',
+        'string_conversion.h',
+        'symbol_data.h',
+        'test_assembler.cc',
+        'test_assembler.h',
+        'unordered.h',
+        'using_std_string.h',
+        'windows/common_windows.gyp',
+        'windows/dia_util.cc',
+        'windows/dia_util.h',
+        'windows/guid_string.cc',
+        'windows/guid_string.h',
+        'windows/http_upload.cc',
+        'windows/http_upload.h',
+        'windows/omap.cc',
+        'windows/omap.h',
+        'windows/omap_internal.h',
+        'windows/pdb_source_line_writer.cc',
+        'windows/pdb_source_line_writer.h',
+        'windows/string_utils-inl.h',
+        'windows/string_utils.cc',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+    },
+    {
+      'target_name': 'common_unittests',
+      'type': 'executable',
+      'sources': [
+        'android/breakpad_getcontext_unittest.cc',
+        'byte_cursor_unittest.cc',
+        'dwarf/bytereader_unittest.cc',
+        'dwarf/dwarf2diehandler_unittest.cc',
+        'dwarf/dwarf2reader_cfi_unittest.cc',
+        'dwarf/dwarf2reader_die_unittest.cc',
+        'dwarf_cfi_to_module_unittest.cc',
+        'dwarf_cu_to_module_unittest.cc',
+        'dwarf_line_to_module_unittest.cc',
+        'linux/dump_symbols_unittest.cc',
+        'linux/elf_core_dump_unittest.cc',
+        'linux/elf_symbols_to_module_unittest.cc',
+        'linux/file_id_unittest.cc',
+        'linux/google_crashdump_uploader_test.cc',
+        'linux/linux_libc_support_unittest.cc',
+        'linux/memory_mapped_file_unittest.cc',
+        'linux/safe_readlink_unittest.cc',
+        'linux/synth_elf_unittest.cc',
+        'linux/tests/auto_testfile.h',
+        'linux/tests/crash_generator.cc',
+        'linux/tests/crash_generator.h',
+        'mac/macho_reader_unittest.cc',
+        'memory_range_unittest.cc',
+        'memory_unittest.cc',
+        'module_unittest.cc',
+        'simple_string_dictionary_unittest.cc',
+        'stabs_reader_unittest.cc',
+        'stabs_to_module_unittest.cc',
+        'test_assembler_unittest.cc',
+        'tests/auto_tempdir.h',
+        'tests/file_utils.cc',
+        'tests/file_utils.h',
+        'windows/omap_unittest.cc',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        'common',
+        '../build/testing.gypi:gmock_main',
+        '../build/testing.gypi:gmock',
+        '../build/testing.gypi:gtest',
+      ],
+    },
+  ],
+}
diff --git a/src/processor/processor.gyp b/src/processor/processor.gyp
new file mode 100644
index 0000000..f27b2ea
--- /dev/null
+++ b/src/processor/processor.gyp
@@ -0,0 +1,175 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'includes': [
+    'processor_tools.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'processor',
+      'type': 'static_library',
+      'sources': [
+        'address_map-inl.h',
+        'address_map.h',
+        'basic_code_module.h',
+        'basic_code_modules.cc',
+        'basic_code_modules.h',
+        'basic_source_line_resolver.cc',
+        'basic_source_line_resolver_types.h',
+        'binarystream.cc',
+        'binarystream.h',
+        'call_stack.cc',
+        'cfi_frame_info-inl.h',
+        'cfi_frame_info.cc',
+        'cfi_frame_info.h',
+        'contained_range_map-inl.h',
+        'contained_range_map.h',
+        'disassembler_x86.cc',
+        'disassembler_x86.h',
+        'exploitability.cc',
+        'exploitability_linux.cc',
+        'exploitability_linux.h',
+        'exploitability_win.cc',
+        'exploitability_win.h',
+        'fast_source_line_resolver.cc',
+        'fast_source_line_resolver_types.h',
+        'linked_ptr.h',
+        'logging.cc',
+        'logging.h',
+        'map_serializers-inl.h',
+        'map_serializers.h',
+        'minidump.cc',
+        'minidump_processor.cc',
+        'module_comparer.cc',
+        'module_comparer.h',
+        'module_factory.h',
+        'module_serializer.cc',
+        'module_serializer.h',
+        'pathname_stripper.cc',
+        'pathname_stripper.h',
+        'postfix_evaluator-inl.h',
+        'postfix_evaluator.h',
+        'process_state.cc',
+        'range_map-inl.h',
+        'range_map.h',
+        'simple_serializer-inl.h',
+        'simple_serializer.h',
+        'simple_symbol_supplier.cc',
+        'simple_symbol_supplier.h',
+        'source_line_resolver_base.cc',
+        'source_line_resolver_base_types.h',
+        'stack_frame_cpu.cc',
+        'stack_frame_symbolizer.cc',
+        'stackwalker.cc',
+        'stackwalker_address_list.cc',
+        'stackwalker_address_list.h',
+        'stackwalker_amd64.cc',
+        'stackwalker_amd64.h',
+        'stackwalker_arm.cc',
+        'stackwalker_arm.h',
+        'stackwalker_arm64.cc',
+        'stackwalker_arm64.h',
+        'stackwalker_mips.cc',
+        'stackwalker_mips.h',
+        'stackwalker_ppc.cc',
+        'stackwalker_ppc.h',
+        'stackwalker_ppc64.cc',
+        'stackwalker_ppc64.h',
+        'stackwalker_selftest.cc',
+        'stackwalker_sparc.cc',
+        'stackwalker_sparc.h',
+        'stackwalker_x86.cc',
+        'stackwalker_x86.h',
+        'static_address_map-inl.h',
+        'static_address_map.h',
+        'static_contained_range_map-inl.h',
+        'static_contained_range_map.h',
+        'static_map-inl.h',
+        'static_map.h',
+        'static_map_iterator-inl.h',
+        'static_map_iterator.h',
+        'static_range_map-inl.h',
+        'static_range_map.h',
+        'synth_minidump.cc',
+        'synth_minidump.h',
+        'tokenize.cc',
+        'tokenize.h',
+        'windows_frame_info.h',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+        '../third_party/libdisasm/libdisasm.gyp:libdisasm',
+      ],
+    },
+    {
+      'target_name': 'processor_unittests',
+      'type': 'executable',
+      'sources': [
+        'address_map_unittest.cc',
+        'basic_source_line_resolver_unittest.cc',
+        'binarystream_unittest.cc',
+        'cfi_frame_info_unittest.cc',
+        'contained_range_map_unittest.cc',
+        'disassembler_x86_unittest.cc',
+        'exploitability_unittest.cc',
+        'fast_source_line_resolver_unittest.cc',
+        'map_serializers_unittest.cc',
+        'minidump_processor_unittest.cc',
+        'minidump_unittest.cc',
+        'pathname_stripper_unittest.cc',
+        'postfix_evaluator_unittest.cc',
+        'range_map_unittest.cc',
+        'stackwalker_address_list_unittest.cc',
+        'stackwalker_amd64_unittest.cc',
+        'stackwalker_arm64_unittest.cc',
+        'stackwalker_arm_unittest.cc',
+        'stackwalker_mips_unittest.cc',
+        'stackwalker_unittest_utils.h',
+        'stackwalker_x86_unittest.cc',
+        'static_address_map_unittest.cc',
+        'static_contained_range_map_unittest.cc',
+        'static_map_unittest.cc',
+        'static_range_map_unittest.cc',
+        'synth_minidump_unittest.cc',
+        'synth_minidump_unittest_data.h',
+      ],
+      'include_dirs': [
+        '..',
+      ],
+      'dependencies': [
+        'processor',
+        '../build/testing.gypi:gmock',
+        '../build/testing.gypi:gtest',
+      ],
+    },
+  ],
+}
diff --git a/src/processor/processor_tools.gypi b/src/processor/processor_tools.gypi
new file mode 100644
index 0000000..ecb450d
--- /dev/null
+++ b/src/processor/processor_tools.gypi
@@ -0,0 +1,57 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'include_dirs': [
+      '..',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'minidump_dump',
+      'type': 'executable',
+      'sources': [
+        'minidump_dump.cc',
+      ],
+      'dependencies': [
+        'processor',
+      ],
+    },
+    {
+      'target_name': 'minidump_stackwalk',
+      'type': 'executable',
+      'sources': [
+        'minidump_stackwalk.cc',
+      ],
+      'dependencies': [
+        'processor',
+      ],
+    },
+  ],
+}
diff --git a/src/third_party/libdisasm/libdisasm.gyp b/src/third_party/libdisasm/libdisasm.gyp
new file mode 100644
index 0000000..c48ac82
--- /dev/null
+++ b/src/third_party/libdisasm/libdisasm.gyp
@@ -0,0 +1,64 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'targets': [
+    {
+      'target_name': 'libdisasm',
+      'type': 'static_library',
+      'sources': [
+	'ia32_implicit.c',
+	'ia32_implicit.h',
+	'ia32_insn.c',
+	'ia32_insn.h',
+	'ia32_invariant.c',
+	'ia32_invariant.h',
+	'ia32_modrm.c',
+	'ia32_modrm.h',
+	'ia32_opcode_tables.c',
+	'ia32_opcode_tables.h',
+	'ia32_operand.c',
+	'ia32_operand.h',
+	'ia32_reg.c',
+	'ia32_reg.h',
+	'ia32_settings.c',
+	'ia32_settings.h',
+	'libdis.h',
+	'qword.h',
+	'x86_disasm.c',
+	'x86_format.c',
+	'x86_imm.c',
+	'x86_imm.h',
+	'x86_insn.c',
+	'x86_misc.c',
+	'x86_operand_list.c',
+	'x86_operand_list.h',
+      ],
+    },
+  ],
+}
diff --git a/src/tools/linux/tools_linux.gypi b/src/tools/linux/tools_linux.gypi
new file mode 100644
index 0000000..1c15992
--- /dev/null
+++ b/src/tools/linux/tools_linux.gypi
@@ -0,0 +1,83 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'include_dirs': [
+      '../..',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'dump_syms',
+      'type': 'executable',
+      'sources': [
+        'dump_syms/dump_syms.cc',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'md2core',
+      'type': 'executable',
+      'sources': [
+        'md2core/minidump-2-core.cc',
+        'md2core/minidump_memory_range.h',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'minidump_upload',
+      'type': 'executable',
+      'sources': [
+        'symupload/minidump_upload.m',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'symupload',
+      'type': 'executable',
+      'sources': [
+        'symupload/sym_upload.cc',
+      ],
+      'link_settings': {
+        'libraries': [
+          '-ldl',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+  ],
+}
diff --git a/src/tools/mac/crash_report/on_demand_symbol_supplier.mm b/src/tools/mac/crash_report/on_demand_symbol_supplier.mm
index d6bb269..ebbca87 100644
--- a/src/tools/mac/crash_report/on_demand_symbol_supplier.mm
+++ b/src/tools/mac/crash_report/on_demand_symbol_supplier.mm
@@ -40,7 +40,7 @@
 #include "processor/pathname_stripper.h"
 
 #include "on_demand_symbol_supplier.h"
-#include "dump_syms.h"
+#include "common/mac/dump_syms.h"
 
 using std::map;
 using std::string;
diff --git a/src/tools/mac/tools_mac.gypi b/src/tools/mac/tools_mac.gypi
new file mode 100644
index 0000000..ae06f03
--- /dev/null
+++ b/src/tools/mac/tools_mac.gypi
@@ -0,0 +1,116 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'target_defaults': {
+    'include_dirs': [
+      '../..',
+    ],
+  },
+  'targets': [
+    {
+      'target_name': 'crash_report',
+      'type': 'executable',
+      'sources': [
+        'crash_report/crash_report.mm',
+        'crash_report/on_demand_symbol_supplier.h',
+        'crash_report/on_demand_symbol_supplier.mm',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+        '../processor/processor.gyp:processor',
+      ],
+    },
+    {
+      'target_name': 'dump_syms',
+      'type': 'executable',
+      'sources': [
+        'dump_syms/dump_syms_tool.mm',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'macho_dump',
+      'type': 'executable',
+      'sources': [
+        'dump_syms/macho_dump.cc',
+      ],
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'minidump_upload',
+      'type': 'executable',
+      'sources': [
+        'symupload/minidump_upload.m',
+      ],
+      'include_dirs': [
+        '../../common/mac',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+    {
+      'target_name': 'symupload',
+      'type': 'executable',
+      'sources': [
+        'symupload/symupload.m',
+      ],
+      'include_dirs': [
+        '../../common/mac',
+      ],
+      'link_settings': {
+        'libraries': [
+          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
+        ],
+      },
+      'dependencies': [
+        '../common/common.gyp:common',
+      ],
+    },
+  ],
+}
diff --git a/src/tools/tools.gyp b/src/tools/tools.gyp
new file mode 100644
index 0000000..e6a4210
--- /dev/null
+++ b/src/tools/tools.gyp
@@ -0,0 +1,38 @@
+# Copyright 2014 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+{
+  'conditions': [
+    ['OS=="mac"', {
+      'includes': ['mac/tools_mac.gypi'],
+    }],
+    ['OS=="linux"', {
+      'includes': ['linux/tools_linux.gypi'],
+    }],
+  ],
+}