Bug 1429282 - Explicitly link against a bunch of OSX frameworks we end up linking. r=gps
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 10 Jan 2018 11:22:10 +0900
changeset 452813 a050e10db05ca09097b0ba06abfb8cde480dba74
parent 452812 2e6327f24e4adf802ee844785ed238c77aa8f1d1
child 452814 0085a1b2cbdcbe2d05c1ce7127eb8c0304f7516e
push id1648
push usermtabara@mozilla.com
push dateThu, 01 Mar 2018 12:45:47 +0000
treeherdermozilla-release@cbb9688c2eeb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersgps
bugs1429282
milestone59.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1429282 - Explicitly link against a bunch of OSX frameworks we end up linking. r=gps The OSX linker apparently decides on its own to link against system frameworks. We end up with libxul linked to 6 frameworks that were never given on the command line, and we do use symbols from those. Interestingly, for those frameworks that don't appear on the command line, there is no determinism in how stubs for lazy bindings (equivalent to Linux's PLT, AIUI) are laid out in the binary. But for those that do appear on the command line, the layout is deterministic. So add those frameworks to the command line. With this change, the remaining difference between two builds of the same changeset on try is due to symbol tables for profiling. Stripping those (like we do on beta/release) produces no differences.
old-configure.in
--- a/old-configure.in
+++ b/old-configure.in
@@ -2160,17 +2160,17 @@ dnl = Enable the toolkit as needed      
 dnl ========================================================
 
 case "$MOZ_WIDGET_TOOLKIT" in
 
 cocoa)
     LDFLAGS="$LDFLAGS -framework Cocoa -lobjc"
     # Use -Wl as a trick to avoid -framework and framework names from
     # being separated by AC_SUBST_LIST.
-    TK_LIBS='-Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement'
+    TK_LIBS='-Wl,-framework,Foundation -Wl,-framework,CoreFoundation -Wl,-framework,CoreLocation -Wl,-framework,QuartzCore -Wl,-framework,Carbon -Wl,-framework,CoreAudio -Wl,-framework,CoreVideo -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit -Wl,-framework,AddressBook -Wl,-framework,OpenGL -Wl,-framework,Security -Wl,-framework,ServiceManagement -Wl,-framework,CoreServices -Wl,-framework,ApplicationServices -Wl,-framework,AppKit'
     TK_CFLAGS=""
     CFLAGS="$CFLAGS $TK_CFLAGS"
     CXXFLAGS="$CXXFLAGS $TK_CFLAGS"
     MOZ_USER_DIR="Mozilla"
     MOZ_FS_LAYOUT=bundle
     ;;
 
 uikit)