# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- # 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', 'netapi32.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'] 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'] # 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 '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['OS_ARCH'] == 'FreeBSD': OS_LIBS += [ 'util', ] if CONFIG['OS_ARCH'] == 'WINNT': OS_LIBS += [ 'crypt32', 'shell32', 'ole32', 'version', 'winspool', ] if CONFIG['OS_ARCH'] == 'Linux': 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_HUNSPELL']: OS_LIBS += CONFIG['MOZ_HUNSPELL_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 '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['MOZ_SNDIO']: 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', 'demangle', 'sendfile', ] 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', 'dwmapi', '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']