Platform/Porting to unified sources: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
 
(27 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This page is here to help coordinate the effort around porting Gecko's build system to UNIFIED_SOURCES, a mechanism that enables faster builds by concatenating sources files to have fewer, larger translation units.
This page is here to help coordinate the effort around porting Gecko's build system to UNIFIED_SOURCES, a mechanism that enables '''FASTER BUILDS''' by concatenating sources files to have fewer, larger translation units.


= Ongoing porting projects =
= Ongoing porting projects =


To avoid stepping on each other's toes while porting, please update this table when you start on porting a new source directory to UNIFIED_SOURCES, and remove it when it's landed.
When we start porting a directory, we file a bug about it, and block the tracking bug with the '''unified''' alias ({{bug|939583}}).


{|
[https://bugzilla.mozilla.org/buglist.cgi?f1=blocked&list_id=8605698&o1=substring&resolution=---&query_format=advanced&v1=939583 Here is a bugzilla search] that lists all such open bugs i.e. all the directories that are currently being ported by someone.
! Directory
 
! Status
Directories already ported are listed below (see '''\o/ UNIFIED_SOURCES \o/''' in the list below).
! Owner
! Bug
|-
| content/canvas/src
| in progress
| bjacob
| {{bug|937886}}
|-
| gfx/layers
| in progress
| bjacob
| {{bug|938970}}
|}


= Script to track porting status =
= Script to track porting status =
Line 40: Line 27:
   fileindex=$((fileindex + 1))
   fileindex=$((fileindex + 1))
   mozbuilddir="`dirname "$mozbuildfile"`"
   mozbuilddir="`dirname "$mozbuildfile"`"
   numcpp=`find $mozbuilddir -name "*.cpp" -o -name "*.C" | wc -l`
   numcpp=`find $mozbuilddir -name "*.cpp" -o -name "*.C" -o -name "*.cc" -o -name "*.mm" | wc -l`
   if [ $numcpp -eq 0 ]
   if [ $numcpp -eq 0 ]
   then
   then
     continue
     continue
   fi
   fi
   if ! grep -q SOURCES "$mozbuildfile"
   if ! ( grep -wq SOURCES "$mozbuildfile" || grep -wq UNIFIED_SOURCES "$mozbuildfile" )
   then
   then
     continue
     continue
Line 65: Line 52:
= Current porting status =
= Current porting status =


This is just the output of the above script; use it to update the above table, or to find a new directory to work on.
This is just the output of the above script; use it to find a new directory to work on.


The first column is the number of cpp files below each directory, so the higher number hint loosely at greater potential benefits.
The first column is the number of cpp files below each directory, so the higher number hint loosely at greater potential benefits.
Line 71: Line 58:
Directories that are already ported have '''\o/ UNIFIED_SOURCES \o/''' written next to them.
Directories that are already ported have '''\o/ UNIFIED_SOURCES \o/''' written next to them.


   586 ./gfx/skia
   599 ./gfx/skia \o/ UNIFIED_SOURCES \o/
   290 ./js/src
   295 ./js/src \o/ UNIFIED_SOURCES \o/
   229 ./widget
   244 ./toolkit/crashreporter \o/ UNIFIED_SOURCES \o/
   167 ./content/media
   194 ./content/media \o/ UNIFIED_SOURCES \o/
   143 ./content/svg/content/src
   143 ./content/svg/content/src \o/ UNIFIED_SOURCES \o/
   126 ./gfx/angle
  141 ./security/sandbox
   111 ./gfx/layers
  136 ./ipc/chromium \o/ UNIFIED_SOURCES \o/
   91 ./content/base/src
   126 ./gfx/angle \o/ UNIFIED_SOURCES \o/
   108 ./gfx/layers \o/ UNIFIED_SOURCES \o/
   92 ./content/base/src \o/ UNIFIED_SOURCES \o/
   80 ./xpcom/tests
   80 ./xpcom/tests
   80 ./xpcom/reflect/xptcall/src
   79 ./toolkit/crashreporter/google-breakpad/src/common \o/ UNIFIED_SOURCES \o/
   76 ./content/html/content/src
   78 ./content/html/content/src \o/ UNIFIED_SOURCES \o/
   73 ./gfx/thebes
   76 ./xpcom/reflect/xptcall/src
   70 ./xpcom/reflect/xptcall/src/md/unix
  74 ./gfx/thebes \o/ UNIFIED_SOURCES \o/
   64 ./netwerk/base/src
   66 ./xpcom/reflect/xptcall/src/md/unix
   64 ./js/src/jsapi-tests
   65 ./toolkit/crashreporter/google-breakpad/src/client
   61 ./widget/windows
   65 ./js/src/jsapi-tests \o/ UNIFIED_SOURCES \o/
  64 ./netwerk/base/src \o/ UNIFIED_SOURCES \o/
   61 ./widget/windows \o/ UNIFIED_SOURCES \o/
  59 ./layout/xul \o/ UNIFIED_SOURCES \o/
   56 ./gfx/angle/src/libGLESv2
   56 ./gfx/angle/src/libGLESv2
   55 ./security/manager/ssl/src
   55 ./security/manager/ssl/src \o/ UNIFIED_SOURCES \o/
   53 ./content/canvas/src
  55 ./gfx/2d \o/ UNIFIED_SOURCES \o/
   50 ./content/media/webaudio
   53 ./content/canvas/src \o/ UNIFIED_SOURCES \o/
   47 ./layout/style
   51 ./toolkit/crashreporter/google-breakpad/src/processor \o/ UNIFIED_SOURCES \o/
   47 ./gfx/2d
   50 ./layout/style \o/ UNIFIED_SOURCES \o/
   45 ./layout/generic
   50 ./content/media/webaudio \o/ UNIFIED_SOURCES \o/
   42 ./widget/gonk
   47 ./layout/generic \o/ UNIFIED_SOURCES \o/
   41 ./layout/xul/base/src
   45 ./widget/gonk
  44 ./gfx/harfbuzz/src \o/ UNIFIED_SOURCES \o/
   41 ./hal \o/ UNIFIED_SOURCES \o/
  41 ./content/events/src \o/ UNIFIED_SOURCES \o/
  40 ./widget/cocoa \o/ UNIFIED_SOURCES \o/
   40 ./netwerk/test
   40 ./netwerk/test
   40 ./content/events/src
   39 ./dom/base \o/ UNIFIED_SOURCES \o/
   39 ./hal
   38 ./xpcom/glue \o/ UNIFIED_SOURCES \o/
   38 ./content/xslt/src/xpath
   38 ./content/xslt/src/xpath \o/ UNIFIED_SOURCES \o/
  37 ./xpcom/glue
   36 ./layout/base \o/ UNIFIED_SOURCES \o/
   37 ./dom/base
  36 ./layout/base
   36 ./ipc/ipdl/test/cxx
   36 ./ipc/ipdl/test/cxx
   36 ./gfx/graphite2/src
   36 ./gfx/graphite2/src \o/ UNIFIED_SOURCES \o/
   35 ./layout/svg
   34 ./gfx/gl \o/ UNIFIED_SOURCES \o/
   33 ./parser/html \o/ UNIFIED_SOURCES \o/
   33 ./parser/html \o/ UNIFIED_SOURCES \o/
   33 ./netwerk/protocol/http
   33 ./netwerk/protocol/http
   33 ./build/stlport
   33 ./build/stlport
   32 ./js/xpconnect/src
   32 ./js/xpconnect/src \o/ UNIFIED_SOURCES \o/
   32 ./dom/plugins/base
   32 ./dom/plugins/base \o/ UNIFIED_SOURCES \o/
   30 ./content/xslt/src/xslt
  31 ./gfx/ots/src \o/ UNIFIED_SOURCES \o/
   28 ./widget/xpwidgets
  30 ./layout/svg \o/ UNIFIED_SOURCES \o/
   27 ./widget/gtk
   30 ./content/xslt/src/xslt \o/ UNIFIED_SOURCES \o/
  29 ./dom/plugins/ipc
   28 ./widget/xpwidgets \o/ UNIFIED_SOURCES \o/
  28 ./toolkit/xre \o/ UNIFIED_SOURCES \o/
  28 ./dom/bluetooth
   27 ./widget/gtk \o/ UNIFIED_SOURCES \o/
  27 ./uriloader/exthandler \o/ UNIFIED_SOURCES \o/
  26 ./xpcom/io \o/ UNIFIED_SOURCES \o/
   26 ./widget/qt
   26 ./widget/qt
   26 ./content/xul/templates/src
   26 ./tools/profiler \o/ UNIFIED_SOURCES \o/
   25 ./xpcom/io
   26 ./ipc/glue \o/ UNIFIED_SOURCES \o/
   25 ./ipc/glue
   26 ./content/xul/templates/src \o/ UNIFIED_SOURCES \o/
   25 ./gfx/gl
   25 ./xpcom/base \o/ UNIFIED_SOURCES \o/
   25 ./extensions/universalchardet/src/base
   25 ./extensions/universalchardet/src/base \o/ UNIFIED_SOURCES \o/
   25 ./dom/plugins/ipc
   25 ./dom/system \o/ UNIFIED_SOURCES \o/
   24 ./xpcom/base
   24 ./image/src \o/ UNIFIED_SOURCES \o/
   24 ./uriloader/exthandler
   24 ./dom/indexedDB \o/ UNIFIED_SOURCES \o/
   24 ./toolkit/xre
   24 ./content/smil \o/ UNIFIED_SOURCES \o/
   24 ./image/src
   24 ./accessible/src/base \o/ UNIFIED_SOURCES \o/
  24 ./dom/system
   23 ./toolkit/crashreporter/google-breakpad/src/common/linux \o/ UNIFIED_SOURCES \o/
   24 ./dom/indexedDB
   23 ./storage/src \o/ UNIFIED_SOURCES \o/
  24 ./content/smil
  24 ./accessible/src/base
   23 ./storage/src
   23 ./netwerk/protocol/rtsp
   23 ./netwerk/protocol/rtsp
   23 ./intl/locale/src
   23 ./intl/locale/src \o/ UNIFIED_SOURCES \o/
  23 ./dom/bluetooth
   22 ./xpcom/ds \o/ UNIFIED_SOURCES \o/
   22 ./xpcom/ds
   22 ./layout/mathml \o/ UNIFIED_SOURCES \o/
   22 ./layout/mathml
   22 ./editor/libeditor/base \o/ UNIFIED_SOURCES \o/
   22 ./editor/libeditor/base \o/ UNIFIED_SOURCES \o/
   19 ./accessible/src/windows/msaa
  22 ./content/media/fmp4 \o/ UNIFIED_SOURCES \o/
  19 ./testing/gtest
  19 ./layout/forms \o/ UNIFIED_SOURCES \o/
   19 ./accessible/src/windows/msaa \o/ UNIFIED_SOURCES \o/
   19 ./accessible/src/atk
   19 ./accessible/src/atk
   18 ./xpcom/string/src
   18 ./xpcom/string/src \o/ UNIFIED_SOURCES \o/
   18 ./widget/os2
   18 ./widget/os2
   18 ./widget/android
   18 ./widget/android
  18 ./tools/profiler
   18 ./content/media/webaudio/blink \o/ UNIFIED_SOURCES \o/
  18 ./layout/forms
   17 ./toolkit/components/places \o/ UNIFIED_SOURCES \o/
   18 ./content/media/webaudio/blink
  17 ./toolkit/mozapps/update
   17 ./toolkit/components/places
   17 ./netwerk/cache
   17 ./netwerk/cache
  17 ./intl/uconv/src \o/ UNIFIED_SOURCES \o/
   17 ./editor/libeditor/html \o/ UNIFIED_SOURCES \o/
   17 ./editor/libeditor/html \o/ UNIFIED_SOURCES \o/
  17 ./dom/workers
   17 ./dom/system/gonk
   17 ./dom/system/gonk
   17 ./dom/mobilemessage/src
   17 ./dom/mobilemessage/src \o/ UNIFIED_SOURCES \o/
   17 ./dom/file
   17 ./dom/file \o/ UNIFIED_SOURCES \o/
   17 ./content/xbl/src
   17 ./content/xbl/src \o/ UNIFIED_SOURCES \o/
   16 ./netwerk/cache2
   16 ./netwerk/cache2 \o/ UNIFIED_SOURCES \o/
   16 ./intl/uconv/src \o/ UNIFIED_SOURCES \o/
   16 ./image/decoders \o/ UNIFIED_SOURCES \o/
  16 ./dom/workers
   16 ./dom/camera
   16 ./dom/camera
   15 ./js/jsd
   15 ./dom/ipc \o/ UNIFIED_SOURCES \o/
   15 ./image/decoders
   14 ./rdf/base/src \o/ UNIFIED_SOURCES \o/
   15 ./dom/ipc
   14 ./media/omx-plugin
   14 ./rdf/base/src
   14 ./js/jsd \o/ UNIFIED_SOURCES \o/
  14 ./gfx/src \o/ UNIFIED_SOURCES \o/
  13 ./xpcom/threads \o/ UNIFIED_SOURCES \o/
   13 ./widget/windows/winrt
   13 ./widget/windows/winrt
   13 ./parser/htmlparser/src \o/ UNIFIED_SOURCES \o/
   13 ./parser/htmlparser/src \o/ UNIFIED_SOURCES \o/
   13 ./modules/libjar \o/ UNIFIED_SOURCES \o/
   13 ./modules/libjar \o/ UNIFIED_SOURCES \o/
   13 ./media/omx-plugin
   13 ./gfx/tests/gtest \o/ UNIFIED_SOURCES \o/
   13 ./gfx/tests/gtest
   13 ./extensions/spellcheck/hunspell/src \o/ UNIFIED_SOURCES \o/
   13 ./gfx/src
   12 ./xpcom/build \o/ UNIFIED_SOURCES \o/
   13 ./extensions/spellcheck/hunspell/src
   12 ./toolkit/mozapps/update/updater
   12 ./toolkit/crashreporter
   12 ./toolkit/crashreporter/google-breakpad/src/common/mac \o/ UNIFIED_SOURCES \o/
   12 ./toolkit/components/url-classifier
   12 ./toolkit/components/url-classifier \o/ UNIFIED_SOURCES \o/
   12 ./layout/tables
   12 ./layout/tables \o/ UNIFIED_SOURCES \o/
   12 ./docshell/base
  12 ./gfx/ycbcr \o/ UNIFIED_SOURCES \o/
   12 ./accessible/src/xul
   12 ./docshell/base \o/ UNIFIED_SOURCES \o/
   12 ./accessible/src/windows/ia2
  12 ./content/media/webspeech/recognition \o/ UNIFIED_SOURCES \o/
   12 ./accessible/src/generic
   12 ./accessible/src/xul \o/ UNIFIED_SOURCES \o/
   11 ./xpcom/threads
   12 ./accessible/src/windows/ia2 \o/ UNIFIED_SOURCES \o/
  11 ./xpcom/build
   12 ./accessible/src/generic \o/ UNIFIED_SOURCES \o/
   11 ./netwerk/streamconv/converters
   11 ./toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer \o/ UNIFIED_SOURCES \o/
  11 ./gfx/ycbcr
   11 ./netwerk/streamconv/converters \o/ UNIFIED_SOURCES \o/
   11 ./dom/plugins/base/android
   11 ./dom/plugins/base/android
   11 ./content/media/omx
   11 ./content/media/omx
   10 ./toolkit/mozapps/update/updater
   10 ./toolkit/components/protobuf \o/ UNIFIED_SOURCES \o/
   10 ./content/media/webspeech/synth
   10 ./content/media/webspeech/synth \o/ UNIFIED_SOURCES \o/
  10 ./accessible/src/mac \o/ UNIFIED_SOURCES \o/
  9 ./netwerk/dns \o/ UNIFIED_SOURCES \o/
   9 ./media/libsoundtouch/src \o/ UNIFIED_SOURCES \o/
   9 ./media/libsoundtouch/src \o/ UNIFIED_SOURCES \o/
   9 ./layout/xul/tree
   9 ./layout/xul/tree \o/ UNIFIED_SOURCES \o/
   9 ./layout/xul/grid
   9 ./layout/xul/grid \o/ UNIFIED_SOURCES \o/
   9 ./layout/inspector/src
   9 ./layout/inspector \o/ UNIFIED_SOURCES \o/
   9 ./dom/telephony
  9 ./image/decoders/icon \o/ UNIFIED_SOURCES \o/
   9 ./dom/network/src
   9 ./dom/telephony \o/ UNIFIED_SOURCES \o/
   9 ./content/media/webspeech/recognition
   9 ./dom/network/src \o/ UNIFIED_SOURCES \o/
   8 ./xpfe/appshell/src
   8 ./xpfe/appshell/src \o/ UNIFIED_SOURCES \o/
   8 ./js/src/gdb
   8 ./toolkit/crashreporter/google-breakpad/src/client/mac/handler \o/ UNIFIED_SOURCES \o/
   8 ./image/decoders/icon
  8 ./python/mozbuild/mozbuild/test/frontend/data/variable-passthru
   8 ./extensions/spellcheck/src
  8 ./python/mozbuild/mozbuild/test/backend/data/variable_passthru
   8 ./netwerk/wifi \o/ UNIFIED_SOURCES \o/
   8 ./js/src/gdb \o/ UNIFIED_SOURCES \o/
   8 ./extensions/spellcheck/src \o/ UNIFIED_SOURCES \o/
   8 ./editor/composer/src \o/ UNIFIED_SOURCES \o/
   8 ./editor/composer/src \o/ UNIFIED_SOURCES \o/
   8 ./caps/src
   8 ./caps/src \o/ UNIFIED_SOURCES \o/
   8 ./browser/components
   8 ./accessible/src/html \o/ UNIFIED_SOURCES \o/
   8 ./accessible/src/html
   7 ./widget/gonk/nativewindow
   7 ./tools/jprof
   7 ./tools/jprof
  7 ./security/sandbox
  7 ./netwerk/wifi
   7 ./mozglue/build
   7 ./mozglue/build
   7 ./intl/lwbrk/src
   7 ./intl/lwbrk/src \o/ UNIFIED_SOURCES \o/
   7 ./content/media/directshow
   7 ./content/media/directshow \o/ UNIFIED_SOURCES \o/
   7 ./content/html/document/src
   7 ./content/html/document/src \o/ UNIFIED_SOURCES \o/
   6 ./xpcom/reflect/xptcall/src/md/win32
   6 ./xpcom/reflect/xptcall/src/md/win32
   6 ./widget/gonk/nativewindow
   6 ./uriloader/prefetch \o/ UNIFIED_SOURCES \o/
  6 ./uriloader/prefetch
   6 ./tools/trace-malloc
   6 ./tools/trace-malloc
   6 ./toolkit/system/gnome
   6 ./toolkit/system/gnome
  6 ./toolkit/crashreporter/client \o/ UNIFIED_SOURCES \o/
  6 ./toolkit/components/startup \o/ UNIFIED_SOURCES \o/
   6 ./toolkit/components/maintenanceservice
   6 ./toolkit/components/maintenanceservice
   6 ./security/manager/pki/src
   6 ./security/manager/pki/src \o/ UNIFIED_SOURCES \o/
   6 ./security/manager/boot/src
   6 ./security/manager/boot/src \o/ UNIFIED_SOURCES \o/
   6 ./netwerk/protocol/ftp
  6 ./other-licenses/snappy \o/ UNIFIED_SOURCES \o/
   6 ./netwerk/ipc
   6 ./netwerk/protocol/ftp \o/ UNIFIED_SOURCES \o/
   6 ./netwerk/ipc \o/ UNIFIED_SOURCES \o/
   6 ./mozglue/linker
   6 ./mozglue/linker
   6 ./modules/libjar/zipwriter/src \o/ UNIFIED_SOURCES \o/
   6 ./modules/libjar/zipwriter/src \o/ UNIFIED_SOURCES \o/
   6 ./js/xpconnect/wrappers
   6 ./js/xpconnect/wrappers \o/ UNIFIED_SOURCES \o/
   6 ./extensions/cookie
   6 ./extensions/cookie \o/ UNIFIED_SOURCES \o/
   6 ./extensions/auth
   6 ./extensions/auth
   6 ./embedding/browser/webBrowser
   6 ./embedding/browser/webBrowser \o/ UNIFIED_SOURCES \o/
   6 ./editor/libeditor/text \o/ UNIFIED_SOURCES \o/
   6 ./editor/libeditor/text \o/ UNIFIED_SOURCES \o/
   6 ./dom/src/storage
   6 ./dom/src/storage \o/ UNIFIED_SOURCES \o/
   6 ./dom/fmradio
   6 ./dom/fmradio
   6 ./content/xul/document/src
  6 ./dom/bindings \o/ UNIFIED_SOURCES \o/
   6 ./content/media/wmf
   6 ./content/xul/document/src \o/ UNIFIED_SOURCES \o/
   6 ./content/media/webrtc
   6 ./content/media/wmf \o/ UNIFIED_SOURCES \o/
   6 ./content/media/webrtc \o/ UNIFIED_SOURCES \o/
  6 ./accessible/src/xpcom \o/ UNIFIED_SOURCES \o/
   5 ./widget/gonk/libdisplay
   5 ./widget/gonk/libdisplay
   5 ./toolkit/crashreporter/client
   5 ./toolkit/crashreporter/google-breakpad/src/client/solaris/handler
   5 ./toolkit/components/startup
  5 ./toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation \o/ UNIFIED_SOURCES \o/
   5 ./other-licenses/skia-npapi
   5 ./toolkit/components/downloads \o/ UNIFIED_SOURCES \o/
   5 ./other-licenses/skia-npapi \o/ UNIFIED_SOURCES \o/
   5 ./netwerk/protocol/wyciwyg
   5 ./netwerk/protocol/wyciwyg
   5 ./netwerk/protocol/about
   5 ./netwerk/protocol/about \o/ UNIFIED_SOURCES \o/
  5 ./netwerk/dns
   5 ./modules/libpref/src \o/ UNIFIED_SOURCES \o/
   5 ./modules/libpref/src
   5 ./memory/mozalloc \o/ UNIFIED_SOURCES \o/
   5 ./memory/mozalloc
   5 ./layout/printing \o/ UNIFIED_SOURCES \o/
   5 ./layout/printing
   5 ./intl/unicharutil/util \o/ UNIFIED_SOURCES \o/
   5 ./intl/unicharutil/util \o/ UNIFIED_SOURCES \o/
   5 ./intl/unicharutil/src \o/ UNIFIED_SOURCES \o/
   5 ./intl/unicharutil/src \o/ UNIFIED_SOURCES \o/
  5 ./intl/uconv/tests
   5 ./intl/locale/src/unix
   5 ./intl/locale/src/unix
   5 ./gfx/angle/src/libEGL
   5 ./gfx/angle/src/libEGL
   5 ./embedding/components/commandhandler/src
   5 ./embedding/components/commandhandler/src \o/ UNIFIED_SOURCES \o/
   5 ./editor/txmgr/src \o/ UNIFIED_SOURCES \o/
   5 ./editor/txmgr/src \o/ UNIFIED_SOURCES \o/
   5 ./content/xslt/src/base
   5 ./content/xslt/src/base \o/ UNIFIED_SOURCES \o/
   5 ./content/media/omx/mediaresourcemanager
   5 ./content/media/omx/mediaresourcemanager
   5 ./content/media/mediasource
  5 ./content/media/ogg \o/ UNIFIED_SOURCES \o/
   5 ./content/media/mediasource \o/ UNIFIED_SOURCES \o/
   5 ./content/media/gstreamer
   5 ./content/media/gstreamer
   4 ./xpcom/reflect/xptinfo/src
   4 ./xpcom/reflect/xptinfo/src \o/ UNIFIED_SOURCES \o/
   4 ./xpcom/components
   4 ./xpcom/components
  4 ./toolkit/components/downloads
   4 ./toolkit/components/ctypes
   4 ./toolkit/components/ctypes
   4 ./startupcache
   4 ./startupcache
   4 ./python/mozbuild/mozbuild/test/frontend/data/variable-passthru
   4 ./netwerk/socket \o/ UNIFIED_SOURCES \o/
  4 ./python/mozbuild/mozbuild/test/backend/data/variable_passthru
  4 ./netwerk/socket
   4 ./netwerk/protocol/websocket
   4 ./netwerk/protocol/websocket
   4 ./netwerk/protocol/device
   4 ./netwerk/protocol/device \o/ UNIFIED_SOURCES \o/
   4 ./netwerk/cookie
   4 ./netwerk/cookie \o/ UNIFIED_SOURCES \o/
   4 ./mozglue/android
   4 ./mozglue/android
   4 ./layout/tools/layout-debug/src
   4 ./layout/tools/layout-debug/src \o/ UNIFIED_SOURCES \o/
   4 ./intl/locale/src/windows
   4 ./intl/locale/src/windows
   4 ./intl/locale/src/os2
   4 ./intl/locale/src/os2
   4 ./gfx/cairo/cairo/src
   4 ./gfx/cairo/cairo/src \o/ UNIFIED_SOURCES \o/
   4 ./extensions/pref/autoconfig/src
   4 ./extensions/pref/autoconfig/src
   4 ./embedding/components/printingui/src/win
   4 ./embedding/components/printingui/src/win \o/ UNIFIED_SOURCES \o/
   4 ./dom/time
   4 ./dom/time \o/ UNIFIED_SOURCES \o/
   4 ./dom/quota
   4 ./dom/quota \o/ UNIFIED_SOURCES \o/
   4 ./dom/media
   4 ./dom/media \o/ UNIFIED_SOURCES \o/
   4 ./dom/fmradio/ipc
   4 ./dom/fmradio/ipc
   4 ./dom/encoding
   4 ./dom/encoding \o/ UNIFIED_SOURCES \o/
   4 ./dom/audiochannel
   4 ./dom/audiochannel \o/ UNIFIED_SOURCES \o/
   4 ./docshell/shistory/src
   4 ./docshell/shistory/src \o/ UNIFIED_SOURCES \o/
   4 ./content/xml/document/src
   4 ./content/xml/document/src \o/ UNIFIED_SOURCES \o/
   4 ./content/xml/content/src
   4 ./content/xml/content/src \o/ UNIFIED_SOURCES \o/
   4 ./content/media/plugins
   4 ./content/media/plugins \o/ UNIFIED_SOURCES \o/
  4 ./content/media/ogg
   4 ./chrome/src \o/ UNIFIED_SOURCES \o/
   4 ./chrome/src
   3 ./xpcom/sample \o/ UNIFIED_SOURCES \o/
  4 ./accessible/src/xpcom
   3 ./widget/shared \o/ UNIFIED_SOURCES \o/
   3 ./xpcom/sample
   3 ./widget/shared
   3 ./tools/trace-malloc/lib
   3 ./tools/trace-malloc/lib
   3 ./toolkit/system/dbus
   3 ./toolkit/system/dbus
   3 ./toolkit/library
   3 ./toolkit/crashreporter/google-breakpad/src/common/solaris \o/ UNIFIED_SOURCES \o/
  3 ./toolkit/crashreporter/google-breakpad/src/client/linux/handler \o/ UNIFIED_SOURCES \o/
   3 ./toolkit/components/remote
   3 ./toolkit/components/remote
   3 ./toolkit/components/ctypes/tests
   3 ./toolkit/components/ctypes/tests \o/ UNIFIED_SOURCES \o/
  3 ./testing/gtest
   3 ./rdf/tests/dsds
   3 ./rdf/tests/dsds
   3 ./parser/xml/src
   3 ./parser/xml/src
   3 ./netwerk/protocol/data
   3 ./netwerk/protocol/data \o/ UNIFIED_SOURCES \o/
   3 ./mobile/android/components/build
   3 ./mobile/android/components/build
  3 ./mobile/android/components
   3 ./layout/build \o/ UNIFIED_SOURCES \o/
   3 ./layout/style/test
   3 ./js/xpconnect/tests/components/native \o/ UNIFIED_SOURCES \o/
  3 ./layout/build
   3 ./js/xpconnect/tests/components/native
   3 ./js/xpconnect/loader
   3 ./js/xpconnect/loader
   3 ./js/src/shell
   3 ./js/src/shell \o/ UNIFIED_SOURCES \o/
   3 ./js/ipc
   3 ./js/ipc \o/ UNIFIED_SOURCES \o/
   3 ./ipc/testshell
   3 ./ipc/testshell
   3 ./ipc/dbus
   3 ./ipc/dbus
   3 ./intl/locale/src/mac
   3 ./intl/locale/src/mac \o/ UNIFIED_SOURCES \o/
   3 ./intl/hyphenation/src
   3 ./intl/hyphenation/src \o/ UNIFIED_SOURCES \o/
   3 ./gfx/ipc
   3 ./gfx/ipc
   3 ./embedding/tests/winEmbed
   3 ./embedding/tests/winEmbed
   3 ./embedding/components/windowwatcher/src
   3 ./embedding/components/windowwatcher/src \o/ UNIFIED_SOURCES \o/
   3 ./embedding/components/printingui/src/unixshared
   3 ./embedding/components/printingui/src/unixshared \o/ UNIFIED_SOURCES \o/
   3 ./embedding/components/printingui/src/os2
   3 ./embedding/components/printingui/src/os2
  3 ./embedding/components/printingui/src/mac \o/ UNIFIED_SOURCES \o/
   3 ./editor/txtsvc/src \o/ UNIFIED_SOURCES \o/
   3 ./editor/txtsvc/src \o/ UNIFIED_SOURCES \o/
   3 ./dom/wifi
   3 ./dom/wifi
   3 ./dom/power
  3 ./dom/speakermanager
   3 ./dom/gamepad
   3 ./dom/power \o/ UNIFIED_SOURCES \o/
   3 ./dom/devicestorage
  3 ./dom/icc/src
   3 ./content/xul/content/src
   3 ./dom/gamepad \o/ UNIFIED_SOURCES \o/
   3 ./content/media/webm
   3 ./dom/devicestorage \o/ UNIFIED_SOURCES \o/
   3 ./content/media/encoder
   3 ./content/xul/content/src \o/ UNIFIED_SOURCES \o/
   3 ./content/media/webm \o/ UNIFIED_SOURCES \o/
   3 ./content/media/encoder \o/ UNIFIED_SOURCES \o/
   3 ./build/win32
   3 ./build/win32
   3 ./browser/components/shell/src
   3 ./browser/components/shell/src
   3 ./accessible/src/windows/sdn
   3 ./accessible/src/windows/sdn \o/ UNIFIED_SOURCES \o/
   2 ./xpcom/reflect/xptcall/src/md/test
   2 ./xpcom/reflect/xptcall/src/md/test
  2 ./xpcom/glue/tests/gtest \o/ UNIFIED_SOURCES \o/
   2 ./widget/qt/faststartupqt
   2 ./widget/qt/faststartupqt
   2 ./view/src
   2 ./view/src
   2 ./uriloader/base
   2 ./uriloader/base \o/ UNIFIED_SOURCES \o/
   2 ./toolkit/xre/test/win
   2 ./toolkit/xre/test/win
   2 ./toolkit/system/unixproxy
   2 ./toolkit/system/unixproxy
   2 ./toolkit/mozapps/update/tests
   2 ./toolkit/mozapps/update/tests
   2 ./toolkit/mozapps/plugins/tests
   2 ./toolkit/mozapps/plugins/tests
   2 ./toolkit/crashreporter/test
  2 ./toolkit/library
   2 ./toolkit/components/mediasniffer
   2 ./toolkit/crashreporter/test \o/ UNIFIED_SOURCES \o/
   2 ./toolkit/components/autocomplete
  2 ./toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation \o/ UNIFIED_SOURCES \o/
   2 ./toolkit/components/alerts
   2 ./toolkit/components/mediasniffer \o/ UNIFIED_SOURCES \o/
   2 ./toolkit/components/autocomplete \o/ UNIFIED_SOURCES \o/
   2 ./toolkit/components/alerts \o/ UNIFIED_SOURCES \o/
   2 ./testing/tools/screenshot
   2 ./testing/tools/screenshot
   2 ./security/manager/ssl/tests/unit/tlsserver/lib
   2 ./security/manager/ssl/tests/unit/tlsserver/lib \o/ UNIFIED_SOURCES \o/
   2 ./rdf/datasource/src
  2 ./security/manager/ssl/tests/unit/tlsserver/cmd
   2 ./profile/dirserviceprovider/src
   2 ./rdf/datasource/src \o/ UNIFIED_SOURCES \o/
   2 ./profile/dirserviceprovider/src \o/ UNIFIED_SOURCES \o/
   2 ./netwerk/system/qt
   2 ./netwerk/system/qt
   2 ./netwerk/streamconv/test
   2 ./netwerk/streamconv/test \o/ UNIFIED_SOURCES \o/
   2 ./netwerk/protocol/viewsource
   2 ./netwerk/protocol/viewsource \o/ UNIFIED_SOURCES \o/
   2 ./netwerk/protocol/file
   2 ./netwerk/protocol/file \o/ UNIFIED_SOURCES \o/
   2 ./mozglue/tests
   2 ./mozglue/tests
   2 ./layout/ipc
   2 ./layout/ipc \o/ UNIFIED_SOURCES \o/
  2 ./js/xpconnect/shell
   2 ./ipc/app
   2 ./ipc/app
   2 ./intl/unicharutil/tests
   2 ./intl/unicharutil/tests
   2 ./intl/strres/src
   2 ./intl/strres/src \o/ UNIFIED_SOURCES \o/
   2 ./intl/chardet/src
   2 ./intl/chardet/src \o/ UNIFIED_SOURCES \o/
   2 ./extensions/universalchardet/src/xpcom
   2 ./extensions/universalchardet/src/xpcom \o/ UNIFIED_SOURCES \o/
   2 ./extensions/permissions
   2 ./extensions/permissions \o/ UNIFIED_SOURCES \o/
  2 ./embedding/components/printingui/src/mac
   2 ./embedding/components/find/src \o/ UNIFIED_SOURCES \o/
   2 ./embedding/components/find/src
   2 ./dom/system/unix
   2 ./dom/system/unix
   2 ./dom/system/android
   2 ./dom/system/android
   2 ./dom/src/notification
   2 ./dom/src/notification \o/ UNIFIED_SOURCES \o/
   2 ./dom/src/geolocation
   2 ./dom/src/geolocation \o/ UNIFIED_SOURCES \o/
   2 ./dom/promise
   2 ./dom/promise
   2 ./dom/plugins/ipc/hangui
  2 ./dom/plugins/ipc/interpose \o/ UNIFIED_SOURCES \o/
   2 ./dom/indexedDB/ipc
   2 ./dom/plugins/ipc/hangui \o/ UNIFIED_SOURCES \o/
   2 ./content/xslt/src/xml
   2 ./dom/indexedDB/ipc \o/ UNIFIED_SOURCES \o/
   2 ./content/media/webspeech/synth/pico
   2 ./content/xslt/src/xml \o/ UNIFIED_SOURCES \o/
   2 ./content/media/wave
   2 ./content/media/webspeech/synth/pico \o/ UNIFIED_SOURCES \o/
   2 ./content/media/raw
   2 ./content/media/wave \o/ UNIFIED_SOURCES \o/
   2 ./content/media/apple
   2 ./content/media/raw \o/ UNIFIED_SOURCES \o/
   2 ./content/mathml/content/src
   2 ./content/media/apple \o/ UNIFIED_SOURCES \o/
   2 ./content/mathml/content/src \o/ UNIFIED_SOURCES \o/
   2 ./build/unix/elfhack
   2 ./build/unix/elfhack
   2 ./browser/metro/shell/commandexecutehandler
   2 ./browser/metro/shell/commandexecutehandler
Line 379: Line 387:
   1 ./xpcom/reflect/xptcall/tests
   1 ./xpcom/reflect/xptcall/tests
   1 ./xpcom/reflect/xptcall/src/md/os2
   1 ./xpcom/reflect/xptcall/src/md/os2
  1 ./xpcom/glue/tests/gtest
   1 ./xpcom/glue/standalone
   1 ./xpcom/glue/standalone
   1 ./webapprt/win
   1 ./webapprt/win
  1 ./webapprt/mac
   1 ./webapprt/gtk2
   1 ./webapprt/gtk2
   1 ./uriloader/exthandler/tests
   1 ./uriloader/exthandler/tests
   1 ./tools/jprof/stub
   1 ./tools/jprof/stub
   1 ./toolkit/system/windowsproxy
   1 ./toolkit/system/windowsproxy
  1 ./toolkit/system/osxproxy
   1 ./toolkit/system/androidproxy
   1 ./toolkit/system/androidproxy
   1 ./toolkit/profile
   1 ./toolkit/profile \o/ UNIFIED_SOURCES \o/
  1 ./toolkit/library/winvccorlib
   1 ./toolkit/identity
   1 ./toolkit/identity
   1 ./toolkit/devtools/server
   1 ./toolkit/devtools/server
Line 412: Line 420:
   1 ./security/sandbox/win/src/sandboxbroker
   1 ./security/sandbox/win/src/sandboxbroker
   1 ./security/sandbox/linux
   1 ./security/sandbox/linux
  1 ./security/manager/ssl/tests/unit/tlsserver/cmd
   1 ./security/manager/ssl/tests/gtest
   1 ./security/manager/ssl/tests/gtest
   1 ./rdf/util/src
   1 ./rdf/util/src
Line 420: Line 427:
   1 ./rdf/build
   1 ./rdf/build
   1 ./netwerk/system/win32
   1 ./netwerk/system/win32
  1 ./netwerk/system/mac
   1 ./netwerk/system/android
   1 ./netwerk/system/android
   1 ./netwerk/streamconv/src
   1 ./netwerk/streamconv/src
Line 429: Line 437:
   1 ./netwerk/build
   1 ./netwerk/build
   1 ./memory/replace/dmd
   1 ./memory/replace/dmd
  1 ./media/omx-plugin/lib/ics/libvideoeditorplayer
   1 ./media/omx-plugin/lib/ics/libutils
   1 ./media/omx-plugin/lib/ics/libutils
   1 ./media/omx-plugin/lib/ics/libstagefright
   1 ./media/omx-plugin/lib/ics/libstagefright
Line 443: Line 452:
   1 ./media/libspeex_resampler/src
   1 ./media/libspeex_resampler/src
   1 ./media/libcubeb/src
   1 ./media/libcubeb/src
  1 ./js/xpconnect/shell
   1 ./js/ductwork/debugger
   1 ./js/ductwork/debugger
   1 ./ipc/unixsocket
   1 ./ipc/unixsocket
Line 459: Line 467:
   1 ./image/decoders/icon/qt
   1 ./image/decoders/icon/qt
   1 ./image/decoders/icon/os2
   1 ./image/decoders/icon/os2
  1 ./image/decoders/icon/mac
   1 ./image/decoders/icon/gtk
   1 ./image/decoders/icon/gtk
   1 ./image/decoders/icon/android
   1 ./image/decoders/icon/android
   1 ./image/build
   1 ./image/build
  1 ./extensions/widgetutils/src
   1 ./extensions/gnomevfs
   1 ./extensions/gnomevfs
   1 ./extensions/gio
   1 ./extensions/gio
Line 471: Line 479:
   1 ./dom/voicemail
   1 ./dom/voicemail
   1 ./dom/system/windows
   1 ./dom/system/windows
   1 ./dom/src/offline
  1 ./dom/system/mac
   1 ./dom/src/jsurl
   1 ./dom/src/offline \o/ UNIFIED_SOURCES \o/
   1 ./dom/src/json
   1 ./dom/src/jsurl \o/ UNIFIED_SOURCES \o/
   1 ./dom/src/events
   1 ./dom/src/json \o/ UNIFIED_SOURCES \o/
   1 ./dom/src/events \o/ UNIFIED_SOURCES \o/
   1 ./dom/nfc
   1 ./dom/nfc
   1 ./dom/media/bridge
   1 ./dom/media/bridge
  1 ./dom/icc/src
   1 ./dom/cellbroadcast/src
   1 ./dom/cellbroadcast/src
   1 ./dom/browser-element
   1 ./dom/browser-element
   1 ./dom/battery
   1 ./dom/battery
  1 ./dom/asmjscache
   1 ./dom/apps/src
   1 ./dom/apps/src
   1 ./dom/alarm
   1 ./dom/alarm
Line 486: Line 495:
   1 ./docshell/build
   1 ./docshell/build
   1 ./content/svg/document/src
   1 ./content/svg/document/src
  1 ./config
   1 ./build/win32/vmwarerecordinghelper
   1 ./build/win32/vmwarerecordinghelper
   1 ./build/win32/crashinjectdll
   1 ./build/win32/crashinjectdll

Latest revision as of 17:35, 1 January 2014

This page is here to help coordinate the effort around porting Gecko's build system to UNIFIED_SOURCES, a mechanism that enables FASTER BUILDS by concatenating sources files to have fewer, larger translation units.

Ongoing porting projects

When we start porting a directory, we file a bug about it, and block the tracking bug with the unified alias (bug 939583).

Here is a bugzilla search that lists all such open bugs i.e. all the directories that are currently being ported by someone.

Directories already ported are listed below (see \o/ UNIFIED_SOURCES \o/ in the list below).

Script to track porting status

Here is a script; run it from the root of your source directory to generate a report on the porting status and number of cpp files under each source directory.

#!/bin/bash

MOZBUILDFILES="`find . -name moz.build | grep -v \\./obj`"

logfile="unified-conversion-status.log"

filescount=`echo "$MOZBUILDFILES" | wc -l`
fileindex=0

(while read -r mozbuildfile
do
  fileindex=$((fileindex + 1))
  mozbuilddir="`dirname "$mozbuildfile"`"
  numcpp=`find $mozbuilddir -name "*.cpp" -o -name "*.C" -o -name "*.cc" -o -name "*.mm" | wc -l`
  if [ $numcpp -eq 0 ]
  then
    continue
  fi
  if ! ( grep -wq SOURCES "$mozbuildfile" || grep -wq UNIFIED_SOURCES "$mozbuildfile" )
  then
    continue
  fi
  echo -ne "\r$((100 * fileindex / filescount))%    $mozbuilddir\033[0K" \
    1>&2
  outputline="$numcpp $mozbuilddir"
  unified_msg=
  if grep -q UNIFIED_SOURCES "$mozbuildfile"
  then
    outputline="$outputline \o/ UNIFIED_SOURCES \o/"
  fi
  echo "$outputline"
done <<< "$MOZBUILDFILES") | sort -rn > "$logfile"

echo -e "\rResults written to $logfile\033[0K"

Current porting status

This is just the output of the above script; use it to find a new directory to work on.

The first column is the number of cpp files below each directory, so the higher number hint loosely at greater potential benefits.

Directories that are already ported have \o/ UNIFIED_SOURCES \o/ written next to them.

 599 ./gfx/skia \o/ UNIFIED_SOURCES \o/
 295 ./js/src \o/ UNIFIED_SOURCES \o/
 244 ./toolkit/crashreporter \o/ UNIFIED_SOURCES \o/
 194 ./content/media \o/ UNIFIED_SOURCES \o/
 143 ./content/svg/content/src \o/ UNIFIED_SOURCES \o/
 141 ./security/sandbox
 136 ./ipc/chromium \o/ UNIFIED_SOURCES \o/
 126 ./gfx/angle \o/ UNIFIED_SOURCES \o/
 108 ./gfx/layers \o/ UNIFIED_SOURCES \o/
 92 ./content/base/src \o/ UNIFIED_SOURCES \o/
 80 ./xpcom/tests
 79 ./toolkit/crashreporter/google-breakpad/src/common \o/ UNIFIED_SOURCES \o/
 78 ./content/html/content/src \o/ UNIFIED_SOURCES \o/
 76 ./xpcom/reflect/xptcall/src
 74 ./gfx/thebes \o/ UNIFIED_SOURCES \o/
 66 ./xpcom/reflect/xptcall/src/md/unix
 65 ./toolkit/crashreporter/google-breakpad/src/client
 65 ./js/src/jsapi-tests \o/ UNIFIED_SOURCES \o/
 64 ./netwerk/base/src \o/ UNIFIED_SOURCES \o/
 61 ./widget/windows \o/ UNIFIED_SOURCES \o/
 59 ./layout/xul \o/ UNIFIED_SOURCES \o/
 56 ./gfx/angle/src/libGLESv2
 55 ./security/manager/ssl/src \o/ UNIFIED_SOURCES \o/
 55 ./gfx/2d \o/ UNIFIED_SOURCES \o/
 53 ./content/canvas/src \o/ UNIFIED_SOURCES \o/
 51 ./toolkit/crashreporter/google-breakpad/src/processor \o/ UNIFIED_SOURCES \o/
 50 ./layout/style \o/ UNIFIED_SOURCES \o/
 50 ./content/media/webaudio \o/ UNIFIED_SOURCES \o/
 47 ./layout/generic \o/ UNIFIED_SOURCES \o/
 45 ./widget/gonk
 44 ./gfx/harfbuzz/src \o/ UNIFIED_SOURCES \o/
 41 ./hal \o/ UNIFIED_SOURCES \o/
 41 ./content/events/src \o/ UNIFIED_SOURCES \o/
 40 ./widget/cocoa \o/ UNIFIED_SOURCES \o/
 40 ./netwerk/test
 39 ./dom/base \o/ UNIFIED_SOURCES \o/
 38 ./xpcom/glue \o/ UNIFIED_SOURCES \o/
 38 ./content/xslt/src/xpath \o/ UNIFIED_SOURCES \o/
 36 ./layout/base \o/ UNIFIED_SOURCES \o/
 36 ./ipc/ipdl/test/cxx
 36 ./gfx/graphite2/src \o/ UNIFIED_SOURCES \o/
 34 ./gfx/gl \o/ UNIFIED_SOURCES \o/
 33 ./parser/html \o/ UNIFIED_SOURCES \o/
 33 ./netwerk/protocol/http
 33 ./build/stlport
 32 ./js/xpconnect/src \o/ UNIFIED_SOURCES \o/
 32 ./dom/plugins/base \o/ UNIFIED_SOURCES \o/
 31 ./gfx/ots/src \o/ UNIFIED_SOURCES \o/
 30 ./layout/svg \o/ UNIFIED_SOURCES \o/
 30 ./content/xslt/src/xslt \o/ UNIFIED_SOURCES \o/
 29 ./dom/plugins/ipc
 28 ./widget/xpwidgets \o/ UNIFIED_SOURCES \o/
 28 ./toolkit/xre \o/ UNIFIED_SOURCES \o/
 28 ./dom/bluetooth
 27 ./widget/gtk \o/ UNIFIED_SOURCES \o/
 27 ./uriloader/exthandler \o/ UNIFIED_SOURCES \o/
 26 ./xpcom/io \o/ UNIFIED_SOURCES \o/
 26 ./widget/qt
 26 ./tools/profiler \o/ UNIFIED_SOURCES \o/
 26 ./ipc/glue \o/ UNIFIED_SOURCES \o/
 26 ./content/xul/templates/src \o/ UNIFIED_SOURCES \o/
 25 ./xpcom/base \o/ UNIFIED_SOURCES \o/
 25 ./extensions/universalchardet/src/base \o/ UNIFIED_SOURCES \o/
 25 ./dom/system \o/ UNIFIED_SOURCES \o/
 24 ./image/src \o/ UNIFIED_SOURCES \o/
 24 ./dom/indexedDB \o/ UNIFIED_SOURCES \o/
 24 ./content/smil \o/ UNIFIED_SOURCES \o/
 24 ./accessible/src/base \o/ UNIFIED_SOURCES \o/
 23 ./toolkit/crashreporter/google-breakpad/src/common/linux \o/ UNIFIED_SOURCES \o/
 23 ./storage/src \o/ UNIFIED_SOURCES \o/
 23 ./netwerk/protocol/rtsp
 23 ./intl/locale/src \o/ UNIFIED_SOURCES \o/
 22 ./xpcom/ds \o/ UNIFIED_SOURCES \o/
 22 ./layout/mathml \o/ UNIFIED_SOURCES \o/
 22 ./editor/libeditor/base \o/ UNIFIED_SOURCES \o/
 22 ./content/media/fmp4 \o/ UNIFIED_SOURCES \o/
 19 ./testing/gtest
 19 ./layout/forms \o/ UNIFIED_SOURCES \o/
 19 ./accessible/src/windows/msaa \o/ UNIFIED_SOURCES \o/
 19 ./accessible/src/atk
 18 ./xpcom/string/src \o/ UNIFIED_SOURCES \o/
 18 ./widget/os2
 18 ./widget/android
 18 ./content/media/webaudio/blink \o/ UNIFIED_SOURCES \o/
 17 ./toolkit/components/places \o/ UNIFIED_SOURCES \o/
 17 ./netwerk/cache
 17 ./intl/uconv/src \o/ UNIFIED_SOURCES \o/
 17 ./editor/libeditor/html \o/ UNIFIED_SOURCES \o/
 17 ./dom/workers
 17 ./dom/system/gonk
 17 ./dom/mobilemessage/src \o/ UNIFIED_SOURCES \o/
 17 ./dom/file \o/ UNIFIED_SOURCES \o/
 17 ./content/xbl/src \o/ UNIFIED_SOURCES \o/
 16 ./netwerk/cache2 \o/ UNIFIED_SOURCES \o/
 16 ./image/decoders \o/ UNIFIED_SOURCES \o/
 16 ./dom/camera
 15 ./dom/ipc \o/ UNIFIED_SOURCES \o/
 14 ./rdf/base/src \o/ UNIFIED_SOURCES \o/
 14 ./media/omx-plugin
 14 ./js/jsd \o/ UNIFIED_SOURCES \o/
 14 ./gfx/src \o/ UNIFIED_SOURCES \o/
 13 ./xpcom/threads \o/ UNIFIED_SOURCES \o/
 13 ./widget/windows/winrt
 13 ./parser/htmlparser/src \o/ UNIFIED_SOURCES \o/
 13 ./modules/libjar \o/ UNIFIED_SOURCES \o/
 13 ./gfx/tests/gtest \o/ UNIFIED_SOURCES \o/
 13 ./extensions/spellcheck/hunspell/src \o/ UNIFIED_SOURCES \o/
 12 ./xpcom/build \o/ UNIFIED_SOURCES \o/
 12 ./toolkit/mozapps/update/updater
 12 ./toolkit/crashreporter/google-breakpad/src/common/mac \o/ UNIFIED_SOURCES \o/
 12 ./toolkit/components/url-classifier \o/ UNIFIED_SOURCES \o/
 12 ./layout/tables \o/ UNIFIED_SOURCES \o/
 12 ./gfx/ycbcr \o/ UNIFIED_SOURCES \o/
 12 ./docshell/base \o/ UNIFIED_SOURCES \o/
 12 ./content/media/webspeech/recognition \o/ UNIFIED_SOURCES \o/
 12 ./accessible/src/xul \o/ UNIFIED_SOURCES \o/
 12 ./accessible/src/windows/ia2 \o/ UNIFIED_SOURCES \o/
 12 ./accessible/src/generic \o/ UNIFIED_SOURCES \o/
 11 ./toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer \o/ UNIFIED_SOURCES \o/
 11 ./netwerk/streamconv/converters \o/ UNIFIED_SOURCES \o/
 11 ./dom/plugins/base/android
 11 ./content/media/omx
 10 ./toolkit/components/protobuf \o/ UNIFIED_SOURCES \o/
 10 ./content/media/webspeech/synth \o/ UNIFIED_SOURCES \o/
 10 ./accessible/src/mac \o/ UNIFIED_SOURCES \o/
 9 ./netwerk/dns \o/ UNIFIED_SOURCES \o/
 9 ./media/libsoundtouch/src \o/ UNIFIED_SOURCES \o/
 9 ./layout/xul/tree \o/ UNIFIED_SOURCES \o/
 9 ./layout/xul/grid \o/ UNIFIED_SOURCES \o/
 9 ./layout/inspector \o/ UNIFIED_SOURCES \o/
 9 ./image/decoders/icon \o/ UNIFIED_SOURCES \o/
 9 ./dom/telephony \o/ UNIFIED_SOURCES \o/
 9 ./dom/network/src \o/ UNIFIED_SOURCES \o/
 8 ./xpfe/appshell/src \o/ UNIFIED_SOURCES \o/
 8 ./toolkit/crashreporter/google-breakpad/src/client/mac/handler \o/ UNIFIED_SOURCES \o/
 8 ./python/mozbuild/mozbuild/test/frontend/data/variable-passthru
 8 ./python/mozbuild/mozbuild/test/backend/data/variable_passthru
 8 ./netwerk/wifi \o/ UNIFIED_SOURCES \o/
 8 ./js/src/gdb \o/ UNIFIED_SOURCES \o/
 8 ./extensions/spellcheck/src \o/ UNIFIED_SOURCES \o/
 8 ./editor/composer/src \o/ UNIFIED_SOURCES \o/
 8 ./caps/src \o/ UNIFIED_SOURCES \o/
 8 ./accessible/src/html \o/ UNIFIED_SOURCES \o/
 7 ./widget/gonk/nativewindow
 7 ./tools/jprof
 7 ./mozglue/build
 7 ./intl/lwbrk/src \o/ UNIFIED_SOURCES \o/
 7 ./content/media/directshow \o/ UNIFIED_SOURCES \o/
 7 ./content/html/document/src \o/ UNIFIED_SOURCES \o/
 6 ./xpcom/reflect/xptcall/src/md/win32
 6 ./uriloader/prefetch \o/ UNIFIED_SOURCES \o/
 6 ./tools/trace-malloc
 6 ./toolkit/system/gnome
 6 ./toolkit/crashreporter/client \o/ UNIFIED_SOURCES \o/
 6 ./toolkit/components/startup \o/ UNIFIED_SOURCES \o/
 6 ./toolkit/components/maintenanceservice
 6 ./security/manager/pki/src \o/ UNIFIED_SOURCES \o/
 6 ./security/manager/boot/src \o/ UNIFIED_SOURCES \o/
 6 ./other-licenses/snappy \o/ UNIFIED_SOURCES \o/
 6 ./netwerk/protocol/ftp \o/ UNIFIED_SOURCES \o/
 6 ./netwerk/ipc \o/ UNIFIED_SOURCES \o/
 6 ./mozglue/linker
 6 ./modules/libjar/zipwriter/src \o/ UNIFIED_SOURCES \o/
 6 ./js/xpconnect/wrappers \o/ UNIFIED_SOURCES \o/
 6 ./extensions/cookie \o/ UNIFIED_SOURCES \o/
 6 ./extensions/auth
 6 ./embedding/browser/webBrowser \o/ UNIFIED_SOURCES \o/
 6 ./editor/libeditor/text \o/ UNIFIED_SOURCES \o/
 6 ./dom/src/storage \o/ UNIFIED_SOURCES \o/
 6 ./dom/fmradio
 6 ./dom/bindings \o/ UNIFIED_SOURCES \o/
 6 ./content/xul/document/src \o/ UNIFIED_SOURCES \o/
 6 ./content/media/wmf \o/ UNIFIED_SOURCES \o/
 6 ./content/media/webrtc \o/ UNIFIED_SOURCES \o/
 6 ./accessible/src/xpcom \o/ UNIFIED_SOURCES \o/
 5 ./widget/gonk/libdisplay
 5 ./toolkit/crashreporter/google-breakpad/src/client/solaris/handler
 5 ./toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation \o/ UNIFIED_SOURCES \o/
 5 ./toolkit/components/downloads \o/ UNIFIED_SOURCES \o/
 5 ./other-licenses/skia-npapi \o/ UNIFIED_SOURCES \o/
 5 ./netwerk/protocol/wyciwyg
 5 ./netwerk/protocol/about \o/ UNIFIED_SOURCES \o/
 5 ./modules/libpref/src \o/ UNIFIED_SOURCES \o/
 5 ./memory/mozalloc \o/ UNIFIED_SOURCES \o/
 5 ./layout/printing \o/ UNIFIED_SOURCES \o/
 5 ./intl/unicharutil/util \o/ UNIFIED_SOURCES \o/
 5 ./intl/unicharutil/src \o/ UNIFIED_SOURCES \o/
 5 ./intl/locale/src/unix
 5 ./gfx/angle/src/libEGL
 5 ./embedding/components/commandhandler/src \o/ UNIFIED_SOURCES \o/
 5 ./editor/txmgr/src \o/ UNIFIED_SOURCES \o/
 5 ./content/xslt/src/base \o/ UNIFIED_SOURCES \o/
 5 ./content/media/omx/mediaresourcemanager
 5 ./content/media/ogg \o/ UNIFIED_SOURCES \o/
 5 ./content/media/mediasource \o/ UNIFIED_SOURCES \o/
 5 ./content/media/gstreamer
 4 ./xpcom/reflect/xptinfo/src \o/ UNIFIED_SOURCES \o/
 4 ./xpcom/components
 4 ./toolkit/components/ctypes
 4 ./startupcache
 4 ./netwerk/socket \o/ UNIFIED_SOURCES \o/
 4 ./netwerk/protocol/websocket
 4 ./netwerk/protocol/device \o/ UNIFIED_SOURCES \o/
 4 ./netwerk/cookie \o/ UNIFIED_SOURCES \o/
 4 ./mozglue/android
 4 ./layout/tools/layout-debug/src \o/ UNIFIED_SOURCES \o/
 4 ./intl/locale/src/windows
 4 ./intl/locale/src/os2
 4 ./gfx/cairo/cairo/src \o/ UNIFIED_SOURCES \o/
 4 ./extensions/pref/autoconfig/src
 4 ./embedding/components/printingui/src/win \o/ UNIFIED_SOURCES \o/
 4 ./dom/time \o/ UNIFIED_SOURCES \o/
 4 ./dom/quota \o/ UNIFIED_SOURCES \o/
 4 ./dom/media \o/ UNIFIED_SOURCES \o/
 4 ./dom/fmradio/ipc
 4 ./dom/encoding \o/ UNIFIED_SOURCES \o/
 4 ./dom/audiochannel \o/ UNIFIED_SOURCES \o/
 4 ./docshell/shistory/src \o/ UNIFIED_SOURCES \o/
 4 ./content/xml/document/src \o/ UNIFIED_SOURCES \o/
 4 ./content/xml/content/src \o/ UNIFIED_SOURCES \o/
 4 ./content/media/plugins \o/ UNIFIED_SOURCES \o/
 4 ./chrome/src \o/ UNIFIED_SOURCES \o/
 3 ./xpcom/sample \o/ UNIFIED_SOURCES \o/
 3 ./widget/shared \o/ UNIFIED_SOURCES \o/
 3 ./tools/trace-malloc/lib
 3 ./toolkit/system/dbus
 3 ./toolkit/crashreporter/google-breakpad/src/common/solaris \o/ UNIFIED_SOURCES \o/
 3 ./toolkit/crashreporter/google-breakpad/src/client/linux/handler \o/ UNIFIED_SOURCES \o/
 3 ./toolkit/components/remote
 3 ./toolkit/components/ctypes/tests \o/ UNIFIED_SOURCES \o/
 3 ./rdf/tests/dsds
 3 ./parser/xml/src
 3 ./netwerk/protocol/data \o/ UNIFIED_SOURCES \o/
 3 ./mobile/android/components/build
 3 ./layout/build \o/ UNIFIED_SOURCES \o/
 3 ./js/xpconnect/tests/components/native \o/ UNIFIED_SOURCES \o/
 3 ./js/xpconnect/loader
 3 ./js/src/shell \o/ UNIFIED_SOURCES \o/
 3 ./js/ipc \o/ UNIFIED_SOURCES \o/
 3 ./ipc/testshell
 3 ./ipc/dbus
 3 ./intl/locale/src/mac \o/ UNIFIED_SOURCES \o/
 3 ./intl/hyphenation/src \o/ UNIFIED_SOURCES \o/
 3 ./gfx/ipc
 3 ./embedding/tests/winEmbed
 3 ./embedding/components/windowwatcher/src \o/ UNIFIED_SOURCES \o/
 3 ./embedding/components/printingui/src/unixshared \o/ UNIFIED_SOURCES \o/
 3 ./embedding/components/printingui/src/os2
 3 ./embedding/components/printingui/src/mac \o/ UNIFIED_SOURCES \o/
 3 ./editor/txtsvc/src \o/ UNIFIED_SOURCES \o/
 3 ./dom/wifi
 3 ./dom/speakermanager
 3 ./dom/power \o/ UNIFIED_SOURCES \o/
 3 ./dom/icc/src
 3 ./dom/gamepad \o/ UNIFIED_SOURCES \o/
 3 ./dom/devicestorage \o/ UNIFIED_SOURCES \o/
 3 ./content/xul/content/src \o/ UNIFIED_SOURCES \o/
 3 ./content/media/webm \o/ UNIFIED_SOURCES \o/
 3 ./content/media/encoder \o/ UNIFIED_SOURCES \o/
 3 ./build/win32
 3 ./browser/components/shell/src
 3 ./accessible/src/windows/sdn \o/ UNIFIED_SOURCES \o/
 2 ./xpcom/reflect/xptcall/src/md/test
 2 ./xpcom/glue/tests/gtest \o/ UNIFIED_SOURCES \o/
 2 ./widget/qt/faststartupqt
 2 ./view/src
 2 ./uriloader/base \o/ UNIFIED_SOURCES \o/
 2 ./toolkit/xre/test/win
 2 ./toolkit/system/unixproxy
 2 ./toolkit/mozapps/update/tests
 2 ./toolkit/mozapps/plugins/tests
 2 ./toolkit/library
 2 ./toolkit/crashreporter/test \o/ UNIFIED_SOURCES \o/
 2 ./toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation \o/ UNIFIED_SOURCES \o/
 2 ./toolkit/components/mediasniffer \o/ UNIFIED_SOURCES \o/
 2 ./toolkit/components/autocomplete \o/ UNIFIED_SOURCES \o/
 2 ./toolkit/components/alerts \o/ UNIFIED_SOURCES \o/
 2 ./testing/tools/screenshot
 2 ./security/manager/ssl/tests/unit/tlsserver/lib \o/ UNIFIED_SOURCES \o/
 2 ./security/manager/ssl/tests/unit/tlsserver/cmd
 2 ./rdf/datasource/src \o/ UNIFIED_SOURCES \o/
 2 ./profile/dirserviceprovider/src \o/ UNIFIED_SOURCES \o/
 2 ./netwerk/system/qt
 2 ./netwerk/streamconv/test \o/ UNIFIED_SOURCES \o/
 2 ./netwerk/protocol/viewsource \o/ UNIFIED_SOURCES \o/
 2 ./netwerk/protocol/file \o/ UNIFIED_SOURCES \o/
 2 ./mozglue/tests
 2 ./layout/ipc \o/ UNIFIED_SOURCES \o/
 2 ./js/xpconnect/shell
 2 ./ipc/app
 2 ./intl/unicharutil/tests
 2 ./intl/strres/src \o/ UNIFIED_SOURCES \o/
 2 ./intl/chardet/src \o/ UNIFIED_SOURCES \o/
 2 ./extensions/universalchardet/src/xpcom \o/ UNIFIED_SOURCES \o/
 2 ./extensions/permissions \o/ UNIFIED_SOURCES \o/
 2 ./embedding/components/find/src \o/ UNIFIED_SOURCES \o/
 2 ./dom/system/unix
 2 ./dom/system/android
 2 ./dom/src/notification \o/ UNIFIED_SOURCES \o/
 2 ./dom/src/geolocation \o/ UNIFIED_SOURCES \o/
 2 ./dom/promise
 2 ./dom/plugins/ipc/interpose \o/ UNIFIED_SOURCES \o/
 2 ./dom/plugins/ipc/hangui \o/ UNIFIED_SOURCES \o/
 2 ./dom/indexedDB/ipc \o/ UNIFIED_SOURCES \o/
 2 ./content/xslt/src/xml \o/ UNIFIED_SOURCES \o/
 2 ./content/media/webspeech/synth/pico \o/ UNIFIED_SOURCES \o/
 2 ./content/media/wave \o/ UNIFIED_SOURCES \o/
 2 ./content/media/raw \o/ UNIFIED_SOURCES \o/
 2 ./content/media/apple \o/ UNIFIED_SOURCES \o/
 2 ./content/mathml/content/src \o/ UNIFIED_SOURCES \o/
 2 ./build/unix/elfhack
 2 ./browser/metro/shell/commandexecutehandler
 2 ./accessible/src/other
 1 ./xulrunner/tools/redit
 1 ./xulrunner/stub
 1 ./xulrunner/examples/simple/components/src
 1 ./xulrunner/app
 1 ./xpfe/components/windowds
 1 ./xpfe/components/directory
 1 ./xpfe/components/build
 1 ./xpcom/windbgdlg
 1 ./xpcom/tests/external
 1 ./xpcom/tests/component_no_aslr
 1 ./xpcom/tests/component
 1 ./xpcom/tests/bug656331_component
 1 ./xpcom/sample/program
 1 ./xpcom/reflect/xptinfo/tests
 1 ./xpcom/reflect/xptcall/tests
 1 ./xpcom/reflect/xptcall/src/md/os2
 1 ./xpcom/glue/standalone
 1 ./webapprt/win
 1 ./webapprt/mac
 1 ./webapprt/gtk2
 1 ./uriloader/exthandler/tests
 1 ./tools/jprof/stub
 1 ./toolkit/system/windowsproxy
 1 ./toolkit/system/osxproxy
 1 ./toolkit/system/androidproxy
 1 ./toolkit/profile \o/ UNIFIED_SOURCES \o/
 1 ./toolkit/identity
 1 ./toolkit/devtools/server
 1 ./toolkit/crashreporter/injector
 1 ./toolkit/components/typeaheadfind
 1 ./toolkit/components/telemetry
 1 ./toolkit/components/statusfilter
 1 ./toolkit/components/satchel
 1 ./toolkit/components/reflect
 1 ./toolkit/components/perf
 1 ./toolkit/components/parentalcontrols
 1 ./toolkit/components/jsdownloads/src
 1 ./toolkit/components/intl
 1 ./toolkit/components/find
 1 ./toolkit/components/finalizationwitness
 1 ./toolkit/components/filepicker
 1 ./toolkit/components/diskspacewatcher
 1 ./toolkit/components/commandlines
 1 ./toolkit/components/build
 1 ./testing/mochitest/ssltunnel
 1 ./storage/build
 1 ./services/crypto/component
 1 ./security/sandbox/win/src/sandboxbroker
 1 ./security/sandbox/linux
 1 ./security/manager/ssl/tests/gtest
 1 ./rdf/util/src
 1 ./rdf/tests/triplescat
 1 ./rdf/tests/rdfpoll
 1 ./rdf/tests/rdfcat
 1 ./rdf/build
 1 ./netwerk/system/win32
 1 ./netwerk/system/mac
 1 ./netwerk/system/android
 1 ./netwerk/streamconv/src
 1 ./netwerk/sctp/src
 1 ./netwerk/sctp/datachannel
 1 ./netwerk/protocol/res
 1 ./netwerk/protocol/app
 1 ./netwerk/mime
 1 ./netwerk/build
 1 ./memory/replace/dmd
 1 ./media/omx-plugin/lib/ics/libvideoeditorplayer
 1 ./media/omx-plugin/lib/ics/libutils
 1 ./media/omx-plugin/lib/ics/libstagefright
 1 ./media/omx-plugin/lib/hc/libstagefright
 1 ./media/omx-plugin/lib/gb/libutils
 1 ./media/omx-plugin/lib/gb/libstagefright_color_conversion
 1 ./media/omx-plugin/lib/gb/libstagefright
 1 ./media/omx-plugin/lib/gb235/libstagefright
 1 ./media/omx-plugin/lib/froyo/libstagefright
 1 ./media/omx-plugin/hc
 1 ./media/omx-plugin/gb235
 1 ./media/omx-plugin/gb
 1 ./media/omx-plugin/froyo
 1 ./media/libspeex_resampler/src
 1 ./media/libcubeb/src
 1 ./js/ductwork/debugger
 1 ./ipc/unixsocket
 1 ./ipc/ril
 1 ./ipc/nfc
 1 ./ipc/netd
 1 ./ipc/keystore
 1 ./ipc/ipdl/test/cxx/app
 1 ./intl/build
 1 ./image/encoders/png
 1 ./image/encoders/jpeg
 1 ./image/encoders/ico
 1 ./image/encoders/bmp
 1 ./image/decoders/icon/win
 1 ./image/decoders/icon/qt
 1 ./image/decoders/icon/os2
 1 ./image/decoders/icon/mac
 1 ./image/decoders/icon/gtk
 1 ./image/decoders/icon/android
 1 ./image/build
 1 ./extensions/gnomevfs
 1 ./extensions/gio
 1 ./embedding/components/webbrowserpersist/src
 1 ./embedding/components/build
 1 ./embedding/components/appstartup/src
 1 ./embedding/browser/build
 1 ./dom/voicemail
 1 ./dom/system/windows
 1 ./dom/system/mac
 1 ./dom/src/offline \o/ UNIFIED_SOURCES \o/
 1 ./dom/src/jsurl \o/ UNIFIED_SOURCES \o/
 1 ./dom/src/json \o/ UNIFIED_SOURCES \o/
 1 ./dom/src/events \o/ UNIFIED_SOURCES \o/
 1 ./dom/nfc
 1 ./dom/media/bridge
 1 ./dom/cellbroadcast/src
 1 ./dom/browser-element
 1 ./dom/battery
 1 ./dom/asmjscache
 1 ./dom/apps/src
 1 ./dom/alarm
 1 ./dom/activities/src
 1 ./docshell/build
 1 ./content/svg/document/src
 1 ./build/win32/vmwarerecordinghelper
 1 ./build/win32/crashinjectdll
 1 ./build/unix/stdc++compat
 1 ./browser/metro/shell/testing
 1 ./browser/metro/shell/linktool
 1 ./browser/components/migration/src
 1 ./browser/components/feeds/src
 1 ./browser/components/dirprovider
 1 ./browser/components/build
 1 ./browser/components/about
 1 ./browser/app
 1 ./b2g/gaia
 1 ./b2g/app
 1 ./accessible/src/windows/uia