diff options
author | 2015-01-26 18:05:37 -0800 | |
---|---|---|
committer | 2015-01-26 18:05:37 -0800 | |
commit | c98fe3aa4f8c97c462c0eb6d9106fc37e48d7f82 (patch) | |
tree | eb0bc5e3986d08c6f1a6b6c78a0940a132d6077d /gyp | |
parent | 2d80dd264704984bca4c2915f31ef427033b0b9b (diff) |
Split src/opts source lists out of opts.gyp.
This should make it easier to keep our opts.gyp in sync with Chrome's GYP and GN.
BUG=skia:
Landing this without review as a mega-tryjob.
TBR=reed@google.com
Review URL: https://codereview.chromium.org/870353003
Diffstat (limited to 'gyp')
-rw-r--r-- | gyp/opts.gyp | 253 | ||||
-rw-r--r-- | gyp/opts.gypi | 83 | ||||
-rw-r--r-- | gyp/skia_lib.gyp | 2 |
3 files changed, 135 insertions, 203 deletions
diff --git a/gyp/opts.gyp b/gyp/opts.gyp index bfbf6b5109..7c62ba8c9b 100644 --- a/gyp/opts.gyp +++ b/gyp/opts.gyp @@ -1,24 +1,15 @@ -# Gyp file for opts projects { - 'targets': [ - # Due to an unfortunate intersection of lameness between gcc and gyp, - # we have to build the *_SSE2.cpp files in a separate target. The - # gcc lameness is that, in order to compile SSE2 intrinsics code, it - # must be passed the -msse2 flag. However, with this flag, it may - # emit SSE2 instructions even for scalar code, such as the CPUID - # test used to test for the presence of SSE2. So that, and all other - # code must be compiled *without* -msse2. The gyp lameness is that it - # does not allow file-specific CFLAGS, so we must create this extra - # target for those files to be compiled with -msse2. - # - # This is actually only a problem on 32-bit Linux (all Intel Macs have - # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit - # SSE2 from instrinsics, while generating plain ol' 386 for everything - # else). However, to keep the .gyp file simple and avoid platform-specific - # build breakage, we do this on all platforms. + # Source lists live in opts.gypi. This makes it easier to maintain our Chrome GYP/GN setup. + # (To be honest, I'm not sure why we need to include common.gypi. I thought it was automatic.) + 'variables': { + 'includes': [ 'common.gypi', 'opts.gypi' ], + }, + + # Generally we shove things into one 'opts' target conditioned on platform. + # If a particular platform needs some files built with different flags, + # those become separate targets: opts_ssse3, opts_sse41, opts_neon. - # For about the same reason, we need to compile the ARM opts files - # separately as well. + 'targets': [ { 'target_name': 'opts', 'product_name': 'skia_opts', @@ -32,66 +23,41 @@ '../src/core', '../src/opts', '../src/utils', + '../include/utils', ], 'conditions': [ [ 'skia_arch_type == "x86" and skia_os != "ios"', { + 'cflags': [ '-msse2' ], + 'dependencies': [ 'opts_ssse3', 'opts_sse41' ], + 'sources': [ '<@(sse2_sources)' ], + }], + + [ 'skia_arch_type == "mips"', { 'conditions': [ - [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos", "android"]', { - 'cflags': [ - '-msse2', - ], + [ '(mips_arch_variant == "mips32r2") and (mips_dsp == 1 or mips_dsp == 2)', { + 'sources': [ '<@(mips_dsp_sources)' ], + },{ + 'sources': [ '<@(none_sources)' ], }], - ], - 'include_dirs': [ - '../include/utils', - ], - 'dependencies': [ - 'opts_ssse3', - 'opts_sse4', - ], - 'sources': [ - '../src/opts/opts_check_x86.cpp', - '../src/opts/SkBitmapProcState_opts_SSE2.cpp', - '../src/opts/SkBitmapFilter_opts_SSE2.cpp', - '../src/opts/SkBlitRow_opts_SSE2.cpp', - '../src/opts/SkBlitRect_opts_SSE2.cpp', - '../src/opts/SkBlurImage_opts_SSE2.cpp', - '../src/opts/SkMorphology_opts_SSE2.cpp', - '../src/opts/SkTextureCompression_opts_none.cpp', - '../src/opts/SkUtils_opts_SSE2.cpp', - '../src/opts/SkXfermode_opts_SSE2.cpp', - ], + ] }], + + [ '(skia_arch_type == "arm" and arm_version < 7) \ + or (skia_os == "ios") \ + or (skia_os == "android" and skia_arch_type not in ["x86", "arm", "mips", "arm64"])', { + 'sources': [ '<@(none_sources)' ], + }], + [ 'skia_arch_type == "arm" and arm_version >= 7', { # The assembly uses the frame pointer register (r7 in Thumb/r11 in # ARM), the compiler doesn't like that. - 'cflags!': [ - '-fno-omit-frame-pointer', - '-mapcs-frame', - '-mapcs', - ], - 'cflags': [ - '-fomit-frame-pointer', - ], - 'variables': { - 'arm_neon_optional%': '<(arm_neon_optional>', - }, - 'sources': [ - '../src/opts/memset.arm.S', - '../src/opts/SkBitmapProcState_opts_arm.cpp', - '../src/opts/SkBlitMask_opts_arm.cpp', - '../src/opts/SkBlitRow_opts_arm.cpp', - '../src/opts/SkBlurImage_opts_arm.cpp', - '../src/opts/SkMorphology_opts_arm.cpp', - '../src/opts/SkTextureCompression_opts_arm.cpp', - '../src/opts/SkUtils_opts_arm.cpp', - '../src/opts/SkXfermode_opts_arm.cpp', - ], + 'cflags!': [ '-fno-omit-frame-pointer', '-mapcs-frame', '-mapcs' ], + 'cflags': [ '-fomit-frame-pointer' ], + 'variables': { 'arm_neon_optional%': '<(arm_neon_optional>' }, + 'sources': [ '<@(armv7_sources)' ], 'conditions': [ [ 'arm_neon == 1 or arm_neon_optional == 1', { - 'dependencies': [ - 'opts_neon', - ] + 'dependencies': [ 'opts_neon' ] }], [ 'skia_os == "ios"', { 'sources!': [ @@ -103,44 +69,11 @@ }], ], }], - [ 'skia_arch_type == "mips"', { - 'sources': [ - '../src/opts/SkBlitMask_opts_none.cpp', - '../src/opts/SkBlurImage_opts_none.cpp', - '../src/opts/SkMorphology_opts_none.cpp', - '../src/opts/SkUtils_opts_none.cpp', - '../src/opts/SkTextureCompression_opts_none.cpp', - '../src/opts/SkXfermode_opts_none.cpp', - ], - 'conditions': [ - [ '(mips_arch_variant == "mips32r2") \ - and (mips_dsp == 1 or mips_dsp == 2)', { - 'sources': [ - '../src/opts/SkBitmapProcState_opts_mips_dsp.cpp', - '../src/opts/SkBlitRow_opts_mips_dsp.cpp', - ], - }, { - 'sources': [ - '../src/opts/SkBitmapProcState_opts_none.cpp', - '../src/opts/SkBlitRow_opts_none.cpp', - ], - }], - ], - }], - [ '(skia_arch_type == "arm" and arm_version < 7) \ - or (skia_os == "ios") \ - or (skia_os == "android" and skia_arch_type not in ["x86", "arm", "mips", "arm64"])', { - 'sources': [ - '../src/opts/SkBitmapProcState_opts_none.cpp', - '../src/opts/SkBlitMask_opts_none.cpp', - '../src/opts/SkBlitRow_opts_none.cpp', - '../src/opts/SkBlurImage_opts_none.cpp', - '../src/opts/SkMorphology_opts_none.cpp', - '../src/opts/SkUtils_opts_none.cpp', - '../src/opts/SkTextureCompression_opts_none.cpp', - '../src/opts/SkXfermode_opts_none.cpp', - ], + + [ 'skia_arch_type == "arm64"', { + 'sources': [ '<@(armv64_sources)' ], }], + [ 'skia_android_framework', { 'cflags!': [ '-msse2', @@ -148,116 +81,44 @@ '-fomit-frame-pointer', ] }], - [ 'skia_arch_type == "arm64"', { - 'sources': [ - '../src/opts/SkBitmapProcState_arm_neon.cpp', - '../src/opts/SkBitmapProcState_matrixProcs_neon.cpp', - '../src/opts/SkBitmapProcState_opts_arm.cpp', - '../src/opts/SkBlitMask_opts_arm.cpp', - '../src/opts/SkBlitMask_opts_arm_neon.cpp', - '../src/opts/SkBlitRow_opts_arm.cpp', - '../src/opts/SkBlitRow_opts_arm_neon.cpp', - '../src/opts/SkBlurImage_opts_arm.cpp', - '../src/opts/SkBlurImage_opts_neon.cpp', - '../src/opts/SkMorphology_opts_arm.cpp', - '../src/opts/SkMorphology_opts_neon.cpp', - '../src/opts/SkTextureCompression_opts_none.cpp', - '../src/opts/SkUtils_opts_none.cpp', - '../src/opts/SkXfermode_opts_arm.cpp', - '../src/opts/SkXfermode_opts_arm_neon.cpp', - ], - }], ], }, - # For the same lame reasons as what is done for skia_opts, we have to - # create another target specifically for SSSE3 code as we would not want - # to compile the SSE2 code with -mssse3 which would potentially allow - # gcc to generate SSSE3 code. { 'target_name': 'opts_ssse3', 'product_name': 'skia_opts_ssse3', 'type': 'static_library', 'standalone_static_library': 1, - 'dependencies': [ - 'core.gyp:*', - 'effects.gyp:*' - ], - 'include_dirs': [ - '../src/core', - '../src/utils', - ], - 'sources': [ - '../src/opts/SkBitmapProcState_opts_SSSE3.cpp', - ], + 'dependencies': [ 'core.gyp:*' ], + 'include_dirs': [ '../src/core' ], + 'sources': [ '<@(ssse3_sources)' ], 'conditions': [ [ 'skia_os == "win"', { 'defines' : [ 'SK_CPU_SSE_LEVEL=31' ], }], - # (Mac has -mssse3 globally.) - [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos", "android"] \ - and not skia_android_framework', { - 'cflags': [ - '-mssse3', - ], + [ 'not skia_android_framework', { + 'cflags': [ '-mssse3' ], }], ], }, - # For the same lame reasons as what is done for skia_opts, we also have to - # create another target specifically for SSE4 code as we would not want - # to compile the SSE2 code with -msse4 which would potentially allow - # gcc to generate SSE4 code. { - 'target_name': 'opts_sse4', - 'product_name': 'skia_opts_sse4', + 'target_name': 'opts_sse41', + 'product_name': 'skia_opts_sse41', 'type': 'static_library', 'standalone_static_library': 1, - 'dependencies': [ - 'core.gyp:*', - 'effects.gyp:*' - ], - 'include_dirs': [ - '../src/core', - '../src/utils', - ], - 'sources': [ - '../src/opts/SkBlurImage_opts_SSE4.cpp', - ], + 'dependencies': [ 'core.gyp:*' ], + 'sources': [ '<@(sse41_sources)' ], 'conditions': [ - [ 'skia_arch_width == 64', { - 'sources': [ - '../src/opts/SkBlitRow_opts_SSE4_x64_asm.S', - ], - }], - [ 'skia_arch_width == 32', { - 'sources': [ - '../src/opts/SkBlitRow_opts_SSE4_asm.S', - ], - }], [ 'skia_os == "win"', { 'defines' : [ 'SK_CPU_SSE_LEVEL=41' ], }], - [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos", "android"] \ - and not skia_android_framework', { - 'cflags': [ - '-msse4.1', - ], + [ 'not skia_android_framework', { + 'cflags': [ '-msse4.1' ], }], [ 'skia_os == "mac"', { - 'xcode_settings': { - 'OTHER_CPLUSPLUSFLAGS!': [ - '-mssse3', - ], - 'OTHER_CPLUSPLUSFLAGS': [ - '-msse4.1', - ], - }, + 'xcode_settings': { 'GCC_ENABLE_SSE41_EXTENSIONS': 'YES' }, }], ], }, - # NEON code must be compiled with -mfpu=neon which also affects scalar - # code. To support dynamic NEON code paths, we need to build all - # NEON-specific sources in a separate static library. The situation - # is very similar to the SSSE3 and SSE4 one. { 'target_name': 'opts_neon', 'product_name': 'skia_opts_neon', @@ -272,6 +133,7 @@ '../src/opts', '../src/utils', ], + 'sources': [ '<@(neon_sources)' ], 'cflags!': [ '-fno-omit-frame-pointer', '-mfpu=vfp', # remove them all, just in case. @@ -290,19 +152,6 @@ '-march=armv7-a', '-Wl,--fix-cortex-a8', ], - 'sources': [ - '../src/opts/memset16_neon.S', - '../src/opts/memset32_neon.S', - '../src/opts/SkBitmapProcState_arm_neon.cpp', - '../src/opts/SkBitmapProcState_matrixProcs_neon.cpp', - '../src/opts/SkBitmapProcState_matrix_neon.h', - '../src/opts/SkBlitMask_opts_arm_neon.cpp', - '../src/opts/SkBlitRow_opts_arm_neon.cpp', - '../src/opts/SkBlurImage_opts_neon.cpp', - '../src/opts/SkMorphology_opts_neon.cpp', - '../src/opts/SkTextureCompression_opts_neon.cpp', - '../src/opts/SkXfermode_opts_arm_neon.cpp', - ], }, ], } diff --git a/gyp/opts.gypi b/gyp/opts.gypi new file mode 100644 index 0000000000..f6257a97b4 --- /dev/null +++ b/gyp/opts.gypi @@ -0,0 +1,83 @@ +{ + 'none_sources': [ + '<(skia_src_path)/opts/SkBitmapProcState_opts_none.cpp', + '<(skia_src_path)/opts/SkBlitMask_opts_none.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_none.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_none.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_none.cpp', + '<(skia_src_path)/opts/SkTextureCompression_opts_none.cpp', + '<(skia_src_path)/opts/SkUtils_opts_none.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_none.cpp', + ], + + 'armv7_sources': [ + '<(skia_src_path)/opts/SkBitmapProcState_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlitMask_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_arm.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_arm.cpp', + '<(skia_src_path)/opts/SkTextureCompression_opts_arm.cpp', + '<(skia_src_path)/opts/SkUtils_opts_arm.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_arm.cpp', + '<(skia_src_path)/opts/memset.arm.S', + ], + 'neon_sources': [ + '<(skia_src_path)/opts/SkBitmapProcState_arm_neon.cpp', + '<(skia_src_path)/opts/SkBitmapProcState_matrixProcs_neon.cpp', + '<(skia_src_path)/opts/SkBlitMask_opts_arm_neon.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_arm_neon.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_neon.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_neon.cpp', + '<(skia_src_path)/opts/SkTextureCompression_opts_neon.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_arm_neon.cpp', + '<(skia_src_path)/opts/memset16_neon.S', + '<(skia_src_path)/opts/memset32_neon.S', + ], + 'arm64_sources': [ + '<(skia_src_path)/opts/SkBitmapProcState_arm_neon.cpp', + '<(skia_src_path)/opts/SkBitmapProcState_matrixProcs_neon.cpp', + '<(skia_src_path)/opts/SkBitmapProcState_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlitMask_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlitMask_opts_arm_neon.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_arm_neon.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_arm.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_neon.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_arm.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_neon.cpp', + '<(skia_src_path)/opts/SkTextureCompression_opts_none.cpp', + '<(skia_src_path)/opts/SkUtils_opts_none.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_arm.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_arm_neon.cpp', + ], + + 'mips_dsp_sources': [ + '<(skia_src_path)/opts/SkBitmapProcState_opts_mips_dsp.cpp', + '<(skia_src_path)/opts/SkBlitMask_opts_none.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_mips_dsp.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_none.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_none.cpp', + '<(skia_src_path)/opts/SkTextureCompression_opts_none.cpp', + '<(skia_src_path)/opts/SkUtils_opts_none.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_none.cpp', + ], + + 'sse2_sources': [ + '<(skia_src_path)/opts/SkBitmapFilter_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkBitmapProcState_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkBlitRect_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkBlitRow_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkBlurImage_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkMorphology_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkTextureCompression_opts_none.cpp', + '<(skia_src_path)/opts/SkUtils_opts_SSE2.cpp', + '<(skia_src_path)/opts/SkXfermode_opts_SSE2.cpp', + '<(skia_src_path)/opts/opts_check_x86.cpp', + ], + 'ssse3_sources': [ + '<(skia_src_path)/opts/SkBitmapProcState_opts_SSSE3.cpp', + ], + 'sse41_sources': [ + '<(skia_src_path)/opts/SkBlurImage_opts_SSE4.cpp', + ], +} diff --git a/gyp/skia_lib.gyp b/gyp/skia_lib.gyp index 6bf6bc0332..9f6187152d 100644 --- a/gyp/skia_lib.gyp +++ b/gyp/skia_lib.gyp @@ -15,7 +15,7 @@ [ 'skia_arch_type == "x86" and skia_os != "android"', { 'component_libs': [ 'opts.gyp:opts_ssse3', - 'opts.gyp:opts_sse4', + 'opts.gyp:opts_sse41', ], }], [ 'arm_neon == 1', { |