/mk/rustllvm.mk

http://github.com/jruderman/rust · Makefile · 40 lines · 25 code · 8 blank · 7 comment · 0 complexity · c329bf8f7fb17a4fb72c556f01c28d7b MD5 · raw file

  1. ######################################################################
  2. # rustc LLVM-extensions (C++) library variables and rules
  3. ######################################################################
  4. define DEF_RUSTLLVM_TARGETS
  5. # FIXME: Lately, on windows, llvm-config --includedir is not enough
  6. # to find the llvm includes (probably because we're not actually installing
  7. # llvm, but using it straight out of the build directory)
  8. ifdef CFG_WINDOWSY
  9. LLVM_EXTRA_INCDIRS_$(1)= -iquote $(S)src/llvm/include \
  10. -iquote llvm/$(1)/include
  11. endif
  12. RUSTLLVM_OBJS_CS_$(1) := $$(addprefix rustllvm/, RustWrapper.cpp)
  13. RUSTLLVM_DEF_$(1) := rustllvm/rustllvm$$(CFG_DEF_SUFFIX)
  14. RUSTLLVM_INCS_$(1) = $$(LLVM_EXTRA_INCDIRS_$(1)) \
  15. -iquote $$(LLVM_INCDIR_$(1)) \
  16. -iquote $$(S)src/rustllvm/include
  17. RUSTLLVM_OBJS_OBJS_$(1) := $$(RUSTLLVM_OBJS_CS_$(1):rustllvm/%.cpp=rustllvm/$(1)/%.o)
  18. ALL_OBJ_FILES += $$(RUSTLLVM_OBJS_OBJS_$(1))
  19. rustllvm/$(1)/$(CFG_RUSTLLVM): $$(RUSTLLVM_OBJS_OBJS_$(1)) \
  20. $$(MKFILE_DEPS) $$(RUSTLLVM_DEF_$(1))
  21. @$$(call E, link: $$@)
  22. $$(Q)$$(call CFG_LINK_C_$(1),$$@,$$(RUSTLLVM_OBJS_OBJS_$(1)) \
  23. $$(CFG_GCCISH_PRE_LIB_FLAGS) $$(LLVM_LIBS_$(1)) \
  24. $$(CFG_GCCISH_POST_LIB_FLAGS) \
  25. $$(LLVM_LDFLAGS_$(1)),$$(RUSTLLVM_DEF_$(1)),$$(CFG_RUSTLLVM))
  26. rustllvm/$(1)/%.o: rustllvm/%.cpp $$(MKFILE_DEPS) $$(LLVM_CONFIG_$(1))
  27. @$$(call E, compile: $$@)
  28. $$(Q)$$(call CFG_COMPILE_C_$(1), $$@, $$(LLVM_CXXFLAGS_$(1)) $$(RUSTLLVM_INCS_$(1))) $$<
  29. endef
  30. # Instantiate template for all stages
  31. $(foreach target,$(CFG_TARGET_TRIPLES), \
  32. $(eval $(call DEF_RUSTLLVM_TARGETS,$(target))))