Revert "Fix incorrect CPDFSDK_PageView::CountAnnots()."
[pdfium.git] / build / standalone.gypi
1 # Copyright 2014 PDFium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 # Definitions to be used when building stand-alone PDFium binaries.
6
7 {
8   'variables': {
9     'component%': 'static_library',
10     'clang%': 0,
11     'asan%': 0,
12     'sanitizer_coverage%': 0,
13     'msvs_multi_core_compile%': '1',
14     'variables': {
15       'variables': {
16         'variables': {
17           'conditions': [
18             ['OS=="linux" or OS=="mac"', {
19               # This handles the Unix platforms we generally deal with.
20               # Anything else gets passed through, which probably won't work
21               # very well; such hosts should pass an explicit target_arch
22               # to gyp.
23               'host_arch%':
24                 '<!(uname -m | sed -e "s/i.86/ia32/;\
25                                        s/x86_64/x64/;\
26                                        s/amd64/x64/;\
27                                        s/arm.*/arm/;\
28                                        s/aarch64/arm64/;\
29                                        s/mips.*/mipsel/")',
30             }, {
31               # OS!="linux" and OS!="mac"
32               'host_arch%': 'ia32',
33             }],
34           ],
35         },
36         'host_arch%': '<(host_arch)',
37         'target_arch%': '<(host_arch)',
38       },
39       'host_arch%': '<(host_arch)',
40       'target_arch%': '<(target_arch)',
41     },
42     'clang_dir%': 'third_party/llvm-build/Release+Asserts',
43     # These two are needed by V8.
44     'host_arch%': '<(host_arch)',
45     'target_arch%': '<(target_arch)',
46     'werror%': '-Werror',
47     'v8_optimized_debug%': 0,
48     'v8_use_external_startup_data%': 0,
49     'icu_gyp_path': '../v8/third_party/icu/icu.gyp',
50     'conditions': [
51       ['OS == "win"', {
52         'os_posix%': 0,
53       }, {
54         'os_posix%': 1,
55       }],
56       ['OS=="linux" or OS=="mac"', {
57         'clang%': 1,
58       }, {
59         'clang%': 0,
60       }],
61     ],
62   },
63   'target_defaults': {
64     'default_configuration': 'Debug',
65     'configurations': {
66       'Debug': {
67         'cflags': [
68           '-g',
69           '-O0',
70           '-fdata-sections',
71           '-ffunction-sections',
72         ],
73         'msvs_settings': {
74           'VCCLCompilerTool': {
75             'Optimization': '0',
76             'conditions': [
77               ['component=="shared_library"', {
78                 'RuntimeLibrary': '3',  # /MDd
79               }, {
80                 'RuntimeLibrary': '1',  # /MTd
81               }],
82             ],
83           },
84           'VCLinkerTool': {
85             'LinkIncremental': '2',
86           },
87         },
88         'xcode_settings': {
89           'GCC_OPTIMIZATION_LEVEL': '0',  # -O0
90         },
91       },
92       'Release': {
93         'cflags': [
94           '-fno-strict-aliasing',
95         ],
96         'xcode_settings': {
97           'GCC_OPTIMIZATION_LEVEL': '3',  # -O3
98           'GCC_STRICT_ALIASING': 'NO',
99         },
100         'msvs_settings': {
101           'VCCLCompilerTool': {
102             'Optimization': '2',
103             'InlineFunctionExpansion': '2',
104             'EnableIntrinsicFunctions': 'true',
105             'FavorSizeOrSpeed': '0',
106             'StringPooling': 'true',
107             'conditions': [
108               ['component=="shared_library"', {
109                 'RuntimeLibrary': '2',  #/MD
110               }, {
111                 'RuntimeLibrary': '0',  #/MT
112               }],
113             ],
114           },
115           'VCLinkerTool': {
116             'LinkIncremental': '1',
117             'OptimizeReferences': '2',
118             'EnableCOMDATFolding': '2',
119           },
120         },
121         'conditions': [
122           ['OS=="linux"', {
123             'cflags': [
124               '-fdata-sections',
125               '-ffunction-sections',
126               '-O3',
127               '-O2',
128             ],
129           }],
130           ['OS=="android"', {
131             'cflags!': [
132               '-O3',
133               '-Os',
134             ],
135             'cflags': [
136               '-fdata-sections',
137               '-ffunction-sections',
138               '-O2',
139             ],
140           }],
141         ],  # conditions
142       },
143       'Debug_x64': {
144         'inherit_from': ['Debug'],
145         'msvs_configuration_platform': 'x64',
146       },
147       'Release_x64': {
148         'inherit_from': ['Release'],
149         'msvs_configuration_platform': 'x64',
150       },
151     },
152     'cflags': [
153       '-Wall',
154       '-W',
155       '-Wno-missing-field-initializers',
156       # Code might someday be made clean for -Wsign-compare, but for now
157       # this produces too much noise to be useful.
158       '-Wno-sign-compare',
159       '-Wno-unused-parameter',
160       '-pthread',
161       '-fno-exceptions',
162       '-fvisibility=hidden',
163     ],
164     'cflags_cc': [
165       '-std=gnu++0x',
166       '-Wnon-virtual-dtor',
167       '-fno-rtti',
168     ],
169     'ldflags': [
170       '-pthread',
171     ],
172     'defines': [
173       # Don't use deprecated V8 APIs anywhere.
174       'V8_DEPRECATION_WARNINGS',
175     ],
176     'msvs_cygwin_dirs': ['<(DEPTH)/v8/third_party/cygwin'],
177     'msvs_configuration_attributes': {
178       'OutputDirectory': '<(DEPTH)\\build\\$(ConfigurationName)',
179       'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)',
180       'CharacterSet': '1',
181     },
182     'msvs_disabled_warnings': [4800, 4996, 4456, 4457, 4458, 4459, 4091],
183     # 4456, 4457, 4458, 4459 are variable shadowing warnings that are new in
184     # VS2015.
185     # C4091: 'typedef ': ignored on left of 'X' when no variable is
186     #                    declared.
187     # This happens in a number of Windows headers with VS 2015.
188     'msvs_settings': {
189       'VCCLCompilerTool': {
190         'MinimalRebuild': 'false',
191         'BufferSecurityCheck': 'true',
192         'EnableFunctionLevelLinking': 'true',
193         'RuntimeTypeInfo': 'false',
194         'WarningLevel': '3',
195         'DebugInformationFormat': '3',
196         'Detect64BitPortabilityProblems': 'false',
197         'conditions': [
198           [ 'msvs_multi_core_compile', {
199             'AdditionalOptions': ['/MP'],
200           }],
201           ['component=="shared_library"', {
202             'ExceptionHandling': '1',  # /EHsc
203           }, {
204             'ExceptionHandling': '0',
205           }],
206           ['target_arch=="x64"', {
207             # 64-bit warnings need to be resolved.
208             # https://code.google.com/p/pdfium/issues/detail?id=101
209             'WarnAsError': 'false',
210           }, {
211             'WarnAsError': 'true',
212           }],
213         ],
214       },
215       'VCLibrarianTool': {
216         'AdditionalOptions': ['/ignore:4221'],
217       },
218       'VCLinkerTool': {
219         'GenerateDebugInformation': 'true',
220         'LinkIncremental': '1',
221         # SubSystem values:
222         #   0 == not set
223         #   1 == /SUBSYSTEM:CONSOLE
224         #   2 == /SUBSYSTEM:WINDOWS
225         'SubSystem': '1',
226       },
227     },
228     'xcode_settings': {
229       'ALWAYS_SEARCH_USER_PATHS': 'NO',
230       'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++11',
231       'GCC_CW_ASM_SYNTAX': 'NO',                # No -fasm-blocks
232       'GCC_DYNAMIC_NO_PIC': 'NO',               # No -mdynamic-no-pic
233                                                 # (Equivalent to -fPIC)
234       'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',        # -fno-exceptions
235       'GCC_ENABLE_CPP_RTTI': 'NO',              # -fno-rtti
236       'GCC_ENABLE_PASCAL_STRINGS': 'NO',        # No -mpascal-strings
237       # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
238       'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
239       'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES',      # -fvisibility=hidden
240       'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',     # -Werror
241       'GCC_WARN_NON_VIRTUAL_DESTRUCTOR': 'YES', # -Wnon-virtual-dtor
242       'SYMROOT': '<(DEPTH)/xcodebuild',
243       'USE_HEADERMAP': 'NO',
244       'OTHER_CFLAGS': [
245         '-fno-strict-aliasing',
246       ],
247       'WARNING_CFLAGS': [
248         '-Wall',
249         '-Wendif-labels',
250         '-W',
251         '-Wno-unused-parameter',
252       ],
253     },
254     'conditions': [
255       ['component=="shared_library"', {
256         'cflags': [
257           '-fPIC',
258         ],
259       }],
260       ['asan==1', {
261         'cflags': [
262           '-fsanitize=address',
263           '-gline-tables-only',
264         ],
265         'ldflags': [
266           '-fsanitize=address',
267         ],
268       }],
269       ['sanitizer_coverage!=0', {
270         'cflags': [
271           '-fsanitize-coverage=<(sanitizer_coverage)',
272         ],
273       }],
274       ['OS=="win"', {
275         'defines': [
276           'NOMINMAX',
277           '_CRT_SECURE_NO_DEPRECATE',
278           '_CRT_NONSTDC_NO_DEPRECATE',
279         ],
280         'conditions': [
281           ['component=="static_library"', {
282             'defines': [
283               '_HAS_EXCEPTIONS=0',
284             ],
285           }],
286         ],
287       }],  # OS=="win"
288       ['OS=="mac"', {
289         'target_conditions': [
290           ['_type!="static_library"', {
291             'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
292           }],
293         ],  # target_conditions
294       }],  # OS=="mac"
295       ['v8_use_external_startup_data==1', {
296         'defines': [
297           'V8_USE_EXTERNAL_STARTUP_DATA',
298         ],
299       }],  # v8_use_external_startup_data==1
300     ],
301   },
302   'xcode_settings': {
303     # See comment in Chromium's common.gypi for why this is needed.
304     'SYMROOT': '<(DEPTH)/xcodebuild',
305   },
306   'conditions': [
307     ['OS=="linux" or OS=="mac"', {
308       'conditions': [
309         ['clang==1', {
310           'make_global_settings': [
311             ['CC', '<(clang_dir)/bin/clang'],
312             ['CXX', '<(clang_dir)/bin/clang++'],
313           ],
314         }],
315       ],
316     }],  # OS=="linux" or OS=="mac"
317   ],
318 }