diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | DEPS | 9 | ||||
-rw-r--r-- | build/standalone.gypi | 36 |
3 files changed, 47 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore index 3014ed6fa7..cbd1e7da4e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ /testing/corpus /testing/gmock /testing/gtest +/third_party/llvm +/third_party/llvm-build +/tools/clang /v8 /xcodebuild Makefile @@ -14,6 +14,9 @@ deps = { "testing/gtest": "https://chromium.googlesource.com/external/googletest.git@8245545b6dc9c4703e6496d1efd19e975ad2b038", + "tools/clang": + "https://chromium.googlesource.com/chromium/src/tools/clang", + "v8": "https://chromium.googlesource.com/v8/v8.git@4d03c3aabad6517ff058124bb799ca6a4156e570", @@ -74,4 +77,10 @@ hooks = [ '-s', 'pdfium/buildtools/linux64/clang-format.sha1', ], }, + { + # Pull clang if needed or requested via GYP_DEFINES. + 'name': 'clang', + 'pattern': '.', + 'action': ['python', 'pdfium/tools/clang/scripts/update.py', '--if-needed'], + }, ] diff --git a/build/standalone.gypi b/build/standalone.gypi index 507368dc25..a70b442bee 100644 --- a/build/standalone.gypi +++ b/build/standalone.gypi @@ -8,6 +8,8 @@ 'variables': { 'component%': 'static_library', 'clang%': 0, + 'asan%': 0, + 'sanitizer_coverage%': 0, 'msvs_multi_core_compile%': '1', 'variables': { 'variables': { @@ -37,6 +39,7 @@ 'host_arch%': '<(host_arch)', 'target_arch%': '<(target_arch)', }, + 'clang_dir%': 'third_party/llvm-build/Release+Asserts', # These two are needed by V8. 'host_arch%': '<(host_arch)', 'target_arch%': '<(target_arch)', @@ -50,6 +53,11 @@ }, { 'os_posix%': 1, }], + ['OS=="linux" or OS=="mac"', { + 'clang%': 1, + }, { + 'clang%': 0, + }], ], }, 'target_defaults': { @@ -249,6 +257,20 @@ '-fPIC', ], }], + ['asan==1', { + 'cflags': [ + '-fsanitize=address', + '-gline-tables-only', + ], + 'ldflags': [ + '-fsanitize=address', + ], + }], + ['sanitizer_coverage!=0', { + 'cflags': [ + '-fsanitize-coverage=<(sanitizer_coverage)', + ], + }], ['OS=="win"', { 'defines': [ 'NOMINMAX', @@ -280,5 +302,17 @@ 'xcode_settings': { # See comment in Chromium's common.gypi for why this is needed. 'SYMROOT': '<(DEPTH)/xcodebuild', - } + }, + 'conditions': [ + ['OS=="linux" or OS=="mac"', { + 'conditions': [ + ['clang==1', { + 'make_global_settings': [ + ['CC', '<(clang_dir)/bin/clang'], + ['CXX', '<(clang_dir)/bin/clang++'], + ], + }], + ], + }], # OS=="linux" or OS=="mac" + ], } |