mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge b-s to m-c.
This commit is contained in:
commit
2fe1065da6
@ -65,15 +65,11 @@ tier_base_dirs = \
|
|||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
ifndef LIBXUL_SDK
|
ifndef LIBXUL_SDK
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
tier_base_dirs += memory/jemalloc
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(OS_TARGET),Android)
|
ifeq ($(OS_TARGET),Android)
|
||||||
tier_base_dirs += other-licenses/android
|
tier_base_dirs += other-licenses/android
|
||||||
endif
|
endif
|
||||||
|
|
||||||
tier_base_dirs += memory/mozalloc
|
tier_base_dirs += memory
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef COMPILE_ENVIRONMENT
|
ifdef COMPILE_ENVIRONMENT
|
||||||
|
@ -85,8 +85,6 @@ ifdef MOZ_APP_PROFILE
|
|||||||
DEFINES += -DMOZ_APP_PROFILE="$(MOZ_APP_PROFILE)"
|
DEFINES += -DMOZ_APP_PROFILE="$(MOZ_APP_PROFILE)"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBS += $(JEMALLOC_LIBS)
|
|
||||||
|
|
||||||
ifdef LIBXUL_SDK
|
ifdef LIBXUL_SDK
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
else
|
else
|
||||||
|
@ -45,9 +45,7 @@
|
|||||||
@BINPATH@/@DLL_PREFIX@xpcom@DLL_SUFFIX@
|
@BINPATH@/@DLL_PREFIX@xpcom@DLL_SUFFIX@
|
||||||
@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
|
@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
|
||||||
@BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@
|
@BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@
|
||||||
#ifdef MOZ_MEMORY_DARWIN
|
@BINPATH@/@DLL_PREFIX@mozutils@DLL_SUFFIX@
|
||||||
@BINPATH@/@DLL_PREFIX@jemalloc@DLL_SUFFIX@
|
|
||||||
#endif
|
|
||||||
#ifdef XP_MACOSX
|
#ifdef XP_MACOSX
|
||||||
@BINPATH@/XUL
|
@BINPATH@/XUL
|
||||||
#else
|
#else
|
||||||
@ -60,9 +58,6 @@
|
|||||||
@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
|
@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_WIN32
|
#ifdef XP_WIN32
|
||||||
#ifdef MOZ_MEMORY
|
|
||||||
@BINPATH@/jemalloc.dll
|
|
||||||
#endif
|
|
||||||
#if _MSC_VER == 1400
|
#if _MSC_VER == 1400
|
||||||
@BINPATH@/Microsoft.VC80.CRT.manifest
|
@BINPATH@/Microsoft.VC80.CRT.manifest
|
||||||
@BINPATH@/msvcm80.dll
|
@BINPATH@/msvcm80.dll
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
@DLL_PREFIX@xpcom_compat@DLL_SUFFIX@
|
@DLL_PREFIX@xpcom_compat@DLL_SUFFIX@
|
||||||
@DLL_PREFIX@xpistub@DLL_SUFFIX@
|
@DLL_PREFIX@xpistub@DLL_SUFFIX@
|
||||||
@DLL_PREFIX@zlib@DLL_SUFFIX@
|
@DLL_PREFIX@zlib@DLL_SUFFIX@
|
||||||
|
@DLL_PREFIX@jemalloc@DLL_SUFFIX@
|
||||||
#ifdef MOZ_STATIC_JS
|
#ifdef MOZ_STATIC_JS
|
||||||
@DLL_PREFIX@mozjs@DLL_SUFFIX@
|
@DLL_PREFIX@mozjs@DLL_SUFFIX@
|
||||||
#endif
|
#endif
|
||||||
@ -1258,7 +1259,6 @@ xpicleanup@BIN_SUFFIX@
|
|||||||
dictionaries/PL.dic
|
dictionaries/PL.dic
|
||||||
icons/mozicon16.xpm
|
icons/mozicon16.xpm
|
||||||
icons/mozicon50.xpm
|
icons/mozicon50.xpm
|
||||||
libjemalloc.so
|
|
||||||
plugins/libnullplugin.so
|
plugins/libnullplugin.so
|
||||||
readme.txt
|
readme.txt
|
||||||
#endif
|
#endif
|
||||||
|
@ -62,6 +62,8 @@ CPPSRCS = crashinject.cpp
|
|||||||
|
|
||||||
endif # ENABLE_TESTS
|
endif # ENABLE_TESTS
|
||||||
|
|
||||||
|
MOZ_UTILS_LDFLAGS =
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
ifdef WIN32_REDIST_DIR
|
ifdef WIN32_REDIST_DIR
|
||||||
|
@ -50,4 +50,6 @@ USE_STATIC_LIBS = 1
|
|||||||
|
|
||||||
CPPSRCS = crashinjectdll.cpp
|
CPPSRCS = crashinjectdll.cpp
|
||||||
|
|
||||||
|
MOZ_UTILS_LDFLAGS =
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
@ -51,4 +51,6 @@ USE_STATIC_LIBS = 1
|
|||||||
|
|
||||||
CPPSRCS = $(LIBRARY_NAME).cpp
|
CPPSRCS = $(LIBRARY_NAME).cpp
|
||||||
|
|
||||||
|
MOZ_UTILS_LDFLAGS =
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
@ -197,7 +197,6 @@ RM = rm -f
|
|||||||
MOZ_UI_LOCALE = @MOZ_UI_LOCALE@
|
MOZ_UI_LOCALE = @MOZ_UI_LOCALE@
|
||||||
|
|
||||||
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS = @MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS@
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS = @MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS@
|
||||||
MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS = @MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS@
|
|
||||||
MOZ_COMPONENT_NSPR_LIBS=@MOZ_COMPONENT_NSPR_LIBS@
|
MOZ_COMPONENT_NSPR_LIBS=@MOZ_COMPONENT_NSPR_LIBS@
|
||||||
|
|
||||||
MOZ_FIX_LINK_PATHS=@MOZ_FIX_LINK_PATHS@
|
MOZ_FIX_LINK_PATHS=@MOZ_FIX_LINK_PATHS@
|
||||||
@ -628,13 +627,12 @@ MOZ_TOOLS_DIR = @MOZ_TOOLS_DIR@
|
|||||||
MOZ_QUANTIFY = @MOZ_QUANTIFY@
|
MOZ_QUANTIFY = @MOZ_QUANTIFY@
|
||||||
MSMANIFEST_TOOL = @MSMANIFEST_TOOL@
|
MSMANIFEST_TOOL = @MSMANIFEST_TOOL@
|
||||||
WIN32_REDIST_DIR = @WIN32_REDIST_DIR@
|
WIN32_REDIST_DIR = @WIN32_REDIST_DIR@
|
||||||
MOZ_MEMORY_LDFLAGS = @MOZ_MEMORY_LDFLAGS@
|
MOZ_UTILS_LDFLAGS = @MOZ_UTILS_LDFLAGS@
|
||||||
|
MOZ_UTILS_PROGRAM_LDFLAGS = @MOZ_UTILS_PROGRAM_LDFLAGS@
|
||||||
WIN32_CRT_LIBS = @WIN32_CRT_LIBS@
|
WIN32_CRT_LIBS = @WIN32_CRT_LIBS@
|
||||||
|
|
||||||
# This is for custom CRT building
|
# This is used to pass jemalloc flags to NSS
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
DLLFLAGS = @DLLFLAGS@
|
DLLFLAGS = @DLLFLAGS@
|
||||||
endif
|
|
||||||
|
|
||||||
# Codesighs tools option, enables win32 mapfiles.
|
# Codesighs tools option, enables win32 mapfiles.
|
||||||
MOZ_MAPINFO = @MOZ_MAPINFO@
|
MOZ_MAPINFO = @MOZ_MAPINFO@
|
||||||
|
@ -149,17 +149,6 @@ FINAL_LINK_COMP_NAMES = $(DEPTH)/config/final-link-comp-names
|
|||||||
MOZ_UNICHARUTIL_LIBS = $(LIBXUL_DIST)/lib/$(LIB_PREFIX)unicharutil_s.$(LIB_SUFFIX)
|
MOZ_UNICHARUTIL_LIBS = $(LIBXUL_DIST)/lib/$(LIB_PREFIX)unicharutil_s.$(LIB_SUFFIX)
|
||||||
MOZ_WIDGET_SUPPORT_LIBS = $(DIST)/lib/$(LIB_PREFIX)widgetsupport_s.$(LIB_SUFFIX)
|
MOZ_WIDGET_SUPPORT_LIBS = $(DIST)/lib/$(LIB_PREFIX)widgetsupport_s.$(LIB_SUFFIX)
|
||||||
|
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
ifneq ($(OS_ARCH),WINNT)
|
|
||||||
JEMALLOC_LIBS = $(MKSHLIB_FORCE_ALL) $(call EXPAND_MOZLIBNAME,jemalloc) $(MKSHLIB_UNFORCE_ALL)
|
|
||||||
# If we are linking jemalloc into a program, we want the jemalloc symbols
|
|
||||||
# to be exported
|
|
||||||
ifneq (,$(SIMPLE_PROGRAMS)$(PROGRAM))
|
|
||||||
JEMALLOC_LIBS += $(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
CC := $(CC_WRAPPER) $(CC)
|
CC := $(CC_WRAPPER) $(CC)
|
||||||
CXX := $(CXX_WRAPPER) $(CXX)
|
CXX := $(CXX_WRAPPER) $(CXX)
|
||||||
MKDIR ?= mkdir
|
MKDIR ?= mkdir
|
||||||
@ -247,13 +236,17 @@ endif # MOZ_DEBUG
|
|||||||
# We don't build a static CRT when building a custom CRT,
|
# We don't build a static CRT when building a custom CRT,
|
||||||
# it appears to be broken. So don't link to jemalloc if
|
# it appears to be broken. So don't link to jemalloc if
|
||||||
# the Makefile wants static CRT linking.
|
# the Makefile wants static CRT linking.
|
||||||
ifeq ($(MOZ_MEMORY)_$(USE_STATIC_LIBS),1_)
|
ifeq ($(MOZ_MEMORY)_$(USE_STATIC_LIBS),1_1)
|
||||||
# Disable default CRT libs and add the right lib path for the linker
|
# Disable default CRT libs and add the right lib path for the linker
|
||||||
OS_LDFLAGS += $(MOZ_MEMORY_LDFLAGS)
|
MOZ_UTILS_LDFLAGS=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif # WINNT && !GNU_CC
|
endif # WINNT && !GNU_CC
|
||||||
|
|
||||||
|
ifndef MOZ_UTILS_PROGRAM_LDFLAGS
|
||||||
|
MOZ_UTILS_PROGRAM_LDFLAGS=$(MOZ_UTILS_LDFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build using PIC by default
|
# Build using PIC by default
|
||||||
#
|
#
|
||||||
|
@ -250,12 +250,12 @@ endif # ENABLE_TESTS
|
|||||||
|
|
||||||
ifndef LIBRARY
|
ifndef LIBRARY
|
||||||
ifdef STATIC_LIBRARY_NAME
|
ifdef STATIC_LIBRARY_NAME
|
||||||
_LIBRARY := $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
|
REAL_LIBRARY := $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
|
||||||
# Only build actual library if it is installed in DIST/lib or SDK
|
# Only build actual library if it is installed in DIST/lib or SDK
|
||||||
ifeq (,$(SDK_LIBRARY)$(DIST_INSTALL)$(NO_EXPAND_LIBS))
|
ifeq (,$(SDK_LIBRARY)$(DIST_INSTALL)$(NO_EXPAND_LIBS))
|
||||||
LIBRARY := $(_LIBRARY).$(LIBS_DESC_SUFFIX)
|
LIBRARY := $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
|
||||||
else
|
else
|
||||||
LIBRARY := $(_LIBRARY) $(_LIBRARY).$(LIBS_DESC_SUFFIX)
|
LIBRARY := $(REAL_LIBRARY) $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
|
||||||
endif
|
endif
|
||||||
endif # STATIC_LIBRARY_NAME
|
endif # STATIC_LIBRARY_NAME
|
||||||
endif # LIBRARY
|
endif # LIBRARY
|
||||||
@ -875,7 +875,7 @@ alltags:
|
|||||||
$(PROGRAM): $(PROGOBJS) $(LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
|
$(PROGRAM): $(PROGOBJS) $(LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
|
||||||
@$(RM) $@.manifest
|
@$(RM) $@.manifest
|
||||||
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
||||||
$(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
$(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
||||||
ifdef MSMANIFEST_TOOL
|
ifdef MSMANIFEST_TOOL
|
||||||
@if test -f $@.manifest; then \
|
@if test -f $@.manifest; then \
|
||||||
if test -f "$(srcdir)/$@.manifest"; then \
|
if test -f "$(srcdir)/$@.manifest"; then \
|
||||||
@ -897,10 +897,10 @@ ifdef MOZ_PROFILE_GENERATE
|
|||||||
endif
|
endif
|
||||||
else # !WINNT || GNU_CC
|
else # !WINNT || GNU_CC
|
||||||
ifeq ($(CPP_PROG_LINK),1)
|
ifeq ($(CPP_PROG_LINK),1)
|
||||||
$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
||||||
@$(call CHECK_STDCXX,$@)
|
@$(call CHECK_STDCXX,$@)
|
||||||
else # ! CPP_PROG_LINK
|
else # ! CPP_PROG_LINK
|
||||||
$(EXPAND_CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
$(EXPAND_CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
||||||
endif # CPP_PROG_LINK
|
endif # CPP_PROG_LINK
|
||||||
endif # WINNT && !GNU_CC
|
endif # WINNT && !GNU_CC
|
||||||
|
|
||||||
@ -946,7 +946,7 @@ endif
|
|||||||
#
|
#
|
||||||
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||||
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
||||||
$(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
$(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
||||||
ifdef MSMANIFEST_TOOL
|
ifdef MSMANIFEST_TOOL
|
||||||
@if test -f $@.manifest; then \
|
@if test -f $@.manifest; then \
|
||||||
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
|
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
|
||||||
@ -955,10 +955,10 @@ ifdef MSMANIFEST_TOOL
|
|||||||
endif # MSVC with manifest tool
|
endif # MSVC with manifest tool
|
||||||
else
|
else
|
||||||
ifeq ($(CPP_PROG_LINK),1)
|
ifeq ($(CPP_PROG_LINK),1)
|
||||||
$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
||||||
@$(call CHECK_STDCXX,$@)
|
@$(call CHECK_STDCXX,$@)
|
||||||
else
|
else
|
||||||
$(EXPAND_CC) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
$(EXPAND_CC) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
||||||
endif # CPP_PROG_LINK
|
endif # CPP_PROG_LINK
|
||||||
endif # WINNT && !GNU_CC
|
endif # WINNT && !GNU_CC
|
||||||
|
|
||||||
@ -1016,6 +1016,8 @@ $(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEP
|
|||||||
$(RANLIB) $@
|
$(RANLIB) $@
|
||||||
|
|
||||||
$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||||
|
# When we only build a library descriptor, blow out any existing library
|
||||||
|
$(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY) $(EXPORT_LIBRARY:%=%/$(REAL_LIBRARY)))
|
||||||
$(EXPAND_LIBS_GEN) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) > $@
|
$(EXPAND_LIBS_GEN) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) > $@
|
||||||
|
|
||||||
ifeq ($(OS_ARCH),WINNT)
|
ifeq ($(OS_ARCH),WINNT)
|
||||||
@ -1069,10 +1071,10 @@ ifdef DTRACE_LIB_DEPENDENT
|
|||||||
ifndef XP_MACOSX
|
ifndef XP_MACOSX
|
||||||
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
|
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
|
||||||
endif
|
endif
|
||||||
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(MOZ_UTILS_LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
||||||
@$(RM) $(DTRACE_PROBE_OBJ)
|
@$(RM) $(DTRACE_PROBE_OBJ)
|
||||||
else # ! DTRACE_LIB_DEPENDENT
|
else # ! DTRACE_LIB_DEPENDENT
|
||||||
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(MOZ_UTILS_LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
||||||
endif # DTRACE_LIB_DEPENDENT
|
endif # DTRACE_LIB_DEPENDENT
|
||||||
@$(call CHECK_STDCXX,$@)
|
@$(call CHECK_STDCXX,$@)
|
||||||
|
|
||||||
|
34
configure.in
34
configure.in
@ -2723,7 +2723,6 @@ dnl ========================================================
|
|||||||
case "$target" in
|
case "$target" in
|
||||||
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
||||||
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
|
MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS='-Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/components-version-script'
|
||||||
MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS='-rdynamic -Wl,--version-script -Wl,$(BUILD_TOOLS)/gnu-ld-scripts/jemalloc-standalone-linkage-version-script'
|
|
||||||
;;
|
;;
|
||||||
*-solaris*)
|
*-solaris*)
|
||||||
if test -z "$GNU_CC"; then
|
if test -z "$GNU_CC"; then
|
||||||
@ -7084,6 +7083,21 @@ if test "$NS_TRACE_MALLOC"; then
|
|||||||
MOZ_MEMORY=
|
MOZ_MEMORY=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "${OS_TARGET}" = "Android"; then
|
||||||
|
dnl On Android, we use WRAP_LDFLAGS to link everything to mozutils
|
||||||
|
:
|
||||||
|
elif test "${OS_TARGET}" = "WINNT" -o "${OS_TARGET}" = "Darwin" -o "${OS_TARGET}" = "OS2"; then
|
||||||
|
dnl On Windows, OSX and OS2, we want to link all our binaries against mozutils
|
||||||
|
MOZ_UTILS_LDFLAGS='$(call EXPAND_LIBNAME_PATH,mozutils,$(LIBXUL_DIST)/lib)'
|
||||||
|
else
|
||||||
|
dnl On other Unix systems, we only want to link executables against mozutils
|
||||||
|
MOZ_UTILS_PROGRAM_LDFLAGS='$(MKSHLIB_FORCE_ALL) $(call EXPAND_LIBNAME_PATH,mozutils,$(LIBXUL_DIST)/lib) $(MKSHLIB_UNFORCE_ALL)'
|
||||||
|
if test -n "$GNU_CC"; then
|
||||||
|
dnl And we need mozutils symbols to be exported.
|
||||||
|
MOZ_UTILS_PROGRAM_LDFLAGS="$MOZ_UTILS_PROGRAM_LDFLAGS -rdynamic"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "$MOZ_MEMORY"; then
|
if test -z "$MOZ_MEMORY"; then
|
||||||
case "${target}" in
|
case "${target}" in
|
||||||
*-mingw*)
|
*-mingw*)
|
||||||
@ -7133,6 +7147,7 @@ else
|
|||||||
AC_DEFINE(MOZ_MEMORY_LINUX)
|
AC_DEFINE(MOZ_MEMORY_LINUX)
|
||||||
AC_DEFINE(MOZ_MEMORY_ANDROID)
|
AC_DEFINE(MOZ_MEMORY_ANDROID)
|
||||||
_WRAP_MALLOC=1
|
_WRAP_MALLOC=1
|
||||||
|
MOZ_UTILS_LDFLAGS=
|
||||||
;;
|
;;
|
||||||
*-*linux*)
|
*-*linux*)
|
||||||
AC_DEFINE(MOZ_MEMORY_LINUX)
|
AC_DEFINE(MOZ_MEMORY_LINUX)
|
||||||
@ -7154,14 +7169,12 @@ else
|
|||||||
WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
|
WIN32_CRTDLL_FULLPATH=`lib -nologo -list $WIN32_CRT_LIBS | grep crtdll\\.obj`
|
||||||
lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
|
lib -NOLOGO -OUT:crtdll.obj $WIN32_CRT_LIBS -EXTRACT:$WIN32_CRTDLL_FULLPATH
|
||||||
if grep -q '__imp__\{0,1\}free' crtdll.obj; then
|
if grep -q '__imp__\{0,1\}free' crtdll.obj; then
|
||||||
MOZ_MEMORY_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
|
MOZ_UTILS_LDFLAGS='-LIBPATH:$(DIST)/lib -NODEFAULTLIB:msvcrt -NODEFAULTLIB:msvcrtd -NODEFAULTLIB:msvcprt -NODEFAULTLIB:msvcprtd -DEFAULTLIB:mozcrt'
|
||||||
else
|
|
||||||
MOZ_MEMORY_LDFLAGS='$(DIST)/../memory/jemalloc/jemalloc.lib'
|
|
||||||
fi
|
fi
|
||||||
rm crtdll.obj
|
rm crtdll.obj
|
||||||
|
|
||||||
dnl Also pass this to NSPR/NSS
|
dnl Also pass this to NSPR/NSS
|
||||||
DLLFLAGS="$DLLFLAGS $MOZ_MEMORY_LDFLAGS"
|
DLLFLAGS="$DLLFLAGS $MOZ_UTILS_LDFLAGS"
|
||||||
export DLLFLAGS
|
export DLLFLAGS
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -7177,7 +7190,8 @@ else
|
|||||||
AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
|
AC_DEFINE(HAVE_JEMALLOC_MEMALIGN)
|
||||||
fi # MOZ_MEMORY
|
fi # MOZ_MEMORY
|
||||||
AC_SUBST(MOZ_MEMORY)
|
AC_SUBST(MOZ_MEMORY)
|
||||||
AC_SUBST(MOZ_MEMORY_LDFLAGS)
|
AC_SUBST(MOZ_UTILS_LDFLAGS)
|
||||||
|
AC_SUBST(MOZ_UTILS_PROGRAM_LDFLAGS)
|
||||||
AC_SUBST(WIN32_CRT_LIBS)
|
AC_SUBST(WIN32_CRT_LIBS)
|
||||||
dnl Need to set this for make because NSS doesn't have configure
|
dnl Need to set this for make because NSS doesn't have configure
|
||||||
AC_SUBST(DLLFLAGS)
|
AC_SUBST(DLLFLAGS)
|
||||||
@ -8592,7 +8606,6 @@ AC_SUBST(USE_ELF_DYNSTR_GC)
|
|||||||
AC_SUBST(USE_ELF_HACK)
|
AC_SUBST(USE_ELF_HACK)
|
||||||
AC_SUBST(INCREMENTAL_LINKER)
|
AC_SUBST(INCREMENTAL_LINKER)
|
||||||
AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
|
AC_SUBST(MOZ_COMPONENTS_VERSION_SCRIPT_LDFLAGS)
|
||||||
AC_SUBST(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
|
|
||||||
AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
|
AC_SUBST(MOZ_COMPONENT_NSPR_LIBS)
|
||||||
|
|
||||||
AC_SUBST(MOZ_FIX_LINK_PATHS)
|
AC_SUBST(MOZ_FIX_LINK_PATHS)
|
||||||
@ -9166,8 +9179,11 @@ ac_configure_args="$ac_configure_args --prefix=$dist"
|
|||||||
ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
|
ac_configure_args="$ac_configure_args --with-sync-build-files=$_topsrcdir"
|
||||||
if test "$MOZ_MEMORY"; then
|
if test "$MOZ_MEMORY"; then
|
||||||
ac_configure_args="$ac_configure_args --enable-jemalloc"
|
ac_configure_args="$ac_configure_args --enable-jemalloc"
|
||||||
if test -n "$MOZ_MEMORY_LDFLAGS"; then
|
if test -n "$MOZ_UTILS_LDFLAGS"; then
|
||||||
export MOZ_MEMORY_LDFLAGS
|
export MOZ_UTILS_LDFLAGS
|
||||||
|
fi
|
||||||
|
if test -n "$MOZ_UTILS_PROGRAM_LDFLAGS"; then
|
||||||
|
export MOZ_UTILS_PROGRAM_LDFLAGS
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
export MOZ_APP_NAME
|
export MOZ_APP_NAME
|
||||||
|
@ -90,10 +90,6 @@ OS_LIBS += $(call EXPAND_LIBNAME,comctl32 comdlg32 uuid shell32 ole32 oleaut32 v
|
|||||||
OS_LIBS += $(call EXPAND_LIBNAME,usp10 msimg32)
|
OS_LIBS += $(call EXPAND_LIBNAME,usp10 msimg32)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (Android,$(OS_TARGET))
|
|
||||||
LIBS += $(JEMALLOC_LIBS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
ifeq ($(OS_ARCH),WINNT)
|
ifeq ($(OS_ARCH),WINNT)
|
||||||
|
@ -828,12 +828,6 @@ EXTRA_LIBS += -lposix4 -ldl -lnsl -lsocket
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
ifeq ($(OS_ARCH),Darwin)
|
|
||||||
LDFLAGS += -ljemalloc
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef SOLARIS_SUNPRO_CXX
|
ifdef SOLARIS_SUNPRO_CXX
|
||||||
ifeq ($(TARGET_CPU),sparc)
|
ifeq ($(TARGET_CPU),sparc)
|
||||||
# Sun Studio SPARC doesn't work well with gcc inline asm, use lock_SunOS_sparc*.il
|
# Sun Studio SPARC doesn't work well with gcc inline asm, use lock_SunOS_sparc*.il
|
||||||
|
@ -319,7 +319,8 @@ MOZ_BROWSE_INFO = @MOZ_BROWSE_INFO@
|
|||||||
MOZ_TOOLS_DIR = @MOZ_TOOLS_DIR@
|
MOZ_TOOLS_DIR = @MOZ_TOOLS_DIR@
|
||||||
MOZ_QUANTIFY = @MOZ_QUANTIFY@
|
MOZ_QUANTIFY = @MOZ_QUANTIFY@
|
||||||
MSMANIFEST_TOOL = @MSMANIFEST_TOOL@
|
MSMANIFEST_TOOL = @MSMANIFEST_TOOL@
|
||||||
MOZ_MEMORY_LDFLAGS = @MOZ_MEMORY_LDFLAGS@
|
MOZ_UTILS_LDFLAGS = @MOZ_UTILS_LDFLAGS@
|
||||||
|
MOZ_UTILS_PROGRAM_LDFLAGS = @MOZ_UTILS_PROGRAM_LDFLAGS@
|
||||||
|
|
||||||
# Codesighs tools option, enables win32 mapfiles.
|
# Codesighs tools option, enables win32 mapfiles.
|
||||||
MOZ_MAPINFO = @MOZ_MAPINFO@
|
MOZ_MAPINFO = @MOZ_MAPINFO@
|
||||||
|
@ -149,17 +149,6 @@ FINAL_LINK_COMP_NAMES = $(DEPTH)/config/final-link-comp-names
|
|||||||
MOZ_UNICHARUTIL_LIBS = $(LIBXUL_DIST)/lib/$(LIB_PREFIX)unicharutil_s.$(LIB_SUFFIX)
|
MOZ_UNICHARUTIL_LIBS = $(LIBXUL_DIST)/lib/$(LIB_PREFIX)unicharutil_s.$(LIB_SUFFIX)
|
||||||
MOZ_WIDGET_SUPPORT_LIBS = $(DIST)/lib/$(LIB_PREFIX)widgetsupport_s.$(LIB_SUFFIX)
|
MOZ_WIDGET_SUPPORT_LIBS = $(DIST)/lib/$(LIB_PREFIX)widgetsupport_s.$(LIB_SUFFIX)
|
||||||
|
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
ifneq ($(OS_ARCH),WINNT)
|
|
||||||
JEMALLOC_LIBS = $(MKSHLIB_FORCE_ALL) $(call EXPAND_MOZLIBNAME,jemalloc) $(MKSHLIB_UNFORCE_ALL)
|
|
||||||
# If we are linking jemalloc into a program, we want the jemalloc symbols
|
|
||||||
# to be exported
|
|
||||||
ifneq (,$(SIMPLE_PROGRAMS)$(PROGRAM))
|
|
||||||
JEMALLOC_LIBS += $(MOZ_JEMALLOC_STANDALONE_GLUE_LDOPTS)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
CC := $(CC_WRAPPER) $(CC)
|
CC := $(CC_WRAPPER) $(CC)
|
||||||
CXX := $(CXX_WRAPPER) $(CXX)
|
CXX := $(CXX_WRAPPER) $(CXX)
|
||||||
MKDIR ?= mkdir
|
MKDIR ?= mkdir
|
||||||
@ -247,13 +236,17 @@ endif # MOZ_DEBUG
|
|||||||
# We don't build a static CRT when building a custom CRT,
|
# We don't build a static CRT when building a custom CRT,
|
||||||
# it appears to be broken. So don't link to jemalloc if
|
# it appears to be broken. So don't link to jemalloc if
|
||||||
# the Makefile wants static CRT linking.
|
# the Makefile wants static CRT linking.
|
||||||
ifeq ($(MOZ_MEMORY)_$(USE_STATIC_LIBS),1_)
|
ifeq ($(MOZ_MEMORY)_$(USE_STATIC_LIBS),1_1)
|
||||||
# Disable default CRT libs and add the right lib path for the linker
|
# Disable default CRT libs and add the right lib path for the linker
|
||||||
OS_LDFLAGS += $(MOZ_MEMORY_LDFLAGS)
|
MOZ_UTILS_LDFLAGS=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif # WINNT && !GNU_CC
|
endif # WINNT && !GNU_CC
|
||||||
|
|
||||||
|
ifndef MOZ_UTILS_PROGRAM_LDFLAGS
|
||||||
|
MOZ_UTILS_PROGRAM_LDFLAGS=$(MOZ_UTILS_LDFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build using PIC by default
|
# Build using PIC by default
|
||||||
#
|
#
|
||||||
|
@ -250,12 +250,12 @@ endif # ENABLE_TESTS
|
|||||||
|
|
||||||
ifndef LIBRARY
|
ifndef LIBRARY
|
||||||
ifdef STATIC_LIBRARY_NAME
|
ifdef STATIC_LIBRARY_NAME
|
||||||
_LIBRARY := $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
|
REAL_LIBRARY := $(LIB_PREFIX)$(STATIC_LIBRARY_NAME).$(LIB_SUFFIX)
|
||||||
# Only build actual library if it is installed in DIST/lib or SDK
|
# Only build actual library if it is installed in DIST/lib or SDK
|
||||||
ifeq (,$(SDK_LIBRARY)$(DIST_INSTALL)$(NO_EXPAND_LIBS))
|
ifeq (,$(SDK_LIBRARY)$(DIST_INSTALL)$(NO_EXPAND_LIBS))
|
||||||
LIBRARY := $(_LIBRARY).$(LIBS_DESC_SUFFIX)
|
LIBRARY := $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
|
||||||
else
|
else
|
||||||
LIBRARY := $(_LIBRARY) $(_LIBRARY).$(LIBS_DESC_SUFFIX)
|
LIBRARY := $(REAL_LIBRARY) $(REAL_LIBRARY).$(LIBS_DESC_SUFFIX)
|
||||||
endif
|
endif
|
||||||
endif # STATIC_LIBRARY_NAME
|
endif # STATIC_LIBRARY_NAME
|
||||||
endif # LIBRARY
|
endif # LIBRARY
|
||||||
@ -875,7 +875,7 @@ alltags:
|
|||||||
$(PROGRAM): $(PROGOBJS) $(LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
|
$(PROGRAM): $(PROGOBJS) $(LIBS_DEPS) $(EXTRA_DEPS) $(EXE_DEF_FILE) $(RESFILE) $(GLOBAL_DEPS)
|
||||||
@$(RM) $@.manifest
|
@$(RM) $@.manifest
|
||||||
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
||||||
$(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
$(EXPAND_LD) -NOLOGO -OUT:$@ -PDB:$(LINK_PDBFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(PROGOBJS) $(RESFILE) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
||||||
ifdef MSMANIFEST_TOOL
|
ifdef MSMANIFEST_TOOL
|
||||||
@if test -f $@.manifest; then \
|
@if test -f $@.manifest; then \
|
||||||
if test -f "$(srcdir)/$@.manifest"; then \
|
if test -f "$(srcdir)/$@.manifest"; then \
|
||||||
@ -897,10 +897,10 @@ ifdef MOZ_PROFILE_GENERATE
|
|||||||
endif
|
endif
|
||||||
else # !WINNT || GNU_CC
|
else # !WINNT || GNU_CC
|
||||||
ifeq ($(CPP_PROG_LINK),1)
|
ifeq ($(CPP_PROG_LINK),1)
|
||||||
$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
$(EXPAND_CCC) -o $@ $(CXXFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
||||||
@$(call CHECK_STDCXX,$@)
|
@$(call CHECK_STDCXX,$@)
|
||||||
else # ! CPP_PROG_LINK
|
else # ! CPP_PROG_LINK
|
||||||
$(EXPAND_CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
$(EXPAND_CC) -o $@ $(CFLAGS) $(PROGOBJS) $(RESFILE) $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS) $(EXE_DEF_FILE)
|
||||||
endif # CPP_PROG_LINK
|
endif # CPP_PROG_LINK
|
||||||
endif # WINNT && !GNU_CC
|
endif # WINNT && !GNU_CC
|
||||||
|
|
||||||
@ -946,7 +946,7 @@ endif
|
|||||||
#
|
#
|
||||||
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
$(SIMPLE_PROGRAMS): %$(BIN_SUFFIX): %.$(OBJ_SUFFIX) $(LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||||
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
ifeq (_WINNT,$(GNU_CC)_$(OS_ARCH))
|
||||||
$(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
$(EXPAND_LD) -nologo -out:$@ -pdb:$(LINK_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(LIBS) $(EXTRA_LIBS) $(OS_LIBS)
|
||||||
ifdef MSMANIFEST_TOOL
|
ifdef MSMANIFEST_TOOL
|
||||||
@if test -f $@.manifest; then \
|
@if test -f $@.manifest; then \
|
||||||
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
|
mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
|
||||||
@ -955,10 +955,10 @@ ifdef MSMANIFEST_TOOL
|
|||||||
endif # MSVC with manifest tool
|
endif # MSVC with manifest tool
|
||||||
else
|
else
|
||||||
ifeq ($(CPP_PROG_LINK),1)
|
ifeq ($(CPP_PROG_LINK),1)
|
||||||
$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
$(EXPAND_CCC) $(CXXFLAGS) -o $@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
||||||
@$(call CHECK_STDCXX,$@)
|
@$(call CHECK_STDCXX,$@)
|
||||||
else
|
else
|
||||||
$(EXPAND_CC) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
$(EXPAND_CC) $(CFLAGS) $(OUTOPTION)$@ $< $(WIN32_EXE_LDFLAGS) $(LDFLAGS) $(MOZ_UTILS_PROGRAM_LDFLAGS) $(WRAP_LDFLAGS) $(LIBS_DIR) $(LIBS) $(OS_LIBS) $(EXTRA_LIBS) $(BIN_FLAGS)
|
||||||
endif # CPP_PROG_LINK
|
endif # CPP_PROG_LINK
|
||||||
endif # WINNT && !GNU_CC
|
endif # WINNT && !GNU_CC
|
||||||
|
|
||||||
@ -1016,6 +1016,8 @@ $(filter %.$(LIB_SUFFIX),$(LIBRARY)): $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEP
|
|||||||
$(RANLIB) $@
|
$(RANLIB) $@
|
||||||
|
|
||||||
$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
$(filter-out %.$(LIB_SUFFIX),$(LIBRARY)): $(filter %.$(LIB_SUFFIX),$(LIBRARY)) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS_DEPS) $(EXTRA_DEPS) $(GLOBAL_DEPS)
|
||||||
|
# When we only build a library descriptor, blow out any existing library
|
||||||
|
$(if $(filter %.$(LIB_SUFFIX),$(LIBRARY)),,$(RM) $(REAL_LIBRARY) $(EXPORT_LIBRARY:%=%/$(REAL_LIBRARY)))
|
||||||
$(EXPAND_LIBS_GEN) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) > $@
|
$(EXPAND_LIBS_GEN) $(OBJS) $(LOBJS) $(SHARED_LIBRARY_LIBS) > $@
|
||||||
|
|
||||||
ifeq ($(OS_ARCH),WINNT)
|
ifeq ($(OS_ARCH),WINNT)
|
||||||
@ -1069,10 +1071,10 @@ ifdef DTRACE_LIB_DEPENDENT
|
|||||||
ifndef XP_MACOSX
|
ifndef XP_MACOSX
|
||||||
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
|
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))
|
||||||
endif
|
endif
|
||||||
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(DTRACE_PROBE_OBJ) $(MOZILLA_PROBE_LIBS) $(RESFILE) $(LDFLAGS) $(MOZ_UTILS_LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
||||||
@$(RM) $(DTRACE_PROBE_OBJ)
|
@$(RM) $(DTRACE_PROBE_OBJ)
|
||||||
else # ! DTRACE_LIB_DEPENDENT
|
else # ! DTRACE_LIB_DEPENDENT
|
||||||
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
$(EXPAND_MKSHLIB) $(SHLIB_LDSTARTFILE) $(OBJS) $(LOBJS) $(SUB_SHLOBJS) $(RESFILE) $(LDFLAGS) $(MOZ_UTILS_LDFLAGS) $(WRAP_LDFLAGS) $(SHARED_LIBRARY_LIBS) $(EXTRA_DSO_LDOPTS) $(OS_LIBS) $(EXTRA_LIBS) $(DEF_FILE) $(SHLIB_LDENDFILE)
|
||||||
endif # DTRACE_LIB_DEPENDENT
|
endif # DTRACE_LIB_DEPENDENT
|
||||||
@$(call CHECK_STDCXX,$@)
|
@$(call CHECK_STDCXX,$@)
|
||||||
|
|
||||||
|
@ -4543,7 +4543,7 @@ if test "$MOZ_MEMORY"; then
|
|||||||
;;
|
;;
|
||||||
*-mingw*)
|
*-mingw*)
|
||||||
AC_DEFINE(MOZ_MEMORY_WINDOWS)
|
AC_DEFINE(MOZ_MEMORY_WINDOWS)
|
||||||
# the interesting bits will get passed down in MOZ_MEMORY_LDFLAGS
|
# the interesting bits will get passed down in MOZ_UTILS_LDFLAGS
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
|
AC_MSG_ERROR([--enable-jemalloc not supported on ${target}])
|
||||||
@ -4558,7 +4558,8 @@ if test "$MOZ_MEMORY"; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
AC_SUBST(MOZ_MEMORY)
|
AC_SUBST(MOZ_MEMORY)
|
||||||
AC_SUBST(MOZ_MEMORY_LDFLAGS)
|
AC_SUBST(MOZ_UTILS_LDFLAGS)
|
||||||
|
AC_SUBST(MOZ_UTILS_PROGRAM_LDFLAGS)
|
||||||
|
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
dnl = Use malloc wrapper lib
|
dnl = Use malloc wrapper lib
|
||||||
|
@ -47,6 +47,7 @@ ifdef MOZ_MEMORY
|
|||||||
DIRS += jemalloc
|
DIRS += jemalloc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
DIRS += mozutils
|
||||||
DIRS += mozalloc
|
DIRS += mozalloc
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
@ -52,18 +52,7 @@ VISIBILITY_FLAGS=
|
|||||||
CSRCS = jemalloc.c
|
CSRCS = jemalloc.c
|
||||||
EXPORTS = jemalloc.h jemalloc_types.h
|
EXPORTS = jemalloc.h jemalloc_types.h
|
||||||
LIBRARY_NAME = jemalloc
|
LIBRARY_NAME = jemalloc
|
||||||
|
FORCE_STATIC_LIB= 1
|
||||||
ifeq (WINNT,$(OS_TARGET))
|
|
||||||
FORCE_SHARED_LIB = 1
|
|
||||||
|
|
||||||
MOZ_MEMORY_LDFLAGS = # Don't link against ourselves
|
|
||||||
|
|
||||||
DEFFILE = $(srcdir)/jemalloc.def
|
|
||||||
|
|
||||||
LDFLAGS += -ENTRY:DllMain
|
|
||||||
|
|
||||||
NO_INSTALL_IMPORT_LIBRARY = 1
|
|
||||||
else # Not Windows
|
|
||||||
|
|
||||||
ifeq ($(OS_ARCH),SunOS)
|
ifeq ($(OS_ARCH),SunOS)
|
||||||
ifndef GNU_CC
|
ifndef GNU_CC
|
||||||
@ -71,105 +60,10 @@ MODULE_OPTIMIZE_FLAGS = -xO5
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Build jemalloc as a shared lib. This is mandatory for Darwin, since a library
|
ifeq (Linux,$(OS_TARGET))
|
||||||
# init function is used on that platform.
|
|
||||||
ifeq ($(OS_ARCH),Darwin)
|
|
||||||
FORCE_SHARED_LIB= 1
|
|
||||||
else
|
|
||||||
# On Android, we're going to link jemalloc into mozutils, and that only works
|
|
||||||
# properly if we only build a fakelib, which won't happen if we DIST_INSTALL
|
|
||||||
ifneq ($(OS_TARGET),Android)
|
|
||||||
DIST_INSTALL = 1
|
|
||||||
endif
|
|
||||||
FORCE_STATIC_LIB= 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
#XXX: PGO on Linux causes problems here
|
#XXX: PGO on Linux causes problems here
|
||||||
# See bug 419470
|
# See bug 419470
|
||||||
NO_PROFILE_GUIDED_OPTIMIZE = 1
|
NO_PROFILE_GUIDED_OPTIMIZE = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
ifeq (Darwin,$(OS_TARGET))
|
|
||||||
LDFLAGS += -init _jemalloc_darwin_init
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (WINNT,$(OS_TARGET))
|
|
||||||
# Roll our own custom logic here for the import library
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Linking Mozilla itself to jemalloc is not particularly difficult. To do this
|
|
||||||
# we avoid linking directly to the Microsoft-provided CRT import libraries.
|
|
||||||
# Instead, we link to our own import library which we generate here. To
|
|
||||||
# replace the CRT's malloc/free/other memory management symbols we export
|
|
||||||
# our own versions out of jemalloc.dll. We then take the import library that
|
|
||||||
# the compiler generates for jemalloc.dll and combine it with the MS CRT import
|
|
||||||
# libraries. We put our library on the command line first, and the CRT symbols
|
|
||||||
# are discarded in favor of our versions!
|
|
||||||
#
|
|
||||||
# Unfortunately that was too easy. The CRT import library is not a standard
|
|
||||||
# import library that contains a list of symbols and whatnot. It also includes
|
|
||||||
# object files that are linked into generated programs. One of these,
|
|
||||||
# crtdll.obj is (as one might expect) linked into all DLLs that link against
|
|
||||||
# the CRT. This file does things like run static C++ constructors when the
|
|
||||||
# DLL is attached, call DllMain, etc.
|
|
||||||
#
|
|
||||||
# In the CRT source all malloc/free calls are made to malloc_crt and free_crt.
|
|
||||||
# In debug builds these are both defined to malloc_dbg and free_dbg. In opt
|
|
||||||
# builds malloc_crt is an actual function, implemented and exposed from the
|
|
||||||
# CRT. free_crt is, however, defined to be just plain old free. This works
|
|
||||||
# fine inside the CRT where malloc_crt and free operate on the same heap.
|
|
||||||
# Outside the CRT malloc_crt is in the CRT's heap, but free is in jemalloc's
|
|
||||||
# heap. This causes much pain at shutdown :-(
|
|
||||||
#
|
|
||||||
# The obvious solution here is to override malloc_crt too. Unfortunately,
|
|
||||||
# that doesn't work because the CRT expects to be able to call msize on this
|
|
||||||
# piece of memory deep inside the CRT, which will fail because it'll call the
|
|
||||||
# CRT's msize on a pointer in jemalloc's heap.
|
|
||||||
#
|
|
||||||
# Our solution to this is quite devious. We take apart the CRT's import lib
|
|
||||||
# and remove the problematic object file. We then poke at the object file's
|
|
||||||
# symbol table and replace '__imp__free' (which means grab free from some
|
|
||||||
# other DLL) with '__imp__frex'. Then we define our own dummy no-op function
|
|
||||||
# in jemalloc.dll and export it as frex. Then we put the CRT import lib
|
|
||||||
# back together with the patched crtdll.obj, glue it to the end of jemalloc's
|
|
||||||
# import library and link the rest of Mozilla to that.
|
|
||||||
#
|
|
||||||
# The result? A binary that uses jemalloc, doesn't crash, and leaks a tiny
|
|
||||||
# amount of memory (32 words per DLL in the 2010 CRT) at shutdown.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
libs:: mozcrt.lib
|
|
||||||
$(INSTALL) $(IFLAGS2) mozcrt.lib $(DIST)/lib
|
|
||||||
|
|
||||||
# And finally combine that with the jemalloc import library to get an import
|
|
||||||
# library that has our malloc/free/etc and the CRT's everything else
|
|
||||||
mozcrt.lib: $(IMPORT_LIBRARY) msvc_modified.lib
|
|
||||||
lib -OUT:$@ $^
|
|
||||||
|
|
||||||
# Put the fixed object file back in
|
|
||||||
msvc_modified.lib: msvc_removed.lib crtdll_fixed.obj
|
|
||||||
lib -OUT:$@ $^
|
|
||||||
|
|
||||||
# Fix the object file
|
|
||||||
crtdll_fixed.obj: crtdll.obj
|
|
||||||
$(PYTHON) $(srcdir)/fixcrt.py
|
|
||||||
|
|
||||||
# Find the path of crtdll.obj
|
|
||||||
CRTDLL_FULLPATH=$(subst \,\\,$(shell lib -list msvc_combined.lib | grep crtdll\\.obj))
|
|
||||||
|
|
||||||
# Remove the broken object file, only after we have extracted it
|
|
||||||
msvc_removed.lib: msvc_combined.lib crtdll.obj
|
|
||||||
lib -OUT:$@ msvc_combined.lib -REMOVE:$(CRTDLL_FULLPATH)
|
|
||||||
|
|
||||||
# Extract the broken object file out of the combined library
|
|
||||||
crtdll.obj: msvc_combined.lib
|
|
||||||
lib -OUT:$@ $^ -EXTRACT:$(CRTDLL_FULLPATH)
|
|
||||||
|
|
||||||
# Grab both CRT libraries and combine them into one library to simplify things
|
|
||||||
msvc_combined.lib:
|
|
||||||
lib -OUT:$@ $(WIN32_CRT_LIBS)
|
|
||||||
endif
|
|
||||||
|
@ -54,12 +54,6 @@ LIBRARY_NAME = mozalloc
|
|||||||
FORCE_SHARED_LIB= 1
|
FORCE_SHARED_LIB= 1
|
||||||
DIST_INSTALL = 1
|
DIST_INSTALL = 1
|
||||||
|
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
ifeq ($(OS_ARCH),Darwin)
|
|
||||||
EXTRA_DSO_LDOPTS += -L$(DIST)/lib -ljemalloc
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (,$(filter-out OS2,$(OS_ARCH)))
|
ifeq (,$(filter-out OS2,$(OS_ARCH)))
|
||||||
# The strndup declaration in string.h is in an ifdef __USE_GNU section
|
# The strndup declaration in string.h is in an ifdef __USE_GNU section
|
||||||
DEFINES += -D_GNU_SOURCE
|
DEFINES += -D_GNU_SOURCE
|
||||||
|
175
memory/mozutils/Makefile.in
Normal file
175
memory/mozutils/Makefile.in
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
#
|
||||||
|
# ***** BEGIN LICENSE BLOCK *****
|
||||||
|
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
#
|
||||||
|
# The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
# the License. You may obtain a copy of the License at
|
||||||
|
# http://www.mozilla.org/MPL/
|
||||||
|
#
|
||||||
|
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
# for the specific language governing rights and limitations under the
|
||||||
|
# License.
|
||||||
|
#
|
||||||
|
# The Original Code is mozilla.org code.
|
||||||
|
#
|
||||||
|
# The Initial Developer of the Original Code is
|
||||||
|
# Mozilla Foundation
|
||||||
|
# Portions created by the Initial Developer are Copyright (C) 2008
|
||||||
|
# the Initial Developer. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Contributor(s):
|
||||||
|
# Ted Mielczarek <ted.mielczarek@gmail.com>
|
||||||
|
#
|
||||||
|
# Alternatively, the contents of this file may be used under the terms of
|
||||||
|
# either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||||
|
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
# of those above. If you wish to allow use of your version of this file only
|
||||||
|
# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
# use your version of this file under the terms of the MPL, indicate your
|
||||||
|
# decision by deleting the provisions above and replace them with the notice
|
||||||
|
# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
# the provisions above, a recipient may use your version of this file under
|
||||||
|
# the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
#
|
||||||
|
# ***** END LICENSE BLOCK *****
|
||||||
|
|
||||||
|
DEPTH = ../..
|
||||||
|
topsrcdir = @top_srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
|
MODULE = mozutils
|
||||||
|
LIBRARY_NAME = mozutils
|
||||||
|
DIST_INSTALL = 1
|
||||||
|
|
||||||
|
ifdef MOZ_MEMORY
|
||||||
|
SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,jemalloc,../jemalloc)
|
||||||
|
else
|
||||||
|
# Temporary, until bug 662814 lands
|
||||||
|
VISIBILITY_FLAGS =
|
||||||
|
CPPSRCS = dummy.cpp
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Build mozutils as a shared lib on Windows, OSX and Android.
|
||||||
|
ifneq (,$(filter WINNT Darwin Android,$(OS_TARGET)))
|
||||||
|
FORCE_SHARED_LIB = 1
|
||||||
|
else
|
||||||
|
FORCE_STATIC_LIB = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
MOZ_UTILS_LDFLAGS = # Don't link against ourselves
|
||||||
|
|
||||||
|
ifeq (WINNT,$(OS_TARGET))
|
||||||
|
DEFFILE = mozutils.def
|
||||||
|
|
||||||
|
mozutils.def: mozutils.def.in
|
||||||
|
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(ACDEFINES) $< > $@
|
||||||
|
|
||||||
|
GARBAGE += mozutils.def
|
||||||
|
|
||||||
|
LDFLAGS += -ENTRY:DllMain
|
||||||
|
|
||||||
|
ifneq (,$(filter -DEFAULTLIB:mozcrt,$(MOZ_UTILS_LDFLAGS)))
|
||||||
|
# Don't install the import library if we use mozcrt
|
||||||
|
NO_INSTALL_IMPORT_LIBRARY = 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (Android, $(OS_TARGET))
|
||||||
|
# Add Android linker
|
||||||
|
EXTRA_DSO_LDOPTS += $(ZLIB_LIBS)
|
||||||
|
SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,android,$(DEPTH)/other-licenses/android)
|
||||||
|
WRAP_LDFLAGS =
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
|
ifdef MOZ_MEMORY
|
||||||
|
ifeq (Darwin,$(OS_TARGET))
|
||||||
|
LDFLAGS += -init _jemalloc_darwin_init
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (WINNT,$(OS_TARGET))
|
||||||
|
# Roll our own custom logic here for the import library
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Linking Mozilla itself to jemalloc is not particularly difficult. To do this
|
||||||
|
# we avoid linking directly to the Microsoft-provided CRT import libraries.
|
||||||
|
# Instead, we link to our own import library which we generate here. To
|
||||||
|
# replace the CRT's malloc/free/other memory management symbols we export
|
||||||
|
# our own versions out of jemalloc.dll. We then take the import library that
|
||||||
|
# the compiler generates for jemalloc.dll and combine it with the MS CRT import
|
||||||
|
# libraries. We put our library on the command line first, and the CRT symbols
|
||||||
|
# are discarded in favor of our versions!
|
||||||
|
#
|
||||||
|
# Unfortunately that was too easy. The CRT import library is not a standard
|
||||||
|
# import library that contains a list of symbols and whatnot. It also includes
|
||||||
|
# object files that are linked into generated programs. One of these,
|
||||||
|
# crtdll.obj is (as one might expect) linked into all DLLs that link against
|
||||||
|
# the CRT. This file does things like run static C++ constructors when the
|
||||||
|
# DLL is attached, call DllMain, etc.
|
||||||
|
#
|
||||||
|
# In the CRT source all malloc/free calls are made to malloc_crt and free_crt.
|
||||||
|
# In debug builds these are both defined to malloc_dbg and free_dbg. In opt
|
||||||
|
# builds malloc_crt is an actual function, implemented and exposed from the
|
||||||
|
# CRT. free_crt is, however, defined to be just plain old free. This works
|
||||||
|
# fine inside the CRT where malloc_crt and free operate on the same heap.
|
||||||
|
# Outside the CRT malloc_crt is in the CRT's heap, but free is in jemalloc's
|
||||||
|
# heap. This causes much pain at shutdown :-(
|
||||||
|
#
|
||||||
|
# The obvious solution here is to override malloc_crt too. Unfortunately,
|
||||||
|
# that doesn't work because the CRT expects to be able to call msize on this
|
||||||
|
# piece of memory deep inside the CRT, which will fail because it'll call the
|
||||||
|
# CRT's msize on a pointer in jemalloc's heap.
|
||||||
|
#
|
||||||
|
# Our solution to this is quite devious. We take apart the CRT's import lib
|
||||||
|
# and remove the problematic object file. We then poke at the object file's
|
||||||
|
# symbol table and replace '__imp__free' (which means grab free from some
|
||||||
|
# other DLL) with '__imp__frex'. Then we define our own dummy no-op function
|
||||||
|
# in jemalloc.dll and export it as frex. Then we put the CRT import lib
|
||||||
|
# back together with the patched crtdll.obj, glue it to the end of jemalloc's
|
||||||
|
# import library and link the rest of Mozilla to that.
|
||||||
|
#
|
||||||
|
# The result? A binary that uses jemalloc, doesn't crash, and leaks a tiny
|
||||||
|
# amount of memory (32 words per DLL in the 2010 CRT) at shutdown.
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
libs:: mozcrt.lib
|
||||||
|
$(INSTALL) $(IFLAGS2) mozcrt.lib $(DIST)/lib
|
||||||
|
|
||||||
|
# And finally combine that with the jemalloc import library to get an import
|
||||||
|
# library that has our malloc/free/etc and the CRT's everything else
|
||||||
|
mozcrt.lib: $(IMPORT_LIBRARY) msvc_modified.lib
|
||||||
|
lib -OUT:$@ $^
|
||||||
|
|
||||||
|
# Put the fixed object file back in
|
||||||
|
msvc_modified.lib: msvc_removed.lib crtdll_fixed.obj
|
||||||
|
lib -OUT:$@ $^
|
||||||
|
|
||||||
|
# Fix the object file
|
||||||
|
crtdll_fixed.obj: crtdll.obj
|
||||||
|
$(PYTHON) $(srcdir)/fixcrt.py
|
||||||
|
|
||||||
|
# Find the path of crtdll.obj
|
||||||
|
CRTDLL_FULLPATH=$(subst \,\\,$(shell lib -list msvc_combined.lib | grep crtdll\\.obj))
|
||||||
|
|
||||||
|
# Remove the broken object file, only after we have extracted it
|
||||||
|
msvc_removed.lib: msvc_combined.lib crtdll.obj
|
||||||
|
lib -OUT:$@ msvc_combined.lib -REMOVE:$(CRTDLL_FULLPATH)
|
||||||
|
|
||||||
|
# Extract the broken object file out of the combined library
|
||||||
|
crtdll.obj: msvc_combined.lib
|
||||||
|
lib -OUT:$@ $^ -EXTRACT:$(CRTDLL_FULLPATH)
|
||||||
|
|
||||||
|
# Grab both CRT libraries and combine them into one library to simplify things
|
||||||
|
msvc_combined.lib:
|
||||||
|
lib -OUT:$@ $(WIN32_CRT_LIBS)
|
||||||
|
endif
|
||||||
|
endif # MOZ_MEMORY
|
2
memory/mozutils/dummy.cpp
Normal file
2
memory/mozutils/dummy.cpp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
void _dummy(void) {
|
||||||
|
}
|
@ -33,9 +33,10 @@
|
|||||||
;
|
;
|
||||||
; ***** END LICENSE BLOCK *****
|
; ***** END LICENSE BLOCK *****
|
||||||
|
|
||||||
LIBRARY jemalloc.dll
|
LIBRARY mozutils.dll
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
|
#ifdef MOZ_MEMORY
|
||||||
; symbols that are actually useful
|
; symbols that are actually useful
|
||||||
malloc=je_malloc
|
malloc=je_malloc
|
||||||
valloc=je_valloc
|
valloc=je_valloc
|
||||||
@ -53,3 +54,4 @@ EXPORTS
|
|||||||
jemalloc_stats
|
jemalloc_stats
|
||||||
; A hack to work around the CRT (see giant comment in Makefile.in)
|
; A hack to work around the CRT (see giant comment in Makefile.in)
|
||||||
frex=je_dumb_free_thunk
|
frex=je_dumb_free_thunk
|
||||||
|
#endif
|
@ -60,8 +60,6 @@ LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build
|
|||||||
DEFINES += -DXPCOM_GLUE
|
DEFINES += -DXPCOM_GLUE
|
||||||
STL_FLAGS=
|
STL_FLAGS=
|
||||||
|
|
||||||
LIBS += $(JEMALLOC_LIBS)
|
|
||||||
|
|
||||||
LIBS += \
|
LIBS += \
|
||||||
$(EXTRA_DSO_LIBS) \
|
$(EXTRA_DSO_LIBS) \
|
||||||
$(XPCOM_STANDALONE_GLUE_LDOPTS) \
|
$(XPCOM_STANDALONE_GLUE_LDOPTS) \
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
@BINPATH@/@DLL_PREFIX@xpcom@DLL_SUFFIX@
|
@BINPATH@/@DLL_PREFIX@xpcom@DLL_SUFFIX@
|
||||||
@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
|
@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
|
||||||
@BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@
|
@BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@
|
||||||
|
@BINPATH@/@DLL_PREFIX@mozutils@DLL_SUFFIX@
|
||||||
#ifdef XP_MACOSX
|
#ifdef XP_MACOSX
|
||||||
@BINPATH@/XUL
|
@BINPATH@/XUL
|
||||||
#else
|
#else
|
||||||
@ -58,9 +59,6 @@
|
|||||||
@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
|
@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
|
||||||
#endif
|
#endif
|
||||||
#ifdef XP_WIN32
|
#ifdef XP_WIN32
|
||||||
#ifdef MOZ_MEMORY
|
|
||||||
@BINPATH@/jemalloc.dll
|
|
||||||
#endif
|
|
||||||
#if _MSC_VER == 1400
|
#if _MSC_VER == 1400
|
||||||
@BINPATH@/Microsoft.VC80.CRT.manifest
|
@BINPATH@/Microsoft.VC80.CRT.manifest
|
||||||
@BINPATH@/msvcm80.dll
|
@BINPATH@/msvcm80.dll
|
||||||
|
@ -42,10 +42,9 @@ VPATH = @srcdir@
|
|||||||
|
|
||||||
include $(DEPTH)/config/autoconf.mk
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
MODULE = mozutils
|
MODULE = android
|
||||||
LIBRARY_NAME = mozutils
|
LIBRARY_NAME = android
|
||||||
FORCE_SHARED_LIB = 1
|
FORCE_STATIC_LIB = 1
|
||||||
DIST_INSTALL = 1
|
|
||||||
|
|
||||||
DEFINES += \
|
DEFINES += \
|
||||||
-DLINKER_DEBUG=0 \
|
-DLINKER_DEBUG=0 \
|
||||||
@ -72,12 +71,4 @@ CSRCS = \
|
|||||||
|
|
||||||
EXPORTS = APKOpen.h
|
EXPORTS = APKOpen.h
|
||||||
|
|
||||||
EXTRA_DSO_LDOPTS += $(ZLIB_LIBS)
|
|
||||||
|
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/jemalloc)
|
|
||||||
endif
|
|
||||||
|
|
||||||
WRAP_LDFLAGS =
|
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
@ -45,12 +45,6 @@ LOCAL_INCLUDES += \
|
|||||||
|
|
||||||
OS_LIBS += $(LIBICONV)
|
OS_LIBS += $(LIBICONV)
|
||||||
|
|
||||||
ifdef MOZ_MEMORY
|
|
||||||
ifeq ($(OS_ARCH),Darwin)
|
|
||||||
EXTRA_DSO_LDOPTS += -L$(DIST)/lib -ljemalloc
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEFINES += \
|
DEFINES += \
|
||||||
-D_IMPL_NS_COM \
|
-D_IMPL_NS_COM \
|
||||||
-D_IMPL_NS_STRINGAPI \
|
-D_IMPL_NS_STRINGAPI \
|
||||||
|
@ -420,7 +420,7 @@ GENERATE_CACHE = \
|
|||||||
rm startupCache.zip && \
|
rm startupCache.zip && \
|
||||||
$(ZIP) -r9m omni.jar jsloader/resource/$(PRECOMPILE_RESOURCE)
|
$(ZIP) -r9m omni.jar jsloader/resource/$(PRECOMPILE_RESOURCE)
|
||||||
else
|
else
|
||||||
GENERATE_CACHE =
|
GENERATE_CACHE = true
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -111,11 +111,6 @@ include $(topsrcdir)/config/rules.mk
|
|||||||
|
|
||||||
CFLAGS += $(LIBIDL_CFLAGS)
|
CFLAGS += $(LIBIDL_CFLAGS)
|
||||||
|
|
||||||
# Do not link to jemalloc
|
|
||||||
ifeq ($(OS_ARCH),SunOS)
|
|
||||||
SOLARIS_JEMALLOC_LDFLAGS =
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Compile directly against the static lib, so we can use xpidl during the build
|
# Compile directly against the static lib, so we can use xpidl during the build
|
||||||
# without the shared library path being set.
|
# without the shared library path being set.
|
||||||
ifneq (,$(filter WINNT OS2,$(OS_ARCH)))
|
ifneq (,$(filter WINNT OS2,$(OS_ARCH)))
|
||||||
|
@ -130,8 +130,6 @@ endif
|
|||||||
RCFLAGS += -DXULRUNNER_ICO=\"$(DIST)/branding/xulrunner.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\"
|
RCFLAGS += -DXULRUNNER_ICO=\"$(DIST)/branding/xulrunner.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBS += $(JEMALLOC_LIBS)
|
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
DEFINES += -DXULRUNNER_ICO=\"$(DIST)/branding/xulrunner.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\"
|
DEFINES += -DXULRUNNER_ICO=\"$(DIST)/branding/xulrunner.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\"
|
||||||
|
@ -97,8 +97,6 @@ ifdef _MSC_VER
|
|||||||
WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
|
WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBS += $(JEMALLOC_LIBS)
|
|
||||||
|
|
||||||
include $(topsrcdir)/config/rules.mk
|
include $(topsrcdir)/config/rules.mk
|
||||||
|
|
||||||
ifeq ($(OS_ARCH),WINNT)
|
ifeq ($(OS_ARCH),WINNT)
|
||||||
|
Loading…
Reference in New Issue
Block a user