@@ -26,6 +26,11 @@ CFG_VALGRIND :=
26
26
CFG_LLVM_CONFIG ?= llvm-config
27
27
CFG_BOOT_FLAGS := $(FLAGS )
28
28
29
+ # On Darwin, we need to run dsymutil so the debugging information ends
30
+ # up in the right place. On other platforms, it automatically gets
31
+ # embedded into the executable, so use a no-op command.
32
+ DSYMUTIL := true
33
+
29
34
ifeq ($(CFG_OSTYPE ) , Linux)
30
35
CFG_RUNTIME := librustrt.so
31
36
CFG_STDLIB := libstd.so
@@ -56,6 +61,7 @@ ifeq ($(CFG_OSTYPE), Darwin)
56
61
# approaches welcome!
57
62
CFG_GCC_CFLAGS += -m32
58
63
CFG_GCC_LINK_FLAGS += -m32
64
+ DSYMUTIL := dsymutil
59
65
endif
60
66
61
67
ifneq ($(findstring MINGW,$(CFG_OSTYPE ) ) ,)
@@ -651,9 +657,17 @@ test/bench/shootout/%.x86$(CFG_EXE_SUFFIX): test/bench/shootout/%.rs $(REQ)
651
657
@$(call CFG_ECHO, compile [llvm]: $< )
652
658
$(CFG_QUIET )$(LLC ) $(CFG_LLC_CFLAGS ) -o $@ $<
653
659
654
- % .llvm$(CFG_EXE_SUFFIX ) : % .s $(CFG_RUNTIME )
655
- @$(call CFG_ECHO, compile [llvm]: $< )
660
+ % .o : % .s
661
+ @$(call CFG_ECHO, assemble [llvm]: $< )
662
+ $(CFG_QUIET ) gcc $(CFG_GCC_CFLAGS ) -o $@ -c $<
663
+
664
+ % .llvm$(CFG_EXE_SUFFIX ) : % .o $(CFG_RUNTIME )
665
+ @$(call CFG_ECHO, link [llvm]: $< )
656
666
$(CFG_QUIET ) gcc $(CFG_GCC_CFLAGS ) -o $@ $< -L. -lrustrt
667
+ @# dsymutil sometimes fails or prints a warning, but the
668
+ @# program still runs. Since it simplifies debugging other
669
+ @# programs, I\'ll live with the noise.
670
+ -$(CFG_QUIET )$(DSYMUTIL ) $@
657
671
658
672
test/run-pass/% .bc : test/run-pass/% .rc $(REQ )
659
673
@$(call CFG_ECHO, compile [llvm]: $< )
@@ -802,6 +816,8 @@ clean:
802
816
$(CFG_QUIET ) rm -f $(TEST_RFAIL_EXES_LLVM ) $(TEST_RFAIL_OUTS_LLVM )
803
817
$(CFG_QUIET ) rm -f $(TEST_CFAIL_EXES_X86 ) $(TEST_CFAIL_OUTS_X86 )
804
818
$(CFG_QUIET ) rm -f $(TEST_CFAIL_EXES_LLVM ) $(TEST_CFAIL_OUTS_LLVM )
819
+ $(CFG_QUIET ) rm -rf $(TEST_RPASS_EXES_LLVM:.llvm=.llvm.dSYM )
820
+ $(CFG_QUIET ) rm -rf $(TEST_RFAIL_EXES_LLVM:.llvm=.llvm.dSYM )
805
821
$(CFG_QUIET ) rm -Rf $(PKG_NAME ) -* .tar.gz dist
806
822
$(CFG_QUIET ) rm -f $(foreach ext,cmx cmi cmo cma o a d exe,\
807
823
$(wildcard boot/*/*.$(ext) boot/*/*/*.$(ext)))
0 commit comments