From ce93f06cfdfcff32c82358f93e379d6cadc512e4 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 31 Mar 2014 13:21:38 +0200 Subject: [PATCH] Bug 988168 - Better integrate gtest libxul in the build system. r=mshal --HG-- rename : toolkit/library/Makefile.in => toolkit/library/libxul.mk rename : toolkit/library/moz.build => toolkit/library/libxul.mozbuild --- CLOBBER | 2 +- config/config.mk | 4 +- content/media/gtest/moz.build | 3 +- gfx/tests/gtest/moz.build | 3 +- security/manager/ssl/tests/gtest/moz.build | 4 +- testing/gtest/moz.build | 3 +- toolkit/library/Makefile.in | 302 +-------------------- toolkit/library/build/Makefile.in | 25 ++ toolkit/library/build/moz.build | 9 + toolkit/library/gtest/Makefile.in | 21 ++ toolkit/library/gtest/moz.build | 11 + toolkit/library/libxul.mk | 255 +++++++++++++++++ toolkit/library/libxul.mozbuild | 43 +++ toolkit/library/moz.build | 38 +-- xpcom/glue/tests/gtest/moz.build | 3 +- 15 files changed, 376 insertions(+), 350 deletions(-) create mode 100644 toolkit/library/build/Makefile.in create mode 100644 toolkit/library/build/moz.build create mode 100644 toolkit/library/gtest/Makefile.in create mode 100644 toolkit/library/gtest/moz.build create mode 100644 toolkit/library/libxul.mk create mode 100644 toolkit/library/libxul.mozbuild diff --git a/CLOBBER b/CLOBBER index 45331ae0d3b..648ecf9ec67 100644 --- a/CLOBBER +++ b/CLOBBER @@ -22,4 +22,4 @@ # changes to stick? As of bug 928195, this shouldn't be necessary! Please # don't change CLOBBER for WebIDL changes any more. -Bug 989137 - /experiments needed clobber to build on OSX +Bug 988168 requires a clobber because of the location change for the linked libxul. diff --git a/config/config.mk b/config/config.mk index 79b8855d9f2..d80873793e7 100644 --- a/config/config.mk +++ b/config/config.mk @@ -340,7 +340,7 @@ _ENABLE_PIC=1 # Determine if module being compiled is destined # to be merged into libxul -ifneq (,$(filter xul,$(FINAL_LIBRARY) $(LIBRARY_NAME))) +ifneq (,$(filter xul xul-%,$(FINAL_LIBRARY) $(LIBRARY_NAME))) ifdef LIBXUL_LIBRARY $(error LIBRARY_NAME or FINAL_LIBRARY is "xul", LIBXUL_LIBRARY is implied) endif @@ -351,7 +351,7 @@ ifdef LIBXUL_LIBRARY ifdef IS_COMPONENT $(error IS_COMPONENT is set, but is not compatible with LIBXUL_LIBRARY) endif -ifneq (xul,$(LIBRARY_NAME)) +ifeq (,$(filter xul xul-%,$(LIBRARY_NAME))) FORCE_STATIC_LIB=1 endif endif diff --git a/content/media/gtest/moz.build b/content/media/gtest/moz.build index a5d80ff5c8c..61cd07a6b8a 100644 --- a/content/media/gtest/moz.build +++ b/content/media/gtest/moz.build @@ -11,8 +11,6 @@ UNIFIED_SOURCES += [ 'TestTrackEncoder.cpp', ] -LIBXUL_LIBRARY = True - EXPORT_LIBRARY = True include('/ipc/chromium/chromium-config.mozbuild') @@ -21,3 +19,4 @@ LOCAL_INCLUDES += [ '/content/media/encoder', ] +FINAL_LIBRARY = 'xul-gtest' diff --git a/gfx/tests/gtest/moz.build b/gfx/tests/gtest/moz.build index 35a67fcf6a1..626862c5205 100644 --- a/gfx/tests/gtest/moz.build +++ b/gfx/tests/gtest/moz.build @@ -39,8 +39,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'windows': 'TestRect.cpp', ] -LIBXUL_LIBRARY = True - EXPORT_LIBRARY = True include('/ipc/chromium/chromium-config.mozbuild') @@ -51,3 +49,4 @@ LOCAL_INCLUDES += [ '/gfx/layers', ] +FINAL_LIBRARY = 'xul-gtest' diff --git a/security/manager/ssl/tests/gtest/moz.build b/security/manager/ssl/tests/gtest/moz.build index 68350145578..f6c597111b4 100644 --- a/security/manager/ssl/tests/gtest/moz.build +++ b/security/manager/ssl/tests/gtest/moz.build @@ -6,8 +6,6 @@ LIBRARY_NAME = 'ssltest' -LIBXUL_LIBRARY = True - SOURCES += [ 'OCSPCacheTest.cpp', 'TLSIntoleranceTest.cpp', @@ -20,3 +18,5 @@ LOCAL_INCLUDES += [ ] include('/ipc/chromium/chromium-config.mozbuild') + +FINAL_LIBRARY = 'xul-gtest' diff --git a/testing/gtest/moz.build b/testing/gtest/moz.build index de5bbc75782..35d94f61ce7 100644 --- a/testing/gtest/moz.build +++ b/testing/gtest/moz.build @@ -63,8 +63,6 @@ SOURCES += [ 'mozilla/SanityTest.cpp', ] -LIBXUL_LIBRARY = True - EXPORT_LIBRARY = True LOCAL_INCLUDES += [ @@ -74,3 +72,4 @@ LOCAL_INCLUDES += [ 'gtest/include', ] +FINAL_LIBRARY = 'xul-gtest' diff --git a/toolkit/library/Makefile.in b/toolkit/library/Makefile.in index 86d48d69be0..02f558f436d 100644 --- a/toolkit/library/Makefile.in +++ b/toolkit/library/Makefile.in @@ -2,16 +2,6 @@ # 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/. -ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) -# This is going to be a framework named "XUL", not an ordinary library named -# "libxul.dylib" -SHARED_LIBRARY_NAME=XUL -# Setting MAKE_FRAMEWORK makes DLL_PREFIX and DLL_SUFFIX be ignored when -# setting SHARED_LIBRARY; we need to leave DLL_PREFIX and DLL_SUFFIX -# as-is so that dependencies of the form -ltracemalloc still work. -MAKE_FRAMEWORK=1 -endif - ifdef MOZ_CONTENT_SANDBOX ifeq ($(OS_ARCH),WINNT) SHARED_LIBRARY_LIBS += ../../security/sandbox/win/src/sandboxbroker/$(LIB_PREFIX)sandboxbroker.$(LIB_SUFFIX) @@ -24,304 +14,16 @@ SHARED_LIBRARY_LIBS += \ $(foreach component,$(COMPONENT_LIBS),$(DEPTH)/staticlib/$(LIB_PREFIX)$(component).$(LIB_SUFFIX)) \ $(NULL) -# dependent libraries -ifdef MOZ_B2G_BT_BLUEZ #{ -ifeq (gonk,$(MOZ_WIDGET_TOOLKIT)) -OS_LIBS += -ldbus -endif -endif #} - -ifdef MOZ_B2G_CAMERA #{ -OS_LIBS += -lstagefright -lstagefright_omx -endif #} - -ifeq (Linux,$(OS_ARCH)) -ifneq (Android,$(OS_TARGET)) -OS_LIBS += -lrt -EXTRA_DSO_LDOPTS += -Wl,-version-script,symverscript - -symverscript: symverscript.in - $(call py_action,preprocessor, \ - -DVERSION='$(LIBRARY_NAME)$(MOZILLA_SYMBOLVERSION)' $< -o $@) - -EXTRA_DEPS += symverscript -endif -endif - ifdef MOZ_APP_COMPONENT_LIBS COMPONENT_LIBS += $(MOZ_APP_COMPONENT_LIBS) endif -ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) -OS_LIBS += -lcups -endif - -EXTRA_DSO_LDOPTS += \ - $(LIBS_DIR) \ - $(MOZ_JS_LIBS) \ - $(NSS_LIBS) \ - $(MOZ_CAIRO_OSLIBS) \ - $(MOZ_APP_EXTRA_LIBS) \ - $(SQLITE_LIBS) \ - $(NULL) - -ifdef ENABLE_INTL_API -ifdef JS_SHARED_LIBRARY -EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS) -endif -endif - -ifdef MOZ_NATIVE_JPEG -EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) -endif - -ifdef MOZ_NATIVE_PNG -EXTRA_DSO_LDOPTS += $(MOZ_PNG_LIBS) -endif - -ifndef ZLIB_IN_MOZGLUE -EXTRA_DSO_LDOPTS += $(MOZ_ZLIB_LIBS) -endif - -ifdef MOZ_NATIVE_HUNSPELL -EXTRA_DSO_LDOPTS += $(MOZ_HUNSPELL_LIBS) -endif - -ifdef MOZ_NATIVE_LIBEVENT -EXTRA_DSO_LDOPTS += $(MOZ_LIBEVENT_LIBS) -endif - -ifdef MOZ_NATIVE_LIBVPX -EXTRA_DSO_LDOPTS += $(MOZ_LIBVPX_LIBS) -endif - -ifndef MOZ_TREE_PIXMAN -EXTRA_DSO_LDOPTS += $(MOZ_PIXMAN_LIBS) -endif - -ifdef MOZ_DMD -EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,dmd,$(DIST)/lib) -endif - -EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib) - -ifdef MOZ_WEBRTC -ifeq (WINNT,$(OS_TARGET)) -ifndef MOZ_HAS_WINSDK_WITH_D3D -EXTRA_DSO_LDOPTS += \ - -LIBPATH:'$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_DIRECTX_SDK_CPU_SUFFIX)' \ - $(NULL) -endif -OS_LIBS += $(call EXPAND_LIBNAME,secur32 crypt32 iphlpapi strmiids dmoguids wmcodecdspuuid amstrmid msdmo wininet) -endif -endif - - -ifdef MOZ_ALSA -EXTRA_DSO_LDOPTS += $(MOZ_ALSA_LIBS) -endif - -ifdef HAVE_CLOCK_MONOTONIC -EXTRA_DSO_LDOPTS += $(REALTIME_LIBS) -endif - -ifeq (android,$(MOZ_WIDGET_TOOLKIT)) -OS_LIBS += -lGLESv2 -endif - -ifeq (gonk,$(MOZ_WIDGET_TOOLKIT)) -OS_LIBS += \ - -lui \ - -lmedia \ - -lhardware_legacy \ - -lhardware \ - -lutils \ - -lcutils \ - -lsysutils \ - -lcamera_client \ - -lsensorservice \ - -lstagefright \ - -lstagefright_foundation \ - -lstagefright_omx \ - -lbinder \ - -lgui \ - $(NULL) -endif - -ifneq (,$(filter rtsp,$(NECKO_PROTOCOLS))) -OS_LIBS += -lstagefright_foundation -endif - -ifdef MOZ_WMF -OS_LIBS += $(call EXPAND_LIBNAME,mfuuid wmcodecdspuuid strmiids) -endif - -ifdef MOZ_DIRECTSHOW -OS_LIBS += $(call EXPAND_LIBNAME,dmoguids wmcodecdspuuid strmiids msdmo) -endif - -ifneq (,$(filter WINNT,$(OS_ARCH))) -SDK_LIBRARY = $(IMPORT_LIBRARY) -else -SDK_LIBRARY = $(SHARED_LIBRARY) -endif - -EXTRA_DSO_LDOPTS += $(LIBS_DIR) - -EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(MOZALLOC_LIB) - ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) CXXFLAGS += $(TK_CFLAGS) -OS_LIBS += \ - $(TK_LIBS) \ - $(NULL) endif -ifeq (OpenBSD,$(OS_ARCH)) -EXTRA_DSO_LDOPTS += -lsndio -endif - -ifdef MOZ_ENABLE_DBUS -EXTRA_DSO_LDOPTS += $(MOZ_DBUS_GLIB_LIBS) -endif - -ifdef MOZ_WIDGET_GTK -EXTRA_DSO_LDOPTS += $(TK_LIBS) -EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XEXT_LIBS) $(XCOMPOSITE_LIBS) $(MOZ_PANGO_LIBS) $(XT_LIBS) -lgthread-2.0 -EXTRA_DSO_LDOPTS += $(FT2_LIBS) -endif - -ifeq (qt,$(MOZ_WIDGET_TOOLKIT)) -EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XT_LIBS) $(MOZ_QT_LIBS) -EXTRA_DSO_LDOPTS += $(FT2_LIBS) $(MOZ_PANGO_LIBS) -endif - -ifdef MOZ_TREE_FREETYPE -EXTRA_DSO_LDOPTS += $(FT2_LIBS) -endif - -ifdef MOZ_ENABLE_STARTUP_NOTIFICATION -EXTRA_DSO_LDOPTS += $(MOZ_STARTUP_NOTIFICATION_LIBS) -endif - -ifdef MOZ_ENABLE_LIBPROXY -EXTRA_DSO_LDOPTS += $(MOZ_LIBPROXY_LIBS) -endif - -ifeq ($(OS_ARCH),SunOS) -ifdef GNU_CC -EXTRA_DSO_LDOPTS += -lelf -else -EXTRA_DSO_LDOPTS += -lelf -ldemangle -endif -endif - -ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD,$(OS_ARCH))) -OS_LIBS += $(call EXPAND_LIBNAME,kvm) -endif - -ifeq ($(OS_ARCH),FreeBSD) -OS_LIBS += $(call EXPAND_LIBNAME,util) -endif - -ifeq ($(OS_ARCH),WINNT) -OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet wbemuuid wintrust) -ifdef ACCESSIBILITY -OS_LIBS += $(call EXPAND_LIBNAME,oleacc) -endif -ifdef MOZ_METRO -OS_LIBS += $(call EXPAND_LIBNAME,uiautomationcore runtimeobject) -endif -ifdef MOZ_GAMEPAD -ifdef MOZ_HAS_WINSDK_WITH_D3D -OS_LIBS += $(call EXPAND_LIBNAME,dxguid dinput8) -else -OS_LIBS += $(call EXPAND_LIBNAME_PATH,dxguid dinput8, $(subst \,/,$(MOZ_DIRECTX_SDK_PATH))/Lib/$(MOZ_DIRECTX_SDK_CPU_SUFFIX)) -endif -endif -endif # WINNT - -ifdef MOZ_JPROF -EXTRA_DSO_LDOPTS += -ljprof -endif - -ifdef MOZ_ENABLE_QT -EXTRA_DSO_LDOPTS += $(MOZ_QT_LDFLAGS) $(XEXT_LIBS) -endif - -ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) -ifdef MOZ_GSTREAMER -EXTRA_DSO_LDOPTS += $(GSTREAMER_LIBS) -endif -endif - -# Generate GDB pretty printer-autoload files only on Linux. OSX's GDB is -# too old to support Python pretty-printers; if this changes, we could make -# this 'ifdef GNU_CC'. -ifeq (Linux,$(OS_ARCH)) -# Create a GDB Python auto-load file alongside the libxul shared library in -# the build directory. -PP_TARGETS += LIBXUL_AUTOLOAD -LIBXUL_AUTOLOAD = libxul.so-gdb.py.in -LIBXUL_AUTOLOAD_FLAGS := -Dtopsrcdir=$(abspath $(topsrcdir)) -endif - -ifdef MAKE_FRAMEWORK -EFFECTIVE_LIB_PREFIX= -EFFECTIVE_LIB_SUFFIX= -else -EFFECTIVE_LIB_PREFIX=$(DLL_PREFIX) -EFFECTIVE_LIB_SUFFIX=$(DLL_SUFFIX) -endif - -GTEST_LIB = $(EFFECTIVE_LIB_PREFIX)gtest/$(EFFECTIVE_LIB_PREFIX)$(SHARED_LIBRARY_NAME)$(EFFECTIVE_LIB_SUFFIX) -EXTRA_MDDEPEND_FILES = $(GTEST_LIB).pp - include $(topsrcdir)/config/rules.mk -OS_LIBS += $(LIBICONV) - -ifeq ($(MOZ_WIDGET_TOOLKIT),windows) -OS_LIBS += $(call EXPAND_LIBNAME,usp10 oleaut32) -endif - -ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_PROFILE_USE)) -# Wrap linker to measure peak virtual memory usage. -LD := $(PYTHON) $(topsrcdir)/build/link.py $(CURDIR)/linker-vsize $(LD) -endif - -ifndef LINK_GTEST -ifdef COMPILE_ENVIRONMENT -libs:: $(FINAL_TARGET)/dependentlibs.list -endif -endif - .PHONY: gtestxul - -$(FINAL_TARGET)/dependentlibs.list.gtest: $(FINAL_TARGET)/dependentlibs.list - sed -e 's|$(SHARED_LIBRARY)|gtest/$(SHARED_LIBRARY)|' $< > $@ - -# Remove this target when actually linking gtest to prevent redefining -# the implicit rules.mk target -ifndef LINK_GTEST - -gtestxul: $(GTEST_LIB) - -$(GTEST_LIB): $(FINAL_TARGET)/dependentlibs.list.gtest - $(MKDIR) -p $(EFFECTIVE_LIB_PREFIX)gtest - $(MAKE) libs SHARED_LIBRARY_NAME=gtest/$(EFFECTIVE_LIB_PREFIX)$(LIBRARY_NAME) FINAL_TARGET=$(FINAL_TARGET)/gtest SDK_LIBRARY= IMPORT_LIB_DEST=$(IMPORT_LIB_DEST)/gtest LINK_GTEST=true -endif - -ifdef LINK_GTEST - -COMPONENT_LIBS += \ - gtest \ - gfxtest \ - ssltest \ - xpcom_glue_gtest \ - media_gtest \ - $(NULL) -endif - -$(FINAL_TARGET)/dependentlibs.list: dependentlibs.py $(SHARED_LIBRARY) $(wildcard $(if $(wildcard $(FINAL_TARGET)/dependentlibs.list),$(addprefix $(FINAL_TARGET)/,$(shell cat $(FINAL_TARGET)/dependentlibs.list)))) - $(PYTHON) $< $(SHARED_LIBRARY) -L $(FINAL_TARGET) $(if $(TOOLCHAIN_PREFIX),$(addprefix -p ,$(TOOLCHAIN_PREFIX))) > $@ +gtestxul: + $(MAKE) -C gtest libs LINK_GTEST=1 diff --git a/toolkit/library/build/Makefile.in b/toolkit/library/build/Makefile.in new file mode 100644 index 00000000000..9f811e84eb8 --- /dev/null +++ b/toolkit/library/build/Makefile.in @@ -0,0 +1,25 @@ +# 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/. + +include $(topsrcdir)/toolkit/library/libxul.mk + +ifeq (WINNT_1,$(OS_TARGET)_$(MOZ_PROFILE_USE)) +# Wrap linker to measure peak virtual memory usage. +LD := $(PYTHON) $(topsrcdir)/build/link.py $(DEPTH)/toolkit/library/linker-vsize $(LD) +endif + +ifneq (,$(filter WINNT,$(OS_ARCH))) +SDK_LIBRARY = $(IMPORT_LIBRARY) +else +SDK_LIBRARY = $(SHARED_LIBRARY) +endif + +include $(topsrcdir)/config/rules.mk + +ifdef COMPILE_ENVIRONMENT +libs:: $(FINAL_TARGET)/dependentlibs.list +endif + +$(FINAL_TARGET)/dependentlibs.list: $(topsrcdir)/toolkit/library/dependentlibs.py $(SHARED_LIBRARY) $(wildcard $(if $(wildcard $(FINAL_TARGET)/dependentlibs.list),$(addprefix $(FINAL_TARGET)/,$(shell cat $(FINAL_TARGET)/dependentlibs.list)))) + $(PYTHON) $< $(SHARED_LIBRARY) -L $(FINAL_TARGET) $(if $(TOOLCHAIN_PREFIX),$(addprefix -p ,$(TOOLCHAIN_PREFIX))) > $@ diff --git a/toolkit/library/build/moz.build b/toolkit/library/build/moz.build new file mode 100644 index 00000000000..dcee217142b --- /dev/null +++ b/toolkit/library/build/moz.build @@ -0,0 +1,9 @@ +# -*- Mode: python; c-basic-offset: 4; 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/. + +LIBRARY_NAME = 'xul-shared' + +include('../libxul.mozbuild') diff --git a/toolkit/library/gtest/Makefile.in b/toolkit/library/gtest/Makefile.in new file mode 100644 index 00000000000..bbb9b8cd8a7 --- /dev/null +++ b/toolkit/library/gtest/Makefile.in @@ -0,0 +1,21 @@ +# 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/. + +ifndef LINK_GTEST +# Force to not include backend.mk unless LINK_GTEST is defined. +# Not including backend.mk makes traversing this directory do nothing. +STANDALONE_MAKEFILE = 1 + +else + +include $(topsrcdir)/toolkit/library/libxul.mk + +ifdef COMPILE_ENVIRONMENT +libs:: $(DIST)/bin/dependentlibs.list.gtest +endif + +$(DIST)/bin/dependentlibs.list.gtest: $(DIST)/bin/dependentlibs.list + sed -e 's|$(SHARED_LIBRARY)|gtest/$(SHARED_LIBRARY)|' $< > $@ + +endif diff --git a/toolkit/library/gtest/moz.build b/toolkit/library/gtest/moz.build new file mode 100644 index 00000000000..3da01008242 --- /dev/null +++ b/toolkit/library/gtest/moz.build @@ -0,0 +1,11 @@ +# -*- Mode: python; c-basic-offset: 4; 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/. + +LIBRARY_NAME = 'xul-gtest' + +FINAL_TARGET = 'dist/bin/gtest' + +include('../libxul.mozbuild') diff --git a/toolkit/library/libxul.mk b/toolkit/library/libxul.mk new file mode 100644 index 00000000000..5d7afb2e6f5 --- /dev/null +++ b/toolkit/library/libxul.mk @@ -0,0 +1,255 @@ +# 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/. + +ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) +# This is going to be a framework named "XUL", not an ordinary library named +# "libxul.dylib" +SHARED_LIBRARY_NAME=XUL +# Setting MAKE_FRAMEWORK makes DLL_PREFIX and DLL_SUFFIX be ignored when +# setting SHARED_LIBRARY; we need to leave DLL_PREFIX and DLL_SUFFIX +# as-is so that dependencies of the form -ltracemalloc still work. +MAKE_FRAMEWORK=1 +else +SHARED_LIBRARY_NAME=xul +endif + +SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,xul,$(DEPTH)/toolkit/library) + +EXTRA_DEPS += $(topsrcdir)/toolkit/library/libxul.mk + +# dependent libraries +ifdef MOZ_B2G_BT_BLUEZ #{ +ifeq (gonk,$(MOZ_WIDGET_TOOLKIT)) +OS_LIBS += -ldbus +endif +endif #} + +ifdef MOZ_B2G_CAMERA #{ +OS_LIBS += -lstagefright -lstagefright_omx +endif #} + +ifeq (Linux,$(OS_ARCH)) +ifneq (Android,$(OS_TARGET)) +OS_LIBS += -lrt +EXTRA_DSO_LDOPTS += -Wl,-version-script,symverscript + +symverscript: $(topsrcdir)/toolkit/library/symverscript.in + $(call py_action,preprocessor, \ + -DVERSION='$(SHARED_LIBRARY_NAME)$(MOZILLA_SYMBOLVERSION)' $< -o $@) + +EXTRA_DEPS += symverscript +endif +endif + +ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) +OS_LIBS += -lcups +endif + +EXTRA_DSO_LDOPTS += \ + $(LIBS_DIR) \ + $(MOZ_JS_LIBS) \ + $(NSS_LIBS) \ + $(MOZ_CAIRO_OSLIBS) \ + $(MOZ_APP_EXTRA_LIBS) \ + $(SQLITE_LIBS) \ + $(NULL) + +ifdef ENABLE_INTL_API +ifdef JS_SHARED_LIBRARY +EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS) +endif +endif + +ifdef MOZ_NATIVE_JPEG +EXTRA_DSO_LDOPTS += $(MOZ_JPEG_LIBS) +endif + +ifdef MOZ_NATIVE_PNG +EXTRA_DSO_LDOPTS += $(MOZ_PNG_LIBS) +endif + +ifndef ZLIB_IN_MOZGLUE +EXTRA_DSO_LDOPTS += $(MOZ_ZLIB_LIBS) +endif + +ifdef MOZ_NATIVE_HUNSPELL +EXTRA_DSO_LDOPTS += $(MOZ_HUNSPELL_LIBS) +endif + +ifdef MOZ_NATIVE_LIBEVENT +EXTRA_DSO_LDOPTS += $(MOZ_LIBEVENT_LIBS) +endif + +ifdef MOZ_NATIVE_LIBVPX +EXTRA_DSO_LDOPTS += $(MOZ_LIBVPX_LIBS) +endif + +ifndef MOZ_TREE_PIXMAN +EXTRA_DSO_LDOPTS += $(MOZ_PIXMAN_LIBS) +endif + +ifdef MOZ_DMD +EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,dmd,$(DIST)/lib) +endif + +EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib) + +ifdef MOZ_WEBRTC +ifeq (WINNT,$(OS_TARGET)) +ifndef MOZ_HAS_WINSDK_WITH_D3D +EXTRA_DSO_LDOPTS += \ + -LIBPATH:'$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_DIRECTX_SDK_CPU_SUFFIX)' \ + $(NULL) +endif +OS_LIBS += $(call EXPAND_LIBNAME,secur32 crypt32 iphlpapi strmiids dmoguids wmcodecdspuuid amstrmid msdmo wininet) +endif +endif + +ifdef MOZ_ALSA +EXTRA_DSO_LDOPTS += $(MOZ_ALSA_LIBS) +endif + +ifdef HAVE_CLOCK_MONOTONIC +EXTRA_DSO_LDOPTS += $(REALTIME_LIBS) +endif + +ifeq (android,$(MOZ_WIDGET_TOOLKIT)) +OS_LIBS += -lGLESv2 +endif + +ifeq (gonk,$(MOZ_WIDGET_TOOLKIT)) +OS_LIBS += \ + -lui \ + -lmedia \ + -lhardware_legacy \ + -lhardware \ + -lutils \ + -lcutils \ + -lsysutils \ + -lcamera_client \ + -lsensorservice \ + -lstagefright \ + -lstagefright_foundation \ + -lstagefright_omx \ + -lbinder \ + -lgui \ + $(NULL) +endif + +ifneq (,$(filter rtsp,$(NECKO_PROTOCOLS))) +OS_LIBS += -lstagefright_foundation +endif + +ifdef MOZ_WMF +OS_LIBS += $(call EXPAND_LIBNAME,mfuuid wmcodecdspuuid strmiids) +endif + +ifdef MOZ_DIRECTSHOW +OS_LIBS += $(call EXPAND_LIBNAME,dmoguids wmcodecdspuuid strmiids msdmo) +endif + +EXTRA_DSO_LDOPTS += $(LIBS_DIR) + +EXTRA_DSO_LDOPTS += $(NSPR_LIBS) $(MOZALLOC_LIB) + +ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) +OS_LIBS += \ + $(TK_LIBS) \ + $(NULL) +endif + +ifeq (OpenBSD,$(OS_ARCH)) +EXTRA_DSO_LDOPTS += -lsndio +endif + +ifdef MOZ_ENABLE_DBUS +EXTRA_DSO_LDOPTS += $(MOZ_DBUS_GLIB_LIBS) +endif + +ifdef MOZ_WIDGET_GTK +EXTRA_DSO_LDOPTS += $(TK_LIBS) +EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XEXT_LIBS) $(XCOMPOSITE_LIBS) $(MOZ_PANGO_LIBS) $(XT_LIBS) -lgthread-2.0 +EXTRA_DSO_LDOPTS += $(FT2_LIBS) +endif + +ifeq (qt,$(MOZ_WIDGET_TOOLKIT)) +EXTRA_DSO_LDOPTS += $(XLDFLAGS) $(XLIBS) $(XT_LIBS) $(MOZ_QT_LIBS) +EXTRA_DSO_LDOPTS += $(FT2_LIBS) $(MOZ_PANGO_LIBS) +endif + +ifdef MOZ_TREE_FREETYPE +EXTRA_DSO_LDOPTS += $(FT2_LIBS) +endif + +ifdef MOZ_ENABLE_STARTUP_NOTIFICATION +EXTRA_DSO_LDOPTS += $(MOZ_STARTUP_NOTIFICATION_LIBS) +endif + +ifdef MOZ_ENABLE_LIBPROXY +EXTRA_DSO_LDOPTS += $(MOZ_LIBPROXY_LIBS) +endif + +ifeq ($(OS_ARCH),SunOS) +ifdef GNU_CC +EXTRA_DSO_LDOPTS += -lelf +else +EXTRA_DSO_LDOPTS += -lelf -ldemangle +endif +endif + +ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD,$(OS_ARCH))) +OS_LIBS += $(call EXPAND_LIBNAME,kvm) +endif + +ifeq ($(OS_ARCH),FreeBSD) +OS_LIBS += $(call EXPAND_LIBNAME,util) +endif + +ifeq ($(OS_ARCH),WINNT) +OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet wbemuuid wintrust) +ifdef ACCESSIBILITY +OS_LIBS += $(call EXPAND_LIBNAME,oleacc) +endif +ifdef MOZ_METRO +OS_LIBS += $(call EXPAND_LIBNAME,uiautomationcore runtimeobject) +endif +ifdef MOZ_GAMEPAD +ifdef MOZ_HAS_WINSDK_WITH_D3D +OS_LIBS += $(call EXPAND_LIBNAME,dxguid dinput8) +else +OS_LIBS += $(call EXPAND_LIBNAME_PATH,dxguid dinput8, $(subst \,/,$(MOZ_DIRECTX_SDK_PATH))/Lib/$(MOZ_DIRECTX_SDK_CPU_SUFFIX)) +endif +endif +endif # WINNT + +ifdef MOZ_JPROF +EXTRA_DSO_LDOPTS += -ljprof +endif + +ifdef MOZ_ENABLE_QT +EXTRA_DSO_LDOPTS += $(MOZ_QT_LDFLAGS) $(XEXT_LIBS) +endif + +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) +ifdef MOZ_GSTREAMER +EXTRA_DSO_LDOPTS += $(GSTREAMER_LIBS) +endif +endif + +# Generate GDB pretty printer-autoload files only on Linux. OSX's GDB is +# too old to support Python pretty-printers; if this changes, we could make +# this 'ifdef GNU_CC'. +ifeq (Linux,$(OS_ARCH)) +# Create a GDB Python auto-load file alongside the libxul shared library in +# the build directory. +PP_TARGETS += LIBXUL_AUTOLOAD +LIBXUL_AUTOLOAD = $(topsrcdir)/toolkit/library/libxul.so-gdb.py.in +LIBXUL_AUTOLOAD_FLAGS := -Dtopsrcdir=$(abspath $(topsrcdir)) +endif + +OS_LIBS += $(LIBICONV) + +ifeq ($(MOZ_WIDGET_TOOLKIT),windows) +OS_LIBS += $(call EXPAND_LIBNAME,usp10 oleaut32) +endif diff --git a/toolkit/library/libxul.mozbuild b/toolkit/library/libxul.mozbuild new file mode 100644 index 00000000000..ace36a278eb --- /dev/null +++ b/toolkit/library/libxul.mozbuild @@ -0,0 +1,43 @@ +# -*- Mode: python; c-basic-offset: 4; 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/. + +MSVC_ENABLE_PGO = True + +FORCE_SHARED_LIB = True + +DELAYLOAD_DLLS += [ + 'comdlg32.dll', + 'dbghelp.dll', + 'psapi.dll', + 'rasapi32.dll', + 'rasdlg.dll', + 'secur32.dll', + 'wininet.dll', + 'winspool.drv' +] + +if CONFIG['MOZ_METRO']: + DELAYLOAD_DLLS += [ + 'API-MS-WIN-CORE-WINRT-L' + CONFIG['CRTEXPDLLVERSION'] + '.DLL', + 'API-MS-WIN-CORE-WINRT-STRING-L' + CONFIG['CRTEXPDLLVERSION'] + '.DLL', + 'uiautomationcore.dll' + ] + +if CONFIG['ACCESSIBILITY']: + DELAYLOAD_DLLS += ['oleacc.dll'] + +if CONFIG['MOZ_WEBRTC']: + DELAYLOAD_DLLS += ['msdmo.dll'] + +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': + LDFLAGS += [ + '-framework OpenGL', + '-framework SystemConfiguration', + '-framework QTKit', + '-framework IOKit', + '-F%s' % CONFIG['MACOS_PRIVATE_FRAMEWORKS_DIR'], + '-framework CoreUI', + ] diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build index 94e4820a2a5..47ccdd17f35 100644 --- a/toolkit/library/moz.build +++ b/toolkit/library/moz.build @@ -63,40 +63,4 @@ if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']: FAIL_ON_WARNINGS = True -MSVC_ENABLE_PGO = True - -FORCE_SHARED_LIB = True - -DELAYLOAD_DLLS += [ - 'comdlg32.dll', - 'dbghelp.dll', - 'psapi.dll', - 'rasapi32.dll', - 'rasdlg.dll', - 'secur32.dll', - 'wininet.dll', - 'winspool.drv' -] - -if CONFIG['MOZ_METRO']: - DELAYLOAD_DLLS += [ - 'API-MS-WIN-CORE-WINRT-L' + CONFIG['CRTEXPDLLVERSION'] + '.DLL', - 'API-MS-WIN-CORE-WINRT-STRING-L' + CONFIG['CRTEXPDLLVERSION'] + '.DLL', - 'uiautomationcore.dll' - ] - -if CONFIG['ACCESSIBILITY']: - DELAYLOAD_DLLS += ['oleacc.dll'] - -if CONFIG['MOZ_WEBRTC']: - DELAYLOAD_DLLS += ['msdmo.dll'] - -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': - LDFLAGS += [ - '-framework OpenGL', - '-framework SystemConfiguration', - '-framework QTKit', - '-framework IOKit', - '-F%s' % CONFIG['MACOS_PRIVATE_FRAMEWORKS_DIR'], - '-framework CoreUI', - ] +DIRS += ['build', 'gtest'] diff --git a/xpcom/glue/tests/gtest/moz.build b/xpcom/glue/tests/gtest/moz.build index 72557e3cb1e..100aafba186 100644 --- a/xpcom/glue/tests/gtest/moz.build +++ b/xpcom/glue/tests/gtest/moz.build @@ -15,7 +15,6 @@ LOCAL_INCLUDES = [ LIBRARY_NAME = 'xpcom_glue_gtest' -LIBXUL_LIBRARY = True - EXPORT_LIBRARY = True +FINAL_LIBRARY = 'xul-gtest'