1 # Copyright 2012 the V8 project authors. All rights reserved. 2 # Redistribution and use in source and binary forms, with or without 3 # modification, are permitted provided that the following conditions are 4 # met: 5 # 6 # * Redistributions of source code must retain the above copyright 7 # notice, this list of conditions and the following disclaimer. 8 # * Redistributions in binary form must reproduce the above 9 # copyright notice, this list of conditions and the following 10 # disclaimer in the documentation and/or other materials provided 11 # with the distribution. 12 # * Neither the name of Google Inc. nor the names of its 13 # contributors may be used to endorse or promote products derived 14 # from this software without specific prior written permission. 15 # 16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28 # Definitions to be used when building stand-alone V8 binaries. 29 30 { 31 # We need to include toolchain.gypi here for third-party sources that don't 32 # directly include it themselves. 33 'includes': ['toolchain.gypi'], 34 'variables': { 35 'component%': 'static_library', 36 'clang%': 0, 37 'visibility%': 'hidden', 38 'v8_enable_backtrace%': 0, 39 'v8_enable_i18n_support%': 1, 40 'v8_deprecation_warnings': 1, 41 'msvs_multi_core_compile%': '1', 42 'mac_deployment_target%': '10.5', 43 'variables': { 44 'variables': { 45 'variables': { 46 'conditions': [ 47 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or \ 48 OS=="netbsd" or OS=="mac"', { 49 # This handles the Unix platforms we generally deal with. 50 # Anything else gets passed through, which probably won't work 51 # very well; such hosts should pass an explicit target_arch 52 # to gyp. 53 'host_arch%': 54 '<!(uname -m | sed -e "s/i.86/ia32/;\ 55 s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/mips.*/mipsel/")', 56 }, { 57 # OS!="linux" and OS!="freebsd" and OS!="openbsd" and 58 # OS!="netbsd" and OS!="mac" 59 'host_arch%': 'ia32', 60 }], 61 ], 62 }, 63 'host_arch%': '<(host_arch)', 64 'target_arch%': '<(host_arch)', 65 }, 66 'host_arch%': '<(host_arch)', 67 'target_arch%': '<(target_arch)', 68 'v8_target_arch%': '<(target_arch)', 69 }, 70 'host_arch%': '<(host_arch)', 71 'target_arch%': '<(target_arch)', 72 'v8_target_arch%': '<(v8_target_arch)', 73 'werror%': '-Werror', 74 75 # .gyp files or targets should set v8_code to 1 if they build V8 specific 76 # code, as opposed to external code. This variable is used to control such 77 # things as the set of warnings to enable, and whether warnings are treated 78 # as errors. 79 'v8_code%': 0, 80 81 # Speeds up Debug builds: 82 # 0 - Compiler optimizations off (debuggable) (default). This may 83 # be 5x slower than Release (or worse). 84 # 1 - Turn on compiler optimizations. This may be hard or impossible to 85 # debug. This may still be 2x slower than Release (or worse). 86 # 2 - Turn on optimizations, and also #undef DEBUG / #define NDEBUG 87 # (but leave V8_ENABLE_CHECKS and most other assertions enabled. 88 # This may cause some v8 tests to fail in the Debug configuration. 89 # This roughly matches the performance of a Release build and can 90 # be used by embedders that need to build their own code as debug 91 # but don't want or need a debug version of V8. This should produce 92 # near-release speeds. 93 'v8_optimized_debug%': 0, 94 95 # Relative path to icu.gyp from this file. 96 'icu_gyp_path': '../third_party/icu/icu.gyp', 97 98 'conditions': [ 99 ['(v8_target_arch=="arm" and host_arch!="arm") or \ 100 (v8_target_arch=="mipsel" and host_arch!="mipsel") or \ 101 (v8_target_arch=="x64" and host_arch!="x64") or \ 102 (OS=="android")', { 103 'want_separate_host_toolset': 1, 104 }, { 105 'want_separate_host_toolset': 0, 106 }], 107 ['OS == "win"', { 108 'os_posix%': 0, 109 }, { 110 'os_posix%': 1, 111 }], 112 ['(v8_target_arch=="ia32" or v8_target_arch=="x64") and \ 113 (OS=="linux" or OS=="mac")', { 114 'v8_enable_gdbjit%': 1, 115 }, { 116 'v8_enable_gdbjit%': 0, 117 }], 118 ], 119 # Default ARM variable settings. 120 'armv7%': 'default', 121 'arm_neon%': 0, 122 'arm_fpu%': 'vfpv3', 123 'arm_float_abi%': 'default', 124 'arm_thumb': 'default', 125 }, 126 'target_defaults': { 127 'variables': { 128 'v8_code%': '<(v8_code)', 129 }, 130 'default_configuration': 'Debug', 131 'configurations': { 132 'Debug': { 133 'cflags': [ '-g', '-O0' ], 134 }, 135 'Release': { 136 # Xcode insists on this empty entry. 137 }, 138 }, 139 'target_conditions': [ 140 ['v8_code == 0', { 141 'defines!': [ 142 'DEBUG', 143 ], 144 'conditions': [ 145 ['os_posix == 1 and OS != "mac"', { 146 'cflags!': [ 147 '-Werror', 148 ], 149 }], 150 ['OS == "mac"', { 151 'xcode_settings': { 152 'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO', # -Werror 153 }, 154 }], 155 ['OS == "win"', { 156 'msvs_settings': { 157 'VCCLCompilerTool': { 158 'WarnAsError': 'false', 159 }, 160 }, 161 }], 162 ], 163 }], 164 ], 165 }, 166 'conditions': [ 167 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \ 168 or OS=="netbsd"', { 169 'target_defaults': { 170 'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter', 171 '-pthread', '-fno-exceptions', '-pedantic' ], 172 'cflags_cc': [ '-Wnon-virtual-dtor', '-fno-rtti' ], 173 'ldflags': [ '-pthread', ], 174 'conditions': [ 175 [ 'OS=="linux"', { 176 'cflags': [ '-ansi' ], 177 }], 178 [ 'visibility=="hidden" and v8_enable_backtrace==0', { 179 'cflags': [ '-fvisibility=hidden' ], 180 }], 181 [ 'component=="shared_library"', { 182 'cflags': [ '-fPIC', ], 183 }], 184 ], 185 }, 186 }], 187 # 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" 188 # or OS=="netbsd"' 189 ['OS=="win"', { 190 'target_defaults': { 191 'defines': [ 192 '_CRT_SECURE_NO_DEPRECATE', 193 '_CRT_NONSTDC_NO_DEPRECATE', 194 ], 195 'conditions': [ 196 ['component=="static_library"', { 197 'defines': [ 198 '_HAS_EXCEPTIONS=0', 199 ], 200 }], 201 ], 202 'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'], 203 'msvs_disabled_warnings': [4355, 4800], 204 'msvs_settings': { 205 'VCCLCompilerTool': { 206 'MinimalRebuild': 'false', 207 'BufferSecurityCheck': 'true', 208 'EnableFunctionLevelLinking': 'true', 209 'RuntimeTypeInfo': 'false', 210 'WarningLevel': '3', 211 'WarnAsError': 'true', 212 'DebugInformationFormat': '3', 213 'Detect64BitPortabilityProblems': 'false', 214 'conditions': [ 215 [ 'msvs_multi_core_compile', { 216 'AdditionalOptions': ['/MP'], 217 }], 218 ['component=="shared_library"', { 219 'ExceptionHandling': '1', # /EHsc 220 }, { 221 'ExceptionHandling': '0', 222 }], 223 ], 224 }, 225 'VCLibrarianTool': { 226 'AdditionalOptions': ['/ignore:4221'], 227 }, 228 'VCLinkerTool': { 229 'AdditionalDependencies': [ 230 'ws2_32.lib', 231 ], 232 'GenerateDebugInformation': 'true', 233 'MapFileName': '$(OutDir)\\$(TargetName).map', 234 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib', 235 'FixedBaseAddress': '1', 236 # LinkIncremental values: 237 # 0 == default 238 # 1 == /INCREMENTAL:NO 239 # 2 == /INCREMENTAL 240 'LinkIncremental': '1', 241 # SubSystem values: 242 # 0 == not set 243 # 1 == /SUBSYSTEM:CONSOLE 244 # 2 == /SUBSYSTEM:WINDOWS 245 'SubSystem': '1', 246 247 'conditions': [ 248 ['v8_enable_i18n_support==1', { 249 'AdditionalDependencies': [ 250 'advapi32.lib', 251 ], 252 }], 253 ], 254 }, 255 }, 256 }, 257 }], # OS=="win" 258 ['OS=="mac"', { 259 'xcode_settings': { 260 'SYMROOT': '<(DEPTH)/xcodebuild', 261 }, 262 'target_defaults': { 263 'xcode_settings': { 264 'ALWAYS_SEARCH_USER_PATHS': 'NO', 265 'GCC_C_LANGUAGE_STANDARD': 'ansi', # -ansi 266 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks 267 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic 268 # (Equivalent to -fPIC) 269 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions 270 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti 271 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings 272 # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden 273 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES', 274 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden 275 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics 276 'GCC_VERSION': 'com.apple.compilers.llvmgcc42', 277 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof 278 'GCC_WARN_NON_VIRTUAL_DESTRUCTOR': 'YES', # -Wnon-virtual-dtor 279 # MACOSX_DEPLOYMENT_TARGET maps to -mmacosx-version-min 280 'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)', 281 'PREBINDING': 'NO', # No -Wl,-prebind 282 'SYMROOT': '<(DEPTH)/xcodebuild', 283 'USE_HEADERMAP': 'NO', 284 'OTHER_CFLAGS': [ 285 '-fno-strict-aliasing', 286 ], 287 'WARNING_CFLAGS': [ 288 '-Wall', 289 '-Wendif-labels', 290 '-W', 291 '-Wno-unused-parameter', 292 ], 293 }, 294 'conditions': [ 295 ['werror==""', { 296 'xcode_settings': {'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO'}, 297 }, { 298 'xcode_settings': {'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES'}, 299 }], 300 ], 301 'target_conditions': [ 302 ['_type!="static_library"', { 303 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']}, 304 }], 305 ], # target_conditions 306 }, # target_defaults 307 }], # OS=="mac" 308 ], 309 } 310