summaryrefslogtreecommitdiffstats
path: root/toolkit/library/moz.build
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/library/moz.build')
-rw-r--r--toolkit/library/moz.build402
1 files changed, 402 insertions, 0 deletions
diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build
new file mode 100644
index 000000000..a9bdf123d
--- /dev/null
+++ b/toolkit/library/moz.build
@@ -0,0 +1,402 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+@template
+def Libxul_defines():
+ LIBRARY_DEFINES['MOZILLA_INTERNAL_API'] = True
+ LIBRARY_DEFINES['IMPL_LIBXUL'] = True
+ if not CONFIG['JS_SHARED_LIBRARY']:
+ LIBRARY_DEFINES['STATIC_EXPORTABLE_JS_API'] = True
+
+@template
+def Libxul(name):
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
+ # This is going to be a framework named "XUL", not an ordinary library named
+ # "libxul.dylib"
+ GeckoFramework(name, linkage=None)
+ SHARED_LIBRARY_NAME = 'XUL'
+ else:
+ GeckoSharedLibrary(name, linkage=None)
+ SHARED_LIBRARY_NAME = 'xul'
+
+ DELAYLOAD_DLLS += [
+ 'comdlg32.dll',
+ 'dbghelp.dll',
+ 'netapi32.dll',
+ 'PowrProf.dll',
+ 'psapi.dll',
+ 'rasapi32.dll',
+ 'rasdlg.dll',
+ 'secur32.dll',
+ 'wininet.dll',
+ 'winspool.drv'
+ ]
+
+ if CONFIG['ACCESSIBILITY']:
+ DELAYLOAD_DLLS += ['oleacc.dll']
+
+ if CONFIG['MOZ_WEBRTC']:
+ DELAYLOAD_DLLS += ['msdmo.dll']
+
+ if CONFIG['OS_ARCH'] == 'WINNT':
+ DELAYLOAD_DLLS += [
+ 'api-ms-win-core-winrt-l1-1-0.dll',
+ 'api-ms-win-core-winrt-string-l1-1-0.dll',
+ ]
+
+ if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
+ LOCAL_INCLUDES += [
+ '/widget/windows',
+ '/xpcom/base',
+ ]
+ # config/version.mk says $(srcdir)/$(RCINCLUDE), and this needs to
+ # be valid in both toolkit/library and toolkit/library/gtest.
+ # Eventually, the make backend would do its own path canonicalization
+ # and config/version.mk would lift the $(srcdir)
+ RCINCLUDE = '$(DEPTH)/toolkit/library/xulrunner.rc'
+
+ Libxul_defines()
+
+ if CONFIG['MOZ_NEEDS_LIBATOMIC']:
+ OS_LIBS += ['atomic']
+
+ # This option should go away in bug 1290972, but we need to wait until
+ # Rust 1.12 has been released.
+ if CONFIG['MOZ_RUST'] and CONFIG['OS_ARCH'] == 'Darwin':
+ LDFLAGS += ['-Wl,-no_compact_unwind']
+
+Libxul('xul')
+
+SDK_LIBRARY = True
+
+FORCE_STATIC_LIB = True
+
+STATIC_LIBRARY_NAME = 'xul_s'
+
+SOURCES += [
+ 'StaticXULComponentsStart.cpp',
+]
+
+# This, combined with the fact the file is first, makes the start pointer
+# it contains first in Windows PGO builds.
+SOURCES['StaticXULComponentsStart.cpp'].no_pgo = True
+
+# Don't let LTO reorder StaticXULComponentsStart.o.
+if '-flto' in CONFIG['OS_CXXFLAGS']:
+ SOURCES['StaticXULComponentsStart.cpp'].flags += ['-fno-lto']
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ SOURCES += [
+ 'nsDllMain.cpp',
+ ]
+
+LOCAL_INCLUDES += [
+ '/config',
+ # need widget/windows for resource.h (included from widget.rc)
+ '/widget/windows',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
+ LOCAL_INCLUDES += [
+ '/xpcom/base',
+ ]
+
+DIRS += ['gtest']
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ DIRS += ['dummydll']
+
+# js needs to come after xul for now, because it is an archive and its content
+# is discarded when it comes first.
+USE_LIBS += [
+ 'js',
+]
+
+USE_LIBS += [
+ 'gkmedias',
+ 'lgpllibs',
+ 'nspr',
+ 'nss',
+ 'psshparser',
+ 'sqlite',
+ 'zlib',
+]
+
+if CONFIG['USE_ICU']:
+ USE_LIBS += [
+ 'icu',
+ ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3':
+ USE_LIBS += [
+ 'mozgtk_stub',
+ ]
+
+if CONFIG['MOZ_JPROF']:
+ USE_LIBS += [
+ 'jprof',
+ ]
+
+if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT'] or \
+ CONFIG['MOZ_TREE_FREETYPE']:
+ USE_LIBS += [
+ 'freetype',
+ ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ CXXFLAGS += CONFIG['TK_CFLAGS']
+
+if CONFIG['MOZ_WEBRTC']:
+ if CONFIG['OS_TARGET'] == 'WINNT':
+ OS_LIBS += [
+ 'secur32',
+ 'iphlpapi',
+ 'strmiids',
+ 'dmoguids',
+ 'wmcodecdspuuid',
+ 'amstrmid',
+ 'msdmo',
+ 'wininet',
+ ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ OS_LIBS += [
+ '-framework OpenGL',
+ '-framework SystemConfiguration',
+ '-framework AVFoundation',
+ '-framework CoreMedia',
+ '-framework IOKit',
+ '-F%s' % CONFIG['MACOS_PRIVATE_FRAMEWORKS_DIR'],
+ '-framework CoreUI',
+ '-framework CoreSymbolication',
+ 'cups',
+ ]
+
+if CONFIG['MOZ_WMF']:
+ OS_LIBS += [
+ 'mfuuid',
+ 'wmcodecdspuuid',
+ 'strmiids',
+ ]
+
+if CONFIG['MOZ_DIRECTSHOW']:
+ OS_LIBS += [
+ 'dmoguids',
+ 'wmcodecdspuuid',
+ 'strmiids',
+ 'msdmo',
+ ]
+
+if CONFIG['OS_ARCH'] == 'FreeBSD':
+ OS_LIBS += [
+ 'util',
+ ]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ OS_LIBS += [
+ 'crypt32',
+ 'shell32',
+ 'ole32',
+ 'version',
+ 'winspool',
+ ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+ OS_LIBS += [
+ 'dbus',
+ ]
+
+if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TARGET'] != 'Android':
+ OS_LIBS += [
+ 'rt',
+ ]
+
+OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
+OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
+
+if CONFIG['SERVO_TARGET_DIR']:
+ if CONFIG['_MSC_VER']:
+ OS_LIBS += ['%s/geckoservo' % CONFIG['SERVO_TARGET_DIR']]
+ else:
+ OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo']
+
+if CONFIG['MOZ_SYSTEM_JPEG']:
+ OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
+
+if CONFIG['MOZ_SYSTEM_PNG']:
+ OS_LIBS += CONFIG['MOZ_PNG_LIBS']
+
+if CONFIG['MOZ_SYSTEM_HUNSPELL']:
+ OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
+
+if CONFIG['MOZ_SYSTEM_LIBEVENT']:
+ OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
+
+if CONFIG['MOZ_SYSTEM_LIBVPX']:
+ OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS']
+
+if not CONFIG['MOZ_TREE_PIXMAN']:
+ OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS']
+
+if CONFIG['MOZ_ALSA']:
+ OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
+
+if CONFIG['HAVE_CLOCK_MONOTONIC']:
+ OS_LIBS += CONFIG['REALTIME_LIBS']
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
+ OS_LIBS += [
+ 'GLESv2',
+ ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+ OS_LIBS += [
+ 'ui',
+ 'media',
+ 'hardware_legacy',
+ 'hardware',
+ 'utils',
+ 'cutils',
+ 'sysutils',
+ 'camera_client',
+ 'sensorservice',
+ 'stagefright',
+ 'stagefright_foundation',
+ 'stagefright_omx',
+ 'binder',
+ 'gui',
+ 'mtp',
+ ]
+
+ if int(CONFIG['ANDROID_VERSION']) >= 17:
+ OS_LIBS += [
+ 'sync',
+ ]
+
+ if CONFIG['ANDROID_VERSION'] >= '16':
+ OS_LIBS += [
+ 'mdnssd',
+ ]
+
+if 'rtsp' in CONFIG['NECKO_PROTOCOLS']:
+ OS_LIBS += [
+ 'stagefright_foundation',
+ ]
+
+OS_LIBS += CONFIG['ICONV_LIBS']
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
+ OS_LIBS += CONFIG['TK_LIBS']
+
+if CONFIG['OS_ARCH'] == 'OpenBSD':
+ OS_LIBS += [
+ 'sndio',
+ ]
+
+if CONFIG['MOZ_ENABLE_DBUS']:
+ OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS']
+
+if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk3':
+ OS_LIBS += [l for l in CONFIG['TK_LIBS']
+ if l not in ('-lgtk-3', '-lgdk-3')]
+ else:
+ OS_LIBS += CONFIG['TK_LIBS']
+ OS_LIBS += CONFIG['XLDFLAGS']
+ OS_LIBS += CONFIG['XLIBS']
+ OS_LIBS += CONFIG['XEXT_LIBS']
+ OS_LIBS += CONFIG['MOZ_PANGO_LIBS']
+ OS_LIBS += CONFIG['XT_LIBS']
+ OS_LIBS += [
+ 'gthread-2.0',
+ ]
+
+if CONFIG['MOZ_ENABLE_STARTUP_NOTIFICATION']:
+ OS_LIBS += CONFIG['MOZ_STARTUP_NOTIFICATION_LIBS']
+
+if CONFIG['MOZ_ENABLE_LIBPROXY']:
+ OS_LIBS += CONFIG['MOZ_LIBPROXY_LIBS']
+
+if CONFIG['OS_ARCH'] == 'SunOS':
+ OS_LIBS += [
+ 'elf',
+ ]
+ if CONFIG['GNU_CC']:
+ OS_LIBS += [
+ 'demangle',
+ ]
+
+if CONFIG['OS_ARCH'] == 'FreeBSD':
+ OS_LIBS += [
+ 'util',
+ ]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ OS_LIBS += [
+ 'shell32',
+ 'ole32',
+ 'version',
+ 'winspool',
+ 'comdlg32',
+ 'imm32',
+ 'msimg32',
+ 'netapi32',
+ 'shlwapi',
+ 'psapi',
+ 'ws2_32',
+ 'dbghelp',
+ 'rasapi32',
+ 'rasdlg',
+ 'iphlpapi',
+ 'uxtheme',
+ 'setupapi',
+ 'secur32',
+ 'sensorsapi',
+ 'portabledeviceguids',
+ 'windowscodecs',
+ 'wininet',
+ 'wbemuuid',
+ 'wintrust',
+ 'wtsapi32',
+ 'locationapi',
+ 'sapi',
+ 'dxguid',
+ ]
+ if CONFIG['ACCESSIBILITY']:
+ OS_LIBS += [
+ 'oleacc',
+ ]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+ OS_LIBS += [
+ 'usp10',
+ 'oleaut32',
+ ]
+
+if CONFIG['COMPILE_ENVIRONMENT']:
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'uikit'):
+ full_libname = SHARED_LIBRARY_NAME
+ else:
+ full_libname = '%s%s%s' % (
+ CONFIG['DLL_PREFIX'],
+ LIBRARY_NAME,
+ CONFIG['DLL_SUFFIX']
+ )
+ GENERATED_FILES += ['dependentlibs.list']
+ GENERATED_FILES['dependentlibs.list'].script = 'dependentlibs.py:gen_list'
+ GENERATED_FILES['dependentlibs.list'].inputs = [
+ '!%s' % full_libname,
+ ]
+ FINAL_TARGET_FILES += ['!dependentlibs.list']
+
+# This library needs to be last to make XPCOM module registration work.
+USE_LIBS += ['StaticXULComponentsEnd']
+
+# The above library needs to be last for C++ purposes. This library,
+# however, is entirely composed of Rust code, and needs to come after
+# all the C++ code so any possible C++ -> Rust calls can be resolved.
+if CONFIG['MOZ_RUST']:
+ USE_LIBS += ['gkrust']