1{
2  'variables': {
3    'chromium_code': 1,
4    'pdf_engine%': 0,  # 0 PDFium
5  },
6  'target_defaults': {
7    'cflags': [
8      '-fPIC',
9    ],
10  },
11  'targets': [
12    {
13      'target_name': 'pdf',
14      'type': 'loadable_module',
15      'msvs_guid': '647863C0-C7A3-469A-B1ED-AD7283C34BED',
16      'dependencies': [
17        '../base/base.gyp:base',
18        '../net/net.gyp:net',
19        '../ppapi/ppapi.gyp:ppapi_cpp',
20        '../third_party/pdfium/pdfium.gyp:pdfium',
21      ],
22      'xcode_settings': {
23        'INFOPLIST_FILE': 'Info.plist',
24      },
25      'mac_framework_dirs': [
26        '$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework/Frameworks',
27      ],
28      'ldflags': [ '-L<(PRODUCT_DIR)',],
29      'sources': [
30        'button.h',
31        'button.cc',
32        'chunk_stream.h',
33        'chunk_stream.cc',
34        'control.h',
35        'control.cc',
36        'document_loader.h',
37        'document_loader.cc',
38        'draw_utils.cc',
39        'draw_utils.h',
40        'fading_control.cc',
41        'fading_control.h',
42        'fading_controls.cc',
43        'fading_controls.h',
44        'instance.cc',
45        'instance.h',
46        'number_image_generator.cc',
47        'number_image_generator.h',
48        'out_of_process_instance.cc',
49        'out_of_process_instance.h',
50        'page_indicator.cc',
51        'page_indicator.h',
52        'paint_aggregator.cc',
53        'paint_aggregator.h',
54        'paint_manager.cc',
55        'paint_manager.h',
56        'pdf.cc',
57        'pdf.h',
58        'pdf.rc',
59        'progress_control.cc',
60        'progress_control.h',
61        'pdf_engine.h',
62        'preview_mode_client.cc',
63        'preview_mode_client.h',
64        'resource.h',
65        'resource_consts.h',
66        'thumbnail_control.cc',
67        'thumbnail_control.h',
68        '../chrome/browser/chrome_page_zoom_constants.cc',
69        '../content/common/page_zoom.cc',
70      ],
71      'conditions': [
72        ['pdf_engine==0', {
73          'sources': [
74            'pdfium/pdfium_assert_matching_enums.cc',
75            'pdfium/pdfium_engine.cc',
76            'pdfium/pdfium_engine.h',
77            'pdfium/pdfium_mem_buffer_file_read.cc',
78            'pdfium/pdfium_mem_buffer_file_read.h',
79            'pdfium/pdfium_mem_buffer_file_write.cc',
80            'pdfium/pdfium_mem_buffer_file_write.h',
81            'pdfium/pdfium_page.cc',
82            'pdfium/pdfium_page.h',
83            'pdfium/pdfium_range.cc',
84            'pdfium/pdfium_range.h',
85          ],
86        }],
87        ['OS!="win"', {
88          'sources!': [
89            'pdf.rc',
90          ],
91        }],
92        ['OS=="mac"', {
93          'mac_bundle': 1,
94          'product_name': 'PDF',
95          'product_extension': 'plugin',
96          # Strip the shipping binary of symbols so "Foxit" doesn't appear in
97          # the binary.  Symbols are stored in a separate .dSYM.
98          'variables': {
99            'mac_real_dsym': 1,
100          },
101          'sources+': [
102            'Info.plist'
103          ],
104        }],
105        ['OS=="win"', {
106          'defines': [
107            'COMPILE_CONTENT_STATICALLY',
108          ],
109          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
110          'msvs_disabled_warnings': [ 4267, ],
111        }],
112        ['OS=="linux"', {
113          'configurations': {
114            'Release_Base': {
115              #'cflags': [ '-fno-weak',],  # get rid of symbols that strip doesn't remove.
116              # Don't do this for now since official builder will take care of it.  That
117              # way symbols can still be uploaded to the crash server.
118              #'ldflags': [ '-s',],  # strip local symbols from binary.
119            },
120          },
121        }],
122      ],
123    },
124  ],
125  'conditions': [
126    # CrOS has a separate step to do this.
127    ['OS=="linux" and chromeos==0',
128      { 'targets': [
129        {
130          'target_name': 'pdf_linux_symbols',
131          'type': 'none',
132          'conditions': [
133            ['linux_dump_symbols==1', {
134              'actions': [
135                {
136                  'action_name': 'dump_symbols',
137                  'inputs': [
138                    '<(DEPTH)/build/linux/dump_app_syms',
139                    '<(PRODUCT_DIR)/dump_syms',
140                    '<(PRODUCT_DIR)/libpdf.so',
141                  ],
142                  'outputs': [
143                    '<(PRODUCT_DIR)/libpdf.so.breakpad.<(target_arch)',
144                  ],
145                  'action': ['<(DEPTH)/build/linux/dump_app_syms',
146                             '<(PRODUCT_DIR)/dump_syms',
147                             '<(linux_strip_binary)',
148                             '<(PRODUCT_DIR)/libpdf.so',
149                             '<@(_outputs)'],
150                  'message': 'Dumping breakpad symbols to <(_outputs)',
151                  'process_outputs_as_sources': 1,
152                },
153              ],
154              'dependencies': [
155                'pdf',
156                '../breakpad/breakpad.gyp:dump_syms',
157              ],
158            }],
159          ],
160        },
161      ],
162    },],  # OS=="linux" and chromeos==0
163    ['OS=="win" and fastbuild==0 and target_arch=="ia32" and syzyasan==1', {
164      'variables': {
165        'dest_dir': '<(PRODUCT_DIR)/syzygy',
166      },
167      'targets': [
168        {
169          'target_name': 'pdf_syzyasan',
170          'type': 'none',
171          'sources' : [],
172          'dependencies': [
173            'pdf',
174          ],
175          # Instrument PDFium with SyzyAsan.
176          'actions': [
177            {
178              'action_name': 'Instrument PDFium with SyzyAsan',
179              'inputs': [
180                '<(PRODUCT_DIR)/pdf.dll',
181              ],
182              'outputs': [
183                '<(dest_dir)/pdf.dll',
184                '<(dest_dir)/pdf.dll.pdb',
185              ],
186              'action': [
187                'python',
188                '<(DEPTH)/chrome/tools/build/win/syzygy_instrument.py',
189                '--mode', 'asan',
190                '--input_executable', '<(PRODUCT_DIR)/pdf.dll',
191                '--input_symbol', '<(PRODUCT_DIR)/pdf.dll.pdb',
192                '--destination_dir', '<(dest_dir)',
193              ],
194            },
195          ],
196        },
197      ],
198    }],  # OS=="win" and fastbuild==0 and target_arch=="ia32" and syzyasan==1
199  ],
200}
201