#
# Initialization order of modules in Opera.
#
# The order they are listed decides in which order they will be created.
# They will be destroyed in the opposite order.
#
# Modules not listed but included in the build are initialized in an
# unspecified order after all listed modules.
#

# Initialise probetools module early to be able to add probe
# points for InitL() and Destroy() of all other modules, though
# stdlib has to be the very first module because probetools
# depends on it in its ::Destroy() for report generation.
# probetools also depend on pi for timing functions.
stdlib
pi
probetools
hardcore
idle
libgogi
util
libvega
encodings
dragdrop
display
# posix (on open_1) needs to be destroyed after url's open sockets and prefs's
# open files so that it can (when logging is active) properly log destruction
# without crashing; but posix (probably) needs to be after encodings.
posix
plugix
prefsfile
prefs
threadsafe
locale
# console should be constructed early, to let early startup errors be
# reported; it currently only depends on prefs being initialized, but keep
# it after locale if/when we get localized messages
console
# img need to be constructed before url since url uses img to check to content
# type of files in the cache
img
logdoc
layout
viewers
# zlib needs to be initialized before datastream
zlib
# datastream needs to be initialized before url
datastream
# formats needs to be initialized before url
formats
libopeay
libcrypto
# libssl and others depend on complex global data in libopeay
libssl
# cookies must be destroyed after url, because cookie_header_generation_buffer
# can be accessed via url api
cookies
# libssl is needed by url 
url
socks
# quix needs to be initialized before skin
quix
skin
# widgets needs to be initialized after skin
widgets
windowcommander
style
dochand
forms
olddebug
ogp
media
#device_api needs to be initialized before ecmascript and destroyed after it.
# reason : DOM APIs use device_api module and rely on it always being initialized
# so it is only safe to destroy it after all the ecmascript objects have been destroyed.
device_api
# security_manager must be destroyed after dom since some objects in dom
# unregister from security_manager on destruction.
security_manager
# ecmascript must be destroyed before jsplugins (and thus initialized after,)
# since the ecmascript GC deletes JS_Plugin_Contexts, which calls functions in
# dynamic libraries unloaded by JspluginsModule::Destroy.
jsplugins
ecmascript
dom
ecmascript_utils
java
ns4plugins
x11api
autoproxy
debug
doc
documentedit
expat
lea_malloc
libjpeg
# Sync must be before wand, as wand sets up a sync listener at startup.
sync
# wand must be after libopeay and libssl since it opens an encrypted file in its
# InitL (to be fixed). It also depends on prefs since the wand_manager listens
# to pref changes.
wand
libopenpgp
memtools
minpng
selftest
# spatial_navigation
xmlparser
xpath
xslt
xmlutils
svg
# search_engine must be destroyed after desktop_util, as the latter may cause it
# to be used while cleaning out the thumbnail cache
search_engine
# scope must be destroyed after desktop_util because of thumbnail destruction
scope
desktop_util
jaypeg
regexp
webfeeds
# gadgets needs to be initialized after security_manager
gadgets
motion
# the database has to be initialized before the applicationcache
# module because it registers new context ids and the database
# module needs to be aware of that
database
applicationcache
