Commit Graph

777 Commits

Author SHA1 Message Date
Graydon Hoare
cdce33a421 Add configure and make machinery to activate perf metrics and ratchets. 2013-07-16 09:33:54 -07:00
Felix S. Klock II
534dd628a7 Add dependence arc from running rustc to its libraries.
This commit fixes some oversights in the Makefile where rustc could be
invoked without some of its dependencies yet in place.  (I encountered
the problem in practice; its not just theoretical.)

As written in Makefile.in, $(STAGE$(1)_T_$(2)_H_$(3)) is the way one
writes an invocation of rustc where $(1) is the stage number $(2) is
the target triple $(3) is the host triple.  (Other uses of the macro
may plug in actual values or different parameters in for those three
formal parameters.)

When you have invocations of $(STAGE...), you need to make sure that
its dependences are satisfied; otherwise, if someone is using `make
-jN` for certain (large-ish) `N`, one can encounter situations where
GNU make attempts to invoke `rustc` before it has actually copied some
of its libraries into place, such as libmorestack.a, which causes a
link failure when the rustc invocation attempts to link in those
libraries.

In this case, the main prerequisite to add is TSREQ$(1)_T_$(2)_H_$(3),
which is described in Makefile.in as "Prerequisites for using the
stageN compiler to build target artifacts"

----

In addition to adding the extra dependences on TSREQ..., I also
replaced occurrences of the pattern:

    TSREQ$(1)_T_$(2)_H_$(3)
    $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB_$(2))
    $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_EXTRALIB_$(2))

with:

    SREQ$(1)_T_$(2)_H_$(3)

which is equivalent to the above, as defined in Makefile.in

----

Finally, for the cases where TSREQ was missing in tests.mk, I went
ahead and put in a dependence on SREQ rather than just TSREQ, since it
was not clear to me how one could expect to compile those cases
without stdlib and extralib.

(It could well be that I should have gone ahead and done the same in
 other cases where I saw TSREQ was missing, and put SREQ in those
 cases as well.  But this seemed like a good measure for now, without
 needing to tax my understanding of the overall makefile
 infrastructure much further.)
2013-07-16 13:45:30 +02:00
bors
60d5bb9413 auto merge of #7796 : thomaslee/rust/issue-6247, r=z0w0
This closes #6247 by simply ensuring librustllvm.so gets installed to the target lib directory in addition to the host lib directory.
2013-07-14 23:40:19 -07:00
Tom Lee
27435c081f Install librustllvm.so to target lib directory 2013-07-14 21:53:47 -07:00
bors
c3e3090ac2 auto merge of #7778 : tedhorst/rust/manuninstall, r=cmr
The new man pages: rust.1, rustdoc.1, rusti.1, and rustpkg.1 were not being removed with make uninstall.
2013-07-14 02:31:26 -07:00
Ted Horst
f2ecf18a8e remove new man pages on make uninstall 2013-07-13 13:56:08 -05:00
Birunthan Mohanathas
9735f339fe Add CONTRIBUTING.md and RELEASES.txt to release tarball. Closes #7561. 2013-07-13 16:57:01 +03:00
Graydon Hoare
fbc5bb4c0a wire up makefile to run codegen tests and add one to start 2013-07-11 13:15:52 -07:00
bors
e95fcfafc7 auto merge of #7632 : gavinb/rust/7484_manpages, r=cmr
This patch updates the existing manpage and creates new pages for all of the rust command line tools. Closes #7484.
2013-07-11 07:37:36 -07:00
bors
8a7b636649 auto merge of #7637 : pnkfelix/rust/fsk-guard-against-stale-libraries-issue3225-safeguarded, r=graydon
When building Rust libraries (e.g. librustc, libstd, etc), checks for
and verbosely removes previous build products before invoking rustc.
(Also, when Make variable VERBOSE is defined, it will list all of the
libraries matching the object library's glob after the rustc
invocation has completed.)

When installing Rust libraries, checks for previous libraries in
target install directory, but does not remove them.

The thinking behind these two different modes of operation is that the
installation target, unlike the build tree, is not under the control
of this infrastructure and it is not up to this Makefile to decide if
the previous libraries should be removed.

Fixes #3225 (at least in terms of mitigating the multiple library
problem by proactively warning the user about it.)
2013-07-10 01:10:29 -07:00
Felix S. Klock II
ace49442a6 Fix #3225: Incorporate feedback from Graydon.
This is a small follow-up fix to the previous commit: I needed
to quote the right-hand side of the definition for the variable
MATCHES, to handle the case where there are more than one previously
installed libraries in the target directory.
2013-07-09 15:31:43 +02:00
Felix S. Klock II
25f51eeda0 Fix #3225: Incorporate feedback from Graydon.
Namely, switched in many places to using GNU make provided functions
for directory listing and text processing, rather than spawning a
shell process to do that work.

In the process of the revision, learned about Target-specific
variables, which were very applicable to INSTALL_LIB (which, on a
per-recipe basis, was always receiving the same actual arguments for
its first two formal parameters in every invocation).

  http://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html

(We might be able to make use of those in future refactorings.)

----

Also adds a cleanup pass to get-snapshot.py as well, since the same
problem arises when we unpack libraries from the snapshot archive into
a build directory with a prior snapshot's artifacts.  (I put this step
into the python script rather than the makefile because I wanted to
delay the cleanup pass until after we have at least successfully
downloaded the tarball.  That way, if the download fails, you should
not destroy the previous unarchived snapshot libraries and build
products.)

----

Also reverted whitespace changes to minimize diff.
I plan to put them back in in a dedicated commit elsewhere.
2013-07-09 13:08:50 +02:00
bors
62bb843e32 auto merge of #7641 : lucab/rust/lucab/po4a, r=catamorphism
As per https://mail.mozilla.org/pipermail/rust-dev/2013-July/004685.html 

This is the initial machinery to setup the l10n infrastructure for markdown documentation.
A new "docs-l10n" target will take care of generating, updating and then building .pot and .po files, and later on the final .md.

This commit includes the .pot for all current .md docs; they can be feed directly to Mozilla Verbatim if wanted.
Please note that po4a only provides the orig.md -> .pot -> l10n.po -> l10n.md flow. The l10n.md -> l10n.html generation is not currently built in the makefile, as no language has been enabled.
2013-07-09 03:25:29 -07:00
Alex Crichton
d49acef07b Add rusti/rustpkg to check-lite
Ironically also disable rusti tests for now, but mainly because they're awaiting
LLVM upgrades before proceeding
2013-07-07 19:13:21 -07:00
Luca Bruno
3177e63dee Use po4a to provide translatable documentation
This commit add a new "docs-l10n" make target which uses po4a to:
* create .pot (PO templates) from markdown doc
* update templates and po for enabled languages
* generate translated markdown for completed (> 80%) translations

Currently, no language has been activated.

Signed-off-by: Luca Bruno <lucab@debian.org>
2013-07-07 21:12:00 +02:00
Felix S. Klock II
033ac5497e Fix #3225: Check for old Rust libraries when building and installing.
When building Rust libraries (e.g. librustc, libstd, etc), checks for
and verbosely removes previous build products before invoking rustc.
(Also, when Make variable VERBOSE is defined, it will list all of the
libraries matching the object library's glob after the rustc
invocation has completed.)

When installing Rust libraries, checks for previous libraries in
target install directory, but does not remove them.

The thinking behind these two different modes of operation is that the
installation target, unlike the build tree, is not under the control
of this infrastructure and it is not up to this Makefile to decide if
the previous libraries should be removed.
2013-07-07 15:23:40 +02:00
Gavin Baker
6143419ee1 Add new manpages to install script 2013-07-07 14:45:39 +10:00
bors
6595c42577 auto merge of #7520 : alexcrichton/rust/update-compiletest, r=pcwalton
Also marks them with `#[deny(warnings)]` (I think they're both only ever really built past stage1)
2013-07-06 02:20:18 -07:00
Graydon Hoare
f1159446ba Update tests.mk
disable rusti tests, nothing's landing
2013-07-06 02:19:37 -07:00
Alex Crichton
8552a74775 Bring compiletest/rustpkg/driver up to date on std vs core 2013-07-04 16:30:48 -07:00
Luqman Aden
5007fb2d4d Add x64 windows to platform.mk and mingw64 header fixes. 2013-07-03 23:33:59 -04:00
Young-il Choi
0a3f6bc130 mk: clean-llvm for cross-compile 2013-06-30 12:54:17 +09:00
bors
88830996d8 auto merge of #7442 : graydon/rust/clean-llvm-trigger, r=brson
This makes it possible for us to trigger the llvm-clean make-target by checking in a change that touches rustllvm/llvm-auto-clean-stamp. Most developers don't need to see or know about this, but when you push a change that "needs an LLVM rebuild", even if not otherwise obvious, this should give a mechanism to do it.
2013-06-29 08:17:01 -07:00
bors
5d2e565bb1 auto merge of #7437 : brson/rust/winver, r=brson
r? @graydon (or anybody)
2013-06-28 14:14:03 -07:00
Daniel Micay
659cd55e75 add a tutorial on containers and iterators 2013-06-28 00:24:09 -04:00
Brian Anderson
6511fe45e2 mk: Include all bins in the windows install 2013-06-27 19:00:12 -07:00
Graydon Hoare
9591832112 mk: add mechanisms for triggering clean-llvm builds from commits 2013-06-27 17:12:07 -07:00
Alex Crichton
c109bed15b Deny common lints by default for lib{std,extra} 2013-06-25 17:39:43 -07:00
Alex Crichton
42b44b21b1 Rename all files with the 'rc' extension 2013-06-25 08:55:15 -07:00
bors
f348465283 auto merge of #7128 : yichoi/rust/fix_sometc, r=brson
- Fix stat struct for Android (found by SEGV at run-pass/stat.rs)
- Adjust some test cases to rpass for Android 
- Modify some script to rpass for Android
2013-06-20 11:35:34 -07:00
Brian Anderson
371a316ec9 Turn off jemalloc 2013-06-18 12:03:14 -07:00
Young-il Choi
4efb17fcf5 mk: tests.mk simplify the method to clean arm testing directory 2013-06-17 18:41:22 +09:00
Brian Anderson
069086cdb4 Remove the fuzzer
It is suffering from a bad case of megabitrot.
2013-06-15 16:12:56 -07:00
Young-il Choi
00ff170e7f mk: arm support - disable tls of jemalloc on rt.mk 2013-06-13 11:48:22 +09:00
James Miller
cf536e013a Pass the correct build flags to jemalloc
Apparently the standard --build and --host flags don't actually
_do_ anything. This re-uses the libuv flags, since they are the
same for getting jemalloc to cross-compile
2013-06-10 18:26:24 +12:00
Daniel Micay
a593d8f67c pass correct flags to jemalloc for cross-compiling 2013-06-07 18:27:15 -04:00
bors
5d2cadbfea auto merge of #6895 : cmr/rust/jemalloc, r=brson 2013-06-06 18:43:37 -07:00
Brian Anderson
f702b900d8 mk: Fix _RUST_STAGEX variables under cross compile. Fix incoming 2013-06-06 17:27:22 -07:00
Brian Anderson
829b5de998 mk: Bulid rustrt with -pthread instead of -lpthread 2013-06-05 20:08:47 -04:00
Corey Richardson
2d635179f0 Windows fixes 2013-06-01 17:50:26 -04:00
Daniel Micay
933897c5f5 integrate jemalloc into the build 2013-06-01 11:31:44 -04:00
Young-il Choi
5076bca1ba mk: test.mk modify to better support 2013-06-01 17:28:57 +09:00
bors
237dce12c9 auto merge of #6689 : graydon/rust/issue-5661-doc-test-targets, r=graydon
Re-enables `make check-stage2-doc-tutorial` and friends. r? @brson
2013-05-30 17:22:49 -07:00
Graydon Hoare
858ca2e3c8 fix the check-stageN-doc-$doc targets, close #5661 2013-05-30 15:49:53 -07:00
Felix S. Klock II
7f410b326c Attempt to get reuse of common code from multiple clones in different directories. 2013-05-30 16:26:12 +02:00
bors
bd30285c84 auto merge of #6813 : pnkfelix/rust/fsk-issue-6805-ccache-support, r=catamorphism
Fix #6805: add --enable-ccache configure option to prefix compiler invocations with `ccache` to attempt to reuse common results, e.g. for LLVM (re)builds.

The information at developer [Note-ccache](../../wiki/Note-ccache) and at [ccache and clang concerns](http://petereisentraut.blogspot.fr/2011/09/ccache-and-clang-part-2.html) were what drove my introduction of the `-Qunused-arguments` and `CCACHE_CPP2` options.  (Though I did confirm first-hand that at least the first really is necessary.)

Yes, one certainly can re-route how `gcc` and `clang` are resolved in one's PATH and use that as a way to invoke `ccache`.  But I personally do not want to introduce that change to my own PATH, and this seems like a small enough change that it does not hurt to add it, at least for now.  (I don't know what form it would take when we move over to `rustpkg`.)
2013-05-29 15:10:42 -07:00
Felix S. Klock II
2b083373e4 Fix #6805: add --enable-ccache configure option to prefix compiler invocations with ccache to attempt to reuse common results, e.g. for LLVM (re)builds. 2013-05-29 23:18:09 +02:00
bors
d2957091c4 auto merge of #6733 : alexcrichton/rust/issue-2400, r=brson
Most of the relevant information can be found in the commit messages.

r? @brson - I just wanted to make sure the make changes aren't completely bogus

This would close #2400, #6517, and #6489 (although a run through incoming-full on linux would have to confirm the latter two)
2013-05-29 12:13:49 -07:00
Alex Crichton
ff86830c9c Define rustc's host triple at compile time
This way a cross-compiled rustc's answer to host_triple() is correct. The return
value of host_triple() reflects the actual host triple that the compiler was
build for, not the triple the compiler is being built on
2013-05-28 21:23:42 -05:00
James Miller
d694e283b3 Refactor optimization pass handling.
Refactor the optimization passes to explicitly use the passes. This commit
just re-implements the same passes as were already being run.

It also adds an option (behind `-Z`) to run the LLVM lint pass on the
unoptimized IR.
2013-05-29 14:16:49 +12:00
Alex Crichton
8749cb59d8 Fix 'make check-stage1-std' by correcting dependencies 2013-05-28 09:37:38 -05:00
bors
b238a08725 auto merge of #6728 : alexcrichton/rust/update-linenoise, r=Aatch
This updates the bundled linenoise library, and explicitly builds it with UTF8 support. This way rusti correctly handles utf8 characters when doing line operations.

Closes #6681
2013-05-24 23:34:58 -07:00
Alex Crichton
af27e17992 Set the USE_UTF8 flag for linenoise to handle utf8-input 2013-05-24 22:32:55 -05:00
Tom Lee
e69e80938b Define _RUST_STAGEN when building rustrt.
This lets us use #ifdefs to determine which stage of the build we happen
to be in, which is useful in the event we need to make changes to rustrt
that are incompatible with the code generated by stage0.

This should help pave the way to completing #6575, which will likely
require changes to type signatures for spawn_fn & glue_fn in rustrt.
2013-05-24 00:30:01 -07:00
Patrick Walton
0c820d4123 libstd: Rename libcore to libstd and libstd to libextra; update makefiles.
This only changes the directory names; it does not change the "real"
metadata names.
2013-05-22 21:57:05 -07:00
bors
d68c0279ea auto merge of #6249 : crabtw/rust/arm, r=brson
It uses the private field of TCB head to store stack limit. I tested on my Raspberry PI. A simple hello world program ran without any problem. However, for a more complex program, it segfaulted as #6231.
2013-05-17 18:19:27 -07:00
Alex Crichton
54f2147e8e Get unit tests for rusti working
* They didn't work before, because the location of the tests caused the
  'sysroot' option to crate lookup to be wrong for finding the correct stage's
  core/std libraries. This moves the compiled tests from the $host/test
  directory into a $host/$stage/test directory. This means that the sysroot will
  be correct and the core/std libraries can actually be found
* The LLVM bindings apparently aren't threadsafe, so we can't run multiple tests
  in parallel.
2013-05-14 14:11:07 -04:00
Alex Crichton
ae07170bd8 Update make dependencies of librust 2013-05-13 13:47:05 -04:00
Jyun-Yan You
c2bf9bf9fe improve MIPS backend and implement segmented stacks 2013-05-09 16:51:42 +08:00
bors
3a34e93651 auto merge of #6295 : yichoi/rust/pull-mingw32, r=brson
fix for #6279 #6253

mk: rt.mk regression patch for mingw32 after #6176

currently do not pass optimization option just make it works only

mk: target.mk host.mk fix for duplicated rules of mingw32 after #6235

It can be simply fixed with CFG_LIB check whether bin or lib however considering multiple target triples with linux and windows, CFG_LIB needs to configurable #5223 and #5577
2013-05-07 15:06:38 -07:00
Young-il Choi
930908aa90 mk: target.mk host.mk fix for duplicated rules of mingw32 after #6235 2013-05-07 15:29:05 +09:00
Young-il Choi
db38ab9ad9 mk: rt.mk regression patch for mingw32 after #6176 2013-05-07 15:26:55 +09:00
Jyun-Yan You
48b6262b38 preliminary Linux ARM support 2013-05-07 13:17:14 +08:00
Daniel Micay
d800147abb minor automatic whitespace fixes 2013-05-06 23:57:35 -04:00
bors
bd5fd6e42a auto merge of #6150 : yichoi/rust/arm-test-pull, r=brson
Support #5297

install.mk : install-runtime-target added for conveneice
                 automatically push runtime library to android device

test.mk : expanded to support android test automation with adb

compiletest : expanded to support android test automation with adb
2013-05-06 13:15:38 -07:00
bors
063851ffa1 auto merge of #6235 : pnkfelix/rust/issue-3326-play-with-directory-orderonly-prereqs, r=z0w0
r? (for #3326)
2013-05-05 05:09:36 -07:00
Felix S. Klock II
175a5eea42 Fix another goof: consistently use parent directory of target for rule.
(I wonder if there's a better way to write this in the rule itself;
i.e. something like `$$(dirname $$@)`.  But for now this will do.)
2013-05-04 12:46:11 +02:00
Felix S. Klock II
495bceb9b0 Fix syntax: had to use escaped $$ to have an effect after first expansion. 2013-05-04 10:57:56 +02:00
Young-il Choi
5681571f6c compiletest: remove --host and cleanup 2013-05-04 10:35:07 +09:00
Daniel Micay
86efd97a10 add gitattributes and fix whitespace issues 2013-05-03 20:01:42 -04:00
Felix S. Klock II
4dd0fa6876 Make build products depend on their target directories.
This is an attempt to address Issue #3326 by adding [*order-only*][1]
prerequsites of each build product on the directory where it is to go.
It is important that the prerequisites be order-only, since the
timestamp on a parent directory is not relevant to whether a product
is out of date; the parent directory merely needs to exist.

(This use case of generating target directories was provided as an
[example][2] of how order-only prequisites are used.)

[1]: http://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html

[2]: http://www.kolpackov.net/pipermail/notes/2004-January/000001.html
2013-05-03 18:53:47 +02:00
Young-il Choi
84bdd05acc compiletest: fix decision rule to run and cleanup 2013-05-04 00:49:18 +09:00
Young-il Choi
9ecb97ae58 mk: install.mk directory argument pass for install-runtime-target 2013-05-04 00:47:54 +09:00
Brian Anderson
6c478c7de8 Merge remote-tracking branch 'brson/io' into incoming
Conflicts:
	mk/rt.mk
	src/libcore/run.rs
2013-05-02 20:51:56 -07:00
Young-il Choi
17b368fd22 mk: configurable android test directory 2013-05-03 11:14:01 +09:00
Young-il Choi
6f6dd86248 compiletest: configurable test dir for ARM 2013-05-02 13:16:01 +09:00
Daniel Micay
d6697e7027 pass along CFLAGS/LINK_FLAGS to libuv
Closes #6142
2013-05-01 22:13:33 -04:00
Young-il Choi
3afd708e2a mk: minor fix for test.mk to support mutiple target test 2013-05-02 08:58:24 +09:00
Young-il Choi
57c126e9bb mk: test.mk expanded to ARM test automation 2013-05-01 18:50:23 +09:00
Young-il Choi
dca88701a3 mk: install-runtime-target added to install.mk (pushing shared library to android target) 2013-05-01 18:49:19 +09:00
Brian Anderson
9847428acf mk: Fix pdf build 2013-04-30 17:45:08 -07:00
Daniel Micay
0b377e53a1 clear *everything* from the tmp directory
The .tmp files were missed before. I don't think there's a need to use
*.ext instead of just *.
2013-04-30 17:09:11 -04:00
Brian Anderson
34f7255afa mk: reorganize doc build to fix dependencies. #6042
Most of our documentation requires both pandoc and node.js.
This simplifies the logic around those checks and fixes an
error when building without node.js but with pandoc.
2013-04-23 23:52:58 -07:00
Brian Anderson
e944c7dade Merge remote-tracking branch 'brson/io'
This also reverts some changes to TLS that were leaking memory.

Conflicts:
	src/libcore/rt/uv/net.rs
	src/libcore/task/local_data_priv.rs
	src/libcore/unstable/lang.rs
2013-04-23 19:19:32 -07:00
Brian Anderson
a292d51750 mk: Pass CFLAGS to the uv build 2013-04-22 19:20:12 -07:00
Tim Chevalier
d834c0d59d docs: Sketch out rustpkg manual 2013-04-22 18:17:32 -07:00
Brian Anderson
7cd681684f rt: Move test functions to rust_test_helpers.cpp 2013-04-15 13:39:15 -07:00
Luca Bruno
2190efb3ca Put AUTHORS.txt file in the release tarball 2013-04-08 10:15:12 +02:00
Jyun-Yan You
99b156e78a mk: mips toolchain config 2013-04-04 18:52:24 +08:00
Daniel Micay
88e4b5de83 install the librust{doc,pkg} host libraries 2013-04-02 19:25:03 -04:00
bors
686f448b0c auto merge of #5649 : thestinger/rust/lib, r=brson
There's no reason to make them executable, and this throws a warning
with the Arch Linux package lint tool (namcap) for .a files.
2013-03-31 18:15:40 -07:00
Daniel Micay
431380f011 install.mk: use INSTALL_LIB for all libraries
There's no reason to make them executable, and this throws a warning
with the Arch Linux package lint tool (namcap) for .a files.
2013-03-31 19:14:02 -04:00
Daniel Micay
c0be7df5de mark the assembly object stacks as non-executable
Closes #5643

This also removes the need to pass noexecstack to gcc, but that wasn't
actually working anymore.
2013-03-31 18:23:05 -04:00
Brian Anderson
30d4124a37 Merge remote-tracking branch 'brson/rt'
Conflicts:
	src/libcore/rt/context.rs
	src/libcore/rt/sched.rs
	src/libcore/rt/thread.rs
	src/libcore/rt/uv.rs
2013-03-25 12:28:54 -07:00
Daniel Micay
2cbfe6d19d stop installing empty .so files
Closes #4468
2013-03-21 20:32:57 -04:00
bors
251d0c4557 auto merge of #5350 : yichoi/rust/pull-0313-2, r=graydon,pcwalton
FIX #5330

rename arm-unknown-android to arm-linux-androideabi
2013-03-19 17:06:55 -07:00
Brian Anderson
5e6dacf32e mk: If NO_REBUILD is set then don't rebuild core/std before testing
Can make turnaround of testing changes to core/std/syntax much faster.
2013-03-18 16:59:37 -07:00
bors
9416ac5601 auto merge of #5355 : yichoi/rust/pull-0314, r=graydon
ar in rt.mk should be desinated by target-triples.
lt has been worked on linux but failed on mac
2013-03-14 11:25:02 -07:00
Young-il Choi
2657723cc5 mk: rt.mk ar desinated by target-triples 2013-03-14 02:26:09 +09:00
Young-il Choi
268faef63a mk: target triple rename arm-unknown-android->arm-linux-androideabi 2013-03-13 09:21:12 +09:00