aboutsummaryrefslogtreecommitdiff
path: root/src/build
diff options
context:
space:
mode:
authorrsesek@chromium.org <rsesek@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2014-07-24 15:22:51 +0000
committerrsesek@chromium.org <rsesek@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e>2014-07-24 15:22:51 +0000
commitdab50e6f6e2432fccfd82f8116552ad09a678b2f (patch)
treebdee67b30e52e4b4aea47f58853c3d69a29e8d68 /src/build
parentAnnotate PageAllocator for MSan. (diff)
downloadbreakpad-dab50e6f6e2432fccfd82f8116552ad09a678b2f.tar.xz
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
Diffstat (limited to 'src/build')
-rw-r--r--src/build/all.gyp41
-rw-r--r--src/build/common.gypi116
-rw-r--r--src/build/filename_rules.gypi57
-rwxr-xr-xsrc/build/gyp_breakpad67
-rw-r--r--src/build/testing.gypi90
5 files changed, 260 insertions, 111 deletions
diff --git a/src/build/all.gyp b/src/build/all.gyp
new file mode 100644
index 00000000..4b59d917
--- /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 097fadc1..0e1e7dca 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 00000000..78cd1808
--- /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 00000000..0b8077d2
--- /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 00000000..3a77230a
--- /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',
+ ],
+ },
+ ],
+}