blob: e9b056580deddf541e3664aa74ff0c61c1b31e4f [file] [log] [blame]
Ben Murdoch3ef787d2012-04-12 10:51:47 +01001# Copyright 2012 the V8 project authors. All rights reserved.
Ben Murdoch69a99ed2011-11-30 16:03:39 +00002# 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 'variables': {
32 'library%': 'static_library',
33 'component%': 'static_library',
34 'visibility%': 'hidden',
35 'msvs_multi_core_compile%': '1',
36 'variables': {
37 'variables': {
Ben Murdoch3ef787d2012-04-12 10:51:47 +010038 'variables': {
39 'conditions': [
40 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
41 # This handles the Linux platforms we generally deal with.
42 # Anything else gets passed through, which probably won't work
43 # very well; such hosts should pass an explicit target_arch
44 # to gyp.
45 'host_arch%':
46 '<!(uname -m | sed -e "s/i.86/ia32/;\
47 s/x86_64/x64/;s/amd64/x64/;s/arm.*/arm/;s/mips.*/mips/")',
48 }, {
49 # OS!="linux" and OS!="freebsd" and OS!="openbsd" and OS!="netbsd"
50 'host_arch%': 'ia32',
51 }],
52 ],
53 },
54 'host_arch%': '<(host_arch)',
55 'target_arch%': '<(host_arch)',
Ben Murdoch69a99ed2011-11-30 16:03:39 +000056 },
57 'host_arch%': '<(host_arch)',
Ben Murdoch3ef787d2012-04-12 10:51:47 +010058 'target_arch%': '<(target_arch)',
Ben Murdoch69a99ed2011-11-30 16:03:39 +000059 'v8_target_arch%': '<(target_arch)',
60 },
61 'host_arch%': '<(host_arch)',
62 'target_arch%': '<(target_arch)',
63 'v8_target_arch%': '<(v8_target_arch)',
Ben Murdoch3ef787d2012-04-12 10:51:47 +010064 'werror%': '-Werror',
Ben Murdoch69a99ed2011-11-30 16:03:39 +000065 'conditions': [
66 ['(v8_target_arch=="arm" and host_arch!="arm") or \
Ben Murdoch3ef787d2012-04-12 10:51:47 +010067 (v8_target_arch=="mips" and host_arch!="mips") or \
Ben Murdoch69a99ed2011-11-30 16:03:39 +000068 (v8_target_arch=="x64" and host_arch!="x64")', {
69 'want_separate_host_toolset': 1,
70 }, {
71 'want_separate_host_toolset': 0,
72 }],
73 ],
74 },
75 'target_defaults': {
76 'default_configuration': 'Debug',
77 'configurations': {
78 'Debug': {
79 'cflags': [ '-g', '-O0' ],
80 },
81 },
82 },
83 'conditions': [
Ben Murdoch3ef787d2012-04-12 10:51:47 +010084 ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris" \
85 or OS=="netbsd"', {
Ben Murdoch69a99ed2011-11-30 16:03:39 +000086 'target_defaults': {
Ben Murdoch3ef787d2012-04-12 10:51:47 +010087 'cflags': [ '-Wall', '<(werror)', '-W', '-Wno-unused-parameter',
Ben Murdoch69a99ed2011-11-30 16:03:39 +000088 '-Wnon-virtual-dtor', '-pthread', '-fno-rtti',
89 '-fno-exceptions', '-pedantic' ],
90 'ldflags': [ '-pthread', ],
91 'conditions': [
Ben Murdoch69a99ed2011-11-30 16:03:39 +000092 [ 'OS=="linux"', {
93 'cflags': [ '-ansi' ],
94 }],
95 [ 'visibility=="hidden"', {
96 'cflags': [ '-fvisibility=hidden' ],
97 }],
98 [ 'component=="shared_library"', {
99 'cflags': [ '-fPIC', ],
100 }],
101 ],
102 },
Ben Murdoch3ef787d2012-04-12 10:51:47 +0100103 }],
104 # 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"
105 # or OS=="netbsd"'
Ben Murdoch69a99ed2011-11-30 16:03:39 +0000106 ['OS=="win"', {
107 'target_defaults': {
108 'defines': [
Ben Murdoch69a99ed2011-11-30 16:03:39 +0000109 '_CRT_SECURE_NO_DEPRECATE',
110 '_CRT_NONSTDC_NO_DEPRECATE',
111 ],
112 'conditions': [
113 ['component=="static_library"', {
114 'defines': [
115 '_HAS_EXCEPTIONS=0',
116 ],
117 }],
118 ],
119 'msvs_cygwin_dirs': ['<(DEPTH)/third_party/cygwin'],
120 'msvs_disabled_warnings': [4355, 4800],
121 'msvs_settings': {
122 'VCCLCompilerTool': {
123 'MinimalRebuild': 'false',
124 'BufferSecurityCheck': 'true',
125 'EnableFunctionLevelLinking': 'true',
126 'RuntimeTypeInfo': 'false',
127 'WarningLevel': '3',
128 'WarnAsError': 'true',
129 'DebugInformationFormat': '3',
130 'Detect64BitPortabilityProblems': 'false',
131 'conditions': [
132 [ 'msvs_multi_core_compile', {
133 'AdditionalOptions': ['/MP'],
134 }],
135 ['component=="shared_library"', {
136 'ExceptionHandling': '1', # /EHsc
137 }, {
138 'ExceptionHandling': '0',
139 }],
140 ],
141 },
142 'VCLibrarianTool': {
143 'AdditionalOptions': ['/ignore:4221'],
144 },
145 'VCLinkerTool': {
146 'AdditionalDependencies': [
147 'ws2_32.lib',
148 ],
149 'GenerateDebugInformation': 'true',
150 'MapFileName': '$(OutDir)\\$(TargetName).map',
151 'ImportLibrary': '$(OutDir)\\lib\\$(TargetName).lib',
152 'FixedBaseAddress': '1',
153 # LinkIncremental values:
154 # 0 == default
155 # 1 == /INCREMENTAL:NO
156 # 2 == /INCREMENTAL
157 'LinkIncremental': '1',
158 # SubSystem values:
159 # 0 == not set
160 # 1 == /SUBSYSTEM:CONSOLE
161 # 2 == /SUBSYSTEM:WINDOWS
162 'SubSystem': '1',
163 },
164 },
165 },
166 }], # OS=="win"
167 ['OS=="mac"', {
168 'target_defaults': {
169 'xcode_settings': {
170 'ALWAYS_SEARCH_USER_PATHS': 'NO',
171 'GCC_C_LANGUAGE_STANDARD': 'ansi', # -ansi
172 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks
173 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
174 # (Equivalent to -fPIC)
175 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions
176 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti
177 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings
178 # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
179 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
180 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden
181 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics
182 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', # -Werror
183 'GCC_VERSION': '4.2',
184 'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES', # -Wnewline-eof
185 'MACOSX_DEPLOYMENT_TARGET': '10.4', # -mmacosx-version-min=10.4
186 'PREBINDING': 'NO', # No -Wl,-prebind
187 'USE_HEADERMAP': 'NO',
188 'OTHER_CFLAGS': [
189 '-fno-strict-aliasing',
190 ],
191 'WARNING_CFLAGS': [
192 '-Wall',
193 '-Wendif-labels',
194 '-W',
195 '-Wno-unused-parameter',
196 '-Wnon-virtual-dtor',
197 ],
198 },
199 'target_conditions': [
200 ['_type!="static_library"', {
201 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']},
202 }],
203 ], # target_conditions
204 }, # target_defaults
205 }], # OS=="mac"
206 ],
207}