| epoger@google.com | ae85aea | 2011-05-31 13:50:51 +0000 | [diff] [blame^] | 1 | { | 
 | 2 |   'includes': [ | 
 | 3 |     'target_defaults.gypi', | 
 | 4 |   ], | 
 | 5 |   'targets': [ | 
 | 6 |     # Due to an unfortunate intersection of lameness between gcc and gyp, | 
 | 7 |     # we have to build the *_SSE2.cpp files in a separate target.  The | 
 | 8 |     # gcc lameness is that, in order to compile SSE2 intrinsics code, it | 
 | 9 |     # must be passed the -msse2 flag.  However, with this flag, it may | 
 | 10 |     # emit SSE2 instructions even for scalar code, such as the CPUID | 
 | 11 |     # test used to test for the presence of SSE2.  So that, and all other | 
 | 12 |     # code must be compiled *without* -msse2.  The gyp lameness is that it | 
 | 13 |     # does not allow file-specific CFLAGS, so we must create this extra | 
 | 14 |     # target for those files to be compiled with -msse2. | 
 | 15 |     # | 
 | 16 |     # This is actually only a problem on 32-bit Linux (all Intel Macs have | 
 | 17 |     # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit | 
 | 18 |     # SSE2 from instrinsics, while generating plain ol' 386 for everything | 
 | 19 |     # else).  However, to keep the .gyp file simple and avoid platform-specific | 
 | 20 |     # build breakage, we do this on all platforms. | 
 | 21 |  | 
 | 22 |     # For about the same reason, we need to compile the ARM opts files | 
 | 23 |     # separately as well. | 
 | 24 |     { | 
 | 25 |       'target_name': 'opts', | 
 | 26 |       'type': 'static_library', | 
 | 27 |       'include_dirs': [ | 
 | 28 |         '../include/config', | 
 | 29 |         '../include/core', | 
 | 30 |         '../src/core', | 
 | 31 |       ], | 
 | 32 |       'conditions': [ | 
 | 33 |         [ '(OS == "linux" or OS == "freebsd" or OS == "openbsd")', { | 
 | 34 |           'cflags': [ | 
 | 35 |             '-msse2', | 
 | 36 |           ], | 
 | 37 |         }], | 
 | 38 |       ], | 
 | 39 |       'sources': [ | 
 | 40 |         '../src/opts/SkBitmapProcState_opts_SSE2.cpp', | 
 | 41 |         '../src/opts/SkBlitRow_opts_SSE2.cpp', | 
 | 42 |         '../src/opts/SkUtils_opts_SSE2.cpp', | 
 | 43 |       ], | 
 | 44 |     }, | 
 | 45 |   ], | 
 | 46 | } | 
 | 47 |  | 
 | 48 | # Local Variables: | 
 | 49 | # tab-width:2 | 
 | 50 | # indent-tabs-mode:nil | 
 | 51 | # End: | 
 | 52 | # vim: set expandtab tabstop=2 shiftwidth=2: |