Mercurial > jemalloc
diff Makefile.in.orig @ 0:9a44d900ee55
initial import
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 05 Oct 2009 16:06:43 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.in.orig Mon Oct 05 16:06:43 2009 +0900 @@ -0,0 +1,126 @@ +# +# ***** 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 = jemalloc + +# jemalloc.c properly uses 'static', so don't burden it with manually exposing +# symbols. +VISIBILITY_FLAGS= + +ifeq (WINCE,$(OS_TARGET)) +DEFINES+= -DMOZCE_SHUNT_H +endif + +ifeq (WINNT,$(OS_TARGET)) +# Two options for Windows, either you build the CRT from source, +# or you use a pre-built DLL. +ifneq (,$(WIN32_CRT_SRC_DIR)) +# Building the CRT from source +CRT_OBJ_DIR=./$(shell basename "$(WIN32_CRT_SRC_DIR)") +libs:: $(CRT_OBJ_DIR)/build/intel/mozcrt19.dll + $(INSTALL) $< $(FINAL_TARGET) + +# patch if necessary +$(CRT_OBJ_DIR)/jemalloc.c: $(srcdir)/crtsp1.diff + rm -rf $(CRT_OBJ_DIR) + cp -R "$(WIN32_CRT_SRC_DIR)" . + # per http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1189363&SiteID=1 + for i in dll mt xdll xmt; do \ + pushd $(CRT_OBJ_DIR)/intel/$${i}_lib && lib -extract:..\\build\\intel\\$${i}_obj\\unhandld.obj eh.lib && popd; \ + done + # truly awful + #XXX: get ed into mozillabuild, bug 415123 + $(PERL) $(srcdir)/apply-ed-patches.pl $(srcdir)/crtsp1.diff \ + $(CRT_OBJ_DIR) $(srcdir)/ed.exe + +$(CRT_OBJ_DIR)/build/intel/mozcrt19.dll: \ + $(CRT_OBJ_DIR)/jemalloc.c $(srcdir)/jemalloc.c $(srcdir)/jemalloc.h \ + $(srcdir)/ql.h $(srcdir)/qr.h $(srcdir)/rb.h + cp $(srcdir)/jemalloc.c $(srcdir)/jemalloc.h $(srcdir)/ql.h \ + $(srcdir)/qr.h $(srcdir)/rb.h $(CRT_OBJ_DIR) +# this pretty much sucks, but nmake and make don't play well together + $(PYTHON) $(srcdir)/build-crt.py $(CRT_OBJ_DIR) + #XXX: these don't link right for some reason + rm $(CRT_OBJ_DIR)/build/intel/{libcmt,libcpmt}.lib +else +# Using a pre-built DLL, so just install it. +libs:: $(WIN32_CUSTOM_CRT_DIR)/mozcrt19.dll + $(INSTALL) $< $(FINAL_TARGET) +endif + +else + +MODULE_OPTIMIZE_FLAGS = -O2 +ifeq ($(OS_ARCH),SunOS) +ifndef GNU_CC +MODULE_OPTIMIZE_FLAGS = -xO5 +endif +endif + +LIBRARY_NAME = jemalloc + +# Build jemalloc as a shared lib. This is mandatory for Darwin, since a library +# init function is used on that platform. +ifeq ($(OS_ARCH),Darwin) +FORCE_SHARED_LIB= 1 +else +DIST_INSTALL = 1 +FORCE_STATIC_LIB= 1 +endif + +CSRCS = \ + jemalloc.c \ + $(NULL) + +#XXX: PGO on Linux causes problems here +# See bug 419470 +NO_PROFILE_GUIDED_OPTIMIZE = 1 +endif + +include $(topsrcdir)/config/rules.mk + +ifeq (Darwin,$(OS_TARGET)) +LDFLAGS += -init _jemalloc_darwin_init +endif