Created
June 19, 2015 08:40
-
-
Save jethrogb/e64bf2958aadae6bdcfd to your computer and use it in GitHub Desktop.
Makefile for building Rust libstd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## 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