diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-02-26 18:15:35 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-02-26 18:15:35 +0800 |
commit | 0c7faa5fd118366c4b272e036e95625ebccf67ea (patch) | |
tree | ebf8d025c5ccc3107411b1086aae6a79c53ead77 | |
parent | ee773edacfeba650931c604e266cf0862dbc2bfe (diff) | |
download | mrust-0c7faa5fd118366c4b272e036e95625ebccf67ea.tar.gz |
Main - Add support for -g option
-rw-r--r-- | Makefile | 21 | ||||
-rw-r--r-- | src/main.cpp | 10 |
2 files changed, 23 insertions, 8 deletions
@@ -44,6 +44,11 @@ CXXFLAGS += -Wno-pessimizing-move CXXFLAGS += -Wno-misleading-indentation #CXXFLAGS += -Wno-unused-private-field + +# - Flags to pass to all mrustc invocations +RUST_FLAGS := --cfg debug_assertions +#RUST_FLAGS += -g + SHELL = bash ifeq ($(DBGTPL),) @@ -127,14 +132,14 @@ output/lib%.hir: $(RUSTCSRC)src/lib%/lib.rs $(RUSTCSRC) $(BIN) @echo "--- [MRUSTC] $@" @mkdir -p output/ @rm -f $@ - $(DBG) $(ENV_$@) $(BIN) $< -o $@ $(ARGS_$@) $(PIPECMD) + $(DBG) $(ENV_$@) $(BIN) $< -o $@ $(RUST_FLAGS) $(ARGS_$@) $(PIPECMD) # # HACK: Work around gdb returning success even if the program crashed @test -e $@ output/lib%.hir: $(RUSTCSRC)src/lib%/src/lib.rs $(RUSTCSRC) $(BIN) @echo "--- [MRUSTC] $@" @mkdir -p output/ @rm -f $@ - $(DBG) $(BIN) $< -o $@ $(PIPECMD) + $(DBG) $(ENV_$@) $(BIN) $< -o $@ $(RUST_FLAGS) $(ARGS_$@) $(PIPECMD) # # HACK: Work around gdb returning success even if the program crashed @test -e $@ @@ -163,13 +168,13 @@ output/librustc_llvm.hir: $(LLVM_LINKAGE_FILE) RUSTC_LLVM_LINKAGE: $(LLVM_LINKAGE_FILE) output/librustc_llvm_build: rustc-nightly/src/librustc_llvm/build.rs $(call fcn_extcrate, std gcc build_helper alloc_system panic_abort) @echo "--- [MRUSTC] $@" - $(BIN) $< -o $@ -L output/libs $(PIPECMD) + $(BIN) $< -o $@ -L output/libs $(RUST_FLAGS) $(PIPECMD) output/libgcc.hir: crates.io/gcc-0.3.28/src/lib.rs $(BIN) output/libstd.hir @echo "--- [MRUSTC] $@" - $(BIN) $< -o $@ --crate-type rlib --crate-name gcc $(PIPECMD) + $(BIN) $< -o $@ --crate-type rlib --crate-name gcc $(RUST_FLAGS) $(PIPECMD) output/libbuild_helper.hir: rustc-nightly/src/build_helper/lib.rs $(BIN) output/libstd.hir @echo "--- [MRUSTC] $@" - $(BIN) $< -o $@ --crate-type rlib --crate-name build_helper $(PIPECMD) + $(BIN) $< -o $@ --crate-type rlib --crate-name build_helper $(RUST_FLAGS) $(PIPECMD) crates.io/%/src/lib.rs: crates.io/%.tar.gz tar -xf $< -C crates.io/ @@ -199,7 +204,7 @@ output/cargo_libflate/libminiz.a: output/libflate_build output/libflate_build: rustc-nightly/src/libflate/build.rs $(call fcn_extcrate, std gcc alloc_system panic_abort) @echo "--- [MRUSTC] $@" - $(BIN) $< -o $@ -L output/libs $(PIPECMD) + $(BIN) $< -o $@ -L output/libs $(RUST_FLAGS) $(PIPECMD) ARGS_output/librustc_llvm.hir := --cfg llvm_component=x86 --cfg cargobuild ENV_output/librustc_llvm.hir := CFG_LLVM_LINKAGE_FILE=$(LLVM_LINKAGE_FILE) @@ -268,7 +273,7 @@ output/rustc: $(RUSTCSRC)src/rustc/rustc.rs output/librustc_driver.hir output/ru @echo "--- [MRUSTC] $@" @mkdir -p output/ @rm -f $@ - $V$(DBG) $(BIN) $< -o $@ -L output/libs $$(cat output/rustc_link_opts.txt output/rustc_link_opts-libflate.txt) -l stdc++ $(PIPECMD) + $V$(DBG) $(BIN) $< -o $@ -L output/libs $$(cat output/rustc_link_opts.txt output/rustc_link_opts-libflate.txt) -l stdc++ $(RUST_FLAGS) $(PIPECMD) # # HACK: Work around gdb returning success even if the program crashed @test -e $@ @@ -346,7 +351,7 @@ rust_tests-run-fail: $(call DEF_RUST_TESTS,run-fail) output/rust/test_run-pass_hello: $(RUST_TESTS_DIR)run-pass/hello.rs output/libstd.hir $(BIN) output/liballoc_system.hir output/libpanic_abort.hir @mkdir -p $(dir $@) @echo "--- [MRUSTC] -o $@" - $(DBG) $(BIN) $< -L output/libs -o $@ $(PIPECMD) + $(DBG) $(BIN) $< -L output/libs -o $@ $(RUST_FLAGS) $(PIPECMD) @echo "--- [$@]" @./$@ diff --git a/src/main.cpp b/src/main.cpp index 3eb385f7..28889159 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -131,6 +131,9 @@ struct ProgramParams ::AST::Crate::Type crate_type = ::AST::Crate::Type::Unknown; ::std::string crate_name; + unsigned opt_level = 0; + bool emit_debug_info = false; + ::std::vector<const char*> lib_search_dirs; ::std::vector<const char*> libraries; @@ -450,6 +453,7 @@ int main(int argc, char *argv[]) for(const char* libdir : params.libraries ) { trans_opt.libraries.push_back( libdir ); } + trans_opt.emit_debug_info = params.emit_debug_info; // Generate code for non-generic public items (if requested) switch( crate_type ) @@ -579,6 +583,12 @@ ProgramParams::ProgramParams(int argc, char *argv[]) } this->outfile = argv[++i]; break; + case 'O': + this->opt_level = 2; + break; + case 'g': + this->emit_debug_info = true; + break; default: exit(1); } |