Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: build/common.gypi

Issue 42340: Update the gyp Linux build: (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/base.gyp ('k') | build/linux/pkg_config_wrapper.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/common.gypi
===================================================================
--- build/common.gypi (revision 12226)
+++ build/common.gypi (working copy)
@@ -87,6 +87,76 @@
},
},
'conditions': [
+ [ 'OS=="linux"', {
+ 'target_defaults': {
+ 'asflags': [
+ # Needed so that libs with .s files (e.g. libicudata.a)
+ # are compatible with the general 32-bit-ness.
+ '-32',
+ ],
+ # All floating-point computations on x87 happens in 80-bit
+ # precision. Because the C and C++ language standards allow
+ # the compiler to keep the floating-point values in higher
+ # precision than what's specified in the source and doing so
+ # is more efficient than constantly rounding up to 64-bit or
+ # 32-bit precision as specified in the source, the compiler,
+ # especially in the optimized mode, tries very hard to keep
+ # values in x87 floating-point stack (in 80-bit precision)
+ # as long as possible. This has important side effects, that
+ # the real value used in computation may change depending on
+ # how the compiler did the optimization - that is, the value
+ # kept in 80-bit is different than the value rounded down to
+ # 64-bit or 32-bit. There are possible compiler options to make
+ # this behavior consistent (e.g. -ffloat-store would keep all
+ # floating-values in the memory, thus force them to be rounded
+ # to its original precision) but they have significant runtime
+ # performance penalty.
+ #
+ # -mfpmath=sse -msse2 makes the compiler use SSE instructions
+ # which keep floating-point values in SSE registers in its
+ # native precision (32-bit for single precision, and 64-bit for
+ # double precision values). This means the floating-point value
+ # used during computation does not change depending on how the
+ # compiler optimized the code, since the value is always kept
+ # in its specified precision.
+ 'cflags': [
+ '-m32',
+ '-pthread',
+ '-march=pentium4',
+ '-fno-exceptions',
+ '-msse2',
+ '-mfpmath=sse',
+ ],
+ 'linkflags': [
+ '-m32',
+ '-pthread',
+ ],
+ 'scons_settings': {
+ 'LIBPATH': ['$DESTINATION_ROOT/lib'],
+ # Linking of large files uses lots of RAM, so serialize links
+ # using the handy flock command from util-linux.
+ 'FLOCK_LINK': ['flock', '$DESTINATION_ROOT/linker.lock', '$LINK'],
+
+ # We have several cases where archives depend on each other in
+ # a cyclic fashion. Since the GNU linker does only a single
+ # pass over the archives we surround the libraries with
+ # --start-group and --end-group (aka -( and -) ). That causes
+ # ld to loop over the group until no more undefined symbols
+ # are found. In an ideal world we would only make groups from
+ # those libraries which we knew to be in cycles. However,
+ # that's tough with SCons, so we bodge it by making all the
+ # archives a group by redefining the linking command here.
+ #
+ # TODO: investigate whether we still have cycles that
+ # require --{start,end}-group. There has been a lot of
+ # refactoring since this was first coded, which might have
+ # eliminated the circular dependencies.
+ 'LINKCOM': [['$FLOCK_LINK', '-o', '$TARGET', '$LINKFLAGS', '$SOURCES', '$_LIBDIRFLAGS', '-Wl,--start-group', '$_LIBFLAGS', '-Wl,--end-group']],
+ 'SHLINKCOM': [['$FLOCK_LINK', '-o', '$TARGET $SHLIN', 'FLAGS', '$SOURCES', '$_LIBDIRFLAGS', '-Wl,--start-group', '$_LIBFLAGS', '-Wl,--end-group']],
+ 'IMPLICIT_COMMAND_DEPENDENCIES': 0,
+ },
+ },
+ }],
['OS=="mac"', {
'target_defaults': {
'mac_bundle': 0,
« no previous file with comments | « base/base.gyp ('k') | build/linux/pkg_config_wrapper.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698