skia2/gyp/common_conditions.gypi

613 lines
19 KiB
Plaintext
Raw Normal View History

# conditions used in both common.gypi and skia.gyp in chromium
#
{
'defines': [
'SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=<(skia_static_initializers)',
'SK_SUPPORT_GPU=<(skia_gpu)',
'SK_SUPPORT_OPENCL=<(skia_opencl)',
'SK_FORCE_DISTANCEFIELD_FONTS=<(skia_force_distancefield_fonts)',
],
'conditions' : [
ARM Skia NEON patches - 35 - First AArch64 support Aarch64 support This change contains the necessary modifications to have Skia build and run properly on an ARMv8 processor in aarch64 execution state. Here's a list of the changes: - add an arm64 target to the build system + SK_CPU_ARM64 flag - MatrixTest was failing when built in Release mode. Fused MAC instructions were generated which made some intermediate results more accurate. As the test relies on result comparison, the more precise results when compared to others led to a gap bigger than what was tolerated. As I don't know if some actual skia code relies on results being comparable, I've disabled fused MAC instruction with -ffp-contract=off for arm64. - Modify include/core/SkOnce.h to have barriers work. - SK_CPU_ARM64 implies SK_ARM_NEON_MODE_ALWAYS. - use existing Xfermode optimisations with modifications that can be removed in the future when toolchains are ready. Also save a few instructions is two Xfermodes (will apply to ARM too). - use existing SkBoxBlur and SkMorphology optimisations. - use existing SkBlitMask optimisations - use existing BitmapProcState and Convolution optimisations. Future changes will include: - Blitters (only partialy merged upstream) - SkUtils (there's little value in sending asm optimisations without having them benchmarked on real hardware). Signed-off-by: Kevin PETIT <kevin.petit@arm.com> BUG=skia: Committed: http://code.google.com/p/skia/source/detail?r=13980 R=djsollen@google.com, reed@google.com, mtklein@google.com, halcanary@google.com Author: kevin.petit@arm.com Review URL: https://codereview.chromium.org/143423004 git-svn-id: http://skia.googlecode.com/svn/trunk@14025 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-02 15:03:56 +00:00
[ 'skia_arch_type == "arm64"', {
'cflags': [
'-ffp-contract=off',
],
}],
[ 'skia_os == "win"',
{
'defines': [
'SK_BUILD_FOR_WIN32',
'_CRT_SECURE_NO_WARNINGS',
'GR_GL_FUNCTION_TYPE=__stdcall',
],
'msvs_cygwin_shell': 0,
'msvs_settings': {
'VCCLCompilerTool': {
'WarningLevel': '3',
'ProgramDataBaseFileName': '$(OutDir)\\$(ProjectName).pdb',
'DebugInformationFormat': '3',
'ExceptionHandling': '0',
'AdditionalOptions': [ '/MP', ],
},
'VCLinkerTool': {
'AdditionalDependencies': [
'OpenGL32.lib',
'usp10.lib',
# Prior to gyp r1584, the following were included automatically.
'kernel32.lib',
'gdi32.lib',
'winspool.lib',
'comdlg32.lib',
'advapi32.lib',
'shell32.lib',
'ole32.lib',
'oleaut32.lib',
'user32.lib',
'uuid.lib',
'odbc32.lib',
'odbccp32.lib',
'DelayImp.lib',
],
},
},
'configurations': {
'Debug': {
'msvs_settings': {
'VCCLCompilerTool': {
'DebugInformationFormat': '4', # editAndContiue (/ZI)
'Optimization': '0', # optimizeDisabled (/Od)
'PreprocessorDefinitions': ['_DEBUG'],
'RuntimeLibrary': '3', # rtMultiThreadedDebugDLL (/MDd)
'RuntimeTypeInfo': 'false', # /GR-
},
'VCLinkerTool': {
'GenerateDebugInformation': 'true', # /DEBUG
'LinkIncremental': '2', # /INCREMENTAL
},
},
},
'Release': {
'msvs_settings': {
'VCCLCompilerTool': {
'DebugInformationFormat': '3', # programDatabase (/Zi)
'Optimization': '<(skia_release_optimization_level)',
'WholeProgramOptimization': 'true', #/GL
# Changing the floating point model requires rebaseling gm images
#'FloatingPointModel': '2', # fast (/fp:fast)
'FavorSizeOrSpeed': '1', # speed (/Ot)
'PreprocessorDefinitions': ['NDEBUG'],
'RuntimeLibrary': '2', # rtMultiThreadedDLL (/MD)
'EnableEnhancedInstructionSet': '2',# /arch:SSE2
'RuntimeTypeInfo': 'false', # /GR-
},
'VCLinkerTool': {
'GenerateDebugInformation': 'true', # /DEBUG
'LinkTimeCodeGeneration': '1', # useLinkTimeCodeGeneration /LTCG
},
'VCLibrarianTool': {
'LinkTimeCodeGeneration': 'true', # useLinkTimeCodeGeneration /LTCG
},
},
},
# Gyp's ninja generator depends on these specially named
# configurations to build 64-bit on Windows.
# See http://skbug.com/2348
#
# We handle the 64- vs 32-bit variations elsewhere, so I think it's
# OK for us to just make these inherit non-archwidth-specific
# configurations without modification.
'Debug_x64': {
'inherit_from': ['Debug'],
},
'Release_x64': {
'inherit_from': ['Release'],
},
'Release_Developer_x64': {
'inherit_from': ['Release_Developer'],
},
},
'conditions' : [
[ 'skia_arch_width == 64', {
'msvs_configuration_platform': 'x64',
}],
[ 'skia_arch_width == 32', {
'msvs_configuration_platform': 'Win32',
}],
[ 'skia_warnings_as_errors', {
'msvs_settings': {
'VCCLCompilerTool': {
'WarnAsError': 'true',
'AdditionalOptions': [
'/we4189', # initialized but unused var warning
],
},
},
}],
[ 'skia_win_exceptions', {
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': [
'/EHsc',
],
},
},
}],
],
},
],
# The following section is common to linux + derivatives and android
[ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos", "android"]',
{
'cflags': [
'-g',
'-fno-exceptions',
'-fstrict-aliasing',
'-Wall',
'-Wextra',
'-Winit-self',
'-Wpointer-arith',
'-Wno-unused-parameter',
],
'cflags_cc': [
'-fno-rtti',
'-Wnon-virtual-dtor',
],
'conditions': [
[ 'skia_android_framework==0', {
'cflags': [
# This flag is not supported by Android build system.
'-Wno-c++11-extensions',
],
}],
[ 'skia_warnings_as_errors', {
'cflags': [
'-Werror',
],
}],
# For profiling; reveals some costs, exaggerates others (e.g. trivial setters & getters).
[ 'skia_disable_inlining', {
'cflags': [
'-fno-inline',
'-fno-default-inline',
'-finline-limit=0',
'-fno-omit-frame-pointer',
],
}],
[ 'skia_arch_type == "arm" and arm_thumb == 1', {
'cflags': [
'-mthumb',
],
# The --fix-cortex-a8 switch enables a link-time workaround for
# an erratum in certain Cortex-A8 processors. The workaround is
# enabled by default if you target the ARM v7-A arch profile.
# It can be enabled otherwise by specifying --fix-cortex-a8, or
# disabled unconditionally by specifying --no-fix-cortex-a8.
#
# The erratum only affects Thumb-2 code.
'conditions': [
[ 'arm_version < 7', {
'ldflags': [
'-Wl,--fix-cortex-a8',
],
}],
],
}],
[ 'skia_arch_type == "arm" and arm_version >= 7', {
'cflags': [
'-march=armv7-a',
],
'ldflags': [
'-march=armv7-a',
],
'conditions': [
[ 'arm_neon == 1', {
'defines': [
'__ARM_HAVE_NEON',
],
'cflags': [
'-mfpu=neon',
],
}],
[ 'arm_neon_optional == 1', {
'defines': [
'__ARM_HAVE_OPTIONAL_NEON_SUPPORT',
],
}],
[ 'skia_os != "chromeos"', {
'cflags': [
'-mfloat-abi=softfp',
],
}],
],
}],
],
},
],
['skia_android_framework', {
'cflags': [
# Skia does not enforce this usage pattern so we disable it here to avoid
# unecessary log spew when building
'-Wno-unused-parameter',
# Android's -D_FORTIFY_SOURCE=2 extensions are incompatibile with SkString.
# Revert to -D_FORTIFY_SOURCE=1
'-U_FORTIFY_SOURCE',
'-D_FORTIFY_SOURCE=1',
],
# Remove flags which are either unnecessary or problematic for the
# Android framework build. Many of these flags are removed simply because
# they were not previously in the Android framework makefile, and we did
# did not intend to add them when generating the makefile.
# TODO (scroggo): Investigate whether any of these flags are actually
# needed/would be beneficial.
'cflags!': [
# Android has one makefile, used for both debugging (after manual
# modification) and release. Turn off debug info by default.
'-g',
'-march=armv7-a',
'-mthumb',
'-mfpu=neon',
'-mfloat-abi=softfp',
# This flag is not supported by Android build system.
'-Wno-c++11-extensions',
'-fno-exceptions',
'-fstrict-aliasing',
# Remove flags to turn on warnings, since most people building Android
# are not focused on Skia and do not need the extra warning info.
'-Wall',
'-Wextra',
'-Winit-self',
'-Wpointer-arith',
],
'cflags_cc!': [
'-fno-rtti',
'-Wnon-virtual-dtor',
],
'defines': [
'DCT_IFAST_SUPPORTED',
# using freetype's embolden allows us to adjust fake bold settings at
# draw-time, at which point we know which SkTypeface is being drawn
'SK_USE_FREETYPE_EMBOLDEN',
Updates to Android.mk generation. Generate SkUserConfig. Include arm64 as another build flavor. Add tests. gyp/common_conditions.gypi: Add conditions for Android framework. These will get written into the generated SkUserConfig. include/core/SkUserConfig.h: Generated version that will ultimately be checked into Android (but not here). platform_tools/android/bin/gyp_to_android.py: Generate SkUserConfig. Add arm64 (note that arm64 is not currently respected by our gyp files, so it results in use _none.cpp for the various opts). Reset the common defines, which are now passed to the generated SkUserConfig. platform_tools/android/gyp_gen/generate_user_config.py: New script to generate SkUserConfig.h. platform_tools/android/gyp_gen/gypd_parser.py: Fix a lint error (unused import). platform_tools/android/gyp_gen/makefile_writer.py: Append any remaining DEFINES to LOCAL_CFLAGS (previously this was done during parsing). Add a warning for arm64 (corresponds to downstream Android.mk). platform_tools/android/gyp_gen/vars_dict_lib.py: Add OrderedSet.reset(). Add DEFINES to VarsDict. platform_tools/android/tests/expectations/: Add and update expectations files. platform_tools/android/tests/generate_user_config_tests.py: New test for generate_user_config.py platform_tools/android/tests/inputs/SkUserConfig.h: Input to the new test, so we don't have to update the expectations each time the real SkUserConfig.h changes. platform_tools/android/tests/makefile_writer_tests.py: Add a way to rebaseline test_write_local_vars, which has changed. Refactor EXPECTATIONS_DIR and compare_files into a separate file for sharing with generate_user_config_tests.py. platform_tools/android/tests/utils.py: Common code for tests. platform_tools/android/tests/var_dict_tests.py: Use a for loop to test the new key (DEFINES) and future proof this test to test any new keys in the future. BUG=skia:1975 R=djsollen@google.com, halcanary@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/198063002 git-svn-id: http://skia.googlecode.com/svn/trunk@13975 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-03-28 15:59:04 +00:00
'SK_SFNTLY_SUBSETTER "sample/chromium/font_subsetter.h"',
# When built as part of the system image we can enable certian non-NDK
# compliant optimizations.
'SK_BUILD_FOR_ANDROID_FRAMEWORK',
# Optimizations for chromium (m30)
'GR_GL_CUSTOM_SETUP_HEADER "gl/GrGLConfig_chrome.h"',
'IGNORE_ROT_AA_RECT_OPT',
# Disable this check because it is too strict for some chromium-specific
# subclasses of SkPixelRef. See bug: crbug.com/171776.
'SK_DISABLE_PIXELREF_LOCKCOUNT_BALANCE_CHECK',
'SkLONGLONG int64_t',
'SK_DEFAULT_FONT_CACHE_LIMIT (768 * 1024)',
'SK_ATOMICS_PLATFORM_H "../../src/ports/SkAtomics_android.h"',
'SK_MUTEX_PLATFORM_H "../../src/ports/SkMutex_pthread.h"',
# FIXME: b/13729784: Need to rework LayerRasterizer.cpp
'SK_SUPPORT_LEGACY_LAYERRASTERIZER_API',
# Temporary until https:#googleplex-android-review.git.corp.google.com/#/c/442220/
# lands.
'SK_SUPPORT_LEGACY_GETTOTALCLIP',
# Still need to switch Android to the new name for N32.
'kNative_8888_SkColorType kN32_SkColorType',
'SK_SUPPORT_LEGACY_PICTURE_CAN_RECORD',
],
}],
[ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "nacl", "chromeos"]',
{
'defines': [
'SK_SAMPLES_FOR_X',
'SK_BUILD_FOR_UNIX',
],
'configurations': {
'Coverage': {
'cflags': ['--coverage'],
'ldflags': ['--coverage'],
},
'Debug': {
},
'Release': {
'cflags': [
'-O<(skia_release_optimization_level)',
],
'defines': [ 'NDEBUG' ],
},
},
'conditions' : [
[ 'skia_shared_lib', {
'cflags': [
'-fPIC',
],
'defines': [
'SKIA_DLL',
'SKIA_IMPLEMENTATION=1',
],
}],
[ 'skia_os == "nacl"', {
'defines': [
'SK_BUILD_FOR_NACL',
],
'variables': {
'nacl_sdk_root': '<!(echo ${NACL_SDK_ROOT})',
},
'link_settings': {
'libraries': [
'-lppapi',
'-lppapi_cpp',
'-lnosys',
'-pthread',
],
'ldflags': [
'-L<(nacl_sdk_root)/lib/newlib_x86_<(skia_arch_width)/Release',
'-L<(nacl_sdk_root)/ports/lib/newlib_x86_<(skia_arch_width)/Release',
],
},
}, { # skia_os != "nacl"
'link_settings': {
'ldflags': [
'-lstdc++',
'-lm',
],
},
}],
[ 'skia_os != "chromeos"', {
'conditions': [
[ 'skia_arch_width == 64 and skia_arch_type == "x86"', {
'cflags': [
'-m64',
],
'ldflags': [
'-m64',
],
}],
[ 'skia_arch_width == 32 and skia_arch_type == "x86"', {
'cflags': [
'-m32',
],
'ldflags': [
'-m32',
],
}],
],
}],
# Enable asan, tsan, etc.
[ 'skia_sanitizer', {
'cflags': [
'-fsanitize=<(skia_sanitizer)',
],
'ldflags': [
'-fsanitize=<(skia_sanitizer)',
],
'conditions' : [
[ 'skia_sanitizer == "thread"', {
'defines': [ 'DYNAMIC_ANNOTATIONS_ENABLED=1' ],
'cflags': [ '-fPIC' ],
'target_conditions': [
[ '_type == "executable"', {
'cflags': [ '-fPIE' ],
'ldflags': [ '-pie' ],
}],
],
}],
],
}],
[ 'skia_clang_build', {
'cflags': [
# Extra warnings we like but that only Clang knows about.
'-Wstring-conversion',
],
}],
[ 'skia_keep_frame_pointer', {
'cflags': [ '-fno-omit-frame-pointer' ],
}],
],
},
],
[ 'skia_os == "mac"',
{
'defines': [
'SK_BUILD_FOR_MAC',
],
'conditions' : [
[ 'skia_arch_width == 64', {
'xcode_settings': {
'ARCHS': ['x86_64'],
},
}],
[ 'skia_arch_width == 32', {
'xcode_settings': {
'ARCHS': ['i386'],
},
}],
[ 'skia_warnings_as_errors', {
'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS': [
'-Werror',
'-Wall',
'-Wextra',
'-Wno-unused-parameter',
'-Wno-uninitialized', # Disabled because we think GCC 4.2 is bad at this.
],
},
}],
],
'configurations': {
'Coverage': {
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '0',
'GCC_GENERATE_TEST_COVERAGE_FILES': 'YES',
'GCC_INSTRUMENT_PROGRAM_FLOW_ARCS' : 'YES',
},
},
'Debug': {
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '0',
},
},
'Release': {
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '<(skia_release_optimization_level)',
},
'defines': [ 'NDEBUG' ],
},
},
'xcode_settings': {
'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO',
'conditions': [
[ 'skia_osx_deployment_target==""', {
'MACOSX_DEPLOYMENT_TARGET': '10.6', # -mmacos-version-min, passed in environment to ld.
}, {
'MACOSX_DEPLOYMENT_TARGET': '<(skia_osx_deployment_target)',
}],
],
# trying to get this to work, but it needs clang I think...
# 'WARNING_CFLAGS': '-Wexit-time-destructors',
'CLANG_WARN_CXX0X_EXTENSIONS': 'NO',
'GCC_WARN_64_TO_32_BIT_CONVERSION': 'YES',
'GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS': 'YES',
'GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO': 'YES',
'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES',
'GCC_WARN_ABOUT_MISSING_PROTOTYPES': 'YES',
'GCC_WARN_ABOUT_POINTER_SIGNEDNESS': 'YES',
'GCC_WARN_ABOUT_RETURN_TYPE': 'YES',
'GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL': 'YES',
'GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED': 'YES',
'GCC_WARN_MISSING_PARENTHESES': 'YES',
'GCC_WARN_PROTOTYPE_CONVERSION': 'YES',
'GCC_WARN_SIGN_COMPARE': 'YES',
'GCC_WARN_TYPECHECK_CALLS_TO_PRINTF': 'YES',
'GCC_WARN_UNKNOWN_PRAGMAS': 'YES',
'GCC_WARN_UNUSED_FUNCTION': 'YES',
'GCC_WARN_UNUSED_LABEL': 'YES',
'GCC_WARN_UNUSED_VALUE': 'YES',
'GCC_WARN_UNUSED_VARIABLE': 'YES',
'OTHER_CPLUSPLUSFLAGS': [
'-mssse3',
'-fvisibility=hidden',
'-fvisibility-inlines-hidden',
],
},
},
],
[ 'skia_os == "ios"',
{
'defines': [
'SK_BUILD_FOR_IOS',
],
'conditions' : [
[ 'skia_warnings_as_errors', {
'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS': [
'-Werror',
],
},
}],
],
'configurations': {
'Debug': {
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '0',
},
},
'Release': {
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '<(skia_release_optimization_level)',
},
'defines': [ 'NDEBUG' ],
},
},
'xcode_settings': {
'ARCHS': ['armv7'],
'CODE_SIGNING_REQUIRED': 'NO',
'CODE_SIGN_IDENTITY[sdk=iphoneos*]': '',
'IPHONEOS_DEPLOYMENT_TARGET': '<(ios_sdk_version)',
'SDKROOT': 'iphoneos',
'TARGETED_DEVICE_FAMILY': '1,2',
'OTHER_CPLUSPLUSFLAGS': [
'-fvisibility=hidden',
'-fvisibility-inlines-hidden',
],
'GCC_THUMB_SUPPORT': 'NO',
},
},
],
[ 'skia_os == "android"',
{
'defines': [
'SK_BUILD_FOR_ANDROID',
'SK_FONTHOST_DOES_NOT_USE_FONTMGR',
# Android Text Tuning
'SK_GAMMA_EXPONENT=1.4',
'SK_GAMMA_CONTRAST=0.0',
],
# Android defines a fixed gamma exponent instead of using SRGB
'defines!': [
'SK_GAMMA_SRGB',
],
Gyp file changes for the android framework. Split off from https://codereview.chromium.org/140503007/. The eventual goal is to create our Android.mk from gyp. This patch adds an option for skia_android_framework with the right settings. The follow-up (https://codereview.chromium.org/140503007/) will use scripts to create the final makefile. gyp/android_deps.gyp: Use different dependencies for the framework than for building Skia normally. gyp/android_framework_lib.gyp: Like skia_lib, specifies the minimum needed for building Skia, in this case for the framework. gyp/common_conditions.gypi: Add settings specific to skia_android_framework. In some cases this means turning off flags and defines. gyp/common.gypi Turn off SK_DEBUG and SK_DEVELOPER when building for the framework. This allows the framework to create a single makefile which can be modified to add SK_DEBUG and SK_DEVELOPER as desired. gyp/common_variables.gypi: Add skia_android_framework. gyp/core.gyp: Don't depend on cpufeatures, and add the cutils library for skia_android_framework. gyp/freetype.gyp: skia_android_framework-specific options: Don't include freetype_static as a dependency. Include the proper folders. Include the android library. gyp/images.gyp: Don't export libjpeg as a dependency for targets that include images for the framework. Also reorder image decoders to match the Android order, leaving our most commonly used ones last (and therefore first in the chain for trying them). gyp/libwebp.gyp: Use the system webp when building for the Android framework. Specify the correct settings for the framework. gyp/opts.gyp: Specify a default set of files to compile when there are no possible optimizations. gyp/pdf.gyp: Add dependencies for Android framework. gyp/zlib.gyp: Include the zlib folder, and undefine SK_ZLIB_INCLUDE. BUG=skia:1975 R=djsollen@google.com Committed: https://code.google.com/p/skia/source/detail?r=13298 Review URL: https://codereview.chromium.org/153093003 git-svn-id: http://skia.googlecode.com/svn/trunk@13304 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-02-04 16:08:48 +00:00
'configurations': {
'Debug': {
'cflags': ['-g']
},
'Release': {
'cflags': ['-O2'],
'defines': [ 'NDEBUG' ],
},
},
'libraries': [
Gyp file changes for the android framework. Split off from https://codereview.chromium.org/140503007/. The eventual goal is to create our Android.mk from gyp. This patch adds an option for skia_android_framework with the right settings. The follow-up (https://codereview.chromium.org/140503007/) will use scripts to create the final makefile. gyp/android_deps.gyp: Use different dependencies for the framework than for building Skia normally. gyp/android_framework_lib.gyp: Like skia_lib, specifies the minimum needed for building Skia, in this case for the framework. gyp/common_conditions.gypi: Add settings specific to skia_android_framework. In some cases this means turning off flags and defines. gyp/common.gypi Turn off SK_DEBUG and SK_DEVELOPER when building for the framework. This allows the framework to create a single makefile which can be modified to add SK_DEBUG and SK_DEVELOPER as desired. gyp/common_variables.gypi: Add skia_android_framework. gyp/core.gyp: Don't depend on cpufeatures, and add the cutils library for skia_android_framework. gyp/freetype.gyp: skia_android_framework-specific options: Don't include freetype_static as a dependency. Include the proper folders. Include the android library. gyp/images.gyp: Don't export libjpeg as a dependency for targets that include images for the framework. Also reorder image decoders to match the Android order, leaving our most commonly used ones last (and therefore first in the chain for trying them). gyp/libwebp.gyp: Use the system webp when building for the Android framework. Specify the correct settings for the framework. gyp/opts.gyp: Specify a default set of files to compile when there are no possible optimizations. gyp/pdf.gyp: Add dependencies for Android framework. gyp/zlib.gyp: Include the zlib folder, and undefine SK_ZLIB_INCLUDE. BUG=skia:1975 R=djsollen@google.com Committed: https://code.google.com/p/skia/source/detail?r=13298 Review URL: https://codereview.chromium.org/153093003 git-svn-id: http://skia.googlecode.com/svn/trunk@13304 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-02-04 16:08:48 +00:00
'-lstdc++',
'-lm',
'-llog',
],
'cflags': [
'-fuse-ld=gold',
],
'conditions': [
[ 'skia_android_framework', {
'libraries!': [
'-lstdc++',
'-lm',
],
'cflags!': [
'-fuse-ld=gold',
],
}],
[ 'skia_shared_lib', {
'cflags': [
'-fPIC',
],
'defines': [
'SKIA_DLL',
'SKIA_IMPLEMENTATION=1',
],
}],
[ 'skia_profile_enabled == 1', {
'cflags': ['-g', '-fno-omit-frame-pointer', '-marm', '-mapcs'],
}],
],
},
],
posix: Avoid static initializers in static/global mutexes This patch removes static initializers related to static and global mutexes from the final library's machine code when building on a pthread-capable system. We use PTHREAD_MUTEX_INITIALIZER to perform POD-style initialization. You need a line like the following to declare a global mutex with it: SkBaseMutex gMutex = { PTHREAD_MUTEX_INITIALIZER }; We introduce the SK_DECLARE_STATIC_MUTEX and SK_DECLARE_GLOBAL_MUTEX macros to be able to declare static/global mutexes in the source tree uniformly. SkMutex is now defined as a sub-class of SkBaseMutex, with standard construction/destruction semantics. This is useful if the mutex object is a member of another C++ class, or allocated dynamically. We also modify a few places to refer to SkBaseMutex instead of a SkMutex, where it makes sense. Generally speaking, client code should hold and use pointers to SkBaseMutex whenever they can now. We defined a new built-time macro named SK_USE_POSIX_THREADS to indicate that we're using a pthread-based SkThread.h interface. The macro will also be used in future patches to implement other helper thread synchronization classes. Finally, we inline the acquire() and release() functions in the case of Posix to improve performance a bit. Running: 'bench -repeat 10 -match mutex' on an Android device or a 2.4GHz Xeon Linux desktop shows the following improvements: Before After Galaxy Nexus 1.64 1.45 Nexus S 1.47 1.16 Xoom 1.86 1.66 Xeon 0.36 0.31 This removes 5 static mutex initializers from the library Review URL: https://codereview.appspot.com/5501066 git-svn-id: http://skia.googlecode.com/svn/trunk@3091 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-26 21:26:40 +00:00
# We can POD-style initialization of static mutexes to avoid generating
# static initializers if we're using a pthread-compatible thread interface.
[ 'skia_os != "win"', {
'defines': [
'SK_USE_POSIX_THREADS',
posix: Avoid static initializers in static/global mutexes This patch removes static initializers related to static and global mutexes from the final library's machine code when building on a pthread-capable system. We use PTHREAD_MUTEX_INITIALIZER to perform POD-style initialization. You need a line like the following to declare a global mutex with it: SkBaseMutex gMutex = { PTHREAD_MUTEX_INITIALIZER }; We introduce the SK_DECLARE_STATIC_MUTEX and SK_DECLARE_GLOBAL_MUTEX macros to be able to declare static/global mutexes in the source tree uniformly. SkMutex is now defined as a sub-class of SkBaseMutex, with standard construction/destruction semantics. This is useful if the mutex object is a member of another C++ class, or allocated dynamically. We also modify a few places to refer to SkBaseMutex instead of a SkMutex, where it makes sense. Generally speaking, client code should hold and use pointers to SkBaseMutex whenever they can now. We defined a new built-time macro named SK_USE_POSIX_THREADS to indicate that we're using a pthread-based SkThread.h interface. The macro will also be used in future patches to implement other helper thread synchronization classes. Finally, we inline the acquire() and release() functions in the case of Posix to improve performance a bit. Running: 'bench -repeat 10 -match mutex' on an Android device or a 2.4GHz Xeon Linux desktop shows the following improvements: Before After Galaxy Nexus 1.64 1.45 Nexus S 1.47 1.16 Xoom 1.86 1.66 Xeon 0.36 0.31 This removes 5 static mutex initializers from the library Review URL: https://codereview.appspot.com/5501066 git-svn-id: http://skia.googlecode.com/svn/trunk@3091 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-26 21:26:40 +00:00
],
}],
], # end 'conditions'
# The Xcode SYMROOT must be at the root. See build/common.gypi in chromium for more details
'xcode_settings': {
'SYMROOT': '<(DEPTH)/xcodebuild',
},
}