opt optimize-cxx 1 "build optimized C++ code"
opt optimize-llvm 1 "build optimized LLVM"
opt optimize-tests 1 "build tests with optimizations"
-opt libcpp 1 "build with clang's libcpp"
+opt libcpp 1 "build with llvm with libc++ instead of libstdc++ when using clang"
opt llvm-assertions 1 "build LLVM with assertions"
opt debug 1 "build with extra debug fun"
opt ratchet-bench 0 "ratchet benchmarks"
opt clang 0 "prefer clang to gcc for building the runtime"
opt ccache 0 "invoke gcc/clang via ccache to reuse object files between builds"
opt local-rust 0 "use an installed rustc rather than downloading a snapshot"
-opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX-patched kernels)"
opt inject-std-version 1 "inject the current compiler version of libstd into programs"
opt llvm-static-stdcpp 0 "statically link to libstdc++ for LLVM"
opt rpath 1 "build rpaths into rustc itself"
opt nightly 0 "build nightly packages"
opt verify-install 1 "verify installed binaries work"
+opt jemalloc 1 "build liballoc with jemalloc"
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 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"
fi
fi
-if [ "$CFG_OSTYPE" = "unknown-linux-gnu" ]
-then
- probe CFG_PAXCTL paxctl /sbin/paxctl
- probe CFG_ZCAT zcat
-fi
-
step_msg "looking for target specific programs"
probe CFG_ADB adb
fi
fi
-if [ "$CFG_OSTYPE" = "unknown-linux-gnu" ]
-then
- if [ ! -z "$CFG_ENABLE_PAX_FLAGS" -a -z "$CFG_PAXCTL" ]
- then
- err "enabled PaX markings but no paxctl binary found"
- fi
-
- if [ -z "$CFG_DISABLE_PAX_FLAGS" ]
- then
- # GRSecurity/PaX detection. This can be very flaky.
- GRSEC_DETECTED=
-
- # /dev/grsec only exists if CONFIG_GRKERNSEC_NO_RBAC is not set.
- # /proc/sys/kernel/grsecurity is not available if ÇONFIG_GRKERNSEC_SYSCTL is not set.
- if [ -e /dev/grsec -o -d /proc/sys/kernel/grsecurity ]
- then
- GRSEC_DETECTED=1
- # /proc/config.gz is normally only available to root, and only if CONFIG_IKCONFIG_PROC has been set.
- elif [ -r /proc/config.gz -a ! -z "$CFG_ZCAT" ]
- then
- if "$CFG_ZCAT" /proc/config.gz | grep --quiet "CONFIG_GRKERNSEC=y"
- then
- GRSEC_DETECTED=1
- fi
- # Flaky.
- elif grep --quiet grsec /proc/version
- then
- GRSEC_DETECTED=1
- fi
-
- if [ ! -z "$GRSEC_DETECTED" ]
- then
- step_msg "GRSecurity: yes"
- if [ ! -z "$CFG_PAXCTL" ]
- then
- CFG_ENABLE_PAX_FLAGS=1
- else
- warn "GRSecurity kernel detected but no paxctl binary found: not setting CFG_ENABLE_PAX_FLAGS"
- fi
- else
- step_msg "GRSecurity: no"
- fi
- fi
-fi
-
BIN_SUF=
if [ "$CFG_OSTYPE" = "pc-mingw32" ] || [ "$CFG_OSTYPE" = "w64-mingw32" ]
then
make_dir $h/test/debuginfo-lldb
make_dir $h/test/codegen
make_dir $h/test/doc-tutorial
+ make_dir $h/test/doc-guide
make_dir $h/test/doc-guide-ffi
make_dir $h/test/doc-guide-runtime
make_dir $h/test/doc-guide-macros
make_dir $h/test/doc-guide-pointers
make_dir $h/test/doc-guide-container
make_dir $h/test/doc-guide-tasks
- make_dir $h/test/doc-complement-cheatsheet
make_dir $h/test/doc-rust
done
msg "git: submodule sync"
"${CFG_GIT}" submodule sync
+ msg "git: submodule init"
+ "${CFG_GIT}" submodule init
+
+ # Disable submodules that we're not using
+ if [ ! -z "${CFG_LLVM_ROOT}" ]; then
+ msg "git: submodule deinit src/llvm"
+ "${CFG_GIT}" submodule deinit src/llvm
+ fi
+ if [ ! -z "${CFG_JEMALLOC_ROOT}" ]; then
+ msg "git: submodule deinit src/jemalloc"
+ "${CFG_GIT}" submodule deinit src/jemalloc
+ fi
+ if [ ! -z "${CFG_LIBUV_ROOT}" ]; then
+ msg "git: submodule deinit src/libuv"
+ "${CFG_GIT}" submodule deinit src/libuv
+ fi
+
msg "git: submodule update"
- "${CFG_GIT}" submodule update --init
+ "${CFG_GIT}" submodule update
need_ok "git failed"
msg "git: submodule foreach sync"
need_ok "git failed"
msg "git: submodule foreach update"
- "${CFG_GIT}" submodule update --init --recursive
+ "${CFG_GIT}" submodule update --recursive
need_ok "git failed"
# NB: this is just for the sake of getting the submodule SHA1 values
CXXFLAGS=$LLVM_CXXFLAGS
LDFLAGS=$LLVM_LDFLAGS
- if [ "$CFG_DISABLE_LIBCPP" != 1 ]; then
+ if [ -z "$CFG_DISABLE_LIBCPP" ] && [ -n "$CFG_USING_CLANG" ]; then
LLVM_OPTS="$LLVM_OPTS --enable-libcpp"
fi
putvar CFG_MINGW32_CROSS_PATH
putvar CFG_MANDIR
putvar CFG_DISABLE_INJECT_STD_VERSION
+putvar CFG_JEMALLOC_ROOT
+putvar CFG_LIBUV_ROOT
+putvar CFG_DISABLE_JEMALLOC
# Avoid spurious warnings from clang by feeding it original source on
# ccache-miss rather than preprocessed input.