Bug 978594 - Part 3: Port some of the per-source flags to moz.build; r=glandium

--HG--
extra : rebase_source : fe4cd059eddda221af420e1517250772816d7ee8
This commit is contained in:
Ehsan Akhgari 2014-03-02 15:41:32 -05:00
parent a8d5c6ba79
commit 667b4bc049
25 changed files with 83 additions and 215 deletions

View File

@ -49,5 +49,3 @@ libs:: dummy
GARBAGE += dummy
endif
endif
test.$(OBJ_SUFFIX): CFLAGS := -O0

View File

@ -1,18 +0,0 @@
#
# 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/.
include $(topsrcdir)/config/rules.mk
# gcc requires -msse2 for this file since it uses SSE2 intrinsics. (See bug
# 585538 comment 12.)
ifneq (,$(INTEL_ARCHITECTURE))
ifdef GNU_CC
nsTextFragmentSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
endif
ifdef SOLARIS_SUNPRO_CXX
nsTextFragmentSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-xarch=sse2 -xO4
endif
endif

View File

@ -50,9 +50,13 @@ if CONFIG['MOZ_WEBRTC']:
# Are we targeting x86-32 or x86-64? If so, we want to include SSE2 code for
# nsTextFragment.cpp
if CONFIG['INTEL_ARCHITECTURE']:
SOURCES += [
'nsTextFragmentSSE2.cpp',
]
SOURCES += ['nsTextFragmentSSE2.cpp']
if CONFIG['GNU_CC']:
# gcc requires -msse2 for this file since it uses SSE2 intrinsics. (See bug
# 585538 comment 12.)
SOURCES['nsTextFragmentSSE2.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['nsTextFragmentSSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
EXPORTS.mozilla.dom += [
'Attr.h',

View File

@ -6,5 +6,3 @@ include $(topsrcdir)/config/rules.mk
CFLAGS += $(GSTREAMER_CFLAGS)
CXXFLAGS += $(GSTREAMER_CFLAGS)
AudioNodeEngineNEON.$(OBJ_SUFFIX): CXXFLAGS += -mfpu=neon

View File

@ -164,9 +164,8 @@ SOURCES += [
FAIL_ON_WARNINGS = True
if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']:
SOURCES += [
'AudioNodeEngineNEON.cpp',
]
SOURCES += ['AudioNodeEngineNEON.cpp']
SOURCES['AudioNodeEngineNEON.cpp'].flags += ['-mfpu=neon']
MSVC_ENABLE_PGO = True

View File

@ -14,20 +14,4 @@ include $(topsrcdir)/config/rules.mk
# changes the symbol names of exported C++ functions that use LOGFONT.
DEFINES := $(filter-out -DUNICODE -D_UNICODE,$(DEFINES))
# The file uses SSE2 intrinsics, so it needs special compile flags on some
# compilers.
ifneq (,$(INTEL_ARCHITECTURE))
ifdef GNU_CC
ImageScalingSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
BlurSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
FilterProcessingSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
endif
ifdef SOLARIS_SUNPRO_CXX
ImageScalingSSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
BlurSSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
FilterProcessingSSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
endif
endif
CXXFLAGS += $(MOZ_CAIRO_CFLAGS)

View File

@ -88,6 +88,16 @@ if CONFIG['INTEL_ARCHITECTURE']:
'ImageScalingSSE2.cpp',
]
DEFINES['USE_SSE2'] = True
# The file uses SSE2 intrinsics, so it needs special compile flags on some
# compilers.
if CONFIG['GNU_CC']:
SOURCES['BlurSSE2.cpp'].flags += ['-msse2']
SOURCES['FilterProcessingSSE2.cpp'].flags += ['-msse2']
SOURCES['ImageScalingSSE2.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['BlurSSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
SOURCES['FilterProcessingSSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
SOURCES['ImageScalingSSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
UNIFIED_SOURCES += [
'Blur.cpp',

View File

@ -18,9 +18,6 @@ CXXFLAGS += -I'$(MOZ_DIRECTX_SDK_PATH)/include'
ifdef GNU_CC
TextureSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
ImageSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
OS_CXXFLAGS := $(filter-out -fno-exceptions,$(OS_CXXFLAGS)) -fexceptions
OS_LIBS += -ld3d9 -ldxguid

View File

@ -172,6 +172,9 @@ SOURCES += ['renderer/' + src for src in [
'VertexDeclarationCache.cpp',
]]
if CONFIG['GNU_CC']:
SOURCES['renderer/ImageSSE2.cpp'].flags += ['-msse2']
# On Windows, we don't automatically get "lib" prepended, but we need it.
LIBRARY_NAME = 'libGLESv2'

View File

@ -6,46 +6,6 @@ ifeq ($(OS_TARGET),Android)
MODULE_OPTIMIZE_FLAGS = -O2
endif
# Build MMX code either with VC or with gcc-on-x86
ifdef _MSC_VER
ifeq (86,$(findstring 86,$(OS_TEST)))
USE_SSE2=1
MMX_CFLAGS=
SSE2_CFLAGS=
endif
endif
ifdef GNU_CC
ifeq (ppc,$(findstring ppc,$(OS_TEST)))
VMX_CFLAGS=-maltivec
endif
ifeq (86,$(findstring 86,$(OS_TEST)))
MMX_CFLAGS=-mmmx -Winline
ifeq (64,$(findstring 64,$(OS_TEST)))
USE_SSE2=1
endif
ifdef HAVE_GCC_ALIGN_ARG_POINTER
USE_SSE2=1
endif
ifdef USE_SSE2
SSE2_CFLAGS=-msse -msse2 -Winline
endif
MMX_CFLAGS+=--param inline-unit-growth=10000 --param large-function-growth=10000
endif
ifeq (arm,$(findstring arm,$(OS_TEST)))
# Apple's arm assembler doesn't support the same syntax as
# the standard GNU assembler, so use the C fallback paths for now.
# This may be fixable if clang's ARM/iOS assembler improves into a
# viable solution in the future.
ifneq (Darwin,$(OS_ARCH))
ifdef HAVE_ARM_NEON
ARM_NEON_CFLAGS = -mfpu=neon
endif
endif
endif
endif
include $(topsrcdir)/config/rules.mk
# Disable spammy "missing initializer" GCC warning
@ -53,15 +13,6 @@ ifdef GNU_CC
CFLAGS += -Wno-missing-field-initializers
endif # GNU_CC
# special rule for pixman-mmx to get the right cflags
pixman-mmx.$(OBJ_SUFFIX): COMPILE_CFLAGS += $(MMX_CFLAGS)
pixman-sse2.$(OBJ_SUFFIX): COMPILE_CFLAGS += $(SSE2_CFLAGS)
pixman-arm-neon.$(OBJ_SUFFIX): COMPILE_CFLAGS += $(ARM_NEON_CFLAGS)
pixman-vmx.$(OBJ_SUFFIX): COMPILE_CFLAGS += $(VMX_CFLAGS)
# The ARM asm functions here don't appreciate being called by functions
# compiled with -mapcs-frame. See bug 832752.
CXXFLAGS := $(filter-out -mapcs-frame,$(CXXFLAGS))

View File

@ -111,15 +111,29 @@ elif 'arm' in CONFIG['OS_TEST']:
if use_mmx:
DEFINES['USE_MMX'] = True
SOURCES += ['pixman-mmx.c']
if CONFIG['GNU_CC']:
SOURCES['pixman-mmx.c'].flags += [
'-mmmx',
'-Winline',
'--param inline-unit-growth=10000',
'--param large-function-growth=10000',
]
if use_sse2:
DEFINES['USE_SSE'] = True
DEFINES['USE_SSE2'] = True
SOURCES += ['pixman-sse2.c']
if CONFIG['GNU_CC']:
SOURCES['pixman-sse2.c'].flags += [
'-msse',
'-msse2',
'-Winline',
]
if use_vmx:
DEFINES['USE_VMX'] = True
SOURCES += ['pixman-vmx.c']
SOURCES['pixman-vmx.c'].flags += ['-maltivec']
if use_arm_simd_gcc:
DEFINES['USE_ARM_SIMD'] = True
@ -128,3 +142,4 @@ if use_arm_simd_gcc:
if use_arm_neon_gcc:
DEFINES['USE_ARM_NEON'] = True
SOURCES += ['pixman-arm-neon.c']
SOURCES['pixman-arm-neon.c'].flags += ['-mfpu=neon']

View File

@ -29,17 +29,5 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
CXXFLAGS += $(CAIRO_FT_CFLAGS) $(MOZ_PANGO_CFLAGS)
endif
# The file uses SSE2 intrinsics, so it needs special compile flags on some
# compilers.
ifneq (,$(INTEL_ARCHITECTURE))
ifdef GNU_CC
gfxAlphaRecoverySSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
endif
ifdef SOLARIS_SUNPRO_CXX
gfxAlphaRecoverySSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
endif
endif
DeprecatedPremultiplyTables.h: $(srcdir)/genTables.py
$(PYTHON) $(srcdir)/genTables.py

View File

@ -199,9 +199,13 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
# Are we targeting x86 or x64? If so, build gfxAlphaRecoverySSE2.cpp.
if CONFIG['INTEL_ARCHITECTURE']:
SOURCES += [
'gfxAlphaRecoverySSE2.cpp',
]
SOURCES += ['gfxAlphaRecoverySSE2.cpp']
# The file uses SSE2 intrinsics, so it needs special compile flags on some
# compilers.
if CONFIG['GNU_CC']:
SOURCES['gfxAlphaRecoverySSE2.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['gfxAlphaRecoverySSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
SOURCES += [
# Includes mac system header conflicting with point/size,

View File

@ -1,15 +0,0 @@
include $(topsrcdir)/config/rules.mk
# These files use MMX and SSE2 intrinsics, so they need special compile flags
# on some compilers.
ifneq (,$(INTEL_ARCHITECTURE))
ifdef GNU_CC
yuv_convert_mmx.$(OBJ_SUFFIX): CXXFLAGS += -mmmx
yuv_convert_sse2.$(OBJ_SUFFIX): CXXFLAGS += -msse2
endif
ifdef SOLARIS_SUNPRO_CXX
yuv_convert_mmx.$(OBJ_SUFFIX): CXXFLAGS += -xarch=mmx -xO4
yuv_convert_sse2.$(OBJ_SUFFIX): CXXFLAGS += -xarch=sse2 -xO4
endif
endif

View File

@ -21,9 +21,13 @@ UNIFIED_SOURCES += [
]
if CONFIG['INTEL_ARCHITECTURE']:
SOURCES += [
'yuv_convert_sse2.cpp',
]
# These files use MMX and SSE2 intrinsics, so they need special compile flags
# on some compilers.
SOURCES += ['yuv_convert_sse2.cpp']
if CONFIG['GNU_CC']:
SOURCES['yuv_convert_sse2.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['yuv_convert_sse2.cpp'].flags += ['-xarch=sse2', '-xO4']
# MSVC doesn't support MMX when targeting AMD64.
if CONFIG['_MSC_VER']:
@ -32,9 +36,11 @@ if CONFIG['INTEL_ARCHITECTURE']:
'yuv_convert_mmx.cpp',
]
else:
SOURCES += [
'yuv_convert_mmx.cpp',
]
SOURCES += ['yuv_convert_mmx.cpp']
if CONFIG['GNU_CC']:
SOURCES['yuv_convert_mmx.cpp'].flags += ['-mmmx']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['yuv_convert_mmx.cpp'].flags += ['-xarch=mmx', '-xO4']
if CONFIG['_MSC_VER']:
if CONFIG['OS_TEST'] == 'x86_64':

View File

@ -1,18 +0,0 @@
# vim:set noet ts=8:
# 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/.
include $(topsrcdir)/config/rules.mk
ifneq (,$(INTEL_ARCHITECTURE))
# nsUTF8ToUnicodeSSE2.cpp uses SSE2 intrinsics, so we need to pass -msse2 if
# we're using gcc. (See bug 585538 comment 12.)
ifdef GNU_CC
nsUTF8ToUnicodeSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
endif
ifdef SOLARIS_SUNPRO_CXX
nsUTF8ToUnicodeSSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
endif
endif

View File

@ -201,9 +201,13 @@ UNIFIED_SOURCES += [
]
if CONFIG['INTEL_ARCHITECTURE']:
SOURCES += [
'nsUTF8ToUnicodeSSE2.cpp',
]
SOURCES += ['nsUTF8ToUnicodeSSE2.cpp']
if CONFIG['GNU_CC']:
# nsUTF8ToUnicodeSSE2.cpp uses SSE2 intrinsics, so we need to pass -msse2 if
# we're using gcc. (See bug 585538 comment 12.)
SOURCES['nsUTF8ToUnicodeSSE2.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['nsUTF8ToUnicodeSSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
MSVC_ENABLE_PGO = True

View File

@ -360,10 +360,6 @@ $(CURDIR)/javascript-trace.h: $(srcdir)/devtools/javascript-trace.d
$(addsuffix .$(OBJ_SUFFIX),Probes jsinterp jsobj): $(CURDIR)/javascript-trace.h
endif
ifdef HAVE_LINUX_PERF_EVENT_H
pm_linux.$(OBJ_SUFFIX): CXXFLAGS += $(LINUX_HEADERS_INCLUDES)
endif
# Prepare self-hosted JS code for embedding
export:: selfhosting
selfhosting:: selfhosted.out.h

View File

@ -390,6 +390,7 @@ if CONFIG['HAVE_LINUX_PERF_EVENT_H']:
SOURCES += [
'perf/pm_linux.cpp'
]
SOURCES['perf/pm_linux.cpp'].flags += [CONFIG['LINUX_HEADERS_INCLUDES']]
else:
SOURCES += [
'perf/pm_stub.cpp'

View File

@ -1,16 +0,0 @@
# 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/.
include $(topsrcdir)/config/rules.mk
ifneq (,$(INTEL_ARCHITECTURE))
ifdef GNU_CC
mmx_optimized.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
sse_optimized.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
endif
ifdef SOLARIS_SUNPRO_CXX
mmx_optimized.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
sse_optimized.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
endif
endif

View File

@ -23,13 +23,17 @@ UNIFIED_SOURCES += [
if CONFIG['INTEL_ARCHITECTURE']:
if CONFIG['MOZ_SAMPLE_TYPE_FLOAT32']:
UNIFIED_SOURCES += [
'sse_optimized.cpp',
]
SOURCES += ['sse_optimized.cpp']
if CONFIG['GNU_CC']:
SOURCES['sse_optimized.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['sse_optimized.cpp'].flags += ['-xarch=sse2', '-xO4']
else:
UNIFIED_SOURCES += [
'mmx_optimized.cpp',
]
SOURCES += ['mmx_optimized.cpp']
if CONFIG['GNU_CC']:
SOURCES['mmx_optimized.cpp'].flags += ['-mmmx']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['mmx_optimized.cpp'].flags += ['-xarch=mmx', '-xO4']
MSVC_ENABLE_PGO = True
if CONFIG['GKMEDIAS_SHARED_LIBRARY']:

View File

@ -1,14 +0,0 @@
# 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/.
include $(topsrcdir)/config/rules.mk
# Only use SSE code when using floating point samples, and on x86
ifneq (,$(INTEL_ARCHITECTURE))
ifneq ($(OS_TARGET),Android)
ifdef GNU_CC
resample.$(OBJ_SUFFIX): CFLAGS+=-msse2
endif
endif
endif

View File

@ -39,3 +39,5 @@ else:
if CONFIG['INTEL_ARCHITECTURE'] and CONFIG['OS_TARGET'] != 'Android':
DEFINES['_USE_SSE'] = True
DEFINES['_USE_SSE2'] = True
if CONFIG['GNU_CC']:
SOURCES['resample.c'].flags += ['-msse2']

View File

@ -1,19 +0,0 @@
# vim:set ts=8 sw=8 sts=8 noet:
#
# 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/.
include $(topsrcdir)/config/rules.mk
ifneq (,$(INTEL_ARCHITECTURE))
# gcc requires -msse2 on nsUTF8UtilsSSE2.cpp since it uses SSE2 intrinsics.
# (See bug 585538 comment 12.)
ifdef GNU_CC
nsUTF8UtilsSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
endif
ifdef SOLARIS_SUNPRO_CXX
nsUTF8UtilsSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-xarch=sse2 -xO4
endif
endif

View File

@ -19,9 +19,13 @@ UNIFIED_SOURCES += [
# Are we targeting x86 or x86-64? If so, compile the SSE2 functions for
# nsUTF8Utils.cpp.
if CONFIG['INTEL_ARCHITECTURE']:
SOURCES += [
'nsUTF8UtilsSSE2.cpp',
]
SOURCES += ['nsUTF8UtilsSSE2.cpp']
if CONFIG['GNU_CC']:
# gcc requires -msse2 on nsUTF8UtilsSSE2.cpp since it uses SSE2 intrinsics.
# (See bug 585538 comment 12.)
SOURCES['nsUTF8UtilsSSE2.cpp'].flags += ['-msse2']
if CONFIG['SOLARIS_SUNPRO_CXX']:
SOURCES['nsUTF8UtilsSSE2.cpp'].flags += ['-xarch=sse2', '-xO4']
LOCAL_INCLUDES += [
'/mfbt/double-conversion',