From 145e415fabd4532f34537d82a4612e5feeccf11c Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 6 Jun 2014 23:52:56 -0700 Subject: [PATCH 1/3] mk: Allow usage of a local jemalloc install This adds a new configure option, --jemalloc-root, which will specify a location at which libjemalloc_pic.a must live. This library is then used for the build triple as the jemalloc library to link. --- configure | 2 ++ mk/rt.mk | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/configure b/configure index e3cf990d47ca9..c68697f53891c 100755 --- a/configure +++ b/configure @@ -425,6 +425,7 @@ opt verify-install 1 "verify installed binaries work" valopt prefix "/usr/local" "set installation prefix" valopt local-rust-root "/usr/local" "set prefix for local rust binary" valopt llvm-root "" "set LLVM root" +valopt jemalloc-root "" "set jemalloc root" valopt android-cross-path "/opt/ndk_standalone" "Android NDK standalone path" valopt mingw32-cross-path "" "MinGW32 cross compiler path" @@ -1198,6 +1199,7 @@ putvar CFG_ANDROID_CROSS_PATH putvar CFG_MINGW32_CROSS_PATH putvar CFG_MANDIR putvar CFG_DISABLE_INJECT_STD_VERSION +putvar CFG_JEMALLOC_ROOT # Avoid spurious warnings from clang by feeding it original source on # ccache-miss rather than preprocessed input. diff --git a/mk/rt.mk b/mk/rt.mk index a75cb8aa4deb2..f865ef2ffafa2 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -253,8 +253,9 @@ else endif JEMALLOC_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/$$(JEMALLOC_NAME_$(1)) JEMALLOC_BUILD_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/jemalloc +JEMALLOC_LOCAL_$(1) := $$(JEMALLOC_BUILD_DIR_$(1))/lib/$$(JEMALLOC_REAL_NAME_$(1)) -$$(JEMALLOC_LIB_$(1)): $$(JEMALLOC_DEPS) $$(MKFILE_DEPS) +$$(JEMALLOC_LOCAL_$(1)): $$(JEMALLOC_DEPS) $$(MKFILE_DEPS) @$$(call E, make: jemalloc) cd "$$(JEMALLOC_BUILD_DIR_$(1))"; "$(S)src/jemalloc/configure" \ $$(JEMALLOC_ARGS_$(1)) --enable-cc-silence --with-jemalloc-prefix=je_ \ @@ -265,7 +266,20 @@ $$(JEMALLOC_LIB_$(1)): $$(JEMALLOC_DEPS) $$(MKFILE_DEPS) CPPFLAGS="-I $(S)src/rt/" \ EXTRA_CFLAGS="$$(CFG_CFLAGS_$(1)) -g1" $$(Q)$$(MAKE) -C "$$(JEMALLOC_BUILD_DIR_$(1))" build_lib_static - $$(Q)cp $$(JEMALLOC_BUILD_DIR_$(1))/lib/$$(JEMALLOC_REAL_NAME_$(1)) $$(JEMALLOC_LIB_$(1)) + +ifeq ($(1),$$(CFG_BUILD)) +ifneq ($$(CFG_JEMALLOC_ROOT),) +$$(JEMALLOC_LIB_$(1)): $$(CFG_JEMALLOC_ROOT)/libjemalloc_pic.a + @$$(call E, copy: jemalloc) + $$(Q)cp $$< $$@ +else +$$(JEMALLOC_LIB_$(1)): + $$(Q)cp $$< $$@ +endif +else +$$(JEMALLOC_LIB_$(1)): + $$(Q)cp $$< $$@ +endif ################################################################################ # compiler-rt From 46014c7b14d18cd2f5c0438e7bbcb8b08c5b228a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 6 Jun 2014 23:55:05 -0700 Subject: [PATCH 2/3] travis: Use a pre-installed jemalloc --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 76e3af05d55cc..17a7543ef2223 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ install: - sudo apt-get update -qq - sudo apt-get install -qq --force-yes -y llvm-$LLVM_VERSION llvm-${LLVM_VERSION}-dev clang-$LLVM_VERSION lldb-$LLVM_VERSION + libjemalloc-dev # All of the llvm tools are suffixed with "-$VERS" which we don't want, so @@ -27,7 +28,8 @@ before_script: - ln -nsf /usr/bin/llvm-dis-$LLVM_VERSION local-llvm/bin/llvm-dis - ln -nsf /usr/bin/llc-$LLVM_VERSION local-llvm/bin/llc - ln -nsf /usr/include/llvm-$LLVM_VERSION local-llvm/include - - ./configure --disable-optimize-tests --llvm-root=`pwd`/local-llvm --enable-fast-make --enable-clang + - ./configure --disable-optimize-tests --llvm-root=`pwd`/local-llvm + --enable-fast-make --enable-clang --jemalloc-root=/usr/lib # Tidy everything up first, then build a few things, and then run a few tests. # Note that this is meant to run in a "fairly small" amount of time, so this From fa7b7bcdcbfe9dda7d0fa038bfe313c4d73ce810 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 10 Jun 2014 10:01:21 -0700 Subject: [PATCH 3/3] mk: Allow using a locally compiled libuv.a Closes #5563 --- configure | 4 +++- mk/rt.mk | 27 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/configure b/configure index c68697f53891c..fe29e4883166b 100755 --- a/configure +++ b/configure @@ -425,7 +425,8 @@ opt verify-install 1 "verify installed binaries work" valopt prefix "/usr/local" "set installation prefix" valopt local-rust-root "/usr/local" "set prefix for local rust binary" valopt llvm-root "" "set LLVM root" -valopt jemalloc-root "" "set jemalloc root" +valopt jemalloc-root "" "set directory where libjemalloc_pic.a is located" +valopt libuv-root "" "set directory where libuv.a is located" valopt android-cross-path "/opt/ndk_standalone" "Android NDK standalone path" valopt mingw32-cross-path "" "MinGW32 cross compiler path" @@ -1200,6 +1201,7 @@ putvar CFG_MINGW32_CROSS_PATH putvar CFG_MANDIR putvar CFG_DISABLE_INJECT_STD_VERSION putvar CFG_JEMALLOC_ROOT +putvar CFG_LIBUV_ROOT # Avoid spurious warnings from clang by feeding it original source on # ccache-miss rather than preprocessed input. diff --git a/mk/rt.mk b/mk/rt.mk index f865ef2ffafa2..1c4efd641f063 100644 --- a/mk/rt.mk +++ b/mk/rt.mk @@ -204,19 +204,17 @@ $$(LIBUV_MAKEFILE_$(1)): $$(LIBUV_DEPS) $$(MKFILE_DEPS) $$(LIBUV_STAMP_$(1)) # theory when we support msvc then we should be using gyp's msvc output instead # of mingw's makefile for windows ifdef CFG_WINDOWSY_$(1) -$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(MKFILE_DEPS) +LIBUV_LOCAL_$(1) := $$(S)src/libuv/libuv.a +$$(LIBUV_LOCAL_$(1)): $$(LIBUV_DEPS) $$(MKFILE_DEPS) $$(Q)$$(MAKE) -C $$(S)src/libuv -f Makefile.mingw \ LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS_$(1))" \ CC="$$(CC_$(1)) $$(LIBUV_CFLAGS_$(1)) $$(SNAP_DEFINES)" \ CXX="$$(CXX_$(1))" \ AR="$$(AR_$(1))" \ V=$$(VERBOSE) - $$(Q)cp $$(S)src/libuv/libuv.a $$@ else -$$(LIBUV_LIB_$(1)): $$(LIBUV_DIR_$(1))/Release/libuv.a $$(MKFILE_DEPS) - $$(Q)cp $$< $$@ -$$(LIBUV_DIR_$(1))/Release/libuv.a: $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)) \ - $$(MKFILE_DEPS) +LIBUV_LOCAL_$(1) := $$(LIBUV_DIR_$(1))/Release/libuv.a +$$(LIBUV_LOCAL_$(1)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)) $$(MKFILE_DEPS) $$(Q)$$(MAKE) -C $$(LIBUV_DIR_$(1)) \ CFLAGS="$$(LIBUV_CFLAGS_$(1)) $$(SNAP_DEFINES)" \ LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS_$(1))" \ @@ -231,6 +229,19 @@ $$(LIBUV_DIR_$(1))/Release/libuv.a: $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)) \ endif +ifeq ($(1),$$(CFG_BUILD)) +ifneq ($$(CFG_LIBUV_ROOT),) +$$(LIBUV_LIB_$(1)): $$(CFG_LIBUV_ROOT)/libuv.a + $$(Q)cp $$< $$@ +else +$$(LIBUV_LIB_$(1)): $$(LIBUV_LOCAL_$(1)) + $$(Q)cp $$< $$@ +endif +else +$$(LIBUV_LIB_$(1)): $$(LIBUV_LOCAL_$(1)) + $$(Q)cp $$< $$@ +endif + ################################################################################ # jemalloc ################################################################################ @@ -273,11 +284,11 @@ $$(JEMALLOC_LIB_$(1)): $$(CFG_JEMALLOC_ROOT)/libjemalloc_pic.a @$$(call E, copy: jemalloc) $$(Q)cp $$< $$@ else -$$(JEMALLOC_LIB_$(1)): +$$(JEMALLOC_LIB_$(1)): $$(JEMALLOC_LOCAL_$(1)) $$(Q)cp $$< $$@ endif else -$$(JEMALLOC_LIB_$(1)): +$$(JEMALLOC_LIB_$(1)): $$(JEMALLOC_LOCAL_$(1)) $$(Q)cp $$< $$@ endif