| Index: build/common.gypi
|
| diff --git a/build/common.gypi b/build/common.gypi
|
| index bebff1a2bf8f60ed17087d21b223b006e3b93bda..c11509c6176b963e62bee732c26ce8a494054cda 100644
|
| --- a/build/common.gypi
|
| +++ b/build/common.gypi
|
| @@ -1422,74 +1422,78 @@
|
| },
|
| },
|
| 'conditions': [
|
| - [ 'target_arch=="ia32"', {
|
| - 'asflags': [
|
| - # Needed so that libs with .s files (e.g. libicudata.a)
|
| - # are compatible with the general 32-bit-ness.
|
| - '-32',
|
| - ],
|
| - # All floating-point computations on x87 happens in 80-bit
|
| - # precision. Because the C and C++ language standards allow
|
| - # the compiler to keep the floating-point values in higher
|
| - # precision than what's specified in the source and doing so
|
| - # is more efficient than constantly rounding up to 64-bit or
|
| - # 32-bit precision as specified in the source, the compiler,
|
| - # especially in the optimized mode, tries very hard to keep
|
| - # values in x87 floating-point stack (in 80-bit precision)
|
| - # as long as possible. This has important side effects, that
|
| - # the real value used in computation may change depending on
|
| - # how the compiler did the optimization - that is, the value
|
| - # kept in 80-bit is different than the value rounded down to
|
| - # 64-bit or 32-bit. There are possible compiler options to make
|
| - # this behavior consistent (e.g. -ffloat-store would keep all
|
| - # floating-values in the memory, thus force them to be rounded
|
| - # to its original precision) but they have significant runtime
|
| - # performance penalty.
|
| - #
|
| - # -mfpmath=sse -msse2 makes the compiler use SSE instructions
|
| - # which keep floating-point values in SSE registers in its
|
| - # native precision (32-bit for single precision, and 64-bit for
|
| - # double precision values). This means the floating-point value
|
| - # used during computation does not change depending on how the
|
| - # compiler optimized the code, since the value is always kept
|
| - # in its specified precision.
|
| - 'conditions': [
|
| - ['branding=="Chromium" and disable_sse2==0', {
|
| - 'cflags': [
|
| - '-march=pentium4',
|
| - '-msse2',
|
| - '-mfpmath=sse',
|
| + ['target_arch=="ia32"', {
|
| + 'target_conditions': [
|
| + ['_toolset=="target"', {
|
| + 'asflags': [
|
| + # Needed so that libs with .s files (e.g. libicudata.a)
|
| + # are compatible with the general 32-bit-ness.
|
| + '-32',
|
| ],
|
| - }],
|
| - # ChromeOS targets Pinetrail, which is sse3, but most of the
|
| - # benefit comes from sse2 so this setting allows ChromeOS
|
| - # to build on other CPUs. In the future -march=atom would help
|
| - # but requires a newer compiler.
|
| - ['chromeos==1 and disable_sse2==0', {
|
| + # All floating-point computations on x87 happens in 80-bit
|
| + # precision. Because the C and C++ language standards allow
|
| + # the compiler to keep the floating-point values in higher
|
| + # precision than what's specified in the source and doing so
|
| + # is more efficient than constantly rounding up to 64-bit or
|
| + # 32-bit precision as specified in the source, the compiler,
|
| + # especially in the optimized mode, tries very hard to keep
|
| + # values in x87 floating-point stack (in 80-bit precision)
|
| + # as long as possible. This has important side effects, that
|
| + # the real value used in computation may change depending on
|
| + # how the compiler did the optimization - that is, the value
|
| + # kept in 80-bit is different than the value rounded down to
|
| + # 64-bit or 32-bit. There are possible compiler options to
|
| + # make this behavior consistent (e.g. -ffloat-store would keep
|
| + # all floating-values in the memory, thus force them to be
|
| + # rounded to its original precision) but they have significant
|
| + # runtime performance penalty.
|
| + #
|
| + # -mfpmath=sse -msse2 makes the compiler use SSE instructions
|
| + # which keep floating-point values in SSE registers in its
|
| + # native precision (32-bit for single precision, and 64-bit
|
| + # for double precision values). This means the floating-point
|
| + # value used during computation does not change depending on
|
| + # how the compiler optimized the code, since the value is
|
| + # always kept in its specified precision.
|
| + 'conditions': [
|
| + ['branding=="Chromium" and disable_sse2==0', {
|
| + 'cflags': [
|
| + '-march=pentium4',
|
| + '-msse2',
|
| + '-mfpmath=sse',
|
| + ],
|
| + }],
|
| + # ChromeOS targets Pinetrail, which is sse3, but most of the
|
| + # benefit comes from sse2 so this setting allows ChromeOS
|
| + # to build on other CPUs. In the future -march=atom would
|
| + # help but requires a newer compiler.
|
| + ['chromeos==1 and disable_sse2==0', {
|
| + 'cflags': [
|
| + '-msse2',
|
| + ],
|
| + }],
|
| + # Install packages have started cropping up with
|
| + # different headers between the 32-bit and 64-bit
|
| + # versions, so we have to shadow those differences off
|
| + # and make sure a 32-bit-on-64-bit build picks up the
|
| + # right files.
|
| + ['host_arch!="ia32"', {
|
| + 'include_dirs+': [
|
| + '/usr/include32',
|
| + ],
|
| + }],
|
| + ],
|
| + # -mmmx allows mmintrin.h to be used for mmx intrinsics.
|
| + # video playback is mmx and sse2 optimized.
|
| 'cflags': [
|
| - '-msse2',
|
| + '-m32',
|
| + '-mmmx',
|
| ],
|
| - }],
|
| - # Install packages have started cropping up with
|
| - # different headers between the 32-bit and 64-bit
|
| - # versions, so we have to shadow those differences off
|
| - # and make sure a 32-bit-on-64-bit build picks up the
|
| - # right files.
|
| - ['host_arch!="ia32"', {
|
| - 'include_dirs+': [
|
| - '/usr/include32',
|
| + 'ldflags': [
|
| + '-m32',
|
| ],
|
| }],
|
| ],
|
| - # -mmmx allows mmintrin.h to be used for mmx intrinsics.
|
| - # video playback is mmx and sse2 optimized.
|
| - 'cflags': [
|
| - '-m32',
|
| - '-mmmx',
|
| - ],
|
| - 'ldflags': [
|
| - '-m32',
|
| - ],
|
| }],
|
| ['target_arch=="arm"', {
|
| 'target_conditions': [
|
|
|