diff --git a/.travis.yml b/.travis.yml index ea405413e78f4..a776f1b1e1041 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ matrix: include: # Linux builders, all docker images - env: IMAGE=android DEPLOY=1 + - env: IMAGE=armhf-gnu - env: IMAGE=cross DEPLOY=1 - env: IMAGE=linux-tested-targets DEPLOY=1 - env: IMAGE=dist-arm-linux DEPLOY=1 @@ -32,7 +33,6 @@ matrix: - env: IMAGE=x86_64-gnu-aux - env: IMAGE=x86_64-gnu-debug - env: IMAGE=x86_64-gnu-nopt - - env: IMAGE=x86_64-gnu-make - env: IMAGE=x86_64-gnu-llvm-3.7 ALLOW_PR=1 RUST_BACKTRACE=1 - env: IMAGE=x86_64-gnu-distcheck - env: IMAGE=x86_64-gnu-incremental @@ -56,13 +56,6 @@ matrix: os: osx osx_image: xcode8.2 install: *osx_install_sccache - - env: > - RUST_CHECK_TARGET=check - RUST_CONFIGURE_ARGS=--build=x86_64-apple-darwin --disable-rustbuild - SRC=. - os: osx - osx_image: xcode8.2 - install: *osx_install_sccache - env: > RUST_CHECK_TARGET=dist RUST_CONFIGURE_ARGS="--target=aarch64-apple-ios,armv7-apple-ios,armv7s-apple-ios,i386-apple-ios,x86_64-apple-ios --enable-extended" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cdbabeaddfba8..429996126f92b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -93,11 +93,6 @@ system internals, try asking in [`#rust-internals`][pound-rust-internals]. [bootstrap]: https://github.com/rust-lang/rust/tree/master/src/bootstrap/ -> **Note**: the build system was recently rewritten from a jungle of makefiles -> to the current incarnation you'll see in `src/bootstrap`. If you experience -> bugs you can temporarily revert back to the makefiles with -> `--disable-rustbuild` passed to `./configure`. - ### Configuration Before you can start building the compiler you need to configure the build for diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 8dbe24213905a..0000000000000 --- a/Makefile.in +++ /dev/null @@ -1,297 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# \(^o^)/ -# -# Greetings, adventurer! The Rust Build System is at your service. -# -# Whether you want a genuine copy of `rustc`, access to the latest and -# most authoritative Rust documentation, or even to investigate the -# most intimate workings of the compiler itself, you've come to the -# right place. Let's see what's on the menu. -# -# Please note that most of these options only work if configure was -# run with --disable-rustbuild. For documentation on the new build -# system, see CONTRIBUTING.md. -# -# First, start with one of these build targets: -# -# * all - The default. Build a complete, bootstrapped compiler. -# `rustc` will be in `${target-triple}/stage2/bin/`. Run it -# directly from the build directory if you like. This also -# comes with docs in `doc/`. -# -# * check - Run the complete test suite -# -# * clean - Clean the build repository. It is advised to run this -# command if you want to build Rust again, after an update -# of the git repository. -# -# * install - Install Rust. Note that installation is not necessary -# to use the compiler. -# -# * uninstall - Uninstall the binaries -# -# For tips on working with The Rust Build System, just: -# -# run `make tips` -# -# Otherwise -# -# run `make` -# -# -# -# -# -# # The Rust Build System Tip Line -# -# There are a bazillion different targets you might want to build. Here -# are a few ideas. -# -# * docs - Build gobs of HTML documentation and put it into `doc/` -# * check-$(crate) - Test a crate, e.g. `check-std` -# * check-ref - Run the language reference tests -# * check-docs - Test the documentation examples -# * check-stage$(stage)-$(crate) - Test a crate in a specific stage -# * check-stage$(stage)-{rpass,rfail,cfail,rmake,...} - Run tests in src/test/ -# * check-stage1-T-$(target)-H-$(host) - Run cross-compiled-tests -# * tidy - Basic style check, show highest rustc error code and -# the status of language and lib features -# * rustc-stage$(stage) - Only build up to a specific stage -# * $host/stage1/bin/rustc - Only build stage1 rustc, not libstd. For further -# information see "Rust recipes for build system success" below. -# -# Then mix in some of these environment variables to harness the -# ultimate power of The Rust Build System. -# -# * `VERBOSE=1` - Print all commands. Use this to see what's going on. -# * `RUSTFLAGS=...` - Add compiler flags to all `rustc` invocations -# * `JEMALLOC_FLAGS=...` - Pass flags to jemalloc's configure script -# -# * `TESTNAME=...` - Specify the name of tests to run -# * `CHECK_IGNORED=1` - Run normally-ignored tests -# * `PLEASE_BENCH=1` - Run crate benchmarks (enable `--bench` flag) -# -# * `CFG_ENABLE_VALGRIND=1` - Run tests under valgrind -# * `VALGRIND_COMPILE=1` - Run the compiler itself under valgrind -# (requires `CFG_ENABLE_VALGRIND`) -# -# * `NO_REBUILD=1` - Don't rebootstrap when testing std -# (and possibly other crates) -# * `NO_MKFILE_DEPS=1` - Don't rebuild for modified .mk files -# -# * `SAVE_TEMPS=1` - Use `--save-temps` flag on all `rustc` invocations -# * `ASM_COMMENTS=1` - Use `-Z asm-comments` -# * `TIME_PASSES=1` - Use `-Z time-passes` -# * `TIME_LLVM_PASSES=1` - Use `-Z time-llvm-passes` -# * `TRACE=1` - Use `-Z trace` -# -# # Rust recipes for build system success -# -# // Modifying libstd? Use this command to run unit tests just on your change -# make check-stage1-std NO_REBUILD=1 NO_BENCH=1 -# -# // Modifying just rustc? -# // Compile rustc+libstd once -# make rustc-stage1 -# // From now on use this command to rebuild just rustc and reuse the previously built libstd -# // $host is a target triple, eg. x86_64-unknown-linux-gnu -# // The resulting binary is located at $host/stage1/bin/rustc. -# // If there are any issues with libstd recompile it with the command above. -# make $host/stage1/bin/rustc -# -# // Added a run-pass test? Use this to test running your test -# make check-stage1-rpass TESTNAME=my-shiny-new-test -# -# // Having trouble figuring out which test is failing? Turn off parallel tests -# make check-stage1-std RUST_TEST_THREADS=1 -# -# // To make debug!() and other logging calls visible, reconfigure: -# ./configure --enable-debug-assertions -# make .... -# -# If you really feel like getting your hands dirty, then: -# -# run `make nitty-gritty` -# -# # Make command examples -# -# ## Docs linked commands -# -# * make check-stage1-rustdocck: Builds rustdoc. It has the advantage to compile -# quite quickly since we're only using stage1 -# executables. -# * make doc/error-index.md: Gets all doc blocks from doc comments and error -# explanations to put them in a markdown file. You -# can then test them by running -# "rustdoc --test error-index.md". -# -# And of course, the wonderfully useful 'make tidy'! Always run it before opening a pull request to rust! -# -# -# -# -# -# # The Rust Build System -# -# Gosh I wish there was something useful here (TODO). -# -# # An (old) explanation of how the build is structured: -# -# *Note: Hey, like, this is probably inaccurate, and is definitely -# an outdated and insufficient explanation of the remarkable -# Rust Build System.* -# -# There are multiple build stages (0-3) needed to verify that the -# compiler is properly self-hosting. Each stage is divided between -# 'host' artifacts and 'target' artifacts, where the stageN host -# compiler builds artifacts for 1 or more stageN target architectures. -# Once the stageN target compiler has been built for the host -# architecture it is promoted (copied) to a stageN+1 host artifact. -# -# The stage3 host compiler is a compiler that successfully builds -# itself and should (in theory) be bitwise identical to the stage2 -# host compiler. The process is bootstrapped using a stage0 host -# compiler downloaded from a previous snapshot. -# -# At no time should stageN artifacts be interacting with artifacts -# from other stages. For consistency, we use the 'promotion' logic -# for all artifacts, even those that don't make sense on non-host -# architectures. -# -# The directory layout for a stage is intended to match the layout -# of the installed compiler, and looks like the following: -# -# stageN - this is the system root, corresponding to, e.g. /usr -# bin - binaries compiled for the host -# lib - libraries used by the host compiler -# rustlib - rustc's own place to organize libraries -# $(target) - target-specific artifacts -# bin - binaries for target architectures -# lib - libraries for target architectures -# -# A note about host libraries: -# -# The only libraries that get promoted to stageN/lib are those needed -# by rustc. In general, rust programs, even those compiled for the -# host architecture will use libraries from the target -# directories. This gives rust some freedom to experiment with how -# libraries are managed and versioned without polluting the common -# areas of the filesystem. -# -# General rust binaries may still live in the host bin directory; they -# will just link against the libraries in the target lib directory. -# -# Admittedly this is a little convoluted. -# -# If you find yourself working on the make infrastructure itself, and trying to -# find the value of a given variable after expansion, you can use: -# -# make print-VARIABLE_NAME -# -# To extract it -# -# -# - -###################################################################### -# Primary rules -###################################################################### - -# Issue #9531: If you change the order of any of the following (or add -# new definitions), make sure definitions always precede their uses, -# especially for the dependency lists of recipes. - -# First, load the variables exported by the configure script -include config.mk - -# Just a few macros used everywhere -include $(CFG_SRC_DIR)mk/util.mk -# Reconfiguring when the makefiles or submodules change -include $(CFG_SRC_DIR)mk/reconfig.mk -# All crates and their dependencies -include $(CFG_SRC_DIR)mk/crates.mk -# Various bits of setup, common macros, and top-level rules -include $(CFG_SRC_DIR)mk/main.mk -# C and assembly components that are not LLVM -include $(CFG_SRC_DIR)mk/rt.mk -# Rules for crates in the target directories -include $(CFG_SRC_DIR)mk/target.mk -# Rules for crates in the host directories -include $(CFG_SRC_DIR)mk/host.mk -# Special rules for bootstrapping stage0 -include $(CFG_SRC_DIR)mk/stage0.mk -# Rust-specific LLVM extensions -include $(CFG_SRC_DIR)mk/rustllvm.mk -# Documentation -include $(CFG_SRC_DIR)mk/docs.mk -# LLVM -include $(CFG_SRC_DIR)mk/llvm.mk -# Rules for installing debugger scripts -include $(CFG_SRC_DIR)mk/debuggers.mk - -###################################################################### -# Secondary makefiles, conditionalized for speed -###################################################################### - -# The test suite -ifneq ($(strip $(findstring check,$(MAKECMDGOALS)) \ - $(findstring test,$(MAKECMDGOALS)) \ - $(findstring tidy,$(MAKECMDGOALS))),) - CFG_INFO := $(info cfg: including test rules) - include $(CFG_SRC_DIR)mk/tests.mk - include $(CFG_SRC_DIR)mk/grammar.mk -endif - -# Copy all the distributables to another directory for binary install -ifneq ($(strip $(findstring prepare,$(MAKECMDGOALS)) \ - $(findstring dist,$(MAKECMDGOALS)) \ - $(findstring install,$(MAKECMDGOALS))),) - CFG_INFO := $(info cfg: including prepare rules) - include $(CFG_SRC_DIR)mk/prepare.mk -endif - -# Source and binary distribution artifacts -ifneq ($(strip $(findstring dist,$(MAKECMDGOALS)) \ - $(findstring install,$(MAKECMDGOALS)) \ - $(findstring clean,$(MAKECMDGOALS))),) - CFG_INFO := $(info cfg: including dist rules) - include $(CFG_SRC_DIR)mk/dist.mk -endif - -# (Unix) Installation from the build directory -ifneq ($(findstring install,$(MAKECMDGOALS)),) - CFG_INFO := $(info cfg: including install rules) - include $(CFG_SRC_DIR)mk/install.mk -endif - -# Cleaning -ifneq ($(findstring clean,$(MAKECMDGOALS)),) - CFG_INFO := $(info cfg: including clean rules) - include $(CFG_SRC_DIR)mk/clean.mk -endif - -# CTAGS building -ifneq ($(strip $(findstring TAGS.emacs,$(MAKECMDGOALS)) \ - $(findstring TAGS.vi,$(MAKECMDGOALS)) \ - $(findstring TAGS.rustc.emacs,$(MAKECMDGOALS)) \ - $(findstring TAGS.rustc.vi,$(MAKECMDGOALS))),) - CFG_INFO := $(info cfg: including ctags rules) - include $(CFG_SRC_DIR)mk/ctags.mk -endif - -.DEFAULT: - @echo - @echo "======================================================" - @echo "== If you need help, run 'make help' or 'make tips' ==" - @echo "======================================================" - @echo - exit 1 diff --git a/appveyor.yml b/appveyor.yml index c617ac8a4e342..2183d8da95f89 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,11 +15,6 @@ environment: SCRIPT: python x.py test --host i686-pc-windows-msvc --target i686-pc-windows-msvc && python x.py dist DEPLOY: 1 - # MSVC makefiles - - MSYS_BITS: 64 - RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --disable-rustbuild - RUST_CHECK_TARGET: check - # MSVC cargotest - MSYS_BITS: 64 NO_VENDOR: 1 @@ -58,13 +53,6 @@ environment: MINGW_DIR: mingw32 DEPLOY: 1 - - MSYS_BITS: 32 - RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu --disable-rustbuild - RUST_CHECK_TARGET: check - MINGW_URL: https://s3.amazonaws.com/rust-lang-ci - MINGW_ARCHIVE: i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z - MINGW_DIR: mingw32 - - MSYS_BITS: 64 SCRIPT: python x.py test && python x.py dist RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu --enable-extended diff --git a/configure b/configure index 4ce80a5e84919..597f007633640 100755 --- a/configure +++ b/configure @@ -684,6 +684,7 @@ valopt musl-root-arm "" "arm-unknown-linux-musleabi install directory" valopt musl-root-armhf "" "arm-unknown-linux-musleabihf install directory" valopt musl-root-armv7 "" "armv7-unknown-linux-musleabihf install directory" valopt extra-filename "" "Additional data that is hashed and passed to the -C extra-filename flag" +valopt qemu-armhf-rootfs "" "rootfs in qemu testing, you probably don't want to use this" if [ -e ${CFG_SRC_DIR}.git ] then @@ -993,191 +994,12 @@ then putvar CFG_LOCAL_RUST_ROOT fi -# Force bitrig to build with clang; gcc doesn't like us there -if [ $CFG_OSTYPE = unknown-bitrig ] -then - step_msg "on Bitrig, forcing use of clang" - CFG_ENABLE_CLANG=1 -fi - -# default gcc version under OpenBSD maybe too old, try using egcc, which is a -# gcc version from ports -if [ $CFG_OSTYPE = unknown-openbsd ] -then - if [ $("$CFG_GCC" --version 2>&1 | grep -c ' 4\.[0-6]') -ne 0 ]; then - step_msg "older GCC found, try with egcc instead" - - # probe again but using egcc - probe CFG_GCC egcc - - # and use egcc/eg++ for CC/CXX too if it was found - # (but user setting has priority) - if [ -n "$CFG_GCC" ]; then - CC="${CC:-egcc}" - CXX="${CXX:-eg++}" - fi - fi -fi - -# OS X 10.9, gcc is actually clang. This can cause some confusion in the build -# system, so if we find that gcc is clang, we should just use clang directly. -if [ $CFG_OSTYPE = apple-darwin -a -z "$CFG_ENABLE_CLANG" ] -then - CFG_OSX_GCC_VERSION=$("$CFG_GCC" --version 2>&1 | grep "Apple LLVM version") - if [ $? -eq 0 ] - then - step_msg "on OS X >=10.9, forcing use of clang" - CFG_ENABLE_CLANG=1 - else - if [ $("$CFG_GCC" --version 2>&1 | grep -c ' 4\.[0-6]') -ne 0 ]; then - step_msg "older GCC found, using clang instead" - CFG_ENABLE_CLANG=1 - else - # on OS X, with xcode 5 and newer, certain developers may have - # cc, gcc and g++ point to a mixture of clang and gcc - # if so, this will create very strange build errors - # this last stanza is to detect some such problems and save the future rust - # contributor some time solving that issue. - # this detection could be generalized to other OSes aside from OS X - # but the issue seems most likely to happen on OS X - - chk_cc () { - $1 --version 2> /dev/null | grep -q $2 - } - # check that gcc, cc and g++ all point to the same compiler. - # note that for xcode 5, g++ points to clang, not clang++ - if !((chk_cc gcc clang && chk_cc g++ clang) || - (chk_cc gcc gcc &&( chk_cc g++ g++ || chk g++ gcc))); then - err "the gcc and g++ in your path point to different compilers. - Check which versions are in your path with gcc --version and g++ --version. - To resolve this problem, either fix your PATH or run configure with --enable-clang" - fi - - fi - fi -fi - -# If the clang isn't already enabled, check for GCC, and if it is missing, turn -# on clang as a backup. -if [ -z "$CFG_ENABLE_CLANG" ] -then - CFG_GCC_VERSION=$("$CFG_GCC" --version 2>&1) - if [ $? -ne 0 ] - then - step_msg "GCC not installed, will try using Clang" - CFG_ENABLE_CLANG=1 - fi -fi - -# Okay, at this point, we have made up our minds about whether we are -# going to force CFG_ENABLE_CLANG or not; save the setting if so. -if [ -n "$CFG_ENABLE_CLANG" ] -then - putvar CFG_ENABLE_CLANG -fi - -if [ -z "$CFG_DISABLE_LIBCPP" -a -n "$CFG_ENABLE_CLANG" ] -then - CFG_USING_LIBCPP="1" -else - CFG_USING_LIBCPP="0" -fi - # Same with jemalloc. save the setting here. if [ -n "$CFG_DISABLE_JEMALLOC" ] then putvar CFG_DISABLE_JEMALLOC fi -if [ -n "$CFG_LLVM_ROOT" -a -z "$CFG_DISABLE_LLVM_VERSION_CHECK" -a -e "$CFG_LLVM_ROOT/bin/llvm-config" ] -then - step_msg "using custom LLVM at $CFG_LLVM_ROOT" - - LLVM_CONFIG="$CFG_LLVM_ROOT/bin/llvm-config" - LLVM_VERSION=$($LLVM_CONFIG --version) - - case $LLVM_VERSION in - (3.[7-9]*) - msg "found ok version of LLVM: $LLVM_VERSION" - ;; - (*) - err "bad LLVM version: $LLVM_VERSION, need >=3.7" - ;; - esac - - if "$CFG_LLVM_ROOT/bin/llvm-mc" -help | grep -- "-relocation-model"; then - msg "found older llvm-mc" - CFG_LLVM_MC_HAS_RELOCATION_MODEL=1 - putvar CFG_LLVM_MC_HAS_RELOCATION_MODEL - fi -fi - -# Even when the user overrides the choice of CC, still try to detect -# clang to disable some clang-specific warnings. We here draw a -# distinction between: -# -# CFG_ENABLE_CLANG : passed --enable-clang, or host "requires" clang, -# CFG_USING_CLANG : compiler (clang / gcc / $CC) looks like clang. -# -# This distinction is important because there are some safeguards we -# would prefer to skip when merely CFG_USING_CLANG is set; but when -# CFG_ENABLE_CLANG is set, that indicates that we are opting into -# running such safeguards. - -if [ -n "$CC" ] -then - msg "skipping compiler inference steps; using provided CC=$CC" - CFG_CC="$CC" - - CFG_OSX_CC_VERSION=$("$CFG_CC" --version 2>&1 | grep "clang") - if [ $? -eq 0 ] - then - step_msg "note, user-provided CC looks like clang; CC=$CC." - CFG_USING_CLANG=1 - putvar CFG_USING_CLANG - fi -else - if [ -n "$CFG_ENABLE_CLANG" ] - then - if [ -z "$CFG_CLANG" ] - then - err "clang requested but not found" - fi - CFG_CC="$CFG_CLANG" - CFG_USING_CLANG=1 - putvar CFG_USING_CLANG - else - CFG_CC="gcc" - fi -fi - -if [ -n "$CFG_ENABLE_CLANG" ] -then - case "$CC" in - (''|*clang) - if [ -z "$CC" ] - then - CFG_CC="clang" - CFG_CXX="clang++" - fi - esac -fi - -if [ -n "$CFG_ENABLE_CCACHE" ] -then - if [ -z "$CFG_CCACHE" ] - then - err "ccache requested but not found" - fi - - CFG_CC="ccache $CFG_CC" -fi - -if [ -z "$CC" -a -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ] -then - err "either clang or gcc is required" -fi - # All safeguards based on $CFG_ENABLE_CLANG should occur before this # point in the script; after this point, script logic should inspect # $CFG_USING_CLANG rather than $CFG_ENABLE_CLANG. @@ -1190,12 +1012,6 @@ envopt CFLAGS envopt CXXFLAGS envopt LDFLAGS -# stdc++ name in use -# used to manage non-standard name (on OpenBSD for example) -program_transform_name=$($CFG_CC -v 2>&1 | sed -n "s/.*--program-transform-name='\([^']*\)'.*/\1/p") -CFG_STDCPP_NAME=$(echo "stdc++" | sed "${program_transform_name}") -putvar CFG_STDCPP_NAME - # a little post-processing of various config values CFG_PREFIX=${CFG_PREFIX%/} CFG_MANDIR=${CFG_MANDIR%/} @@ -1223,651 +1039,6 @@ do done CFG_TARGET=$V_TEMP -# check target-specific tool-chains -for i in $CFG_TARGET -do - L_CHECK=false - for j in $CFG_SUPPORTED_TARGET - do - if [ $i = $j ] - then - L_CHECK=true - fi - done - - if [ $L_CHECK = false ] - then - err "unsupported target triples \"$i\" found" - fi - - case $i in - *android*) - case $i in - armv7-linux-androideabi) - cmd_prefix="arm-linux-androideabi" - ;; - *) - cmd_prefix=$i - ;; - esac - - upper_snake_target=$(echo "$i" | tr '[:lower:]' '[:upper:]' | tr '\-' '\_') - eval ndk=\$"CFG_${upper_snake_target}_NDK" - if [ -z "$ndk" ] - then - ndk=$CFG_ANDROID_CROSS_PATH - eval "CFG_${upper_snake_target}_NDK"=$CFG_ANDROID_CROSS_PATH - warn "generic/default Android NDK option is deprecated (use --$i-ndk option instead)" - fi - - # Perform a basic sanity check of the NDK - for android_ndk_tool in "$ndk/bin/$cmd_prefix-gcc" "$ndk/bin/$cmd_prefix-g++" "$ndk/bin/$cmd_prefix-ar" - do - if [ ! -f $android_ndk_tool ] - then - err "NDK tool $android_ndk_tool not found (bad or missing --$i-ndk option?)" - fi - done - ;; - *-unknown-nacl) - if [ -z "$CFG_NACL_CROSS_PATH" ] - then - err "I need the NaCl SDK path! (use --nacl-cross-path)" - fi - ;; - arm-apple-darwin) - if [ $CFG_OSTYPE != apple-darwin ] - then - err "The iOS target is only supported on Mac OS X" - fi - ;; - - *-msvc) - # There are three builds of cmake on windows: MSVC, MinGW and Cygwin - # The Cygwin build does not have generators for Visual Studio, so - # detect that here and error. - if ! "$CFG_CMAKE" --help | sed -n '/^Generators/,$p' | grep 'Visual Studio' > /dev/null - then - err " - -cmake does not support Visual Studio generators. - -This is likely due to it being an msys/cygwin build of cmake, \ -rather than the required windows version, built using MinGW \ -or Visual Studio. - -If you are building under msys2 try installing the mingw-w64-x86_64-cmake \ -package instead of cmake: - -$ pacman -R cmake && pacman -S mingw-w64-x86_64-cmake -" - fi - - # Use the REG program to figure out where VS is installed - # We need to figure out where cl.exe and link.exe are, so we do some - # munging and some probing here. We also look for the default - # INCLUDE and LIB variables for MSVC so we can set those in the - # build system as well. - install=$(cmd //c reg QUERY \ - 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0' \ - -v InstallDir) - if [ -z "$install" ]; then - install=$(cmd //c reg QUERY \ - 'HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\12.0' \ - -v InstallDir) - fi - need_ok "couldn't find visual studio install root" - CFG_MSVC_ROOT=$(echo "$install" | grep InstallDir | sed 's/.*REG_SZ[ ]*//') - CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT") - CFG_MSVC_ROOT=$(dirname "$CFG_MSVC_ROOT") - putvar CFG_MSVC_ROOT - - case $i in - x86_64-*) - bits=x86_64 - msvc_part=amd64 - ;; - i*86-*) - bits=i386 - msvc_part= - ;; - *) - err "can only target x86 targets for MSVC" - ;; - esac - bindir="${CFG_MSVC_ROOT}/VC/bin" - if [ -n "$msvc_part" ]; then - bindir="$bindir/$msvc_part" - fi - eval CFG_MSVC_BINDIR_$bits="\"$bindir\"" - eval CFG_MSVC_CL_$bits="\"$bindir/cl.exe\"" - eval CFG_MSVC_LIB_$bits="\"$bindir/lib.exe\"" - eval CFG_MSVC_LINK_$bits="\"$bindir/link.exe\"" - - vcvarsall="${CFG_MSVC_ROOT}/VC/vcvarsall.bat" - include_path=$(cmd //V:ON //c "$vcvarsall" $msvc_part \& echo !INCLUDE!) - need_ok "failed to learn about MSVC's INCLUDE" - lib_path=$(cmd //V:ON //c "$vcvarsall" $msvc_part \& echo !LIB!) - need_ok "failed to learn about MSVC's LIB" - - eval CFG_MSVC_INCLUDE_PATH_${bits}="\"$include_path\"" - eval CFG_MSVC_LIB_PATH_${bits}="\"$lib_path\"" - - putvar CFG_MSVC_BINDIR_${bits} - putvar CFG_MSVC_CL_${bits} - putvar CFG_MSVC_LIB_${bits} - putvar CFG_MSVC_LINK_${bits} - putvar CFG_MSVC_INCLUDE_PATH_${bits} - putvar CFG_MSVC_LIB_PATH_${bits} - ;; - - *) - ;; - esac -done - -if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] -then - # There are some MSYS python builds which will auto-translate - # windows-style paths to MSYS-style paths in Python itself. - # Unfortunately this breaks LLVM's build system as somewhere along - # the line LLVM prints a path into a file from Python and then CMake - # later tries to interpret that path. If Python prints a MSYS path - # and CMake tries to use it as a Windows path, you're gonna have a - # Bad Time. - # - # Consequently here we try to detect when that happens and print an - # error if it does. - if $CFG_PYTHON -c 'import sys; print sys.argv[1]' `pwd` | grep '^/' > /dev/null - then - err " - -python is silently translating windows paths to MSYS paths \ -and the build will fail if this python is used. - -Either an official python install must be used or an \ -alternative python package in MinGW must be used. - -If you are building under msys2 try installing the mingw-w64-x86_64-python2 \ -package instead of python2: - -$ pacman -S mingw-w64-x86_64-python2 -" - fi -fi - -if [ -n "$CFG_PERF" ] -then - HAVE_PERF_LOGFD=`$CFG_PERF stat --log-fd 2>&1 | grep 'unknown option'` - if [ -z "$HAVE_PERF_LOGFD" ]; - then - CFG_PERF_WITH_LOGFD=1 - putvar CFG_PERF_WITH_LOGFD - fi -fi - -if [ -n "$CFG_DISABLE_RUSTBUILD" ]; then - - step_msg "making directories" - - for i in \ - doc doc/std doc/extra \ - dl tmp dist - do - make_dir $i - done - - for t in $CFG_HOST - do - make_dir $t/llvm - done - - for t in $CFG_HOST - do - make_dir $t/rustllvm - done - - for t in $CFG_TARGET - do - make_dir $t/rt - for s in 0 1 2 3 - do - make_dir $t/rt/stage$s - make_dir $t/rt/jemalloc - make_dir $t/rt/compiler-rt - for i in \ - isaac sync test \ - arch/i386 arch/x86_64 arch/arm arch/aarch64 arch/mips arch/powerpc - do - make_dir $t/rt/stage$s/$i - done - done - done - - for h in $CFG_HOST - do - for t in $CFG_TARGET - do - # host bin dir stage0 - make_dir $h/stage0/bin - - # host lib dir stage0 - make_dir $h/stage0/lib - - # host test dir stage0 - make_dir $h/stage0/test - - # target bin dir stage0 - make_dir $h/stage0/lib/rustlib/$t/bin - - # target lib dir stage0 - make_dir $h/stage0/lib/rustlib/$t/lib - - for i in 1 2 3 - do - # host bin dir - make_dir $h/stage$i/bin - - # host lib dir - make_dir $h/stage$i/$CFG_LIBDIR_RELATIVE - - # host test dir - make_dir $h/stage$i/test - - # target bin dir - make_dir $h/stage$i/$CFG_LIBDIR_RELATIVE/rustlib/$t/bin - - # target lib dir - make_dir $h/stage$i/$CFG_LIBDIR_RELATIVE/rustlib/$t/lib - done - done - - make_dir $h/test/run-pass - make_dir $h/test/run-pass-valgrind - make_dir $h/test/run-pass-fulldeps - make_dir $h/test/run-fail - make_dir $h/test/run-fail-fulldeps - make_dir $h/test/compile-fail - make_dir $h/test/parse-fail - make_dir $h/test/compile-fail-fulldeps - make_dir $h/test/bench - make_dir $h/test/perf - make_dir $h/test/pretty - make_dir $h/test/debuginfo-gdb - make_dir $h/test/debuginfo-lldb - make_dir $h/test/codegen - make_dir $h/test/codegen-units - make_dir $h/test/rustdoc - done - -fi - -# Configure submodules -step_msg "configuring submodules" - -# Have to be in the top of src directory for this -if [ -z "$CFG_DISABLE_MANAGE_SUBMODULES" ] && [ -n "$CFG_DISABLE_RUSTBUILD" ] -then - cd ${CFG_SRC_DIR} - - msg "git: submodule sync" - "${CFG_GIT}" submodule sync - - msg "git: submodule init" - "${CFG_GIT}" submodule init - - # Disable submodules that we're not using - if [ -n "${CFG_LLVM_ROOT}" ]; then - msg "git: submodule deinit src/llvm" - "${CFG_GIT}" submodule deinit src/llvm - fi - if [ -n "${CFG_JEMALLOC_ROOT}" ]; then - msg "git: submodule deinit src/jemalloc" - "${CFG_GIT}" submodule deinit src/jemalloc - fi - - msg "git: submodule update" - "${CFG_GIT}" submodule update - need_ok "git failed" - - msg "git: submodule foreach sync" - "${CFG_GIT}" submodule foreach --recursive 'if test -e .gitmodules; then git submodule sync; fi' - need_ok "git failed" - - msg "git: submodule foreach update" - "${CFG_GIT}" submodule update --recursive - need_ok "git failed" - - # NB: this is just for the sake of getting the submodule SHA1 values - # and status written into the build log. - msg "git: submodule status" - "${CFG_GIT}" submodule status --recursive - - msg "git: submodule clobber" - "${CFG_GIT}" submodule foreach --recursive git clean -dxf - need_ok "git failed" - "${CFG_GIT}" submodule foreach --recursive git checkout . - need_ok "git failed" - - cd ${CFG_BUILD_DIR} -fi - -# Do a sanity check that the submodule source exists. Because GitHub -# automatically publishes broken tarballs that can't be disabled, and -# people download them and try to use them. -if [ ! -e "${CFG_SRC_DIR}/src/liblibc" ]; then - err "some submodules are missing. Is this a broken tarball? - -If you downloaded this tarball from the GitHub release pages at -https://github.com/rust-lang/rust/releases, -then please delete it and instead download the source from -https://www.rust-lang.org/downloads.html" - -fi - -# Configure llvm, only if necessary -step_msg "looking at LLVM" -CFG_LLVM_SRC_DIR=${CFG_SRC_DIR}src/llvm/ -for t in $CFG_HOST -do - do_reconfigure=1 - is_msvc=0 - case "$t" in - (*-msvc) - is_msvc=1 - ;; - esac - - if [ -z "$CFG_DISABLE_RUSTBUILD" ] - then - msg "not configuring LLVM, rustbuild in use" - do_reconfigure=0 - elif [ -z "$CFG_LLVM_ROOT" ] - then - LLVM_BUILD_DIR=${CFG_BUILD_DIR}$t/llvm - LLVM_INST_DIR=$LLVM_BUILD_DIR - # For some weird reason the MSVC output dir is different than Unix - if [ ${is_msvc} -ne 0 ]; then - if [ -n "$CFG_DISABLE_OPTIMIZE_LLVM" ] - then - # Just use LLVM straight from its build directory to - # avoid 'make install' time - LLVM_INST_DIR=$LLVM_BUILD_DIR/Debug - else - LLVM_INST_DIR=$LLVM_BUILD_DIR/Release - fi - fi - else - msg "not reconfiguring LLVM, external LLVM root" - # The user is using their own LLVM - LLVM_BUILD_DIR= - LLVM_INST_DIR=$CFG_LLVM_ROOT - do_reconfigure=0 - # Check that LLVm FileCheck is available. Needed for the tests - if [ -z "$CFG_DISABLE_CODEGEN_TESTS" ]; then - need_cmd $LLVM_INST_DIR/bin/FileCheck - fi - fi - - if [ ${do_reconfigure} -ne 0 ] - then - # because git is hilarious, it might have put the module index - # in a couple places. - index1="${CFG_SRC_DIR}.git/modules/src/llvm/index" - index2="${CFG_SRC_DIR}src/llvm/.git/index" - for index in ${index1} ${index2} - do - config_status="${LLVM_BUILD_DIR}/config.status" - if test -e ${index} -a \ - -e ${config_status} -a \ - ${config_status} -nt ${index} - then - msg "not reconfiguring LLVM, config.status is fresh" - do_reconfigure=0 - fi - done - fi - - # We need the generator later on for compiler-rt even if LLVM's not built - if [ -n "$CFG_NINJA" ] - then - generator="Ninja" - elif [ ${is_msvc} -ne 0 ] - then - case "$CFG_MSVC_ROOT" in - *14.0*) - generator="Visual Studio 14 2015" - ;; - *12.0*) - generator="Visual Studio 12 2013" - ;; - *) - err "can't determine generator for LLVM cmake" - ;; - esac - case "$t" in - x86_64-*) - generator="$generator Win64" - ;; - i686-*) - ;; - *) - err "can only build LLVM for x86 platforms" - ;; - esac - else - generator="Unix Makefiles" - fi - CFG_CMAKE_GENERATOR=$generator - putvar CFG_CMAKE_GENERATOR - - msg "configuring LLVM for $t" - - LLVM_CFLAGS_32="" - LLVM_CXXFLAGS_32="" - LLVM_LDFLAGS_32="" - LLVM_CFLAGS_64="" - LLVM_CXXFLAGS_64="" - LLVM_LDFLAGS_64="" - - case "$CFG_CC" in - ("ccache clang") - LLVM_CXX_32="ccache" - LLVM_CC_32="ccache" - LLVM_CXX_32_ARG1="clang++" - LLVM_CC_32_ARG1="clang" - LLVM_CFLAGS_32="-Qunused-arguments" - LLVM_CXXFLAGS_32="-Qunused-arguments" - - LLVM_CXX_64="ccache" - LLVM_CC_64="ccache" - LLVM_CXX_64_ARG1="clang++" - LLVM_CC_64_ARG1="clang" - LLVM_CFLAGS_64="-Qunused-arguments" - LLVM_CXXFLAGS_64="-Qunused-arguments" - ;; - ("clang") - LLVM_CXX_32="clang++" - LLVM_CC_32="clang" - LLVM_CFLAGS_32="-Qunused-arguments" - LLVM_CXXFLAGS_32="-Qunused-arguments" - - LLVM_CXX_64="clang++" - LLVM_CC_64="clang" - LLVM_CFLAGS_64="-Qunused-arguments" - LLVM_CXXFLAGS_64="-Qunused-arguments" - ;; - ("ccache gcc") - LLVM_CXX_32="ccache" - LLVM_CC_32="ccache" - LLVM_CXX_32_ARG1="g++" - LLVM_CC_32_ARG1="gcc" - - LLVM_CXX_64="ccache" - LLVM_CC_64="ccache" - LLVM_CXX_64_ARG1="g++" - LLVM_CC_64_ARG1="gcc" - ;; - ("gcc") - if [ -z "$CFG_ENABLE_SCCACHE" ]; then - LLVM_CXX_32="g++" - LLVM_CC_32="gcc" - - LLVM_CXX_64="g++" - LLVM_CC_64="gcc" - else - LLVM_CXX_32="sccache" - LLVM_CC_32="sccache" - LLVM_CXX_32_ARG1="g++" - LLVM_CC_32_ARG1="gcc" - - LLVM_CXX_64="sccache" - LLVM_CC_64="sccache" - LLVM_CXX_64_ARG1="g++" - LLVM_CC_64_ARG1="gcc" - fi - ;; - - (*) - msg "inferring LLVM_CXX/CC from CXX/CC = $CXX/$CC" - if [ -n "$CFG_ENABLE_CCACHE" ] - then - if [ -z "$CFG_CCACHE" ] - then - err "ccache requested but not found" - fi - - LLVM_CXX_32="ccache" - LLVM_CC_32="ccache" - LLVM_CXX_32_ARG1="$CXX" - LLVM_CC_32_ARG1="$CC" - - LLVM_CXX_64="ccache" - LLVM_CC_64="ccache" - LLVM_CXX_64_ARG1="$CXX" - LLVM_CC_64_ARG1="$CC" - else - LLVM_CXX_32="$CXX" - LLVM_CC_32="$CC" - - LLVM_CXX_64="$CXX" - LLVM_CC_64="$CC" - fi - - ;; - esac - - case "$CFG_CPUTYPE" in - (x86*) - LLVM_CFLAGS_32="$LLVM_CFLAGS_32 -m32" - LLVM_CXXFLAGS_32="$LLVM_CXXFLAGS_32 -m32" - LLVM_LDFLAGS_32="$LLVM_LDFLAGS_32 -m32" - ;; - esac - - if echo $t | grep -q x86_64 - then - LLVM_CXX=$LLVM_CXX_64 - LLVM_CC=$LLVM_CC_64 - LLVM_CXX_ARG1=$LLVM_CXX_64_ARG1 - LLVM_CC_ARG1=$LLVM_CC_64_ARG1 - LLVM_CFLAGS=$LLVM_CFLAGS_64 - LLVM_CXXFLAGS=$LLVM_CXXFLAGS_64 - LLVM_LDFLAGS=$LLVM_LDFLAGS_64 - else - LLVM_CXX=$LLVM_CXX_32 - LLVM_CC=$LLVM_CC_32 - LLVM_CXX_ARG1=$LLVM_CXX_32_ARG1 - LLVM_CC_ARG1=$LLVM_CC_32_ARG1 - LLVM_CFLAGS=$LLVM_CFLAGS_32 - LLVM_CXXFLAGS=$LLVM_CXXFLAGS_32 - LLVM_LDFLAGS=$LLVM_LDFLAGS_32 - fi - - if [ "$CFG_USING_LIBCPP" != "0" ]; then - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_LIBCXX=ON" - fi - - # Turn off things we don't need - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_INCLUDE_TESTS=OFF" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_INCLUDE_EXAMPLES=OFF" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_INCLUDE_DOCS=OFF" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_ZLIB=OFF" - CMAKE_ARGS="$CMAKE_ARGS -DWITH_POLY=OFF" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_TERMINFO=OFF" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_LIBEDIT=OFF" - - arch="$(echo "$t" | cut -d - -f 1)" - - if [ "$arch" = i686 ]; then - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_BUILD_32_BITS=ON" - fi - - if [ "$t" != "$CFG_BUILD" ]; then - # see http://llvm.org/docs/HowToCrossCompileLLVM.html - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CROSSCOMPILING=True" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_TARGET_ARCH=$arch" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_TABLEGEN=$CFG_BUILD_DIR/$CFG_BUILD/llvm/bin/llvm-tblgen" - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_DEFAULT_TARGET_TRIPLE=$t" - fi - - # MSVC handles compiler business itself - if [ ${is_msvc} -eq 0 ]; then - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER=$LLVM_CC" - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_COMPILER=$LLVM_CXX" - CMAKE_ARGS="$CMAKE_ARGS '-DCMAKE_C_FLAGS=$LLVM_CFLAGS'" - CMAKE_ARGS="$CMAKE_ARGS '-DCMAKE_CXX_FLAGS=$LLVM_CXXFLAGS'" - if [ -n "$LLVM_CC_ARG1" ]; then - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_C_COMPILER_ARG1=$LLVM_CC_ARG1" - fi - if [ -n "$LLVM_CXX_ARG1" ]; then - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_CXX_COMPILER_ARG1=$LLVM_CXX_ARG1" - fi - # FIXME: What about LDFLAGS? - fi - - if [ -n "$CFG_DISABLE_OPTIMIZE_LLVM" ]; then - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_BUILD_TYPE=Debug" - elif [ -n "$CFG_ENABLE_LLVM_RELEASE_DEBUGINFO" ]; then - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_BUILD_TYPE=RelWithDebInfo" - else - CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release" - fi - if [ -z "$CFG_ENABLE_LLVM_ASSERTIONS" ] - then - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_ASSERTIONS=OFF" - else - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_ENABLE_ASSERTIONS=ON" - fi - - CMAKE_ARGS="$CMAKE_ARGS -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc'" - CMAKE_ARGS="$CMAKE_ARGS -G '$CFG_CMAKE_GENERATOR'" - CMAKE_ARGS="$CMAKE_ARGS $CFG_LLVM_SRC_DIR" - - if [ ${do_reconfigure} -ne 0 ] - then - msg "configuring LLVM for $t with cmake" - - msg "configuring LLVM with:" - msg "$CMAKE_ARGS" - - (cd $LLVM_BUILD_DIR && eval "\"$CFG_CMAKE\"" $CMAKE_ARGS) - need_ok "LLVM cmake configure failed" - fi - - # Construct variables for LLVM build and install directories for - # each target. These will be named - # CFG_LLVM_BUILD_DIR_${target_triple} but all the hyphens in - # target_triple will be converted to underscore, because bash - # variables can't contain hyphens. The makefile will then have to - # convert back. - CFG_LLVM_BUILD_DIR=$(echo CFG_LLVM_BUILD_DIR_${t} | tr - _) - CFG_LLVM_INST_DIR=$(echo CFG_LLVM_INST_DIR_${t} | tr - _) - eval ${CFG_LLVM_BUILD_DIR}="'$LLVM_BUILD_DIR'" - eval ${CFG_LLVM_INST_DIR}="'$LLVM_INST_DIR'" -done - - step_msg "writing configuration" putvar CFG_SRC_DIR @@ -1915,15 +1086,8 @@ do putvar $CFG_LLVM_INST_DIR done -if [ -z "$CFG_DISABLE_RUSTBUILD" ] -then - INPUT_MAKEFILE=src/bootstrap/mk/Makefile.in -else - INPUT_MAKEFILE=Makefile.in -fi - msg -copy_if_changed ${CFG_SRC_DIR}${INPUT_MAKEFILE} ./Makefile +copy_if_changed ${CFG_SRC_DIR}src/bootstrap/mk/Makefile.in ./Makefile move_if_changed config.tmp config.mk rm -f config.tmp touch config.stamp @@ -1940,22 +1104,5 @@ else X_PY=${CFG_SRC_DIR_RELATIVE}x.py fi -if [ -z "$CFG_DISABLE_RUSTBUILD" ]; then - msg "NOTE you have now configured rust to use a rewritten build system" - msg " called rustbuild, and as a result this may have bugs that " - msg " you did not see before. If you experience any issues you can" - msg " go back to the old build system with --disable-rustbuild and" - msg " please feel free to report any bugs!" - msg "" - msg "run \`python ${X_PY} --help\`" -else - warn "the makefile-based build system is deprecated in favor of rustbuild" - msg "" - msg "It is recommended you avoid passing --disable-rustbuild to get your" - msg "build working as the makefiles will be deleted on 2017-02-02. If you" - msg "encounter bugs with rustbuild please file issues against rust-lang/rust" - msg "" - msg "run \`make help\`" -fi - +msg "run \`python ${X_PY} --help\`" msg diff --git a/mk/cfg/aarch64-apple-ios.mk b/mk/cfg/aarch64-apple-ios.mk deleted file mode 100644 index 5d822f1b1aba6..0000000000000 --- a/mk/cfg/aarch64-apple-ios.mk +++ /dev/null @@ -1,33 +0,0 @@ -# aarch64-apple-ios configuration -CFG_SDK_NAME_aarch64-apple-ios := iphoneos -CFG_SDK_ARCHS_aarch64-apple-ios := arm64 -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) -CFG_IOS_SDK_aarch64-apple-ios := $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null) -CFG_IOS_SDK_FLAGS_aarch64-apple-ios := -target aarch64-apple-darwin -isysroot $(CFG_IOS_SDK_aarch64-apple-ios) -mios-version-min=7.0 -arch arm64 -CC_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang) -LINK_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang) -CXX_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang++) -CPP_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos clang++) -AR_aarch64-apple-ios = $(shell xcrun -find -sdk iphoneos ar) -endif -CFG_LIB_NAME_aarch64-apple-ios = lib$(1).a -CFG_LIB_GLOB_aarch64-apple-ios = lib$(1)-*.a -CFG_INSTALL_ONLY_RLIB_aarch64-apple-ios = 1 -CFG_STATIC_LIB_NAME_aarch64-apple-ios=lib$(1).a -CFG_LIB_DSYM_GLOB_aarch64-apple-ios = lib$(1)-*.a.dSYM -CFG_CFLAGS_aarch64-apple-ios := $(CFG_IOS_SDK_FLAGS_aarch64-apple-ios) -CFG_JEMALLOC_CFLAGS_aarch64-apple-ios := $(CFG_IOS_SDK_FLAGS_aarch64-apple-ios) -CFG_GCCISH_CFLAGS_aarch64-apple-ios := -fPIC $(CFG_IOS_SDK_FLAGS_aarch64-apple-ios) -CFG_GCCISH_CXXFLAGS_aarch64-apple-ios := -fno-rtti $(CFG_IOS_SDK_FLAGS_aarch64-apple-ios) -I$(CFG_IOS_SDK_aarch64-apple-ios)/usr/include/c++/4.2.1 -CFG_GCCISH_LINK_FLAGS_aarch64-apple-ios := -lpthread -syslibroot $(CFG_IOS_SDK_aarch64-apple-ios) -Wl,-no_compact_unwind -CFG_GCCISH_DEF_FLAG_aarch64-apple-ios := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_aarch64-apple-ios := -mattr=+neon,+cyclone,+fp-armv8 -CFG_INSTALL_NAME_aarch64-apple-ios = -Wl,-install_name,@rpath/$(1) -CFG_LIBUV_LINK_FLAGS_aarch64-apple-ios = -CFG_EXE_SUFFIX_aarch64-apple-ios := -CFG_WINDOWSY_aarch64-apple-ios := -CFG_UNIXY_aarch64-apple-ios := 1 -CFG_LDPATH_aarch64-apple-ios := -CFG_RUN_aarch64-apple-ios = $(2) -CFG_RUN_TARG_aarch64-apple-ios = $(call CFG_RUN_aarch64-apple-ios,,$(2)) -CFG_GNU_TRIPLE_aarch64-apple-ios := aarch64-apple-ios diff --git a/mk/cfg/aarch64-linux-android.mk b/mk/cfg/aarch64-linux-android.mk deleted file mode 100644 index 274f73834d42b..0000000000000 --- a/mk/cfg/aarch64-linux-android.mk +++ /dev/null @@ -1,26 +0,0 @@ -# aarch64-linux-android configuration -# CROSS_PREFIX_aarch64-linux-android- -CC_aarch64-linux-android=$(CFG_AARCH64_LINUX_ANDROID_NDK)/bin/aarch64-linux-android-gcc -CXX_aarch64-linux-android=$(CFG_AARCH64_LINUX_ANDROID_NDK)/bin/aarch64-linux-android-g++ -CPP_aarch64-linux-android=$(CFG_AARCH64_LINUX_ANDROID_NDK)/bin/aarch64-linux-android-gcc -E -AR_aarch64-linux-android=$(CFG_AARCH64_LINUX_ANDROID_NDK)/bin/aarch64-linux-android-ar -CFG_LIB_NAME_aarch64-linux-android=lib$(1).so -CFG_STATIC_LIB_NAME_aarch64-linux-android=lib$(1).a -CFG_LIB_GLOB_aarch64-linux-android=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_aarch64-linux-android=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_aarch64-linux-android := -D__aarch64__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CFLAGS_aarch64-linux-android := -Wall -g -fPIC -D__aarch64__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CXXFLAGS_aarch64-linux-android := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_aarch64-linux-android := -shared -fPIC -ldl -g -lm -lsupc++ -CFG_GCCISH_DEF_FLAG_aarch64-linux-android := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_aarch64-linux-android := -CFG_INSTALL_NAME_aarch64-linux-android = -CFG_EXE_SUFFIX_aarch64-linux-android := -CFG_WINDOWSY_aarch64-linux-android := -CFG_UNIXY_aarch64-linux-android := 1 -CFG_LDPATH_aarch64-linux-android := -CFG_RUN_aarch64-linux-android= -CFG_RUN_TARG_aarch64-linux-android= -RUSTC_FLAGS_aarch64-linux-android := -RUSTC_CROSS_FLAGS_aarch64-linux-android := -CFG_GNU_TRIPLE_aarch64-linux-android := aarch64-linux-android diff --git a/mk/cfg/aarch64-unknown-linux-gnu.mk b/mk/cfg/aarch64-unknown-linux-gnu.mk deleted file mode 100644 index 6637423e4951a..0000000000000 --- a/mk/cfg/aarch64-unknown-linux-gnu.mk +++ /dev/null @@ -1,26 +0,0 @@ -# aarch64-unknown-linux-gnu configuration -CROSS_PREFIX_aarch64-unknown-linux-gnu=aarch64-linux-gnu- -CC_aarch64-unknown-linux-gnu=gcc -CXX_aarch64-unknown-linux-gnu=g++ -CPP_aarch64-unknown-linux-gnu=gcc -E -AR_aarch64-unknown-linux-gnu=ar -CFG_LIB_NAME_aarch64-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_aarch64-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_aarch64-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_aarch64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_aarch64-unknown-linux-gnu := -D__aarch64__ $(CFLAGS) -CFG_GCCISH_CFLAGS_aarch64-unknown-linux-gnu := -Wall -g -fPIC -D__aarch64__ $(CFLAGS) -CFG_GCCISH_CXXFLAGS_aarch64-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_aarch64-unknown-linux-gnu := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_aarch64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_aarch64-unknown-linux-gnu := -CFG_INSTALL_NAME_aarch64-unknown-linux-gnu = -CFG_EXE_SUFFIX_aarch64-unknown-linux-gnu := -CFG_WINDOWSY_aarch64-unknown-linux-gnu := -CFG_UNIXY_aarch64-unknown-linux-gnu := 1 -CFG_LDPATH_aarch64-unknown-linux-gnu := -CFG_RUN_aarch64-unknown-linux-gnu=$(2) -CFG_RUN_TARG_aarch64-unknown-linux-gnu=$(call CFG_RUN_aarch64-unknown-linux-gnu,,$(2)) -RUSTC_FLAGS_aarch64-unknown-linux-gnu := -RUSTC_CROSS_FLAGS_aarch64-unknown-linux-gnu := -CFG_GNU_TRIPLE_aarch64-unknown-linux-gnu := aarch64-unknown-linux-gnu diff --git a/mk/cfg/arm-linux-androideabi.mk b/mk/cfg/arm-linux-androideabi.mk deleted file mode 100644 index c084954f2e9d0..0000000000000 --- a/mk/cfg/arm-linux-androideabi.mk +++ /dev/null @@ -1,25 +0,0 @@ -# arm-linux-androideabi configuration -CC_arm-linux-androideabi=$(CFG_ARM_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-gcc -CXX_arm-linux-androideabi=$(CFG_ARM_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-g++ -CPP_arm-linux-androideabi=$(CFG_ARM_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-gcc -E -AR_arm-linux-androideabi=$(CFG_ARM_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-ar -CFG_LIB_NAME_arm-linux-androideabi=lib$(1).so -CFG_STATIC_LIB_NAME_arm-linux-androideabi=lib$(1).a -CFG_LIB_GLOB_arm-linux-androideabi=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_arm-linux-androideabi=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_arm-linux-androideabi := -D__arm__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CFLAGS_arm-linux-androideabi := -Wall -g -fPIC -D__arm__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CXXFLAGS_arm-linux-androideabi := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_arm-linux-androideabi := -shared -fPIC -ldl -g -lm -lsupc++ -CFG_GCCISH_DEF_FLAG_arm-linux-androideabi := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_arm-linux-androideabi := -CFG_INSTALL_NAME_arm-linux-androideabi = -CFG_EXE_SUFFIX_arm-linux-androideabi := -CFG_WINDOWSY_arm-linux-androideabi := -CFG_UNIXY_arm-linux-androideabi := 1 -CFG_LDPATH_arm-linux-androideabi := -CFG_RUN_arm-linux-androideabi= -CFG_RUN_TARG_arm-linux-androideabi= -RUSTC_FLAGS_arm-linux-androideabi := -RUSTC_CROSS_FLAGS_arm-linux-androideabi := -CFG_GNU_TRIPLE_arm-linux-androideabi := arm-linux-androideabi diff --git a/mk/cfg/arm-unknown-linux-gnueabi.mk b/mk/cfg/arm-unknown-linux-gnueabi.mk deleted file mode 100644 index f66ad04eefe8e..0000000000000 --- a/mk/cfg/arm-unknown-linux-gnueabi.mk +++ /dev/null @@ -1,26 +0,0 @@ -# arm-unknown-linux-gnueabi configuration -CROSS_PREFIX_arm-unknown-linux-gnueabi=arm-linux-gnueabi- -CC_arm-unknown-linux-gnueabi=gcc -CXX_arm-unknown-linux-gnueabi=g++ -CPP_arm-unknown-linux-gnueabi=gcc -E -AR_arm-unknown-linux-gnueabi=ar -CFG_LIB_NAME_arm-unknown-linux-gnueabi=lib$(1).so -CFG_STATIC_LIB_NAME_arm-unknown-linux-gnueabi=lib$(1).a -CFG_LIB_GLOB_arm-unknown-linux-gnueabi=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabi=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_arm-unknown-linux-gnueabi := -D__arm__ -mfloat-abi=soft $(CFLAGS) -march=armv6 -marm -CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabi := -Wall -g -fPIC -D__arm__ -mfloat-abi=soft $(CFLAGS) -march=armv6 -marm -CFG_GCCISH_CXXFLAGS_arm-unknown-linux-gnueabi := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-gnueabi := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_arm-unknown-linux-gnueabi := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_arm-unknown-linux-gnueabi := -CFG_INSTALL_NAME_arm-unknown-linux-gnueabi = -CFG_EXE_SUFFIX_arm-unknown-linux-gnueabi := -CFG_WINDOWSY_arm-unknown-linux-gnueabi := -CFG_UNIXY_arm-unknown-linux-gnueabi := 1 -CFG_LDPATH_arm-unknown-linux-gnueabi := -CFG_RUN_arm-unknown-linux-gnueabi=$(2) -CFG_RUN_TARG_arm-unknown-linux-gnueabi=$(call CFG_RUN_arm-unknown-linux-gnueabi,,$(2)) -RUSTC_FLAGS_arm-unknown-linux-gnueabi := -RUSTC_CROSS_FLAGS_arm-unknown-linux-gnueabi := -CFG_GNU_TRIPLE_arm-unknown-linux-gnueabi := arm-unknown-linux-gnueabi diff --git a/mk/cfg/arm-unknown-linux-gnueabihf.mk b/mk/cfg/arm-unknown-linux-gnueabihf.mk deleted file mode 100644 index defe0dc3e70eb..0000000000000 --- a/mk/cfg/arm-unknown-linux-gnueabihf.mk +++ /dev/null @@ -1,26 +0,0 @@ -# arm-unknown-linux-gnueabihf configuration -CROSS_PREFIX_arm-unknown-linux-gnueabihf=arm-linux-gnueabihf- -CC_arm-unknown-linux-gnueabihf=gcc -CXX_arm-unknown-linux-gnueabihf=g++ -CPP_arm-unknown-linux-gnueabihf=gcc -E -AR_arm-unknown-linux-gnueabihf=ar -CFG_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).so -CFG_STATIC_LIB_NAME_arm-unknown-linux-gnueabihf=lib$(1).a -CFG_LIB_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_arm-unknown-linux-gnueabihf=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_arm-unknown-linux-gnueabihf := -D__arm__ $(CFLAGS) -march=armv6 -marm -CFG_GCCISH_CFLAGS_arm-unknown-linux-gnueabihf := -Wall -g -fPIC -D__arm__ $(CFLAGS) -march=armv6 -marm -CFG_GCCISH_CXXFLAGS_arm-unknown-linux-gnueabihf := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-gnueabihf := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_arm-unknown-linux-gnueabihf := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_arm-unknown-linux-gnueabihf := -CFG_INSTALL_NAME_ar,-unknown-linux-gnueabihf = -CFG_EXE_SUFFIX_arm-unknown-linux-gnueabihf := -CFG_WINDOWSY_arm-unknown-linux-gnueabihf := -CFG_UNIXY_arm-unknown-linux-gnueabihf := 1 -CFG_LDPATH_arm-unknown-linux-gnueabihf := -CFG_RUN_arm-unknown-linux-gnueabihf=$(2) -CFG_RUN_TARG_arm-unknown-linux-gnueabihf=$(call CFG_RUN_arm-unknown-linux-gnueabihf,,$(2)) -RUSTC_FLAGS_arm-unknown-linux-gnueabihf := -C target-feature=+v6,+vfp2 -RUSTC_CROSS_FLAGS_arm-unknown-linux-gnueabihf := -CFG_GNU_TRIPLE_arm-unknown-linux-gnueabihf := arm-unknown-linux-gnueabihf diff --git a/mk/cfg/arm-unknown-linux-musleabi.mk b/mk/cfg/arm-unknown-linux-musleabi.mk deleted file mode 100644 index 4d1438d592ece..0000000000000 --- a/mk/cfg/arm-unknown-linux-musleabi.mk +++ /dev/null @@ -1,26 +0,0 @@ -# arm-unknown-linux-musleabi configuration -CROSS_PREFIX_arm-unknown-linux-musleabi=arm-linux-musleabi- -CC_arm-unknown-linux-musleabi=gcc -CXX_arm-unknown-linux-musleabi=g++ -CPP_arm-unknown-linux-musleabi=gcc -E -AR_arm-unknown-linux-musleabi=ar -CFG_LIB_NAME_arm-unknown-linux-musleabi=lib$(1).so -CFG_STATIC_LIB_NAME_arm-unknown-linux-musleabi=lib$(1).a -CFG_LIB_GLOB_arm-unknown-linux-musleabi=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_arm-unknown-linux-musleabi=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_arm-unknown-linux-musleabi := -D__arm__ -mfloat-abi=soft $(CFLAGS) -march=armv6 -marm -CFG_GCCISH_CFLAGS_arm-unknown-linux-musleabi := -Wall -g -fPIC -D__arm__ -mfloat-abi=soft $(CFLAGS) -march=armv6 -marm -CFG_GCCISH_CXXFLAGS_arm-unknown-linux-musleabi := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-musleabi := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_arm-unknown-linux-musleabi := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_arm-unknown-linux-musleabi := -CFG_INSTALL_NAME_arm-unknown-linux-musleabi = -CFG_EXE_SUFFIX_arm-unknown-linux-musleabi := -CFG_WINDOWSY_arm-unknown-linux-musleabi := -CFG_UNIXY_arm-unknown-linux-musleabi := 1 -CFG_LDPATH_arm-unknown-linux-musleabi := -CFG_RUN_arm-unknown-linux-musleabi=$(2) -CFG_RUN_TARG_arm-unknown-linux-musleabi=$(call CFG_RUN_arm-unknown-linux-musleabi,,$(2)) -RUSTC_FLAGS_arm-unknown-linux-musleabi := -RUSTC_CROSS_FLAGS_arm-unknown-linux-musleabi := -CFG_GNU_TRIPLE_arm-unknown-linux-musleabi := arm-unknown-linux-musleabi diff --git a/mk/cfg/arm-unknown-linux-musleabihf.mk b/mk/cfg/arm-unknown-linux-musleabihf.mk deleted file mode 100644 index 8120250150d43..0000000000000 --- a/mk/cfg/arm-unknown-linux-musleabihf.mk +++ /dev/null @@ -1,3 +0,0 @@ -# This file is intentially left empty to indicate that, while this target is -# supported, it's not supported using plain GNU Make builds. Use a --rustbuild -# instead. \ No newline at end of file diff --git a/mk/cfg/armv5te-unknown-linux-gnueabi.mk b/mk/cfg/armv5te-unknown-linux-gnueabi.mk deleted file mode 100644 index 98567a03c28a9..0000000000000 --- a/mk/cfg/armv5te-unknown-linux-gnueabi.mk +++ /dev/null @@ -1,26 +0,0 @@ -# armv5-unknown-linux-gnueabi configuration -CROSS_PREFIX_armv5te-unknown-linux-gnueabi=arm-linux-gnueabi- -CC_armv5te-unknown-linux-gnueabi=gcc -CXX_armv5te-unknown-linux-gnueabi=g++ -CPP_armv5te-unknown-linux-gnueabi=gcc -E -AR_armv5te-unknown-linux-gnueabi=ar -CFG_LIB_NAME_armv5te-unknown-linux-gnueabi=lib$(1).so -CFG_STATIC_LIB_NAME_armv5te-unknown-linux-gnueabi=lib$(1).a -CFG_LIB_GLOB_armv5te-unknown-linux-gnueabi=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_armv5te-unknown-linux-gnueabi=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_armv5te-unknown-linux-gnueabi := -D__arm__ -mfloat-abi=soft $(CFLAGS) -march=armv5te -marm -CFG_GCCISH_CFLAGS_armv5te-unknown-linux-gnueabi := -Wall -g -fPIC -D__arm__ -mfloat-abi=soft $(CFLAGS) -march=armv5te -marm -CFG_GCCISH_CXXFLAGS_armv5te-unknown-linux-gnueabi := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_armv5te-unknown-linux-gnueabi := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_armv5te-unknown-linux-gnueabi := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_armv5te-unknown-linux-gnueabi := -CFG_INSTALL_NAME_ar,-unknown-linux-gnueabi = -CFG_EXE_SUFFIX_armv5te-unknown-linux-gnueabi := -CFG_WINDOWSY_armv5te-unknown-linux-gnueabi := -CFG_UNIXY_armv5te-unknown-linux-gnueabi := 1 -CFG_LDPATH_armv5te-unknown-linux-gnueabi := -CFG_RUN_armv5te-unknown-linux-gnueabi=$(2) -CFG_RUN_TARG_armv5te-unknown-linux-gnueabi=$(call CFG_RUN_armv5te-unknown-linux-gnueabi,,$(2)) -RUSTC_FLAGS_armv5te-unknown-linux-gnueabi := -RUSTC_CROSS_FLAGS_armv5te-unknown-linux-gnueabi := -CFG_GNU_TRIPLE_armv5te-unknown-linux-gnueabi := armv5te-unknown-linux-gnueabi diff --git a/mk/cfg/armv7-apple-ios.mk b/mk/cfg/armv7-apple-ios.mk deleted file mode 100644 index 34ca4de6563e4..0000000000000 --- a/mk/cfg/armv7-apple-ios.mk +++ /dev/null @@ -1,30 +0,0 @@ -# armv7-apple-ios configuration -CFG_SDK_NAME_armv7-apple-ios := iphoneos -CFG_SDK_ARCHS_armv7-apple-ios := armv7 -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) -CFG_IOS_SDK_armv7-apple-ios := $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null) -CFG_IOS_SDK_FLAGS_armv7-apple-ios := -target armv7-apple-ios -isysroot $(CFG_IOS_SDK_armv7-apple-ios) -mios-version-min=7.0 -CC_armv7-apple-ios = $(shell xcrun -find -sdk iphoneos clang) -CXX_armv7-apple-ios = $(shell xcrun -find -sdk iphoneos clang++) -CPP_armv7-apple-ios = $(shell xcrun -find -sdk iphoneos clang++) -AR_armv7-apple-ios = $(shell xcrun -find -sdk iphoneos ar) -endif -CFG_LIB_NAME_armv7-apple-ios = lib$(1).a -CFG_LIB_GLOB_armv7-apple-ios = lib$(1)-*.a -CFG_INSTALL_ONLY_RLIB_armv7-apple-ios = 1 -CFG_STATIC_LIB_NAME_armv7-apple-ios=lib$(1).a -CFG_LIB_DSYM_GLOB_armv7-apple-ios = lib$(1)-*.a.dSYM -CFG_JEMALLOC_CFLAGS_armv7-apple-ios := -arch armv7 -mfpu=vfp3 $(CFG_IOS_SDK_FLAGS_armv7-apple-ios) -CFG_GCCISH_CFLAGS_armv7-apple-ios := -g -fPIC $(CFG_IOS_SDK_FLAGS_armv7-apple-ios) -mfpu=vfp3 -arch armv7 -CFG_GCCISH_CXXFLAGS_armv7-apple-ios := -fno-rtti $(CFG_IOS_SDK_FLAGS_armv7-apple-ios) -I$(CFG_IOS_SDK_armv7-apple-ios)/usr/include/c++/4.2.1 -CFG_GCCISH_LINK_FLAGS_armv7-apple-ios := -lpthread -syslibroot $(CFG_IOS_SDK_armv7-apple-ios) -Wl,-no_compact_unwind -CFG_GCCISH_DEF_FLAG_armv7-apple-ios := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_armv7-apple-ios := -mattr=+vfp3,+v7,+neon -march=arm -CFG_INSTALL_NAME_armv7-apple-ios = -Wl,-install_name,@rpath/$(1) -CFG_EXE_SUFFIX_armv7-apple-ios := -CFG_WINDOWSY_armv7-apple-ios := -CFG_UNIXY_armv7-apple-ios := 1 -CFG_LDPATH_armv7-apple-ios := -CFG_RUN_armv7-apple-ios = $(2) -CFG_RUN_TARG_armv7-apple-ios = $(call CFG_RUN_armv7-apple-ios,,$(2)) -CFG_GNU_TRIPLE_armv7-apple-ios := armv7-apple-ios diff --git a/mk/cfg/armv7-linux-androideabi.mk b/mk/cfg/armv7-linux-androideabi.mk deleted file mode 100644 index e5bf2e4df7ab3..0000000000000 --- a/mk/cfg/armv7-linux-androideabi.mk +++ /dev/null @@ -1,25 +0,0 @@ -# armv7-linux-androideabi configuration -CC_armv7-linux-androideabi=$(CFG_ARMV7_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-gcc -CXX_armv7-linux-androideabi=$(CFG_ARMV7_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-g++ -CPP_armv7-linux-androideabi=$(CFG_ARMV7_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-gcc -E -AR_armv7-linux-androideabi=$(CFG_ARMV7_LINUX_ANDROIDEABI_NDK)/bin/arm-linux-androideabi-ar -CFG_LIB_NAME_armv7-linux-androideabi=lib$(1).so -CFG_STATIC_LIB_NAME_armv7-linux-androideabi=lib$(1).a -CFG_LIB_GLOB_armv7-linux-androideabi=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_armv7-linux-androideabi=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_armv7-linux-androideabi := -D__arm__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CFLAGS_armv7-linux-androideabi := -Wall -g -fPIC -D__arm__ -mfloat-abi=softfp -march=armv7-a -mfpu=vfpv3-d16 -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CXXFLAGS_armv7-linux-androideabi := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_armv7-linux-androideabi := -shared -fPIC -ldl -g -lm -lsupc++ -CFG_GCCISH_DEF_FLAG_armv7-linux-androideabi := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_armv7-linux-androideabi := -CFG_INSTALL_NAME_armv7-linux-androideabi = -CFG_EXE_SUFFIX_armv7-linux-androideabi := -CFG_WINDOWSY_armv7-linux-androideabi := -CFG_UNIXY_armv7-linux-androideabi := 1 -CFG_LDPATH_armv7-linux-androideabi := -CFG_RUN_armv7-linux-androideabi= -CFG_RUN_TARG_armv7-linux-androideabi= -RUSTC_FLAGS_armv7-linux-androideabi := -RUSTC_CROSS_FLAGS_armv7-linux-androideabi := -CFG_GNU_TRIPLE_armv7-linux-androideabi := arm-linux-androideabi diff --git a/mk/cfg/armv7-unknown-linux-gnueabihf.mk b/mk/cfg/armv7-unknown-linux-gnueabihf.mk deleted file mode 100644 index a8e39668ded5e..0000000000000 --- a/mk/cfg/armv7-unknown-linux-gnueabihf.mk +++ /dev/null @@ -1,26 +0,0 @@ -# armv7-unknown-linux-gnueabihf configuration -CROSS_PREFIX_armv7-unknown-linux-gnueabihf=arm-linux-gnueabihf- -CC_armv7-unknown-linux-gnueabihf=gcc -CXX_armv7-unknown-linux-gnueabihf=g++ -CPP_armv7-unknown-linux-gnueabihf=gcc -E -AR_armv7-unknown-linux-gnueabihf=ar -CFG_LIB_NAME_armv7-unknown-linux-gnueabihf=lib$(1).so -CFG_STATIC_LIB_NAME_armv7-unknown-linux-gnueabihf=lib$(1).a -CFG_LIB_GLOB_armv7-unknown-linux-gnueabihf=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_armv7-unknown-linux-gnueabihf=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_armv7-unknown-linux-gnueabihf := -D__arm__ $(CFLAGS) -march=armv7-a -CFG_GCCISH_CFLAGS_armv7-unknown-linux-gnueabihf := -Wall -g -fPIC -D__arm__ $(CFLAGS) -march=armv7-a -CFG_GCCISH_CXXFLAGS_armv7-unknown-linux-gnueabihf := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_armv7-unknown-linux-gnueabihf := -shared -fPIC -g -CFG_GCCISH_DEF_FLAG_armv7-unknown-linux-gnueabihf := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_armv7-unknown-linux-gnueabihf := -CFG_INSTALL_NAME_ar,-unknown-linux-gnueabihf = -CFG_EXE_SUFFIX_armv7-unknown-linux-gnueabihf := -CFG_WINDOWSY_armv7-unknown-linux-gnueabihf := -CFG_UNIXY_armv7-unknown-linux-gnueabihf := 1 -CFG_LDPATH_armv7-unknown-linux-gnueabihf := -CFG_RUN_armv7-unknown-linux-gnueabihf=$(2) -CFG_RUN_TARG_armv7-unknown-linux-gnueabihf=$(call CFG_RUN_armv7-unknown-linux-gnueabihf,,$(2)) -RUSTC_FLAGS_armv7-unknown-linux-gnueabihf := -RUSTC_CROSS_FLAGS_armv7-unknown-linux-gnueabihf := -CFG_GNU_TRIPLE_armv7-unknown-linux-gnueabihf := armv7-unknown-linux-gnueabihf diff --git a/mk/cfg/armv7-unknown-linux-musleabihf.mk b/mk/cfg/armv7-unknown-linux-musleabihf.mk deleted file mode 100644 index 8120250150d43..0000000000000 --- a/mk/cfg/armv7-unknown-linux-musleabihf.mk +++ /dev/null @@ -1,3 +0,0 @@ -# This file is intentially left empty to indicate that, while this target is -# supported, it's not supported using plain GNU Make builds. Use a --rustbuild -# instead. \ No newline at end of file diff --git a/mk/cfg/armv7s-apple-ios.mk b/mk/cfg/armv7s-apple-ios.mk deleted file mode 100644 index 6da7905a7003b..0000000000000 --- a/mk/cfg/armv7s-apple-ios.mk +++ /dev/null @@ -1,30 +0,0 @@ -# armv7s-apple-ios configuration -CFG_SDK_NAME_armv7s-apple-ios := iphoneos -CFG_SDK_ARCHS_armv7s-apple-ios := armv7s -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) -CFG_IOS_SDK_armv7s-apple-ios := $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null) -CFG_IOS_SDK_FLAGS_armv7s-apple-ios := -target armv7s-apple-ios -isysroot $(CFG_IOS_SDK_armv7s-apple-ios) -mios-version-min=7.0 -CC_armv7s-apple-ios = $(shell xcrun -find -sdk iphoneos clang) -CXX_armv7s-apple-ios = $(shell xcrun -find -sdk iphoneos clang++) -CPP_armv7s-apple-ios = $(shell xcrun -find -sdk iphoneos clang++) -AR_armv7s-apple-ios = $(shell xcrun -find -sdk iphoneos ar) -endif -CFG_LIB_NAME_armv7s-apple-ios = lib$(1).a -CFG_LIB_GLOB_armv7s-apple-ios = lib$(1)-*.a -CFG_INSTALL_ONLY_RLIB_armv7s-apple-ios = 1 -CFG_STATIC_LIB_NAME_armv7s-apple-ios=lib$(1).a -CFG_LIB_DSYM_GLOB_armv7s-apple-ios = lib$(1)-*.a.dSYM -CFG_JEMALLOC_CFLAGS_armv7s-apple-ios := -arch armv7s $(CFG_IOS_SDK_FLAGS_armv7s-apple-ios) -CFG_GCCISH_CFLAGS_armv7s-apple-ios := -g -fPIC $(CFG_IOS_SDK_FLAGS_armv7s-apple-ios) -arch armv7s -CFG_GCCISH_CXXFLAGS_armv7s-apple-ios := -fno-rtti $(CFG_IOS_SDK_FLAGS_armv7s-apple-ios) -I$(CFG_IOS_SDK_armv7s-apple-ios)/usr/include/c++/4.2.1 -CFG_GCCISH_LINK_FLAGS_armv7s-apple-ios := -lpthread -syslibroot $(CFG_IOS_SDK_armv7s-apple-ios) -Wl,-no_compact_unwind -CFG_GCCISH_DEF_FLAG_armv7s-apple-ios := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_armv7s-apple-ios := -mattr=+vfp4,+v7,+neon -CFG_INSTALL_NAME_armv7s-apple-ios = -Wl,-install_name,@rpath/$(1) -CFG_EXE_SUFFIX_armv7s-apple-ios := -CFG_WINDOWSY_armv7s-apple-ios := -CFG_UNIXY_armv7s-apple-ios := 1 -CFG_LDPATH_armv7s-apple-ios := -CFG_RUN_armv7s-apple-ios = $(2) -CFG_RUN_TARG_armv7s-apple-ios = $(call CFG_RUN_armv7s-apple-ios,,$(2)) -CFG_GNU_TRIPLE_armv7s-apple-ios := armv7s-apple-ios diff --git a/mk/cfg/asmjs-unknown-emscripten.mk b/mk/cfg/asmjs-unknown-emscripten.mk deleted file mode 100644 index a98a51b06b5d3..0000000000000 --- a/mk/cfg/asmjs-unknown-emscripten.mk +++ /dev/null @@ -1,24 +0,0 @@ -# asmjs-unknown-emscripten configuration -CC_asmjs-unknown-emscripten=emcc -CXX_asmjs-unknown-emscripten=em++ -CPP_asmjs-unknown-emscripten=$(CPP) -AR_asmjs-unknown-emscripten=emar -CFG_LIB_NAME_asmjs-unknown-emscripten=lib$(1).so -CFG_STATIC_LIB_NAME_asmjs-unknown-emscripten=lib$(1).a -CFG_LIB_GLOB_asmjs-unknown-emscripten=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_asmjs-unknown-emscripten=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_asmjs-unknown-emscripten := -m32 $(CFLAGS) -CFG_GCCISH_CFLAGS_asmjs-unknown-emscripten := -g -fPIC -m32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_asmjs-unknown-emscripten := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_asmjs-unknown-emscripten := -shared -fPIC -ldl -pthread -lrt -g -m32 -CFG_GCCISH_DEF_FLAG_asmjs-unknown-emscripten := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_asmjs-unknown-emscripten := -CFG_INSTALL_NAME_asmjs-unknown-emscripten = -CFG_EXE_SUFFIX_asmjs-unknown-emscripten = -CFG_WINDOWSY_asmjs-unknown-emscripten := -CFG_UNIXY_asmjs-unknown-emscripten := 1 -CFG_LDPATH_asmjs-unknown-emscripten := -CFG_RUN_asmjs-unknown-emscripten=$(2) -CFG_RUN_TARG_asmjs-unknown-emscripten=$(call CFG_RUN_asmjs-unknown-emscripten,,$(2)) -CFG_GNU_TRIPLE_asmjs-unknown-emscripten := asmjs-unknown-emscripten -CFG_DISABLE_JEMALLOC_asmjs-unknown-emscripten := 1 diff --git a/mk/cfg/i386-apple-ios.mk b/mk/cfg/i386-apple-ios.mk deleted file mode 100644 index bfb7fa281f242..0000000000000 --- a/mk/cfg/i386-apple-ios.mk +++ /dev/null @@ -1,30 +0,0 @@ -# i386-apple-ios configuration -CFG_SDK_NAME_i386-apple-ios := iphonesimulator -CFG_SDK_ARCHS_i386-apple-ios := i386 -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) -CFG_IOSSIM_SDK_i386-apple-ios := $(shell xcrun --show-sdk-path -sdk iphonesimulator 2>/dev/null) -CFG_IOSSIM_FLAGS_i386-apple-ios := -m32 -target i386-apple-ios -isysroot $(CFG_IOSSIM_SDK_i386-apple-ios) -mios-simulator-version-min=7.0 -CC_i386-apple-ios = $(shell xcrun -find -sdk iphonesimulator clang) -CXX_i386-apple-ios = $(shell xcrun -find -sdk iphonesimulator clang++) -CPP_i386-apple-ios = $(shell xcrun -find -sdk iphonesimulator clang++) -AR_i386-apple-ios = $(shell xcrun -find -sdk iphonesimulator ar) -endif -CFG_LIB_NAME_i386-apple-ios = lib$(1).a -CFG_LIB_GLOB_i386-apple-ios = lib$(1)-*.dylib -CFG_INSTALL_ONLY_RLIB_i386-apple-ios = 1 -CFG_STATIC_LIB_NAME_i386-apple-ios=lib$(1).a -CFG_LIB_DSYM_GLOB_i386-apple-ios = lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_i386-apple-ios := -g -fPIC -m32 $(CFG_IOSSIM_FLAGS_i386-apple-ios) -CFG_GCCISH_CXXFLAGS_i386-apple-ios := -fno-rtti $(CFG_IOSSIM_FLAGS_i386-apple-ios) -I$(CFG_IOSSIM_SDK_i386-apple-ios)/usr/include/c++/4.2.1 -CFG_GCCISH_LINK_FLAGS_i386-apple-ios := -lpthread -m32 -Wl,-no_compact_unwind -m32 -Wl,-syslibroot $(CFG_IOSSIM_SDK_i386-apple-ios) -CFG_GCCISH_DEF_FLAG_i386-apple-ios := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_i386-apple-ios = -CFG_INSTALL_NAME_i386-apple-ios = -Wl,-install_name,@rpath/$(1) -CFG_EXE_SUFFIX_i386-apple-ios := -CFG_WINDOWSY_i386-apple-ios := -CFG_UNIXY_i386-apple-ios := 1 -CFG_LDPATH_i386-apple-ios = -CFG_RUN_i386-apple-ios = $(2) -CFG_RUN_TARG_i386-apple-ios = $(call CFG_RUN_i386-apple-ios,,$(2)) -CFG_JEMALLOC_CFLAGS_i386-apple-ios = $(CFG_IOSSIM_FLAGS_i386-apple-ios) -target i386-apple-ios #-Wl,-syslibroot $(CFG_IOSSIM_SDK_i386-apple-ios) -Wl,-no_compact_unwind -CFG_GNU_TRIPLE_i386-apple-ios := i386-apple-ios diff --git a/mk/cfg/i586-pc-windows-msvc.mk b/mk/cfg/i586-pc-windows-msvc.mk deleted file mode 100644 index 48f1ecec3a704..0000000000000 --- a/mk/cfg/i586-pc-windows-msvc.mk +++ /dev/null @@ -1,28 +0,0 @@ -# i586-pc-windows-msvc configuration -CC_i586-pc-windows-msvc=$(CFG_MSVC_CL_i386) -LINK_i586-pc-windows-msvc=$(CFG_MSVC_LINK_i386) -CXX_i586-pc-windows-msvc=$(CFG_MSVC_CL_i386) -CPP_i586-pc-windows-msvc=$(CFG_MSVC_CL_i386) -AR_i586-pc-windows-msvc=$(CFG_MSVC_LIB_i386) -CFG_LIB_NAME_i586-pc-windows-msvc=$(1).dll -CFG_STATIC_LIB_NAME_i586-pc-windows-msvc=$(1).lib -CFG_LIB_GLOB_i586-pc-windows-msvc=$(1)-*.{dll,lib} -CFG_LIB_DSYM_GLOB_i586-pc-windows-msvc=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i586-pc-windows-msvc := -CFG_GCCISH_CFLAGS_i586-pc-windows-msvc := -MD -arch:IA32 -nologo -CFG_GCCISH_CXXFLAGS_i586-pc-windows-msvc := -MD -arch:IA32 -nologo -CFG_GCCISH_LINK_FLAGS_i586-pc-windows-msvc := -CFG_GCCISH_DEF_FLAG_i586-pc-windows-msvc := -CFG_LLC_FLAGS_i586-pc-windows-msvc := -CFG_INSTALL_NAME_i586-pc-windows-msvc = -CFG_EXE_SUFFIX_i586-pc-windows-msvc := .exe -CFG_WINDOWSY_i586-pc-windows-msvc := 1 -CFG_UNIXY_i586-pc-windows-msvc := -CFG_LDPATH_i586-pc-windows-msvc := -CFG_RUN_i586-pc-windows-msvc=$(2) -CFG_RUN_TARG_i586-pc-windows-msvc=$(call CFG_RUN_i586-pc-windows-msvc,,$(2)) -CFG_GNU_TRIPLE_i586-pc-windows-msvc := i586-pc-win32 - -# Currently the build system is not configured to build jemalloc -# with MSVC, so we omit this optional dependency. -CFG_DISABLE_JEMALLOC_i586-pc-windows-msvc := 1 diff --git a/mk/cfg/i586-unknown-linux-gnu.mk b/mk/cfg/i586-unknown-linux-gnu.mk deleted file mode 100644 index fa2909196dcf1..0000000000000 --- a/mk/cfg/i586-unknown-linux-gnu.mk +++ /dev/null @@ -1,23 +0,0 @@ -# i586-unknown-linux-gnu configuration -CC_i586-unknown-linux-gnu=$(CC) -CXX_i586-unknown-linux-gnu=$(CXX) -CPP_i586-unknown-linux-gnu=$(CPP) -AR_i586-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_i586-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_i586-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_i586-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i586-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i586-unknown-linux-gnu := -m32 $(CFLAGS) -march=pentium -Wa,-mrelax-relocations=no -CFG_GCCISH_CFLAGS_i586-unknown-linux-gnu := -g -fPIC -m32 $(CFLAGS) -march=pentium -Wa,-mrelax-relocations=no -CFG_GCCISH_CXXFLAGS_i586-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -march=pentium -CFG_GCCISH_LINK_FLAGS_i586-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m32 -CFG_GCCISH_DEF_FLAG_i586-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_i586-unknown-linux-gnu := -CFG_INSTALL_NAME_i586-unknown-linux-gnu = -CFG_EXE_SUFFIX_i586-unknown-linux-gnu = -CFG_WINDOWSY_i586-unknown-linux-gnu := -CFG_UNIXY_i586-unknown-linux-gnu := 1 -CFG_LDPATH_i586-unknown-linux-gnu := -CFG_RUN_i586-unknown-linux-gnu=$(2) -CFG_RUN_TARG_i586-unknown-linux-gnu=$(call CFG_RUN_i586-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_i586-unknown-linux-gnu := i586-unknown-linux-gnu diff --git a/mk/cfg/i686-apple-darwin.mk b/mk/cfg/i686-apple-darwin.mk deleted file mode 100644 index e4b3431e8b67f..0000000000000 --- a/mk/cfg/i686-apple-darwin.mk +++ /dev/null @@ -1,23 +0,0 @@ -# i686-apple-darwin configuration -CC_i686-apple-darwin=$(CC) -CXX_i686-apple-darwin=$(CXX) -CPP_i686-apple-darwin=$(CPP) -AR_i686-apple-darwin=$(AR) -CFG_LIB_NAME_i686-apple-darwin=lib$(1).dylib -CFG_STATIC_LIB_NAME_i686-apple-darwin=lib$(1).a -CFG_LIB_GLOB_i686-apple-darwin=lib$(1)-*.dylib -CFG_LIB_DSYM_GLOB_i686-apple-darwin=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-apple-darwin := -m32 -arch i386 $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-apple-darwin := -g -fPIC -m32 -arch i386 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_i686-apple-darwin := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-apple-darwin := -dynamiclib -pthread -framework CoreServices -m32 -CFG_GCCISH_DEF_FLAG_i686-apple-darwin := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_i686-apple-darwin := -CFG_INSTALL_NAME_i686-apple-darwin = -Wl,-install_name,@rpath/$(1) -CFG_EXE_SUFFIX_i686-apple-darwin := -CFG_WINDOWSY_i686-apple-darwin := -CFG_UNIXY_i686-apple-darwin := 1 -CFG_LDPATH_i686-apple-darwin := -CFG_RUN_i686-apple-darwin=$(2) -CFG_RUN_TARG_i686-apple-darwin=$(call CFG_RUN_i686-apple-darwin,,$(2)) -CFG_GNU_TRIPLE_i686-apple-darwin := i686-apple-darwin diff --git a/mk/cfg/i686-linux-android.mk b/mk/cfg/i686-linux-android.mk deleted file mode 100644 index 2843a8e9be53f..0000000000000 --- a/mk/cfg/i686-linux-android.mk +++ /dev/null @@ -1,25 +0,0 @@ -# i686-linux-android configuration -CC_i686-linux-android=$(CFG_I686_LINUX_ANDROID_NDK)/bin/i686-linux-android-gcc -CXX_i686-linux-android=$(CFG_I686_LINUX_ANDROID_NDK)/bin/i686-linux-android-g++ -CPP_i686-linux-android=$(CFG_I686_LINUX_ANDROID_NDK)/bin/i686-linux-android-gcc -E -AR_i686-linux-android=$(CFG_I686_LINUX_ANDROID_NDK)/bin/i686-linux-android-ar -CFG_LIB_NAME_i686-linux-android=lib$(1).so -CFG_STATIC_LIB_NAME_i686-linux-android=lib$(1).a -CFG_LIB_GLOB_i686-linux-android=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i686-linux-android=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-linux-android := -D__i686__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-linux-android := -Wall -g -fPIC -D__i686__ -DANDROID -D__ANDROID__ $(CFLAGS) -CFG_GCCISH_CXXFLAGS_i686-linux-android := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-linux-android := -shared -fPIC -ldl -g -lm -lsupc++ -CFG_GCCISH_DEF_FLAG_i686-linux-android := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_i686-linux-android := -CFG_INSTALL_NAME_i686-linux-android = -CFG_EXE_SUFFIX_i686-linux-android := -CFG_WINDOWSY_i686-linux-android := -CFG_UNIXY_i686-linux-android := 1 -CFG_LDPATH_i686-linux-android := -CFG_RUN_i686-linux-android= -CFG_RUN_TARG_i686-linux-android= -RUSTC_FLAGS_i686-linux-android := -RUSTC_CROSS_FLAGS_i686-linux-android := -CFG_GNU_TRIPLE_i686-linux-android := i686-linux-android diff --git a/mk/cfg/i686-pc-windows-gnu.mk b/mk/cfg/i686-pc-windows-gnu.mk deleted file mode 100644 index 50c2b8c98acd3..0000000000000 --- a/mk/cfg/i686-pc-windows-gnu.mk +++ /dev/null @@ -1,27 +0,0 @@ -# i686-pc-windows-gnu configuration -CROSS_PREFIX_i686-pc-windows-gnu=i686-w64-mingw32- -CC_i686-pc-windows-gnu=gcc -CXX_i686-pc-windows-gnu=g++ -CPP_i686-pc-windows-gnu=gcc -E -AR_i686-pc-windows-gnu=ar -CFG_LIB_NAME_i686-pc-windows-gnu=$(1).dll -CFG_STATIC_LIB_NAME_i686-pc-windows-gnu=$(1).lib -CFG_LIB_GLOB_i686-pc-windows-gnu=$(1)-*.dll -CFG_LIB_DSYM_GLOB_i686-pc-windows-gnu=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-pc-windows-gnu := -march=i686 -m32 -D_WIN32_WINNT=0x0600 -D__USE_MINGW_ANSI_STDIO=1 $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-pc-windows-gnu := -g -m32 -D_WIN32_WINNT=0x0600 -D__USE_MINGW_ANSI_STDIO=1 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_i686-pc-windows-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-pc-windows-gnu := -shared -g -m32 -CFG_GCCISH_DEF_FLAG_i686-pc-windows-gnu := -CFG_LLC_FLAGS_i686-pc-windows-gnu := -CFG_INSTALL_NAME_i686-pc-windows-gnu = -CFG_EXE_SUFFIX_i686-pc-windows-gnu := .exe -CFG_WINDOWSY_i686-pc-windows-gnu := 1 -CFG_UNIXY_i686-pc-windows-gnu := -CFG_LDPATH_i686-pc-windows-gnu := -CFG_RUN_i686-pc-windows-gnu=$(2) -CFG_RUN_TARG_i686-pc-windows-gnu=$(call CFG_RUN_i686-pc-windows-gnu,,$(2)) -CFG_GNU_TRIPLE_i686-pc-windows-gnu := i686-w64-mingw32 -CFG_THIRD_PARTY_OBJECTS_i686-pc-windows-gnu := crt2.o dllcrt2.o -CFG_INSTALLED_OBJECTS_i686-pc-windows-gnu := crt2.o dllcrt2.o rsbegin.o rsend.o -CFG_RUSTRT_HAS_STARTUP_OBJS_i686-pc-windows-gnu := 1 diff --git a/mk/cfg/i686-pc-windows-msvc.mk b/mk/cfg/i686-pc-windows-msvc.mk deleted file mode 100644 index b0289b9892e20..0000000000000 --- a/mk/cfg/i686-pc-windows-msvc.mk +++ /dev/null @@ -1,28 +0,0 @@ -# i686-pc-windows-msvc configuration -CC_i686-pc-windows-msvc=$(CFG_MSVC_CL_i386) -LINK_i686-pc-windows-msvc=$(CFG_MSVC_LINK_i386) -CXX_i686-pc-windows-msvc=$(CFG_MSVC_CL_i386) -CPP_i686-pc-windows-msvc=$(CFG_MSVC_CL_i386) -AR_i686-pc-windows-msvc=$(CFG_MSVC_LIB_i386) -CFG_LIB_NAME_i686-pc-windows-msvc=$(1).dll -CFG_STATIC_LIB_NAME_i686-pc-windows-msvc=$(1).lib -CFG_LIB_GLOB_i686-pc-windows-msvc=$(1)-*.{dll,lib} -CFG_LIB_DSYM_GLOB_i686-pc-windows-msvc=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-pc-windows-msvc := -CFG_GCCISH_CFLAGS_i686-pc-windows-msvc := -MD -nologo -CFG_GCCISH_CXXFLAGS_i686-pc-windows-msvc := -MD -nologo -CFG_GCCISH_LINK_FLAGS_i686-pc-windows-msvc := -CFG_GCCISH_DEF_FLAG_i686-pc-windows-msvc := -CFG_LLC_FLAGS_i686-pc-windows-msvc := -CFG_INSTALL_NAME_i686-pc-windows-msvc = -CFG_EXE_SUFFIX_i686-pc-windows-msvc := .exe -CFG_WINDOWSY_i686-pc-windows-msvc := 1 -CFG_UNIXY_i686-pc-windows-msvc := -CFG_LDPATH_i686-pc-windows-msvc := -CFG_RUN_i686-pc-windows-msvc=$(2) -CFG_RUN_TARG_i686-pc-windows-msvc=$(call CFG_RUN_i686-pc-windows-msvc,,$(2)) -CFG_GNU_TRIPLE_i686-pc-windows-msvc := i686-pc-win32 - -# Currently the build system is not configured to build jemalloc -# with MSVC, so we omit this optional dependency. -CFG_DISABLE_JEMALLOC_i686-pc-windows-msvc := 1 diff --git a/mk/cfg/i686-unknown-freebsd.mk b/mk/cfg/i686-unknown-freebsd.mk deleted file mode 100644 index a9d4446d5d49b..0000000000000 --- a/mk/cfg/i686-unknown-freebsd.mk +++ /dev/null @@ -1,22 +0,0 @@ -# i686-unknown-freebsd configuration -CC_i686-unknown-freebsd=$(CC) -CXX_i686-unknown-freebsd=$(CXX) -CPP_i686-unknown-freebsd=$(CPP) -AR_i686-unknown-freebsd=$(AR) -CFG_LIB_NAME_i686-unknown-freebsd=lib$(1).so -CFG_STATIC_LIB_NAME_i686-unknown-freebsd=lib$(1).a -CFG_LIB_GLOB_i686-unknown-freebsd=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i686-unknown-freebsd=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-unknown-freebsd := -m32 -I/usr/local/include $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-unknown-freebsd := -g -fPIC -m32 -arch i386 -I/usr/local/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-unknown-freebsd := -m32 -shared -fPIC -g -pthread -lrt -CFG_GCCISH_DEF_FLAG_i686-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_i686-unknown-freebsd := -CFG_INSTALL_NAME_i686-unknown-freebsd = -CFG_EXE_SUFFIX_i686-unknown-freebsd := -CFG_WINDOWSY_i686-unknown-freebsd := -CFG_UNIXY_i686-unknown-freebsd := 1 -CFG_LDPATH_i686-unknown-freebsd := -CFG_RUN_i686-unknown-freebsd=$(2) -CFG_RUN_TARG_i686-unknown-freebsd=$(call CFG_RUN_i686-unknown-freebsd,,$(2)) -CFG_GNU_TRIPLE_i686-unknown-freebsd := i686-unknown-freebsd diff --git a/mk/cfg/i686-unknown-haiku.mk b/mk/cfg/i686-unknown-haiku.mk deleted file mode 100644 index cbacbff070e88..0000000000000 --- a/mk/cfg/i686-unknown-haiku.mk +++ /dev/null @@ -1,27 +0,0 @@ -# i686-unknown-haiku configuration -CROSS_PREFIX_i686-unknown-haiku=i586-pc-haiku- -CC_i686-unknown-haiku=$(CC) -CXX_i686-unknown-haiku=$(CXX) -CPP_i686-unknown-haiku=$(CPP) -AR_i686-unknown-haiku=$(AR) -CFG_LIB_NAME_i686-unknown-haiku=lib$(1).so -CFG_STATIC_LIB_NAME_i686-unknown-haiku=lib$(1).a -CFG_LIB_GLOB_i686-unknown-haiku=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i686-unknown-haiku=lib$(1)-*.dylib.dSYM -CFG_CFLAGS_i686-unknown-haiku := -m32 $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-unknown-haiku := -Wall -Werror -g -fPIC -m32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_i686-unknown-haiku := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-unknown-haiku := -shared -fPIC -ldl -pthread -lrt -g -m32 -CFG_GCCISH_PRE_LIB_FLAGS_i686-unknown-haiku := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-haiku := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_i686-unknown-haiku := .linux.def -CFG_LLC_FLAGS_i686-unknown-haiku := -CFG_INSTALL_NAME_i686-unknown-haiku = -CFG_EXE_SUFFIX_i686-unknown-haiku = -CFG_WINDOWSY_i686-unknown-haiku := -CFG_UNIXY_i686-unknown-haiku := 1 -CFG_PATH_MUNGE_i686-unknown-haiku := true -CFG_LDPATH_i686-unknown-haiku := -CFG_RUN_i686-unknown-haiku=$(2) -CFG_RUN_TARG_i686-unknown-haiku=$(call CFG_RUN_i686-unknown-haiku,,$(2)) -CFG_GNU_TRIPLE_i686-unknown-haiku := i686-unknown-haiku diff --git a/mk/cfg/i686-unknown-linux-gnu.mk b/mk/cfg/i686-unknown-linux-gnu.mk deleted file mode 100644 index 9e2312008a10a..0000000000000 --- a/mk/cfg/i686-unknown-linux-gnu.mk +++ /dev/null @@ -1,23 +0,0 @@ -# i686-unknown-linux-gnu configuration -CC_i686-unknown-linux-gnu=$(CC) -CXX_i686-unknown-linux-gnu=$(CXX) -CPP_i686-unknown-linux-gnu=$(CPP) -AR_i686-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_i686-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_i686-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_i686-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i686-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-unknown-linux-gnu := -m32 $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-unknown-linux-gnu := -g -fPIC -m32 $(CFLAGS) -march=i686 -CFG_GCCISH_CXXFLAGS_i686-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m32 -CFG_GCCISH_DEF_FLAG_i686-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_i686-unknown-linux-gnu := -CFG_INSTALL_NAME_i686-unknown-linux-gnu = -CFG_EXE_SUFFIX_i686-unknown-linux-gnu = -CFG_WINDOWSY_i686-unknown-linux-gnu := -CFG_UNIXY_i686-unknown-linux-gnu := 1 -CFG_LDPATH_i686-unknown-linux-gnu := -CFG_RUN_i686-unknown-linux-gnu=$(2) -CFG_RUN_TARG_i686-unknown-linux-gnu=$(call CFG_RUN_i686-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_i686-unknown-linux-gnu := i686-unknown-linux-gnu diff --git a/mk/cfg/i686-unknown-linux-musl.mk b/mk/cfg/i686-unknown-linux-musl.mk deleted file mode 100644 index d6c1ce8967a20..0000000000000 --- a/mk/cfg/i686-unknown-linux-musl.mk +++ /dev/null @@ -1,29 +0,0 @@ -# i686-unknown-linux-musl configuration -CC_i686-unknown-linux-musl=$(CFG_MUSL_ROOT)/bin/musl-gcc -CXX_i686-unknown-linux-musl=$(CXX) -CPP_i686-unknown-linux-musl=$(CFG_MUSL_ROOT)/bin/musl-gcc -E -AR_i686-unknown-linux-musl=$(AR) -CFG_INSTALL_ONLY_RLIB_i686-unknown-linux-musl = 1 -CFG_LIB_NAME_i686-unknown-linux-musl=lib$(1).so -CFG_STATIC_LIB_NAME_i686-unknown-linux-musl=lib$(1).a -CFG_LIB_GLOB_i686-unknown-linux-musl=lib$(1)-*.so -CFG_JEMALLOC_CFLAGS_i686-unknown-linux-musl := -m32 -Wl,-melf_i386 -Wa,-mrelax-relocations=no -CFG_GCCISH_CFLAGS_i686-unknown-linux-musl := -g -fPIC -m32 -Wl,-melf_i386 -Wa,-mrelax-relocations=no -CFG_GCCISH_CXXFLAGS_i686-unknown-linux-musl := -CFG_GCCISH_LINK_FLAGS_i686-unknown-linux-musl := -CFG_GCCISH_DEF_FLAG_i686-unknown-linux-musl := -CFG_LLC_FLAGS_i686-unknown-linux-musl := -CFG_INSTALL_NAME_i686-unknown-linux-musl = -CFG_EXE_SUFFIX_i686-unknown-linux-musl = -CFG_WINDOWSY_i686-unknown-linux-musl := -CFG_UNIXY_i686-unknown-linux-musl := 1 -CFG_LDPATH_i686-unknown-linux-musl := -CFG_RUN_i686-unknown-linux-musl=$(2) -CFG_RUN_TARG_i686-unknown-linux-musl=$(call CFG_RUN_i686-unknown-linux-musl,,$(2)) -CFG_GNU_TRIPLE_i686-unknown-linux-musl := i686-unknown-linux-musl -CFG_THIRD_PARTY_OBJECTS_i686-unknown-linux-musl := crt1.o crti.o crtn.o -CFG_INSTALLED_OBJECTS_i686-unknown-linux-musl := crt1.o crti.o crtn.o - -NATIVE_DEPS_libc_T_i686-unknown-linux-musl += libc.a -NATIVE_DEPS_std_T_i686-unknown-linux-musl += crt1.o crti.o crtn.o -NATIVE_DEPS_unwind_T_i686-unknown-linux-musl += libunwind.a diff --git a/mk/cfg/aarch64-unknown-fuchsia.mk b/mk/cfg/i686-unknown-netbsd.mk similarity index 100% rename from mk/cfg/aarch64-unknown-fuchsia.mk rename to mk/cfg/i686-unknown-netbsd.mk diff --git a/mk/cfg/i686-unknown-openbsd.mk b/mk/cfg/i686-unknown-openbsd.mk deleted file mode 100644 index b839937c9768b..0000000000000 --- a/mk/cfg/i686-unknown-openbsd.mk +++ /dev/null @@ -1,24 +0,0 @@ -# i686-unknown-openbsd configuration -CC_i686-unknown-openbsd=$(CC) -CXX_i686-unknown-openbsd=$(CXX) -CPP_i686-unknown-openbsd=$(CPP) -AR_i686-unknown-openbsd=$(AR) -CFG_LIB_NAME_i686-unknown-openbsd=lib$(1).so -CFG_STATIC_LIB_NAME_i686-unknown-openbsd=lib$(1).a -CFG_LIB_GLOB_i686-unknown-openbsd=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_i686-unknown-openbsd=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_i686-unknown-openbsd := -m32 -I/usr/include $(CFLAGS) -CFG_GCCISH_CFLAGS_i686-unknown-openbsd := -g -fPIC -m32 -I/usr/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_i686-unknown-openbsd := -shared -fPIC -g -pthread -m32 -CFG_GCCISH_DEF_FLAG_i686-unknown-openbsd := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_i686-unknown-openbsd := -CFG_INSTALL_NAME_i686-unknown-openbsd = -CFG_EXE_SUFFIX_i686-unknown-openbsd := -CFG_WINDOWSY_i686-unknown-openbsd := -CFG_UNIXY_i686-unknown-openbsd := 1 -CFG_LDPATH_i686-unknown-openbsd := -CFG_RUN_i686-unknown-openbsd=$(2) -CFG_RUN_TARG_i686-unknown-openbsd=$(call CFG_RUN_i686-unknown-openbsd,,$(2)) -CFG_GNU_TRIPLE_i686-unknown-openbsd := i686-unknown-openbsd -RUSTC_FLAGS_i686-unknown-openbsd=-C linker=$(call FIND_COMPILER,$(CC)) -CFG_DISABLE_JEMALLOC_i686-unknown-openbsd := 1 diff --git a/mk/cfg/le32-unknown-nacl.mk b/mk/cfg/le32-unknown-nacl.mk deleted file mode 100644 index a73367291746f..0000000000000 --- a/mk/cfg/le32-unknown-nacl.mk +++ /dev/null @@ -1,40 +0,0 @@ -# le32-unknown-nacl (portable, PNaCl) -ifneq ($(CFG_NACL_CROSS_PATH),) - -CC_le32-unknown-nacl=$(shell $(CFG_PYTHON) $(CFG_NACL_CROSS_PATH)/tools/nacl_config.py -t pnacl --tool cc) -CXX_le32-unknown-nacl=$(shell $(CFG_PYTHON) $(CFG_NACL_CROSS_PATH)/tools/nacl_config.py -t pnacl --tool c++) -CPP_le32-unknown-nacl=$(CXX_le32-unknown-nacl) -E -AR_le32-unknown-nacl=$(shell $(CFG_PYTHON) $(CFG_NACL_CROSS_PATH)/tools/nacl_config.py -t pnacl --tool ar) - -CFG_PNACL_TOOLCHAIN := $(abspath $(dir $(AR_le32-unknown-nacl)/../)) - -# Note: pso's aren't supported by PNaCl. -CFG_LIB_NAME_le32-unknown-nacl=lib$(1).pso -CFG_STATIC_LIB_NAME_le32-unknown-nacl=lib$(1).a -CFG_LIB_GLOB_le32-unknown-nacl=lib$(1)-*.pso -CFG_LIB_DSYM_GLOB_le32-unknown-nacl=lib$(1)-*.dylib.dSYM -CFG_GCCISH_CFLAGS_le32-unknown-nacl := -Wall -Wno-unused-variable -Wno-unused-value $(shell $(CFG_PYTHON) $(CFG_NACL_CROSS_PATH)/tools/nacl_config.py -t pnacl --cflags) -D_YUGA_LITTLE_ENDIAN=1 -D_YUGA_BIG_ENDIAN=0 -CFG_GCCISH_CXXFLAGS_le32-unknown-nacl := -stdlib=libc++ $(CFG_GCCISH_CFLAGS_le32-unknown-nacl) -CFG_GCCISH_LINK_FLAGS_le32-unknown-nacl := -static -pthread -lm -CFG_GCCISH_DEF_FLAG_le32-unknown-nacl := -Wl,--export-dynamic,--dynamic-list= -CFG_GCCISH_PRE_LIB_FLAGS_le32-unknown-nacl := -Wl,-no-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_le32-unknown-nacl := -CFG_DEF_SUFFIX_le32-unknown-nacl := .le32.nacl.def -CFG_INSTALL_NAME_le32-unknown-nacl = -CFG_EXE_SUFFIX_le32-unknown-nacl = .pexe -CFG_WINDOWSY_le32-unknown-nacl := -CFG_UNIXY_le32-unknown-nacl := 1 -CFG_NACLY_le32-unknown-nacl := 1 -CFG_PATH_MUNGE_le32-unknown-nacl := true -CFG_LDPATH_le32-unknown-nacl := -CFG_RUN_le32-unknown-nacl=$(2) -CFG_RUN_TARG_le32-unknown-nacl=$(call CFG_RUN_le32-unknown-nacl,,$(2)) -RUSTC_FLAGS_le32-unknown-nacl:= -RUSTC_CROSS_FLAGS_le32-unknown-nacl=-L $(CFG_NACL_CROSS_PATH)/lib/pnacl/Release -L $(CFG_PNACL_TOOLCHAIN)/lib/clang/3.7.0/lib/le32-nacl -L $(CFG_PNACL_TOOLCHAIN)/le32-nacl/usr/lib -L $(CFG_PNACL_TOOLCHAIN)/le32-nacl/lib -CFG_GNU_TRIPLE_le32-unknown-nacl := le32-unknown-nacl - -# strdup isn't defined unless -std=gnu++11 is used :/ -LLVM_FILTER_CXXFLAGS_le32-unknown-nacl := -std=c++11 -LLVM_EXTRA_CXXFLAGS_le32-unknown-nacl := -std=gnu++11 - -endif diff --git a/mk/cfg/mips-unknown-linux-gnu.mk b/mk/cfg/mips-unknown-linux-gnu.mk deleted file mode 100644 index 0783a4c17a4f2..0000000000000 --- a/mk/cfg/mips-unknown-linux-gnu.mk +++ /dev/null @@ -1,24 +0,0 @@ -# mips-unknown-linux-gnu configuration -CC_mips-unknown-linux-gnu=mips-linux-gnu-gcc -CXX_mips-unknown-linux-gnu=mips-linux-gnu-g++ -CPP_mips-unknown-linux-gnu=mips-linux-gnu-gcc -E -AR_mips-unknown-linux-gnu=mips-linux-gnu-ar -CFG_LIB_NAME_mips-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_mips-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_mips-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_mips-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_mips-unknown-linux-gnu := -mips32r2 -mabi=32 $(CFLAGS) -CFG_GCCISH_CFLAGS_mips-unknown-linux-gnu := -Wall -g -fPIC -mips32r2 -mabi=32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_mips-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_mips-unknown-linux-gnu := -shared -fPIC -g -mips32r2 -mabi=32 -CFG_GCCISH_DEF_FLAG_mips-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_mips-unknown-linux-gnu := -CFG_INSTALL_NAME_mips-unknown-linux-gnu = -CFG_EXE_SUFFIX_mips-unknown-linux-gnu := -CFG_WINDOWSY_mips-unknown-linux-gnu := -CFG_UNIXY_mips-unknown-linux-gnu := 1 -CFG_LDPATH_mips-unknown-linux-gnu := -CFG_RUN_mips-unknown-linux-gnu= -CFG_RUN_TARG_mips-unknown-linux-gnu= -RUSTC_FLAGS_mips-unknown-linux-gnu := -CFG_GNU_TRIPLE_mips-unknown-linux-gnu := mips-unknown-linux-gnu diff --git a/mk/cfg/mips-unknown-linux-musl.mk b/mk/cfg/mips-unknown-linux-musl.mk deleted file mode 100644 index 33528b986f6e5..0000000000000 --- a/mk/cfg/mips-unknown-linux-musl.mk +++ /dev/null @@ -1,24 +0,0 @@ -# mips-unknown-linux-musl configuration -CC_mips-unknown-linux-musl=mips-linux-musl-gcc -CXX_mips-unknown-linux-musl=mips-linux-musl-g++ -CPP_mips-unknown-linux-musl=mips-linux-musl-gcc -E -AR_mips-unknown-linux-musl=mips-linux-musl-ar -CFG_LIB_NAME_mips-unknown-linux-musl=lib$(1).so -CFG_STATIC_LIB_NAME_mips-unknown-linux-musl=lib$(1).a -CFG_LIB_GLOB_mips-unknown-linux-musl=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_mips-unknown-linux-musl=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_mips-unknown-linux-musl := -mips32r2 -msoft-float -mabi=32 $(CFLAGS) -CFG_GCCISH_CFLAGS_mips-unknown-linux-musl := -Wall -g -fPIC -mips32r2 -msoft-float -mabi=32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_mips-unknown-linux-musl := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_mips-unknown-linux-musl := -shared -fPIC -g -mips32r2 -msoft-float -mabi=32 -CFG_GCCISH_DEF_FLAG_mips-unknown-linux-musl := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_mips-unknown-linux-musl := -CFG_INSTALL_NAME_mips-unknown-linux-musl = -CFG_EXE_SUFFIX_mips-unknown-linux-musl = -CFG_WINDOWSY_mips-unknown-linux-musl := -CFG_UNIXY_mips-unknown-linux-musl := 1 -CFG_LDPATH_mips-unknown-linux-musl := -CFG_RUN_mips-unknown-linux-musl= -CFG_RUN_TARG_mips-unknown-linux-musl= -RUSTC_FLAGS_mips-unknown-linux-musl := -CFG_GNU_TRIPLE_mips-unknown-linux-musl := mips-unknown-linux-musl diff --git a/mk/cfg/mips-unknown-linux-uclibc.mk b/mk/cfg/mips-unknown-linux-uclibc.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/mips-unknown-linux-uclibc.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/cfg/mips64-unknown-linux-gnuabi64.mk b/mk/cfg/mips64-unknown-linux-gnuabi64.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/mips64-unknown-linux-gnuabi64.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/cfg/mips64el-unknown-linux-gnuabi64.mk b/mk/cfg/mips64el-unknown-linux-gnuabi64.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/mips64el-unknown-linux-gnuabi64.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/cfg/mipsel-unknown-linux-gnu.mk b/mk/cfg/mipsel-unknown-linux-gnu.mk deleted file mode 100644 index f15a086b64e88..0000000000000 --- a/mk/cfg/mipsel-unknown-linux-gnu.mk +++ /dev/null @@ -1,24 +0,0 @@ -# mipsel-unknown-linux-gnu configuration -CC_mipsel-unknown-linux-gnu=mipsel-linux-gnu-gcc -CXX_mipsel-unknown-linux-gnu=mipsel-linux-gnu-g++ -CPP_mipsel-unknown-linux-gnu=mipsel-linux-gnu-gcc -AR_mipsel-unknown-linux-gnu=mipsel-linux-gnu-ar -CFG_LIB_NAME_mipsel-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_mipsel-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_mipsel-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_mipsel-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_mipsel-unknown-linux-gnu := -mips32 -mabi=32 $(CFLAGS) -CFG_GCCISH_CFLAGS_mipsel-unknown-linux-gnu := -Wall -g -fPIC -mips32 -mabi=32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_mipsel-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_mipsel-unknown-linux-gnu := -shared -fPIC -g -mips32 -CFG_GCCISH_DEF_FLAG_mipsel-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_mipsel-unknown-linux-gnu := -CFG_INSTALL_NAME_mipsel-unknown-linux-gnu = -CFG_EXE_SUFFIX_mipsel-unknown-linux-gnu := -CFG_WINDOWSY_mipsel-unknown-linux-gnu := -CFG_UNIXY_mipsel-unknown-linux-gnu := 1 -CFG_LDPATH_mipsel-unknown-linux-gnu := -CFG_RUN_mipsel-unknown-linux-gnu= -CFG_RUN_TARG_mipsel-unknown-linux-gnu= -RUSTC_FLAGS_mipsel-unknown-linux-gnu := -CFG_GNU_TRIPLE_mipsel-unknown-linux-gnu := mipsel-unknown-linux-gnu diff --git a/mk/cfg/mipsel-unknown-linux-musl.mk b/mk/cfg/mipsel-unknown-linux-musl.mk deleted file mode 100644 index db836b81c5fd5..0000000000000 --- a/mk/cfg/mipsel-unknown-linux-musl.mk +++ /dev/null @@ -1,24 +0,0 @@ -# mipsel-unknown-linux-musl configuration -CC_mipsel-unknown-linux-musl=mipsel-linux-musl-gcc -CXX_mipsel-unknown-linux-musl=mipsel-linux-musl-g++ -CPP_mipsel-unknown-linux-musl=mipsel-linux-musl-gcc -AR_mipsel-unknown-linux-musl=mipsel-linux-musl-ar -CFG_LIB_NAME_mipsel-unknown-linux-musl=lib$(1).so -CFG_STATIC_LIB_NAME_mipsel-unknown-linux-musl=lib$(1).a -CFG_LIB_GLOB_mipsel-unknown-linux-musl=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_mipsel-unknown-linux-musl=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_mipsel-unknown-linux-musl := -mips32 -mabi=32 $(CFLAGS) -CFG_GCCISH_CFLAGS_mipsel-unknown-linux-musl := -Wall -g -fPIC -mips32 -mabi=32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_mipsel-unknown-linux-musl := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_mipsel-unknown-linux-musl := -shared -fPIC -g -mips32 -CFG_GCCISH_DEF_FLAG_mipsel-unknown-linux-musl := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_mipsel-unknown-linux-musl := -CFG_INSTALL_NAME_mipsel-unknown-linux-musl = -CFG_EXE_SUFFIX_mipsel-unknown-linux-musl := -CFG_WINDOWSY_mipsel-unknown-linux-musl := -CFG_UNIXY_mipsel-unknown-linux-musl := 1 -CFG_LDPATH_mipsel-unknown-linux-musl := -CFG_RUN_mipsel-unknown-linux-musl= -CFG_RUN_TARG_mipsel-unknown-linux-musl= -RUSTC_FLAGS_mipsel-unknown-linux-musl := -CFG_GNU_TRIPLE_mipsel-unknown-linux-musl := mipsel-unknown-linux-musl diff --git a/mk/cfg/mipsel-unknown-linux-uclibc.mk b/mk/cfg/mipsel-unknown-linux-uclibc.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/mipsel-unknown-linux-uclibc.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/cfg/powerpc-unknown-linux-gnu.mk b/mk/cfg/powerpc-unknown-linux-gnu.mk deleted file mode 100644 index 9c5720de4b310..0000000000000 --- a/mk/cfg/powerpc-unknown-linux-gnu.mk +++ /dev/null @@ -1,24 +0,0 @@ -# powerpc-unknown-linux-gnu configuration -CROSS_PREFIX_powerpc-unknown-linux-gnu=powerpc-linux-gnu- -CC_powerpc-unknown-linux-gnu=$(CC) -CXX_powerpc-unknown-linux-gnu=$(CXX) -CPP_powerpc-unknown-linux-gnu=$(CPP) -AR_powerpc-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_powerpc-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_powerpc-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_powerpc-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_powerpc-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_CFLAGS_powerpc-unknown-linux-gnu := -m32 $(CFLAGS) -CFG_GCCISH_CFLAGS_powerpc-unknown-linux-gnu := -g -fPIC -m32 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_powerpc-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_powerpc-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m32 -CFG_GCCISH_DEF_FLAG_powerpc-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_powerpc-unknown-linux-gnu := -CFG_INSTALL_NAME_powerpc-unknown-linux-gnu = -CFG_EXE_SUFFIX_powerpc-unknown-linux-gnu = -CFG_WINDOWSY_powerpc-unknown-linux-gnu := -CFG_UNIXY_powerpc-unknown-linux-gnu := 1 -CFG_LDPATH_powerpc-unknown-linux-gnu := -CFG_RUN_powerpc-unknown-linux-gnu=$(2) -CFG_RUN_TARG_powerpc-unknown-linux-gnu=$(call CFG_RUN_powerpc-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_powerpc-unknown-linux-gnu := powerpc-unknown-linux-gnu diff --git a/mk/cfg/powerpc64-unknown-linux-gnu.mk b/mk/cfg/powerpc64-unknown-linux-gnu.mk deleted file mode 100644 index 389bb6f0cab49..0000000000000 --- a/mk/cfg/powerpc64-unknown-linux-gnu.mk +++ /dev/null @@ -1,25 +0,0 @@ -# powerpc64-unknown-linux-gnu configuration -CROSS_PREFIX_powerpc64-unknown-linux-gnu=powerpc-linux-gnu- -CC_powerpc64-unknown-linux-gnu=$(CC) -CXX_powerpc64-unknown-linux-gnu=$(CXX) -CPP_powerpc64-unknown-linux-gnu=$(CPP) -AR_powerpc64-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_powerpc64-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_powerpc64-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_powerpc64-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_powerpc64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_powerpc64-unknown-linux-gnu := -m64 -CFG_CFLAGS_powerpc64-unknown-linux-gnu := -m64 $(CFLAGS) -CFG_GCCISH_CFLAGS_powerpc64-unknown-linux-gnu := -g -fPIC -m64 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_powerpc64-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_powerpc64-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m64 -CFG_GCCISH_DEF_FLAG_powerpc64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_powerpc64-unknown-linux-gnu := -CFG_INSTALL_NAME_powerpc64-unknown-linux-gnu = -CFG_EXE_SUFFIX_powerpc64-unknown-linux-gnu = -CFG_WINDOWSY_powerpc64-unknown-linux-gnu := -CFG_UNIXY_powerpc64-unknown-linux-gnu := 1 -CFG_LDPATH_powerpc64-unknown-linux-gnu := -CFG_RUN_powerpc64-unknown-linux-gnu=$(2) -CFG_RUN_TARG_powerpc64-unknown-linux-gnu=$(call CFG_RUN_powerpc64-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_powerpc64-unknown-linux-gnu := powerpc64-unknown-linux-gnu diff --git a/mk/cfg/powerpc64le-unknown-linux-gnu.mk b/mk/cfg/powerpc64le-unknown-linux-gnu.mk deleted file mode 100644 index 6884fa11e7412..0000000000000 --- a/mk/cfg/powerpc64le-unknown-linux-gnu.mk +++ /dev/null @@ -1,24 +0,0 @@ -# powerpc64le-unknown-linux-gnu configuration -CROSS_PREFIX_powerpc64le-unknown-linux-gnu=powerpc64le-linux-gnu- -CC_powerpc64le-unknown-linux-gnu=$(CC) -CXX_powerpc64le-unknown-linux-gnu=$(CXX) -CPP_powerpc64le-unknown-linux-gnu=$(CPP) -AR_powerpc64le-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_powerpc64le-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_powerpc64le-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_powerpc64le-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_powerpc64le-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_CFLAGS_powerpc64le-unknown-linux-gnu := -m64 $(CFLAGS) -CFG_GCCISH_CFLAGS_powerpc64le-unknown-linux-gnu := -g -fPIC -m64 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_powerpc64le-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_powerpc64le-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m64 -CFG_GCCISH_DEF_FLAG_powerpc64le-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_powerpc64le-unknown-linux-gnu := -CFG_INSTALL_NAME_powerpc64le-unknown-linux-gnu = -CFG_EXE_SUFFIX_powerpc64le-unknown-linux-gnu = -CFG_WINDOWSY_powerpc64le-unknown-linux-gnu := -CFG_UNIXY_powerpc64le-unknown-linux-gnu := 1 -CFG_LDPATH_powerpc64le-unknown-linux-gnu := -CFG_RUN_powerpc64le-unknown-linux-gnu=$(2) -CFG_RUN_TARG_powerpc64le-unknown-linux-gnu=$(call CFG_RUN_powerpc64le-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_powerpc64le-unknown-linux-gnu := powerpc64le-unknown-linux-gnu diff --git a/mk/cfg/s390x-unknown-linux-gnu.mk b/mk/cfg/s390x-unknown-linux-gnu.mk deleted file mode 100644 index eb1cb2329c4f3..0000000000000 --- a/mk/cfg/s390x-unknown-linux-gnu.mk +++ /dev/null @@ -1,24 +0,0 @@ -# s390x-unknown-linux-gnu configuration -CROSS_PREFIX_s390x-unknown-linux-gnu=s390x-linux-gnu- -CC_s390x-unknown-linux-gnu=$(CC) -CXX_s390x-unknown-linux-gnu=$(CXX) -CPP_s390x-unknown-linux-gnu=$(CPP) -AR_s390x-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_s390x-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_s390x-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_s390x-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_s390x-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_CFLAGS_s390x-unknown-linux-gnu := -m64 $(CFLAGS) -CFG_GCCISH_CFLAGS_s390x-unknown-linux-gnu := -g -fPIC -m64 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_s390x-unknown-linux-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_s390x-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m64 -CFG_GCCISH_DEF_FLAG_s390x-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_s390x-unknown-linux-gnu := -CFG_INSTALL_NAME_s390x-unknown-linux-gnu = -CFG_EXE_SUFFIX_s390x-unknown-linux-gnu = -CFG_WINDOWSY_s390x-unknown-linux-gnu := -CFG_UNIXY_s390x-unknown-linux-gnu := 1 -CFG_LDPATH_s390x-unknown-linux-gnu := -CFG_RUN_s390x-unknown-linux-gnu=$(2) -CFG_RUN_TARG_s390x-unknown-linux-gnu=$(call CFG_RUN_s390x-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_s390x-unknown-linux-gnu := s390x-unknown-linux-gnu diff --git a/mk/cfg/sparc64-unknown-linux-gnu.mk b/mk/cfg/sparc64-unknown-linux-gnu.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/sparc64-unknown-linux-gnu.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/cfg/sparc64-unknown-netbsd.mk b/mk/cfg/sparc64-unknown-netbsd.mk deleted file mode 100644 index a2b01ba0537c7..0000000000000 --- a/mk/cfg/sparc64-unknown-netbsd.mk +++ /dev/null @@ -1,3 +0,0 @@ -# This file is intentially left empty to indicate that, while this target is -# supported, it's not supported using plain GNU Make builds. Use a --rustbuild -# instead. diff --git a/mk/cfg/wasm32-unknown-emscripten.mk b/mk/cfg/wasm32-unknown-emscripten.mk deleted file mode 100644 index 997bdfbf03ab1..0000000000000 --- a/mk/cfg/wasm32-unknown-emscripten.mk +++ /dev/null @@ -1,24 +0,0 @@ -# wasm32-unknown-emscripten configuration -CC_wasm32-unknown-emscripten=emcc -CXX_wasm32-unknown-emscripten=em++ -CPP_wasm32-unknown-emscripten=$(CPP) -AR_wasm32-unknown-emscripten=emar -CFG_LIB_NAME_wasm32-unknown-emscripten=lib$(1).so -CFG_STATIC_LIB_NAME_wasm32-unknown-emscripten=lib$(1).a -CFG_LIB_GLOB_wasm32-unknown-emscripten=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_wasm32-unknown-emscripten=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_wasm32-unknown-emscripten := -m32 $(CFLAGS) -CFG_GCCISH_CFLAGS_wasm32-unknown-emscripten := -g -fPIC -m32 -s BINARYEN=1 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_wasm32-unknown-emscripten := -fno-rtti -s BINARYEN=1 $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_wasm32-unknown-emscripten := -shared -fPIC -ldl -pthread -lrt -g -m32 -s BINARYEN=1 -CFG_GCCISH_DEF_FLAG_wasm32-unknown-emscripten := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_wasm32-unknown-emscripten := -CFG_INSTALL_NAME_wasm32-unknown-emscripten = -CFG_EXE_SUFFIX_wasm32-unknown-emscripten = -CFG_WINDOWSY_wasm32-unknown-emscripten := -CFG_UNIXY_wasm32-unknown-emscripten := 1 -CFG_LDPATH_wasm32-unknown-emscripten := -CFG_RUN_wasm32-unknown-emscripten=$(2) -CFG_RUN_TARG_wasm32-unknown-emscripten=$(call CFG_RUN_wasm32-unknown-emscripten,,$(2)) -CFG_GNU_TRIPLE_wasm32-unknown-emscripten := wasm32-unknown-emscripten -CFG_DISABLE_JEMALLOC_wasm32-unknown-emscripten := 1 diff --git a/mk/cfg/x86_64-apple-darwin.mk b/mk/cfg/x86_64-apple-darwin.mk deleted file mode 100644 index 8af47b671a850..0000000000000 --- a/mk/cfg/x86_64-apple-darwin.mk +++ /dev/null @@ -1,23 +0,0 @@ -# x86_64-apple-darwin configuration -CC_x86_64-apple-darwin=$(CC) -CXX_x86_64-apple-darwin=$(CXX) -CPP_x86_64-apple-darwin=$(CPP) -AR_x86_64-apple-darwin=$(AR) -CFG_LIB_NAME_x86_64-apple-darwin=lib$(1).dylib -CFG_STATIC_LIB_NAME_x86_64-apple-darwin=lib$(1).a -CFG_LIB_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib -CFG_LIB_DSYM_GLOB_x86_64-apple-darwin=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-apple-darwin := -m64 -arch x86_64 $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-apple-darwin := -g -fPIC -m64 -arch x86_64 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_x86_64-apple-darwin := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-apple-darwin := -dynamiclib -pthread -framework CoreServices -m64 -CFG_GCCISH_DEF_FLAG_x86_64-apple-darwin := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_x86_64-apple-darwin := -CFG_INSTALL_NAME_x86_64-apple-darwin = -Wl,-install_name,@rpath/$(1) -CFG_EXE_SUFFIX_x86_64-apple-darwin := -CFG_WINDOWSY_x86_64-apple-darwin := -CFG_UNIXY_x86_64-apple-darwin := 1 -CFG_LDPATH_x86_64-apple-darwin := -CFG_RUN_x86_64-apple-darwin=$(2) -CFG_RUN_TARG_x86_64-apple-darwin=$(call CFG_RUN_x86_64-apple-darwin,,$(2)) -CFG_GNU_TRIPLE_x86_64-apple-darwin := x86_64-apple-darwin diff --git a/mk/cfg/x86_64-apple-ios.mk b/mk/cfg/x86_64-apple-ios.mk deleted file mode 100644 index 764cdc15996d0..0000000000000 --- a/mk/cfg/x86_64-apple-ios.mk +++ /dev/null @@ -1,32 +0,0 @@ -# x86_64-apple-ios configuration -CFG_SDK_NAME_x86_64-apple-ios := iphonesimulator -CFG_SDK_ARCHS_x86_64-apple-ios := x86_64 -ifneq ($(findstring darwin,$(CFG_OSTYPE)),) -CFG_IOSSIM_SDK_x86_64-apple-ios := $(shell xcrun --show-sdk-path -sdk iphonesimulator 2>/dev/null) -CFG_IOSSIM_FLAGS_x86_64-apple-ios := -m64 -target x86_64-apple-ios -isysroot $(CFG_IOSSIM_SDK_x86_64-apple-ios) -mios-simulator-version-min=7.0 -CC_x86_64-apple-ios = $(shell xcrun -find -sdk iphonesimulator clang) -CXX_x86_64-apple-ios = $(shell xcrun -find -sdk iphonesimulator clang++) -CPP_x86_64-apple-ios = $(shell xcrun -find -sdk iphonesimulator clang++) -AR_x86_64-apple-ios = $(shell xcrun -find -sdk iphonesimulator ar) -endif -CFG_LIB_NAME_x86_64-apple-ios = lib$(1).a -CFG_LIB_GLOB_x86_64-apple-ios = lib$(1)-*.a -CFG_INSTALL_ONLY_RLIB_x86_64-apple-ios = 1 -CFG_STATIC_LIB_NAME_x86_64-apple-ios=lib$(1).a -CFG_LIB_DSYM_GLOB_x86_64-apple-ios = lib$(1)-*.a.dSYM -CFG_CFLAGS_x86_64-apple-ios := $(CFG_IOSSIM_FLAGS_x86_64-apple-ios) -CFG_JEMALLOC_CFLAGS_x86_64-apple-ios := $(CFG_IOSSIM_FLAGS_x86_64-apple-ios) -CFG_GCCISH_CFLAGS_x86_64-apple-ios := -fPIC $(CFG_IOSSIM_FLAGS_x86_64-apple-ios) -CFG_GCCISH_CXXFLAGS_x86_64-apple-ios := -fno-rtti $(CFG_IOSSIM_FLAGS_x86_64-apple-ios) -I$(CFG_IOSSIM_SDK_x86_64-apple-ios)/usr/include/c++/4.2.1 -CFG_GCCISH_LINK_FLAGS_x86_64-apple-ios := -lpthread -Wl,-no_compact_unwind -m64 -Wl,-syslibroot $(CFG_IOSSIM_SDK_x86_64-apple-ios) -CFG_GCCISH_DEF_FLAG_x86_64-apple-ios := -Wl,-exported_symbols_list, -CFG_LLC_FLAGS_x86_64-apple-ios := -CFG_INSTALL_NAME_x86_64-apple-ios = -Wl,-install_name,@rpath/$(1) -CFG_LIBUV_LINK_FLAGS_x86_64-apple-ios := -CFG_EXE_SUFFIX_x86_64-apple-ios := -CFG_WINDOWSY_x86_64-apple-ios := -CFG_UNIXY_x86_64-apple-ios := 1 -CFG_LDPATH_x86_64-apple-ios := -CFG_RUN_x86_64-apple-ios = $(2) -CFG_RUN_TARG_x86_64-apple-ios = $(call CFG_RUN_x86_64-apple-ios,,$(2)) -CFG_GNU_TRIPLE_i386-apple-ios := x86_64-apple-ios diff --git a/mk/cfg/x86_64-pc-windows-gnu.mk b/mk/cfg/x86_64-pc-windows-gnu.mk deleted file mode 100644 index 82e7b23279fb5..0000000000000 --- a/mk/cfg/x86_64-pc-windows-gnu.mk +++ /dev/null @@ -1,27 +0,0 @@ -# x86_64-pc-windows-gnu configuration -CROSS_PREFIX_x86_64-pc-windows-gnu=x86_64-w64-mingw32- -CC_x86_64-pc-windows-gnu=gcc -CXX_x86_64-pc-windows-gnu=g++ -CPP_x86_64-pc-windows-gnu=gcc -E -AR_x86_64-pc-windows-gnu=ar -CFG_LIB_NAME_x86_64-pc-windows-gnu=$(1).dll -CFG_STATIC_LIB_NAME_x86_64-pc-windows-gnu=$(1).lib -CFG_LIB_GLOB_x86_64-pc-windows-gnu=$(1)-*.dll -CFG_LIB_DSYM_GLOB_x86_64-pc-windows-gnu=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-pc-windows-gnu := -m64 -D_WIN32_WINNT=0x0600 -D__USE_MINGW_ANSI_STDIO=1 $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-pc-windows-gnu := -g -m64 -D_WIN32_WINNT=0x0600 -D__USE_MINGW_ANSI_STDIO=1 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_x86_64-pc-windows-gnu := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-pc-windows-gnu := -shared -g -m64 -CFG_GCCISH_DEF_FLAG_x86_64-pc-windows-gnu := -CFG_LLC_FLAGS_x86_64-pc-windows-gnu := -CFG_INSTALL_NAME_x86_64-pc-windows-gnu = -CFG_EXE_SUFFIX_x86_64-pc-windows-gnu := .exe -CFG_WINDOWSY_x86_64-pc-windows-gnu := 1 -CFG_UNIXY_x86_64-pc-windows-gnu := -CFG_LDPATH_x86_64-pc-windows-gnu := -CFG_RUN_x86_64-pc-windows-gnu=$(2) -CFG_RUN_TARG_x86_64-pc-windows-gnu=$(call CFG_RUN_x86_64-pc-windows-gnu,,$(2)) -CFG_GNU_TRIPLE_x86_64-pc-windows-gnu := x86_64-w64-mingw32 -CFG_THIRD_PARTY_OBJECTS_x86_64-pc-windows-gnu := crt2.o dllcrt2.o -CFG_INSTALLED_OBJECTS_x86_64-pc-windows-gnu := crt2.o dllcrt2.o rsbegin.o rsend.o -CFG_RUSTRT_HAS_STARTUP_OBJS_x86_64-pc-windows-gnu := 1 diff --git a/mk/cfg/x86_64-pc-windows-msvc.mk b/mk/cfg/x86_64-pc-windows-msvc.mk deleted file mode 100644 index 30e996a97273f..0000000000000 --- a/mk/cfg/x86_64-pc-windows-msvc.mk +++ /dev/null @@ -1,28 +0,0 @@ -# x86_64-pc-windows-msvc configuration -CC_x86_64-pc-windows-msvc=$(CFG_MSVC_CL_x86_64) -LINK_x86_64-pc-windows-msvc=$(CFG_MSVC_LINK_x86_64) -CXX_x86_64-pc-windows-msvc=$(CFG_MSVC_CL_x86_64) -CPP_x86_64-pc-windows-msvc=$(CFG_MSVC_CL_x86_64) -AR_x86_64-pc-windows-msvc=$(CFG_MSVC_LIB_x86_64) -CFG_LIB_NAME_x86_64-pc-windows-msvc=$(1).dll -CFG_STATIC_LIB_NAME_x86_64-pc-windows-msvc=$(1).lib -CFG_LIB_GLOB_x86_64-pc-windows-msvc=$(1)-*.{dll,lib} -CFG_LIB_DSYM_GLOB_x86_64-pc-windows-msvc=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-pc-windows-msvc := -CFG_GCCISH_CFLAGS_x86_64-pc-windows-msvc := -MD -nologo -CFG_GCCISH_CXXFLAGS_x86_64-pc-windows-msvc := -MD -nologo -CFG_GCCISH_LINK_FLAGS_x86_64-pc-windows-msvc := -CFG_GCCISH_DEF_FLAG_x86_64-pc-windows-msvc := -CFG_LLC_FLAGS_x86_64-pc-windows-msvc := -CFG_INSTALL_NAME_x86_64-pc-windows-msvc = -CFG_EXE_SUFFIX_x86_64-pc-windows-msvc := .exe -CFG_WINDOWSY_x86_64-pc-windows-msvc := 1 -CFG_UNIXY_x86_64-pc-windows-msvc := -CFG_LDPATH_x86_64-pc-windows-msvc := -CFG_RUN_x86_64-pc-windows-msvc=$(2) -CFG_RUN_TARG_x86_64-pc-windows-msvc=$(call CFG_RUN_x86_64-pc-windows-msvc,,$(2)) -CFG_GNU_TRIPLE_x86_64-pc-windows-msvc := x86_64-pc-win32 - -# Currently the build system is not configured to build jemalloc -# with MSVC, so we omit this optional dependency. -CFG_DISABLE_JEMALLOC_x86_64-pc-windows-msvc := 1 diff --git a/mk/cfg/x86_64-rumprun-netbsd.mk b/mk/cfg/x86_64-rumprun-netbsd.mk deleted file mode 100644 index 53d58b9fceaa6..0000000000000 --- a/mk/cfg/x86_64-rumprun-netbsd.mk +++ /dev/null @@ -1,25 +0,0 @@ -# x86_64-rumprun-netbsd configuration -CROSS_PREFIX_x86_64-rumprun-netbsd=x86_64-rumprun-netbsd- -CC_x86_64-rumprun-netbsd=gcc -CXX_x86_64-rumprun-netbsd=g++ -CPP_x86_64-rumprun-netbsd=gcc -E -AR_x86_64-rumprun-netbsd=ar -CFG_INSTALL_ONLY_RLIB_x86_64-rumprun-netbsd = 1 -CFG_LIB_NAME_x86_64-rumprun-netbsd=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-rumprun-netbsd=lib$(1).a -CFG_LIB_GLOB_x86_64-rumprun-netbsd=lib$(1)-*.so -CFG_JEMALLOC_CFLAGS_x86_64-rumprun-netbsd := -m64 -CFG_GCCISH_CFLAGS_x86_64-rumprun-netbsd := -g -fPIC -m64 -CFG_GCCISH_CXXFLAGS_x86_64-rumprun-netbsd := -CFG_GCCISH_LINK_FLAGS_x86_64-rumprun-netbsd := -CFG_GCCISH_DEF_FLAG_x86_64-rumprun-netbsd := -CFG_LLC_FLAGS_x86_64-rumprun-netbsd := -CFG_INSTALL_NAME_x86_64-rumprun-netbsd = -CFG_EXE_SUFFIX_x86_64-rumprun-netbsd = -CFG_WINDOWSY_x86_64-rumprun-netbsd := -CFG_UNIXY_x86_64-rumprun-netbsd := 1 -CFG_LDPATH_x86_64-rumprun-netbsd := -CFG_RUN_x86_64-rumprun-netbsd=$(2) -CFG_RUN_TARG_x86_64-rumprun-netbsd=$(call CFG_RUN_x86_64-rumprun-netbsd,,$(2)) -CFG_GNU_TRIPLE_x86_64-rumprun-netbsd := x86_64-rumprun-netbsd -CFG_DISABLE_JEMALLOC_x86_64-rumprun-netbsd := 1 diff --git a/mk/cfg/x86_64-sun-solaris.mk b/mk/cfg/x86_64-sun-solaris.mk deleted file mode 100644 index 7fc323b234aee..0000000000000 --- a/mk/cfg/x86_64-sun-solaris.mk +++ /dev/null @@ -1,23 +0,0 @@ -# x86_64-sun-solaris configuration -CROSS_PREFIX_x86_64-sun-solaris=x86_64-sun-solaris2.11- -CC_x86_64-sun-solaris=$(CC) -CXX_x86_64-sun-solaris=$(CXX) -CPP_x86_64-sun-solaris=$(CPP) -AR_x86_64-sun-solaris=$(AR) -CFG_LIB_NAME_x86_64-sun-solaris=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-sun-solaris=lib$(1).a -CFG_LIB_GLOB_x86_64-sun-solaris=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-sun-solaris=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-sun-solaris := -I/usr/local/include $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-sun-solaris := -g -D_POSIX_PTHREAD_SEMANTICS -fPIC -I/usr/local/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-sun-solaris := -shared -fPIC -g -pthread -lrt -CFG_GCCISH_DEF_FLAG_x86_64-sun-solaris := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-sun-solaris := -CFG_INSTALL_NAME_x86_64-sun-solaris = -CFG_EXE_SUFFIX_x86_64-sun-solaris := -CFG_WINDOWSY_x86_64-sun-solaris := -CFG_UNIXY_x86_64-sun-solaris := 1 -CFG_LDPATH_x86_64-sun-solaris := -CFG_RUN_x86_64-sun-solaris=$(2) -CFG_RUN_TARG_x86_64-sun-solaris=$(call CFG_RUN_x86_64-sun-solaris,,$(2)) -CFG_GNU_TRIPLE_x86_64-sun-solaris := x86_64-sun-solaris diff --git a/mk/cfg/x86_64-unknown-bitrig.mk b/mk/cfg/x86_64-unknown-bitrig.mk deleted file mode 100644 index 8ac31c176188b..0000000000000 --- a/mk/cfg/x86_64-unknown-bitrig.mk +++ /dev/null @@ -1,23 +0,0 @@ -# x86_64-unknown-bitrig-elf configuration -CC_x86_64-unknown-bitrig=$(CC) -CXX_x86_64-unknown-bitrig=$(CXX) -CPP_x86_64-unknown-bitrig=$(CPP) -AR_x86_64-unknown-bitrig=$(AR) -CFG_LIB_NAME_x86_64-unknown-bitrig=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-bitrig=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-bitrig=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-bitrig=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-unknown-bitrig := -m64 -I/usr/include $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-unknown-bitrig := -fPIE -fPIC -m64 -I/usr/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-bitrig := -shared -pic -pthread -m64 $(LDFLAGS) -CFG_GCCISH_DEF_FLAG_x86_64-unknown-bitrig := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-unknown-bitrig := -CFG_INSTALL_NAME_x86_64-unknown-bitrig = -CFG_EXE_SUFFIX_x86_64-unknown-bitrig := -CFG_WINDOWSY_x86_64-unknown-bitrig := -CFG_UNIXY_x86_64-unknown-bitrig := 1 -CFG_LDPATH_x86_64-unknown-bitrig := -CFG_RUN_x86_64-unknown-bitrig=$(2) -CFG_RUN_TARG_x86_64-unknown-bitrig=$(call CFG_RUN_x86_64-unknown-bitrig,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-bitrig := x86_64-unknown-bitrig -CFG_DISABLE_JEMALLOC_x86_64-unknown-bitrig := 1 diff --git a/mk/cfg/x86_64-unknown-dragonfly.mk b/mk/cfg/x86_64-unknown-dragonfly.mk deleted file mode 100644 index 579a9a809e205..0000000000000 --- a/mk/cfg/x86_64-unknown-dragonfly.mk +++ /dev/null @@ -1,22 +0,0 @@ -# x86_64-pc-dragonfly-elf configuration -CC_x86_64-unknown-dragonfly=$(CC) -CXX_x86_64-unknown-dragonfly=$(CXX) -CPP_x86_64-unknown-dragonfly=$(CPP) -AR_x86_64-unknown-dragonfly=$(AR) -CFG_LIB_NAME_x86_64-unknown-dragonfly=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-dragonfly=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-dragonfly=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-dragonfly=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-unknown-dragonfly := -m64 -I/usr/include -I/usr/local/include $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-unknown-dragonfly := -g -fPIC -m64 -I/usr/include -I/usr/local/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-dragonfly := -shared -fPIC -g -pthread -lrt -m64 -CFG_GCCISH_DEF_FLAG_x86_64-unknown-dragonfly := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-unknown-dragonfly := -CFG_INSTALL_NAME_x86_64-unknown-dragonfly = -CFG_EXE_SUFFIX_x86_64-unknown-dragonfly := -CFG_WINDOWSY_x86_64-unknown-dragonfly := -CFG_UNIXY_x86_64-unknown-dragonfly := 1 -CFG_LDPATH_x86_64-unknown-dragonfly := -CFG_RUN_x86_64-unknown-dragonfly=$(2) -CFG_RUN_TARG_x86_64-unknown-dragonfly=$(call CFG_RUN_x86_64-unknown-dragonfly,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-dragonfly := x86_64-unknown-dragonfly diff --git a/mk/cfg/x86_64-unknown-freebsd.mk b/mk/cfg/x86_64-unknown-freebsd.mk deleted file mode 100644 index c700601eac7a1..0000000000000 --- a/mk/cfg/x86_64-unknown-freebsd.mk +++ /dev/null @@ -1,22 +0,0 @@ -# x86_64-unknown-freebsd configuration -CC_x86_64-unknown-freebsd=$(CC) -CXX_x86_64-unknown-freebsd=$(CXX) -CPP_x86_64-unknown-freebsd=$(CPP) -AR_x86_64-unknown-freebsd=$(AR) -CFG_LIB_NAME_x86_64-unknown-freebsd=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-freebsd=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-freebsd=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-freebsd=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-unknown-freebsd := -I/usr/local/include $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-unknown-freebsd := -g -fPIC -I/usr/local/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-freebsd := -shared -fPIC -g -pthread -lrt -CFG_GCCISH_DEF_FLAG_x86_64-unknown-freebsd := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-unknown-freebsd := -CFG_INSTALL_NAME_x86_64-unknown-freebsd = -CFG_EXE_SUFFIX_x86_64-unknown-freebsd := -CFG_WINDOWSY_x86_64-unknown-freebsd := -CFG_UNIXY_x86_64-unknown-freebsd := 1 -CFG_LDPATH_x86_64-unknown-freebsd := -CFG_RUN_x86_64-unknown-freebsd=$(2) -CFG_RUN_TARG_x86_64-unknown-freebsd=$(call CFG_RUN_x86_64-unknown-freebsd,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-freebsd := x86_64-unknown-freebsd diff --git a/mk/cfg/x86_64-unknown-fuchsia.mk b/mk/cfg/x86_64-unknown-fuchsia.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/x86_64-unknown-fuchsia.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/cfg/x86_64-unknown-haiku.mk b/mk/cfg/x86_64-unknown-haiku.mk deleted file mode 100644 index 4c2d888be06fb..0000000000000 --- a/mk/cfg/x86_64-unknown-haiku.mk +++ /dev/null @@ -1,27 +0,0 @@ -# x86_64-unknown-haiku configuration -CROSS_PREFIX_x86_64-unknown-haiku=x86_64-unknown-haiku- -CC_x86_64-unknown-haiku=$(CC) -CXX_x86_64-unknown-haiku=$(CXX) -CPP_x86_64-unknown-haiku=$(CPP) -AR_x86_64-unknown-haiku=$(AR) -CFG_LIB_NAME_x86_64-unknown-haiku=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-haiku=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-haiku=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-haiku=lib$(1)-*.dylib.dSYM -CFG_CFLAGS_x86_64-unknown-haiku := -m64 $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-unknown-haiku := -Wall -Werror -g -fPIC -m64 $(CFLAGS) -CFG_GCCISH_CXXFLAGS_x86_64-unknown-haiku := -fno-rtti $(CXXFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-haiku := -shared -fPIC -ldl -pthread -lrt -g -m64 -CFG_GCCISH_PRE_LIB_FLAGS_x86_64-unknown-haiku := -Wl,-whole-archive -CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-haiku := -Wl,-no-whole-archive -CFG_DEF_SUFFIX_x86_64-unknown-haiku := .linux.def -CFG_LLC_FLAGS_x86_64-unknown-haiku := -CFG_INSTALL_NAME_x86_64-unknown-haiku = -CFG_EXE_SUFFIX_x86_64-unknown-haiku = -CFG_WINDOWSY_x86_64-unknown-haiku := -CFG_UNIXY_x86_64-unknown-haiku := 1 -CFG_PATH_MUNGE_x86_64-unknown-haiku := true -CFG_LDPATH_x86_64-unknown-haiku := -CFG_RUN_x86_64-unknown-haiku=$(2) -CFG_RUN_TARG_x86_64-unknown-haiku=$(call CFG_RUN_x86_64-unknown-haiku,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-haiku := x86_64-unknown-haiku diff --git a/mk/cfg/x86_64-unknown-linux-gnu.mk b/mk/cfg/x86_64-unknown-linux-gnu.mk deleted file mode 100644 index 817ce22e4f59d..0000000000000 --- a/mk/cfg/x86_64-unknown-linux-gnu.mk +++ /dev/null @@ -1,23 +0,0 @@ -# x86_64-unknown-linux-gnu configuration -CC_x86_64-unknown-linux-gnu=$(CC) -CXX_x86_64-unknown-linux-gnu=$(CXX) -CPP_x86_64-unknown-linux-gnu=$(CPP) -AR_x86_64-unknown-linux-gnu=$(AR) -CFG_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-linux-gnu=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-linux-gnu=lib$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-unknown-linux-gnu := -m64 -CFG_GCCISH_CFLAGS_x86_64-unknown-linux-gnu := -g -fPIC -m64 -CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-gnu := -fno-rtti -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-gnu := -shared -fPIC -ldl -pthread -lrt -g -m64 -CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-gnu := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-unknown-linux-gnu := -CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = -CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = -CFG_WINDOWSY_x86_64-unknown-linux-gnu := -CFG_UNIXY_x86_64-unknown-linux-gnu := 1 -CFG_LDPATH_x86_64-unknown-linux-gnu := -CFG_RUN_x86_64-unknown-linux-gnu=$(2) -CFG_RUN_TARG_x86_64-unknown-linux-gnu=$(call CFG_RUN_x86_64-unknown-linux-gnu,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-linux-gnu := x86_64-unknown-linux-gnu diff --git a/mk/cfg/x86_64-unknown-linux-musl.mk b/mk/cfg/x86_64-unknown-linux-musl.mk deleted file mode 100644 index 6f707ac3b3fb8..0000000000000 --- a/mk/cfg/x86_64-unknown-linux-musl.mk +++ /dev/null @@ -1,29 +0,0 @@ -# x86_64-unknown-linux-musl configuration -CC_x86_64-unknown-linux-musl=$(CFG_MUSL_ROOT)/bin/musl-gcc -CXX_x86_64-unknown-linux-musl=$(CXX) -CPP_x86_64-unknown-linux-musl=$(CFG_MUSL_ROOT)/bin/musl-gcc -E -AR_x86_64-unknown-linux-musl=$(AR) -CFG_INSTALL_ONLY_RLIB_x86_64-unknown-linux-musl = 1 -CFG_LIB_NAME_x86_64-unknown-linux-musl=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-linux-musl=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-linux-musl=lib$(1)-*.so -CFG_JEMALLOC_CFLAGS_x86_64-unknown-linux-musl := -m64 -Wa,-mrelax-relocations=no -CFG_GCCISH_CFLAGS_x86_64-unknown-linux-musl := -g -fPIC -m64 -Wa,-mrelax-relocations=no -CFG_GCCISH_CXXFLAGS_x86_64-unknown-linux-musl := -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-linux-musl := -CFG_GCCISH_DEF_FLAG_x86_64-unknown-linux-musl := -CFG_LLC_FLAGS_x86_64-unknown-linux-musl := -CFG_INSTALL_NAME_x86_64-unknown-linux-musl = -CFG_EXE_SUFFIX_x86_64-unknown-linux-musl = -CFG_WINDOWSY_x86_64-unknown-linux-musl := -CFG_UNIXY_x86_64-unknown-linux-musl := 1 -CFG_LDPATH_x86_64-unknown-linux-musl := -CFG_RUN_x86_64-unknown-linux-musl=$(2) -CFG_RUN_TARG_x86_64-unknown-linux-musl=$(call CFG_RUN_x86_64-unknown-linux-musl,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-linux-musl := x86_64-unknown-linux-musl -CFG_THIRD_PARTY_OBJECTS_x86_64-unknown-linux-musl := crt1.o crti.o crtn.o -CFG_INSTALLED_OBJECTS_x86_64-unknown-linux-musl := crt1.o crti.o crtn.o - -NATIVE_DEPS_libc_T_x86_64-unknown-linux-musl += libc.a -NATIVE_DEPS_std_T_x86_64-unknown-linux-musl += crt1.o crti.o crtn.o -NATIVE_DEPS_unwind_T_x86_64-unknown-linux-musl += libunwind.a diff --git a/mk/cfg/x86_64-unknown-netbsd.mk b/mk/cfg/x86_64-unknown-netbsd.mk deleted file mode 100644 index 93bb2d672653e..0000000000000 --- a/mk/cfg/x86_64-unknown-netbsd.mk +++ /dev/null @@ -1,23 +0,0 @@ -# x86_64-unknown-netbsd configuration -CROSS_PREFIX_x86_64-unknown-netbsd=x86_64-unknown-netbsd- -CC_x86_64-unknown-netbsd=$(CC) -CXX_x86_64-unknown-netbsd=$(CXX) -CPP_x86_64-unknown-netbsd=$(CPP) -AR_x86_64-unknown-netbsd=$(AR) -CFG_LIB_NAME_x86_64-unknown-netbsd=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-netbsd=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-netbsd=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-netbsd=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-unknown-netbsd := -I/usr/local/include $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-unknown-netbsd := -g -fPIC -I/usr/local/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-netbsd := -shared -fPIC -g -pthread -lrt -CFG_GCCISH_DEF_FLAG_x86_64-unknown-netbsd := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-unknown-netbsd := -CFG_INSTALL_NAME_x86_64-unknown-netbsd = -CFG_EXE_SUFFIX_x86_64-unknown-netbsd := -CFG_WINDOWSY_x86_64-unknown-netbsd := -CFG_UNIXY_x86_64-unknown-netbsd := 1 -CFG_LDPATH_x86_64-unknown-netbsd := -CFG_RUN_x86_64-unknown-netbsd=$(2) -CFG_RUN_TARG_x86_64-unknown-netbsd=$(call CFG_RUN_x86_64-unknown-netbsd,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-netbsd := x86_64-unknown-netbsd diff --git a/mk/cfg/x86_64-unknown-openbsd.mk b/mk/cfg/x86_64-unknown-openbsd.mk deleted file mode 100644 index 7cca1f7b18b3d..0000000000000 --- a/mk/cfg/x86_64-unknown-openbsd.mk +++ /dev/null @@ -1,24 +0,0 @@ -# x86_64-pc-openbsd-elf configuration -CC_x86_64-unknown-openbsd=$(CC) -CXX_x86_64-unknown-openbsd=$(CXX) -CPP_x86_64-unknown-openbsd=$(CPP) -AR_x86_64-unknown-openbsd=$(AR) -CFG_LIB_NAME_x86_64-unknown-openbsd=lib$(1).so -CFG_STATIC_LIB_NAME_x86_64-unknown-openbsd=lib$(1).a -CFG_LIB_GLOB_x86_64-unknown-openbsd=lib$(1)-*.so -CFG_LIB_DSYM_GLOB_x86_64-unknown-openbsd=$(1)-*.dylib.dSYM -CFG_JEMALLOC_CFLAGS_x86_64-unknown-openbsd := -m64 -I/usr/include $(CFLAGS) -CFG_GCCISH_CFLAGS_x86_64-unknown-openbsd := -g -fPIC -m64 -I/usr/include $(CFLAGS) -CFG_GCCISH_LINK_FLAGS_x86_64-unknown-openbsd := -shared -fPIC -g -pthread -m64 -CFG_GCCISH_DEF_FLAG_x86_64-unknown-openbsd := -Wl,--export-dynamic,--dynamic-list= -CFG_LLC_FLAGS_x86_64-unknown-openbsd := -CFG_INSTALL_NAME_x86_64-unknown-openbsd = -CFG_EXE_SUFFIX_x86_64-unknown-openbsd := -CFG_WINDOWSY_x86_64-unknown-openbsd := -CFG_UNIXY_x86_64-unknown-openbsd := 1 -CFG_LDPATH_x86_64-unknown-openbsd := -CFG_RUN_x86_64-unknown-openbsd=$(2) -CFG_RUN_TARG_x86_64-unknown-openbsd=$(call CFG_RUN_x86_64-unknown-openbsd,,$(2)) -CFG_GNU_TRIPLE_x86_64-unknown-openbsd := x86_64-unknown-openbsd -RUSTC_FLAGS_x86_64-unknown-openbsd=-C linker=$(call FIND_COMPILER,$(CC)) -CFG_DISABLE_JEMALLOC_x86_64-unknown-openbsd := 1 diff --git a/mk/cfg/x86_64-unknown-redox.mk b/mk/cfg/x86_64-unknown-redox.mk deleted file mode 100644 index 34aee77ae2107..0000000000000 --- a/mk/cfg/x86_64-unknown-redox.mk +++ /dev/null @@ -1 +0,0 @@ -# rustbuild-only target diff --git a/mk/clean.mk b/mk/clean.mk deleted file mode 100644 index 7013d9f03f836..0000000000000 --- a/mk/clean.mk +++ /dev/null @@ -1,122 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# Cleanup -###################################################################### - -CLEAN_STAGE_RULES := \ - $(foreach stage, $(STAGES), \ - $(foreach host, $(CFG_HOST), \ - clean$(stage)_H_$(host) \ - $(foreach target, $(CFG_TARGET), \ - clean$(stage)_T_$(target)_H_$(host)))) - -CLEAN_STAGE_RULES := $(CLEAN_STAGE_RULES) \ - $(foreach host, $(CFG_HOST), clean-generic-H-$(host)) - -CLEAN_STAGE_RULES := $(CLEAN_STAGE_RULES) \ - $(foreach host, $(CFG_TARGET), clean-generic-T-$(host)) - -CLEAN_LLVM_RULES = \ - $(foreach target, $(CFG_HOST), \ - clean-llvm$(target)) - -.PHONY: clean clean-all clean-misc clean-llvm - -clean-all: clean clean-llvm - -clean-llvm: $(CLEAN_LLVM_RULES) - -clean: clean-misc clean-grammar $(CLEAN_STAGE_RULES) - -clean-misc: - @$(call E, cleaning) - $(Q)rm -f $(RUNTIME_OBJS) $(RUNTIME_DEF) - $(Q)rm -f $(RUSTLLVM_LIB_OBJS) $(RUSTLLVM_OBJS_OBJS) $(RUSTLLVM_DEF) - $(Q)rm -Rf $(GENERATED) - $(Q)rm -Rf tmp/* - $(Q)rm -Rf rust-stage0-*.tar.bz2 $(PKG_NAME)-*.tar.gz $(PKG_NAME)-*.exe - $(Q)rm -Rf dist/* - $(Q)rm -Rf doc - -clean-grammar: - @$(call E, cleaning grammar verification) - $(Q)rm -Rf grammar -define CLEAN_GENERIC - -clean-generic-$(2)-$(1): - $(Q)find $(1)/rustllvm \ - $(1)/rt \ - $(1)/test \ - $(1)/stage* \ - -type f \( \ - -name '*.[odasS]' -o \ - -name '*.so' -o \ - -name '*.dylib' -o \ - -name '*.rlib' -o \ - -name 'stamp.*' -o \ - -name '*.lib' -o \ - -name '*.dll' -o \ - -name '*.def' -o \ - -name '*.py' -o \ - -name '*.pyc' -o \ - -name '*.bc' -o \ - -name '*.rs' \ - \) \ - | xargs rm -f - $(Q)find $(1) \ - -name '*.dSYM' \ - | xargs rm -Rf -endef - -$(foreach host, $(CFG_HOST), $(eval $(call CLEAN_GENERIC,$(host),H))) -$(foreach targ, $(CFG_TARGET), $(eval $(call CLEAN_GENERIC,$(targ),T))) - -define CLEAN_HOST_STAGE_N - -clean$(1)_H_$(2): \ - $$(foreach crate,$$(CRATES),clean$(1)_H_$(2)-lib-$$(crate)) \ - $$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS_ALL),clean$(1)_H_$(2)-tool-$$(tool)) - $$(Q)rm -fr $(2)/rt/libbacktrace - -clean$(1)_H_$(2)-tool-%: - $$(Q)rm -f $$(HBIN$(1)_H_$(2))/$$*$$(X_$(2)) - -clean$(1)_H_$(2)-lib-%: - $$(Q)rm -f $$(HLIB$(1)_H_$(2))/$$(call CFG_LIB_GLOB_$(2),$$*) - $$(Q)rm -f $$(HLIB$(1)_H_$(2))/$$(call CFG_RLIB_GLOB,$$*) - -endef - -$(foreach host, $(CFG_HOST), \ - $(eval $(foreach stage, $(STAGES), \ - $(eval $(call CLEAN_HOST_STAGE_N,$(stage),$(host)))))) - -define CLEAN_TARGET_STAGE_N - -clean$(1)_T_$(2)_H_$(3): \ - $$(foreach crate,$$(CRATES),clean$(1)_T_$(2)_H_$(3)-lib-$$(crate)) \ - $$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS_ALL),clean$(1)_T_$(2)_H_$(3)-tool-$$(tool)) - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/librun_pass_stage* # For unix - $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/run_pass_stage* # For windows - -clean$(1)_T_$(2)_H_$(3)-tool-%: - $$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/$$*$$(X_$(2)) - -clean$(1)_T_$(2)_H_$(3)-lib-%: - $$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$$(call CFG_LIB_GLOB_$(2),$$*) - $$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$$(call CFG_RLIB_GLOB,$$*) -endef - -$(foreach host, $(CFG_HOST), \ - $(eval $(foreach target, $(CFG_TARGET), \ - $(eval $(foreach stage, 0 1 2 3, \ - $(eval $(call CLEAN_TARGET_STAGE_N,$(stage),$(target),$(host)))))))) diff --git a/mk/crates.mk b/mk/crates.mk deleted file mode 100644 index 320ba44ed805d..0000000000000 --- a/mk/crates.mk +++ /dev/null @@ -1,228 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -################################################################################ -# Rust's standard distribution of crates and tools -# -# The crates outlined below are the standard distribution of libraries provided -# in a rust installation. These rules are meant to abstract over the -# dependencies (both native and rust) of crates and basically generate all the -# necessary makefile rules necessary to build everything. -# -# Here's an explanation of the variables below -# -# TARGET_CRATES -# This list of crates will be built for all targets, including -# cross-compiled targets -# -# HOST_CRATES -# This list of crates will be compiled for only host targets. Note that -# this set is explicitly *not* a subset of TARGET_CRATES, but rather it is -# a disjoint set. Nothing in the TARGET_CRATES set can depend on crates in -# the HOST_CRATES set, but the HOST_CRATES set can depend on target -# crates. -# -# TOOLS -# A list of all tools which will be built as part of the compilation -# process. It is currently assumed that most tools are built through -# src/driver/driver.rs with a particular configuration (there's a -# corresponding library providing the implementation) -# -# DEPS_ -# These lists are the dependencies of the that is to be built. -# Rust dependencies are listed bare (i.e. std) and native -# dependencies have a "native:" prefix (i.e. native:hoedown). All deps -# will be built before the crate itself is built. -# -# TOOL_DEPS_/TOOL_SOURCE_ -# Similar to the DEPS variable, this is the library crate dependencies -# list for tool as well as the source file for the specified tool -# -# You shouldn't need to modify much other than these variables. Crates are -# automatically generated for all stage/host/target combinations. -################################################################################ - -TARGET_CRATES := libc std term \ - getopts collections test rand \ - compiler_builtins core alloc \ - std_unicode rustc_bitflags \ - alloc_system alloc_jemalloc \ - panic_abort panic_unwind unwind -RUSTC_CRATES := rustc rustc_typeck rustc_mir rustc_borrowck rustc_resolve rustc_driver \ - rustc_trans rustc_back rustc_llvm rustc_privacy rustc_lint \ - rustc_data_structures rustc_platform_intrinsics rustc_errors \ - rustc_plugin rustc_metadata rustc_passes rustc_save_analysis \ - rustc_const_eval rustc_const_math rustc_incremental proc_macro -HOST_CRATES := syntax syntax_ext proc_macro_plugin syntax_pos $(RUSTC_CRATES) \ - rustdoc fmt_macros flate arena graphviz log serialize -TOOLS := compiletest rustdoc rustc rustbook error_index_generator - -DEPS_core := -DEPS_compiler_builtins := core native:compiler-rt -DEPS_alloc := core libc alloc_system -DEPS_alloc_system := core libc -DEPS_alloc_jemalloc := core libc native:jemalloc -DEPS_collections := core alloc std_unicode -DEPS_libc := core -DEPS_rand := core -DEPS_rustc_bitflags := core -DEPS_std_unicode := core -DEPS_panic_abort := libc alloc -DEPS_panic_unwind := libc alloc unwind -DEPS_unwind := libc - -RUSTFLAGS_compiler_builtins := -lstatic=compiler-rt -RUSTFLAGS_panic_abort := -C panic=abort - -DEPS_std := core libc rand alloc collections compiler_builtins std_unicode \ - native:backtrace \ - alloc_system panic_abort panic_unwind unwind -DEPS_arena := std -DEPS_glob := std -DEPS_flate := std native:miniz -DEPS_fmt_macros = std -DEPS_getopts := std -DEPS_graphviz := std -DEPS_log := std -DEPS_num := std -DEPS_serialize := std log -DEPS_term := std -DEPS_test := std getopts term native:rust_test_helpers - -DEPS_syntax := std term serialize log arena libc rustc_bitflags std_unicode rustc_errors \ - syntax_pos rustc_data_structures -DEPS_syntax_ext := syntax syntax_pos rustc_errors fmt_macros proc_macro -DEPS_proc_macro := syntax syntax_pos rustc_plugin log -DEPS_syntax_pos := serialize -DEPS_proc_macro_plugin := syntax syntax_pos rustc_plugin - -DEPS_rustc_const_math := std syntax log serialize -DEPS_rustc_const_eval := rustc_const_math rustc syntax log serialize \ - rustc_back graphviz syntax_pos - -DEPS_rustc := syntax fmt_macros flate arena serialize getopts \ - log graphviz rustc_llvm rustc_back rustc_data_structures\ - rustc_const_math syntax_pos rustc_errors -DEPS_rustc_back := std syntax flate log libc -DEPS_rustc_borrowck := rustc log graphviz syntax syntax_pos rustc_errors rustc_mir -DEPS_rustc_data_structures := std log serialize libc -DEPS_rustc_driver := arena flate getopts graphviz libc rustc rustc_back rustc_borrowck \ - rustc_typeck rustc_mir rustc_resolve log syntax serialize rustc_llvm \ - rustc_trans rustc_privacy rustc_lint rustc_plugin \ - rustc_metadata syntax_ext proc_macro_plugin \ - rustc_passes rustc_save_analysis rustc_const_eval \ - rustc_incremental syntax_pos rustc_errors proc_macro rustc_data_structures -DEPS_rustc_errors := log libc serialize syntax_pos -DEPS_rustc_lint := rustc log syntax syntax_pos rustc_const_eval -DEPS_rustc_llvm := native:rustllvm libc std rustc_bitflags -DEPS_proc_macro := std syntax -DEPS_rustc_metadata := rustc syntax syntax_pos rustc_errors rustc_const_math \ - proc_macro syntax_ext -DEPS_rustc_passes := syntax syntax_pos rustc core rustc_const_eval rustc_errors -DEPS_rustc_mir := rustc syntax syntax_pos rustc_const_math rustc_const_eval rustc_bitflags -DEPS_rustc_resolve := arena rustc log syntax syntax_pos rustc_errors -DEPS_rustc_platform_intrinsics := std -DEPS_rustc_plugin := rustc rustc_metadata syntax syntax_pos rustc_errors -DEPS_rustc_privacy := rustc log syntax syntax_pos -DEPS_rustc_trans := arena flate getopts graphviz libc rustc rustc_back \ - log syntax serialize rustc_llvm rustc_platform_intrinsics \ - rustc_const_math rustc_const_eval rustc_incremental rustc_errors syntax_pos -DEPS_rustc_incremental := rustc syntax_pos serialize rustc_data_structures -DEPS_rustc_save_analysis := rustc log syntax syntax_pos serialize -DEPS_rustc_typeck := rustc syntax syntax_pos rustc_platform_intrinsics rustc_const_math \ - rustc_const_eval rustc_errors rustc_data_structures - -DEPS_rustdoc := rustc rustc_driver native:hoedown serialize getopts test \ - rustc_lint rustc_const_eval syntax_pos rustc_data_structures - -TOOL_DEPS_compiletest := test getopts log serialize -TOOL_DEPS_rustdoc := rustdoc -TOOL_DEPS_rustc := rustc_driver -TOOL_DEPS_rustbook := std rustdoc -TOOL_DEPS_error_index_generator := rustdoc syntax serialize -TOOL_SOURCE_compiletest := $(S)src/tools/compiletest/src/main.rs -TOOL_SOURCE_rustdoc := $(S)src/driver/driver.rs -TOOL_SOURCE_rustc := $(S)src/driver/driver.rs -TOOL_SOURCE_rustbook := $(S)src/tools/rustbook/main.rs -TOOL_SOURCE_error_index_generator := $(S)src/tools/error_index_generator/main.rs - -ONLY_RLIB_compiler_builtins := 1 -ONLY_RLIB_core := 1 -ONLY_RLIB_libc := 1 -ONLY_RLIB_alloc := 1 -ONLY_RLIB_rand := 1 -ONLY_RLIB_collections := 1 -ONLY_RLIB_std_unicode := 1 -ONLY_RLIB_rustc_bitflags := 1 -ONLY_RLIB_alloc_system := 1 -ONLY_RLIB_alloc_jemalloc := 1 -ONLY_RLIB_panic_unwind := 1 -ONLY_RLIB_panic_abort := 1 -ONLY_RLIB_unwind := 1 - -TARGET_SPECIFIC_alloc_jemalloc := 1 - -# Documented-by-default crates -DOC_CRATES := std alloc collections core libc std_unicode - -ifeq ($(CFG_DISABLE_JEMALLOC),) -RUSTFLAGS_rustc_back := --cfg 'feature="jemalloc"' -endif - -################################################################################ -# You should not need to edit below this line -################################################################################ - -CRATES := $(TARGET_CRATES) $(HOST_CRATES) - -# This macro creates some simple definitions for each crate being built, just -# some munging of all of the parameters above. -# -# $(1) is the crate to generate variables for -define RUST_CRATE -CRATEFILE_$(1) := $$(SREL)src/lib$(1)/lib.rs -RSINPUTS_$(1) := $$(call rwildcard,$(S)src/lib$(1)/,*.rs) -NATIVE_DEPS_$(1) := $$(patsubst native:%,%,$$(filter native:%,$$(DEPS_$(1)))) -endef - -$(foreach crate,$(CRATES),$(eval $(call RUST_CRATE,$(crate)))) - -# $(1) - crate -# $(2) - target -define RUST_CRATE_DEPS -RUST_DEPS_$(1)_T_$(2) := $$(filter-out native:%,$$(DEPS_$(1))) -endef - -$(foreach target,$(CFG_TARGET),\ - $(foreach crate,$(CRATES),$(eval $(call RUST_CRATE_DEPS,$(crate),$(target))))) - -# $(1) - target -# $(2) - crate -define DEFINE_TARGET_CRATES -ifndef TARGET_SPECIFIC_$(2) -TARGET_CRATES_$(1) += $(2) -endif -endef - -$(foreach target,$(CFG_TARGET),\ - $(foreach crate,$(TARGET_CRATES),\ - $(eval $(call DEFINE_TARGET_CRATES,$(target),$(crate))))) - -# Similar to the macro above for crates, this macro is for tools -# -# $(1) is the crate to generate variables for -define RUST_TOOL -TOOL_INPUTS_$(1) := $$(call rwildcard,$$(dir $$(TOOL_SOURCE_$(1))),*.rs) -endef - -$(foreach crate,$(TOOLS),$(eval $(call RUST_TOOL,$(crate)))) - -CRATEFILE_libc := $(SREL)src/liblibc/src/lib.rs -RUSTFLAGS_libc := --cfg stdbuild diff --git a/mk/ctags.mk b/mk/ctags.mk deleted file mode 100644 index 1fcb0bb4debbc..0000000000000 --- a/mk/ctags.mk +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# TAGS file creation. No dependency tracking, just do it on demand. -# Requires Exuberant Ctags: http://ctags.sourceforge.net/index.html -###################################################################### - -.PHONY: TAGS.emacs TAGS.vi - -CTAGS_RUSTC_LOCATIONS=$(patsubst ${CFG_SRC_DIR}src/lib%test,, \ - $(wildcard ${CFG_SRC_DIR}src/lib*)) ${CFG_SRC_DIR}src/libtest -CTAGS_LOCATIONS=$(patsubst ${CFG_SRC_DIR}src/librust%,, \ - $(patsubst ${CFG_SRC_DIR}src/lib%test,, \ - $(wildcard ${CFG_SRC_DIR}src/lib*))) ${CFG_SRC_DIR}src/libtest -CTAGS_OPTS=--options="${CFG_SRC_DIR}src/etc/ctags.rust" --languages=Rust --recurse - -TAGS.rustc.emacs: - ctags -e -f $@ ${CTAGS_OPTS} ${CTAGS_RUSTC_LOCATIONS} - -TAGS.emacs: - ctags -e -f $@ ${CTAGS_OPTS} ${CTAGS_LOCATIONS} - -TAGS.rustc.vi: - ctags -f $@ ${CTAGS_OPTS} ${CTAGS_RUSTC_LOCATIONS} - -TAGS.vi: - ctags -f $@ ${CTAGS_OPTS} ${CTAGS_LOCATIONS} diff --git a/mk/debuggers.mk b/mk/debuggers.mk deleted file mode 100644 index fbf32dc1a397f..0000000000000 --- a/mk/debuggers.mk +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# Copy debugger related scripts -###################################################################### - - -## GDB ## -DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB=gdb_load_rust_pretty_printers.py \ - gdb_rust_pretty_printing.py \ - debugger_pretty_printers_common.py -DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS=\ - $(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB), \ - $(CFG_SRC_DIR)src/etc/$(script)) - -DEBUGGER_BIN_SCRIPTS_GDB=rust-gdb -DEBUGGER_BIN_SCRIPTS_GDB_ABS=\ - $(foreach script,$(DEBUGGER_BIN_SCRIPTS_GDB), \ - $(CFG_SRC_DIR)src/etc/$(script)) - - -## LLDB ## -DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB=lldb_rust_formatters.py \ - debugger_pretty_printers_common.py -DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS=\ - $(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB), \ - $(CFG_SRC_DIR)src/etc/$(script)) - -DEBUGGER_BIN_SCRIPTS_LLDB=rust-lldb -DEBUGGER_BIN_SCRIPTS_LLDB_ABS=\ - $(foreach script,$(DEBUGGER_BIN_SCRIPTS_LLDB), \ - $(CFG_SRC_DIR)src/etc/$(script)) - - -## ALL ## -DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL=gdb_load_rust_pretty_printers.py \ - gdb_rust_pretty_printing.py \ - lldb_rust_formatters.py \ - debugger_pretty_printers_common.py -DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS=\ - $(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL), \ - $(CFG_SRC_DIR)src/etc/$(script)) -DEBUGGER_BIN_SCRIPTS_ALL=$(DEBUGGER_BIN_SCRIPTS_GDB) \ - $(DEBUGGER_BIN_SCRIPTS_LLDB) -DEBUGGER_BIN_SCRIPTS_ALL_ABS=$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) \ - $(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) - - -# $(1) - the stage to copy to -# $(2) - the host triple -define DEF_INSTALL_DEBUGGER_SCRIPTS_HOST - -tmp/install-debugger-scripts$(1)_H_$(2)-gdb.done: \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) \ - $$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) - $(Q)touch $$@.start_time - $(Q)mkdir -p $$(HBIN$(1)_H_$(2)) - $(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)install $$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $$(HBIN$(1)_H_$(2)) - $(Q)install $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)touch -r $$@.start_time $$@ && rm $$@.start_time - -tmp/install-debugger-scripts$(1)_H_$(2)-lldb.done: \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) \ - $$(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) - $(Q)touch $$@.start_time - $(Q)mkdir -p $$(HBIN$(1)_H_$(2)) - $(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)install $$(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) $$(HBIN$(1)_H_$(2)) - $(Q)install $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)touch -r $$@.start_time $$@ && rm $$@.start_time - -tmp/install-debugger-scripts$(1)_H_$(2)-all.done: \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) \ - $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) - $(Q)touch $$@.start_time - $(Q)mkdir -p $$(HBIN$(1)_H_$(2)) - $(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)install $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) $$(HBIN$(1)_H_$(2)) - $(Q)install $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)touch -r $$@.start_time $$@ && rm $$@.start_time - -tmp/install-debugger-scripts$(1)_H_$(2)-none.done: - $(Q)touch $$@ - -endef - -# Expand host make-targets for all stages -$(foreach stage,$(STAGES), \ - $(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_INSTALL_DEBUGGER_SCRIPTS_HOST,$(stage),$(host))))) - -# $(1) is the stage number -# $(2) is the target triple -# $(3) is the host triple -define DEF_INSTALL_DEBUGGER_SCRIPTS_TARGET - -tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-gdb.done: \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) \ - $$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) - $(Q)touch $$@.start_time - $(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)install $(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)touch -r $$@.start_time $$@ && rm $$@.start_time - -tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-lldb.done: \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) \ - $$(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) - $(Q)touch $$@.start_time - $(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)install $(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)touch -r $$@.start_time $$@ && rm $$@.start_time - -tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-all.done: \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) \ - $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) - $(Q)touch $$@.start_time - $(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)install $(DEBUGGER_BIN_SCRIPTS_ALL_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)touch -r $$@.start_time $$@ && rm $$@.start_time - -tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-none.done: - $(Q)touch $$@ - -endef - -# Expand target make-targets for all stages -$(foreach stage,$(STAGES), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_INSTALL_DEBUGGER_SCRIPTS_TARGET,$(stage),$(target),$(host)))))) diff --git a/mk/dist.mk b/mk/dist.mk deleted file mode 100644 index 238ba8acee42f..0000000000000 --- a/mk/dist.mk +++ /dev/null @@ -1,382 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# Distribution -###################################################################### - -# Primary targets: -# -# * dist - make all distribution artifacts -# * distcheck - sanity check dist artifacts -# * dist-tar-src - source tarballs -# * dist-tar-bins - Ad-hoc Unix binary installers -# * dist-docs - Stage docs for upload - -PKG_NAME := $(CFG_PACKAGE_NAME) -STD_PKG_NAME := rust-std-$(CFG_PACKAGE_VERS) -DOC_PKG_NAME := rust-docs-$(CFG_PACKAGE_VERS) -MINGW_PKG_NAME := rust-mingw-$(CFG_PACKAGE_VERS) -SRC_PKG_NAME := rust-src-$(CFG_PACKAGE_VERS) - -# License suitable for displaying in a popup -LICENSE.txt: $(S)COPYRIGHT $(S)LICENSE-APACHE $(S)LICENSE-MIT - cat $^ > $@ - - -###################################################################### -# Source tarball -###################################################################### - -PKG_TAR = dist/$(PKG_NAME)-src.tar.gz - -PKG_GITMODULES := $(S)src/llvm $(S)src/compiler-rt \ - $(S)src/rt/hoedown $(S)src/jemalloc -PKG_FILES := \ - $(S)COPYRIGHT \ - $(S)LICENSE-APACHE \ - $(S)LICENSE-MIT \ - $(S)CONTRIBUTING.md \ - $(S)README.md \ - $(S)RELEASES.md \ - $(S)configure $(S)Makefile.in \ - $(S)man \ - $(addprefix $(S)src/, \ - bootstrap \ - build_helper \ - doc \ - driver \ - etc \ - $(foreach crate,$(CRATES),lib$(crate)) \ - libcollectionstest \ - libcoretest \ - libbacktrace \ - rt \ - rtstartup \ - rustllvm \ - rustc \ - stage0.txt \ - rust-installer \ - tools \ - test \ - vendor) \ - $(PKG_GITMODULES) \ - $(filter-out config.stamp, \ - $(MKFILES_FOR_TARBALL)) - -UNROOTED_PKG_FILES := $(patsubst $(S)%,./%,$(PKG_FILES)) - -tmp/dist/$$(SRC_PKG_NAME)-image: $(PKG_FILES) - @$(call E, making src image) - $(Q)rm -Rf tmp/dist/$(SRC_PKG_NAME)-image - $(Q)mkdir -p tmp/dist/$(SRC_PKG_NAME)-image/lib/rustlib/src/rust - $(Q)echo "$(CFG_VERSION)" > tmp/dist/$(SRC_PKG_NAME)-image/lib/rustlib/src/rust/version - $(Q)tar \ - -C $(S) \ - -f - \ - --exclude-vcs \ - --exclude=*~ \ - --exclude=*.pyc \ - --exclude=*/llvm/test/*/*.ll \ - --exclude=*/llvm/test/*/*.td \ - --exclude=*/llvm/test/*/*.s \ - --exclude=*/llvm/test/*/*/*.ll \ - --exclude=*/llvm/test/*/*/*.td \ - --exclude=*/llvm/test/*/*/*.s \ - -c $(UNROOTED_PKG_FILES) | tar -x -f - -C tmp/dist/$(SRC_PKG_NAME)-image/lib/rustlib/src/rust - -$(PKG_TAR): tmp/dist/$$(SRC_PKG_NAME)-image - @$(call E, making $@) - $(Q)tar -czf $(PKG_TAR) -C tmp/dist/$(SRC_PKG_NAME)-image/lib/rustlib/src rust --transform 's,^rust,$(PKG_NAME),S' - -dist-tar-src: $(PKG_TAR) - -distcheck-tar-src: dist-tar-src - $(Q)rm -Rf tmp/distcheck/$(PKG_NAME) - $(Q)rm -Rf tmp/distcheck/srccheck - $(Q)mkdir -p tmp/distcheck - @$(call E, unpacking $(PKG_TAR) in tmp/distcheck/$(PKG_NAME)) - $(Q)cd tmp/distcheck && tar -xzf ../../$(PKG_TAR) - @$(call E, configuring in tmp/distcheck/srccheck) - $(Q)mkdir -p tmp/distcheck/srccheck - $(Q)cd tmp/distcheck/srccheck && ../$(PKG_NAME)/configure - @$(call E, making 'check' in tmp/distcheck/srccheck) - $(Q)+make -C tmp/distcheck/srccheck check - @$(call E, making 'clean' in tmp/distcheck/srccheck) - $(Q)+make -C tmp/distcheck/srccheck clean - $(Q)rm -Rf tmp/distcheck/$(PKG_NAME) - $(Q)rm -Rf tmp/distcheck/srccheck - - -###################################################################### -# Unix binary installer tarballs -###################################################################### - -define DEF_START_INSTALLER -dist-install-dir-$(1)-%: PREPARE_DIR_CMD=$(DEFAULT_PREPARE_DIR_CMD) -dist-install-dir-$(1)-%: PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD) -dist-install-dir-$(1)-%: PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD) -dist-install-dir-$(1)-%: PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD) -dist-install-dir-$(1)-%: PREPARE_CLEAN=true - -$$(eval $$(call DEF_PREPARE,dir-$(1))) -endef - -$(foreach target,$(CFG_TARGET),\ - $(eval $(call DEF_START_INSTALLER,$(target)))) - -define DEF_INSTALLER - -dist-install-dir-$(1)-host: PREPARE_HOST=$(1) -dist-install-dir-$(1)-host: PREPARE_TARGETS=$(2) -dist-install-dir-$(1)-host: PREPARE_DEST_DIR=tmp/dist/$$(PKG_NAME)-$(1)-image -dist-install-dir-$(1)-host: prepare-base-dir-$(1)-host docs - $$(Q)mkdir -p $$(PREPARE_DEST_DIR)/share/doc/rust - $$(Q)$$(PREPARE_MAN_CMD) $$(S)COPYRIGHT $$(PREPARE_DEST_DIR)/share/doc/rust - $$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-APACHE $$(PREPARE_DEST_DIR)/share/doc/rust - $$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-MIT $$(PREPARE_DEST_DIR)/share/doc/rust - $$(Q)$$(PREPARE_MAN_CMD) $$(S)README.md $$(PREPARE_DEST_DIR)/share/doc/rust - -prepare-overlay-$(1): - $$(Q)rm -Rf tmp/dist/$$(PKG_NAME)-$(1)-overlay - $$(Q)mkdir -p tmp/dist/$$(PKG_NAME)-$(1)-overlay - $$(Q)cp $$(S)COPYRIGHT tmp/dist/$$(PKG_NAME)-$(1)-overlay/ - $$(Q)cp $$(S)LICENSE-APACHE tmp/dist/$$(PKG_NAME)-$(1)-overlay/ - $$(Q)cp $$(S)LICENSE-MIT tmp/dist/$$(PKG_NAME)-$(1)-overlay/ - $$(Q)cp $$(S)README.md tmp/dist/$$(PKG_NAME)-$(1)-overlay/ -# This tiny morsel of metadata is used by rust-packaging - $$(Q)echo "$(CFG_VERSION)" > tmp/dist/$$(PKG_NAME)-$(1)-overlay/version - -dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1)-host prepare-overlay-$(1) - @$(call E, build: $$@) -# On a MinGW target we've got a few runtime DLL dependencies that we need -# to include. THe first argument to `make-win-dist` is where to put these DLLs -# (the image we're creating) and the second argument is a junk directory to -# ignore all the other MinGW stuff the script creates. -ifeq ($$(findstring pc-windows-gnu,$(1)),pc-windows-gnu) - $$(Q)rm -Rf tmp/dist/win-rust-gcc-$(1) - $$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py \ - tmp/dist/$$(PKG_NAME)-$(1)-image \ - tmp/dist/win-rust-gcc-$(1) $(1) -endif -# On 32-bit MinGW we're always including a DLL which needs some extra licenses -# to distribute. On 64-bit MinGW we don't actually distribute anything requiring -# us to distribute a license but it's likely that the install will *also* -# include the rust-mingw package down below, which also need licenses, so to be -# safe we just inlude it here in all MinGW packages. -ifdef CFG_WINDOWSY_$(1) -ifeq ($$(findstring $(1),gnu),gnu) - $$(Q)cp -r $$(S)src/etc/third-party \ - tmp/dist/$$(PKG_NAME)-$(1)-image/share/doc/ -endif -endif - $$(Q)$$(S)src/rust-installer/gen-installer.sh \ - --product-name=Rust \ - --rel-manifest-dir=rustlib \ - --success-message=Rust-is-ready-to-roll. \ - --image-dir=tmp/dist/$$(PKG_NAME)-$(1)-image \ - --work-dir=tmp/dist \ - --output-dir=dist \ - --non-installed-overlay=tmp/dist/$$(PKG_NAME)-$(1)-overlay \ - --package-name=$$(PKG_NAME)-$(1) \ - --component-name=rustc \ - --legacy-manifest-dirs=rustlib,cargo - $$(Q)rm -R tmp/dist/$$(PKG_NAME)-$(1)-image - -dist-doc-install-dir-$(1): docs - $$(Q)mkdir -p tmp/dist/$$(DOC_PKG_NAME)-$(1)-image/share/doc/rust - $$(Q)cp -r doc tmp/dist/$$(DOC_PKG_NAME)-$(1)-image/share/doc/rust/html - -dist/$$(DOC_PKG_NAME)-$(1).tar.gz: dist-doc-install-dir-$(1) - @$(call E, build: $$@) - $$(Q)$$(S)src/rust-installer/gen-installer.sh \ - --product-name=Rust-Documentation \ - --rel-manifest-dir=rustlib \ - --success-message=Rust-documentation-is-installed. \ - --image-dir=tmp/dist/$$(DOC_PKG_NAME)-$(1)-image \ - --work-dir=tmp/dist \ - --output-dir=dist \ - --package-name=$$(DOC_PKG_NAME)-$(1) \ - --component-name=rust-docs \ - --legacy-manifest-dirs=rustlib,cargo \ - --bulk-dirs=share/doc/rust/html - $$(Q)rm -R tmp/dist/$$(DOC_PKG_NAME)-$(1)-image - -# Creates the rust-mingw package, and the first argument to make-win-dist is a -# "temporary directory" which is just thrown away (this contains the runtime -# DLLs included in the rustc package above) and the second argument is where to -# place all the MinGW components (which is what we want). -dist-mingw-install-dir-$(1): - $$(Q)mkdir -p tmp/dist/rust-mingw-tmp-$(1)-image - $$(Q)rm -Rf tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image - $$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py \ - tmp/dist/rust-mingw-tmp-$(1)-image \ - tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image $(1) - -dist/$$(MINGW_PKG_NAME)-$(1).tar.gz: dist-mingw-install-dir-$(1) - @$(call E, build: $$@) - $$(Q)$$(S)src/rust-installer/gen-installer.sh \ - --product-name=Rust-MinGW \ - --rel-manifest-dir=rustlib \ - --success-message=Rust-MinGW-is-installed. \ - --image-dir=tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image \ - --work-dir=tmp/dist \ - --output-dir=dist \ - --package-name=$$(MINGW_PKG_NAME)-$(1) \ - --component-name=rust-mingw \ - --legacy-manifest-dirs=rustlib,cargo - $$(Q)rm -R tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image - -endef - -# $(1) - host -# $(2) - target -define DEF_INSTALLER_TARGETS - -dist-install-dir-$(2)-target: PREPARE_HOST=$(1) -dist-install-dir-$(2)-target: PREPARE_TARGETS=$(2) -dist-install-dir-$(2)-target: PREPARE_DEST_DIR=tmp/dist/$$(STD_PKG_NAME)-$(2)-image -dist-install-dir-$(2)-target: prepare-base-dir-$(2)-target - -dist/$$(STD_PKG_NAME)-$(2).tar.gz: dist-install-dir-$(2)-target - @$$(call E, build: $$@) - $$(Q)$$(S)src/rust-installer/gen-installer.sh \ - --product-name=Rust \ - --rel-manifest-dir=rustlib \ - --success-message=std-is-standing-at-the-ready. \ - --image-dir=tmp/dist/$$(STD_PKG_NAME)-$(2)-image \ - --work-dir=tmp/dist \ - --output-dir=dist \ - --package-name=$$(STD_PKG_NAME)-$(2) \ - --component-name=rust-std-$(2) \ - --legacy-manifest-dirs=rustlib,cargo - $$(Q)rm -R tmp/dist/$$(STD_PKG_NAME)-$(2)-image -endef - -$(foreach host,$(CFG_HOST),\ - $(eval $(call DEF_INSTALLER,$(host)))) - -dist/$(SRC_PKG_NAME).tar.gz: tmp/dist/$(SRC_PKG_NAME)-image - @$(call E, build: $@) - $(Q)$(S)src/rust-installer/gen-installer.sh \ - --product-name=Rust \ - --rel-manifest-dir=rustlib \ - --success-message=Awesome-Source. \ - --image-dir=tmp/dist/$(SRC_PKG_NAME)-image \ - --work-dir=tmp/dist \ - --output-dir=dist \ - --package-name=$(SRC_PKG_NAME) \ - --component-name=rust-src \ - --legacy-manifest-dirs=rustlib,cargo - -# When generating packages for the standard library, we've actually got a lot of -# artifacts to choose from. Each of the CFG_HOST compilers will have a copy of -# the standard library for each CFG_TARGET, but we only want to generate one -# standard library package. As a result, for each entry in CFG_TARGET we need to -# pick a CFG_HOST to get the standard library from. -# -# In theory it doesn't actually matter what host we choose as it should be the -# case that all hosts produce the same set of libraries for a target (regardless -# of the host itself). Currently there is a bug in the compiler, however, which -# means this is not the case (see #29228 and #29235). To solve the first of -# those bugs, we prefer to select a standard library from the host it was -# generated from, allowing plugins to work in more situations. -# -# For all CFG_TARGET entries in CFG_HOST, however, we just pick CFG_BUILD as the -# host we slurp up a standard library from. -$(foreach host,$(CFG_HOST),\ - $(eval $(call DEF_INSTALLER_TARGETS,$(host),$(host)))) -$(foreach target,$(filter-out $(CFG_HOST),$(CFG_TARGET)),\ - $(eval $(call DEF_INSTALLER_TARGETS,$(CFG_BUILD),$(target)))) - -ifdef CFG_WINDOWSY_$(CFG_BUILD) -define BUILD_MINGW_TARBALL -ifeq ($$(findstring gnu,$(1)),gnu) -MAYBE_MINGW_TARBALLS += dist/$(MINGW_PKG_NAME)-$(1).tar.gz -endif -endef - -$(foreach host,$(CFG_HOST),\ - $(eval $(call BUILD_MINGW_TARBALL,$(host)))) -endif - -ifeq ($(CFG_DISABLE_DOCS),) -MAYBE_DOC_TARBALLS=$(foreach host,$(CFG_HOST),dist/$(DOC_PKG_NAME)-$(host).tar.gz) -endif - -dist-tar-bins: \ - $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz) \ - $(foreach target,$(CFG_TARGET),dist/$(STD_PKG_NAME)-$(target).tar.gz) \ - $(MAYBE_DOC_TARBALLS) $(MAYBE_MINGW_TARBALLS) - -# Just try to run the compiler for the build host -distcheck-tar-bins: dist-tar-bins - @$(call E, checking binary tarball) - $(Q)rm -Rf tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD) - $(Q)rm -Rf tmp/distcheck/tarbininstall - $(Q)mkdir -p tmp/distcheck - $(Q)cd tmp/distcheck && tar -xzf ../../dist/$(PKG_NAME)-$(CFG_BUILD).tar.gz - $(Q)mkdir -p tmp/distcheck/tarbininstall - $(Q)sh tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix=tmp/distcheck/tarbininstall - $(Q)sh tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix=tmp/distcheck/tarbininstall --uninstall - $(Q)rm -Rf tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD) - $(Q)rm -Rf tmp/distcheck/tarbininstall - -###################################################################### -# Docs -###################################################################### - -# Just copy the docs to a folder under dist with the appropriate name -# for uploading to S3 -dist-docs: docs - $(Q) rm -Rf dist/doc - $(Q) mkdir -p dist/doc/ - $(Q) cp -r doc dist/doc/$(CFG_PACKAGE_VERS) - -distcheck-docs: dist-docs - -###################################################################### -# Primary targets (dist, distcheck) -###################################################################### - -MAYBE_DIST_TAR_SRC=dist-tar-src dist/$(SRC_PKG_NAME).tar.gz -MAYBE_DISTCHECK_TAR_SRC=distcheck-tar-src dist/$(SRC_PKG_NAME).tar.gz - -# FIXME #13224: On OS X don't produce tarballs simply because --exclude-vcs don't work. -# This is a huge hack because I just don't have time to figure out another solution. -ifeq ($(CFG_OSTYPE), apple-darwin) -MAYBE_DIST_TAR_SRC= -MAYBE_DISTCHECK_TAR_SRC= -endif - -# Don't bother with source tarballs on windows just because we historically haven't. -ifeq ($(CFG_OSTYPE), pc-windows-gnu) -MAYBE_DIST_TAR_SRC= -MAYBE_DISTCHECK_TAR_SRC= -endif - -ifneq ($(CFG_DISABLE_DOCS),) -MAYBE_DIST_DOCS= -MAYBE_DISTCHECK_DOCS= -else -MAYBE_DIST_DOCS=dist-docs -MAYBE_DISTCHECK_DOCS=distcheck-docs -endif - -dist: $(MAYBE_DIST_TAR_SRC) dist-tar-bins $(MAYBE_DIST_DOCS) - -distcheck: $(MAYBE_DISTCHECK_TAR_SRC) distcheck-tar-bins $(MAYBE_DISTCHECK_DOCS) - $(Q)rm -Rf tmp/distcheck - @echo - @echo ----------------------------------------------- - @echo "Rust ready for distribution (see ./dist)" - @echo ----------------------------------------------- - -.PHONY: dist distcheck diff --git a/mk/docs.mk b/mk/docs.mk deleted file mode 100644 index 6c0be654e1f5d..0000000000000 --- a/mk/docs.mk +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# The various pieces of standalone documentation. -# -# The DOCS variable is their names (with no file extension). -# -# RUSTDOC_FLAGS_xyz variables are extra arguments to pass to the -# rustdoc invocation for xyz. -# -# RUSTDOC_DEPS_xyz are extra dependencies for the rustdoc invocation -# on xyz. -# -# L10N_LANGS are the languages for which the docs have been -# translated. -###################################################################### -DOCS := index \ - complement-lang-faq complement-design-faq complement-project-faq \ - rustdoc reference grammar - -# Legacy guides, preserved for a while to reduce the number of 404s -DOCS += guide-crates guide-error-handling guide-ffi guide-macros guide \ - guide-ownership guide-plugins guide-pointers guide-strings guide-tasks \ - guide-testing tutorial intro - - -RUSTDOC_DEPS_reference := doc/full-toc.inc -RUSTDOC_FLAGS_reference := --html-in-header=doc/full-toc.inc - -L10N_LANGS := ja - -# Generally no need to edit below here. - -# The options are passed to the documentation generators. -RUSTDOC_HTML_OPTS_NO_CSS = --html-before-content=doc/version_info.html \ - --html-in-header=doc/favicon.inc \ - --html-after-content=doc/footer.inc \ - --markdown-playground-url='https://play.rust-lang.org/' - -RUSTDOC_HTML_OPTS = $(RUSTDOC_HTML_OPTS_NO_CSS) --markdown-css rust.css - -# The rustdoc executable... -RUSTDOC_EXE = $(HBIN2_H_$(CFG_BUILD))/rustdoc$(X_$(CFG_BUILD)) -# ...with rpath included in case --disable-rpath was provided to -# ./configure -RUSTDOC = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(RUSTDOC_EXE) - -# The rustbook executable... -RUSTBOOK_EXE = $(HBIN2_H_$(CFG_BUILD))/rustbook$(X_$(CFG_BUILD)) -# ...with rpath included in case --disable-rpath was provided to -# ./configure -RUSTBOOK = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(RUSTBOOK_EXE) - -# The error_index_generator executable... -ERR_IDX_GEN_EXE = $(HBIN2_H_$(CFG_BUILD))/error_index_generator$(X_$(CFG_BUILD)) -ERR_IDX_GEN = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE) -ERR_IDX_GEN_MD = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE) markdown - -D := $(S)src/doc - -DOC_TARGETS := book nomicon error-index -COMPILER_DOC_TARGETS := -DOC_L10N_TARGETS := - -# If NO_REBUILD is set then break the dependencies on rustdoc so we -# build the documentation without having to rebuild rustdoc. -ifeq ($(NO_REBUILD),) -HTML_DEPS := $(RUSTDOC_EXE) -else -HTML_DEPS := -endif - -###################################################################### -# Rust version -###################################################################### - -HTML_DEPS += doc/version_info.html -doc/version_info.html: $(D)/version_info.html.template $(MKFILE_DEPS) \ - $(wildcard $(D)/*.*) | doc/ - @$(call E, version-info: $@) - $(Q)sed -e "s/VERSION/$(CFG_RELEASE)/; \ - s/SHORT_HASH/$(CFG_SHORT_VER_HASH)/; \ - s/STAMP/$(CFG_VER_HASH)/;" $< >$@ - -GENERATED += doc/version_info.html - -###################################################################### -# Docs from rustdoc -###################################################################### - -doc/: - @mkdir -p $@ - -HTML_DEPS += doc/rust.css -doc/rust.css: $(D)/rust.css | doc/ - @$(call E, cp: $@) - $(Q)cp -PRp $< $@ 2> /dev/null - -HTML_DEPS += doc/favicon.inc -doc/favicon.inc: $(D)/favicon.inc | doc/ - @$(call E, cp: $@) - $(Q)cp -PRp $< $@ 2> /dev/null - -doc/full-toc.inc: $(D)/full-toc.inc | doc/ - @$(call E, cp: $@) - $(Q)cp -PRp $< $@ 2> /dev/null - -HTML_DEPS += doc/footer.inc -doc/footer.inc: $(D)/footer.inc | doc/ - @$(call E, cp: $@) - $(Q)cp -PRp $< $@ 2> /dev/null - -# The (english) documentation for each doc item. -DOC_TARGETS += doc/not_found.html -doc/not_found.html: $(D)/not_found.md $(HTML_DEPS) | doc/ - @$(call E, rustdoc: $@) - $(Q)$(RUSTDOC) $(RUSTDOC_HTML_OPTS_NO_CSS) \ - --markdown-no-toc \ - --markdown-css https://doc.rust-lang.org/rust.css $< - -define DEF_DOC - -# HTML (rustdoc) -DOC_TARGETS += doc/$(1).html -doc/$(1).html: $$(D)/$(1).md $$(HTML_DEPS) $$(RUSTDOC_DEPS_$(1)) | doc/ - @$$(call E, rustdoc: $$@) - $$(Q)$$(RUSTDOC) $$(RUSTDOC_HTML_OPTS) $$(RUSTDOC_FLAGS_$(1)) $$< - -endef - -$(foreach docname,$(DOCS),$(eval $(call DEF_DOC,$(docname)))) - - -###################################################################### -# Rustdoc (libstd/extra) -###################################################################### - - -# The library documenting macro -# -# $(1) - The crate name (std/extra) -# -# Passes --cfg stage2 to rustdoc because it uses the stage2 librustc. -define DEF_LIB_DOC - -# If NO_REBUILD is set then break the dependencies on rustdoc so we -# build crate documentation without having to rebuild rustdoc. -ifeq ($(NO_REBUILD),) -LIB_DOC_DEP_$(1) = \ - $$(CRATEFILE_$(1)) \ - $$(RSINPUTS_$(1)) \ - $$(RUSTDOC_EXE) \ - $$(foreach dep,$$(RUST_DEPS_$(1)_T_$(CFG_BUILD)), \ - $$(TLIB2_T_$(CFG_BUILD)_H_$(CFG_BUILD))/stamp.$$(dep)) \ - $$(foreach dep,$$(filter $$(DOC_CRATES), $$(RUST_DEPS_$(1)_T_$(CFG_BUILD))), \ - doc/$$(dep)/) -else -LIB_DOC_DEP_$(1) = $$(CRATEFILE_$(1)) $$(RSINPUTS_$(1)) -endif - -doc/$(1)/: - $$(Q)mkdir -p $$@ - -doc/$(1)/index.html: CFG_COMPILER_HOST_TRIPLE = $(CFG_TARGET) -doc/$(1)/index.html: $$(LIB_DOC_DEP_$(1)) doc/$(1)/ - @$$(call E, rustdoc: $$@) - $$(Q)CFG_LLVM_LINKAGE_FILE=$$(LLVM_LINKAGE_PATH_$(CFG_BUILD)) \ - $$(RUSTDOC) --cfg dox --cfg stage2 $$(RUSTFLAGS_$(1)) $$< -endef - -$(foreach crate,$(CRATES),$(eval $(call DEF_LIB_DOC,$(crate)))) - -COMPILER_DOC_TARGETS := $(CRATES:%=doc/%/index.html) -ifdef CFG_ENABLE_COMPILER_DOCS - DOC_TARGETS += $(COMPILER_DOC_TARGETS) -else - DOC_TARGETS += $(DOC_CRATES:%=doc/%/index.html) -endif - -ifdef CFG_DISABLE_DOCS - $(info cfg: disabling doc build (CFG_DISABLE_DOCS)) - DOC_TARGETS := - COMPILER_DOC_TARGETS := -endif - -docs: $(DOC_TARGETS) -doc: docs -compiler-docs: $(COMPILER_DOC_TARGETS) - -book: doc/book/index.html - -doc/book/index.html: $(RUSTBOOK_EXE) $(wildcard $(S)/src/doc/book/*.md) | doc/ - @$(call E, rustbook: $@) - $(Q)rm -rf doc/book - $(Q)$(RUSTBOOK) build $(S)src/doc/book doc/book - -nomicon: doc/nomicon/index.html - -doc/nomicon/index.html: $(RUSTBOOK_EXE) $(wildcard $(S)/src/doc/nomicon/*.md) | doc/ - @$(call E, rustbook: $@) - $(Q)rm -rf doc/nomicon - $(Q)$(RUSTBOOK) build $(S)src/doc/nomicon doc/nomicon - -error-index: doc/error-index.html - -# Metadata used to generate the index is created as a side effect of -# the build so this depends on every crate being up to date. -doc/error-index.html: $(ERR_IDX_GEN_EXE) $(CSREQ$(2)_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | doc/ - $(Q)$(call E, error_index_generator: $@) - $(Q)$(ERR_IDX_GEN) - -doc/error-index.md: $(ERR_IDX_GEN_EXE) $(CSREQ$(2)_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | doc/ - $(Q)$(call E, error_index_generator: $@) - $(Q)$(ERR_IDX_GEN_MD) diff --git a/mk/grammar.mk b/mk/grammar.mk deleted file mode 100644 index 1bd042adb218f..0000000000000 --- a/mk/grammar.mk +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -BG = $(CFG_BUILD_DIR)/grammar/ -SG = $(S)src/grammar/ -B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/ -L = $(B)lib/rustlib/$(CFG_BUILD)/lib -LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/ -RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) -ifeq ($(CFG_OSTYPE),apple-darwin) - FLEX_LDFLAGS=-ll -else - FLEX_LDFLAGS=-lfl -endif - -# Run the reference lexer against libsyntax and compare the tokens and spans. -# If "// ignore-lexer-test" is present in the file, it will be ignored. -# -# $(1) is the file to test. -define LEXER_TEST -grep "// ignore-lexer-test" $(1) ; \ - if [ $$? -eq 1 ]; then \ - CLASSPATH=$(B)grammar $(CFG_GRUN) RustLexer tokens -tokens < $(1) \ - | $(B)grammar/verify $(1) ; \ - fi -endef - -$(BG): - $(Q)mkdir -p $(BG) - -$(BG)RustLexer.class: $(BG) $(SG)RustLexer.g4 - $(Q)$(CFG_ANTLR4) -o $(BG) $(SG)RustLexer.g4 - $(Q)$(CFG_JAVAC) -d $(BG) -classpath $(CFG_ANTLR4_JAR) $(BG)RustLexer.java - -check-build-lexer-verifier: $(BG)verify - -ifeq ($(NO_REBUILD),) -VERIFY_DEPS := rustc-stage2-H-$(CFG_BUILD) $(LD)stamp.rustc -else -VERIFY_DEPS := -endif - -$(BG)verify: $(BG) $(SG)verify.rs $(VERIFY_DEPS) - $(Q)$(RUSTC) --out-dir $(BG) -L $(L) $(SG)verify.rs - -ifdef CFG_JAVAC -ifdef CFG_ANTLR4 -ifdef CFG_GRUN -check-lexer: $(BG) $(BG)RustLexer.class check-build-lexer-verifier - $(info Verifying libsyntax against the reference lexer ...) - $(Q)$(SG)check.sh $(S) "$(BG)" \ - "$(CFG_GRUN)" "$(BG)verify" "$(BG)RustLexer.tokens" -else -$(info cfg: lexer tooling not available, skipping lexer test...) -check-lexer: - -endif -else -$(info cfg: lexer tooling not available, skipping lexer test...) -check-lexer: - -endif -else -$(info cfg: lexer tooling not available, skipping lexer test...) -check-lexer: - -endif - -$(BG)lex.yy.c: $(SG)lexer.l $(BG) - @$(call E, flex: $@) - $(Q)$(CFG_FLEX) -o $@ $< - -$(BG)lexer-lalr.o: $(BG)lex.yy.c $(BG)parser-lalr.tab.h - @$(call E, cc: $@) - $(Q)$(CFG_CC) -include $(BG)parser-lalr.tab.h -c -o $@ $< - -$(BG)parser-lalr.tab.c $(BG)parser-lalr.tab.h: $(SG)parser-lalr.y - @$(call E, bison: $@) - $(Q)$(CFG_BISON) $< --output=$(BG)parser-lalr.tab.c --defines=$(BG)parser-lalr.tab.h \ - --name-prefix=rs --warnings=error=all - -$(BG)parser-lalr.o: $(BG)parser-lalr.tab.c - @$(call E, cc: $@) - $(Q)$(CFG_CC) -c -o $@ $< - -$(BG)parser-lalr-main.o: $(SG)parser-lalr-main.c - @$(call E, cc: $@) - $(Q)$(CFG_CC) -std=c99 -c -o $@ $< - -$(BG)parser-lalr: $(BG)parser-lalr.o $(BG)parser-lalr-main.o $(BG)lexer-lalr.o - @$(call E, cc: $@) - $(Q)$(CFG_CC) -o $@ $^ $(FLEX_LDFLAGS) - - -ifdef CFG_FLEX -ifdef CFG_BISON -check-grammar: $(BG) $(BG)parser-lalr - $(info Verifying grammar ...) - $(SG)testparser.py -p $(BG)parser-lalr -s $(S)src - -else -$(info cfg: bison not available, skipping parser test...) -check-grammar: - -endif -else -$(info cfg: flex not available, skipping parser test...) -check-grammar: - -endif diff --git a/mk/host.mk b/mk/host.mk deleted file mode 100644 index d17479bd894e5..0000000000000 --- a/mk/host.mk +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# Generic rule for copying any target crate to a host crate. This rule will also -# promote any dependent rust crates up to their host locations as well -# -# $(1) - the stage to copy from -# $(2) - the stage to copy to -# $(3) - the host triple -# $(4) - the target triple (same as $(3)) -# $(5) - the name of the crate being processed -define CP_HOST_STAGE_N_CRATE - -ifeq ($$(ONLY_RLIB_$(5)),) -$$(HLIB$(2)_H_$(4))/stamp.$(5): \ - $$(TLIB$(1)_T_$(3)_H_$(4))/stamp.$(5) \ - $$(RUST_DEPS_$(5)_T_$(3):%=$$(HLIB$(2)_H_$(4))/stamp.%) \ - | $$(HLIB$(2)_H_$(4))/ - @$$(call E, cp: $$(@D)/lib$(5)) - $$(call REMOVE_ALL_OLD_GLOB_MATCHES, \ - $$(dir $$@)$$(call CFG_LIB_GLOB_$(3),$(5))) - $$(Q)cp $$< $$@ - $$(Q)cp -R $$(TLIB$(1)_T_$(3)_H_$(4))/$$(call CFG_LIB_GLOB_$(3),$(5)) \ - $$(HLIB$(2)_H_$(4)) - $$(call LIST_ALL_OLD_GLOB_MATCHES, \ - $$(dir $$@)$$(call CFG_LIB_GLOB_$(3),$(5))) -else -$$(HLIB$(2)_H_$(4))/stamp.$(5): - $$(Q)touch $$@ -endif - -endef - -# Same as the above macro, but for tools instead of crates -define CP_HOST_STAGE_N_TOOL - -$$(HBIN$(2)_H_$(4))/$(5)$$(X_$(3)): \ - $$(TBIN$(1)_T_$(3)_H_$(4))/$(5)$$(X_$(3)) \ - $$(TOOL_DEPS_$(5):%=$$(HLIB$(2)_H_$(4))/stamp.%) \ - | $$(HBIN$(2)_H_$(4))/ - @$$(call E, cp: $$@) - $$(Q)cp $$< $$@ - -endef - - -# Miscellaneous rules for just making a few directories. -# -# $(1) - the stage to copy from -# $(2) - the stage to copy to -# $(3) - the target triple -# $(4) - the host triple (same as $(3)) -define CP_HOST_STAGE_N - -ifneq ($(CFG_LIBDIR_RELATIVE),bin) -$$(HLIB$(2)_H_$(4))/: - @mkdir -p $$@ -endif - -endef - -$(foreach t,$(CFG_HOST), \ - $(eval $(call CP_HOST_STAGE_N,0,1,$(t),$(t))) \ - $(eval $(call CP_HOST_STAGE_N,1,2,$(t),$(t))) \ - $(eval $(call CP_HOST_STAGE_N,2,3,$(t),$(t)))) - -$(foreach crate,$(CRATES), \ - $(foreach t,$(CFG_HOST), \ - $(eval $(call CP_HOST_STAGE_N_CRATE,0,1,$(t),$(t),$(crate))) \ - $(eval $(call CP_HOST_STAGE_N_CRATE,1,2,$(t),$(t),$(crate))) \ - $(eval $(call CP_HOST_STAGE_N_CRATE,2,3,$(t),$(t),$(crate))))) - -$(foreach tool,$(TOOLS), \ - $(foreach t,$(CFG_HOST), \ - $(eval $(call CP_HOST_STAGE_N_TOOL,0,1,$(t),$(t),$(tool))) \ - $(eval $(call CP_HOST_STAGE_N_TOOL,1,2,$(t),$(t),$(tool))) \ - $(eval $(call CP_HOST_STAGE_N_TOOL,2,3,$(t),$(t),$(tool))))) diff --git a/mk/install.mk b/mk/install.mk deleted file mode 100644 index be212869f0103..0000000000000 --- a/mk/install.mk +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -RUN_INSTALLER = cd tmp/empty_dir && \ - sh ../../tmp/dist/$(1)/install.sh \ - --prefix="$(DESTDIR)$(CFG_PREFIX)" \ - --libdir="$(DESTDIR)$(CFG_LIBDIR)" \ - --mandir="$(DESTDIR)$(CFG_MANDIR)" \ - --docdir="$(DESTDIR)$(CFG_DOCDIR)" - -install: -ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER))) -# Build the dist as the original user - $(Q)sudo -u "$$SUDO_USER" $(MAKE) prepare_install -else - $(Q)$(MAKE) prepare_install -endif -ifeq ($(CFG_DISABLE_DOCS),) - $(Q)$(call RUN_INSTALLER,$(DOC_PKG_NAME)-$(CFG_BUILD)) --disable-ldconfig -endif - $(Q)$(foreach target,$(CFG_TARGET),\ - ($(call RUN_INSTALLER,$(STD_PKG_NAME)-$(target)) --disable-ldconfig);) - $(Q)$(call RUN_INSTALLER,$(PKG_NAME)-$(CFG_BUILD)) -# Remove tmp files because it's a decent amount of disk space - $(Q)rm -R tmp/dist - -prepare_install: dist-tar-bins | tmp/empty_dir - -uninstall: -ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER))) -# Build the dist as the original user - $(Q)sudo -u "$$SUDO_USER" $(MAKE) prepare_uninstall -else - $(Q)$(MAKE) prepare_uninstall -endif -ifeq ($(CFG_DISABLE_DOCS),) - $(Q)$(call RUN_INSTALLER,$(DOC_PKG_NAME)-$(CFG_BUILD)) --uninstall -endif - $(Q)$(call RUN_INSTALLER,$(PKG_NAME)-$(CFG_BUILD)) --uninstall - $(Q)$(foreach target,$(CFG_TARGET),\ - ($(call RUN_INSTALLER,$(STD_PKG_NAME)-$(target)) --uninstall);) -# Remove tmp files because it's a decent amount of disk space - $(Q)rm -R tmp/dist - -prepare_uninstall: dist-tar-bins | tmp/empty_dir - -.PHONY: install prepare_install uninstall prepare_uninstall - -tmp/empty_dir: - mkdir -p $@ - -###################################################################### -# Android remote installation -###################################################################### - -# Android runtime setup -# FIXME: This probably belongs somewhere else - -# target platform specific variables for android -define DEF_ADB_DEVICE_STATUS -CFG_ADB_DEVICE_STATUS=$(1) -endef - -$(foreach target,$(CFG_TARGET), \ - $(if $(findstring android, $(target)), \ - $(if $(findstring adb,$(CFG_ADB)), \ - $(if $(findstring device,$(shell $(CFG_ADB) devices 2>/dev/null | grep -E '^[_A-Za-z0-9-]+[[:blank:]]+device')), \ - $(info install: install-runtime-target for $(target) enabled \ - $(info install: android device attached) \ - $(eval $(call DEF_ADB_DEVICE_STATUS, true))), \ - $(info install: install-runtime-target for $(target) disabled \ - $(info install: android device not attached) \ - $(eval $(call DEF_ADB_DEVICE_STATUS, false))) \ - ), \ - $(info install: install-runtime-target for $(target) disabled \ - $(info install: adb not found) \ - $(eval $(call DEF_ADB_DEVICE_STATUS, false))) \ - ), \ - ) \ -) - -ifeq (install-runtime-target,$(firstword $(MAKECMDGOALS))) -$(eval $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)):;@:) -L_TOKEN := $(word 2,$(MAKECMDGOALS)) -ifeq ($(L_TOKEN),) -CFG_RUNTIME_PUSH_DIR=/system/lib -else -CFG_RUNTIME_PUSH_DIR=$(L_TOKEN) -endif - -ifeq ($(CFG_ADB_DEVICE_STATUS),true) -ifdef VERBOSE - ADB = adb $(1) - ADB_PUSH = adb push $(1) $(2) - ADB_SHELL = adb shell $(1) $(2) -else - ADB = $(Q)$(call E, adb $(1)) && adb $(1) 1>/dev/null - ADB_PUSH = $(Q)$(call E, adb push $(1)) && adb push $(1) $(2) 1>/dev/null - ADB_SHELL = $(Q)$(call E, adb shell $(1) $(2)) && adb shell $(1) $(2) 1>/dev/null -endif - -define INSTALL_RUNTIME_TARGET_N -install-runtime-target-$(1)-host-$(2): $$(TSREQ$$(ISTAGE)_T_$(1)_H_$(2)) $$(SREQ$$(ISTAGE)_T_$(1)_H_$(2)) - $$(Q)$$(call ADB_SHELL,mkdir,$(CFG_RUNTIME_PUSH_DIR)) - $$(Q)$$(foreach crate,$$(TARGET_CRATES_$(1)), \ - $$(call ADB_PUSH,$$(TL$(1)$(2))/$$(call CFG_LIB_GLOB_$(1),$$(crate)), \ - $$(CFG_RUNTIME_PUSH_DIR));) -endef - -define INSTALL_RUNTIME_TARGET_CLEANUP_N -install-runtime-target-$(1)-cleanup: - $$(Q)$$(call ADB,remount) - $$(Q)$$(foreach crate,$$(TARGET_CRATES_$(1)), \ - $$(call ADB_SHELL,rm,$$(CFG_RUNTIME_PUSH_DIR)/$$(call CFG_LIB_GLOB_$(1),$$(crate)));) -endef - -$(foreach target,$(CFG_TARGET), \ - $(if $(findstring $(CFG_ADB_DEVICE_STATUS),"true"), \ - $(eval $(call INSTALL_RUNTIME_TARGET_N,$(taget),$(CFG_BUILD))) \ - $(eval $(call INSTALL_RUNTIME_TARGET_CLEANUP_N,$(target))) \ - )) - -install-runtime-target: \ - install-runtime-target-arm-linux-androideabi-cleanup \ - install-runtime-target-arm-linux-androideabi-host-$(CFG_BUILD) -else -install-runtime-target: - @echo "No device to install runtime library" - @echo -endif -endif diff --git a/mk/llvm.mk b/mk/llvm.mk deleted file mode 100644 index 76367e6f3a628..0000000000000 --- a/mk/llvm.mk +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - - -ifdef CFG_ENABLE_FAST_MAKE -LLVM_DEPS := $(S)/.gitmodules -else - -# This is just a rough approximation of LLVM deps -LLVM_DEPS_SRC=$(call rwildcard,$(CFG_LLVM_SRC_DIR)lib,*cpp *hpp) -LLVM_DEPS_INC=$(call rwildcard,$(CFG_LLVM_SRC_DIR)include,*cpp *hpp) -LLVM_DEPS=$(LLVM_DEPS_SRC) $(LLVM_DEPS_INC) -endif - -ifdef CFG_DISABLE_OPTIMIZE_LLVM -LLVM_BUILD_CONFIG_MODE := Debug -else ifdef CFG_ENABLE_LLVM_RELEASE_DEBUGINFO -LLVM_BUILD_CONFIG_MODE := RelWithDebInfo -else -LLVM_BUILD_CONFIG_MODE := Release -endif - -define DEF_LLVM_RULES - -ifeq ($(1),$$(CFG_BUILD)) -LLVM_DEPS_TARGET_$(1) := $$(LLVM_DEPS) -else -LLVM_DEPS_TARGET_$(1) := $$(LLVM_DEPS) $$(LLVM_CONFIG_$$(CFG_BUILD)) -endif - -# If CFG_LLVM_ROOT is defined then we don't build LLVM ourselves -ifeq ($(CFG_LLVM_ROOT),) - -LLVM_STAMP_$(1) = $(S)src/rustllvm/llvm-auto-clean-trigger -LLVM_DONE_$(1) = $$(CFG_LLVM_BUILD_DIR_$(1))/llvm-finished-building - -$$(LLVM_CONFIG_$(1)): $$(LLVM_DONE_$(1)) - -ifneq ($$(CFG_NINJA),) -BUILD_LLVM_$(1) := $$(CFG_NINJA) -C $$(CFG_LLVM_BUILD_DIR_$(1)) -else ifeq ($$(findstring msvc,$(1)),msvc) -BUILD_LLVM_$(1) := $$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \ - --config $$(LLVM_BUILD_CONFIG_MODE) -else -BUILD_LLVM_$(1) := $$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) -endif - -$$(LLVM_DONE_$(1)): $$(LLVM_DEPS_TARGET_$(1)) $$(LLVM_STAMP_$(1)) - @$$(call E, cmake: llvm) - $$(Q)if ! cmp $$(LLVM_STAMP_$(1)) $$(LLVM_DONE_$(1)); then \ - $$(MAKE) clean-llvm$(1); \ - $$(BUILD_LLVM_$(1)); \ - fi - $$(Q)cp $$(LLVM_STAMP_$(1)) $$@ - -ifneq ($$(CFG_NINJA),) -clean-llvm$(1): - @$$(call E, clean: llvm) - $$(Q)$$(CFG_NINJA) -C $$(CFG_LLVM_BUILD_DIR_$(1)) -t clean -else ifeq ($$(findstring msvc,$(1)),msvc) -clean-llvm$(1): - @$$(call E, clean: llvm) - $$(Q)$$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \ - --config $$(LLVM_BUILD_CONFIG_MODE) \ - --target clean -else -clean-llvm$(1): - @$$(call E, clean: llvm) - $$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) clean -endif - -else -clean-llvm$(1): -endif - -$$(LLVM_AR_$(1)): $$(LLVM_CONFIG_$(1)) - -ifeq ($$(CFG_ENABLE_LLVM_STATIC_STDCPP),1) -LLVM_STDCPP_RUSTFLAGS_$(1) = -L "$$(dir $$(shell $$(CC_$(1)) $$(CFG_GCCISH_CFLAGS_$(1)) \ - -print-file-name=lib$(CFG_STDCPP_NAME).a))" -else -LLVM_STDCPP_RUSTFLAGS_$(1) = -endif - - -# LLVM linkage: -# Note: Filter with llvm-config so that optional targets which aren't present -# don't cause errors (ie PNaCl's target is only present within PNaCl's LLVM -# fork). -LLVM_LINKAGE_PATH_$(1):=$$(abspath $$(RT_OUTPUT_DIR_$(1))/llvmdeps.rs) -$$(LLVM_LINKAGE_PATH_$(1)): $(S)src/etc/mklldeps.py $$(LLVM_CONFIG_$(1)) - $(Q)$(CFG_PYTHON) "$$<" "$$@" "$$(filter $$(shell \ - $$(LLVM_CONFIG_$(1)) --components), \ - $(LLVM_OPTIONAL_COMPONENTS)) $(LLVM_REQUIRED_COMPONENTS)" \ - "$$(CFG_ENABLE_LLVM_STATIC_STDCPP)" $$(LLVM_CONFIG_$(1)) \ - "$(CFG_STDCPP_NAME)" "$$(CFG_USING_LIBCPP)" -endef - -$(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_LLVM_RULES,$(host)))) - -$(foreach host,$(CFG_HOST), \ - $(eval LLVM_CONFIGS := $(LLVM_CONFIGS) $(LLVM_CONFIG_$(host)))) - -# This can't be done in target.mk because it's included before this file. -define LLVM_LINKAGE_DEPS -$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.rustc_llvm: $$(LLVM_LINKAGE_PATH_$(2)) -RUSTFLAGS$(1)_rustc_llvm_T_$(2) += $$(shell echo $$(LLVM_ALL_COMPONENTS_$(2)) | tr '-' '_' |\ - sed -e 's/^ //;s/\([^ ]*\)/\-\-cfg "llvm_component=\\"\1\\""/g') -endef - -$(foreach source,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(eval $(call LLVM_LINKAGE_DEPS,0,$(target),$(source))) \ - $(eval $(call LLVM_LINKAGE_DEPS,1,$(target),$(source))) \ - $(eval $(call LLVM_LINKAGE_DEPS,2,$(target),$(source))) \ - $(eval $(call LLVM_LINKAGE_DEPS,3,$(target),$(source))))) diff --git a/mk/main.mk b/mk/main.mk deleted file mode 100644 index 6b409eebc74c8..0000000000000 --- a/mk/main.mk +++ /dev/null @@ -1,641 +0,0 @@ -# Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# Version numbers and strings -###################################################################### - -# The version number -CFG_RELEASE_NUM=1.17.0 - -# An optional number to put after the label, e.g. '.2' -> '-beta.2' -# NB Make sure it starts with a dot to conform to semver pre-release -# versions (section 9) -CFG_PRERELEASE_VERSION=.1 - -ifeq ($(CFG_RELEASE_CHANNEL),stable) -# This is the normal semver version string, e.g. "0.12.0", "0.12.0-nightly" -CFG_RELEASE=$(CFG_RELEASE_NUM) -# This is the string used in dist artifact file names, e.g. "0.12.0", "nightly" -CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM) -CFG_DISABLE_UNSTABLE_FEATURES=1 -endif -ifeq ($(CFG_RELEASE_CHANNEL),beta) -CFG_RELEASE=$(CFG_RELEASE_NUM)-beta$(CFG_PRERELEASE_VERSION) -# When building beta distributables just reuse the same "beta" name -# so when we upload we'll always override the previous beta. This -# doesn't actually impact the version reported by rustc - it's just -# for file naming. -CFG_PACKAGE_VERS=beta -CFG_DISABLE_UNSTABLE_FEATURES=1 -endif -ifeq ($(CFG_RELEASE_CHANNEL),nightly) -CFG_RELEASE=$(CFG_RELEASE_NUM)-nightly -# When building nightly distributables just reuse the same "nightly" name -# so when we upload we'll always override the previous nighly. This -# doesn't actually impact the version reported by rustc - it's just -# for file naming. -CFG_PACKAGE_VERS=nightly -endif -ifeq ($(CFG_RELEASE_CHANNEL),dev) -CFG_RELEASE=$(CFG_RELEASE_NUM)-dev -CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)-dev -endif - -# Append a version-dependent hash to each library, so we can install different -# versions in the same place -CFG_FILENAME_EXTRA=$(shell printf '%s' $(CFG_RELEASE)$(CFG_EXTRA_FILENAME) | $(CFG_HASH_COMMAND)) - -# If local-rust is the same major.minor as the current version, then force a local-rebuild -ifdef CFG_ENABLE_LOCAL_RUST -SEMVER_PREFIX=$(shell echo $(CFG_RELEASE_NUM) | grep -E -o '^[[:digit:]]+\.[[:digit:]]+') -LOCAL_RELEASE=$(shell $(S)src/etc/local_stage0.sh --print-rustc-release $(CFG_LOCAL_RUST_ROOT)) -ifneq (,$(filter $(SEMVER_PREFIX).%,$(LOCAL_RELEASE))) - CFG_INFO := $(info cfg: auto-detected local-rebuild using $(LOCAL_RELEASE)) - CFG_ENABLE_LOCAL_REBUILD = 1 -endif -endif - -# The name of the package to use for creating tarballs, installers etc. -CFG_PACKAGE_NAME=rustc-$(CFG_PACKAGE_VERS) - -# The version string plus commit information - this is what rustc reports -CFG_VERSION = $(CFG_RELEASE) -CFG_GIT_DIR := $(CFG_SRC_DIR).git -# since $(CFG_GIT) may contain spaces (especially on Windows), -# we need to escape them. (" " to r"\ ") -# Note that $(subst ...) ignores space after `subst`, -# so we use a hack: define $(SPACE) which contains space character. -SPACE := -SPACE += -ifneq ($(CFG_GIT),) -ifneq ($(wildcard $(subst $(SPACE),\$(SPACE),$(CFG_GIT_DIR))),) - CFG_VER_DATE = $(shell git --git-dir='$(CFG_GIT_DIR)' log -1 --date=short --pretty=format:'%cd') - CFG_VER_HASH = $(shell git --git-dir='$(CFG_GIT_DIR)' rev-parse HEAD) - CFG_SHORT_VER_HASH = $(shell git --git-dir='$(CFG_GIT_DIR)' rev-parse --short=9 HEAD) - CFG_VERSION += ($(CFG_SHORT_VER_HASH) $(CFG_VER_DATE)) -endif -endif - -# Windows exe's need numeric versions - don't use anything but -# numbers and dots here -CFG_VERSION_WIN = $(CFG_RELEASE_NUM) - -CFG_INFO := $(info cfg: version $(CFG_VERSION)) - -###################################################################### -# More configuration -###################################################################### - -MKFILE_DEPS := config.stamp $(call rwildcard,$(CFG_SRC_DIR)mk/,*) -MKFILES_FOR_TARBALL:=$(MKFILE_DEPS) -ifneq ($(NO_MKFILE_DEPS),) -MKFILE_DEPS := -endif -NON_BUILD_HOST = $(filter-out $(CFG_BUILD),$(CFG_HOST)) -NON_BUILD_TARGET = $(filter-out $(CFG_BUILD),$(CFG_TARGET)) - -ifneq ($(MAKE_RESTARTS),) -CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS)) -endif - -CFG_INFO := $(info cfg: build triple $(CFG_BUILD)) -CFG_INFO := $(info cfg: host triples $(CFG_HOST)) -CFG_INFO := $(info cfg: target triples $(CFG_TARGET)) - -ifneq ($(wildcard $(NON_BUILD_HOST)),) -CFG_INFO := $(info cfg: non-build host triples $(NON_BUILD_HOST)) -endif -ifneq ($(wildcard $(NON_BUILD_TARGET)),) -CFG_INFO := $(info cfg: non-build target triples $(NON_BUILD_TARGET)) -endif - -CFG_RUSTC_FLAGS := $(RUSTFLAGS) -CFG_GCCISH_CFLAGS := -CFG_GCCISH_LINK_FLAGS := - -CFG_JEMALLOC_FLAGS := - -ifdef CFG_DISABLE_OPTIMIZE - $(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE)) - CFG_RUSTC_FLAGS += - CFG_JEMALLOC_FLAGS += --enable-debug -else - # The rtopt cfg turns off runtime sanity checks - CFG_RUSTC_FLAGS += -O --cfg rtopt -endif - -CFG_JEMALLOC_FLAGS += $(JEMALLOC_FLAGS) - -ifdef CFG_ENABLE_DEBUG_ASSERTIONS - $(info cfg: enabling debug assertions (CFG_ENABLE_DEBUG_ASSERTIONS)) - CFG_RUSTC_FLAGS += -C debug-assertions=on -endif - -ifdef CFG_ENABLE_DEBUGINFO - $(info cfg: enabling debuginfo (CFG_ENABLE_DEBUGINFO)) - CFG_RUSTC_FLAGS += -g -else ifdef CFG_ENABLE_DEBUGINFO_LINES - $(info cfg: enabling line number debuginfo (CFG_ENABLE_DEBUGINFO_LINES)) - CFG_RUSTC_FLAGS += -Cdebuginfo=1 -endif - -ifdef SAVE_TEMPS - CFG_RUSTC_FLAGS += -C save-temps -endif -ifdef ASM_COMMENTS - CFG_RUSTC_FLAGS += -Z asm-comments -endif -ifdef TIME_PASSES - CFG_RUSTC_FLAGS += -Z time-passes -endif -ifdef TIME_LLVM_PASSES - CFG_RUSTC_FLAGS += -Z time-llvm-passes -endif -ifdef TRACE - CFG_RUSTC_FLAGS += -Z trace -endif -ifndef CFG_DISABLE_RPATH -CFG_RUSTC_FLAGS += -C rpath -endif - -# The executables crated during this compilation process have no need to include -# static copies of libstd and libextra. We also generate dynamic versions of all -# libraries, so in the interest of space, prefer dynamic linking throughout the -# compilation process. -# -# Note though that these flags are omitted for the *bins* in stage2+. This means -# that the snapshot will be generated with a statically linked rustc so we only -# have to worry about the distribution of one file (with its native dynamic -# dependencies) -RUSTFLAGS_STAGE0 += -C prefer-dynamic -RUSTFLAGS_STAGE1 += -C prefer-dynamic -RUST_LIB_FLAGS_ST2 += -C prefer-dynamic -RUST_LIB_FLAGS_ST3 += -C prefer-dynamic - -# Landing pads require a lot of codegen. We can get through bootstrapping faster -# by not emitting them. - -ifdef CFG_DISABLE_STAGE0_LANDING_PADS - RUSTFLAGS_STAGE0 += -Z no-landing-pads -endif - -# platform-specific auto-configuration -include $(CFG_SRC_DIR)mk/platform.mk - -# Run the stage1/2 compilers under valgrind -ifdef VALGRIND_COMPILE - CFG_VALGRIND_COMPILE := $(CFG_VALGRIND) -else - CFG_VALGRIND_COMPILE := -endif - - -ifndef CFG_DISABLE_VALGRIND_RPASS - $(info cfg: enabling valgrind run-pass tests (CFG_ENABLE_VALGRIND_RPASS)) - $(info cfg: valgrind-rpass command set to $(CFG_VALGRIND)) - CFG_VALGRIND_RPASS :=$(CFG_VALGRIND) -else - $(info cfg: disabling valgrind run-pass tests) - CFG_VALGRIND_RPASS := -endif - - -ifdef CFG_ENABLE_VALGRIND - $(info cfg: enabling valgrind (CFG_ENABLE_VALGRIND)) - CFG_JEMALLOC_FLAGS += --enable-valgrind -else - CFG_VALGRIND := -endif - -###################################################################### -# Target-and-rule "utility variables" -###################################################################### - -define DEF_FOR_TARGET -X_$(1) := $(CFG_EXE_SUFFIX_$(1)) -ifndef CFG_LLVM_TARGET_$(1) -CFG_LLVM_TARGET_$(1) := $(1) -endif -endef -$(foreach target,$(CFG_TARGET), \ - $(eval $(call DEF_FOR_TARGET,$(target)))) - -# "Source" files we generate in builddir along the way. -GENERATED := - -# Delete the built-in rules. -.SUFFIXES: -%:: %,v -%:: RCS/%,v -%:: RCS/% -%:: s.% -%:: SCCS/s.% - - -###################################################################### -# Cleaning out old crates -###################################################################### - -# $(1) is the path for directory to match against -# $(2) is the glob to use in the match -# -# Note that a common bug is to accidentally construct the glob denoted -# by $(2) with a space character prefix, which invalidates the -# construction $(1)$(2). -define CHECK_FOR_OLD_GLOB_MATCHES - $(Q)MATCHES="$(wildcard $(1))"; if [ -n "$$MATCHES" ] ; then echo "warning: there are previous" \'$(notdir $(2))\' "libraries:" $$MATCHES; fi -endef - -# Same interface as above, but deletes rather than just listing the files. -ifdef VERBOSE -define REMOVE_ALL_OLD_GLOB_MATCHES - $(Q)MATCHES="$(wildcard $(1))"; if [ -n "$$MATCHES" ] ; then echo "warning: removing previous" \'$(notdir $(1))\' "libraries:" $$MATCHES; rm $$MATCHES ; fi -endef -else -define REMOVE_ALL_OLD_GLOB_MATCHES - $(Q)MATCHES="$(wildcard $(1))"; if [ -n "$$MATCHES" ] ; then rm $$MATCHES ; fi -endef -endif - -# We use a different strategy for LIST_ALL_OLD_GLOB_MATCHES_EXCEPT -# than in the macros above because it needs the result of running the -# `ls` command after other rules in the command list have run; the -# macro-expander for $(wildcard ...) would deliver its results too -# soon. (This is in contrast to the macros above, which are meant to -# be run at the outset of a command list in a rule.) -ifdef VERBOSE -define LIST_ALL_OLD_GLOB_MATCHES - @echo "info: now are following matches for" '$(notdir $(1))' "libraries:" - @( ls $(1) 2>/dev/null || true ) -endef -else -define LIST_ALL_OLD_GLOB_MATCHES -endef -endif - -###################################################################### -# LLVM macros -###################################################################### - -LLVM_OPTIONAL_COMPONENTS=x86 arm aarch64 mips powerpc pnacl systemz jsbackend msp430 sparc -LLVM_REQUIRED_COMPONENTS=ipo bitreader bitwriter linker asmparser mcjit \ - interpreter instrumentation - -ifneq ($(CFG_LLVM_ROOT),) -# Ensure we only try to link targets that the installed LLVM actually has: -LLVM_COMPONENTS := $(filter $(shell $(CFG_LLVM_ROOT)/bin/llvm-config$(X_$(CFG_BUILD)) --components),\ - $(LLVM_OPTIONAL_COMPONENTS)) $(LLVM_REQUIRED_COMPONENTS) -else -LLVM_COMPONENTS := $(LLVM_OPTIONAL_COMPONENTS) $(LLVM_REQUIRED_COMPONENTS) -endif - -# Only build these LLVM tools -LLVM_TOOLS=bugpoint llc llvm-ar llvm-as llvm-dis llvm-mc opt llvm-extract - -define DEF_LLVM_VARS -# The configure script defines these variables with the target triples -# separated by Z. This defines new ones with the expected format. -ifeq ($$(CFG_LLVM_ROOT),) -CFG_LLVM_BUILD_DIR_$(1):=$$(CFG_LLVM_BUILD_DIR_$(subst -,_,$(1))) -CFG_LLVM_INST_DIR_$(1):=$$(CFG_LLVM_INST_DIR_$(subst -,_,$(1))) -else -CFG_LLVM_INST_DIR_$(1):=$$(CFG_LLVM_ROOT) -endif - -# Any rules that depend on LLVM should depend on LLVM_CONFIG -LLVM_CONFIG_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-config$$(X_$(1)) -LLVM_MC_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-mc$$(X_$(1)) -LLVM_AR_$(1):=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-ar$$(X_$(1)) -LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version) -LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir) -LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir) -LLVM_LIBDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libdir) -LLVM_LIBDIR_RUSTFLAGS_$(1)=-L native="$$(LLVM_LIBDIR_$(1))" -LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags) -ifeq ($$(findstring freebsd,$(1)),freebsd) -# On FreeBSD, it may search wrong headers (that are for pre-installed LLVM), -# so we replace -I with -iquote to ensure that it searches bundled LLVM first. -LLVM_CXXFLAGS_$(1)=$$(subst -I, -iquote , $$(shell "$$(LLVM_CONFIG_$(1))" --cxxflags)) -else -LLVM_CXXFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --cxxflags) -endif -LLVM_HOST_TRIPLE_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --host-target) - -LLVM_AS_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llvm-as$$(X_$(1)) -LLC_$(1)=$$(CFG_LLVM_INST_DIR_$(1))/bin/llc$$(X_$(1)) - -LLVM_ALL_COMPONENTS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --components) -LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version) - -endef - -$(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_LLVM_VARS,$(host)))) - -###################################################################### -# Exports for sub-utilities -###################################################################### - -# Note that any variable that re-configure should pick up needs to be -# exported - -export CFG_SRC_DIR -export CFG_SRC_DIR_RELATIVE -export CFG_BUILD_DIR -ifdef CFG_VER_DATE -export CFG_VER_DATE -endif -ifdef CFG_VER_HASH -export CFG_VER_HASH -endif -export CFG_VERSION -export CFG_VERSION_WIN -export CFG_RELEASE -export CFG_PACKAGE_NAME -export CFG_BUILD -export CFG_RELEASE_CHANNEL -export CFG_LLVM_ROOT -export CFG_PREFIX -export CFG_LIBDIR -export CFG_LIBDIR_RELATIVE -export CFG_DISABLE_INJECT_STD_VERSION -ifdef CFG_DISABLE_UNSTABLE_FEATURES -CFG_INFO := $(info cfg: disabling unstable features (CFG_DISABLE_UNSTABLE_FEATURES)) -# Turn on feature-staging -export CFG_DISABLE_UNSTABLE_FEATURES -# Subvert unstable feature lints to do the self-build -endif -ifdef CFG_MUSL_ROOT -export CFG_MUSL_ROOT -endif - -export RUSTC_BOOTSTRAP := 1 - -###################################################################### -# Per-stage targets and runner -###################################################################### - -# Valid setting-strings are 'all', 'none', 'gdb', 'lldb' -# This 'function' will determine which debugger scripts to copy based on a -# target triple. See debuggers.mk for more information. -TRIPLE_TO_DEBUGGER_SCRIPT_SETTING=\ - $(if $(findstring windows-msvc,$(1)),none,all) - -STAGES = 0 1 2 3 - -define SREQ -# $(1) is the stage number -# $(2) is the target triple -# $(3) is the host triple - -# Destinations of artifacts for the host compiler -HROOT$(1)_H_$(3) = $(3)/stage$(1) -HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin - -ifeq ($$(CFG_WINDOWSY_$(3)),1) -# On Windows we always store host runtime libraries in the 'bin' directory because -# there's no rpath. Target libraries go under $CFG_LIBDIR_RELATIVE (usually 'lib'). -HLIB_RELATIVE$(1)_H_$(3) = bin -TROOT$(1)_T_$(2)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)/rustlib/$(2) -# Remove the next 3 lines after a snapshot -ifeq ($(1),0) -RUSTFLAGS_STAGE0 += -L $$(TROOT$(1)_T_$(2)_H_$(3))/lib -endif - -else - -ifeq ($(1),0) -HLIB_RELATIVE$(1)_H_$(3) = lib -else -HLIB_RELATIVE$(1)_H_$(3) = $$(CFG_LIBDIR_RELATIVE) -endif -TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2) - -endif -HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(HLIB_RELATIVE$(1)_H_$(3)) - -# Destinations of artifacts for target architectures -TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin -TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib - -# Preqrequisites for using the stageN compiler -ifeq ($(1),0) -HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) -else -HSREQ$(1)_H_$(3) = \ - $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ - $$(MKFILE_DEPS) \ - tmp/install-debugger-scripts$(1)_H_$(3)-$$(call TRIPLE_TO_DEBUGGER_SCRIPT_SETTING,$(3)).done -endif - -# Prerequisites for using the stageN compiler to build target artifacts -TSREQ$(1)_T_$(2)_H_$(3) = \ - $$(HSREQ$(1)_H_$(3)) \ - $$(foreach obj,$$(REQUIRED_OBJECTS_$(2)),\ - $$(TLIB$(1)_T_$(2)_H_$(3))/$$(obj)) - -# Prerequisites for a working stageN compiler and libraries, for a specific -# target -SREQ$(1)_T_$(2)_H_$(3) = \ - $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - $$(foreach dep,$$(TARGET_CRATES_$(2)), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \ - tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-$$(call TRIPLE_TO_DEBUGGER_SCRIPT_SETTING,$(2)).done - -# Prerequisites for a working stageN compiler and complete set of target -# libraries -CSREQ$(1)_T_$(2)_H_$(3) = \ - $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ - $$(foreach dep,$$(HOST_CRATES),$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) - -ifeq ($(1),0) -# Don't run the stage0 compiler under valgrind - that ship has sailed -CFG_VALGRIND_COMPILE$(1) = -else -CFG_VALGRIND_COMPILE$(1) = $$(CFG_VALGRIND_COMPILE) -endif - -# Add RUSTFLAGS_STAGEN values to the build command -EXTRAFLAGS_STAGE$(1) = $$(RUSTFLAGS_STAGE$(1)) - -CFGFLAG$(1)_T_$(2)_H_$(3) = stage$(1) - -endef - -# Same macro/variables as above, but defined in a separate loop so it can use -# all the variables above for all archs. The RPATH_VAR setup sometimes needs to -# reach across triples to get things in order. -# -# Defines (with the standard $(1)_T_$(2)_H_$(3) suffix): -# * `LD_LIBRARY_PATH_ENV_NAME`: the name for the key to use in the OS -# environment to access or extend the lookup path for dynamic -# libraries. Note on Windows, that key is `$PATH`, and thus not -# only conflates programs with dynamic libraries, but also often -# contains spaces which confuse make. -# * `LD_LIBRARY_PATH_ENV_HOSTDIR`: the entry to add to lookup path for the host -# * `LD_LIBRARY_PATH_ENV_TARGETDIR`: the entry to add to lookup path for target -# -# Below that, HOST_RPATH_VAR and TARGET_RPATH_VAR are defined in terms of the -# above settings. -# -define SREQ_CMDS - -ifeq ($$(OSTYPE_$(3)),apple-darwin) - LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := DYLD_LIBRARY_PATH -else -ifeq ($$(CFG_WINDOWSY_$(3)),1) - LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := PATH -else -ifeq ($$(OSTYPE_$(3)),unknown-haiku) - LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := LIBRARY_PATH -else - LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3) := LD_LIBRARY_PATH -endif -endif -endif - -LD_LIBRARY_PATH_ENV_HOSTDIR$(1)_T_$(2)_H_$(3) := \ - $$(CURDIR)/$$(HLIB$(1)_H_$(3)):$$(CFG_LLVM_INST_DIR_$(3))/lib -LD_LIBRARY_PATH_ENV_TARGETDIR$(1)_T_$(2)_H_$(3) := \ - $$(CURDIR)/$$(TLIB$(1)_T_$(2)_H_$(3)) - -HOST_RPATH_VAR$(1)_T_$(2)_H_$(3) := \ - $$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3))=$$(LD_LIBRARY_PATH_ENV_HOSTDIR$(1)_T_$(2)_H_$(3)):$$$$$$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3)) -TARGET_RPATH_VAR$(1)_T_$(2)_H_$(3) := \ - $$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3))=$$(LD_LIBRARY_PATH_ENV_TARGETDIR$(1)_T_$(2)_H_$(3)):$$$$$$(LD_LIBRARY_PATH_ENV_NAME$(1)_T_$(2)_H_$(3)) - -RPATH_VAR$(1)_T_$(2)_H_$(3) := $$(HOST_RPATH_VAR$(1)_T_$(2)_H_$(3)) - -# Pass --cfg stage0 only for the build->host part of stage0; -# if you're building a cross config, the host->* parts are -# effectively stage1, since it uses the just-built stage0. -# -# Also be sure to use the right rpath because we're loading libraries from the -# CFG_BUILD's stage1 directory for our target, so switch this one instance of -# `RPATH_VAR` to get the bootstrap working. -ifeq ($(1),0) -ifneq ($(strip $(CFG_BUILD)),$(strip $(3))) -CFGFLAG$(1)_T_$(2)_H_$(3) = stage1 - -RPATH_VAR$(1)_T_$(2)_H_$(3) := $$(TARGET_RPATH_VAR1_T_$(2)_H_$$(CFG_BUILD)) -else -ifdef CFG_ENABLE_LOCAL_REBUILD -# Assume the local-rebuild rustc already has stage1 features too. -CFGFLAG$(1)_T_$(2)_H_$(3) = stage1 -endif -endif -endif - -STAGE$(1)_T_$(2)_H_$(3) := \ - $$(Q)$$(RPATH_VAR$(1)_T_$(2)_H_$(3)) \ - $$(call CFG_RUN_TARG_$(3),$(1), \ - $$(CFG_VALGRIND_COMPILE$(1)) \ - $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ - --cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \ - $$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \ - $$(RUSTC_FLAGS_$(2)) - -endef - -$(foreach build,$(CFG_HOST), \ - $(eval $(foreach target,$(CFG_TARGET), \ - $(eval $(foreach stage,$(STAGES), \ - $(eval $(call SREQ,$(stage),$(target),$(build)))))))) - -$(foreach build,$(CFG_HOST), \ - $(eval $(foreach target,$(CFG_TARGET), \ - $(eval $(foreach stage,$(STAGES), \ - $(eval $(call SREQ_CMDS,$(stage),$(target),$(build)))))))) - -###################################################################### -# rustc-H-targets -# -# Builds a functional Rustc for the given host. -###################################################################### - -define DEF_RUSTC_STAGE_TARGET -# $(1) == architecture -# $(2) == stage - -rustc-stage$(2)-H-$(1): \ - $$(foreach target,$$(CFG_TARGET),$$(SREQ$(2)_T_$$(target)_H_$(1))) - -endef - -$(foreach host,$(CFG_HOST), \ - $(eval $(foreach stage,1 2 3, \ - $(eval $(call DEF_RUSTC_STAGE_TARGET,$(host),$(stage)))))) - -rustc-stage1: rustc-stage1-H-$(CFG_BUILD) -rustc-stage2: rustc-stage2-H-$(CFG_BUILD) -rustc-stage3: rustc-stage3-H-$(CFG_BUILD) - -define DEF_RUSTC_TARGET -# $(1) == architecture - -rustc-H-$(1): rustc-stage2-H-$(1) -endef - -$(foreach host,$(CFG_TARGET), \ - $(eval $(call DEF_RUSTC_TARGET,$(host)))) - -rustc-stage1: rustc-stage1-H-$(CFG_BUILD) -rustc-stage2: rustc-stage2-H-$(CFG_BUILD) -rustc-stage3: rustc-stage3-H-$(CFG_BUILD) -rustc: rustc-H-$(CFG_BUILD) - -rustc-H-all: $(foreach host,$(CFG_HOST),rustc-H-$(host)) - -###################################################################### -# Entrypoint rule -###################################################################### - -.DEFAULT_GOAL := all - -define ALL_TARGET_N -ifneq ($$(findstring $(1),$$(CFG_HOST)),) -# This is a host -all-target-$(1)-host-$(2): $$(CSREQ2_T_$(1)_H_$(2)) -else -# This is a target only -all-target-$(1)-host-$(2): $$(SREQ2_T_$(1)_H_$(2)) -endif -endef - -$(foreach target,$(CFG_TARGET), \ - $(foreach host,$(CFG_HOST), \ - $(eval $(call ALL_TARGET_N,$(target),$(host))))) - -ALL_TARGET_RULES = $(foreach target,$(CFG_TARGET), \ - $(foreach host,$(CFG_HOST), \ - all-target-$(target)-host-$(host))) - -all-no-docs: $(ALL_TARGET_RULES) $(GENERATED) -all: all-no-docs docs - -###################################################################### -# Build system documentation -###################################################################### - -# $(1) is the name of the doc
in Makefile.in -# pick everything between tags | remove first line | remove last line -# | remove extra (?) line | strip leading `#` from lines -SHOW_DOCS = $(Q)awk '/<$(1)>/,/<\/$(1)>/' $(S)/Makefile.in | sed '1d' | sed '$$d' | sed 's/^\# \?//' - -help: - $(call SHOW_DOCS,help) - -tips: - $(call SHOW_DOCS,tips) - -nitty-gritty: - $(call SHOW_DOCS,nitty-gritty) diff --git a/mk/platform.mk b/mk/platform.mk deleted file mode 100644 index 6a7a20cbfdb99..0000000000000 --- a/mk/platform.mk +++ /dev/null @@ -1,250 +0,0 @@ -# Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - - -# Create variables HOST_ containing the host part -# of each target triple. For example, the triple i686-darwin-macos -# would create a variable HOST_i686-darwin-macos with the value -# i386. -define DEF_HOST_VAR - HOST_$(1) = $(patsubst i%86,i386,$(word 1,$(subst -, ,$(1)))) -endef -$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t)))) -$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t)))) - -# Ditto for OSTYPE -define DEF_OSTYPE_VAR - OSTYPE_$(1) = $(subst $(firstword $(subst -, ,$(1)))-,,$(1)) -endef -$(foreach t,$(CFG_TARGET),$(eval $(call DEF_OSTYPE_VAR,$(t)))) -$(foreach t,$(CFG_TARGET),$(info cfg: os for $(t) is $(OSTYPE_$(t)))) - -# On Darwin, we need to run dsymutil so the debugging information ends -# up in the right place. On other platforms, it automatically gets -# embedded into the executable, so use a no-op command. -CFG_DSYMUTIL := true - -# Hack: not sure how to test if a file exists in make other than this -OS_SUPP = $(patsubst %,--suppressions=%, \ - $(wildcard $(CFG_SRC_DIR)src/etc/$(CFG_OSTYPE).supp*)) - -ifdef CFG_DISABLE_OPTIMIZE_CXX - $(info cfg: disabling C++ optimization (CFG_DISABLE_OPTIMIZE_CXX)) - CFG_GCCISH_CFLAGS += -O0 -else - CFG_GCCISH_CFLAGS += -O2 -endif - -# The soname thing is for supporting a statically linked jemalloc. -# see https://blog.mozilla.org/jseward/2012/06/05/valgrind-now-supports-jemalloc-builds-directly/ -ifdef CFG_VALGRIND - CFG_VALGRIND += --error-exitcode=100 \ - --fair-sched=try \ - --quiet \ - --soname-synonyms=somalloc=NONE \ - --suppressions=$(CFG_SRC_DIR)src/etc/x86.supp \ - $(OS_SUPP) - ifdef CFG_ENABLE_HELGRIND - CFG_VALGRIND += --tool=helgrind - else - CFG_VALGRIND += --tool=memcheck \ - --leak-check=full - endif -endif - -# If we actually want to run Valgrind on a given platform, set this variable -define DEF_GOOD_VALGRIND - ifeq ($(OSTYPE_$(1)),unknown-linux-gnu) - GOOD_VALGRIND_$(1) = 1 - endif - ifneq (,$(filter $(OSTYPE_$(1)),apple-darwin freebsd)) - ifeq ($(HOST_$(1)),x86_64) - GOOD_VALGRIND_$(1) = 1 - endif - endif - ifdef GOOD_VALGRIND_$(t) - $$(info cfg: have good valgrind for $(t)) - else - $$(info cfg: no good valgrind for $(t)) - endif -endef -$(foreach t,$(CFG_TARGET),$(eval $(call DEF_GOOD_VALGRIND,$(t)))) - -AR := ar - -define SET_FROM_CFG - ifdef CFG_$(1) - ifeq ($(origin $(1)),undefined) - $$(info cfg: using $(1)=$(CFG_$(1)) (CFG_$(1))) - $(1)=$(CFG_$(1)) - endif - ifeq ($(origin $(1)),default) - $$(info cfg: using $(1)=$(CFG_$(1)) (CFG_$(1))) - $(1)=$(CFG_$(1)) - endif - endif -endef - -$(foreach cvar,CC CXX CPP CFLAGS CXXFLAGS CPPFLAGS, \ - $(eval $(call SET_FROM_CFG,$(cvar)))) - -CFG_RLIB_GLOB=lib$(1)-*.rlib - -include $(wildcard $(CFG_SRC_DIR)mk/cfg/*.mk) - -define ADD_INSTALLED_OBJECTS - INSTALLED_OBJECTS_$(1) += $$(CFG_INSTALLED_OBJECTS_$(1)) - REQUIRED_OBJECTS_$(1) += $$(CFG_THIRD_PARTY_OBJECTS_$(1)) -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call ADD_INSTALLED_OBJECTS,$(target)))) - -define DEFINE_LINKER - ifndef LINK_$(1) - LINK_$(1) := $$(CC_$(1)) - endif -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call DEFINE_LINKER,$(target)))) - -define ADD_JEMALLOC_DEP - ifndef CFG_DISABLE_JEMALLOC_$(1) - ifndef CFG_DISABLE_JEMALLOC - RUST_DEPS_std_T_$(1) += alloc_jemalloc - TARGET_CRATES_$(1) += alloc_jemalloc - endif - endif -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call ADD_JEMALLOC_DEP,$(target)))) - -# The -Qunused-arguments sidesteps spurious warnings from clang -define FILTER_FLAGS - ifeq ($$(CFG_USING_CLANG),1) - ifneq ($(findstring clang,$$(shell $(CC_$(1)) -v)),) - CFG_GCCISH_CFLAGS_$(1) += -Qunused-arguments - CFG_GCCISH_CXXFLAGS_$(1) += -Qunused-arguments - endif - endif -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call FILTER_FLAGS,$(target)))) - -# Configure various macros to pass gcc or cl.exe style arguments -define CC_MACROS - CFG_CC_INCLUDE_$(1)=-I $$(1) - ifeq ($$(findstring msvc,$(1)),msvc) - CFG_CC_OUTPUT_$(1)=-Fo:$$(1) - CFG_CREATE_ARCHIVE_$(1)='$$(AR_$(1))' -OUT:$$(1) - else - CFG_CC_OUTPUT_$(1)=-o $$(1) - CFG_CREATE_ARCHIVE_$(1)=$$(AR_$(1)) crus $$(1) - endif -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call CC_MACROS,$(target)))) - - -ifeq ($(CFG_CCACHE_CPP2),1) - CCACHE_CPP2=1 - export CCACHE_CPP -endif - -ifdef CFG_CCACHE_BASEDIR - CCACHE_BASEDIR=$(CFG_CCACHE_BASEDIR) - export CCACHE_BASEDIR -endif - -FIND_COMPILER = $(strip $(1:ccache=)) - -define CFG_MAKE_TOOLCHAIN - # Prepend the tools with their prefix if cross compiling - ifneq ($(CFG_BUILD),$(1)) - ifneq ($$(findstring msvc,$(1)),msvc) - CC_$(1)=$(CROSS_PREFIX_$(1))$(CC_$(1)) - CXX_$(1)=$(CROSS_PREFIX_$(1))$(CXX_$(1)) - CPP_$(1)=$(CROSS_PREFIX_$(1))$(CPP_$(1)) - AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1)) - LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1)) - RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \ - -C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1)) - - RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1)) - endif - endif - - CFG_COMPILE_C_$(1) = '$$(call FIND_COMPILER,$$(CC_$(1)))' \ - $$(CFLAGS) \ - $$(CFG_GCCISH_CFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$(1)) \ - -c $$(call CFG_CC_OUTPUT_$(1),$$(1)) $$(2) - CFG_LINK_C_$(1) = $$(CC_$(1)) \ - $$(LDFLAGS) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ - $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME_$(1),$$(4)) - CFG_COMPILE_CXX_$(1) = '$$(call FIND_COMPILER,$$(CXX_$(1)))' \ - $$(CXXFLAGS) \ - $$(CFG_GCCISH_CFLAGS) \ - $$(CFG_GCCISH_CXXFLAGS) \ - $$(CFG_GCCISH_CFLAGS_$(1)) \ - $$(CFG_GCCISH_CXXFLAGS_$(1)) \ - -c $$(call CFG_CC_OUTPUT_$(1),$$(1)) $$(2) - CFG_LINK_CXX_$(1) = $$(CXX_$(1)) \ - $$(LDFLAGS) \ - $$(CFG_GCCISH_LINK_FLAGS) -o $$(1) \ - $$(CFG_GCCISH_LINK_FLAGS_$(1)) \ - $$(CFG_GCCISH_DEF_FLAG_$(1))$$(3) $$(2) \ - $$(call CFG_INSTALL_NAME_$(1),$$(4)) - - ifeq ($$(findstring $(HOST_$(1)),arm aarch64 mips mipsel powerpc),) - - # On Bitrig, we need the relocation model to be PIC for everything - ifeq (,$(filter $(OSTYPE_$(1)),bitrig)) - LLVM_MC_RELOCATION_MODEL="pic" - else - LLVM_MC_RELOCATION_MODEL="default" - endif - - # LLVM changed this flag in 3.9 - ifdef CFG_LLVM_MC_HAS_RELOCATION_MODEL - LLVM_MC_RELOC_FLAG := -relocation-model=$$(LLVM_MC_RELOCATION_MODEL) - else - LLVM_MC_RELOC_FLAG := -position-independent - endif - - # We're using llvm-mc as our assembler because it supports - # .cfi pseudo-ops on mac - CFG_ASSEMBLE_$(1)=$$(CPP_$(1)) -E $$(2) | \ - $$(LLVM_MC_$$(CFG_BUILD)) \ - -assemble \ - $$(LLVM_MC_RELOC_FLAG) \ - -filetype=obj \ - -triple=$(1) \ - -o=$$(1) - else - - # For the ARM, AARCH64, MIPS and POWER crosses, use the toolchain assembler - # FIXME: We should be able to use the LLVM assembler - CFG_ASSEMBLE_$(1)=$$(CC_$(1)) $$(CFG_GCCISH_CFLAGS_$(1)) \ - $$(2) -c -o $$(1) - - endif - -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call CFG_MAKE_TOOLCHAIN,$(target)))) diff --git a/mk/prepare.mk b/mk/prepare.mk deleted file mode 100644 index 20e20e9b5df7e..0000000000000 --- a/mk/prepare.mk +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# Basic support for producing installation images. -# -# The 'prepare' build target copies all release artifacts from the build -# directory to some other location, placing all binaries, libraries, and -# docs in their final locations relative to each other. -# -# It requires the following variables to be set: -# -# PREPARE_HOST - the host triple -# PREPARE_TARGETS - the target triples, space separated -# PREPARE_DEST_DIR - the directory to put the image - -PREPARE_STAGE=2 - -DEFAULT_PREPARE_DIR_CMD = umask 022 && mkdir -p -DEFAULT_PREPARE_BIN_CMD = install -m755 -DEFAULT_PREPARE_LIB_CMD = install -m644 -DEFAULT_PREPARE_MAN_CMD = install -m644 - -# Create a directory -# $(1) is the directory -# -# XXX: These defines are called to generate make steps. -# Adding blank lines means two steps from different defines will not end up on -# the same line. -define PREPARE_DIR - - @$(call E, prepare: $(1)) - $(Q)$(PREPARE_DIR_CMD) $(1) - -endef - -# Copy an executable -# $(1) is the filename/libname-glob -# -# See above for an explanation on the surrounding blank lines -define PREPARE_BIN - - @$(call E, prepare: $(PREPARE_DEST_BIN_DIR)/$(1)) - $(Q)$(PREPARE_BIN_CMD) $(PREPARE_SOURCE_BIN_DIR)/$(1) $(PREPARE_DEST_BIN_DIR)/$(1) - -endef - -# Copy a dylib or rlib -# $(1) is the filename/libname-glob -# -# See above for an explanation on the surrounding blank lines -define PREPARE_LIB - - @$(call E, prepare: $(PREPARE_WORKING_DEST_LIB_DIR)/$(1)) - $(Q)LIB_NAME="$(notdir $(lastword $(wildcard $(PREPARE_WORKING_SOURCE_LIB_DIR)/$(1))))"; \ - MATCHES="$(filter-out %$(notdir $(lastword $(wildcard $(PREPARE_WORKING_SOURCE_LIB_DIR)/$(1)))), \ - $(wildcard $(PREPARE_WORKING_DEST_LIB_DIR)/$(1)))"; \ - if [ -n "$$MATCHES" ]; then \ - echo "warning: one or libraries matching Rust library '$(1)'" && \ - echo " (other than '$$LIB_NAME' itself) already present" && \ - echo " at destination $(PREPARE_WORKING_DEST_LIB_DIR):" && \ - echo $$MATCHES ; \ - fi - $(Q)$(PREPARE_LIB_CMD) `ls -drt1 $(PREPARE_WORKING_SOURCE_LIB_DIR)/$(1)` $(PREPARE_WORKING_DEST_LIB_DIR)/ - -endef - -# Copy a man page -# $(1) - source dir -# -# See above for an explanation on the surrounding blank lines -define PREPARE_MAN - - @$(call E, prepare: $(PREPARE_DEST_MAN_DIR)/$(1)) - $(Q)$(PREPARE_MAN_CMD) $(PREPARE_SOURCE_MAN_DIR)/$(1) $(PREPARE_DEST_MAN_DIR)/$(1) - -endef - -PREPARE_TOOLS = $(filter-out compiletest rustbook error_index_generator, $(TOOLS)) - - -# $(1) is tool -# $(2) is stage -# $(3) is host -# $(4) tag -define DEF_PREPARE_HOST_TOOL -prepare-host-tool-$(1)-$(2)-$(3)-$(4): \ - PREPARE_SOURCE_BIN_DIR=$$(HBIN$(2)_H_$(3)) -prepare-host-tool-$(1)-$(2)-$(3)-$(4): prepare-maybe-clean-$(4) \ - $$(foreach dep,$$(TOOL_DEPS_$(1)),prepare-host-lib-$$(dep)-$(2)-$(3)-$(4)) \ - $$(HBIN$(2)_H_$(3))/$(1)$$(X_$(3)) \ - prepare-host-dirs-$(4) - $$(if $$(findstring $(2), $$(PREPARE_STAGE)), \ - $$(if $$(findstring $(3), $$(PREPARE_HOST)), \ - $$(call PREPARE_BIN,$(1)$$(X_$$(PREPARE_HOST))),),) - $$(if $$(findstring $(2), $$(PREPARE_STAGE)), \ - $$(if $$(findstring $(3), $$(PREPARE_HOST)), \ - $$(call PREPARE_MAN,$(1).1),),) -endef - -# Libraries are compiled using the --libdir provided to configure, but -# we store them in the tarball using just "lib" so that the install -# script can then rewrite them back to the correct path. -PREPARE_TAR_LIB_DIR = $(patsubst $(CFG_LIBDIR_RELATIVE)%,lib%,$(1)) - -# For host libraries only install dylibs, not rlibs since the host libs are only -# used to support rustc and rustc uses dynamic linking -# -# $(1) is tool -# $(2) is stage -# $(3) is host -# $(4) tag -define DEF_PREPARE_HOST_LIB -prepare-host-lib-$(1)-$(2)-$(3)-$(4): \ - PREPARE_WORKING_SOURCE_LIB_DIR=$$(HLIB$(2)_H_$(3)) -prepare-host-lib-$(1)-$(2)-$(3)-$(4): \ - PREPARE_WORKING_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(call PREPARE_TAR_LIB_DIR,$$(HLIB_RELATIVE$(2)_H_$(3))) -prepare-host-lib-$(1)-$(2)-$(3)-$(4): prepare-maybe-clean-$(4) \ - $$(foreach dep,$$(RUST_DEPS_$(1)_T_$(3)),prepare-host-lib-$$(dep)-$(2)-$(3)-$(4)) \ - $$(HLIB$(2)_H_$(3))/stamp.$(1) \ - prepare-host-dirs-$(4) - $$(if $$(findstring $(2), $$(PREPARE_STAGE)), \ - $$(if $$(findstring $(3), $$(PREPARE_HOST)), \ - $$(if $$(findstring 1,$$(ONLY_RLIB_$(1))),, \ - $$(call PREPARE_LIB,$$(call CFG_LIB_GLOB_$$(PREPARE_HOST),$(1)))),),) -endef - - -# $(1) is stage -# $(2) is target -# $(3) is host -# $(4) tag -define DEF_PREPARE_TARGET_N -# Rebind PREPARE_*_LIB_DIR to point to rustlib, then install the libs for the targets -prepare-target-$(2)-host-$(3)-$(1)-$(4): \ - PREPARE_WORKING_SOURCE_LIB_DIR=$$(TLIB$(1)_T_$(2)_H_$(3)) -prepare-target-$(2)-host-$(3)-$(1)-$(4): \ - PREPARE_WORKING_DEST_LIB_DIR=$$(PREPARE_DEST_LIB_DIR)/rustlib/$(2)/lib -prepare-target-$(2)-host-$(3)-$(1)-$(4): \ - PREPARE_SOURCE_BIN_DIR=$$(TBIN$(1)_T_$(2)_H_$(3)) -prepare-target-$(2)-host-$(3)-$(1)-$(4): \ - PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_LIB_DIR)/rustlib/$(3)/bin -prepare-target-$(2)-host-$(3)-$(1)-$(4): prepare-maybe-clean-$(4) \ - $$(foreach crate,$$(TARGET_CRATES_$(2)), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(crate)) \ - $$(if $$(findstring $(2),$$(CFG_HOST)), \ - $$(foreach crate,$$(HOST_CRATES), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(crate)),) -# Only install if this host and target combo is being prepared. Also be sure to -# *not* install the rlibs for host crates because there's no need to statically -# link against most of them. They just produce a large amount of extra size -# bloat. - $$(if $$(findstring $(1), $$(PREPARE_STAGE)), \ - $$(if $$(findstring $(2), $$(PREPARE_TARGETS)), \ - $$(if $$(findstring $(3), $$(PREPARE_HOST)), \ - $$(call PREPARE_DIR,$$(PREPARE_WORKING_DEST_LIB_DIR)) \ - $$(call PREPARE_DIR,$$(PREPARE_DEST_BIN_DIR)) \ - $$(foreach crate,$$(TARGET_CRATES_$(2)), \ - $$(if $$(or $$(findstring 1, $$(ONLY_RLIB_$$(crate))),$$(findstring 1,$$(CFG_INSTALL_ONLY_RLIB_$(2)))),, \ - $$(call PREPARE_LIB,$$(call CFG_LIB_GLOB_$(2),$$(crate)))) \ - $$(call PREPARE_LIB,$$(call CFG_RLIB_GLOB,$$(crate)))) \ - $$(if $$(findstring $(2),$$(CFG_HOST)), \ - $$(foreach crate,$$(HOST_CRATES), \ - $$(call PREPARE_LIB,$$(call CFG_LIB_GLOB_$(2),$$(crate)))),) \ - $$(foreach object,$$(INSTALLED_OBJECTS_$(2)),\ - $$(call PREPARE_LIB,$$(object))) \ - $$(foreach bin,$$(INSTALLED_BINS_$(3)),\ - $$(call PREPARE_BIN,$$(bin))) \ - ,),),) -endef - -define INSTALL_GDB_DEBUGGER_SCRIPTS_COMMANDS - $(Q)$(PREPARE_BIN_CMD) $(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $(PREPARE_DEST_BIN_DIR) - $(Q)$(PREPARE_LIB_CMD) $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) $(PREPARE_DEST_LIB_DIR)/rustlib/etc -endef - -define INSTALL_LLDB_DEBUGGER_SCRIPTS_COMMANDS - $(Q)$(PREPARE_BIN_CMD) $(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) $(PREPARE_DEST_BIN_DIR) - $(Q)$(PREPARE_LIB_CMD) $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) $(PREPARE_DEST_LIB_DIR)/rustlib/etc -endef - -define INSTALL_NO_DEBUGGER_SCRIPTS_COMMANDS - $(Q)echo "No debugger scripts will be installed for host $(PREPARE_HOST)" -endef - -# $(1) is PREPARE_HOST -INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\ - $(INSTALL_NO_DEBUGGER_SCRIPTS_COMMANDS),\ - $(if $(findstring darwin,$(1)),\ - $(INSTALL_LLDB_DEBUGGER_SCRIPTS_COMMANDS),\ - $(INSTALL_GDB_DEBUGGER_SCRIPTS_COMMANDS))) - -define DEF_PREPARE - -prepare-base-$(1)-%: PREPARE_SOURCE_MAN_DIR=$$(S)/man -prepare-base-$(1)-%: PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/bin -prepare-base-$(1)-%: PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(call PREPARE_TAR_LIB_DIR,$$(CFG_LIBDIR_RELATIVE)) -prepare-base-$(1)-%: PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1 - -prepare-base-$(1)-target: prepare-target-$(1) -prepare-base-$(1)-host: prepare-host-$(1) prepare-debugger-scripts-$(1) - -prepare-host-$(1): prepare-host-tools-$(1) - -prepare-host-tools-$(1): \ - $$(foreach tool, $$(PREPARE_TOOLS), \ - $$(foreach host,$$(CFG_HOST), \ - prepare-host-tool-$$(tool)-$$(PREPARE_STAGE)-$$(host)-$(1))) - -prepare-host-dirs-$(1): prepare-maybe-clean-$(1) - $$(call PREPARE_DIR,$$(PREPARE_DEST_BIN_DIR)) - $$(call PREPARE_DIR,$$(PREPARE_DEST_LIB_DIR)) - $$(call PREPARE_DIR,$$(PREPARE_DEST_LIB_DIR)/rustlib/etc) - $$(call PREPARE_DIR,$$(PREPARE_DEST_MAN_DIR)) - -prepare-debugger-scripts-$(1): prepare-host-dirs-$(1) \ - $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) \ - $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) - $$(call INSTALL_DEBUGGER_SCRIPT_COMMANDS,$$(PREPARE_HOST)) - -$$(foreach tool,$$(PREPARE_TOOLS), \ - $$(foreach host,$$(CFG_HOST), \ - $$(eval $$(call DEF_PREPARE_HOST_TOOL,$$(tool),$$(PREPARE_STAGE),$$(host),$(1))))) - -$$(foreach lib,$$(CRATES), \ - $$(foreach host,$$(CFG_HOST), \ - $$(eval $$(call DEF_PREPARE_HOST_LIB,$$(lib),$$(PREPARE_STAGE),$$(host),$(1))))) - -prepare-target-$(1): \ - $$(foreach host,$$(CFG_HOST), \ - $$(foreach target,$$(CFG_TARGET), \ - prepare-target-$$(target)-host-$$(host)-$$(PREPARE_STAGE)-$(1))) - -$$(foreach host,$$(CFG_HOST), \ - $$(foreach target,$$(CFG_TARGET), \ - $$(eval $$(call DEF_PREPARE_TARGET_N,$$(PREPARE_STAGE),$$(target),$$(host),$(1))))) - -prepare-maybe-clean-$(1): - $$(if $$(findstring true,$$(PREPARE_CLEAN)), \ - @$$(call E, cleaning destination $$(PREPARE_DEST_DIR)),) - $$(if $$(findstring true,$$(PREPARE_CLEAN)), \ - $$(Q)rm -rf $$(PREPARE_DEST_DIR),) - - -endef diff --git a/mk/reconfig.mk b/mk/reconfig.mk deleted file mode 100644 index b8f51097868d4..0000000000000 --- a/mk/reconfig.mk +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# Recursive wildcard function -# http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html -rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) \ - $(filter $(subst *,%,$2),$d)) - -ifndef CFG_DISABLE_MANAGE_SUBMODULES -# This is a pretty expensive operation but I don't see any way to avoid it -# NB: This only looks for '+' status (wrong commit checked out), not '-' status -# (nothing checked out at all). `./configure --{llvm,jemalloc}-root` -# will explicitly deinitialize the corresponding submodules, and we don't -# want to force constant rebuilds in that case. -NEED_GIT_RECONFIG=$(shell cd "$(CFG_SRC_DIR)" && $(CFG_GIT) submodule status | grep -c '^+') -else -NEED_GIT_RECONFIG=0 -endif - -ifeq ($(NEED_GIT_RECONFIG),0) -else -# If the submodules have changed then always execute config.mk -.PHONY: config.stamp -endif - -Makefile config.mk: config.stamp - -ifeq ($(SREL),) -SREL_ROOT := ./ -else -SREL_ROOT := $(SREL) -endif - -config.stamp: $(S)configure $(S)Makefile.in $(S)src/stage0.txt - @$(call E, cfg: reconfiguring) - $(SREL_ROOT)configure $(CFG_CONFIGURE_ARGS) diff --git a/mk/rt.mk b/mk/rt.mk deleted file mode 100644 index f5149281d5071..0000000000000 --- a/mk/rt.mk +++ /dev/null @@ -1,721 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -################################################################################ -# Native libraries built as part of the rust build process -# -# This portion of the rust build system is meant to keep track of native -# dependencies and how to build them. It is currently required that all native -# dependencies are built as static libraries, as slinging around dynamic -# libraries isn't exactly the most fun thing to do. -# -# This section should need minimal modification to add new libraries. The -# relevant variables are: -# -# NATIVE_LIBS -# This is a list of all native libraries which are built as part of the -# build process. It will build all libraries into RT_OUTPUT_DIR with the -# appropriate name of static library as dictated by the target platform -# -# NATIVE_DEPS_ -# This is a list of files relative to the src/rt directory which are -# needed to build the native library. Each file will be compiled to an -# object file, and then all the object files will be assembled into an -# archive (static library). The list contains files of any extension -# -# If adding a new library, you should update the NATIVE_LIBS list, and then list -# the required files below it. The list of required files is a list of files -# that's per-target so you're allowed to conditionally add files based on the -# target. -################################################################################ -NATIVE_LIBS := hoedown miniz rust_test_helpers - -# A macro to add a generic implementation of intrinsics iff a arch optimized implementation is not -# already in the list. -# $(1) is the target -# $(2) is the intrinsic -define ADD_INTRINSIC - ifeq ($$(findstring X,$$(foreach intrinsic,$$(COMPRT_OBJS_$(1)),$$(if $$(findstring $(2),$$(intrinsic)),X,))),) - COMPRT_OBJS_$(1) += $(2) - endif -endef - -# $(1) is the target triple -define NATIVE_LIBRARIES - -NATIVE_DEPS_hoedown_$(1) := hoedown/src/autolink.c \ - hoedown/src/buffer.c \ - hoedown/src/document.c \ - hoedown/src/escape.c \ - hoedown/src/html.c \ - hoedown/src/html_blocks.c \ - hoedown/src/html_smartypants.c \ - hoedown/src/stack.c \ - hoedown/src/version.c -NATIVE_DEPS_miniz_$(1) = miniz.c -NATIVE_DEPS_rust_test_helpers_$(1) := rust_test_helpers.c - -################################################################################ -# You shouldn't find it that necessary to edit anything below this line. -################################################################################ - -# While we're defining the native libraries for each target, we define some -# common rules used to build files for various targets. - -RT_OUTPUT_DIR_$(1) := $(1)/rt - -$$(RT_OUTPUT_DIR_$(1))/%.o: $(S)src/rt/%.c $$(MKFILE_DEPS) - @mkdir -p $$(@D) - @$$(call E, compile: $$@) - $$(Q)$$(call CFG_COMPILE_C_$(1), $$@, \ - $$(call CFG_CC_INCLUDE_$(1),$$(S)src/rt/hoedown/src) \ - $$(call CFG_CC_INCLUDE_$(1),$$(S)src/rt) \ - $$(RUNTIME_CFLAGS_$(1))) $$< - -$$(RT_OUTPUT_DIR_$(1))/%.o: $(S)src/rt/%.S $$(MKFILE_DEPS) \ - $$(LLVM_CONFIG_$$(CFG_BUILD)) - @mkdir -p $$(@D) - @$$(call E, compile: $$@) - $$(Q)$$(call CFG_ASSEMBLE_$(1),$$@,$$<) - -# On MSVC targets the compiler's default include path (e.g. where to find system -# headers) is specified by the INCLUDE environment variable. This may not be set -# so the ./configure script scraped the relevant values and this is the location -# that we put them into cl.exe's environment. -ifeq ($$(findstring msvc,$(1)),msvc) -$$(RT_OUTPUT_DIR_$(1))/%.o: \ - export INCLUDE := $$(CFG_MSVC_INCLUDE_PATH_$$(HOST_$(1))) -$(1)/rustllvm/%.o: \ - export INCLUDE := $$(CFG_MSVC_INCLUDE_PATH_$$(HOST_$(1))) -endif -endef - -$(foreach target,$(CFG_TARGET),$(eval $(call NATIVE_LIBRARIES,$(target)))) - -# A macro for devining how to build third party libraries listed above (based -# on their dependencies). -# -# $(1) is the target -# $(2) is the lib name -define THIRD_PARTY_LIB - -OBJS_$(2)_$(1) := $$(NATIVE_DEPS_$(2)_$(1):%=$$(RT_OUTPUT_DIR_$(1))/%) -OBJS_$(2)_$(1) := $$(OBJS_$(2)_$(1):.c=.o) -OBJS_$(2)_$(1) := $$(OBJS_$(2)_$(1):.cpp=.o) -OBJS_$(2)_$(1) := $$(OBJS_$(2)_$(1):.S=.o) -NATIVE_$(2)_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),$(2)) -$$(RT_OUTPUT_DIR_$(1))/$$(NATIVE_$(2)_$(1)): $$(OBJS_$(2)_$(1)) - @$$(call E, link: $$@) - $$(Q)$$(call CFG_CREATE_ARCHIVE_$(1),$$@) $$^ - -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call RUNTIME_RULES,$(target)))) -$(foreach lib,$(NATIVE_LIBS), \ - $(foreach target,$(CFG_TARGET), \ - $(eval $(call THIRD_PARTY_LIB,$(target),$(lib))))) - - -################################################################################ -# Building third-party targets with external build systems -# -# This location is meant for dependencies which have external build systems. It -# is still assumed that the output of each of these steps is a static library -# in the correct location. -################################################################################ - -define DEF_THIRD_PARTY_TARGETS - -# $(1) is the target triple - -ifeq ($$(CFG_WINDOWSY_$(1)),1) - # A bit of history here, this used to be --enable-lazy-lock added in #14006 - # which was filed with jemalloc in jemalloc/jemalloc#83 which was also - # reported to MinGW: http://sourceforge.net/p/mingw-w64/bugs/395/ - # - # When updating jemalloc to 4.0, however, it was found that binaries would - # exit with the status code STATUS_RESOURCE_NOT_OWNED indicating that a thread - # was unlocking a mutex it never locked. Disabling this "lazy lock" option - # seems to fix the issue, but it was enabled by default for MinGW targets in - # 13473c7 for jemalloc. - # - # As a result of all that, force disabling lazy lock on Windows, and after - # reading some code it at least *appears* that the initialization of mutexes - # is otherwise ok in jemalloc, so shouldn't cause problems hopefully... - # - # tl;dr: make windows behave like other platforms by disabling lazy locking, - # but requires passing an option due to a historical default with - # jemalloc. - JEMALLOC_ARGS_$(1) := --disable-lazy-lock -else ifeq ($(OSTYPE_$(1)), apple-ios) - JEMALLOC_ARGS_$(1) := --disable-tls -else ifeq ($(findstring android, $(OSTYPE_$(1))), android) - # We force android to have prefixed symbols because apparently replacement of - # the libc allocator doesn't quite work. When this was tested (unprefixed - # symbols), it was found that the `realpath` function in libc would allocate - # with libc malloc (not jemalloc malloc), and then the standard library would - # free with jemalloc free, causing a segfault. - # - # If the test suite passes, however, without symbol prefixes then we should be - # good to go! - JEMALLOC_ARGS_$(1) := --disable-tls --with-jemalloc-prefix=je_ -else ifeq ($(findstring dragonfly, $(OSTYPE_$(1))), dragonfly) - JEMALLOC_ARGS_$(1) := --with-jemalloc-prefix=je_ -endif - -ifdef CFG_ENABLE_DEBUG_JEMALLOC - JEMALLOC_ARGS_$(1) += --enable-debug --enable-fill -endif - -################################################################################ -# jemalloc -################################################################################ - -ifdef CFG_ENABLE_FAST_MAKE -JEMALLOC_DEPS := $(S)/.gitmodules -else -JEMALLOC_DEPS := $(wildcard \ - $(S)src/jemalloc/* \ - $(S)src/jemalloc/*/* \ - $(S)src/jemalloc/*/*/* \ - $(S)src/jemalloc/*/*/*/*) -endif - -# See #17183 for details, this file is touched during the build process so we -# don't want to consider it as a dependency. -JEMALLOC_DEPS := $(filter-out $(S)src/jemalloc/VERSION,$(JEMALLOC_DEPS)) - -JEMALLOC_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),jemalloc) -ifeq ($$(CFG_WINDOWSY_$(1)),1) - JEMALLOC_REAL_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),jemalloc_s) -else - JEMALLOC_REAL_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),jemalloc_pic) -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_LOCAL_$(1)): $$(JEMALLOC_DEPS) $$(MKFILE_DEPS) - @$$(call E, make: jemalloc) - cd "$$(JEMALLOC_BUILD_DIR_$(1))"; "$(S)src/jemalloc/configure" \ - $$(JEMALLOC_ARGS_$(1)) $(CFG_JEMALLOC_FLAGS) \ - --build=$$(CFG_GNU_TRIPLE_$(CFG_BUILD)) --host=$$(CFG_GNU_TRIPLE_$(1)) \ - CC="$$(CC_$(1)) $$(CFG_JEMALLOC_CFLAGS_$(1))" \ - AR="$$(AR_$(1))" \ - RANLIB="$$(AR_$(1)) s" \ - CPPFLAGS="-I $(S)src/rt/" \ - EXTRA_CFLAGS="-g1 -ffunction-sections -fdata-sections" - $$(Q)$$(MAKE) -C "$$(JEMALLOC_BUILD_DIR_$(1))" build_lib_static - -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)): $$(JEMALLOC_LOCAL_$(1)) - $$(Q)cp $$< $$@ -endif -else -$$(JEMALLOC_LIB_$(1)): $$(JEMALLOC_LOCAL_$(1)) - $$(Q)cp $$< $$@ -endif - -################################################################################ -# compiler-rt -################################################################################ - -# Everything below is a manual compilation of compiler-rt, disregarding its -# build system. See comments in `src/bootstrap/native.rs` for more information. - -COMPRT_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),compiler-rt) -COMPRT_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/$$(COMPRT_NAME_$(1)) -COMPRT_BUILD_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/compiler-rt - -# We must avoid compiling both a generic implementation (e.g. `floatdidf.c) and an arch optimized -# implementation (e.g. `x86_64/floatdidf.S) of the same symbol (e.g. `floatdidf) because that causes -# linker errors. To avoid that, we first add all the arch optimized implementations and then add the -# generic implementations if and only if its arch optimized version is not already in the list. This -# last part is handled by the ADD_INTRINSIC macro. - -COMPRT_OBJS_$(1) := - -ifeq ($$(findstring msvc,$(1)),) -ifeq ($$(findstring x86_64,$(1)),x86_64) -COMPRT_OBJS_$(1) += \ - x86_64/chkstk.o \ - x86_64/chkstk2.o \ - x86_64/floatdidf.o \ - x86_64/floatdisf.o \ - x86_64/floatdixf.o \ - x86_64/floatundidf.o \ - x86_64/floatundisf.o \ - x86_64/floatundixf.o -endif - -ifeq ($$(findstring i686,$$(patsubts i%86,i686,$(1))),i686) -COMPRT_OBJS_$(1) += \ - i386/ashldi3.o \ - i386/ashrdi3.o \ - i386/chkstk.o \ - i386/chkstk2.o \ - i386/divdi3.o \ - i386/floatdidf.o \ - i386/floatdisf.o \ - i386/floatdixf.o \ - i386/floatundidf.o \ - i386/floatundisf.o \ - i386/floatundixf.o \ - i386/lshrdi3.o \ - i386/moddi3.o \ - i386/muldi3.o \ - i386/udivdi3.o \ - i386/umoddi3.o -endif - -else - -ifeq ($$(findstring x86_64,$(1)),x86_64) -COMPRT_OBJS_$(1) += \ - x86_64/floatdidf.o \ - x86_64/floatdisf.o \ - x86_64/floatdixf.o -endif - -endif - -# Generic ARM sources, nothing compiles on iOS though -ifeq ($$(findstring arm,$(1)),arm) -ifeq ($$(findstring ios,$(1)),) -COMPRT_OBJS_$(1) += \ - arm/aeabi_cdcmp.o \ - arm/aeabi_cdcmpeq_check_nan.o \ - arm/aeabi_cfcmp.o \ - arm/aeabi_cfcmpeq_check_nan.o \ - arm/aeabi_dcmp.o \ - arm/aeabi_div0.o \ - arm/aeabi_drsub.o \ - arm/aeabi_fcmp.o \ - arm/aeabi_frsub.o \ - arm/aeabi_idivmod.o \ - arm/aeabi_ldivmod.o \ - arm/aeabi_memcmp.o \ - arm/aeabi_memcpy.o \ - arm/aeabi_memmove.o \ - arm/aeabi_memset.o \ - arm/aeabi_uidivmod.o \ - arm/aeabi_uldivmod.o \ - arm/bswapdi2.o \ - arm/bswapsi2.o \ - arm/clzdi2.o \ - arm/clzsi2.o \ - arm/comparesf2.o \ - arm/divmodsi4.o \ - arm/divsi3.o \ - arm/modsi3.o \ - arm/switch16.o \ - arm/switch32.o \ - arm/switch8.o \ - arm/switchu8.o \ - arm/sync_synchronize.o \ - arm/udivmodsi4.o \ - arm/udivsi3.o \ - arm/umodsi3.o -endif -endif - -# Thumb sources -ifeq ($$(findstring armv7,$(1)),armv7) -COMPRT_OBJS_$(1) += \ - arm/sync_fetch_and_add_4.o \ - arm/sync_fetch_and_add_8.o \ - arm/sync_fetch_and_and_4.o \ - arm/sync_fetch_and_and_8.o \ - arm/sync_fetch_and_max_4.o \ - arm/sync_fetch_and_max_8.o \ - arm/sync_fetch_and_min_4.o \ - arm/sync_fetch_and_min_8.o \ - arm/sync_fetch_and_nand_4.o \ - arm/sync_fetch_and_nand_8.o \ - arm/sync_fetch_and_or_4.o \ - arm/sync_fetch_and_or_8.o \ - arm/sync_fetch_and_sub_4.o \ - arm/sync_fetch_and_sub_8.o \ - arm/sync_fetch_and_umax_4.o \ - arm/sync_fetch_and_umax_8.o \ - arm/sync_fetch_and_umin_4.o \ - arm/sync_fetch_and_umin_8.o \ - arm/sync_fetch_and_xor_4.o \ - arm/sync_fetch_and_xor_8.o -endif - -# VFP sources -ifeq ($$(findstring eabihf,$(1)),eabihf) -COMPRT_OBJS_$(1) += \ - arm/adddf3vfp.o \ - arm/addsf3vfp.o \ - arm/divdf3vfp.o \ - arm/divsf3vfp.o \ - arm/eqdf2vfp.o \ - arm/eqsf2vfp.o \ - arm/extendsfdf2vfp.o \ - arm/fixdfsivfp.o \ - arm/fixsfsivfp.o \ - arm/fixunsdfsivfp.o \ - arm/fixunssfsivfp.o \ - arm/floatsidfvfp.o \ - arm/floatsisfvfp.o \ - arm/floatunssidfvfp.o \ - arm/floatunssisfvfp.o \ - arm/gedf2vfp.o \ - arm/gesf2vfp.o \ - arm/gtdf2vfp.o \ - arm/gtsf2vfp.o \ - arm/ledf2vfp.o \ - arm/lesf2vfp.o \ - arm/ltdf2vfp.o \ - arm/ltsf2vfp.o \ - arm/muldf3vfp.o \ - arm/mulsf3vfp.o \ - arm/negdf2vfp.o \ - arm/negsf2vfp.o \ - arm/nedf2vfp.o \ - arm/nesf2vfp.o \ - arm/restore_vfp_d8_d15_regs.o \ - arm/save_vfp_d8_d15_regs.o \ - arm/subdf3vfp.o \ - arm/subsf3vfp.o \ - arm/truncdfsf2vfp.o \ - arm/unorddf2vfp.o \ - arm/unordsf2vfp.o -endif - -$(foreach intrinsic,absvdi2.o \ - absvsi2.o \ - adddf3.o \ - addsf3.o \ - addvdi3.o \ - addvsi3.o \ - apple_versioning.o \ - ashldi3.o \ - ashrdi3.o \ - clear_cache.o \ - clzdi2.o \ - clzsi2.o \ - cmpdi2.o \ - comparedf2.o \ - comparesf2.o \ - ctzdi2.o \ - ctzsi2.o \ - divdc3.o \ - divdf3.o \ - divdi3.o \ - divmoddi4.o \ - divmodsi4.o \ - divsc3.o \ - divsf3.o \ - divsi3.o \ - divxc3.o \ - extendsfdf2.o \ - extendhfsf2.o \ - ffsdi2.o \ - fixdfdi.o \ - fixdfsi.o \ - fixsfdi.o \ - fixsfsi.o \ - fixunsdfdi.o \ - fixunsdfsi.o \ - fixunssfdi.o \ - fixunssfsi.o \ - fixunsxfdi.o \ - fixunsxfsi.o \ - fixxfdi.o \ - floatdidf.o \ - floatdisf.o \ - floatdixf.o \ - floatsidf.o \ - floatsisf.o \ - floatundidf.o \ - floatundisf.o \ - floatundixf.o \ - floatunsidf.o \ - floatunsisf.o \ - int_util.o \ - lshrdi3.o \ - moddi3.o \ - modsi3.o \ - muldc3.o \ - muldf3.o \ - muldi3.o \ - mulodi4.o \ - mulosi4.o \ - muloti4.o \ - mulsc3.o \ - mulsf3.o \ - mulvdi3.o \ - mulvsi3.o \ - mulxc3.o \ - negdf2.o \ - negdi2.o \ - negsf2.o \ - negvdi2.o \ - negvsi2.o \ - paritydi2.o \ - paritysi2.o \ - popcountdi2.o \ - popcountsi2.o \ - powidf2.o \ - powisf2.o \ - powixf2.o \ - subdf3.o \ - subsf3.o \ - subvdi3.o \ - subvsi3.o \ - truncdfhf2.o \ - truncdfsf2.o \ - truncsfhf2.o \ - ucmpdi2.o \ - udivdi3.o \ - udivmoddi4.o \ - udivmodsi4.o \ - udivsi3.o \ - umoddi3.o \ - umodsi3.o, - $(call ADD_INTRINSIC,$(1),$(intrinsic))) - -ifeq ($$(findstring ios,$(1)),) -$(foreach intrinsic,absvti2.o \ - addtf3.o \ - addvti3.o \ - ashlti3.o \ - ashrti3.o \ - clzti2.o \ - cmpti2.o \ - ctzti2.o \ - divtf3.o \ - divti3.o \ - ffsti2.o \ - fixdfti.o \ - fixsfti.o \ - fixunsdfti.o \ - fixunssfti.o \ - fixunsxfti.o \ - fixxfti.o \ - floattidf.o \ - floattisf.o \ - floattixf.o \ - floatuntidf.o \ - floatuntisf.o \ - floatuntixf.o \ - lshrti3.o \ - modti3.o \ - multf3.o \ - multi3.o \ - mulvti3.o \ - negti2.o \ - negvti2.o \ - parityti2.o \ - popcountti2.o \ - powitf2.o \ - subtf3.o \ - subvti3.o \ - trampoline_setup.o \ - ucmpti2.o \ - udivmodti4.o \ - udivti3.o \ - umodti3.o, - $(call ADD_INTRINSIC,$(1),$(intrinsic))) -endif - -ifeq ($$(findstring apple,$(1)),apple) -$(foreach intrinsic,atomic_flag_clear.o \ - atomic_flag_clear_explicit.o \ - atomic_flag_test_and_set.o \ - atomic_flag_test_and_set_explicit.o \ - atomic_signal_fence.o \ - atomic_thread_fence.o, - $(call ADD_INTRINSIC,$(1),$(intrinsic))) -endif - -ifeq ($$(findstring windows,$(1)),) -$(call ADD_INTRINSIC,$(1),emutls.o) -endif - -ifeq ($$(findstring msvc,$(1)),) - -ifeq ($$(findstring freebsd,$(1)),) -ifeq ($$(findstring netbsd,$(1)),) -$(call ADD_INTRINSIC,$(1),gcc_personality_v0.o) -endif -endif -endif - -ifeq ($$(findstring aarch64,$(1)),aarch64) -$(foreach intrinsic,comparetf2.o \ - extenddftf2.o \ - extendsftf2.o \ - fixtfdi.o \ - fixtfsi.o \ - fixtfti.o \ - fixunstfdi.o \ - fixunstfsi.o \ - fixunstfti.o \ - floatditf.o \ - floatsitf.o \ - floatunditf.o \ - floatunsitf.o \ - multc3.o \ - trunctfdf2.o \ - trunctfsf2.o, - $(call ADD_INTRINSIC,$(1),$(intrinsic))) -endif - -ifeq ($$(findstring msvc,$(1)),msvc) -$$(COMPRT_BUILD_DIR_$(1))/%.o: CFLAGS += -Zl -D__func__=__FUNCTION__ -else -$$(COMPRT_BUILD_DIR_$(1))/%.o: CFLAGS += -fno-builtin -fvisibility=hidden \ - -fomit-frame-pointer -ffreestanding -endif - -COMPRT_OBJS_$(1) := $$(COMPRT_OBJS_$(1):%=$$(COMPRT_BUILD_DIR_$(1))/%) - -$$(COMPRT_BUILD_DIR_$(1))/%.o: $(S)src/compiler-rt/lib/builtins/%.c - @mkdir -p $$(@D) - @$$(call E, compile: $$@) - $$(Q)$$(call CFG_COMPILE_C_$(1),$$@,$$<) - -$$(COMPRT_BUILD_DIR_$(1))/%.o: $(S)src/compiler-rt/lib/builtins/%.S \ - $$(LLVM_CONFIG_$$(CFG_BUILD)) - @mkdir -p $$(@D) - @$$(call E, compile: $$@) - $$(Q)$$(call CFG_ASSEMBLE_$(1),$$@,$$<) - -ifeq ($$(findstring msvc,$(1)),msvc) -$$(COMPRT_BUILD_DIR_$(1))/%.o: \ - export INCLUDE := $$(CFG_MSVC_INCLUDE_PATH_$$(HOST_$(1))) -endif - -ifeq ($$(findstring emscripten,$(1)),emscripten) -# FIXME: emscripten doesn't use compiler-rt and can't build it without -# further hacks -COMPRT_OBJS_$(1) := -endif - -$$(COMPRT_LIB_$(1)): $$(COMPRT_OBJS_$(1)) - @$$(call E, link: $$@) - $$(Q)$$(call CFG_CREATE_ARCHIVE_$(1),$$@) $$^ - -################################################################################ -# libbacktrace -# -# We use libbacktrace on linux to get symbols in backtraces, but only on linux. -# Elsewhere we use other system utilities, so this library is only built on -# linux. -################################################################################ - -BACKTRACE_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),backtrace) -BACKTRACE_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/$$(BACKTRACE_NAME_$(1)) -BACKTRACE_BUILD_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/libbacktrace - -# We don't use this on platforms that aren't linux-based (with the exception of -# msys2/mingw builds on windows, which use it to read the dwarf debug -# information) so just make the file available, the compilation of libstd won't -# actually build it. -ifeq ($$(findstring darwin,$$(OSTYPE_$(1))),darwin) -# See comment above -$$(BACKTRACE_LIB_$(1)): - touch $$@ - -else ifeq ($$(findstring ios,$$(OSTYPE_$(1))),ios) -# See comment above -$$(BACKTRACE_LIB_$(1)): - touch $$@ -else ifeq ($$(findstring msvc,$(1)),msvc) -# See comment above -$$(BACKTRACE_LIB_$(1)): - touch $$@ -else ifeq ($$(findstring emscripten,$(1)),emscripten) -# FIXME: libbacktrace doesn't understand the emscripten triple -$$(BACKTRACE_LIB_$(1)): - touch $$@ -else - -ifdef CFG_ENABLE_FAST_MAKE -BACKTRACE_DEPS := $(S)/.gitmodules -else -BACKTRACE_DEPS := $(wildcard $(S)src/libbacktrace/*) -endif - -# We need to export CFLAGS because otherwise it doesn't pick up cross compile -# builds. If libbacktrace doesn't realize this, it will attempt to read 64-bit -# elf headers when compiled for a 32-bit system, yielding blank backtraces. -# -# This also removes the -Werror flag specifically to prevent errors during -# configuration. -# -# Down below you'll also see echos into the config.h generated by the -# ./configure script. This is done to force libbacktrace to *not* use the -# atomic/sync functionality because it pulls in unnecessary dependencies and we -# never use it anyway. -# -# We also use `env PWD=` to clear the PWD environment variable, and then -# execute the command in a new shell. This is necessary to workaround a -# buildbot/msys2 bug: the shell is launched with PWD set to a windows-style path, -# which results in all further uses of `pwd` also printing a windows-style path, -# which breaks libbacktrace's configure script. Clearing PWD within the same -# shell is not sufficient. - -$$(BACKTRACE_BUILD_DIR_$(1))/Makefile: $$(BACKTRACE_DEPS) $$(MKFILE_DEPS) - @$$(call E, configure: libbacktrace for $(1)) - $$(Q)rm -rf $$(BACKTRACE_BUILD_DIR_$(1)) - $$(Q)mkdir -p $$(BACKTRACE_BUILD_DIR_$(1)) - $$(Q)(cd $$(BACKTRACE_BUILD_DIR_$(1)) && env \ - PWD= \ - CC="$$(CC_$(1))" \ - AR="$$(AR_$(1))" \ - RANLIB="$$(AR_$(1)) s" \ - CFLAGS="$$(CFG_GCCISH_CFLAGS_$(1)) -Wno-error -fno-stack-protector" \ - $(S)src/libbacktrace/configure --build=$(CFG_GNU_TRIPLE_$(CFG_BUILD)) --host=$(CFG_GNU_TRIPLE_$(1))) - $$(Q)echo '#undef HAVE_ATOMIC_FUNCTIONS' >> \ - $$(BACKTRACE_BUILD_DIR_$(1))/config.h - $$(Q)echo '#undef HAVE_SYNC_FUNCTIONS' >> \ - $$(BACKTRACE_BUILD_DIR_$(1))/config.h - -$$(BACKTRACE_LIB_$(1)): $$(BACKTRACE_BUILD_DIR_$(1))/Makefile $$(MKFILE_DEPS) - @$$(call E, make: libbacktrace) - $$(Q)$$(MAKE) -C $$(BACKTRACE_BUILD_DIR_$(1)) \ - INCDIR=$(S)src/libbacktrace - $$(Q)cp $$(BACKTRACE_BUILD_DIR_$(1))/.libs/libbacktrace.a $$@ - -endif - -################################################################################ -# libc/libunwind for musl -# -# When we're building a musl-like target we're going to link libc/libunwind -# statically into the standard library and liblibc, so we need to make sure -# they're in a location that we can find -################################################################################ - -ifeq ($$(findstring musl,$(1)),musl) -$$(RT_OUTPUT_DIR_$(1))/%: $$(CFG_MUSL_ROOT)/lib/% - cp $$^ $$@ -else -# Ask gcc where it is -$$(RT_OUTPUT_DIR_$(1))/%: - cp $$(shell $$(CC_$(1)) -print-file-name=$$(@F)) $$@ -endif - -endef - -# Instantiate template for all stages/targets -$(foreach target,$(CFG_TARGET), \ - $(eval $(call DEF_THIRD_PARTY_TARGETS,$(target)))) diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk deleted file mode 100644 index 2d63f69960f78..0000000000000 --- a/mk/rustllvm.mk +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -###################################################################### -# rustc LLVM-extensions (C++) library variables and rules -###################################################################### - -define DEF_RUSTLLVM_TARGETS - -# FIXME: Lately, on windows, llvm-config --includedir is not enough -# to find the llvm includes (probably because we're not actually installing -# llvm, but using it straight out of the build directory) -ifdef CFG_WINDOWSY_$(1) -LLVM_EXTRA_INCDIRS_$(1)= $$(call CFG_CC_INCLUDE_$(1),$(S)src/llvm/include) \ - $$(call CFG_CC_INCLUDE_$(1),\ - $$(CFG_LLVM_BUILD_DIR_$(1))/include) -endif - -RUSTLLVM_OBJS_CS_$(1) := $$(addprefix rustllvm/, \ - RustWrapper.cpp PassWrapper.cpp \ - ArchiveWrapper.cpp) - -RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \ - $$(call CFG_CC_INCLUDE_$(1),$$(LLVM_INCDIR_$(1))) \ - $$(call CFG_CC_INCLUDE_$(1),$$(S)src/rustllvm/include) -RUSTLLVM_OBJS_OBJS_$(1) := $$(RUSTLLVM_OBJS_CS_$(1):rustllvm/%.cpp=$(1)/rustllvm/%.o) - -# Flag that we are building with Rust's llvm fork -ifeq ($(CFG_LLVM_ROOT),) -RUSTLLVM_CXXFLAGS_$(1) := -DLLVM_RUSTLLVM -endif - -# Note that we appease `cl.exe` and its need for some sort of exception -# handling flag with the `EHsc` argument here as well. -ifeq ($$(findstring msvc,$(1)),msvc) -EXTRA_RUSTLLVM_CXXFLAGS_$(1) := //EHsc -endif - -$$(RT_OUTPUT_DIR_$(1))/$$(call CFG_STATIC_LIB_NAME_$(1),rustllvm): \ - $$(RUSTLLVM_OBJS_OBJS_$(1)) - @$$(call E, link: $$@) - $$(Q)$$(call CFG_CREATE_ARCHIVE_$(1),$$@) $$^ - -RUSTLLVM_COMPONENTS_$(1) = $$(shell echo $$(LLVM_ALL_COMPONENTS_$(1)) |\ - tr 'a-z-' 'A-Z_'| sed -e 's/^ //;s/\([^ ]*\)/\-DLLVM_COMPONENT_\1/g') - -# On MSVC we need to double-escape arguments that llvm-config printed which -# start with a '/'. The shell we're running in will auto-translate the argument -# `/foo` to `C:/msys64/foo` but we really want it to be passed through as `/foo` -# so the argument passed to our shell must be `//foo`. -$(1)/rustllvm/%.o: $(S)src/rustllvm/%.cpp $$(MKFILE_DEPS) $$(LLVM_CONFIG_$(1)) - @$$(call E, compile: $$@) - $$(Q)$$(call CFG_COMPILE_CXX_$(1), $$@,) \ - $$(subst /,//,$$(LLVM_CXXFLAGS_$(1))) \ - $$(RUSTLLVM_COMPONENTS_$(1)) \ - $$(RUSTLLVM_CXXFLAGS_$(1)) \ - $$(EXTRA_RUSTLLVM_CXXFLAGS_$(1)) \ - $$(RUSTLLVM_INCS_$(1)) \ - $$< -endef - -# Instantiate template for all stages -$(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_RUSTLLVM_TARGETS,$(host)))) diff --git a/mk/stage0.mk b/mk/stage0.mk deleted file mode 100644 index 8a2bf2ebbde64..0000000000000 --- a/mk/stage0.mk +++ /dev/null @@ -1,49 +0,0 @@ -# Extract the snapshot host compiler - -$(HBIN0_H_$(CFG_BUILD))/: - mkdir -p $@ - -# On windows these two are the same, so cause a redifinition warning -ifneq ($(HBIN0_H_$(CFG_BUILD)),$(HLIB0_H_$(CFG_BUILD))) -$(HLIB0_H_$(CFG_BUILD))/: - mkdir -p $@ -endif - -$(SNAPSHOT_RUSTC_POST_CLEANUP): \ - $(S)src/stage0.txt \ - $(S)src/etc/local_stage0.sh \ - $(S)src/etc/get-stage0.py $(MKFILE_DEPS) \ - | $(HBIN0_H_$(CFG_BUILD))/ - @$(call E, fetch: $@) -ifdef CFG_ENABLE_LOCAL_RUST - $(Q)$(S)src/etc/local_stage0.sh $(CFG_BUILD) $(CFG_LOCAL_RUST_ROOT) rustlib -else - $(Q)$(CFG_PYTHON) $(S)src/etc/get-stage0.py $(CFG_BUILD) -endif - $(Q)if [ -e "$@" ]; then touch "$@"; else echo "ERROR: snapshot $@ not found"; exit 1; fi - -# For other targets, let the host build the target: - -define BOOTSTRAP_STAGE0 - # $(1) target to bootstrap - # $(2) stage to bootstrap from - # $(3) target to bootstrap from - -$(HBIN0_H_$(1))/: - mkdir -p $@ - -$(HLIB0_H_$(1))/: - mkdir -p $@ - -$$(HBIN0_H_$(1))/rustc$$(X_$(1)): \ - $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X_$(1)) \ - | $(HBIN0_H_$(1))/ - @$$(call E, cp: $$@) - $$(Q)cp $$< $$@ - -endef - -# Use stage1 to build other architectures: then you don't have to wait -# for stage2, but you get the latest updates to the compiler source. -$(foreach t,$(NON_BUILD_HOST), \ - $(eval $(call BOOTSTRAP_STAGE0,$(t),1,$(CFG_BUILD)))) diff --git a/mk/target.mk b/mk/target.mk deleted file mode 100644 index 1b139909ab458..0000000000000 --- a/mk/target.mk +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright 2012 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -# This is the compile-time target-triple for the compiler. For the compiler at -# runtime, this should be considered the host-triple. More explanation for why -# this exists can be found on issue #2400 -export CFG_COMPILER_HOST_TRIPLE - -# Used as defaults for the runtime ar and cc tools -export CFG_DEFAULT_LINKER -export CFG_DEFAULT_AR - -# Macro that generates the full list of dependencies for a crate at a particular -# stage/target/host tuple. -# -# $(1) - stage -# $(2) - target -# $(3) - host -# $(4) crate -define RUST_CRATE_FULLDEPS -CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4) := \ - $$(CRATEFILE_$(4)) \ - $$(RSINPUTS_$(4)) \ - $$(foreach dep,$$(RUST_DEPS_$(4)_T_$(2)), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \ - $$(foreach dep,$$(NATIVE_DEPS_$(4)), \ - $$(RT_OUTPUT_DIR_$(2))/$$(call CFG_STATIC_LIB_NAME_$(2),$$(dep))) \ - $$(foreach dep,$$(NATIVE_DEPS_$(4)_T_$(2)), \ - $$(RT_OUTPUT_DIR_$(2))/$$(dep)) -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach crate,$(CRATES), \ - $(eval $(call RUST_CRATE_FULLDEPS,$(stage),$(target),$(host),$(crate))))))) - -# RUST_TARGET_STAGE_N template: This defines how target artifacts are built -# for all stage/target architecture combinations. This is one giant rule which -# works as follows: -# -# 1. The immediate dependencies are the rust source files -# 2. Each rust crate dependency is listed (based on their stamp files), -# as well as all native dependencies (listed in RT_OUTPUT_DIR) -# 3. The stage (n-1) compiler is required through the TSREQ dependency -# 4. When actually executing the rule, the first thing we do is to clean out -# old libs and rlibs via the REMOVE_ALL_OLD_GLOB_MATCHES macro -# 5. Finally, we get around to building the actual crate. It's just one -# "small" invocation of the previous stage rustc. We use -L to -# RT_OUTPUT_DIR so all the native dependencies are picked up. -# Additionally, we pass in the llvm dir so rustc can link against it. -# 6. Some cleanup is done (listing what was just built) if verbose is turned -# on. -# -# $(1) is the stage -# $(2) is the target triple -# $(3) is the host triple -# $(4) is the crate name -define RUST_TARGET_STAGE_N - -$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): CFG_COMPILER_HOST_TRIPLE = $(2) -$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \ - $$(CRATEFILE_$(4)) \ - $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) \ - $$(LLVM_CONFIG_$(2)) \ - $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - | $$(TLIB$(1)_T_$(2)_H_$(3))/ - @$$(call E, rustc: $$(@D)/lib$(4)) - @touch $$@.start_time - $$(call REMOVE_ALL_OLD_GLOB_MATCHES, \ - $$(dir $$@)$$(call CFG_LIB_GLOB_$(2),$(4))) - $$(call REMOVE_ALL_OLD_GLOB_MATCHES, \ - $$(dir $$@)$$(call CFG_RLIB_GLOB,$(4))) - $(Q)CFG_LLVM_LINKAGE_FILE=$$(LLVM_LINKAGE_PATH_$(2)) \ - $$(subst @,,$$(STAGE$(1)_T_$(2)_H_$(3))) \ - $$(RUST_LIB_FLAGS_ST$(1)) \ - -L "$$(RT_OUTPUT_DIR_$(2))" \ - $$(LLVM_LIBDIR_RUSTFLAGS_$(2)) \ - $$(LLVM_STDCPP_RUSTFLAGS_$(2)) \ - $$(RUSTFLAGS_$(4)) \ - $$(RUSTFLAGS$(1)_$(4)) \ - $$(RUSTFLAGS$(1)_$(4)_T_$(2)) \ - --out-dir $$(@D) \ - -C extra-filename=-$$(CFG_FILENAME_EXTRA) \ - -C metadata=$$(CFG_FILENAME_EXTRA) \ - $$< - @touch -r $$@.start_time $$@ && rm $$@.start_time - $$(call LIST_ALL_OLD_GLOB_MATCHES, \ - $$(dir $$@)$$(call CFG_LIB_GLOB_$(2),$(4))) - $$(call LIST_ALL_OLD_GLOB_MATCHES, \ - $$(dir $$@)$$(call CFG_RLIB_GLOB,$(4))) - -endef - -# Macro for building any tool as part of the rust compilation process. Each -# tool is defined in crates.mk with a list of library dependencies as well as -# the source file for the tool. Building each tool will also be passed '--cfg -# ' for usage in driver.rs -# -# This build rule is similar to the one found above, just tweaked for -# locations and things. -# -# $(1) - stage -# $(2) - target triple -# $(3) - host triple -# $(4) - name of the tool being built -define TARGET_TOOL - -$$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \ - $$(TOOL_SOURCE_$(4)) \ - $$(TOOL_INPUTS_$(4)) \ - $$(foreach dep,$$(TOOL_DEPS_$(4)), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \ - $$(TSREQ$(1)_T_$(2)_H_$(3)) \ - | $$(TBIN$(1)_T_$(2)_H_$(3))/ - @$$(call E, rustc: $$@) - $$(STAGE$(1)_T_$(2)_H_$(3)) \ - $$(LLVM_LIBDIR_RUSTFLAGS_$(2)) \ - -o $$@ $$< --cfg $(4) - -endef - -# Macro for building runtime startup/shutdown object files; -# these are Rust's equivalent of crti.o, crtn.o -# -# $(1) - stage -# $(2) - target triple -# $(3) - host triple -# $(4) - object basename -define TARGET_RUSTRT_STARTUP_OBJ - -$$(TLIB$(1)_T_$(2)_H_$(3))/$(4).o: \ - $(S)src/rtstartup/$(4).rs \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.core \ - $$(HSREQ$(1)_T_$(2)_H_$(3)) \ - | $$(TBIN$(1)_T_$(2)_H_$(3))/ - @$$(call E, rustc: $$@) - $$(STAGE$(1)_T_$(2)_H_$(3)) --emit=obj -o $$@ $$< - -ifeq ($$(CFG_RUSTRT_HAS_STARTUP_OBJS_$(2)), 1) -# Add dependencies on Rust startup objects to all crates that depend on core. -# This ensures that they are built after core (since they depend on it), -# but before everything else (since they are needed for linking dylib crates). -$$(foreach crate, $$(TARGET_CRATES_$(2)), \ - $$(if $$(findstring core,$$(DEPS_$$(crate))), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(crate))) : $$(TLIB$(1)_T_$(2)_H_$(3))/$(4).o -endif - -endef - -# Every recipe in RUST_TARGET_STAGE_N outputs to $$(TLIB$(1)_T_$(2)_H_$(3), -# a directory that can be cleaned out during the middle of a run of -# the get-snapshot.py script. Therefore, every recipe needs to have -# an order-only dependency either on $(SNAPSHOT_RUSTC_POST_CLEANUP) or -# on $$(TSREQ$(1)_T_$(2)_H_$(3)), to ensure that no products will be -# put into the target area until after the get-snapshot.py script has -# had its chance to clean it out; otherwise the other products will be -# inadvertently included in the clean out. -SNAPSHOT_RUSTC_POST_CLEANUP=$(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD)) - -define TARGET_HOST_RULES - -$$(TLIB$(1)_T_$(2)_H_$(3))/: $$(SNAPSHOT_RUSTC_POST_CLEANUP) - mkdir -p $$@ - -$$(TBIN$(1)_T_$(2)_H_$(3))/: $$(SNAPSHOT_RUSTC_POST_CLEANUP) - mkdir -p $$@ - -$$(TLIB$(1)_T_$(2)_H_$(3))/%: $$(RT_OUTPUT_DIR_$(2))/% \ - $$(SNAPSHOT_RUSTC_POST_CLEANUP) \ - | $$(TLIB$(1)_T_$(2)_H_$(3))/ - @$$(call E, cp: $$@) - $$(Q)cp $$< $$@ -endef - -$(foreach source,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(eval $(call TARGET_HOST_RULES,0,$(target),$(source))) \ - $(eval $(call TARGET_HOST_RULES,1,$(target),$(source))) \ - $(eval $(call TARGET_HOST_RULES,2,$(target),$(source))) \ - $(eval $(call TARGET_HOST_RULES,3,$(target),$(source))))) - -# In principle, each host can build each target for both libs and tools -$(foreach crate,$(CRATES), \ - $(foreach source,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(eval $(call RUST_TARGET_STAGE_N,0,$(target),$(source),$(crate))) \ - $(eval $(call RUST_TARGET_STAGE_N,1,$(target),$(source),$(crate))) \ - $(eval $(call RUST_TARGET_STAGE_N,2,$(target),$(source),$(crate))) \ - $(eval $(call RUST_TARGET_STAGE_N,3,$(target),$(source),$(crate)))))) - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach tool,$(TOOLS), \ - $(eval $(call TARGET_TOOL,$(stage),$(target),$(host),$(tool))))))) - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach obj,rsbegin rsend, \ - $(eval $(call TARGET_RUSTRT_STARTUP_OBJ,$(stage),$(target),$(host),$(obj))))))) diff --git a/mk/tests.mk b/mk/tests.mk deleted file mode 100644 index 3317688f042a2..0000000000000 --- a/mk/tests.mk +++ /dev/null @@ -1,1057 +0,0 @@ -# Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - - -###################################################################### -# Test variables -###################################################################### - -# The names of crates that must be tested - -# libcore/libstd_unicode tests are in a separate crate -DEPS_coretest := -$(eval $(call RUST_CRATE,coretest)) - -DEPS_collectionstest := -$(eval $(call RUST_CRATE,collectionstest)) - -TEST_TARGET_CRATES = $(filter-out core std_unicode alloc_system libc \ - alloc_jemalloc panic_unwind \ - panic_abort,$(TARGET_CRATES)) \ - collectionstest coretest -TEST_DOC_CRATES = $(DOC_CRATES) arena flate fmt_macros getopts graphviz \ - log rand serialize syntax term test -TEST_HOST_CRATES = $(filter-out rustc_typeck rustc_borrowck rustc_resolve \ - rustc_trans rustc_lint,\ - $(HOST_CRATES)) -TEST_CRATES = $(TEST_TARGET_CRATES) $(TEST_HOST_CRATES) - -###################################################################### -# Environment configuration -###################################################################### - -# The arguments to all test runners -ifdef TESTNAME - TESTARGS += $(TESTNAME) -endif - -ifdef CHECK_IGNORED - TESTARGS += --ignored -endif - -# Arguments to the cfail/rfail/rpass tests -ifdef CFG_VALGRIND - CTEST_RUNTOOL = --runtool "$(CFG_VALGRIND)" -endif - -CTEST_TESTARGS := $(TESTARGS) - -# --bench is only relevant for crate tests, not for the compile tests -ifdef PLEASE_BENCH - TESTARGS += --bench -endif - -ifdef VERBOSE - CTEST_TESTARGS += --verbose -endif - -# Setting locale ensures that gdb's output remains consistent. -# This prevents tests from failing with some locales (fixes #17423). -export LC_ALL=C - -TEST_LOG_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).log -TEST_OK_FILE=tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).ok - -define DEF_TARGET_COMMANDS - -ifdef CFG_UNIXY_$(1) - CFG_RUN_TEST_$(1)=$$(TARGET_RPATH_VAR$$(2)_T_$$(3)_H_$$(4)) \ - $$(call CFG_RUN_$(1),,$$(CFG_VALGRIND) $$(1)) -endif - -ifdef CFG_WINDOWSY_$(1) - CFG_TESTLIB_$(1)=$$(CFG_BUILD_DIR)$$(2)/$$(strip \ - $$(if $$(findstring stage0,$$(1)), \ - stage0/$$(CFG_LIBDIR_RELATIVE), \ - $$(if $$(findstring stage1,$$(1)), \ - stage1/$$(CFG_LIBDIR_RELATIVE), \ - $$(if $$(findstring stage2,$$(1)), \ - stage2/$$(CFG_LIBDIR_RELATIVE), \ - $$(if $$(findstring stage3,$$(1)), \ - stage3/$$(CFG_LIBDIR_RELATIVE), \ - )))))/rustlib/$$(CFG_BUILD)/lib - CFG_RUN_TEST_$(1)=$$(TARGET_RPATH_VAR$$(2)_T_$$(3)_H_$$(4)) \ - $$(call CFG_RUN_$(1),$$(call CFG_TESTLIB_$(1),$$(1),$$(4)),$$(1)) -endif - -# Run the compiletest runner itself under valgrind -ifdef CTEST_VALGRIND -CFG_RUN_CTEST_$(1)=$$(RPATH_VAR$$(1)_T_$$(3)_H_$$(3)) \ - $$(call CFG_RUN_TEST_$$(CFG_BUILD),$$(3),$$(4)) -else -CFG_RUN_CTEST_$(1)=$$(RPATH_VAR$$(1)_T_$$(3)_H_$$(3)) \ - $$(call CFG_RUN_$$(CFG_BUILD),$$(TLIB$$(1)_T_$$(3)_H_$$(3)),$$(2)) -endif - -endef - -$(foreach target,$(CFG_TARGET), \ - $(eval $(call DEF_TARGET_COMMANDS,$(target)))) - -# Target platform specific variables for android -define DEF_ADB_DEVICE_STATUS -CFG_ADB_DEVICE_STATUS=$(1) -endef - -$(foreach target,$(CFG_TARGET), \ - $(if $(findstring android, $(target)), \ - $(if $(findstring adb,$(CFG_ADB)), \ - $(if $(findstring device,$(shell $(CFG_ADB) devices 2>/dev/null | grep -E '^[:_A-Za-z0-9-]+[[:blank:]]+device')), \ - $(info check: android device attached) \ - $(eval $(call DEF_ADB_DEVICE_STATUS, true)), \ - $(info check: android device not attached) \ - $(eval $(call DEF_ADB_DEVICE_STATUS, false)) \ - ), \ - $(info check: adb not found) \ - $(eval $(call DEF_ADB_DEVICE_STATUS, false)) \ - ), \ - ) \ -) - -ifeq ($(CFG_ADB_DEVICE_STATUS),true) -CFG_ADB_TEST_DIR=/data/tmp - -$(info check: android device test dir $(CFG_ADB_TEST_DIR) ready \ - $(shell $(CFG_ADB) remount 1>/dev/null) \ - $(shell $(CFG_ADB) shell rm -r $(CFG_ADB_TEST_DIR) >/dev/null) \ - $(shell $(CFG_ADB) shell mkdir $(CFG_ADB_TEST_DIR)) \ - $(shell $(CFG_ADB) push $(S)src/etc/adb_run_wrapper.sh $(CFG_ADB_TEST_DIR) 1>/dev/null) \ - $(foreach target,$(CFG_TARGET), \ - $(if $(findstring android, $(target)), \ - $(shell $(CFG_ADB) shell mkdir $(CFG_ADB_TEST_DIR)/$(target)) \ - $(foreach crate,$(TARGET_CRATES_$(target)), \ - $(shell $(CFG_ADB) push $(TLIB2_T_$(target)_H_$(CFG_BUILD))/$(call CFG_LIB_GLOB_$(target),$(crate)) \ - $(CFG_ADB_TEST_DIR)/$(target))), \ - ))) -else -CFG_ADB_TEST_DIR= -endif - -# $(1) - name of doc test -# $(2) - file of the test -define DOCTEST -DOC_NAMES := $$(DOC_NAMES) $(1) -DOCFILE_$(1) := $(2) -endef - -$(foreach doc,$(DOCS), \ - $(eval $(call DOCTEST,md-$(doc),$(S)src/doc/$(doc).md))) -$(foreach file,$(wildcard $(S)src/doc/book/*.md), \ - $(eval $(call DOCTEST,$(file:$(S)src/doc/book/%.md=book-%),$(file)))) -$(foreach file,$(wildcard $(S)src/doc/nomicon/*.md), \ - $(eval $(call DOCTEST,$(file:$(S)src/doc/nomicon/%.md=nomicon-%),$(file)))) -###################################################################### -# Main test targets -###################################################################### - -# The main testing target. Tests lots of stuff. -check: check-sanitycheck cleantmptestlogs cleantestlibs all check-stage2 tidy - $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log - -# As above but don't bother running tidy. -check-notidy: check-sanitycheck cleantmptestlogs cleantestlibs all check-stage2 - $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log - -# A slightly smaller set of tests for smoke testing. -check-lite: check-sanitycheck cleantestlibs cleantmptestlogs \ - $(foreach crate,$(TEST_TARGET_CRATES),check-stage2-$(crate)) \ - check-stage2-rpass check-stage2-rpass-valgrind \ - check-stage2-rfail check-stage2-cfail check-stage2-pfail check-stage2-rmake - $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log - -# Only check the 'reference' tests: rpass/cfail/rfail/rmake. -check-ref: check-sanitycheck cleantestlibs cleantmptestlogs check-stage2-rpass \ - check-stage2-rpass-valgrind check-stage2-rfail check-stage2-cfail check-stage2-pfail \ - check-stage2-rmake - $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log - -# Only check the docs. -check-docs: check-sanitycheck cleantestlibs cleantmptestlogs check-stage2-docs - $(Q)$(CFG_PYTHON) $(S)src/etc/check-summary.py tmp/*.log - -# Some less critical tests that are not prone to breakage. -# Not run as part of the normal test suite, but tested by bors on checkin. -check-secondary: check-build-compiletest check-build-lexer-verifier check-lexer check-pretty - -.PHONY: check-sanitycheck - -check-sanitycheck: - $(Q)$(CFG_PYTHON) $(S)src/etc/check-sanitycheck.py - -# check + check-secondary. -# -# Issue #17883: build check-secondary first so hidden dependencies in -# e.g. building compiletest are exercised (resolve those by adding -# deps to rules that need them; not by putting `check` first here). -check-all: check-secondary check - -# Pretty-printing tests. -check-pretty: check-stage2-T-$(CFG_BUILD)-H-$(CFG_BUILD)-pretty-exec - -define DEF_CHECK_BUILD_COMPILETEST_FOR_STAGE -check-stage$(1)-build-compiletest: $$(HBIN$(1)_H_$(CFG_BUILD))/compiletest$$(X_$(CFG_BUILD)) -endef - -$(foreach stage,$(STAGES), \ - $(eval $(call DEF_CHECK_BUILD_COMPILETEST_FOR_STAGE,$(stage)))) - -check-build-compiletest: \ - check-stage1-build-compiletest \ - check-stage2-build-compiletest - -.PHONY: cleantmptestlogs cleantestlibs - -cleantmptestlogs: - $(Q)rm -f tmp/*.log - -cleantestlibs: - $(Q)find $(CFG_BUILD)/test \ - -name '*.[odasS]' -o \ - -name '*.so' -o \ - -name '*.dylib' -o \ - -name '*.dll' -o \ - -name '*.def' -o \ - -name '*.bc' -o \ - -name '*.dSYM' -o \ - -name '*.libaux' -o \ - -name '*.out' -o \ - -name '*.err' -o \ - -name '*.debugger.script' \ - | xargs rm -rf - - -###################################################################### -# Tidy -###################################################################### - -.PHONY: tidy -tidy: $(HBIN0_H_$(CFG_BUILD))/tidy$(X_$(CFG_BUILD)) \ - $(SNAPSHOT_RUSTC_POST_CLEANUP) - $(TARGET_RPATH_VAR0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $< $(S)src - -$(HBIN0_H_$(CFG_BUILD))/tidy$(X_$(CFG_BUILD)): \ - $(TSREQ0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \ - $(TLIB0_T_$(CFG_BUILD)_H_$(CFG_BUILD))/stamp.std \ - $(call rwildcard,$(S)src/tools/tidy/src,*.rs) \ - $(SNAPSHOT_RUSTC_POST_CLEANUP) | \ - $(TLIB0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) - $(STAGE0_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(S)src/tools/tidy/src/main.rs \ - --out-dir $(@D) --crate-name tidy - -###################################################################### -# Sets of tests -###################################################################### - -define DEF_TEST_SETS - -check-stage$(1)-T-$(2)-H-$(3)-exec: \ - check-stage$(1)-T-$(2)-H-$(3)-rpass-exec \ - check-stage$(1)-T-$(2)-H-$(3)-rfail-exec \ - check-stage$(1)-T-$(2)-H-$(3)-cfail-exec \ - check-stage$(1)-T-$(2)-H-$(3)-pfail-exec \ - check-stage$(1)-T-$(2)-H-$(3)-rpass-valgrind-exec \ - check-stage$(1)-T-$(2)-H-$(3)-rmake-exec \ - check-stage$(1)-T-$(2)-H-$(3)-rustdocck-exec \ - check-stage$(1)-T-$(2)-H-$(3)-crates-exec \ - check-stage$(1)-T-$(2)-H-$(3)-doc-crates-exec \ - check-stage$(1)-T-$(2)-H-$(3)-debuginfo-gdb-exec \ - check-stage$(1)-T-$(2)-H-$(3)-debuginfo-lldb-exec \ - check-stage$(1)-T-$(2)-H-$(3)-incremental-exec \ - check-stage$(1)-T-$(2)-H-$(3)-ui-exec \ - check-stage$(1)-T-$(2)-H-$(3)-doc-exec \ - check-stage$(1)-T-$(2)-H-$(3)-doc-error-index-exec \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-exec \ - check-stage$(1)-T-$(2)-H-$(3)-mir-opt-exec - -ifndef CFG_DISABLE_CODEGEN_TESTS -check-stage$(1)-T-$(2)-H-$(3)-exec: \ - check-stage$(1)-T-$(2)-H-$(3)-codegen-exec \ - check-stage$(1)-T-$(2)-H-$(3)-codegen-units-exec -endif - -# Only test the compiler-dependent crates when the target is -# able to build a compiler (when the target triple is in the set of host triples) -ifneq ($$(findstring $(2),$$(CFG_HOST)),) - -check-stage$(1)-T-$(2)-H-$(3)-exec: \ - check-stage$(1)-T-$(2)-H-$(3)-rpass-full-exec \ - check-stage$(1)-T-$(2)-H-$(3)-rfail-full-exec \ - check-stage$(1)-T-$(2)-H-$(3)-cfail-full-exec - -check-stage$(1)-T-$(2)-H-$(3)-pretty-exec: \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-full-exec \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-full-exec - -check-stage$(1)-T-$(2)-H-$(3)-crates-exec: \ - $$(foreach crate,$$(TEST_CRATES), \ - check-stage$(1)-T-$(2)-H-$(3)-$$(crate)-exec) - -else - -check-stage$(1)-T-$(2)-H-$(3)-crates-exec: \ - $$(foreach crate,$$(TEST_TARGET_CRATES), \ - check-stage$(1)-T-$(2)-H-$(3)-$$(crate)-exec) - -endif - -check-stage$(1)-T-$(2)-H-$(3)-doc-crates-exec: \ - $$(foreach crate,$$(TEST_DOC_CRATES), \ - check-stage$(1)-T-$(2)-H-$(3)-doc-crate-$$(crate)-exec) - -check-stage$(1)-T-$(2)-H-$(3)-doc-exec: \ - $$(foreach docname,$$(DOC_NAMES), \ - check-stage$(1)-T-$(2)-H-$(3)-doc-$$(docname)-exec) \ - -check-stage$(1)-T-$(2)-H-$(3)-pretty-exec: \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-exec \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-rpass-valgrind-exec \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-rfail-exec \ - check-stage$(1)-T-$(2)-H-$(3)-pretty-pretty-exec - -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(eval $(call DEF_TEST_SETS,$(stage),$(target),$(host)))))) - - -###################################################################### -# Crate testing -###################################################################### - -define TEST_RUNNER - -# If NO_REBUILD is set then break the dependencies on everything but -# the source files so we can test crates without rebuilding any of the -# parent crates. -ifeq ($(NO_REBUILD),) -TESTDEP_$(1)_$(2)_$(3)_$(4) = $$(SREQ$(1)_T_$(2)_H_$(3)) \ - $$(foreach crate,$$(TARGET_CRATES_$(2)), \ - $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(crate)) \ - $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) - -else -TESTDEP_$(1)_$(2)_$(3)_$(4) = $$(RSINPUTS_$(4)) -endif - -$(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)): CFG_COMPILER_HOST_TRIPLE = $(2) -$(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)): \ - $$(CRATEFILE_$(4)) \ - $$(TESTDEP_$(1)_$(2)_$(3)_$(4)) - @$$(call E, rustc: $$@) - $(Q)CFG_LLVM_LINKAGE_FILE=$$(LLVM_LINKAGE_PATH_$(2)) \ - $$(subst @,,$$(STAGE$(1)_T_$(2)_H_$(3))) -o $$@ $$< --test \ - -Cmetadata="test-crate" -L "$$(RT_OUTPUT_DIR_$(2))" \ - $$(LLVM_LIBDIR_RUSTFLAGS_$(2)) \ - $$(RUSTFLAGS_$(4)) - -endef - -$(foreach host,$(CFG_HOST), \ - $(eval $(foreach target,$(CFG_TARGET), \ - $(eval $(foreach stage,$(STAGES), \ - $(eval $(foreach crate,$(TEST_CRATES), \ - $(eval $(call TEST_RUNNER,$(stage),$(target),$(host),$(crate)))))))))) - -define DEF_TEST_CRATE_RULES -check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) - -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)) - @$$(call E, run: $$<) - $$(Q)touch $$@.start_time - $$(Q)$$(call CFG_RUN_TEST_$(2),$$<,$(1),$(2),$(3)) $$(TESTARGS) \ - --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ - $$(call CRATE_TEST_EXTRA_ARGS,$(1),$(2),$(3),$(4)) \ - && touch -r $$@.start_time $$@ && rm $$@.start_time -endef - -define DEF_TEST_CRATE_RULES_android -check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) - -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)) - @$$(call E, run: $$< via adb) - $$(Q)touch $$@.start_time - $$(Q)$(CFG_ADB) push $$< $(CFG_ADB_TEST_DIR) - $$(Q)$(CFG_ADB) shell '(cd $(CFG_ADB_TEST_DIR); LD_LIBRARY_PATH=./$(2) \ - ./$$(notdir $$<) \ - --logfile $(CFG_ADB_TEST_DIR)/check-stage$(1)-T-$(2)-H-$(3)-$(4).log \ - $$(call CRATE_TEST_EXTRA_ARGS,$(1),$(2),$(3),$(4)) $(TESTARGS))' \ - > tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp - $$(Q)cat tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp - $$(Q)touch tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).log - $$(Q)$(CFG_ADB) pull $(CFG_ADB_TEST_DIR)/check-stage$(1)-T-$(2)-H-$(3)-$(4).log tmp/ - $$(Q)$(CFG_ADB) shell rm $(CFG_ADB_TEST_DIR)/check-stage$(1)-T-$(2)-H-$(3)-$(4).log - @if grep -q "result: ok" tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp; \ - then \ - rm tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp; \ - touch -r $$@.start_time $$@ && rm $$@.start_time; \ - else \ - rm tmp/check-stage$(1)-T-$(2)-H-$(3)-$(4).tmp; \ - exit 101; \ - fi -endef - -define DEF_TEST_CRATE_RULES_null -check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) - -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)) - @$$(call E, failing: no device for $$< ) - false -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach crate, $(TEST_CRATES), \ - $(if $(findstring $(target),$(CFG_BUILD)), \ - $(eval $(call DEF_TEST_CRATE_RULES,$(stage),$(target),$(host),$(crate))), \ - $(if $(findstring android, $(target)), \ - $(if $(findstring $(CFG_ADB_DEVICE_STATUS),"true"), \ - $(eval $(call DEF_TEST_CRATE_RULES_android,$(stage),$(target),$(host),$(crate))), \ - $(eval $(call DEF_TEST_CRATE_RULES_null,$(stage),$(target),$(host),$(crate))) \ - ), \ - $(eval $(call DEF_TEST_CRATE_RULES,$(stage),$(target),$(host),$(crate))) \ - )))))) - -###################################################################### -# Rules for the compiletest tests (rpass, rfail, etc.) -###################################################################### - -RPASS_RS := $(call rwildcard,$(S)src/test/run-pass/,*.rs) -RPASS_VALGRIND_RS := $(call rwildcard,$(S)src/test/run-pass-valgrind/,*.rs) -RPASS_FULL_RS := $(call rwildcard,$(S)src/test/run-pass-fulldeps/,*.rs) -RFAIL_FULL_RS := $(call rwildcard,$(S)src/test/run-fail-fulldeps/,*.rs) -CFAIL_FULL_RS := $(call rwildcard,$(S)src/test/compile-fail-fulldeps/,*.rs) -RFAIL_RS := $(call rwildcard,$(S)src/test/run-fail/,*.rs) -RFAIL_RS := $(call rwildcard,$(S)src/test/run-fail/,*.rs) -CFAIL_RS := $(call rwildcard,$(S)src/test/compile-fail/,*.rs) -PFAIL_RS := $(call rwildcard,$(S)src/test/parse-fail/,*.rs) -PRETTY_RS := $(call rwildcard,$(S)src/test/pretty/,*.rs) -DEBUGINFO_GDB_RS := $(call rwildcard,$(S)src/test/debuginfo/,*.rs) -DEBUGINFO_LLDB_RS := $(call rwildcard,$(S)src/test/debuginfo/,*.rs) -CODEGEN_RS := $(call rwildcard,$(S)src/test/codegen/,*.rs) -CODEGEN_CC := $(call rwildcard,$(S)src/test/codegen/,*.cc) -CODEGEN_UNITS_RS := $(call rwildcard,$(S)src/test/codegen-units/,*.rs) -INCREMENTAL_RS := $(call rwildcard,$(S)src/test/incremental/,*.rs) -RMAKE_RS := $(wildcard $(S)src/test/run-make/*/Makefile) -UI_RS := $(call rwildcard,$(S)src/test/ui/,*.rs) \ - $(call rwildcard,$(S)src/test/ui/,*.stdout) \ - $(call rwildcard,$(S)src/test/ui/,*.stderr) -RUSTDOCCK_RS := $(call rwildcard,$(S)src/test/rustdoc/,*.rs) -MIR_OPT_RS := $(call rwildcard,$(S)src/test/mir-opt/,*.rs) - -RPASS_TESTS := $(RPASS_RS) -RPASS_VALGRIND_TESTS := $(RPASS_VALGRIND_RS) -RPASS_FULL_TESTS := $(RPASS_FULL_RS) -RFAIL_FULL_TESTS := $(RFAIL_FULL_RS) -CFAIL_FULL_TESTS := $(CFAIL_FULL_RS) -RFAIL_TESTS := $(RFAIL_RS) -CFAIL_TESTS := $(CFAIL_RS) -PFAIL_TESTS := $(PFAIL_RS) -PRETTY_TESTS := $(PRETTY_RS) -DEBUGINFO_GDB_TESTS := $(DEBUGINFO_GDB_RS) -DEBUGINFO_LLDB_TESTS := $(DEBUGINFO_LLDB_RS) -CODEGEN_TESTS := $(CODEGEN_RS) $(CODEGEN_CC) -CODEGEN_UNITS_TESTS := $(CODEGEN_UNITS_RS) -INCREMENTAL_TESTS := $(INCREMENTAL_RS) -RMAKE_TESTS := $(RMAKE_RS) -UI_TESTS := $(UI_RS) -MIR_OPT_TESTS := $(MIR_OPT_RS) -RUSTDOCCK_TESTS := $(RUSTDOCCK_RS) - -CTEST_SRC_BASE_rpass = run-pass -CTEST_BUILD_BASE_rpass = run-pass -CTEST_MODE_rpass = run-pass -CTEST_RUNTOOL_rpass = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_rpass-valgrind = run-pass-valgrind -CTEST_BUILD_BASE_rpass-valgrind = run-pass-valgrind -CTEST_MODE_rpass-valgrind = run-pass-valgrind -CTEST_RUNTOOL_rpass-valgrind = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_rpass-full = run-pass-fulldeps -CTEST_BUILD_BASE_rpass-full = run-pass-fulldeps -CTEST_MODE_rpass-full = run-pass -CTEST_RUNTOOL_rpass-full = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_rfail-full = run-fail-fulldeps -CTEST_BUILD_BASE_rfail-full = run-fail-fulldeps -CTEST_MODE_rfail-full = run-fail -CTEST_RUNTOOL_rfail-full = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_cfail-full = compile-fail-fulldeps -CTEST_BUILD_BASE_cfail-full = compile-fail-fulldeps -CTEST_MODE_cfail-full = compile-fail -CTEST_RUNTOOL_cfail-full = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_rfail = run-fail -CTEST_BUILD_BASE_rfail = run-fail -CTEST_MODE_rfail = run-fail -CTEST_RUNTOOL_rfail = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_cfail = compile-fail -CTEST_BUILD_BASE_cfail = compile-fail -CTEST_MODE_cfail = compile-fail -CTEST_RUNTOOL_cfail = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_pfail = parse-fail -CTEST_BUILD_BASE_pfail = parse-fail -CTEST_MODE_pfail = parse-fail -CTEST_RUNTOOL_pfail = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_debuginfo-gdb = debuginfo -CTEST_BUILD_BASE_debuginfo-gdb = debuginfo-gdb -CTEST_MODE_debuginfo-gdb = debuginfo-gdb -CTEST_RUNTOOL_debuginfo-gdb = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_debuginfo-lldb = debuginfo -CTEST_BUILD_BASE_debuginfo-lldb = debuginfo-lldb -CTEST_MODE_debuginfo-lldb = debuginfo-lldb -CTEST_RUNTOOL_debuginfo-lldb = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_codegen = codegen -CTEST_BUILD_BASE_codegen = codegen -CTEST_MODE_codegen = codegen -CTEST_RUNTOOL_codegen = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_codegen-units = codegen-units -CTEST_BUILD_BASE_codegen-units = codegen-units -CTEST_MODE_codegen-units = codegen-units -CTEST_RUNTOOL_codegen-units = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_incremental = incremental -CTEST_BUILD_BASE_incremental = incremental -CTEST_MODE_incremental = incremental -CTEST_RUNTOOL_incremental = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_rmake = run-make -CTEST_BUILD_BASE_rmake = run-make -CTEST_MODE_rmake = run-make -CTEST_RUNTOOL_rmake = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_ui = ui -CTEST_BUILD_BASE_ui = ui -CTEST_MODE_ui = ui -CTEST_RUNTOOL_ui = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_mir-opt = mir-opt -CTEST_BUILD_BASE_mir-opt = mir-opt -CTEST_MODE_mir-opt = mir-opt -CTEST_RUNTOOL_mir-opt = $(CTEST_RUNTOOL) - -CTEST_SRC_BASE_rustdocck = rustdoc -CTEST_BUILD_BASE_rustdocck = rustdoc -CTEST_MODE_rustdocck = rustdoc -CTEST_RUNTOOL_rustdocck = $(CTEST_RUNTOOL) - -# CTEST_DISABLE_$(TEST_GROUP), if set, will cause the test group to be -# disabled and the associated message to be printed as a warning -# during attempts to run those tests. - -ifeq ($(CFG_GDB),) -CTEST_DISABLE_debuginfo-gdb = "no gdb found" -endif - -ifeq ($(CFG_LLDB),) -CTEST_DISABLE_debuginfo-lldb = "no lldb found" -endif - -ifneq ($(CFG_OSTYPE),apple-darwin) -CTEST_DISABLE_debuginfo-lldb = "lldb tests are only run on darwin" -endif - -ifeq ($(CFG_OSTYPE),apple-darwin) -CTEST_DISABLE_debuginfo-gdb = "gdb on darwin needs root" -endif - -ifeq ($(findstring android, $(CFG_TARGET)), android) -CTEST_DISABLE_debuginfo-gdb = -CTEST_DISABLE_debuginfo-lldb = "lldb tests are disabled on android" -endif - -ifeq ($(findstring msvc,$(CFG_TARGET)),msvc) -CTEST_DISABLE_debuginfo-gdb = "gdb tests are disabled on MSVC" -endif - -# CTEST_DISABLE_NONSELFHOST_$(TEST_GROUP), if set, will cause that -# test group to be disabled *unless* the target is able to build a -# compiler (i.e. when the target triple is in the set of host -# triples). The associated message will be printed as a warning -# during attempts to run those tests. - -define DEF_CTEST_VARS - -# All the per-stage build rules you might want to call from the -# command line. -# -# $(1) is the stage number -# $(2) is the target triple to test -# $(3) is the host triple to test - -# Prerequisites for compiletest tests -TEST_SREQ$(1)_T_$(2)_H_$(3) = \ - $$(HBIN$(1)_H_$(3))/compiletest$$(X_$(3)) \ - $$(SREQ$(1)_T_$(2)_H_$(3)) - -# Rules for the cfail/rfail/rpass test runner - -# The tests select when to use debug configuration on their own; -# remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898). -CTEST_RUSTC_FLAGS := $$(subst -C debug-assertions,,$$(subst -C debug-assertions=on,,$$(CFG_RUSTC_FLAGS))) - -# The tests cannot be optimized while the rest of the compiler is optimized, so -# filter out the optimization (if any) from rustc and then figure out if we need -# to be optimized -CTEST_RUSTC_FLAGS := $$(subst -O,,$$(CTEST_RUSTC_FLAGS)) -ifndef CFG_DISABLE_OPTIMIZE_TESTS -CTEST_RUSTC_FLAGS += -O -endif - -# Analogously to the above, whether to pass `-g` when compiling tests -# is a separate choice from whether to pass `-g` when building the -# compiler and standard library themselves. -CTEST_RUSTC_FLAGS := $$(subst -g,,$$(CTEST_RUSTC_FLAGS)) -CTEST_RUSTC_FLAGS := $$(subst -Cdebuginfo=1,,$$(CTEST_RUSTC_FLAGS)) -ifdef CFG_ENABLE_DEBUGINFO_TESTS -CTEST_RUSTC_FLAGS += -g -endif - -CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) = \ - --compile-lib-path $$(HLIB$(1)_H_$(3)) \ - --run-lib-path $$(TLIB$(1)_T_$(2)_H_$(3)) \ - --rustc-path $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ - --rustdoc-path $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ - --llvm-filecheck $(CFG_LLVM_INST_DIR_$(CFG_BUILD))/bin/FileCheck \ - --stage-id stage$(1)-$(2) \ - --target $(2) \ - --host $(3) \ - --docck-python $$(CFG_PYTHON) \ - --lldb-python $$(CFG_LLDB_PYTHON) \ - --gdb="$(CFG_GDB)" \ - --lldb-version="$(CFG_LLDB_VERSION)" \ - --llvm-version="$$(LLVM_VERSION_$(3))" \ - --android-cross-path=$(CFG_ARM_LINUX_ANDROIDEABI_NDK) \ - --adb-path=$(CFG_ADB) \ - --adb-test-dir=$(CFG_ADB_TEST_DIR) \ - --host-rustcflags "$(RUSTC_FLAGS_$(3)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(3))" \ - --lldb-python-dir=$(CFG_LLDB_PYTHON_DIR) \ - --target-rustcflags "$(RUSTC_FLAGS_$(2)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(2))" \ - --cc '$$(call FIND_COMPILER,$$(CC_$(2)))' \ - --cxx '$$(call FIND_COMPILER,$$(CXX_$(2)))' \ - --cflags "$$(CFG_GCCISH_CFLAGS_$(2))" \ - --llvm-components "$$(LLVM_ALL_COMPONENTS_$(2))" \ - --llvm-cxxflags "$$(LLVM_CXXFLAGS_$(2))" \ - $$(CTEST_TESTARGS) - -ifdef CFG_VALGRIND_RPASS -ifdef GOOD_VALGRIND_$(2) -CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) += --valgrind-path "$(CFG_VALGRIND_RPASS)" -endif -endif - -ifndef CFG_DISABLE_VALGRIND_RPASS -ifdef GOOD_VALGRIND_$(2) -CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) += --force-valgrind -endif -endif - -CTEST_DEPS_rpass_$(1)-T-$(2)-H-$(3) = $$(RPASS_TESTS) -CTEST_DEPS_rpass-valgrind_$(1)-T-$(2)-H-$(3) = $$(RPASS_VALGRIND_TESTS) -CTEST_DEPS_rpass-full_$(1)-T-$(2)-H-$(3) = $$(RPASS_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) -CTEST_DEPS_rfail-full_$(1)-T-$(2)-H-$(3) = $$(RFAIL_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) -CTEST_DEPS_cfail-full_$(1)-T-$(2)-H-$(3) = $$(CFAIL_FULL_TESTS) $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) -CTEST_DEPS_rfail_$(1)-T-$(2)-H-$(3) = $$(RFAIL_TESTS) -CTEST_DEPS_cfail_$(1)-T-$(2)-H-$(3) = $$(CFAIL_TESTS) -CTEST_DEPS_pfail_$(1)-T-$(2)-H-$(3) = $$(PFAIL_TESTS) -CTEST_DEPS_debuginfo-gdb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_GDB_TESTS) -CTEST_DEPS_debuginfo-lldb_$(1)-T-$(2)-H-$(3) = $$(DEBUGINFO_LLDB_TESTS) \ - $(S)src/etc/lldb_batchmode.py \ - $(S)src/etc/lldb_rust_formatters.py -CTEST_DEPS_codegen_$(1)-T-$(2)-H-$(3) = $$(CODEGEN_TESTS) -CTEST_DEPS_codegen-units_$(1)-T-$(2)-H-$(3) = $$(CODEGEN_UNITS_TESTS) -CTEST_DEPS_incremental_$(1)-T-$(2)-H-$(3) = $$(INCREMENTAL_TESTS) -CTEST_DEPS_rmake_$(1)-T-$(2)-H-$(3) = $$(RMAKE_TESTS) \ - $$(CSREQ$(1)_T_$(3)_H_$(3)) $$(SREQ$(1)_T_$(2)_H_$(3)) -CTEST_DEPS_ui_$(1)-T-$(2)-H-$(3) = $$(UI_TESTS) -CTEST_DEPS_mir-opt_$(1)-T-$(2)-H-$(3) = $$(MIR_OPT_TESTS) -CTEST_DEPS_rustdocck_$(1)-T-$(2)-H-$(3) = $$(RUSTDOCCK_TESTS) \ - $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) \ - $$(CSREQ$(1)_T_$(3)_H_$(3)) \ - $$(SREQ$(1)_T_$(3)_H_$(3)) \ - $(S)src/etc/htmldocck.py - -endef - -$(foreach host,$(CFG_HOST), \ - $(eval $(foreach target,$(CFG_TARGET), \ - $(eval $(foreach stage,$(STAGES), \ - $(eval $(call DEF_CTEST_VARS,$(stage),$(target),$(host)))))))) - -define DEF_RUN_COMPILETEST - -CTEST_ARGS$(1)-T-$(2)-H-$(3)-$(4) = \ - $$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3)) \ - --src-base $$(S)src/test/$$(CTEST_SRC_BASE_$(4))/ \ - --build-base $(3)/test/$$(CTEST_BUILD_BASE_$(4))/ \ - --mode $$(CTEST_MODE_$(4)) \ - $$(CTEST_RUNTOOL_$(4)) - -check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) - -# CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4) -# Goal: leave this variable as empty string if we should run the test. -# Otherwise, set it to the reason we are not running the test. -# (Encoded as a separate variable because GNU make does not have a -# good way to express OR on ifeq commands) - -ifneq ($$(CTEST_DISABLE_$(4)),) -# Test suite is disabled for all configured targets. -CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4) := $$(CTEST_DISABLE_$(4)) -else -# else, check if non-self-hosted target (i.e. target not-in hosts) ... -ifeq ($$(findstring $(2),$$(CFG_HOST)),) -# ... if so, then check if this test suite is disabled for non-selfhosts. -ifneq ($$(CTEST_DISABLE_NONSELFHOST_$(4)),) -# Test suite is disabled for this target. -CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4) := $$(CTEST_DISABLE_NONSELFHOST_$(4)) -endif -endif -# Neither DISABLE nor DISABLE_NONSELFHOST is set ==> okay, run the test. -endif - -ifeq ($$(CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4)),) -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - export INCLUDE := $$(CFG_MSVC_INCLUDE_PATH_$$(HOST_$(3))) -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - export LIB := $$(CFG_MSVC_LIB_PATH_$$(HOST_$(3))) -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ - $$(CTEST_DEPS_$(4)_$(1)-T-$(2)-H-$(3)) - @$$(call E, run $(4) [$(2)]: $$<) - $$(Q)touch $$@.start_time - $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ - $$(CTEST_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \ - --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ - && touch -r $$@.start_time $$@ && rm $$@.start_time - -else - -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): - @$$(call E, run $(4) [$(2)]: $$<) - @$$(call E, warning: tests disabled: $$(CTEST_DONT_RUN_$(1)-T-$(2)-H-$(3)-$(4))) - touch $$@ - -endif - -endef - -CTEST_NAMES = rpass rpass-valgrind rpass-full rfail-full cfail-full rfail cfail pfail \ - debuginfo-gdb debuginfo-lldb codegen codegen-units rustdocck incremental \ - rmake ui mir-opt - -$(foreach host,$(CFG_HOST), \ - $(eval $(foreach target,$(CFG_TARGET), \ - $(eval $(foreach stage,$(STAGES), \ - $(eval $(foreach name,$(CTEST_NAMES), \ - $(eval $(call DEF_RUN_COMPILETEST,$(stage),$(target),$(host),$(name)))))))))) - -PRETTY_NAMES = pretty-rpass pretty-rpass-valgrind pretty-rpass-full pretty-rfail-full pretty-rfail \ - pretty-pretty -PRETTY_DEPS_pretty-rpass = $(RPASS_TESTS) -PRETTY_DEPS_pretty-rpass-valgrind = $(RPASS_VALGRIND_TESTS) -PRETTY_DEPS_pretty-rpass-full = $(RPASS_FULL_TESTS) -PRETTY_DEPS_pretty-rfail-full = $(RFAIL_FULL_TESTS) -PRETTY_DEPS_pretty-rfail = $(RFAIL_TESTS) -PRETTY_DEPS_pretty-pretty = $(PRETTY_TESTS) -PRETTY_DIRNAME_pretty-rpass = run-pass -PRETTY_DIRNAME_pretty-rpass-valgrind = run-pass-valgrind -PRETTY_DIRNAME_pretty-rpass-full = run-pass-fulldeps -PRETTY_DIRNAME_pretty-rfail-full = run-fail-fulldeps -PRETTY_DIRNAME_pretty-rfail = run-fail -PRETTY_DIRNAME_pretty-pretty = pretty - -define DEF_PRETTY_FULLDEPS -PRETTY_DEPS$(1)_T_$(2)_H_$(3)_pretty-rpass-full = $$(CSREQ$(1)_T_$(3)_H_$(3)) -PRETTY_DEPS$(1)_T_$(2)_H_$(3)_pretty-rfail-full = $$(CSREQ$(1)_T_$(3)_H_$(3)) -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(eval $(call DEF_PRETTY_FULLDEPS,$(stage),$(target),$(host)))))) - -define DEF_RUN_PRETTY_TEST - -PRETTY_ARGS$(1)-T-$(2)-H-$(3)-$(4) = \ - $$(CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3)) \ - --src-base $$(S)src/test/$$(PRETTY_DIRNAME_$(4))/ \ - --build-base $(3)/test/$$(PRETTY_DIRNAME_$(4))/ \ - --mode pretty - -check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)) - -$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \ - $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ - $$(PRETTY_DEPS_$(4)) \ - $$(PRETTY_DEPS$(1)_T_$(2)_H_$(3)_$(4)) - @$$(call E, run pretty-rpass [$(2)]: $$<) - $$(Q)touch $$@.start_time - $$(Q)$$(call CFG_RUN_CTEST_$(2),$(1),$$<,$(3)) \ - $$(PRETTY_ARGS$(1)-T-$(2)-H-$(3)-$(4)) \ - --logfile $$(call TEST_LOG_FILE,$(1),$(2),$(3),$(4)) \ - && touch -r $$@.start_time $$@ && rm $$@.start_time - -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach pretty-name,$(PRETTY_NAMES), \ - $(eval $(call DEF_RUN_PRETTY_TEST,$(stage),$(target),$(host),$(pretty-name))))))) - - -###################################################################### -# Crate & freestanding documentation tests -###################################################################### - -define DEF_RUSTDOC -RUSTDOC_EXE_$(1)_T_$(2)_H_$(3) := $$(HBIN$(1)_H_$(3))/rustdoc$$(X_$(3)) -RUSTDOC_$(1)_T_$(2)_H_$(3) := $$(RPATH_VAR$(1)_T_$(2)_H_$(3)) $$(RUSTDOC_EXE_$(1)_T_$(2)_H_$(3)) -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(eval $(call DEF_RUSTDOC,$(stage),$(target),$(host)))))) - -# Freestanding - -define DEF_DOC_TEST - -check-stage$(1)-T-$(2)-H-$(3)-doc-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)) - -# If NO_REBUILD is set then break the dependencies on everything but -# the source files so we can test documentation without rebuilding -# rustdoc etc. -ifeq ($(NO_REBUILD),) -DOCTESTDEP_$(1)_$(2)_$(3)_$(4) = \ - $$(DOCFILE_$(4)) \ - $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ - $$(RUSTDOC_EXE_$(1)_T_$(2)_H_$(3)) -else -DOCTESTDEP_$(1)_$(2)_$(3)_$(4) = $$(DOCFILE_$(4)) -endif - -ifeq ($(2),$$(CFG_BUILD)) -$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): $$(DOCTESTDEP_$(1)_$(2)_$(3)_$(4)) - @$$(call E, run doc-$(4) [$(2)]) - $$(Q)touch $$@.start_time - $$(Q)$$(RUSTDOC_$(1)_T_$(2)_H_$(3)) --cfg dox --test $$< \ - --test-args "$$(TESTARGS)" && \ - touch -r $$@.start_time $$@ && rm $$@.start_time -else -$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-$(4)): - touch $$@ -endif -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach docname,$(DOC_NAMES), \ - $(eval $(call DEF_DOC_TEST,$(stage),$(target),$(host),$(docname))))))) - -# Crates - -define DEF_CRATE_DOC_TEST - -# If NO_REBUILD is set then break the dependencies on everything but -# the source files so we can test crate documentation without -# rebuilding any of the parent crates. -ifeq ($(NO_REBUILD),) -CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4) = \ - $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ - $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) \ - $$(RUSTDOC_EXE_$(1)_T_$(2)_H_$(3)) -else -CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4) = $$(RSINPUTS_$(4)) -endif - -check-stage$(1)-T-$(2)-H-$(3)-doc-crate-$(4)-exec: \ - $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)) - -ifeq ($(2),$$(CFG_BUILD)) -$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)): $$(CRATEDOCTESTDEP_$(1)_$(2)_$(3)_$(4)) - @$$(call E, run doc-crate-$(4) [$(2)]) - $$(Q)touch $$@.start_time - $$(Q)CFG_LLVM_LINKAGE_FILE=$$(LLVM_LINKAGE_PATH_$(2)) \ - $$(RUSTDOC_$(1)_T_$(2)_H_$(3)) --test --cfg dox \ - $$(CRATEFILE_$(4)) --test-args "$$(TESTARGS)" && \ - touch -r $$@.start_time $$@ && rm $$@.start_time -else -$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-crate-$(4)): - touch $$@ -endif - -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(foreach crate,$(TEST_DOC_CRATES), \ - $(eval $(call DEF_CRATE_DOC_TEST,$(stage),$(target),$(host),$(crate))))))) - -define DEF_DOC_TEST_ERROR_INDEX - -check-stage$(1)-T-$(2)-H-$(3)-doc-error-index-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),doc-error-index) - -ifeq ($(2),$$(CFG_BUILD)) -$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-error-index): \ - $$(TEST_SREQ$(1)_T_$(2)_H_$(3)) \ - doc/error-index.md - $$(Q)touch $$@.start_time - $$(RUSTDOC_$(1)_T_$(2)_H_$(3)) --test doc/error-index.md - $$(Q)touch -r $$@.start_time $$@ && rm $$@.start_time -else -$$(call TEST_OK_FILE,$(1),$(2),$(3),doc-error-index): - $$(Q)touch $$@ -endif -endef - -$(foreach host,$(CFG_HOST), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach stage,$(STAGES), \ - $(eval $(call DEF_DOC_TEST_ERROR_INDEX,$(stage),$(target),$(host)))))) - -###################################################################### -# Shortcut rules -###################################################################### - -TEST_GROUPS = \ - crates \ - $(foreach crate,$(TEST_CRATES),$(crate)) \ - $(foreach crate,$(TEST_DOC_CRATES),doc-crate-$(crate)) \ - rpass \ - rpass-valgrind \ - rpass-full \ - rfail-full \ - cfail-full \ - rfail \ - cfail \ - pfail \ - rmake \ - rustdocck \ - debuginfo-gdb \ - debuginfo-lldb \ - codegen \ - codegen-units \ - incremental \ - ui \ - doc \ - $(foreach docname,$(DOC_NAMES),doc-$(docname)) \ - pretty \ - pretty-rpass \ - pretty-rpass-valgrind \ - pretty-rpass-full \ - pretty-rfail-full \ - pretty-rfail \ - pretty-pretty \ - mir-opt \ - $(NULL) - -define DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST -check-stage$(1)-T-$(2)-H-$(3): check-stage$(1)-T-$(2)-H-$(3)-exec -endef - -$(foreach stage,$(STAGES), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST,$(stage),$(target),$(host)))))) - -define DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST_AND_GROUP -check-stage$(1)-T-$(2)-H-$(3)-$(4): check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec -endef - -$(foreach stage,$(STAGES), \ - $(foreach target,$(CFG_TARGET), \ - $(foreach host,$(CFG_HOST), \ - $(foreach group,$(TEST_GROUPS), \ - $(eval $(call DEF_CHECK_FOR_STAGE_AND_TARGET_AND_HOST_AND_GROUP,$(stage),$(target),$(host),$(group))))))) - -define DEF_CHECK_FOR_STAGE -check-stage$(1): check-stage$(1)-H-$$(CFG_BUILD) -check-stage$(1)-H-all: $$(foreach target,$$(CFG_TARGET), \ - check-stage$(1)-H-$$(target)) -endef - -$(foreach stage,$(STAGES), \ - $(eval $(call DEF_CHECK_FOR_STAGE,$(stage)))) - -define DEF_CHECK_FOR_STAGE_AND_GROUP -check-stage$(1)-$(2): check-stage$(1)-H-$$(CFG_BUILD)-$(2) -check-stage$(1)-H-all-$(2): $$(foreach target,$$(CFG_TARGET), \ - check-stage$(1)-H-$$(target)-$(2)) -endef - -$(foreach stage,$(STAGES), \ - $(foreach group,$(TEST_GROUPS), \ - $(eval $(call DEF_CHECK_FOR_STAGE_AND_GROUP,$(stage),$(group))))) - - -define DEF_CHECK_FOR_STAGE_AND_HOSTS -check-stage$(1)-H-$(2): $$(foreach target,$$(CFG_TARGET), \ - check-stage$(1)-T-$$(target)-H-$(2)) -endef - -$(foreach stage,$(STAGES), \ - $(foreach host,$(CFG_HOST), \ - $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS,$(stage),$(host))))) - -define DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP -check-stage$(1)-H-$(2)-$(3): $$(foreach target,$$(CFG_TARGET), \ - check-stage$(1)-T-$$(target)-H-$(2)-$(3)) -endef - -$(foreach stage,$(STAGES), \ - $(foreach host,$(CFG_HOST), \ - $(foreach group,$(TEST_GROUPS), \ - $(eval $(call DEF_CHECK_FOR_STAGE_AND_HOSTS_AND_GROUP,$(stage),$(host),$(group)))))) - -define DEF_CHECK_DOC_FOR_STAGE -check-stage$(1)-docs: $$(foreach docname,$$(DOC_NAMES), \ - check-stage$(1)-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-doc-$$(docname)) \ - $$(foreach crate,$$(TEST_DOC_CRATES), \ - check-stage$(1)-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-doc-crate-$$(crate)) \ - check-stage$(1)-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-doc-error-index-exec -endef - -$(foreach stage,$(STAGES), \ - $(eval $(call DEF_CHECK_DOC_FOR_STAGE,$(stage)))) - -define DEF_CHECK_CRATE -check-$(1): check-stage2-T-$$(CFG_BUILD)-H-$$(CFG_BUILD)-$(1)-exec -endef - -$(foreach crate,$(TEST_CRATES), \ - $(eval $(call DEF_CHECK_CRATE,$(crate)))) diff --git a/mk/util.mk b/mk/util.mk deleted file mode 100644 index 918484ac46352..0000000000000 --- a/mk/util.mk +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright 2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -ifdef VERBOSE - Q := - E = -else - Q := @ - E = echo $(1) -endif - -print-%: - @echo $*=$($*) - -S := $(CFG_SRC_DIR) -SREL := $(CFG_SRC_DIR_RELATIVE) diff --git a/src/Cargo.lock b/src/Cargo.lock index 06cf32ad0f6b5..6d814619eb608 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -99,6 +99,7 @@ name = "compiletest" version = "0.0.0" dependencies = [ "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -224,6 +225,14 @@ dependencies = [ "syntax_pos 0.0.0", ] +[[package]] +name = "qemu-test-client" +version = "0.1.0" + +[[package]] +name = "qemu-test-server" +version = "0.1.0" + [[package]] name = "rand" version = "0.0.0" diff --git a/src/Cargo.toml b/src/Cargo.toml index 0db26ea5ae021..d8dedd11f357d 100644 --- a/src/Cargo.toml +++ b/src/Cargo.toml @@ -11,6 +11,8 @@ members = [ "tools/rustbook", "tools/tidy", "tools/build-manifest", + "tools/qemu-test-client", + "tools/qemu-test-server", ] # Curiously, compiletest will segfault if compiled with opt-level=3 on 64-bit diff --git a/src/bootstrap/channel.rs b/src/bootstrap/channel.rs index 585d9f51b92a8..81e745bc76c9e 100644 --- a/src/bootstrap/channel.rs +++ b/src/bootstrap/channel.rs @@ -15,55 +15,45 @@ //! `package_vers`, and otherwise indicating to the compiler what it should //! print out as part of its version information. -use std::fs::File; -use std::io::prelude::*; use std::process::Command; use build_helper::output; use Build; -pub fn collect(build: &mut Build) { - // Currently the canonical source for the release number (e.g. 1.10.0) and - // the prerelease version (e.g. `.1`) is in `mk/main.mk`. We "parse" that - // here to learn about those numbers. - let mut main_mk = String::new(); - t!(t!(File::open(build.src.join("mk/main.mk"))).read_to_string(&mut main_mk)); - let mut release_num = ""; - let mut prerelease_version = ""; - for line in main_mk.lines() { - if line.starts_with("CFG_RELEASE_NUM") { - release_num = line.split('=').skip(1).next().unwrap().trim(); - } - if line.starts_with("CFG_PRERELEASE_VERSION") { - prerelease_version = line.split('=').skip(1).next().unwrap().trim(); - } - } +// The version number +const CFG_RELEASE_NUM: &'static str = "1.17.0"; + +// An optional number to put after the label, e.g. '.2' -> '-beta.2' +// Be sure to make this starts with a dot to conform to semver pre-release +// versions (section 9) +const CFG_PRERELEASE_VERSION: &'static str = ".1"; - build.release_num = release_num.to_string(); - build.prerelease_version = release_num.to_string(); +pub fn collect(build: &mut Build) { + build.release_num = CFG_RELEASE_NUM.to_string(); + build.prerelease_version = CFG_RELEASE_NUM.to_string(); // Depending on the channel, passed in `./configure --release-channel`, // determine various properties of the build. match &build.config.channel[..] { "stable" => { - build.release = release_num.to_string(); + build.release = CFG_RELEASE_NUM.to_string(); build.package_vers = build.release.clone(); build.unstable_features = false; } "beta" => { - build.release = format!("{}-beta{}", release_num, - prerelease_version); + build.release = format!("{}-beta{}", CFG_RELEASE_NUM, + CFG_PRERELEASE_VERSION); build.package_vers = "beta".to_string(); build.unstable_features = false; } "nightly" => { - build.release = format!("{}-nightly", release_num); + build.release = format!("{}-nightly", CFG_RELEASE_NUM); build.package_vers = "nightly".to_string(); build.unstable_features = true; } _ => { - build.release = format!("{}-dev", release_num); + build.release = format!("{}-dev", CFG_RELEASE_NUM); build.package_vers = build.release.clone(); build.unstable_features = true; } diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 19aac0f36bb27..0ebd105513290 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -26,7 +26,7 @@ use build_helper::output; use {Build, Compiler, Mode}; use dist; -use util::{self, dylib_path, dylib_path_var}; +use util::{self, dylib_path, dylib_path_var, exe}; const ADB_TEST_DIR: &'static str = "/data/tmp"; @@ -221,6 +221,12 @@ pub fn compiletest(build: &Build, .arg("--llvm-cxxflags").arg(""); } + if build.qemu_rootfs(target).is_some() { + cmd.arg("--qemu-test-client") + .arg(build.tool(&Compiler::new(0, &build.config.build), + "qemu-test-client")); + } + // Running a C compiler on MSVC requires a few env vars to be set, to be // sure to set them here. // @@ -403,9 +409,9 @@ pub fn krate(build: &Build, dylib_path.insert(0, build.sysroot_libdir(&compiler, target)); cargo.env(dylib_path_var(), env::join_paths(&dylib_path).unwrap()); - if target.contains("android") { - cargo.arg("--no-run"); - } else if target.contains("emscripten") { + if target.contains("android") || + target.contains("emscripten") || + build.qemu_rootfs(target).is_some() { cargo.arg("--no-run"); } @@ -423,6 +429,9 @@ pub fn krate(build: &Build, } else if target.contains("emscripten") { build.run(&mut cargo); krate_emscripten(build, &compiler, target, mode); + } else if build.qemu_rootfs(target).is_some() { + build.run(&mut cargo); + krate_qemu(build, &compiler, target, mode); } else { cargo.args(&build.flags.cmd.test_args()); build.run(&mut cargo); @@ -480,23 +489,46 @@ fn krate_emscripten(build: &Build, compiler: &Compiler, target: &str, mode: Mode) { - let mut tests = Vec::new(); - let out_dir = build.cargo_out(compiler, mode, target); - find_tests(&out_dir, target, &mut tests); - find_tests(&out_dir.join("deps"), target, &mut tests); - - for test in tests { - let test_file_name = test.to_string_lossy().into_owned(); - println!("running {}", test_file_name); - let nodejs = build.config.nodejs.as_ref().expect("nodejs not configured"); - let mut cmd = Command::new(nodejs); - cmd.arg(&test_file_name); - if build.config.quiet_tests { - cmd.arg("--quiet"); - } - build.run(&mut cmd); - } - } + let mut tests = Vec::new(); + let out_dir = build.cargo_out(compiler, mode, target); + find_tests(&out_dir, target, &mut tests); + find_tests(&out_dir.join("deps"), target, &mut tests); + + for test in tests { + let test_file_name = test.to_string_lossy().into_owned(); + println!("running {}", test_file_name); + let nodejs = build.config.nodejs.as_ref().expect("nodejs not configured"); + let mut cmd = Command::new(nodejs); + cmd.arg(&test_file_name); + if build.config.quiet_tests { + cmd.arg("--quiet"); + } + build.run(&mut cmd); + } +} + +fn krate_qemu(build: &Build, + compiler: &Compiler, + target: &str, + mode: Mode) { + let mut tests = Vec::new(); + let out_dir = build.cargo_out(compiler, mode, target); + find_tests(&out_dir, target, &mut tests); + find_tests(&out_dir.join("deps"), target, &mut tests); + + let tool = build.tool(&Compiler::new(0, &build.config.build), + "qemu-test-client"); + for test in tests { + let mut cmd = Command::new(&tool); + cmd.arg("run") + .arg(&test); + if build.config.quiet_tests { + cmd.arg("--quiet"); + } + cmd.args(&build.flags.cmd.test_args()); + build.run(&mut cmd); + } +} fn find_tests(dir: &Path, @@ -516,13 +548,15 @@ fn find_tests(dir: &Path, } } -pub fn android_copy_libs(build: &Build, - compiler: &Compiler, - target: &str) { - if !target.contains("android") { - return +pub fn emulator_copy_libs(build: &Build, compiler: &Compiler, target: &str) { + if target.contains("android") { + android_copy_libs(build, compiler, target) + } else if let Some(s) = build.qemu_rootfs(target) { + qemu_copy_libs(build, compiler, target, s) } +} +fn android_copy_libs(build: &Build, compiler: &Compiler, target: &str) { println!("Android copy libs to emulator ({})", target); build.run(Command::new("adb").arg("wait-for-device")); build.run(Command::new("adb").arg("remount")); @@ -548,6 +582,39 @@ pub fn android_copy_libs(build: &Build, } } +fn qemu_copy_libs(build: &Build, + compiler: &Compiler, + target: &str, + rootfs: &Path) { + println!("QEMU copy libs to emulator ({})", target); + assert!(target.starts_with("arm"), "only works with arm for now"); + t!(fs::create_dir_all(build.out.join("tmp"))); + + // Copy our freshly compiled test server over to the rootfs + let server = build.cargo_out(compiler, Mode::Tool, target) + .join(exe("qemu-test-server", target)); + t!(fs::copy(&server, rootfs.join("testd"))); + + // Spawn the emulator and wait for it to come online + let tool = build.tool(&Compiler::new(0, &build.config.build), + "qemu-test-client"); + build.run(Command::new(&tool) + .arg("spawn-emulator") + .arg(rootfs) + .arg(build.out.join("tmp"))); + + // Push all our dylibs to the emulator + for f in t!(build.sysroot_libdir(compiler, target).read_dir()) { + let f = t!(f); + let name = f.file_name().into_string().unwrap(); + if util::is_dylib(&name) { + build.run(Command::new(&tool) + .arg("push") + .arg(f.path())); + } + } +} + /// Run "distcheck", a 'make check' from a tarball pub fn distcheck(build: &Build) { if build.config.build != "x86_64-unknown-linux-gnu" { diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 776b91028a1a3..81dd42a1e906a 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -382,10 +382,10 @@ fn add_to_sysroot(out_dir: &Path, sysroot_dst: &Path) { /// /// This will build the specified tool with the specified `host` compiler in /// `stage` into the normal cargo output directory. -pub fn tool(build: &Build, stage: u32, host: &str, tool: &str) { - println!("Building stage{} tool {} ({})", stage, tool, host); +pub fn tool(build: &Build, stage: u32, target: &str, tool: &str) { + println!("Building stage{} tool {} ({})", stage, tool, target); - let compiler = Compiler::new(stage, host); + let compiler = Compiler::new(stage, &build.config.build); // FIXME: need to clear out previous tool and ideally deps, may require // isolating output directories or require a pseudo shim step to @@ -396,7 +396,7 @@ pub fn tool(build: &Build, stage: u32, host: &str, tool: &str) { // let out_dir = build.cargo_out(stage, &host, Mode::Librustc, target); // build.clear_if_dirty(&out_dir, &libstd_stamp(build, stage, &host, target)); - let mut cargo = build.cargo(&compiler, Mode::Tool, host, "build"); + let mut cargo = build.cargo(&compiler, Mode::Tool, target, "build"); cargo.arg("--manifest-path") .arg(build.src.join(format!("src/tools/{}/Cargo.toml", tool))); diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 6e077691b3a05..4e67a14345b9e 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -114,6 +114,7 @@ pub struct Target { pub cxx: Option, pub ndk: Option, pub musl_root: Option, + pub qemu_rootfs: Option, } /// Structure of the `config.toml` file that configuration is read from. @@ -222,6 +223,7 @@ struct TomlTarget { cxx: Option, android_ndk: Option, musl_root: Option, + qemu_rootfs: Option, } impl Config { @@ -360,6 +362,7 @@ impl Config { target.cxx = cfg.cxx.clone().map(PathBuf::from); target.cc = cfg.cc.clone().map(PathBuf::from); target.musl_root = cfg.musl_root.clone().map(PathBuf::from); + target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from); config.target_config.insert(triple.clone(), target); } @@ -562,6 +565,12 @@ impl Config { .map(|s| s.to_string()) .collect(); } + "CFG_QEMU_ARMHF_ROOTFS" if value.len() > 0 => { + let target = "arm-unknown-linux-gnueabihf".to_string(); + let target = self.target_config.entry(target) + .or_insert(Target::default()); + target.qemu_rootfs = Some(parse_configure_path(value)); + } _ => {} } } diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index 9327cc0cf7faf..1c3901bf2a143 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -381,13 +381,11 @@ pub fn rust_src(build: &Build) { "README.md", "RELEASES.md", "configure", - "Makefile.in", "x.py", ]; let src_dirs = [ "man", "src", - "mk" ]; let filter_fn = move |path: &Path| { diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index df1218752d1c9..e58dcc9fce92f 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -878,6 +878,17 @@ impl Build { .map(|p| &**p) } + /// Returns the root of the "rootfs" image that this target will be using, + /// if one was configured. + /// + /// If `Some` is returned then that means that tests for this target are + /// emulated with QEMU and binaries will need to be shipped to the emulator. + fn qemu_rootfs(&self, target: &str) -> Option<&Path> { + self.config.target_config.get(target) + .and_then(|t| t.qemu_rootfs.as_ref()) + .map(|p| &**p) + } + /// Path to the python interpreter to use fn python(&self) -> &Path { self.config.python.as_ref().unwrap() diff --git a/src/bootstrap/mk/Makefile.in b/src/bootstrap/mk/Makefile.in index d6f6a7772c9d9..536095503e0da 100644 --- a/src/bootstrap/mk/Makefile.in +++ b/src/bootstrap/mk/Makefile.in @@ -9,11 +9,12 @@ # except according to those terms. include config.mk -include $(CFG_SRC_DIR)mk/util.mk ifdef VERBOSE +Q := BOOTSTRAP_ARGS := -v else +Q := @ BOOTSTRAP_ARGS := endif diff --git a/src/bootstrap/step.rs b/src/bootstrap/step.rs index 3932a7cf8c563..ee5b61062fed8 100644 --- a/src/bootstrap/step.rs +++ b/src/bootstrap/step.rs @@ -295,7 +295,7 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { .dep(|s| s.name("libtest")) .dep(|s| s.name("tool-compiletest").target(s.host).stage(0)) .dep(|s| s.name("test-helpers")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .default(mode != "pretty") // pretty tests don't run everywhere .run(move |s| { check::compiletest(build, &s.compiler(), s.target, mode, dir) @@ -333,7 +333,7 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { .dep(|s| s.name("tool-compiletest").target(s.host).stage(0)) .dep(|s| s.name("test-helpers")) .dep(|s| s.name("debugger-scripts")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .run(move |s| check::compiletest(build, &s.compiler(), s.target, "debuginfo-gdb", "debuginfo")); let mut rule = rules.test("check-debuginfo", "src/test/debuginfo"); @@ -387,14 +387,14 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { for (krate, path, _default) in krates("std_shim") { rules.test(&krate.test_step, path) .dep(|s| s.name("libtest")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Libstd, TestKind::Test, Some(&krate.name))); } rules.test("check-std-all", "path/to/nowhere") .dep(|s| s.name("libtest")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .default(true) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Libstd, TestKind::Test, None)); @@ -403,14 +403,14 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { for (krate, path, _default) in krates("std_shim") { rules.bench(&krate.bench_step, path) .dep(|s| s.name("libtest")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Libstd, TestKind::Bench, Some(&krate.name))); } rules.bench("bench-std-all", "path/to/nowhere") .dep(|s| s.name("libtest")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .default(true) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Libstd, TestKind::Bench, None)); @@ -418,21 +418,21 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { for (krate, path, _default) in krates("test_shim") { rules.test(&krate.test_step, path) .dep(|s| s.name("libtest")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Libtest, TestKind::Test, Some(&krate.name))); } rules.test("check-test-all", "path/to/nowhere") .dep(|s| s.name("libtest")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .default(true) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Libtest, TestKind::Test, None)); for (krate, path, _default) in krates("rustc-main") { rules.test(&krate.test_step, path) .dep(|s| s.name("librustc")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .host(true) .run(move |s| check::krate(build, &s.compiler(), s.target, Mode::Librustc, TestKind::Test, @@ -440,7 +440,7 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { } rules.test("check-rustc-all", "path/to/nowhere") .dep(|s| s.name("librustc")) - .dep(|s| s.name("android-copy-libs")) + .dep(|s| s.name("emulator-copy-libs")) .default(true) .host(true) .run(move |s| check::krate(build, &s.compiler(), s.target, @@ -481,9 +481,34 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { rules.build("test-helpers", "src/rt/rust_test_helpers.c") .run(move |s| native::test_helpers(build, s.target)); - rules.test("android-copy-libs", "path/to/nowhere") + + // Some test suites are run inside emulators, and most of our test binaries + // are linked dynamically which means we need to ship the standard library + // and such to the emulator ahead of time. This step represents this and is + // a dependency of all test suites. + // + // Most of the time this step is a noop (the `check::emulator_copy_libs` + // only does work if necessary). For some steps such as shipping data to + // QEMU we have to build our own tools so we've got conditional dependencies + // on those programs as well. Note that the QEMU client is built for the + // build target (us) and the server is built for the target. + rules.test("emulator-copy-libs", "path/to/nowhere") .dep(|s| s.name("libtest")) - .run(move |s| check::android_copy_libs(build, &s.compiler(), s.target)); + .dep(move |s| { + if build.qemu_rootfs(s.target).is_some() { + s.name("tool-qemu-test-client").target(s.host).stage(0) + } else { + Step::noop() + } + }) + .dep(move |s| { + if build.qemu_rootfs(s.target).is_some() { + s.name("tool-qemu-test-server") + } else { + Step::noop() + } + }) + .run(move |s| check::emulator_copy_libs(build, &s.compiler(), s.target)); rules.test("check-bootstrap", "src/bootstrap") .default(true) @@ -516,6 +541,12 @@ pub fn build_rules<'a>(build: &'a Build) -> Rules { rules.build("tool-build-manifest", "src/tools/build-manifest") .dep(|s| s.name("libstd")) .run(move |s| compile::tool(build, s.stage, s.target, "build-manifest")); + rules.build("tool-qemu-test-server", "src/tools/qemu-test-server") + .dep(|s| s.name("libstd")) + .run(move |s| compile::tool(build, s.stage, s.target, "qemu-test-server")); + rules.build("tool-qemu-test-client", "src/tools/qemu-test-client") + .dep(|s| s.name("libstd")) + .run(move |s| compile::tool(build, s.stage, s.target, "qemu-test-client")); // ======================================================================== // Documentation targets diff --git a/src/ci/docker/armhf-gnu/Dockerfile b/src/ci/docker/armhf-gnu/Dockerfile new file mode 100644 index 0000000000000..e64f65438cbd5 --- /dev/null +++ b/src/ci/docker/armhf-gnu/Dockerfile @@ -0,0 +1,90 @@ +FROM ubuntu:16.04 + +RUN apt-get update -y && apt-get install -y --no-install-recommends \ + bc \ + bzip2 \ + ca-certificates \ + cmake \ + cpio \ + curl \ + file \ + g++ \ + gcc-arm-linux-gnueabihf \ + git \ + libc6-dev \ + libc6-dev-armhf-cross \ + make \ + python2.7 \ + qemu-system-arm \ + xz-utils + +ENV ARCH=arm \ + CROSS_COMPILE=arm-linux-gnueabihf- + +WORKDIR /build + +# Compile the kernel that we're going to run and be emulating with. This is +# basically just done to be compatible with the QEMU target that we're going +# to be using when running tests. If any other kernel works or if any +# other QEMU target works with some other stock kernel, we can use that too! +# +# The `vexpress_config` config file was a previously generated config file for +# the kernel. This file was generated by running `make vexpress_defconfig` +# followed by `make menuconfig` and then enabling the IPv6 protocol page. +COPY vexpress_config /build/.config +RUN curl https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.42.tar.xz | \ + tar xJf - && \ + cd /build/linux-4.4.42 && \ + cp /build/.config . && \ + make -j$(nproc) all && \ + cp arch/arm/boot/zImage /tmp && \ + cd /build && \ + rm -rf linux-4.4.42 + +# Compile an instance of busybox as this provides a lightweight system and init +# binary which we will boot into. Only trick here is configuring busybox to +# build static binaries. +RUN curl https://www.busybox.net/downloads/busybox-1.21.1.tar.bz2 | tar xjf - && \ + cd busybox-1.21.1 && \ + make defconfig && \ + sed -i 's/.*CONFIG_STATIC.*/CONFIG_STATIC=y/' .config && \ + make -j$(nproc) && \ + make install && \ + mv _install /tmp/rootfs && \ + cd /build && \ + rm -rf busybox-1.12.1 + +# Download the ubuntu rootfs, which we'll use as a chroot for all our tests. +WORKDIR /tmp +RUN mkdir rootfs/ubuntu +RUN curl http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04-core-armhf.tar.gz | \ + tar xzf - -C rootfs/ubuntu && \ + cd rootfs && mkdir proc sys dev etc etc/init.d + +# Copy over our init script, which starts up our test server and also a few +# other misc tasks. +COPY rcS rootfs/etc/init.d/rcS +RUN chmod +x rootfs/etc/init.d/rcS + +# Helper to quickly fill the entropy pool in the kernel. +COPY addentropy.c /tmp/ +RUN arm-linux-gnueabihf-gcc addentropy.c -o rootfs/addentropy -static + +# TODO: What is this?! +RUN curl -O http://ftp.nl.debian.org/debian/dists/jessie/main/installer-armhf/current/images/device-tree/vexpress-v2p-ca15-tc1.dtb + +ENV SCCACHE_DIGEST=7237e38e029342fa27b7ac25412cb9d52554008b12389727320bd533fd7f05b6a96d55485f305caf95e5c8f5f97c3313e10012ccad3e752aba2518f3522ba783 +RUN curl -L https://api.pub.build.mozilla.org/tooltool/sha512/$SCCACHE_DIGEST | \ + tar xJf - -C /usr/local/bin --strip-components=1 + +RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \ + dpkg -i dumb-init_*.deb && \ + rm dumb-init_*.deb +ENTRYPOINT ["/usr/bin/dumb-init", "--"] + +ENV RUST_CONFIGURE_ARGS \ + --target=arm-unknown-linux-gnueabihf \ + --qemu-armhf-rootfs=/tmp/rootfs +ENV SCRIPT python2.7 ../x.py test --target arm-unknown-linux-gnueabihf + +ENV NO_CHANGE_USER=1 diff --git a/src/ci/docker/armhf-gnu/addentropy.c b/src/ci/docker/armhf-gnu/addentropy.c new file mode 100644 index 0000000000000..8975739e3c030 --- /dev/null +++ b/src/ci/docker/armhf-gnu/addentropy.c @@ -0,0 +1,43 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#include +#include +#include +#include +#include +#include +#include + +#define N 2048 + +struct entropy { + int ent_count; + int size; + unsigned char data[N]; +}; + +int main() { + struct entropy buf; + ssize_t n; + + int random_fd = open("/dev/random", O_RDWR); + assert(random_fd >= 0); + + while ((n = read(0, &buf.data, N)) > 0) { + buf.ent_count = n * 8; + buf.size = n; + if (ioctl(random_fd, RNDADDENTROPY, &buf) != 0) { + perror("failed to add entropy"); + } + } + + return 0; +} diff --git a/src/ci/docker/armhf-gnu/rcS b/src/ci/docker/armhf-gnu/rcS new file mode 100644 index 0000000000000..3c29bedc13c99 --- /dev/null +++ b/src/ci/docker/armhf-gnu/rcS @@ -0,0 +1,28 @@ +#!/bin/sh +mount -t proc none /proc +mount -t sysfs none /sys +/sbin/mdev -s + +# fill up our entropy pool, if we don't do this then anything with a hash map +# will likely block forever as the kernel is pretty unlikely to have enough +# entropy. +/addentropy < /addentropy +cat /dev/urandom | head -n 2048 | /addentropy + +# Set up IP that qemu expects. This confgures eth0 with the public IP that QEMU +# will communicate to as well as the loopback 127.0.0.1 address. +ifconfig eth0 10.0.2.15 +ifconfig lo up + +# Configure DNS resolution of 'localhost' to work +echo 'hosts: files dns' >> /ubuntu/etc/nsswitch.conf +echo '127.0.0.1 localhost' >> /ubuntu/etc/hosts + +# prepare the chroot +mount -t proc proc /ubuntu/proc/ +mount --rbind /sys /ubuntu/sys/ +mount --rbind /dev /ubuntu/dev/ + +# Execute our `testd` inside the ubuntu chroot +cp /testd /ubuntu/testd +chroot /ubuntu /testd & diff --git a/src/ci/docker/armhf-gnu/vexpress_config b/src/ci/docker/armhf-gnu/vexpress_config new file mode 100644 index 0000000000000..35835cff35dcf --- /dev/null +++ b/src/ci/docker/armhf-gnu/vexpress_config @@ -0,0 +1,2910 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 4.4.42 Kernel Configuration +# +CONFIG_ARM=y +CONFIG_ARM_HAS_SG_CHAIN=y +CONFIG_MIGHT_HAVE_PCI=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_NO_IOPORT_MAP=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_GENERIC_BUG=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_FHANDLE is not set +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_HANDLE_DOMAIN_IRQ=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ_FULL is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +# CONFIG_TASKS_RCU is not set +CONFIG_RCU_STALL_COMMON=y +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_RCU_EXPEDITE_BOOT is not set +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_CGROUP_FREEZER is not set +# CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_DEVICE is not set +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +# CONFIG_CGROUP_CPUACCT is not set +# CONFIG_MEMCG is not set +# CONFIG_CGROUP_PERF is not set +# CONFIG_CGROUP_SCHED is not set +# CONFIG_BLK_CGROUP is not set +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_BPF=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +CONFIG_SYSFS_SYSCALL=y +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +# CONFIG_USERFAULTFD is not set +CONFIG_MEMBARRIER=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_SYSTEM_DATA_VERIFICATION is not set +CONFIG_PROFILING=y +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +# CONFIG_UPROBES is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_IDLE_POLL_SETUP=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CC_STACKPROTECTOR_NONE=y +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OLD_SIGACTION=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +# CONFIG_LBDAF is not set +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_CMDLINE_PARSER is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_DEFAULT_NOOP=y +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=y +CONFIG_FREEZER=y + +# +# System Type +# +CONFIG_MMU=y +CONFIG_ARCH_MULTIPLATFORM=y +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP1 is not set + +# +# Multiple platform selection +# + +# +# CPU Core family selection +# +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_MULTI_V6_V7=y +# CONFIG_ARCH_MULTI_CPU_AUTO is not set +# CONFIG_ARCH_VIRT is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCM is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_DIGICOLOR is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MEDIATEK is not set + +# +# TI OMAP/AM/DM/DRA Family +# +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_SOC_OMAP5 is not set +# CONFIG_SOC_AM33XX is not set +# CONFIG_SOC_AM43XX is not set +# CONFIG_SOC_DRA7XX is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_PLAT_SPEAR is not set +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_SHMOBILE_MULTI is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_U8500 is not set +CONFIG_ARCH_VEXPRESS=y +CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y +CONFIG_ARCH_VEXPRESS_DCSCB=y +CONFIG_ARCH_VEXPRESS_SPC=y +CONFIG_ARCH_VEXPRESS_TC2_PM=y +# CONFIG_ARCH_WM8850 is not set +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQ is not set +CONFIG_PLAT_VERSATILE=y + +# +# Processor Type +# +CONFIG_CPU_V7=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +# CONFIG_ARM_LPAE is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_VIRT_EXT=y +CONFIG_SWP_EMULATE=y +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_KUSER_HELPERS=y +CONFIG_VDSO=y +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_CACHE_L2X0=y +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set +CONFIG_PL310_ERRATA_753970=y +# CONFIG_PL310_ERRATA_769419 is not set +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y +# CONFIG_ARM_KERNMEM_PERMS is not set +CONFIG_MULTI_IRQ_HANDLER=y +# CONFIG_ARM_ERRATA_430973 is not set +CONFIG_ARM_ERRATA_643719=y +CONFIG_ARM_ERRATA_720789=y +# CONFIG_ARM_ERRATA_754322 is not set +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_ERRATA_775420 is not set +# CONFIG_ARM_ERRATA_798181 is not set +# CONFIG_ARM_ERRATA_773022 is not set +CONFIG_ICST=y + +# +# Bus support +# +# CONFIG_PCI is not set +# CONFIG_PCI_DOMAINS_GENERIC is not set +# CONFIG_PCI_SYSCALL is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_HAVE_SMP=y +CONFIG_SMP=y +CONFIG_SMP_ON_UP=y +CONFIG_ARM_CPU_TOPOLOGY=y +# CONFIG_SCHED_MC is not set +# CONFIG_SCHED_SMT is not set +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_HAVE_ARM_TWD=y +CONFIG_MCPM=y +# CONFIG_BIG_LITTLE is not set +# CONFIG_VMSPLIT_3G is not set +# CONFIG_VMSPLIT_3G_OPT is not set +CONFIG_VMSPLIT_2G=y +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0x80000000 +CONFIG_NR_CPUS=8 +CONFIG_HOTPLUG_CPU=y +CONFIG_ARM_PSCI=y +CONFIG_ARCH_NR_GPIO=0 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_HZ_FIXED=0 +CONFIG_HZ_100=y +# CONFIG_HZ_200 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +# CONFIG_SCHED_HRTICK is not set +# CONFIG_THUMB2_KERNEL is not set +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +CONFIG_HAVE_ARCH_PFN_VALID=y +# CONFIG_HIGHMEM is not set +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +# CONFIG_ARM_MODULE_PLTS is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_NO_BOOTMEM=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MEMORY_BALLOON=y +CONFIG_BALLOON_COMPACTION=y +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +CONFIG_CMA=y +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_AREAS=7 +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +CONFIG_SWIOTLB=y +CONFIG_IOMMU_HELPER=y +# CONFIG_XEN is not set + +# +# Boot options +# +CONFIG_USE_OF=y +CONFIG_ATAGS=y +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +# CONFIG_ARM_APPENDED_DTB is not set +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_CMDLINE_FROM_BOOTLOADER=y +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_AUTO_ZRELADDR=y + +# +# CPU Power Management +# + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y + +# +# ARM CPU Idle Drivers +# +# CONFIG_ARM_CPUIDLE is not set +# CONFIG_ARM_BIG_LITTLE_CPUIDLE is not set +# CONFIG_ARM_HIGHBANK_CPUIDLE is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y +# CONFIG_KERNEL_MODE_NEON is not set + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_SCRIPT=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_APM_EMULATION is not set +CONFIG_PM_OPP=y +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_CPU_PM=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=m +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=m +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_GRE is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NET_PTP_CLASSIFY is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_MMAP is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +# CONFIG_BPF_JIT is not set +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_WIRELESS is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_RFKILL_REGULATOR is not set +CONFIG_NET_9P=y +CONFIG_NET_9P_VIRTIO=y +# CONFIG_NET_9P_DEBUG is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_LWTUNNEL is not set +CONFIG_HAVE_BPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y +# CONFIG_TEGRA_AHB is not set + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +# CONFIG_DEVTMPFS_MOUNT is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_REGMAP=y +CONFIG_REGMAP_MMIO=y +# CONFIG_DMA_SHARED_BUFFER is not set +# CONFIG_DMA_CMA is not set + +# +# Bus devices +# +CONFIG_ARM_CCI=y +CONFIG_ARM_CCI400_COMMON=y +# CONFIG_ARM_CCI400_PMU is not set +CONFIG_ARM_CCI400_PORT_CTRL=y +# CONFIG_ARM_CCI500_PMU is not set +# CONFIG_ARM_CCN is not set +# CONFIG_BRCMSTB_GISB_ARB is not set +CONFIG_VEXPRESS_CONFIG=y +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +CONFIG_MTD_RAM=y +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_PLATRAM=y + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_LPDDR2_NVM is not set +# CONFIG_MTD_SPI_NOR is not set +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +# CONFIG_MTD_UBI_BLOCK is not set +CONFIG_DTC=y +CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_MDIO=y +CONFIG_OF_MTD=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +CONFIG_VIRTIO_BLK=y +# CONFIG_BLK_DEV_RBD is not set + +# +# Misc devices +# +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1780 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +# CONFIG_ARM_CHARLCD is not set +# CONFIG_BMP085_I2C is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_SRAM is not set +CONFIG_VEXPRESS_SYSCFG=y +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set + +# +# Texas Instruments shared transport line discipline +# +# CONFIG_TI_ST is not set +# CONFIG_SENSORS_LIS3_I2C is not set + +# +# Altera FPGA firmware download module +# +# CONFIG_ALTERA_STAPL is not set + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# +# CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_KERNEL_API is not set +# CONFIG_CXL_EEH is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_VIRTIO=y +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_HAVE_PATA_PLATFORM=y +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +# CONFIG_SATA_PMP is not set + +# +# Controllers with non-SFF native interface +# +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_AHCI_CEVA is not set +# CONFIG_AHCI_QORIQ is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# + +# +# PATA SFF controllers with BMDMA +# + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_PLATFORM is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +CONFIG_VIRTIO_NET=y +# CONFIG_NLMON is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +CONFIG_ETHERNET=y +# CONFIG_ALTERA_TSE is not set +CONFIG_NET_VENDOR_ARC=y +# CONFIG_ARC_EMAC is not set +# CONFIG_EMAC_ROCKCHIP is not set +# CONFIG_NET_VENDOR_AURORA is not set +CONFIG_NET_CADENCE=y +# CONFIG_MACB is not set +CONFIG_NET_VENDOR_BROADCOM=y +# CONFIG_B44 is not set +# CONFIG_BCMGENET is not set +# CONFIG_SYSTEMPORT is not set +CONFIG_NET_VENDOR_CIRRUS=y +# CONFIG_CS89x0 is not set +# CONFIG_DM9000 is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_EZCHIP=y +# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set +CONFIG_NET_VENDOR_FARADAY=y +# CONFIG_FTMAC100 is not set +# CONFIG_FTGMAC100 is not set +CONFIG_NET_VENDOR_HISILICON=y +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HIP04_ETH is not set +# CONFIG_HNS is not set +# CONFIG_HNS_DSAF is not set +# CONFIG_HNS_ENET is not set +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_MARVELL=y +# CONFIG_MVMDIO is not set +CONFIG_NET_VENDOR_MICREL=y +# CONFIG_KS8851_MLL is not set +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_8390=y +# CONFIG_AX88796 is not set +# CONFIG_ETHOC is not set +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_NET_VENDOR_SAMSUNG=y +# CONFIG_SXGBE_ETH is not set +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=y +# CONFIG_SMC911X is not set +CONFIG_SMSC911X=y +# CONFIG_SMSC911X_ARCH_HOOKS is not set +CONFIG_NET_VENDOR_STMICRO=y +# CONFIG_STMMAC_ETH is not set +CONFIG_NET_VENDOR_SYNOPSYS=y +# CONFIG_SYNOPSYS_DWC_ETH_QOS is not set +CONFIG_NET_VENDOR_VIA=y +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_NET_VENDOR_WIZNET=y +# CONFIG_WIZNET_W5100 is not set +# CONFIG_WIZNET_W5300 is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_AMD_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_LAN78XX is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP11XX is not set +# CONFIG_KEYBOARD_BCM is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_CYAPA is not set +# CONFIG_MOUSE_ELAN_I2C is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_AMBAKMI=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=16 +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_DEVMEM=y +CONFIG_DEVKMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_BCM63XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_ST_ASC is not set +# CONFIG_SERIAL_STM32 is not set +CONFIG_HVC_DRIVER=y +# CONFIG_HVC_DCC is not set +CONFIG_VIRTIO_CONSOLE=y +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +CONFIG_HW_RANDOM_VIRTIO=y +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_XILLYBUS is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +# CONFIG_I2C_CHARDEV is not set +# CONFIG_I2C_MUX is not set +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_ALGOBIT=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_EMEV2 is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +CONFIG_I2C_VERSATILE=y +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set + +# +# PPS support +# +# CONFIG_PPS is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_OF_GPIO=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_GENERIC=y + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_GENERIC_PLATFORM=y +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_ZEVIO is not set +# CONFIG_GPIO_ZX is not set + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_SX150X is not set + +# +# MFD GPIO expanders +# + +# +# SPI or I2C GPIO expanders +# +# CONFIG_GPIO_MCP23S08 is not set + +# +# USB GPIO expanders +# +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_BQ25890 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_BRCMSTB is not set +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_VERSATILE is not set +CONFIG_POWER_RESET_VEXPRESS=y +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set +# CONFIG_POWER_AVS is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_HTU21 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +CONFIG_SENSORS_VEXPRESS=y +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y + +# +# Broadcom specific AMBA +# +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_AXP20X is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_INTEL_SOC_PMIC is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_UCB1400_CORE is not set +# CONFIG_MFD_PM8921_CORE is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RTSX_USB is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +CONFIG_MFD_VEXPRESS_SYSREG=y +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ANATOP is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_GPIO is not set +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_MT6311 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +CONFIG_REGULATOR_VEXPRESS=y +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_DRM is not set + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CMDLINE=y +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +CONFIG_FB_ARMCLCD=y +CONFIG_PLAT_VERSATILE_CLCD=y +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_VGASTATE is not set +CONFIG_VIDEOMODE_HELPERS=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_LOGO_LINUX_CLUT224=y +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_VMASTER=y +# CONFIG_SND_RAWMIDI_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SND_EMU10K1_SEQ is not set +CONFIG_SND_AC97_CODEC=y +# CONFIG_SND_DRIVERS is not set + +# +# HD-Audio +# +CONFIG_SND_HDA_PREALLOC_SIZE=64 +CONFIG_SND_ARM=y +CONFIG_SND_ARMAACI=y +CONFIG_SND_USB=y +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_USB_POD is not set +# CONFIG_SND_USB_PODHD is not set +# CONFIG_SND_USB_TONEPORT is not set +# CONFIG_SND_USB_VARIAX is not set +# CONFIG_SND_SOC is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_AC97_BUS=y + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACRUX is not set +CONFIG_HID_APPLE=y +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +# CONFIG_HID_BETOP_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_CORSAIR is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CP2112 is not set +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +# CONFIG_DRAGONRISE_FF is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +CONFIG_HID_GYRATION=y +# CONFIG_HID_ICADE is not set +CONFIG_HID_TWINHAN=y +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +CONFIG_HID_LOGITECH=y +# CONFIG_HID_LOGITECH_HIDPP is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +# CONFIG_HID_MAGICMOUSE is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +CONFIG_HID_NTRIG=y +# CONFIG_HID_ORTEK is not set +CONFIG_HID_PANTHERLORD=y +# CONFIG_PANTHERLORD_FF is not set +# CONFIG_HID_PENMOUNT is not set +CONFIG_HID_PETALYNX=y +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +# CONFIG_SONY_FF is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEELSERIES is not set +CONFIG_HID_SUNPLUS=y +# CONFIG_HID_RMI is not set +CONFIG_HID_GREENASIA=y +# CONFIG_GREENASIA_FF is not set +CONFIG_HID_SMARTJOYPLUS=y +# CONFIG_SMARTJOYPLUS_FF is not set +# CONFIG_HID_TIVO is not set +CONFIG_HID_TOPSEED=y +# CONFIG_HID_THINGM is not set +CONFIG_HID_THRUSTMASTER=y +# CONFIG_THRUSTMASTER_FF is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +CONFIG_HID_ZEROPLUS=y +# CONFIG_ZEROPLUS_FF is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_ULPI_BUS is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_XHCI_HCD is not set +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +CONFIG_USB_ISP1760=y +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1760_HOST_ROLE=y + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_CHAOSKEY is not set + +# +# USB Physical Layer drivers +# +# CONFIG_USB_PHY is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_AM335X_PHY_USB is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +# CONFIG_USB_GADGET is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_UWB is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +CONFIG_MMC_ARMMMCI=y +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_MTK is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_CLASS_FLASH is not set + +# +# LED drivers +# +# CONFIG_LEDS_BCM6328 is not set +# CONFIG_LEDS_BCM6358 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_SYSCON is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_TIMER is not set +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +CONFIG_LEDS_TRIGGER_CPU=y +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12057 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RV8803 is not set + +# +# SPI RTC drivers +# + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +CONFIG_RTC_DRV_PL031=y +# CONFIG_RTC_DRV_SNVS is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRTIO=y + +# +# Virtio drivers +# +CONFIG_VIRTIO_BALLOON=y +# CONFIG_VIRTIO_INPUT is not set +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y + +# +# Microsoft Hyper-V guest support +# +# CONFIG_STAGING is not set +# CONFIG_CHROME_PLATFORMS is not set +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_CLK_SP810=y +CONFIG_CLK_VEXPRESS_OSC=y +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI514 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMMON_CLK_CDCE925 is not set +# CONFIG_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_PXA is not set +# CONFIG_COMMON_CLK_CDCE706 is not set + +# +# Hardware Spinlock drivers +# + +# +# Clock Source drivers +# +CONFIG_CLKSRC_OF=y +CONFIG_CLKSRC_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_GLOBAL_TIMER=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y +# CONFIG_ATMEL_PIT is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_EM_TIMER_STI is not set +CONFIG_CLKSRC_VERSATILE=y +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +# CONFIG_ARM_SMMU is not set + +# +# Remoteproc drivers +# +# CONFIG_STE_MODEM_RPROC is not set + +# +# Rpmsg drivers +# + +# +# SOC (System On Chip) specific Drivers +# +# CONFIG_SOC_BRCMSTB is not set +# CONFIG_SUNXI_SRAM is not set +# CONFIG_SOC_TI is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_PWM is not set +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +CONFIG_ARM_PMU=y +# CONFIG_RAS is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# CONFIG_NVMEM is not set +# CONFIG_STM is not set +# CONFIG_STM_DUMMY is not set +# CONFIG_STM_SOURCE_CONSOLE is not set +# CONFIG_INTEL_TH is not set + +# +# FPGA Configuration Support +# +# CONFIG_FPGA is not set + +# +# Firmware Drivers +# +CONFIG_ARM_PSCI_FW=y +# CONFIG_FIRMWARE_MEMMAP is not set + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +# CONFIG_EXT4_ENCRYPTION is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_TMPFS_XATTR is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_UBIFS_FS=y +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +# CONFIG_LOGFS is not set +CONFIG_CRAMFS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_FILE_CACHE=y +# CONFIG_SQUASHFS_FILE_DIRECT is not set +CONFIG_SQUASHFS_DECOMP_SINGLE=y +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set +# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZ4 is not set +CONFIG_SQUASHFS_LZO=y +# CONFIG_SQUASHFS_XZ is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_SWAP is not set +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_9P_FS=y +# CONFIG_9P_FS_POSIX_ACL is not set +# CONFIG_9P_FS_SECURITY is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_GDB_SCRIPTS is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_PAGE_OWNER is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +CONFIG_DEBUG_KERNEL=y + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_LOCKUP_DETECTOR is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHED_INFO is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +# CONFIG_DEBUG_TIMEKEEPING is not set +# CONFIG_TIMER_STATS is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_STACKTRACE is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_PROVE_RCU is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_TORTURE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACE_CLOCK=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +# CONFIG_FTRACE_SYSCALLS is not set +# CONFIG_TRACER_SNAPSHOT is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_UPROBE_EVENT is not set +# CONFIG_PROBE_EVENTS is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +CONFIG_TRACING_EVENTS_GPIO=y + +# +# Runtime Testing +# +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_MEMTEST is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_ARM_PTDUMP is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_ARM_UNWIND=y +CONFIG_DEBUG_USER=y +# CONFIG_DEBUG_LL is not set +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" +# CONFIG_DEBUG_UART_8250 is not set +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_DEBUG_SET_MODULE_RONX is not set +# CONFIG_CORESIGHT is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=m +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=m +CONFIG_CRYPTO_PCOMP2=y +CONFIG_CRYPTO_AKCIPHER2=y +# CONFIG_CRYPTO_RSA is not set +CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_SEQIV is not set +CONFIG_CRYPTO_ECHAINIV=m + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_HMAC=m +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=m +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +# CONFIG_CRYPTO_ZLIB is not set +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=m +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=m +CONFIG_CRYPTO_JITTERENTROPY=m +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +# CONFIG_CRYPTO_HW is not set + +# +# Certificates for signature checking +# +# CONFIG_ARM_CRYPTO is not set +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IO=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_BCJ=y +# CONFIG_XZ_DEC_TEST is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_BZIP2=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_DECOMPRESS_XZ=y +CONFIG_DECOMPRESS_LZO=y +CONFIG_DECOMPRESS_LZ4=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_DMA=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +CONFIG_LIBFDT=y +CONFIG_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_SG_SPLIT is not set +CONFIG_ARCH_HAS_SG_CHAIN=y +# CONFIG_VIRTUALIZATION is not set diff --git a/src/ci/docker/x86_64-gnu-make/Dockerfile b/src/ci/docker/x86_64-gnu-make/Dockerfile deleted file mode 100644 index c6071d704f5f6..0000000000000 --- a/src/ci/docker/x86_64-gnu-make/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - g++ \ - make \ - file \ - curl \ - ca-certificates \ - python2.7 \ - git \ - cmake \ - sudo \ - gdb \ - xz-utils - -ENV SCCACHE_DIGEST=7237e38e029342fa27b7ac25412cb9d52554008b12389727320bd533fd7f05b6a96d55485f305caf95e5c8f5f97c3313e10012ccad3e752aba2518f3522ba783 -RUN curl -L https://api.pub.build.mozilla.org/tooltool/sha512/$SCCACHE_DIGEST | \ - tar xJf - -C /usr/local/bin --strip-components=1 - -RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \ - dpkg -i dumb-init_*.deb && \ - rm dumb-init_*.deb -ENTRYPOINT ["/usr/bin/dumb-init", "--"] - -ENV RUST_CONFIGURE_ARGS --build=x86_64-unknown-linux-gnu --disable-rustbuild -ENV RUST_CHECK_TARGET check diff --git a/src/ci/run.sh b/src/ci/run.sh index 3a2cc47df79bf..960acc4de7d87 100755 --- a/src/ci/run.sh +++ b/src/ci/run.sh @@ -11,11 +11,13 @@ set -e -if [ "$LOCAL_USER_ID" != "" ]; then - useradd --shell /bin/bash -u $LOCAL_USER_ID -o -c "" -m user - export HOME=/home/user - unset LOCAL_USER_ID - exec su --preserve-environment -c "env PATH=$PATH \"$0\"" user +if [ "$NO_CHANGE_USER" = "" ]; then + if [ "$LOCAL_USER_ID" != "" ]; then + useradd --shell /bin/bash -u $LOCAL_USER_ID -o -c "" -m user + export HOME=/home/user + unset LOCAL_USER_ID + exec su --preserve-environment -c "env PATH=$PATH \"$0\"" user + fi fi RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-sccache" diff --git a/src/doc/book/lifetimes.md b/src/doc/book/lifetimes.md index 546e66fc8ac02..2bf2beb8b7421 100644 --- a/src/doc/book/lifetimes.md +++ b/src/doc/book/lifetimes.md @@ -108,7 +108,7 @@ fn skip_prefix<'a, 'b>(line: &'a str, prefix: &'b str) -> &'a str { Let's examine the changes without going too deep into the syntax for now - we'll get to that later. The first change was adding the `<'a, 'b>` after the -method name. This introduces two lifetime parameters: `'a` and `'b`. Next each +method name. This introduces two lifetime parameters: `'a` and `'b`. Next, each reference in the function signature was associated with one of the lifetime parameters by adding the lifetime name after the `&`. This tells the compiler how the lifetimes between different references are related. diff --git a/src/doc/book/structs.md b/src/doc/book/structs.md index cfd00cf997e0b..dcf74cbb0a7c4 100644 --- a/src/doc/book/structs.md +++ b/src/doc/book/structs.md @@ -117,6 +117,30 @@ fn main() { } ``` +Initialization of a data structure (struct, enum, union) can be simplified if +fields of the data structure are initialized with variables which has same +names as the fields. + +``` +#![feature(field_init_shorthand)] + +#[derive(Debug)] +struct Person<'a> { + name: &'a str, + age: u8 +} + +fn main() { + // Create struct with field init shorthand + let name = "Peter"; + let age = 27; + let peter = Person { name, age }; + + // Print debug struct + println!("{:?}", peter); +} +``` + # Update syntax A `struct` can include `..` to indicate that you want to use a copy of some diff --git a/src/doc/index.md b/src/doc/index.md index 71dfcf0b067ec..144b786f58d24 100644 --- a/src/doc/index.md +++ b/src/doc/index.md @@ -6,32 +6,44 @@ nav { } -This is an index of the documentation included with the Rust -compiler. For more comprehensive documentation see [the -website](https://www.rust-lang.org). +This page is an overview of the documentation included with your Rust install. +Other unofficial documentation may exist elsewhere; for example, the [Rust +Learning] project collects documentation from the community, and [Docs.rs] +builds documentation for individual Rust packages. -[**The Rust Programming Language**][book]. Also known as "The Book", -The Rust Programming Language is the most comprehensive resource for -all topics related to Rust, and is the primary official document of -the language. +## API Documentation -[**The Rust Reference**][ref]. While Rust does not have a -specification, the reference tries to describe its working in -detail. It is accurate, but not necessarily complete. +Rust provides a standard library with a number of features; [we host its +documentation here][api]. -[**Standard Library API Reference**][api]. Documentation for the -standard library. +## Reference Documentation -[**The Rustonomicon**][nomicon]. An entire book dedicated to -explaining how to write unsafe Rust code. It is for advanced Rust -programmers. +Rust does not yet have a formal specification, but we have [a reference document +][ref]. It is guaranteed to be accurate, but not complete. We now have a +policy that all new features must be included in the reference before +stabilization; however, we are still back-filling things that landed before +then. That work is being tracked [here][38643]. -[**Compiler Error Index**][err]. Extended explanations of -the errors produced by the Rust compiler. +## Extended Error Documentation -[book]: book/index.html -[ref]: reference.html +Many of Rust's errors come with error codes, and you can request extended +diagnostics from the compiler on those errors. We also [have the text of those +extended errors on the web][err], if you prefer to read them that way. + +## The Rust Bookshelf + +Rust provides a number of book-length sets of documentation, collectively +nicknamed 'The Rust Bookshelf.' + +* [The Rust Programming Language][book] teaches you how to program in Rust. +* [The Rustonomicon][nomicon] is your guidebook to the dark arts of unsafe Rust. + +[Rust Learning]: https://github.com/ctjhoa/rust-learning +[Docs.rs]: https://docs.rs/ [api]: std/index.html -[nomicon]: nomicon/index.html +[ref]: reference.html +[38643]: https://github.com/rust-lang/rust/issues/38643 [err]: error-index.html +[book]: book/index.html +[nomicon]: nomicon/index.html diff --git a/src/doc/reference.md b/src/doc/reference.md index dfdfe32882028..f9013490418f3 100644 --- a/src/doc/reference.md +++ b/src/doc/reference.md @@ -2114,10 +2114,15 @@ Sometimes one wants to have different compiler outputs from the same code, depending on build target, such as targeted operating system, or to enable release builds. -There are two kinds of configuration options, one that is either defined or not -(`#[cfg(foo)]`), and the other that contains a string that can be checked -against (`#[cfg(bar = "baz")]`). Currently, only compiler-defined configuration -options can have the latter form. +Configuration options are boolean (on or off) and are named either with a +single identifier (e.g. `foo`) or an identifier and a string (e.g. `foo = "bar"`; +the quotes are required and spaces around the `=` are unimportant). Note that +similarly-named options, such as `foo`, `foo="bar"` and `foo="baz"` may each be set +or unset independently. + +Configuration options are either provided by the compiler or passed in on the +command line using `--cfg` (e.g. `rustc main.rs --cfg foo --cfg 'bar="baz"'`). +Rust code then checks for their presence using the `#[cfg(...)]` attribute: ``` // The function is only included in the build when compiling for OSX @@ -2196,7 +2201,10 @@ You can also set another attribute based on a `cfg` variable with `cfg_attr`: #[cfg_attr(a, b)] ``` -Will be the same as `#[b]` if `a` is set by `cfg`, and nothing otherwise. +This is the same as `#[b]` if `a` is set by `cfg`, and nothing otherwise. + +Lastly, configuration options can be used in expressions by invoking the `cfg!` +macro: `cfg!(a)` evaluates to `true` if `a` is set, and `false` otherwise. ### Lint check attributes @@ -2757,6 +2765,28 @@ let base = Point3d {x: 1, y: 2, z: 3}; Point3d {y: 0, z: 10, .. base}; ``` +#### Struct field init shorthand + +When initializing a data structure (struct, enum, union) with named fields, +allow writing `fieldname` as a shorthand for `fieldname: fieldname`. This +allows a compact syntax for initialization, with less duplication. + +In the initializer for a `struct` with named fields, a `union` with named +fields, or an enum variant with named fields, accept an identifier `field` as a +shorthand for `field: field`. + +Example: + +``` +# #![feature(field_init_shorthand)] +# struct Point3d { x: i32, y: i32, z: i32 } +# let x = 0; +# let y_value = 0; +# let z = 0; +Point3d { x: x, y: y_value, z: z }; +Point3d { x, y: y_value, z }; +``` + ### Block expressions A _block expression_ is similar to a module in terms of the declarations that diff --git a/src/etc/Dockerfile b/src/etc/Dockerfile deleted file mode 100644 index 83d54789ff357..0000000000000 --- a/src/etc/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM ubuntu:xenial - -# curl -# Download stage0, see src/bootstrap/bootstrap.py -# g++ -# Compile LLVM binding in src/rustllvm -# gdb -# Used to run tests in src/test/debuginfo -# git -# Get commit hash and commit date in version string -# make -# Run build scripts in mk -# libedit-dev zlib1g-dev -# LLVM dependencies as packaged in Ubuntu -# (They are optional, but Ubuntu package enables them) -# llvm-3.7-dev (installed by llvm-3.7-tools) -# LLVM -# llvm-3.7-tools -# FileCheck is used to run tests in src/test/codegen - -RUN apt-get update && apt-get -y install \ - curl g++ gdb git make \ - libedit-dev zlib1g-dev \ - llvm-3.7-tools cmake - -RUN mkdir /build -WORKDIR /build diff --git a/src/etc/apple-darwin.supp b/src/etc/apple-darwin.supp deleted file mode 100644 index 50e30caa2b34b..0000000000000 --- a/src/etc/apple-darwin.supp +++ /dev/null @@ -1,75 +0,0 @@ -{ - osx-frameworks.rs-fails-otherwise-1 - Memcheck:Leak - match-leak-kinds: definite,possible - fun:malloc - ... - fun:__CFInitialize - ... -} - -{ - osx-frameworks.rs-fails-otherwise-2 - Memcheck:Leak - match-leak-kinds: possible - fun:malloc_zone_calloc - ... - fun:__CFInitialize - fun:_ZN16ImageLoaderMachO11doImageInitERKN11ImageLoader11LinkContextE -} - -{ - osx-frameworks.rs-fails-otherwise-3 - Memcheck:Leak - match-leak-kinds: possible - fun:realloc - ... - fun:_read_images - fun:map_images_nolock - ... - fun:_ZN4dyldL18notifyBatchPartialE17dyld_image_statesbPFPKcS0_jPK15dyld_image_infoE - fun:_ZN4dyld36registerImageStateBatchChangeHandlerE17dyld_image_statesPFPKcS0_jPK15dyld_image_infoE - fun:dyld_register_image_state_change_handler - fun:_objc_init - fun:_os_object_init -} - -{ - osx-frameworks.rs-fails-otherwise-4 - Memcheck:Leak - match-leak-kinds: definite,possible - fun:calloc - ... - fun:__CFInitialize - fun:_ZN16ImageLoaderMachO11doImageInitERKN11ImageLoader11LinkContextE - fun:_ZN16ImageLoaderMachO16doInitializationERKN11ImageLoader11LinkContextE - fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEjRNS_21InitializerTimingListERNS_15UninitedUpwardsE -} - -{ - osx-frameworks.rs-fails-otherwise-5 - Memcheck:Leak - match-leak-kinds: definite,possible - fun:malloc_zone_malloc - ... - fun:__CFInitialize - ... -} - -{ - fails-since-xcode-7.2 - Memcheck:Leak - match-leak-kinds: possible - fun:malloc_zone_malloc - fun:_objc_copyClassNamesForImage - fun:_ZL9protocolsv - fun:_Z9readClassP10objc_classbb - fun:gc_init - fun:_ZL33objc_initializeClassPair_internalP10objc_classPKcS0_S0_ - fun:layout_string_create - fun:_ZL12realizeClassP10objc_class - fun:_ZL22copySwiftV1MangledNamePKcb - fun:_ZL22copySwiftV1MangledNamePKcb - fun:_ZL22copySwiftV1MangledNamePKcb - fun:_ZL22copySwiftV1MangledNamePKcb -} diff --git a/src/etc/check-sanitycheck.py b/src/etc/check-sanitycheck.py deleted file mode 100644 index 0e103fbcffbad..0000000000000 --- a/src/etc/check-sanitycheck.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -import os -import subprocess -import sys -import functools - -STATUS = 0 - -def error_unless_permitted(env_var, message): - global STATUS - if not os.getenv(env_var): - sys.stderr.write(message) - STATUS = 1 - -def only_on(platforms): - def decorator(func): - @functools.wraps(func) - def inner(): - if any(map(lambda x: sys.platform.startswith(x), platforms)): - func() - return inner - return decorator - -@only_on(['linux', 'darwin', 'freebsd', 'openbsd']) -def check_rlimit_core(): - import resource - soft, hard = resource.getrlimit(resource.RLIMIT_CORE) - if soft > 0: - error_unless_permitted('ALLOW_NONZERO_RLIMIT_CORE', """\ -RLIMIT_CORE is set to a nonzero value (%d). During debuginfo, the test suite -will segfault many rustc's, creating many potentially large core files. -set ALLOW_NONZERO_RLIMIT_CORE to ignore this warning -""" % (soft)) - -@only_on(['win32']) -def check_console_code_page(): - if '65001' not in subprocess.check_output(['cmd', '/c', 'chcp']): - sys.stderr.write('Warning: the console output code page is not UTF-8, \ -some tests may fail. Use `cmd /c "chcp 65001"` to setup UTF-8 code page.\n') - -def main(): - check_console_code_page() - check_rlimit_core() - -if __name__ == '__main__': - main() - sys.exit(STATUS) diff --git a/src/etc/check-summary.py b/src/etc/check-summary.py deleted file mode 100755 index 9312b685c14a2..0000000000000 --- a/src/etc/check-summary.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -import glob -import sys - -if __name__ == '__main__': - summaries = [] - - def summarise(fname): - summary = {} - with open(fname) as fd: - for line in fd: - splitline = line.strip().split(' ') - if len(splitline) == 1: - continue - status = splitline[0] - test = splitline[-1] - # track bench runs - if splitline[1] == 'ns/iter': - status = 'bench' - if status not in summary: - summary[status] = [] - summary[status].append(test) - summaries.append((fname, summary)) - - def count(t): - return sum(map(lambda f: len(f[1].get(t, [])), summaries)) - - logfiles = sys.argv[1:] - for files in map(glob.glob, logfiles): - map(summarise, files) - ok = count('ok') - failed = count('failed') - ignored = count('ignored') - measured = count('bench') - print("summary of %d test runs: %d passed; %d failed; %d ignored; %d measured" % - (len(logfiles), ok, failed, ignored, measured)) - print("") - - if failed > 0: - print("failed tests:") - for f, s in summaries: - failures = s.get('failed', []) - if len(failures) > 0: - print(" %s:" % (f)) - for test in failures: - print(" %s" % (test)) diff --git a/src/etc/get-stage0.py b/src/etc/get-stage0.py deleted file mode 100644 index 127251cc802c9..0000000000000 --- a/src/etc/get-stage0.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2016 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -import os -import sys - -path = os.path.abspath(os.path.join(os.path.dirname(__file__), "../bootstrap")) -sys.path.append(path) - -import bootstrap - -def main(triple): - src_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) - data = bootstrap.stage0_data(src_root) - - channel, date = data['rustc'].split('-', 1) - - dl_dir = 'dl' - if not os.path.exists(dl_dir): - os.makedirs(dl_dir) - - filename = 'rustc-{}-{}.tar.gz'.format(channel, triple) - url = 'https://static.rust-lang.org/dist/{}/{}'.format(date, filename) - dst = dl_dir + '/' + filename - bootstrap.get(url, dst) - - stage0_dst = triple + '/stage0' - if os.path.exists(stage0_dst): - for root, _, files in os.walk(stage0_dst): - for f in files: - os.unlink(os.path.join(root, f)) - else: - os.makedirs(stage0_dst) - bootstrap.unpack(dst, stage0_dst, match='rustc', verbose=True) - -if __name__ == '__main__': - main(sys.argv[1]) diff --git a/src/etc/local_stage0.sh b/src/etc/local_stage0.sh deleted file mode 100755 index ee77206640eab..0000000000000 --- a/src/etc/local_stage0.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/sh -# Copyright 2014-2015 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -TARG_DIR=$1 -PREFIX=$2 -RUSTLIBDIR=$3 - -LIB_DIR=lib -LIB_PREFIX=lib - -OS=`uname -s` -case $OS in - ("Linux"|"FreeBSD"|"DragonFly"|"Bitrig"|"OpenBSD"|"SunOS"|"Haiku") - BIN_SUF= - LIB_SUF=.so - ;; - ("Darwin") - BIN_SUF= - LIB_SUF=.dylib - ;; - (*) - BIN_SUF=.exe - LIB_SUF=.dll - LIB_DIR=bin - LIB_PREFIX= - ;; -esac - -if [ -z $PREFIX ]; then - echo "No local rust specified." - exit 1 -fi - -if [ ! -e ${PREFIX}/bin/rustc${BIN_SUF} ]; then - echo "No local rust installed at ${PREFIX}" - exit 1 -fi - -if [ -z $TARG_DIR ]; then - echo "No target directory specified." - exit 1 -fi - -case "$TARG_DIR" in ---print-rustc-release) - # not actually copying to TARG_DIR, just print the local rustc version and exit - ${PREFIX}/bin/rustc${BIN_SUF} --version --verbose | sed -ne 's/^release: //p' -;; -*) - -cp ${PREFIX}/bin/rustc${BIN_SUF} ${TARG_DIR}/stage0/bin/ -cp ${PREFIX}/${LIB_DIR}/${RUSTLIBDIR}/${TARG_DIR}/${LIB_DIR}/* ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}arena*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}extra*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}rust*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}std*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}syntax*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}flate*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}fmt_macros*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}getopts*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}graphviz*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}log*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}rbml*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}serialize*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}term*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ -cp ${PREFIX}/${LIB_DIR}/${LIB_PREFIX}proc_macro*${LIB_SUF} ${TARG_DIR}/stage0/${LIB_DIR}/ - -# do not fail if one of the above fails, as all we need is a working rustc! -exit 0 - -esac diff --git a/src/etc/mklldeps.py b/src/etc/mklldeps.py deleted file mode 100644 index 24b007576aa24..0000000000000 --- a/src/etc/mklldeps.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT -# file at the top-level directory of this distribution and at -# http://rust-lang.org/COPYRIGHT. -# -# Licensed under the Apache License, Version 2.0 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -import os -import sys -import subprocess - -f = open(sys.argv[1], 'wb') - -components = sys.argv[2].split() # splits on whitespace -enable_static = sys.argv[3] -llvm_config = sys.argv[4] -stdcpp_name = sys.argv[5] -use_libcpp = sys.argv[6] - -f.write("""// Copyright 2013 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// WARNING: THIS IS A GENERATED FILE, DO NOT MODIFY -// take a look at src/etc/mklldeps.py if you're interested -""") - - -def run(args): - proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = proc.communicate() - - if err: - print("failed to run llvm_config: args = `{}`".format(args)) - print(err) - sys.exit(1) - return out - -def runErr(args): - proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = proc.communicate() - - if err: - return False, out - else: - return True, out - -f.write("\n") - -args = [llvm_config, '--shared-mode'] -args.extend(components) -llvm_shared, out = runErr(args) -if llvm_shared: - llvm_shared = 'shared' in out - -# LLVM libs -args = [llvm_config, '--libs', '--system-libs'] -args.extend(components) -out = run(args) -for lib in out.strip().replace("\n", ' ').split(' '): - if len(lib) == 0: - continue - # in some cases we get extra spaces in between libs so ignore those - if len(lib) == 1 and lib == ' ': - continue - # not all libs strictly follow -lfoo, on Bitrig, there is -pthread - if lib[0:2] == '-l': - lib = lib.strip()[2:] - elif lib[0] == '-': - lib = lib.strip()[1:] - # If this actually points at a literal file then we're on MSVC which now - # prints full paths, so get just the name of the library and strip off the - # trailing ".lib" - elif os.path.exists(lib): - lib = os.path.basename(lib)[:-4] - elif lib[-4:] == '.lib': - lib = lib[:-4] - f.write("#[link(name = \"" + lib + "\"") - if not llvm_shared and 'LLVM' in lib: - f.write(", kind = \"static\"") - f.write(")]\n") - -# LLVM ldflags -out = run([llvm_config, '--ldflags']) -for lib in out.strip().split(' '): - if lib[:2] == "-l": - f.write("#[link(name = \"" + lib[2:] + "\")]\n") - -# C++ runtime library -out = run([llvm_config, '--cxxflags']) -if enable_static == '1': - assert('stdlib=libc++' not in out) - f.write("#[link(name = \"" + stdcpp_name + "\", kind = \"static\")]\n") -else: - # Note that we use `cfg_attr` here because on MSVC the C++ standard library - # is not c++ or stdc++, but rather the linker takes care of linking the - # right standard library. - if use_libcpp != "0" or 'stdlib=libc++' in out: - f.write("#[cfg_attr(not(target_env = \"msvc\"), link(name = \"c++\"))]\n") - else: - f.write("#[cfg_attr(not(target_env = \"msvc\"), link(name = \"" + stdcpp_name + "\"))]\n") - -# Attach everything to an extern block -f.write("extern {}\n") diff --git a/src/etc/x86.supp b/src/etc/x86.supp deleted file mode 100644 index 6e409af79aecf..0000000000000 --- a/src/etc/x86.supp +++ /dev/null @@ -1,65 +0,0 @@ -{ - goddammit-llvm-why-u-no-valgrind - Memcheck:Cond - fun:* - ... -} - -{ - down-with-thread-dtors.rs-fails-otherwise-1 - Memcheck:Addr1 - ... - fun:tlv_finalize - fun:_pthread_tsd_cleanup - fun:_pthread_exit - ... - fun:_pthread_start - fun:thread_start -} - -{ - down-with-thread-dtors.rs-fails-otherwise-2 - Memcheck:Addr2 - ... - fun:tlv_finalize - fun:_pthread_tsd_cleanup - fun:_pthread_exit - ... - fun:_pthread_start - fun:thread_start -} - -{ - down-with-thread-dtors.rs-fails-otherwise-3 - Memcheck:Addr4 - ... - fun:tlv_finalize - fun:_pthread_tsd_cleanup - fun:_pthread_exit - ... - fun:_pthread_start - fun:thread_start -} - -{ - down-with-thread-dtors.rs-fails-otherwise-4 - Memcheck:Addr8 - ... - fun:tlv_finalize - fun:_pthread_tsd_cleanup - fun:_pthread_exit - ... - fun:_pthread_start - fun:thread_start -} - -{ - down-with-thread-dtors.rs-fails-otherwise-5 - Memcheck:Leak - match-leak-kinds: definite - fun:malloc - fun:tlv_allocate_and_initialize_for_key - fun:tlv_get_addr - ... - fun:start -} diff --git a/src/liballoc_jemalloc/build.rs b/src/liballoc_jemalloc/build.rs index cb7852995f3b1..a3402bf399427 100644 --- a/src/liballoc_jemalloc/build.rs +++ b/src/liballoc_jemalloc/build.rs @@ -21,7 +21,6 @@ use std::process::Command; use build_helper::{run, rerun_if_changed_anything_in_dir, up_to_date}; fn main() { - println!("cargo:rustc-cfg=cargobuild"); println!("cargo:rerun-if-changed=build.rs"); // FIXME: This is a hack to support building targets that don't diff --git a/src/liballoc_jemalloc/lib.rs b/src/liballoc_jemalloc/lib.rs index fc8a5455d1d07..8d81a09f5af0f 100644 --- a/src/liballoc_jemalloc/lib.rs +++ b/src/liballoc_jemalloc/lib.rs @@ -30,22 +30,6 @@ pub use imp::*; mod imp { use libc::{c_int, c_void, size_t}; - // Linkage directives to pull in jemalloc and its dependencies. - // - // On some platforms we need to be sure to link in `pthread` which jemalloc - // depends on, and specifically on android we need to also link to libgcc. - // Currently jemalloc is compiled with gcc which will generate calls to - // intrinsics that are libgcc specific (e.g. those intrinsics aren't present in - // libcompiler-rt), so link that in to get that support. - #[link(name = "jemalloc", kind = "static")] - #[cfg_attr(target_os = "android", link(name = "gcc"))] - #[cfg_attr(all(not(windows), - not(target_os = "android"), - not(target_env = "musl")), - link(name = "pthread"))] - #[cfg(not(cargobuild))] - extern "C" {} - // Note that the symbols here are prefixed by default on OSX and Windows (we // don't explicitly request it), and on Android and DragonFly we explicitly // request it as unprefixing cause segfaults (mismatches in allocators). diff --git a/src/libflate/build.rs b/src/libflate/build.rs index 245c705dfcc2a..12016980a2c65 100644 --- a/src/libflate/build.rs +++ b/src/libflate/build.rs @@ -11,7 +11,6 @@ extern crate gcc; fn main() { - println!("cargo:rustc-cfg=cargobuild"); gcc::Config::new() .file("../rt/miniz.c") .compile("libminiz.a"); diff --git a/src/libflate/lib.rs b/src/libflate/lib.rs index 8365e9db2a947..dedec7b1609fa 100644 --- a/src/libflate/lib.rs +++ b/src/libflate/lib.rs @@ -74,10 +74,6 @@ impl Drop for Bytes { } } -#[link(name = "miniz", kind = "static")] -#[cfg(not(cargobuild))] -extern "C" {} - extern "C" { /// Raw miniz compression function. fn tdefl_compress_mem_to_heap(psrc_buf: *const c_void, diff --git a/src/libpanic_unwind/gcc.rs b/src/libpanic_unwind/gcc.rs index e8b3a9a42c292..84abc6bc4a513 100644 --- a/src/libpanic_unwind/gcc.rs +++ b/src/libpanic_unwind/gcc.rs @@ -301,10 +301,6 @@ unsafe extern "C" fn rust_eh_unwind_resume(panic_ctx: *mut u8) -> ! { // with any GCC runtime. #[cfg(all(target_os="windows", target_arch = "x86", target_env="gnu"))] pub mod eh_frame_registry { - #[link(name = "gcc_eh")] - #[cfg(not(cargobuild))] - extern "C" {} - extern "C" { fn __register_frame_info(eh_frame_begin: *const u8, object: *mut u8); fn __deregister_frame_info(eh_frame_begin: *const u8, object: *mut u8); diff --git a/src/librustc/mir/mod.rs b/src/librustc/mir/mod.rs index 6e9091cf31728..cbb7b2710f506 100644 --- a/src/librustc/mir/mod.rs +++ b/src/librustc/mir/mod.rs @@ -63,7 +63,7 @@ macro_rules! newtype_index { } /// Lowered representation of a single function. -// Do not implement clone for Mir, its easy to do so accidently and its kind of expensive. +// Do not implement clone for Mir, which can be accidently done and kind of expensive. #[derive(RustcEncodable, RustcDecodable, Debug)] pub struct Mir<'tcx> { /// List of basic blocks. References to basic block use a newtyped index type `BasicBlock` diff --git a/src/librustc/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs index 661d47199df13..024c14ce9d922 100644 --- a/src/librustc/traits/error_reporting.rs +++ b/src/librustc/traits/error_reporting.rs @@ -39,6 +39,8 @@ use util::nodemap::{FxHashMap, FxHashSet}; use std::cmp; use std::fmt; use syntax::ast; +use hir::{intravisit, Local, Pat}; +use hir::intravisit::{Visitor, NestedVisitorMap}; use syntax_pos::{DUMMY_SP, Span}; use errors::DiagnosticBuilder; @@ -60,6 +62,30 @@ impl<'a, 'gcx, 'tcx> TraitErrorKey<'tcx> { } } +struct FindLocalByTypeVisitor<'a, 'gcx: 'a + 'tcx, 'tcx: 'a> { + infcx: &'a InferCtxt<'a, 'gcx, 'tcx>, + target_ty: &'a Ty<'tcx>, + found_pattern: Option<&'a Pat>, +} + +impl<'a, 'gcx, 'tcx> Visitor<'a> for FindLocalByTypeVisitor<'a, 'gcx, 'tcx> { + fn nested_visit_map<'this>(&'this mut self) -> NestedVisitorMap<'this, 'a> { + NestedVisitorMap::None + } + + fn visit_local(&mut self, local: &'a Local) { + if let Some(&ty) = self.infcx.tables.borrow().node_types.get(&local.id) { + let ty = self.infcx.resolve_type_vars_if_possible(&ty); + let is_match = ty.walk().any(|t| t == *self.target_ty); + + if is_match && self.found_pattern.is_none() { + self.found_pattern = Some(&*local.pat); + } + } + intravisit::walk_local(self, local); + } +} + impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { pub fn report_fulfillment_errors(&self, errors: &Vec>) { for error in errors { @@ -775,7 +801,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { self.tcx.lang_items.sized_trait() .map_or(false, |sized_id| sized_id == trait_ref.def_id()) { - self.need_type_info(obligation.cause.span, self_ty); + self.need_type_info(obligation, self_ty); } else { let mut err = struct_span_err!(self.tcx.sess, obligation.cause.span, E0283, @@ -793,7 +819,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { // Same hacky approach as above to avoid deluging user // with error messages. if !ty.references_error() && !self.tcx.sess.has_errors() { - self.need_type_info(obligation.cause.span, ty); + self.need_type_info(obligation, ty); } } @@ -857,27 +883,53 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { }) } - - fn need_type_info(&self, span: Span, ty: Ty<'tcx>) { - let ty = self.resolve_type_vars_if_possible(&ty); - let name = if let ty::TyInfer(ty::TyVar(ty_vid)) = ty.sty { + fn extract_type_name(&self, ty: &'a Ty<'tcx>) -> String { + if let ty::TyInfer(ty::TyVar(ty_vid)) = (*ty).sty { let ty_vars = self.type_variables.borrow(); if let TypeVariableOrigin::TypeParameterDefinition(_, name) = - *ty_vars.var_origin(ty_vid) - { + *ty_vars.var_origin(ty_vid) { name.to_string() } else { ty.to_string() } } else { ty.to_string() + } + } + + fn need_type_info(&self, obligation: &PredicateObligation<'tcx>, ty: Ty<'tcx>) { + let ty = self.resolve_type_vars_if_possible(&ty); + let name = self.extract_type_name(&ty); + let ref cause = obligation.cause; + + let mut err = struct_span_err!(self.tcx.sess, + cause.span, + E0282, + "type annotations needed"); + + err.span_label(cause.span, &format!("cannot infer type for `{}`", name)); + + let expr = self.tcx.hir.expect_expr(cause.body_id); + + let mut local_visitor = FindLocalByTypeVisitor { + infcx: &self, + target_ty: &ty, + found_pattern: None, }; - let mut err = struct_span_err!(self.tcx.sess, span, E0282, - "unable to infer enough type information about `{}`", - name); - err.note("type annotations or generic parameter binding required"); - err.span_label(span, &format!("cannot infer type for `{}`", name)); + local_visitor.visit_expr(expr); + + if let Some(pattern) = local_visitor.found_pattern { + let pattern_span = pattern.span; + if let Some(simple_name) = pattern.simple_name() { + err.span_label(pattern_span, + &format!("consider giving `{}` a type", + simple_name)); + } else { + err.span_label(pattern_span, &format!("consider giving a type to pattern")); + } + } + err.emit(); } diff --git a/src/librustc_back/target/i686_unknown_netbsd.rs b/src/librustc_back/target/i686_unknown_netbsd.rs new file mode 100644 index 0000000000000..e7e2ee3f9056a --- /dev/null +++ b/src/librustc_back/target/i686_unknown_netbsd.rs @@ -0,0 +1,30 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use target::{Target, TargetResult}; + +pub fn target() -> TargetResult { + let mut base = super::netbsd_base::opts(); + base.cpu = "pentium4".to_string(); + base.max_atomic_width = Some(64); + base.pre_link_args.push("-m32".to_string()); + + Ok(Target { + llvm_target: "i686-unknown-netbsdelf".to_string(), + target_endian: "little".to_string(), + target_pointer_width: "32".to_string(), + data_layout: "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128".to_string(), + arch: "x86".to_string(), + target_os: "netbsd".to_string(), + target_env: "".to_string(), + target_vendor: "unknown".to_string(), + options: base, + }) +} diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index 9e232bc7e1f2f..1d5d1e3ab2fc7 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -177,6 +177,7 @@ supported_targets! { ("i686-unknown-openbsd", i686_unknown_openbsd), ("x86_64-unknown-openbsd", x86_64_unknown_openbsd), + ("i686-unknown-netbsd", i686_unknown_netbsd), ("sparc64-unknown-netbsd", sparc64_unknown_netbsd), ("x86_64-unknown-netbsd", x86_64_unknown_netbsd), ("x86_64-rumprun-netbsd", x86_64_rumprun_netbsd), diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs index 2ee4cc4943561..c74a9308e4eba 100644 --- a/src/librustc_llvm/build.rs +++ b/src/librustc_llvm/build.rs @@ -47,8 +47,6 @@ fn detect_llvm_link(llvm_config: &Path) -> (&'static str, Option<&'static str>) } fn main() { - println!("cargo:rustc-cfg=cargobuild"); - let target = env::var("TARGET").expect("TARGET was not set"); let llvm_config = env::var_os("LLVM_CONFIG") .map(PathBuf::from) diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs index b1615b9e38bde..f300bf16145a7 100644 --- a/src/librustc_llvm/lib.rs +++ b/src/librustc_llvm/lib.rs @@ -422,13 +422,3 @@ impl Drop for OperandBundleDef { } } } - -// The module containing the native LLVM dependencies, generated by the build system -// Note that this must come after the rustllvm extern declaration so that -// parts of LLVM that rustllvm depends on aren't thrown away by the linker. -// Works to the above fix for #15460 to ensure LLVM dependencies that -// are only used by rustllvm don't get stripped by the linker. -#[cfg(not(cargobuild))] -mod llvmdeps { - include! { env!("CFG_LLVM_LINKAGE_FILE") } -} diff --git a/src/librustdoc/build.rs b/src/librustdoc/build.rs index 171954f325a5e..fcb7af11dce2f 100644 --- a/src/librustdoc/build.rs +++ b/src/librustdoc/build.rs @@ -11,7 +11,6 @@ extern crate gcc; fn main() { - println!("cargo:rustc-cfg=cargobuild"); let mut cfg = gcc::Config::new(); cfg.file("../rt/hoedown/src/autolink.c") .file("../rt/hoedown/src/buffer.c") diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index e8ff8930bdd7d..a0f4a3a874348 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -162,11 +162,6 @@ struct hoedown_buffer { unit: libc::size_t, } -// hoedown FFI -#[link(name = "hoedown", kind = "static")] -#[cfg(not(cargobuild))] -extern {} - extern { fn hoedown_html_renderer_new(render_flags: libc::c_uint, nesting_level: libc::c_int) diff --git a/src/libstd/build.rs b/src/libstd/build.rs index a084482170937..0fca374f6e6d1 100644 --- a/src/libstd/build.rs +++ b/src/libstd/build.rs @@ -21,7 +21,6 @@ use std::process::Command; use build_helper::{run, rerun_if_changed_anything_in_dir, up_to_date}; fn main() { - println!("cargo:rustc-cfg=cargobuild"); println!("cargo:rerun-if-changed=build.rs"); let target = env::var("TARGET").expect("TARGET was not set"); diff --git a/src/libstd/env.rs b/src/libstd/env.rs index 29f2ac6ab444c..e264153929491 100644 --- a/src/libstd/env.rs +++ b/src/libstd/env.rs @@ -24,16 +24,19 @@ use path::{Path, PathBuf}; use sys; use sys::os as os_imp; -/// Returns the current working directory as a `PathBuf`. +/// Returns the current working directory as a [`PathBuf`]. /// /// # Errors /// -/// Returns an `Err` if the current working directory value is invalid. +/// Returns an [`Err`] if the current working directory value is invalid. /// Possible cases: /// /// * Current directory does not exist. /// * There are insufficient permissions to access the current directory. /// +/// [`PathBuf`]: ../../std/path/struct.PathBuf.html +/// [`Err`]: ../../std/result/enum.Result.html#method.err +/// /// # Examples /// /// ``` diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index 1f3526e1a09ff..3a552c060a9b9 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -464,9 +464,6 @@ mod panicking; mod rand; mod memchr; -// This module just defines per-platform native library dependencies -mod rtdeps; - // The runtime entry point and a few unstable public functions used by the // compiler pub mod rt; diff --git a/src/libstd/net/addr.rs b/src/libstd/net/addr.rs index 751878c687c01..84c4acb8d9247 100644 --- a/src/libstd/net/addr.rs +++ b/src/libstd/net/addr.rs @@ -456,6 +456,13 @@ impl From for SocketAddr { } } +#[stable(feature = "addr_from_into_ip", since = "1.17.0")] +impl> From<(I, u16)> for SocketAddr { + fn from(pieces: (I, u16)) -> SocketAddr { + SocketAddr::new(pieces.0.into(), pieces.1) + } +} + impl<'a> IntoInner<(*const c::sockaddr, c::socklen_t)> for &'a SocketAddr { fn into_inner(self) -> (*const c::sockaddr, c::socklen_t) { match *self { diff --git a/src/libstd/net/ip.rs b/src/libstd/net/ip.rs index 3dc89e390ee20..5d6e8d319d7b2 100644 --- a/src/libstd/net/ip.rs +++ b/src/libstd/net/ip.rs @@ -656,6 +656,13 @@ impl From<[u8; 4]> for Ipv4Addr { } } +#[stable(feature = "ip_from_slice", since = "1.17.0")] +impl From<[u8; 4]> for IpAddr { + fn from(octets: [u8; 4]) -> IpAddr { + IpAddr::V4(Ipv4Addr::from(octets)) + } +} + impl Ipv6Addr { /// Creates a new IPv6 address from eight 16-bit segments. /// @@ -1186,6 +1193,21 @@ impl From<[u16; 8]> for Ipv6Addr { } } + +#[stable(feature = "ip_from_slice", since = "1.17.0")] +impl From<[u8; 16]> for IpAddr { + fn from(octets: [u8; 16]) -> IpAddr { + IpAddr::V6(Ipv6Addr::from(octets)) + } +} + +#[stable(feature = "ip_from_slice", since = "1.17.0")] +impl From<[u16; 8]> for IpAddr { + fn from(segments: [u16; 8]) -> IpAddr { + IpAddr::V6(Ipv6Addr::from(segments)) + } +} + // Tests for this module #[cfg(all(test, not(target_os = "emscripten")))] mod tests { diff --git a/src/libstd/panicking.rs b/src/libstd/panicking.rs index e5edea241e199..d76e8816ca45f 100644 --- a/src/libstd/panicking.rs +++ b/src/libstd/panicking.rs @@ -311,12 +311,12 @@ impl<'a> Location<'a> { } fn default_hook(info: &PanicInfo) { - #[cfg(any(not(cargobuild), feature = "backtrace"))] + #[cfg(feature = "backtrace")] use sys_common::backtrace; // If this is a double panic, make sure that we print a backtrace // for this panic. Otherwise only print it if logging is enabled. - #[cfg(any(not(cargobuild), feature = "backtrace"))] + #[cfg(feature = "backtrace")] let log_backtrace = { let panics = update_panic_count(0); @@ -341,7 +341,7 @@ fn default_hook(info: &PanicInfo) { let _ = writeln!(err, "thread '{}' panicked at '{}', {}:{}", name, msg, file, line); - #[cfg(any(not(cargobuild), feature = "backtrace"))] + #[cfg(feature = "backtrace")] { use sync::atomic::{AtomicBool, Ordering}; diff --git a/src/libstd/path.rs b/src/libstd/path.rs index eb0a6cd74d7bc..07b43cd89ac71 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -1265,6 +1265,13 @@ impl Borrow for PathBuf { } } +#[stable(feature = "default_for_pathbuf", since = "1.16.0")] +impl Default for PathBuf { + fn default() -> Self { + PathBuf::new() + } +} + #[stable(feature = "cow_from_path", since = "1.6.0")] impl<'a> From<&'a Path> for Cow<'a, Path> { #[inline] diff --git a/src/libstd/rtdeps.rs b/src/libstd/rtdeps.rs deleted file mode 100644 index 5dc6ee2bc8c66..0000000000000 --- a/src/libstd/rtdeps.rs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2013-2015 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -//! This module contains the linkage attributes to all runtime dependencies of -//! the standard library This varies per-platform, but these libraries are -//! necessary for running libstd. - -#![cfg(not(cargobuild))] - -// LLVM implements the `frem` instruction as a call to `fmod`, which lives in -// libm. Hence, we must explicitly link to it. -// -// On Linux, librt and libdl are indirect dependencies via std, -// and binutils 2.22+ won't add them automatically -#[cfg(all(target_os = "linux", not(target_env = "musl")))] -#[link(name = "dl")] -#[link(name = "pthread")] -extern {} - -#[cfg(target_os = "android")] -#[link(name = "dl")] -#[link(name = "log")] -extern {} - -#[cfg(target_os = "freebsd")] -#[link(name = "execinfo")] -#[link(name = "pthread")] -extern {} - -#[cfg(any(target_os = "dragonfly", - target_os = "bitrig", - target_os = "netbsd", - target_os = "openbsd"))] -#[link(name = "pthread")] -extern {} - -#[cfg(target_os = "solaris")] -#[link(name = "socket")] -#[link(name = "posix4")] -#[link(name = "pthread")] -extern {} - -// For PNaCl targets, nacl_io is a Pepper wrapper for some IO functions -// missing (ie always error) in Newlib. -#[cfg(all(target_os = "nacl", not(test)))] -#[link(name = "nacl_io", kind = "static")] -#[link(name = "c++", kind = "static")] // for `nacl_io` and EH. -#[link(name = "pthread", kind = "static")] -extern {} - -#[cfg(target_os = "macos")] -#[link(name = "System")] -extern {} - -#[cfg(target_os = "ios")] -#[link(name = "System")] -extern {} - -#[cfg(target_os = "haiku")] -#[link(name = "network")] -extern {} diff --git a/src/libstd/sys/unix/args.rs b/src/libstd/sys/unix/args.rs index 0f447ff4ec452..6e35a472792c4 100644 --- a/src/libstd/sys/unix/args.rs +++ b/src/libstd/sys/unix/args.rs @@ -189,11 +189,6 @@ mod imp { fn objc_msgSend_ul(obj: NsId, sel: Sel, ...) -> NsId; } - #[link(name = "Foundation", kind = "framework")] - #[link(name = "objc")] - #[cfg(not(cargobuild))] - extern {} - type Sel = *const libc::c_void; type NsId = *const libc::c_void; diff --git a/src/libstd/sys/unix/mod.rs b/src/libstd/sys/unix/mod.rs index fd7dc17cccd8c..c57751a01d7c1 100644 --- a/src/libstd/sys/unix/mod.rs +++ b/src/libstd/sys/unix/mod.rs @@ -33,7 +33,7 @@ pub mod weak; pub mod args; pub mod android; -#[cfg(any(not(cargobuild), feature = "backtrace"))] +#[cfg(feature = "backtrace")] pub mod backtrace; pub mod condvar; pub mod env; diff --git a/src/libstd/sys/unix/process/process_common.rs b/src/libstd/sys/unix/process/process_common.rs index 3497b266340e4..a4536520376e8 100644 --- a/src/libstd/sys/unix/process/process_common.rs +++ b/src/libstd/sys/unix/process/process_common.rs @@ -439,6 +439,10 @@ mod tests { #[test] #[cfg_attr(target_os = "macos", ignore)] #[cfg_attr(target_os = "nacl", ignore)] // no signals on NaCl. + // When run under our current QEMU emulation test suite this test fails, + // although the reason isn't very clear as to why. For now this test is + // ignored there. + #[cfg_attr(target_arch = "arm", ignore)] fn test_process_mask() { unsafe { // Test to make sure that a signal mask does not get inherited. @@ -471,7 +475,7 @@ mod tests { // Either EOF or failure (EPIPE) is okay. let mut buf = [0; 5]; if let Ok(ret) = stdout_read.read(&mut buf) { - assert!(ret == 0); + assert_eq!(ret, 0); } t!(cat.wait()); diff --git a/src/libstd/sys/unix/rand.rs b/src/libstd/sys/unix/rand.rs index 9b1cf6ffd0e22..77ebad4e344c2 100644 --- a/src/libstd/sys/unix/rand.rs +++ b/src/libstd/sys/unix/rand.rs @@ -257,10 +257,6 @@ mod imp { #[allow(non_upper_case_globals)] const kSecRandomDefault: *const SecRandom = ptr::null(); - #[link(name = "Security", kind = "framework")] - #[cfg(not(cargobuild))] - extern {} - extern { fn SecRandomCopyBytes(rnd: *const SecRandom, count: size_t, bytes: *mut u8) -> c_int; diff --git a/src/libstd/sys/windows/c.rs b/src/libstd/sys/windows/c.rs index 850d6f49612ee..e5010ca356449 100644 --- a/src/libstd/sys/windows/c.rs +++ b/src/libstd/sys/windows/c.rs @@ -833,13 +833,6 @@ pub struct CONSOLE_READCONSOLE_CONTROL { } pub type PCONSOLE_READCONSOLE_CONTROL = *mut CONSOLE_READCONSOLE_CONTROL; -#[link(name = "ws2_32")] -#[link(name = "userenv")] -#[link(name = "shell32")] -#[link(name = "advapi32")] -#[cfg(not(cargobuild))] -extern {} - extern "system" { pub fn WSAStartup(wVersionRequested: WORD, lpWSAData: LPWSADATA) -> c_int; diff --git a/src/libstd/sys_common/gnu/libbacktrace.rs b/src/libstd/sys_common/gnu/libbacktrace.rs index d464a13ad1d3f..0bdbeddb11212 100644 --- a/src/libstd/sys_common/gnu/libbacktrace.rs +++ b/src/libstd/sys_common/gnu/libbacktrace.rs @@ -39,9 +39,6 @@ pub fn print(w: &mut Write, idx: isize, addr: *mut libc::c_void, msg: *const libc::c_char, errnum: libc::c_int); enum backtrace_state {} - #[link(name = "backtrace", kind = "static")] - #[cfg(all(not(test), not(cargobuild)))] - extern {} extern { fn backtrace_create_state(filename: *const libc::c_char, diff --git a/src/libstd/sys_common/mod.rs b/src/libstd/sys_common/mod.rs index 634d6258885e8..d4d3365dc0198 100644 --- a/src/libstd/sys_common/mod.rs +++ b/src/libstd/sys_common/mod.rs @@ -29,7 +29,7 @@ use sync::Once; use sys; pub mod at_exit_imp; -#[cfg(any(not(cargobuild), feature = "backtrace"))] +#[cfg(feature = "backtrace")] pub mod backtrace; pub mod condvar; pub mod io; @@ -50,7 +50,7 @@ pub use sys::net; #[cfg(not(target_os = "redox"))] pub mod net; -#[cfg(any(not(cargobuild), feature = "backtrace"))] +#[cfg(feature = "backtrace")] #[cfg(any(all(unix, not(any(target_os = "macos", target_os = "ios", target_os = "emscripten"))), all(windows, target_env = "gnu")))] pub mod gnu; diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 52ef2a05fcf19..a78c192a120df 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -957,12 +957,11 @@ pub const EXPLAIN_ALLOW_INTERNAL_UNSTABLE: &'static str = "allow_internal_unstable side-steps feature gating and stability checks"; pub const EXPLAIN_CUSTOM_DERIVE: &'static str = - "`#[derive]` for custom traits is not stable enough for use. It is deprecated and will \ - be removed in v1.15"; + "`#[derive]` for custom traits is deprecated and will be removed in the future."; pub const EXPLAIN_DEPR_CUSTOM_DERIVE: &'static str = - "`#[derive]` for custom traits is deprecated and will be removed in v1.15. Prefer using \ - procedural macro custom derive"; + "`#[derive]` for custom traits is deprecated and will be removed in the future. \ + Prefer using procedural macro custom derive."; pub const EXPLAIN_DERIVE_UNDERSCORE: &'static str = "attributes of the form `#[derive_*]` are reserved for the compiler"; diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs index db41a368a1680..f18b694d3d0c7 100644 --- a/src/libunwind/build.rs +++ b/src/libunwind/build.rs @@ -11,8 +11,6 @@ use std::env; fn main() { - println!("cargo:rustc-cfg=cargobuild"); - let target = env::var("TARGET").expect("TARGET was not set"); if target.contains("linux") { diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs index 269c2d65b6327..7fb58373251a5 100644 --- a/src/libunwind/libunwind.rs +++ b/src/libunwind/libunwind.rs @@ -240,34 +240,3 @@ if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] { } } } // cfg_if! - -#[cfg_attr(any(all(target_os = "linux", not(target_env = "musl")), - target_os = "freebsd", - target_os = "solaris", - target_os = "haiku", - all(target_os = "linux", - target_env = "musl", - not(target_arch = "x86"), - not(target_arch = "x86_64"))), - link(name = "gcc_s"))] -#[cfg_attr(all(target_os = "linux", - target_env = "musl", - any(target_arch = "x86", target_arch = "x86_64"), - not(test)), - link(name = "unwind", kind = "static"))] -#[cfg_attr(target_os = "fuchsia", - link(name = "unwind"))] -#[cfg_attr(any(target_os = "android", target_os = "openbsd"), - link(name = "gcc"))] -#[cfg_attr(all(target_os = "netbsd", not(target_vendor = "rumprun")), - link(name = "gcc"))] -#[cfg_attr(all(target_os = "netbsd", target_vendor = "rumprun"), - link(name = "unwind"))] -#[cfg_attr(target_os = "dragonfly", - link(name = "gcc_pic"))] -#[cfg_attr(target_os = "bitrig", - link(name = "c++abi"))] -#[cfg_attr(all(target_os = "windows", target_env = "gnu"), - link(name = "gcc_eh"))] -#[cfg(not(cargobuild))] -extern "C" {} diff --git a/src/test/compile-fail/issue-12187-1.rs b/src/test/compile-fail/issue-12187-1.rs index 001e4b51bebc4..346fae11070e1 100644 --- a/src/test/compile-fail/issue-12187-1.rs +++ b/src/test/compile-fail/issue-12187-1.rs @@ -14,7 +14,6 @@ fn new() -> &'static T { fn main() { let &v = new(); - //~^ ERROR unable to infer enough type information about `_` [E0282] + //~^ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `_` - //~| NOTE type annotations or generic parameter binding } diff --git a/src/test/compile-fail/issue-12187-2.rs b/src/test/compile-fail/issue-12187-2.rs index 7cbee402b3682..848174d6fe1e0 100644 --- a/src/test/compile-fail/issue-12187-2.rs +++ b/src/test/compile-fail/issue-12187-2.rs @@ -14,7 +14,6 @@ fn new<'r, T>() -> &'r T { fn main() { let &v = new(); - //~^ ERROR unable to infer enough type information about `_` [E0282] + //~^ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `_` - //~| NOTE type annotations or generic parameter binding } diff --git a/src/test/compile-fail/issue-16966.rs b/src/test/compile-fail/issue-16966.rs index 508442fcb9453..ecf81c8af17f6 100644 --- a/src/test/compile-fail/issue-16966.rs +++ b/src/test/compile-fail/issue-16966.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -// error-pattern:type annotations or generic parameter binding required +// error-pattern:type annotations needed fn main() { panic!( std::default::Default::default() diff --git a/src/test/compile-fail/issue-17551.rs b/src/test/compile-fail/issue-17551.rs index 5e69553d3a485..b55863f0dda7a 100644 --- a/src/test/compile-fail/issue-17551.rs +++ b/src/test/compile-fail/issue-17551.rs @@ -13,6 +13,6 @@ use std::marker; struct B(marker::PhantomData); fn main() { - let foo = B(marker::PhantomData); //~ ERROR unable to infer enough type information + let foo = B(marker::PhantomData); //~ ERROR type annotations needed let closure = || foo; } diff --git a/src/test/compile-fail/issue-18159.rs b/src/test/compile-fail/issue-18159.rs index e46bcf46cc398..8991eded3d6b8 100644 --- a/src/test/compile-fail/issue-18159.rs +++ b/src/test/compile-fail/issue-18159.rs @@ -9,5 +9,5 @@ // except according to those terms. fn main() { - let x; //~ ERROR unable to infer enough type information + let x; //~ ERROR type annotations needed } diff --git a/src/test/compile-fail/issue-23041.rs b/src/test/compile-fail/issue-23041.rs index 1be082ba9bbba..4dfad4ee3c385 100644 --- a/src/test/compile-fail/issue-23041.rs +++ b/src/test/compile-fail/issue-23041.rs @@ -15,5 +15,4 @@ fn main() let b:Box = Box::new(bar as fn(_)->_); b.downcast_ref::_>(); //~ ERROR E0282 //~| NOTE cannot infer type for `_` - //~| NOTE type annotations or generic parameter binding required } diff --git a/src/test/compile-fail/issue-23046.rs b/src/test/compile-fail/issue-23046.rs index c274665530fdb..28109747b7557 100644 --- a/src/test/compile-fail/issue-23046.rs +++ b/src/test/compile-fail/issue-23046.rs @@ -25,6 +25,6 @@ pub fn let_<'var, VAR, F: for<'v: 'var> Fn(Expr<'v, VAR>) -> Expr<'v, VAR>> fn main() { let ex = |x| { - let_(add(x,x), |y| { //~ ERROR unable to infer enough type information about `VAR` + let_(add(x,x), |y| { //~ ERROR type annotations needed let_(add(x, x), |x|x)})}; } diff --git a/src/test/compile-fail/issue-24013.rs b/src/test/compile-fail/issue-24013.rs index df857a2e6eb1f..a7232781f6fbc 100644 --- a/src/test/compile-fail/issue-24013.rs +++ b/src/test/compile-fail/issue-24013.rs @@ -13,5 +13,5 @@ fn main() { let a = 1; let b = 2; unsafe {swap::<&mut _>(transmute(&a), transmute(&b))}; - //~^ ERROR unable to infer enough type information about `_` + //~^ ERROR type annotations needed } diff --git a/src/test/compile-fail/issue-5062.rs b/src/test/compile-fail/issue-5062.rs index cf78d6d8c0ad4..ebfa4975d4d75 100644 --- a/src/test/compile-fail/issue-5062.rs +++ b/src/test/compile-fail/issue-5062.rs @@ -9,4 +9,4 @@ // except according to those terms. fn main() { format!("{:?}", None); } - //~^ ERROR unable to infer enough type information about `T` [E0282] + //~^ ERROR type annotations needed [E0282] diff --git a/src/test/compile-fail/issue-6458-2.rs b/src/test/compile-fail/issue-6458-2.rs index 3816896d43d1f..87cf2b3f740c1 100644 --- a/src/test/compile-fail/issue-6458-2.rs +++ b/src/test/compile-fail/issue-6458-2.rs @@ -11,5 +11,5 @@ fn main() { // Unconstrained type: format!("{:?}", None); - //~^ ERROR unable to infer enough type information about `T` [E0282] + //~^ ERROR type annotations needed [E0282] } diff --git a/src/test/compile-fail/issue-6458-3.rs b/src/test/compile-fail/issue-6458-3.rs index 8029522f5d3cc..1503da2baa73d 100644 --- a/src/test/compile-fail/issue-6458-3.rs +++ b/src/test/compile-fail/issue-6458-3.rs @@ -12,7 +12,6 @@ use std::mem; fn main() { mem::transmute(0); - //~^ ERROR unable to infer enough type information about `U` [E0282] + //~^ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `U` - //~| NOTE type annotations or generic parameter binding } diff --git a/src/test/compile-fail/issue-6458.rs b/src/test/compile-fail/issue-6458.rs index f8354ddbf12a5..db4d4e76c11c9 100644 --- a/src/test/compile-fail/issue-6458.rs +++ b/src/test/compile-fail/issue-6458.rs @@ -17,9 +17,8 @@ pub fn foo(_: TypeWithState) {} pub fn bar() { foo(TypeWithState(marker::PhantomData)); - //~^ ERROR unable to infer enough type information about `State` [E0282] + //~^ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `State` - //~| NOTE type annotations or generic parameter binding } fn main() { diff --git a/src/test/compile-fail/issue-7813.rs b/src/test/compile-fail/issue-7813.rs index e37a881642393..fdd89058fd397 100644 --- a/src/test/compile-fail/issue-7813.rs +++ b/src/test/compile-fail/issue-7813.rs @@ -10,7 +10,7 @@ fn main() { let v = &[]; - let it = v.iter(); //~ ERROR unable to infer enough type information about `T` [E0282] + let it = v.iter(); //~ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `T` - //~| NOTE type annotations or generic parameter binding + //~| NOTE consider giving `it` a type } diff --git a/src/test/compile-fail/method-ambig-one-trait-unknown-int-type.rs b/src/test/compile-fail/method-ambig-one-trait-unknown-int-type.rs index 1cf41f95a2d6d..9acf5a52166e0 100644 --- a/src/test/compile-fail/method-ambig-one-trait-unknown-int-type.rs +++ b/src/test/compile-fail/method-ambig-one-trait-unknown-int-type.rs @@ -32,7 +32,7 @@ impl foo for Vec { fn m1() { // we couldn't infer the type of the vector just based on calling foo()... let mut x = Vec::new(); - //~^ ERROR unable to infer enough type information about `T` [E0282] + //~^ ERROR type annotations needed [E0282] x.foo(); } diff --git a/src/test/compile-fail/traits-multidispatch-convert-ambig-dest.rs b/src/test/compile-fail/traits-multidispatch-convert-ambig-dest.rs index ed2ffa995e521..2e115431c92c4 100644 --- a/src/test/compile-fail/traits-multidispatch-convert-ambig-dest.rs +++ b/src/test/compile-fail/traits-multidispatch-convert-ambig-dest.rs @@ -34,9 +34,8 @@ where T : Convert fn a() { test(22, std::default::Default::default()); - //~^ ERROR unable to infer enough type information about `U` [E0282] + //~^ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `U` - //~| NOTE type annotations or generic parameter binding } fn main() {} diff --git a/src/test/compile-fail/unconstrained-none.rs b/src/test/compile-fail/unconstrained-none.rs index 88080bc70cab4..52ca91e62f8df 100644 --- a/src/test/compile-fail/unconstrained-none.rs +++ b/src/test/compile-fail/unconstrained-none.rs @@ -11,7 +11,6 @@ // Issue #5062 fn main() { - None; //~ ERROR unable to infer enough type information about `T` [E0282] + None; //~ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `T` - //~| NOTE type annotations or generic parameter binding } diff --git a/src/test/compile-fail/unconstrained-ref.rs b/src/test/compile-fail/unconstrained-ref.rs index 12278549215ed..6aaed789716a3 100644 --- a/src/test/compile-fail/unconstrained-ref.rs +++ b/src/test/compile-fail/unconstrained-ref.rs @@ -13,7 +13,6 @@ struct S<'a, T:'a> { } fn main() { - S { o: &None }; //~ ERROR unable to infer enough type information about `T` [E0282] + S { o: &None }; //~ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `T` - //~| NOTE type annotations or generic parameter binding } diff --git a/src/test/compile-fail/vector-no-ann.rs b/src/test/compile-fail/vector-no-ann.rs index d559caf77a1a3..de229ded463f6 100644 --- a/src/test/compile-fail/vector-no-ann.rs +++ b/src/test/compile-fail/vector-no-ann.rs @@ -11,7 +11,7 @@ fn main() { let _foo = Vec::new(); - //~^ ERROR unable to infer enough type information about `T` [E0282] + //~^ ERROR type annotations needed [E0282] //~| NOTE cannot infer type for `T` - //~| NOTE type annotations or generic parameter binding + //~| NOTE consider giving `_foo` a type } diff --git a/src/test/run-pass/fds-are-cloexec.rs b/src/test/run-pass/fds-are-cloexec.rs index 0abe44d82591d..a1b7d42a196e9 100644 --- a/src/test/run-pass/fds-are-cloexec.rs +++ b/src/test/run-pass/fds-are-cloexec.rs @@ -35,7 +35,7 @@ fn main() { } fn parent() { - let file = File::open(file!()).unwrap(); + let file = File::open(env::current_exe().unwrap()).unwrap(); let tcp1 = TcpListener::bind("127.0.0.1:0").unwrap(); let tcp2 = tcp1.try_clone().unwrap(); let addr = tcp1.local_addr().unwrap(); diff --git a/src/tools/compiletest/build.rs b/src/test/ui/codemap_tests/issue-38812-2.rs similarity index 79% rename from src/tools/compiletest/build.rs rename to src/test/ui/codemap_tests/issue-38812-2.rs index d5164b9b75918..c476657d20796 100644 --- a/src/tools/compiletest/build.rs +++ b/src/test/ui/codemap_tests/issue-38812-2.rs @@ -1,4 +1,4 @@ -// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // @@ -9,5 +9,5 @@ // except according to those terms. fn main() { - println!("cargo:rustc-cfg=cargobuild"); + let (x,) = (vec![],); } diff --git a/src/test/ui/codemap_tests/issue-38812-2.stderr b/src/test/ui/codemap_tests/issue-38812-2.stderr new file mode 100644 index 0000000000000..156a6bdee9979 --- /dev/null +++ b/src/test/ui/codemap_tests/issue-38812-2.stderr @@ -0,0 +1,12 @@ +error[E0282]: type annotations needed + --> $DIR/issue-38812-2.rs:12:17 + | +12 | let (x,) = (vec![],); + | ---- ^^^^^^ cannot infer type for `T` + | | + | consider giving a type to pattern + | + = note: this error originates in a macro outside of the current crate + +error: aborting due to previous error + diff --git a/src/test/ui/codemap_tests/repair_span_std_macros.rs b/src/test/ui/codemap_tests/issue-38812.rs similarity index 87% rename from src/test/ui/codemap_tests/repair_span_std_macros.rs rename to src/test/ui/codemap_tests/issue-38812.rs index 3abc91d4f5ff1..a9943f753366d 100644 --- a/src/test/ui/codemap_tests/repair_span_std_macros.rs +++ b/src/test/ui/codemap_tests/issue-38812.rs @@ -1,4 +1,4 @@ -// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // diff --git a/src/test/ui/codemap_tests/issue-38812.stderr b/src/test/ui/codemap_tests/issue-38812.stderr new file mode 100644 index 0000000000000..6365e761453f9 --- /dev/null +++ b/src/test/ui/codemap_tests/issue-38812.stderr @@ -0,0 +1,12 @@ +error[E0282]: type annotations needed + --> $DIR/issue-38812.rs:12:13 + | +12 | let x = vec![]; + | - ^^^^^^ cannot infer type for `T` + | | + | consider giving `x` a type + | + = note: this error originates in a macro outside of the current crate + +error: aborting due to previous error + diff --git a/src/test/ui/codemap_tests/repair_span_std_macros.stderr b/src/test/ui/codemap_tests/repair_span_std_macros.stderr deleted file mode 100644 index 7e0d778a3b205..0000000000000 --- a/src/test/ui/codemap_tests/repair_span_std_macros.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0282]: unable to infer enough type information about `T` - --> $DIR/repair_span_std_macros.rs:12:13 - | -12 | let x = vec![]; - | ^^^^^^ cannot infer type for `T` - | - = note: type annotations or generic parameter binding required - = note: this error originates in a macro outside of the current crate - -error: aborting due to previous error - diff --git a/src/test/ui/missing-items/missing-type-parameter.rs b/src/test/ui/missing-items/missing-type-parameter.rs index 3671abd66246d..79368587062e8 100644 --- a/src/test/ui/missing-items/missing-type-parameter.rs +++ b/src/test/ui/missing-items/missing-type-parameter.rs @@ -1,4 +1,4 @@ -// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // diff --git a/src/test/ui/missing-items/missing-type-parameter.stderr b/src/test/ui/missing-items/missing-type-parameter.stderr index 2d007af4980b2..a16ae5538bf92 100644 --- a/src/test/ui/missing-items/missing-type-parameter.stderr +++ b/src/test/ui/missing-items/missing-type-parameter.stderr @@ -1,10 +1,8 @@ -error[E0282]: unable to infer enough type information about `X` +error[E0282]: type annotations needed --> $DIR/missing-type-parameter.rs:14:5 | 14 | foo(); | ^^^ cannot infer type for `X` - | - = note: type annotations or generic parameter binding required error: aborting due to previous error diff --git a/src/tools/compiletest/Cargo.toml b/src/tools/compiletest/Cargo.toml index 2982f29f931c3..1fc98a78a7c47 100644 --- a/src/tools/compiletest/Cargo.toml +++ b/src/tools/compiletest/Cargo.toml @@ -2,9 +2,9 @@ authors = ["The Rust Project Developers"] name = "compiletest" version = "0.0.0" -build = "build.rs" [dependencies] log = "0.3" env_logger = { version = "0.3.5", default-features = false } rustc-serialize = "0.3" +filetime = "0.1" diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs index 1aeb76c0a0ece..eb8cdcee6e69c 100644 --- a/src/tools/compiletest/src/common.rs +++ b/src/tools/compiletest/src/common.rs @@ -185,6 +185,9 @@ pub struct Config { // Print one character per test instead of one line pub quiet: bool, + // where to find the qemu test client process, if we're using it + pub qemu_test_client: Option, + // Configuration for various run-make tests frobbing things like C compilers // or querying about various LLVM component information. pub cc: String, diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index 71d8d62c75b69..522cd222c2691 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -25,6 +25,7 @@ use extract_gdb_version; pub struct EarlyProps { pub ignore: bool, pub should_fail: bool, + pub aux: Vec, } impl EarlyProps { @@ -32,6 +33,7 @@ impl EarlyProps { let mut props = EarlyProps { ignore: false, should_fail: false, + aux: Vec::new(), }; iter_header(testfile, @@ -50,6 +52,10 @@ impl EarlyProps { ignore_lldb(config, ln) || ignore_llvm(config, ln); + if let Some(s) = parse_aux_build(ln) { + props.aux.push(s); + } + props.should_fail = props.should_fail || parse_name_directive(ln, "should-fail"); }); diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 43d02479fb17d..5a97f7e3ee9b5 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -21,17 +21,11 @@ extern crate libc; extern crate test; extern crate getopts; - -#[cfg(cargobuild)] extern crate rustc_serialize; -#[cfg(not(cargobuild))] -extern crate serialize as rustc_serialize; - #[macro_use] extern crate log; - -#[cfg(cargobuild)] extern crate env_logger; +extern crate filetime; use std::env; use std::ffi::OsString; @@ -39,6 +33,7 @@ use std::fs; use std::io; use std::path::{Path, PathBuf}; use std::process::Command; +use filetime::FileTime; use getopts::{optopt, optflag, reqopt}; use common::Config; use common::{Pretty, DebugInfoGdb, DebugInfoLldb, Mode}; @@ -58,11 +53,7 @@ mod raise_fd_limit; mod uidiff; fn main() { - #[cfg(cargobuild)] - fn log_init() { env_logger::init().unwrap(); } - #[cfg(not(cargobuild))] - fn log_init() {} - log_init(); + env_logger::init().unwrap(); let config = parse_config(env::args().collect()); @@ -116,6 +107,7 @@ pub fn parse_config(args: Vec ) -> Config { reqopt("", "llvm-components", "list of LLVM components built in", "LIST"), reqopt("", "llvm-cxxflags", "C++ flags for LLVM", "FLAGS"), optopt("", "nodejs", "the name of nodejs", "PATH"), + optopt("", "qemu-test-client", "path to the qemu test client", "PATH"), optflag("h", "help", "show this message")]; let (argv0, args_) = args.split_first().unwrap(); @@ -196,6 +188,7 @@ pub fn parse_config(args: Vec ) -> Config { lldb_python_dir: matches.opt_str("lldb-python-dir"), verbose: matches.opt_present("verbose"), quiet: matches.opt_present("quiet"), + qemu_test_client: matches.opt_str("qemu-test-client").map(PathBuf::from), cc: matches.opt_str("cc").unwrap(), cxx: matches.opt_str("cxx").unwrap(), @@ -302,6 +295,14 @@ pub fn run_tests(config: &Config) { // time. env::set_var("RUST_TEST_THREADS", "1"); } + + DebugInfoGdb => { + if config.qemu_test_client.is_some() { + println!("WARNING: debuginfo tests are not available when \ + testing with QEMU"); + return + } + } _ => { /* proceed */ } } @@ -468,7 +469,7 @@ pub fn make_test(config: &Config, testpaths: &TestPaths) -> test::TestDescAndFn }; // Debugging emscripten code doesn't make sense today - let mut ignore = early_props.ignore; + let mut ignore = early_props.ignore || !up_to_date(config, testpaths, &early_props); if (config.mode == DebugInfoGdb || config.mode == DebugInfoLldb) && config.target.contains("emscripten") { ignore = true; @@ -484,6 +485,42 @@ pub fn make_test(config: &Config, testpaths: &TestPaths) -> test::TestDescAndFn } } +fn stamp(config: &Config, testpaths: &TestPaths) -> PathBuf { + let stamp_name = format!("{}-H-{}-T-{}-S-{}.stamp", + testpaths.file.file_name().unwrap() + .to_str().unwrap(), + config.host, + config.target, + config.stage_id); + config.build_base.canonicalize() + .unwrap_or(config.build_base.clone()) + .join(stamp_name) +} + +fn up_to_date(config: &Config, testpaths: &TestPaths, props: &EarlyProps) -> bool { + let stamp = mtime(&stamp(config, testpaths)); + let mut inputs = vec![ + mtime(&testpaths.file), + mtime(&config.rustc_path), + ]; + for aux in props.aux.iter() { + inputs.push(mtime(&testpaths.file.parent().unwrap() + .join("auxiliary") + .join(aux))); + } + for lib in config.run_lib_path.read_dir().unwrap() { + let lib = lib.unwrap(); + inputs.push(mtime(&lib.path())); + } + inputs.iter().any(|input| *input > stamp) +} + +fn mtime(path: &Path) -> FileTime { + fs::metadata(path).map(|f| { + FileTime::from_last_modification_time(&f) + }).unwrap_or(FileTime::zero()) +} + pub fn make_test_name(config: &Config, testpaths: &TestPaths) -> test::TestName { // Convert a complete path to something like // diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index a8c46722e163b..bcec1f63bc089 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -80,6 +80,8 @@ pub fn run(config: Config, testpaths: &TestPaths) { } base_cx.complete_all(); + + File::create(::stamp(&config, &testpaths)).unwrap(); } struct TestCx<'test> { @@ -1190,7 +1192,45 @@ actual:\n\ "arm-linux-androideabi" | "armv7-linux-androideabi" | "aarch64-linux-android" => { self._arm_exec_compiled_test(env) } - _=> { + + // This is pretty similar to below, we're transforming: + // + // program arg1 arg2 + // + // into + // + // qemu-test-client run program:support-lib.so arg1 arg2 + // + // The test-client program will upload `program` to the emulator + // along with all other support libraries listed (in this case + // `support-lib.so`. It will then execute the program on the + // emulator with the arguments specified (in the environment we give + // the process) and then report back the same result. + _ if self.config.qemu_test_client.is_some() => { + let aux_dir = self.aux_output_dir_name(); + let mut args = self.make_run_args(); + let mut program = args.prog.clone(); + if let Ok(entries) = aux_dir.read_dir() { + for entry in entries { + let entry = entry.unwrap(); + if !entry.path().is_file() { + continue + } + program.push_str(":"); + program.push_str(entry.path().to_str().unwrap()); + } + } + args.args.insert(0, program); + args.args.insert(0, "run".to_string()); + args.prog = self.config.qemu_test_client.clone().unwrap() + .into_os_string().into_string().unwrap(); + self.compose_and_run(args, + env, + self.config.run_lib_path.to_str().unwrap(), + Some(aux_dir.to_str().unwrap()), + None) + } + _ => { let aux_dir = self.aux_output_dir_name(); self.compose_and_run(self.make_run_args(), env, diff --git a/src/tools/qemu-test-client/Cargo.toml b/src/tools/qemu-test-client/Cargo.toml new file mode 100644 index 0000000000000..eb326c01de4f6 --- /dev/null +++ b/src/tools/qemu-test-client/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "qemu-test-client" +version = "0.1.0" +authors = ["The Rust Project Developers"] + +[dependencies] diff --git a/src/tools/qemu-test-client/src/main.rs b/src/tools/qemu-test-client/src/main.rs new file mode 100644 index 0000000000000..b7ff4116eb5de --- /dev/null +++ b/src/tools/qemu-test-client/src/main.rs @@ -0,0 +1,221 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +/// This is a small client program intended to pair with `qemu-test-server` in +/// this repository. This client connects to the server over TCP and is used to +/// push artifacts and run tests on the server instead of locally. +/// +/// Here is also where we bake in the support to spawn the QEMU emulator as +/// well. + +use std::env; +use std::fs::File; +use std::io::prelude::*; +use std::io::{self, BufWriter}; +use std::net::TcpStream; +use std::path::Path; +use std::process::{Command, Stdio}; +use std::thread; +use std::time::Duration; + +macro_rules! t { + ($e:expr) => (match $e { + Ok(e) => e, + Err(e) => panic!("{} failed with {}", stringify!($e), e), + }) +} + +fn main() { + let mut args = env::args().skip(1); + + match &args.next().unwrap()[..] { + "spawn-emulator" => { + spawn_emulator(Path::new(&args.next().unwrap()), + Path::new(&args.next().unwrap())) + } + "push" => { + push(Path::new(&args.next().unwrap())) + } + "run" => { + run(args.next().unwrap(), args.collect()) + } + cmd => panic!("unknown command: {}", cmd), + } +} + +fn spawn_emulator(rootfs: &Path, tmpdir: &Path) { + // Generate a new rootfs image now that we've updated the test server + // executable. This is the equivalent of: + // + // find $rootfs -print 0 | cpio --null -o --format=newc > rootfs.img + let rootfs_img = tmpdir.join("rootfs.img"); + let mut cmd = Command::new("cpio"); + cmd.arg("--null") + .arg("-o") + .arg("--format=newc") + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .current_dir(rootfs); + let mut child = t!(cmd.spawn()); + let mut stdin = child.stdin.take().unwrap(); + let rootfs = rootfs.to_path_buf(); + thread::spawn(move || add_files(&mut stdin, &rootfs, &rootfs)); + t!(io::copy(&mut child.stdout.take().unwrap(), + &mut t!(File::create(&rootfs_img)))); + assert!(t!(child.wait()).success()); + + // Start up the emulator, in the background + let mut cmd = Command::new("qemu-system-arm"); + cmd.arg("-M").arg("vexpress-a15") + .arg("-m").arg("1024") + .arg("-kernel").arg("/tmp/zImage") + .arg("-initrd").arg(&rootfs_img) + .arg("-dtb").arg("/tmp/vexpress-v2p-ca15-tc1.dtb") + .arg("-append").arg("console=ttyAMA0 root=/dev/ram rdinit=/sbin/init init=/sbin/init") + .arg("-nographic") + .arg("-redir").arg("tcp:12345::12345"); + t!(cmd.spawn()); + + // Wait for the emulator to come online + loop { + let dur = Duration::from_millis(100); + if let Ok(mut client) = TcpStream::connect("127.0.0.1:12345") { + t!(client.set_read_timeout(Some(dur))); + t!(client.set_write_timeout(Some(dur))); + if client.write_all(b"ping").is_ok() { + let mut b = [0; 4]; + if client.read_exact(&mut b).is_ok() { + break + } + } + } + thread::sleep(dur); + } + + fn add_files(w: &mut Write, root: &Path, cur: &Path) { + for entry in t!(cur.read_dir()) { + let entry = t!(entry); + let path = entry.path(); + let to_print = path.strip_prefix(root).unwrap(); + t!(write!(w, "{}\u{0}", to_print.to_str().unwrap())); + if t!(entry.file_type()).is_dir() { + add_files(w, root, &path); + } + } + } +} + +fn push(path: &Path) { + let client = t!(TcpStream::connect("127.0.0.1:12345")); + let mut client = BufWriter::new(client); + t!(client.write_all(b"push")); + t!(client.write_all(path.file_name().unwrap().to_str().unwrap().as_bytes())); + t!(client.write_all(&[0])); + let mut file = t!(File::open(path)); + t!(io::copy(&mut file, &mut client)); + t!(client.flush()); + println!("done pushing {:?}", path); +} + +fn run(files: String, args: Vec) { + let client = t!(TcpStream::connect("127.0.0.1:12345")); + let mut client = BufWriter::new(client); + t!(client.write_all(b"run ")); + + // Send over the args + for arg in args { + t!(client.write_all(arg.as_bytes())); + t!(client.write_all(&[0])); + } + t!(client.write_all(&[0])); + + // Send over env vars + for (k, v) in env::vars() { + if k != "PATH" && k != "LD_LIBRARY_PATH" { + t!(client.write_all(k.as_bytes())); + t!(client.write_all(&[0])); + t!(client.write_all(v.as_bytes())); + t!(client.write_all(&[0])); + } + } + t!(client.write_all(&[0])); + + // Send over support libraries + let mut files = files.split(':'); + let exe = files.next().unwrap(); + for file in files.map(Path::new) { + t!(client.write_all(file.file_name().unwrap().to_str().unwrap().as_bytes())); + t!(client.write_all(&[0])); + send(&file, &mut client); + } + t!(client.write_all(&[0])); + + // Send over the client executable as the last piece + send(exe.as_ref(), &mut client); + + println!("uploaded {:?}, waiting for result", exe); + + // Ok now it's time to read all the output. We're receiving "frames" + // representing stdout/stderr, so we decode all that here. + let mut header = [0; 5]; + let mut stderr_done = false; + let mut stdout_done = false; + let mut client = t!(client.into_inner()); + let mut stdout = io::stdout(); + let mut stderr = io::stderr(); + while !stdout_done || !stderr_done { + t!(client.read_exact(&mut header)); + let amt = ((header[1] as u64) << 24) | + ((header[2] as u64) << 16) | + ((header[3] as u64) << 8) | + ((header[4] as u64) << 0); + if header[0] == 0 { + if amt == 0 { + stdout_done = true; + } else { + t!(io::copy(&mut (&mut client).take(amt), &mut stdout)); + t!(stdout.flush()); + } + } else { + if amt == 0 { + stderr_done = true; + } else { + t!(io::copy(&mut (&mut client).take(amt), &mut stderr)); + t!(stderr.flush()); + } + } + } + + // Finally, read out the exit status + let mut status = [0; 5]; + t!(client.read_exact(&mut status)); + let code = ((status[1] as i32) << 24) | + ((status[2] as i32) << 16) | + ((status[3] as i32) << 8) | + ((status[4] as i32) << 0); + if status[0] == 0 { + std::process::exit(code); + } else { + println!("died due to signal {}", code); + std::process::exit(3); + } +} + +fn send(path: &Path, dst: &mut Write) { + let mut file = t!(File::open(&path)); + let amt = t!(file.metadata()).len(); + t!(dst.write_all(&[ + (amt >> 24) as u8, + (amt >> 16) as u8, + (amt >> 8) as u8, + (amt >> 0) as u8, + ])); + t!(io::copy(&mut file, dst)); +} diff --git a/src/tools/qemu-test-server/Cargo.toml b/src/tools/qemu-test-server/Cargo.toml new file mode 100644 index 0000000000000..af445a2593515 --- /dev/null +++ b/src/tools/qemu-test-server/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "qemu-test-server" +version = "0.1.0" +authors = ["The Rust Project Developers"] + +[dependencies] diff --git a/src/tools/qemu-test-server/src/main.rs b/src/tools/qemu-test-server/src/main.rs new file mode 100644 index 0000000000000..1c5d7b915baac --- /dev/null +++ b/src/tools/qemu-test-server/src/main.rs @@ -0,0 +1,232 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +/// This is a small server which is intended to run inside of an emulator. This +/// server pairs with the `qemu-test-client` program in this repository. The +/// `qemu-test-client` connects to this server over a TCP socket and performs +/// work such as: +/// +/// 1. Pushing shared libraries to the server +/// 2. Running tests through the server +/// +/// The server supports running tests concurrently and also supports tests +/// themselves having support libraries. All data over the TCP sockets is in a +/// basically custom format suiting our needs. + +use std::fs::{self, File, Permissions}; +use std::io::prelude::*; +use std::io::{self, BufReader}; +use std::net::{TcpListener, TcpStream}; +use std::os::unix::prelude::*; +use std::sync::{Arc, Mutex}; +use std::path::Path; +use std::str; +use std::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; +use std::thread; +use std::process::{Command, Stdio}; + +macro_rules! t { + ($e:expr) => (match $e { + Ok(e) => e, + Err(e) => panic!("{} failed with {}", stringify!($e), e), + }) +} + +static TEST: AtomicUsize = ATOMIC_USIZE_INIT; + +fn main() { + println!("starting test server"); + let listener = t!(TcpListener::bind("10.0.2.15:12345")); + println!("listening!"); + + let work = Path::new("/tmp/work"); + t!(fs::create_dir_all(work)); + + let lock = Arc::new(Mutex::new(())); + + for socket in listener.incoming() { + let mut socket = t!(socket); + let mut buf = [0; 4]; + t!(socket.read_exact(&mut buf)); + if &buf[..] == b"ping" { + t!(socket.write_all(b"pong")); + } else if &buf[..] == b"push" { + handle_push(socket, work); + } else if &buf[..] == b"run " { + let lock = lock.clone(); + thread::spawn(move || handle_run(socket, work, &lock)); + } else { + panic!("unknown command {:?}", buf); + } + } +} + +fn handle_push(socket: TcpStream, work: &Path) { + let mut reader = BufReader::new(socket); + let mut filename = Vec::new(); + t!(reader.read_until(0, &mut filename)); + filename.pop(); // chop off the 0 + let filename = t!(str::from_utf8(&filename)); + + let path = work.join(filename); + t!(io::copy(&mut reader, &mut t!(File::create(&path)))); + t!(fs::set_permissions(&path, Permissions::from_mode(0o755))); +} + +struct RemoveOnDrop<'a> { + inner: &'a Path, +} + +impl<'a> Drop for RemoveOnDrop<'a> { + fn drop(&mut self) { + t!(fs::remove_dir_all(self.inner)); + } +} + +fn handle_run(socket: TcpStream, work: &Path, lock: &Mutex<()>) { + let mut arg = Vec::new(); + let mut reader = BufReader::new(socket); + + // Allocate ourselves a directory that we'll delete when we're done to save + // space. + let n = TEST.fetch_add(1, Ordering::SeqCst); + let path = work.join(format!("test{}", n)); + let exe = path.join("exe"); + t!(fs::create_dir(&path)); + let _a = RemoveOnDrop { inner: &path }; + + // First up we'll get a list of arguments delimited with 0 bytes. An empty + // argument means that we're done. + let mut cmd = Command::new(&exe); + while t!(reader.read_until(0, &mut arg)) > 1 { + cmd.arg(t!(str::from_utf8(&arg[..arg.len() - 1]))); + arg.truncate(0); + } + + // Next we'll get a bunch of env vars in pairs delimited by 0s as well + arg.truncate(0); + while t!(reader.read_until(0, &mut arg)) > 1 { + let key_len = arg.len() - 1; + let val_len = t!(reader.read_until(0, &mut arg)) - 1; + { + let key = &arg[..key_len]; + let val = &arg[key_len + 1..][..val_len]; + let key = t!(str::from_utf8(key)); + let val = t!(str::from_utf8(val)); + cmd.env(key, val); + } + arg.truncate(0); + } + + // The section of code from here down to where we drop the lock is going to + // be a critical section for us. On Linux you can't execute a file which is + // open somewhere for writing, as you'll receive the error "text file busy". + // Now here we never have the text file open for writing when we spawn it, + // so why do we still need a critical section? + // + // Process spawning first involves a `fork` on Unix, which clones all file + // descriptors into the child process. This means that it's possible for us + // to open the file for writing (as we're downloading it), then some other + // thread forks, then we close the file and try to exec. At that point the + // other thread created a child process with the file open for writing, and + // we attempt to execute it, so we get an error. + // + // This race is resolve by ensuring that only one thread can writ ethe file + // and spawn a child process at once. Kinda an unfortunate solution, but we + // don't have many other choices with this sort of setup! + // + // In any case the lock is acquired here, before we start writing any files. + // It's then dropped just after we spawn the child. That way we don't lock + // the execution of the child, just the creation of its files. + let lock = lock.lock(); + + // Next there's a list of dynamic libraries preceded by their filenames. + arg.truncate(0); + while t!(reader.read_until(0, &mut arg)) > 1 { + let dst = path.join(t!(str::from_utf8(&arg[..arg.len() - 1]))); + let amt = read_u32(&mut reader) as u64; + t!(io::copy(&mut reader.by_ref().take(amt), + &mut t!(File::create(&dst)))); + t!(fs::set_permissions(&dst, Permissions::from_mode(0o755))); + arg.truncate(0); + } + + // Finally we'll get the binary. The other end will tell us how big the + // binary is and then we'll download it all to the exe path we calculated + // earlier. + let amt = read_u32(&mut reader) as u64; + t!(io::copy(&mut reader.by_ref().take(amt), + &mut t!(File::create(&exe)))); + t!(fs::set_permissions(&exe, Permissions::from_mode(0o755))); + + // Support libraries were uploaded to `work` earlier, so make sure that's + // in `LD_LIBRARY_PATH`. Also include our own current dir which may have + // had some libs uploaded. + cmd.env("LD_LIBRARY_PATH", + format!("{}:{}", work.display(), path.display())); + + // Spawn the child and ferry over stdout/stderr to the socket in a framed + // fashion (poor man's style) + let mut child = t!(cmd.stdin(Stdio::null()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn()); + drop(lock); + let mut stdout = child.stdout.take().unwrap(); + let mut stderr = child.stderr.take().unwrap(); + let socket = Arc::new(Mutex::new(reader.into_inner())); + let socket2 = socket.clone(); + let thread = thread::spawn(move || my_copy(&mut stdout, 0, &*socket2)); + my_copy(&mut stderr, 1, &*socket); + thread.join().unwrap(); + + // Finally send over the exit status. + let status = t!(child.wait()); + let (which, code) = match status.code() { + Some(n) => (0, n), + None => (1, status.signal().unwrap()), + }; + t!(socket.lock().unwrap().write_all(&[ + which, + (code >> 24) as u8, + (code >> 16) as u8, + (code >> 8) as u8, + (code >> 0) as u8, + ])); +} + +fn my_copy(src: &mut Read, which: u8, dst: &Mutex) { + let mut b = [0; 1024]; + loop { + let n = t!(src.read(&mut b)); + let mut dst = dst.lock().unwrap(); + t!(dst.write_all(&[ + which, + (n >> 24) as u8, + (n >> 16) as u8, + (n >> 8) as u8, + (n >> 0) as u8, + ])); + if n > 0 { + t!(dst.write_all(&b[..n])); + } else { + break + } + } +} + +fn read_u32(r: &mut Read) -> u32 { + let mut len = [0; 4]; + t!(r.read_exact(&mut len)); + ((len[0] as u32) << 24) | + ((len[1] as u32) << 16) | + ((len[2] as u32) << 8) | + ((len[3] as u32) << 0) +}