# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- # vim: set filetype=python: # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. MODULE = 'skia' EXPORTS.skia += [ 'include/config/SkUserConfig.h', 'include/core/Sk64.h', 'include/core/SkAdvancedTypefaceMetrics.h', 'include/core/SkBitmap.h', 'include/core/SkBlitRow.h', 'include/core/SkBounder.h', 'include/core/SkCanvas.h', 'include/core/SkChunkAlloc.h', 'include/core/SkClipStack.h', 'include/core/SkColor.h', 'include/core/SkColorFilter.h', 'include/core/SkColorPriv.h', 'include/core/SkColorShader.h', 'include/core/SkColorTable.h', 'include/core/SkComposeShader.h', 'include/core/SkData.h', 'include/core/SkDeque.h', 'include/core/SkDevice.h', 'include/core/SkDeviceProperties.h', 'include/core/SkDither.h', 'include/core/SkDraw.h', 'include/core/SkDrawFilter.h', 'include/core/SkDrawLooper.h', 'include/core/SkEmptyShader.h', 'include/core/SkEndian.h', 'include/core/SkFixed.h', 'include/core/SkFlattenable.h', 'include/core/SkFloatBits.h', 'include/core/SkFloatingPoint.h', 'include/core/SkFontHost.h', 'include/core/SkFontLCDConfig.h', 'include/core/SkGeometry.h', 'include/core/SkGraphics.h', 'include/core/SkInstCnt.h', 'include/core/SkLineClipper.h', 'include/core/SkMallocPixelRef.h', 'include/core/SkMask.h', 'include/core/SkMaskFilter.h', 'include/core/SkMath.h', 'include/core/SkMatrix.h', 'include/core/SkMetaData.h', 'include/core/SkOSFile.h', 'include/core/SkPackBits.h', 'include/core/SkPaint.h', 'include/core/SkPath.h', 'include/core/SkPathEffect.h', 'include/core/SkPathMeasure.h', 'include/core/SkPicture.h', 'include/core/SkPixelRef.h', 'include/core/SkPoint.h', 'include/core/SkPostConfig.h', 'include/core/SkPreConfig.h', 'include/core/SkRasterizer.h', 'include/core/SkReader32.h', 'include/core/SkRect.h', 'include/core/SkRefCnt.h', 'include/core/SkRegion.h', 'include/core/SkScalar.h', 'include/core/SkScalarCompare.h', 'include/core/SkShader.h', 'include/core/SkSize.h', 'include/core/SkStream.h', 'include/core/SkString.h', 'include/core/SkStrokeRec.h', 'include/core/SkTArray.h', 'include/core/SkTDArray.h', 'include/core/SkTDStack.h', 'include/core/SkTDict.h', 'include/core/SkTInternalLList.h', 'include/core/SkTLazy.h', 'include/core/SkTRegistry.h', 'include/core/SkTScopedPtr.h', 'include/core/SkTSearch.h', 'include/core/SkTemplates.h', 'include/core/SkThread.h', 'include/core/SkThread_platform.h', 'include/core/SkTime.h', 'include/core/SkTrace.h', 'include/core/SkTypeface.h', 'include/core/SkTypes.h', 'include/core/SkUnPreMultiply.h', 'include/core/SkUnitMapper.h', 'include/core/SkUtils.h', 'include/core/SkWeakRefCnt.h', 'include/core/SkWriter32.h', 'include/core/SkXfermode.h', 'include/effects/SkBlurDrawLooper.h', 'include/effects/SkBlurMaskFilter.h', 'include/effects/SkDashPathEffect.h', 'include/effects/SkGradientShader.h', 'include/effects/SkLayerDrawLooper.h', 'include/effects/SkLayerRasterizer.h', 'include/effects/SkMorphologyImageFilter.h', 'include/gpu/GrAARectRenderer.h', 'include/gpu/GrBackendEffectFactory.h', 'include/gpu/GrClipData.h', 'include/gpu/GrColor.h', 'include/gpu/GrConfig.h', 'include/gpu/GrContext.h', 'include/gpu/GrContextFactory.h', 'include/gpu/GrEffect.h', 'include/gpu/GrEffectStage.h', 'include/gpu/GrEffectUnitTest.h', 'include/gpu/GrFontScaler.h', 'include/gpu/GrGlyph.h', 'include/gpu/GrKey.h', 'include/gpu/GrNoncopyable.h', 'include/gpu/GrPaint.h', 'include/gpu/GrPathRendererChain.h', 'include/gpu/GrPoint.h', 'include/gpu/GrRect.h', 'include/gpu/GrRefCnt.h', 'include/gpu/GrRenderTarget.h', 'include/gpu/GrResource.h', 'include/gpu/GrSurface.h', 'include/gpu/GrTextContext.h', 'include/gpu/GrTexture.h', 'include/gpu/GrTextureAccess.h', 'include/gpu/GrTypes.h', 'include/gpu/GrTypesPriv.h', 'include/gpu/GrUserConfig.h', 'include/gpu/SkGpuDevice.h', 'include/gpu/SkGr.h', 'include/gpu/SkGrPixelRef.h', 'include/gpu/SkGrTexturePixelRef.h', 'include/gpu/gl/GrGLConfig.h', 'include/gpu/gl/GrGLFunctions.h', 'include/gpu/gl/GrGLInterface.h', 'include/gpu/gl/SkANGLEGLContext.h', 'include/gpu/gl/SkDebugGLContext.h', 'include/gpu/gl/SkMesaGLContext.h', 'include/gpu/gl/SkNativeGLContext.h', 'include/gpu/gl/SkNullGLContext.h', 'include/lazy/SkBitmapFactory.h', 'include/utils/SkDeferredCanvas.h', 'include/utils/SkRandom.h', 'include/views/SkTextBox.h', 'src/core/SkTypefaceCache.h', ] if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': EXPORTS.skia += [ 'include/ports/SkTypeface_mac.h', ] CPP_SOURCES += [ 'src/ports/SkFontHost_mac.cpp', 'src/utils/mac/SkStream_mac.cpp', 'src/ports/SkThread_pthread.cpp', 'src/utils/SkThreadUtils_pthread.cpp', 'src/utils/SkThreadUtils_pthread_mach.cpp', 'src/ports/SkTime_Unix.cpp', ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': EXPORTS.skia += [ 'include/config/sk_stdint.h', 'include/ports/SkTypeface_win.h', ] CPP_SOURCES += [ 'src/ports/SkFontHost_win.cpp', 'src/ports/SkFontHost_sandbox_none.cpp', 'src/ports/SkThread_win.cpp', 'src/utils/SkThreadUtils_win.cpp', 'src/ports/SkTime_win.cpp', ] elif CONFIG['MOZ_WIDGET_GTK']: EXPORTS.skia += [ 'include/ports/SkTypeface_cairo.h', ] CPP_SOURCES += [ 'src/ports/SkFontHost_cairo.cpp', 'src/ports/SkFontHost_FreeType_common.cpp', 'src/ports/SkThread_pthread.cpp', 'src/utils/SkThreadUtils_pthread.cpp', 'src/ports/SkTime_Unix.cpp', 'src/utils/SkOSFile.cpp', ] if CONFIG['OS_TARGET'] in ('Linux', 'FreeBSD', 'NetBSD'): CPP_SOURCES += [ 'src/utils/SkThreadUtils_pthread_linux.cpp', ] else: CPP_SOURCES += [ 'src/utils/SkThreadUtils_pthread_other.cpp', ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt': CPP_SOURCES += [ 'src/ports/SkFontHost_cairo.cpp', 'src/ports/SkFontHost_FreeType_common.cpp', 'src/utils/SkOSFile.cpp', ] if CONFIG['OS_TARGET'] == 'Linux': EXPORTS.skia += [ 'include/ports/SkTypeface_cairo.h', ] CPP_SOURCES += [ 'src/ports/SkThread_pthread.cpp', 'src/utils/SkThreadUtils_pthread.cpp', 'src/utils/SkThreadUtils_pthread_linux.cpp', 'src/ports/SkTime_Unix.cpp', ] # Separate 'if' from above, since the else below applies to all != 'android' # toolkits. if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'): EXPORTS.skia += [ 'include/ports/SkTypeface_cairo.h', ] CPP_SOURCES += [ 'src/utils/android/ashmem.cpp', 'src/ports/SkDebug_android.cpp', 'src/ports/SkFontHost_cairo.cpp', 'src/ports/SkFontHost_linux.cpp', 'src/ports/SkFontHost_FreeType_common.cpp', 'src/ports/SkFontHost_FreeType.cpp', 'src/images/SkImageRef_ashmem.cpp', 'src/utils/SkOSFile.cpp', 'src/ports/SkTime_Unix.cpp', 'src/ports/SkThread_pthread.cpp', 'src/utils/SkThreadUtils_pthread.cpp', 'src/utils/SkThreadUtils_pthread_other.cpp', ] else: CPP_SOURCES += [ 'src/ports/SkDebug_stdio.cpp', ] if CONFIG['INTEL_ARCHITECTURE']: CPP_SOURCES += [ 'src/opts/SkBitmapProcState_opts_SSE2.cpp', 'src/opts/SkBlitRect_opts_SSE2.cpp', 'src/opts/SkBlitRow_opts_SSE2.cpp', 'src/opts/SkUtils_opts_SSE2.cpp', 'src/opts/opts_check_SSE2.cpp', ] if CONFIG['HAVE_TOOLCHAIN_SUPPORT_MSSSE3']: CPP_SOURCES += [ 'src/opts/SkBitmapProcState_opts_SSSE3.cpp', ] elif CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']: CPP_SOURCES += [ 'src/opts/SkBitmapProcState_opts_arm.cpp', 'src/opts/SkBlitRow_opts_arm.cpp', 'src/opts/opts_check_arm.cpp', ] else: CPP_SOURCES += [ 'src/opts/SkBitmapProcState_opts_none.cpp', 'src/opts/SkBlitRow_opts_none.cpp', 'src/opts/SkUtils_opts_none.cpp', ] if CONFIG['MOZ_ENABLE_SKIA_GPU']: CPP_SOURCES += [ 'src/gpu/GrAAConvexPathRenderer.cpp', 'src/gpu/GrAAHairLinePathRenderer.cpp', 'src/gpu/GrAARectRenderer.cpp', 'src/gpu/GrAddPathRenderers_default.cpp', 'src/gpu/GrAllocPool.cpp', 'src/gpu/GrAtlas.cpp', 'src/gpu/GrBufferAllocPool.cpp', 'src/gpu/GrCacheID.cpp', 'src/gpu/GrClipData.cpp', 'src/gpu/GrClipMaskCache.cpp', 'src/gpu/GrClipMaskManager.cpp', 'src/gpu/effects/GrConfigConversionEffect.cpp', 'src/gpu/GrContext.cpp', 'src/gpu/effects/GrConvolutionEffect.cpp', 'src/gpu/GrDefaultPathRenderer.cpp', 'src/gpu/GrDrawTarget.cpp', 'src/gpu/GrDrawState.cpp', 'src/gpu/GrEffect.cpp', 'src/gpu/GrGeometryBuffer.cpp', 'src/gpu/GrGpu.cpp', 'src/gpu/GrGpuFactory.cpp', 'src/gpu/GrInOrderDrawBuffer.cpp', 'src/gpu/GrMemory.cpp', 'src/gpu/GrMemoryPool.cpp', 'src/gpu/GrOvalRenderer.cpp', 'src/gpu/GrPath.cpp', 'src/gpu/GrPathRendererChain.cpp', 'src/gpu/GrPathRenderer.cpp', 'src/gpu/GrPathUtils.cpp', 'src/gpu/GrRectanizer.cpp', 'src/gpu/GrReducedClip.cpp', 'src/gpu/GrRenderTarget.cpp', 'src/gpu/GrResourceCache.cpp', 'src/gpu/GrResource.cpp', 'src/gpu/effects/GrSimpleTextureEffect.cpp', 'src/gpu/effects/GrSingleTextureEffect.cpp', 'src/gpu/GrSoftwarePathRenderer.cpp', 'src/gpu/GrStencilAndCoverPathRenderer.cpp', 'src/gpu/GrStencilBuffer.cpp', 'src/gpu/GrStencil.cpp', 'src/gpu/GrSurface.cpp', 'src/gpu/GrSWMaskHelper.cpp', 'src/gpu/GrTextContext.cpp', 'src/gpu/GrTextStrike.cpp', 'src/gpu/GrTextureAccess.cpp', 'src/gpu/GrTexture.cpp', 'src/gpu/effects/GrTextureDomainEffect.cpp', 'src/gpu/effects/GrTextureStripAtlas.cpp', 'src/gpu/SkGpuDevice.cpp', 'src/gpu/SkGr.cpp', 'src/gpu/SkGrFontScaler.cpp', 'src/gpu/SkGrPixelRef.cpp', 'src/gpu/SkGrTexturePixelRef.cpp', 'src/gpu/gl/GrGLBufferImpl.cpp', 'src/gpu/gl/GrGLCaps.cpp', 'src/gpu/gl/GrGLContext.cpp', 'src/gpu/gl/GrGLCreateNativeInterface_none.cpp', 'src/gpu/gl/GrGLCreateNullInterface.cpp', 'src/gpu/gl/GrGLDefaultInterface_native.cpp', 'src/gpu/gl/GrGLEffect.cpp', 'src/gpu/gl/GrGLEffectMatrix.cpp', 'src/gpu/gl/GrGLExtensions.cpp', 'src/gpu/gl/GrGLIndexBuffer.cpp', 'src/gpu/gl/GrGLInterface.cpp', 'src/gpu/gl/GrGLNoOpInterface.cpp', 'src/gpu/gl/GrGLPath.cpp', 'src/gpu/gl/GrGLProgram.cpp', 'src/gpu/gl/GrGLProgramDesc.cpp', 'src/gpu/gl/GrGLRenderTarget.cpp', 'src/gpu/gl/GrGLShaderBuilder.cpp', 'src/gpu/gl/GrGLSL.cpp', 'src/gpu/gl/GrGLStencilBuffer.cpp', 'src/gpu/gl/GrGLTexture.cpp', 'src/gpu/gl/GrGLUniformManager.cpp', 'src/gpu/gl/GrGLUtil.cpp', 'src/gpu/gl/GrGLVertexArray.cpp', 'src/gpu/gl/GrGLVertexBuffer.cpp', 'src/gpu/gl/GrGpuGL.cpp', 'src/gpu/gl/GrGpuGL_program.cpp', 'src/gpu/gl/SkGLContextHelper.cpp', 'src/gpu/gl/SkNullGLContext.cpp', ] CPP_SOURCES += [ 'src/effects/Sk1DPathEffect.cpp', 'src/effects/Sk2DPathEffect.cpp', 'src/core/Sk64.cpp', 'src/core/SkAAClip.cpp', 'src/core/SkAdvancedTypefaceMetrics.cpp', 'src/core/SkAlphaRuns.cpp', 'src/core/SkAnnotation.cpp', 'src/effects/SkAvoidXfermode.cpp', 'src/core/SkBBoxRecord.cpp', 'src/core/SkBBoxHierarchy.cpp', 'src/core/SkBBoxHierarchyRecord.cpp', 'src/utils/SkBase64.cpp', 'src/effects/SkBicubicImageFilter.cpp', 'src/utils/SkBitSet.cpp', 'src/core/SkBitmap.cpp', 'src/effects/gradients/SkBitmapCache.cpp', 'src/lazy/SkBitmapFactory.cpp', 'src/core/SkBitmapHeap.cpp', 'src/core/SkBitmapProcShader.cpp', 'src/core/SkBitmapProcState.cpp', 'src/core/SkBitmapProcState_matrixProcs.cpp', 'src/core/SkBitmapSampler.cpp', 'src/effects/SkBitmapSource.cpp', 'src/utils/SkBitmapTransformer.cpp', 'src/core/SkBitmap_scroll.cpp', 'src/effects/SkBlendImageFilter.cpp', 'src/core/SkBlitMask_D32.cpp', 'src/core/SkBlitRow_D16.cpp', 'src/core/SkBlitRow_D32.cpp', 'src/core/SkBlitRow_D4444.cpp', 'src/core/SkBlitter.cpp', 'src/core/SkBlitter_4444.cpp', 'src/core/SkBlitter_A1.cpp', 'src/core/SkBlitter_A8.cpp', 'src/core/SkBlitter_ARGB32.cpp', 'src/core/SkBlitter_RGB16.cpp', 'src/core/SkBlitter_Sprite.cpp', 'src/effects/SkBlurDrawLooper.cpp', 'src/effects/SkBlurImageFilter.cpp', 'src/effects/SkBlurMaskFilter.cpp', 'src/effects/SkBlurMask.cpp', 'src/core/SkBuffer.cpp', 'src/core/SkCanvas.cpp', 'src/core/SkChunkAlloc.cpp', 'src/core/SkClipStack.cpp', 'src/core/SkColor.cpp', 'src/core/SkColorFilter.cpp', 'src/effects/SkColorFilterImageFilter.cpp', 'src/effects/SkColorFilters.cpp', 'src/effects/SkColorMatrix.cpp', 'src/effects/SkColorMatrixFilter.cpp', 'src/core/SkColorTable.cpp', 'src/effects/SkCornerPathEffect.cpp', 'src/effects/gradients/SkClampRange.cpp', 'src/core/SkComposeShader.cpp', 'src/utils/SkCondVar.cpp', 'src/core/SkConfig8888.cpp', 'src/utils/SkCountdown.cpp', 'src/core/SkCordic.cpp', 'src/core/SkCubicClipper.cpp', 'src/effects/SkDashPathEffect.cpp', 'src/core/SkData.cpp', 'src/image/SkDataPixelRef.cpp', 'src/core/SkDebug.cpp', 'src/utils/SkDeferredCanvas.cpp', 'src/core/SkDeque.cpp', 'src/core/SkDevice.cpp', 'src/core/SkDeviceProfile.cpp', 'src/effects/SkDiscretePathEffect.cpp', 'src/effects/SkDisplacementMapEffect.cpp', 'src/core/SkDither.cpp', 'src/core/SkDraw.cpp', 'src/core/SkEdge.cpp', 'src/core/SkEdgeBuilder.cpp', 'src/core/SkEdgeClipper.cpp', 'src/effects/SkEmbossMask.cpp', 'src/effects/SkEmbossMaskFilter.cpp', 'src/core/SkFilterProc.cpp', 'src/core/SkFlattenable.cpp', 'src/core/SkFlattenableBuffers.cpp', 'src/core/SkFloat.cpp', 'src/core/SkFloatBits.cpp', 'src/core/SkFontDescriptor.cpp', 'src/core/SkFontHost.cpp', 'src/core/SkFontStream.cpp', 'src/core/SkGeometry.cpp', 'src/ports/SkGlobalInitialization_default.cpp', 'src/core/SkGlyphCache.cpp', 'src/effects/gradients/SkGradientShader.cpp', 'src/effects/gradients/SkGradientTileProc.cpp', 'src/core/SkGraphics.cpp', 'src/pipe/SkGPipeRead.cpp', 'src/pipe/SkGPipeWrite.cpp', 'src/image/SkImage.cpp', 'src/images/SkImages.cpp', 'src/image/SkImage_Codec.cpp', 'src/image/SkImage_Picture.cpp', 'src/image/SkImage_Raster.cpp', 'src/images/SkImageDecoder.cpp', 'src/images/SkImageDecoder_Factory.cpp', 'src/core/SkImageFilter.cpp', 'src/effects/SkImageFilterUtils.cpp', 'src/image/SkImagePriv.cpp', 'src/images/SkImageRef.cpp', 'src/images/SkImageRefPool.cpp', 'src/images/SkImageRef_GlobalPool.cpp', 'src/core/SkInstCnt.cpp', 'src/effects/SkLayerDrawLooper.cpp', 'src/effects/SkLayerRasterizer.cpp', 'src/lazy/SkLazyPixelRef.cpp', 'src/effects/SkLightingImageFilter.cpp', 'src/effects/gradients/SkLinearGradient.cpp', 'src/core/SkLineClipper.cpp', 'src/core/SkMallocPixelRef.cpp', 'src/effects/SkMagnifierImageFilter.cpp', 'src/core/SkMask.cpp', 'src/core/SkMaskFilter.cpp', 'src/core/SkMaskGamma.cpp', 'src/core/SkMath.cpp', 'src/core/SkMatrix.cpp', 'src/effects/SkMatrixConvolutionImageFilter.cpp', 'src/ports/SkMemory_malloc.cpp', 'src/effects/SkMergeImageFilter.cpp', 'src/core/SkMetaData.cpp', 'src/effects/SkMorphologyImageFilter.cpp', 'src/effects/SkOffsetImageFilter.cpp', 'src/core/SkOrderedReadBuffer.cpp', 'src/core/SkOrderedWriteBuffer.cpp', 'src/ports/SkOSFile_stdio.cpp', 'src/sfnt/SkOTUtils.cpp', 'src/core/SkPackBits.cpp', 'src/core/SkPaint.cpp', 'src/core/SkPaintPriv.cpp', 'src/core/SkPath.cpp', 'src/core/SkPathEffect.cpp', 'src/core/SkPathHeap.cpp', 'src/core/SkPathMeasure.cpp', 'src/core/SkPicture.cpp', 'src/core/SkPictureFlat.cpp', 'src/core/SkPicturePlayback.cpp', 'src/core/SkPictureRecord.cpp', 'src/core/SkPictureStateTree.cpp', 'src/utils/SkPictureUtils.cpp', 'src/core/SkPixelRef.cpp', 'src/effects/SkPixelXorXfermode.cpp', 'src/core/SkPoint.cpp', 'src/core/SkProcSpriteBlitter.cpp', 'src/core/SkPtrRecorder.cpp', 'src/core/SkQuadClipper.cpp', 'src/core/SkRRect.cpp', 'src/utils/SkRTConf.cpp', 'src/core/SkRTree.cpp', 'src/effects/gradients/SkRadialGradient.cpp', 'src/core/SkRasterClip.cpp', 'src/core/SkRasterizer.cpp', 'src/core/SkRect.cpp', 'src/core/SkRefCnt.cpp', 'src/core/SkRefDict.cpp', 'src/core/SkRegion.cpp', 'src/core/SkRegion_path.cpp', 'src/core/SkRegion_rects.cpp', 'src/core/SkScalar.cpp', 'src/core/SkScalerContext.cpp', 'src/core/SkScan.cpp', 'src/core/SkScan_AntiPath.cpp', 'src/core/SkScan_Antihair.cpp', 'src/core/SkScan_Hairline.cpp', 'src/core/SkScan_Path.cpp', 'src/core/SkShader.cpp', 'src/core/SkSpriteBlitter_ARGB32.cpp', 'src/core/SkSpriteBlitter_RGB16.cpp', 'src/effects/SkStippleMaskFilter.cpp', 'src/core/SkStream.cpp', 'src/core/SkString.cpp', 'src/core/SkStroke.cpp', 'src/core/SkStrokeRec.cpp', 'src/core/SkStrokerPriv.cpp', 'src/image/SkSurface.cpp', 'src/image/SkSurface_Raster.cpp', 'src/image/SkSurface_Picture.cpp', 'src/effects/gradients/SkSweepGradient.cpp', 'src/effects/SkTableColorFilter.cpp', 'src/effects/SkTableMaskFilter.cpp', 'src/effects/SkTestImageFilters.cpp', 'src/utils/SkThreadPool.cpp', 'src/core/SkTileGrid.cpp', 'src/core/SkTileGridPicture.cpp', 'src/core/SkTLS.cpp', 'src/core/SkTSearch.cpp', 'src/effects/gradients/SkTwoPointConicalGradient.cpp', 'src/effects/gradients/SkTwoPointRadialGradient.cpp', 'src/core/SkTypeface.cpp', 'src/core/SkTypefaceCache.cpp', 'src/core/SkUnPreMultiply.cpp', 'src/core/SkUtils.cpp', 'src/core/SkWriter32.cpp', 'src/core/SkXfermode.cpp', ] if not CONFIG['INTEL_ARCHITECTURE'] and CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']: SSRCS += [ 'memset.arm.S', ] LIBRARY_NAME = 'skia' LIBXUL_LIBRARY = True MSVC_ENABLE_PGO = True EXPORT_LIBRARY = True