# -*- 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): 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['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 += [ '/system/interface/windows', '/xpcom/base', ] # config/version.mk says $(srcdir)/$(RCINCLUDE), and this needs to # be valid in both system/evil and system/evil/gtest. # Eventually, the make backend would do its own path canonicalization # and config/version.mk would lift the $(srcdir) RCINCLUDE = '$(DEPTH)/system/evil/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) '/system/interface/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 += [ 'gremedia', 'lgplmedia', 'nspr', 'nss', '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_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'] 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_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']: 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']