Makefile for building Rust libstd
| ## DO NOT save as `Makefile', instead save this as Makefile.std or something | |
| ## You probably want to use the same source that your local rustc was built from. | |
| ## run `make info' before configuring manually | |
| CFG_BUILD=x86_64-unknown-linux-gnu | |
| HOST_LLVM_MC=`which llvm-mc-3.5` | |
| HOST_LLC=`which llc-3.5` | |
| ## run `make prepare' before configuring by copy/pasting | |
| CFG_ASSEMBLE_x86_64-unknown-linux-gnu=$(HOST_LLVM_MC) -assemble -relocation-model=pic -filetype=obj -triple=x86_64-unknown-linux-gnu | |
| CFG_COMPILE_C_x86_64-unknown-linux-gnu=gcc -O0 -Wall -Werror -g -fPIC -m64 -MMD -MP -MT -MF -c -o | |
| AR_x86_64-unknown-linux-gnu=ar | |
| CFG_LLC_FLAGS_x86_64-unknown-linux-gnu= | |
| RUNTIME_CFLAGS_x86_64-unknown-linux-gnu= | |
| CFG_LLVM_TARGET_x86_64-unknown-linux-gnu=x86_64-unknown-linux-gnu | |
| ## end configuration | |
| info: config.stamp | |
| @make print-CFG_BUILD | grep CFG_BUILD | |
| @echo ============== | |
| @echo Copy the above CFG_BUILD into the Makefile. Also, configure the | |
| @echo paths to your local LLVM installation. | |
| @echo | |
| @echo Then, re-run make with the \`prepare\' target | |
| config.stamp: | |
| @echo You probably need to run \`./configure\'! | |
| @false | |
| .PHONY: prepare | |
| prepare: | |
| mkdir -p $(CFG_BUILD)/llvm/Release+Asserts/bin | |
| mkdir -p $(CFG_BUILD)/rt/arch/x86_64 | |
| ln -sf $(HOST_LLVM_MC) x86_64-unknown-linux-gnu/llvm/Release+Asserts/bin/llvm-mc | |
| @echo ============== copy from here ============== | |
| -@make print-CFG_ASSEMBLE_$(CFG_BUILD) 2>&1 | grep CFG_ASSEMBLE_$(CFG_BUILD) | |
| @make print-CFG_COMPILE_C_$(CFG_BUILD) | grep CFG_COMPILE_C_$(CFG_BUILD) | |
| @make print-AR_$(CFG_BUILD) | grep AR_$(CFG_BUILD) | |
| @make print-CFG_LLC_FLAGS_$(CFG_BUILD) | grep CFG_LLC_FLAGS_$(CFG_BUILD) | |
| @make print-RUNTIME_CFLAGS_$(CFG_BUILD) | grep RUNTIME_CFLAGS_$(CFG_BUILD) | |
| @make print-CFG_LLVM_TARGET_$(CFG_BUILD) | grep CFG_LLVM_TARGET_$(CFG_BUILD) | |
| @echo ============== copy above here ============== | |
| @echo Copy the above variables into the Makefile. CFG_ASSEMBLE might error, | |
| @echo in which case you\'ll need to find the correct invocation manually. | |
| @echo | |
| @echo Then, re-run make with the \`build\' target | |
| build: $(CFG_BUILD)/rt/librustrt_native.a $(CFG_BUILD)/rt/librust_builtin.a $(CFG_BUILD)/rt/libbacktrace.a | |
| rustc -g src/libstd/lib.rs -L native=$(CFG_BUILD)/rt | |
| $(CFG_BUILD)/rt/librustrt_native.a: $(CFG_BUILD)/rt/rust_try.o $(CFG_BUILD)/rt/arch/x86_64/record_sp.o | |
| $(AR_$(CFG_BUILD)) rcs $@ $^ | |
| $(CFG_BUILD)/rt/librust_builtin.a: $(CFG_BUILD)/rt/rust_builtin.o $(CFG_BUILD)/rt/rust_android_dummy.o | |
| $(AR_$(CFG_BUILD)) rcs $@ $^ | |
| $(CFG_BUILD)/rt/libbacktrace.a: | |
| make $(CFG_BUILD)/rt/libbacktrace.a | |
| $(CFG_BUILD)/rt/rust_builtin.o: src/rt/rust_builtin.c | |
| $(CFG_COMPILE_C_$(CFG_BUILD)) $@ -I src/rt/hoedown/src -I src/rt $(RUNTIME_CFLAGS_$(CFG_BUILD)) $< | |
| $(CFG_BUILD)/rt/rust_android_dummy.o: src/rt/rust_android_dummy.c | |
| $(CFG_COMPILE_C_$(CFG_BUILD)) $@ -I src/rt/hoedown/src -I src/rt $(RUNTIME_CFLAGS_$(CFG_BUILD)) $< | |
| $(CFG_BUILD)/rt/rust_try.o: src/rt/rust_try.ll | |
| $(HOST_LLC) $(CFG_LLC_FLAGS_$(CFG_BUILD)) -filetype=obj -mtriple=$(CFG_LLVM_TARGET_$(CFG_BUILD)) -relocation-model=pic -o $@ $< | |
| $(CFG_BUILD)/rt/arch/x86_64/record_sp.o: src/rt/arch/x86_64/record_sp.S | |
| $(CFG_ASSEMBLE_$(CFG_BUILD)) -o=$@ $< |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment