@@ -73,17 +73,34 @@ LLVM_LIBCXX_TAR:=$(SRCDIR)/srccache/libcxx-$(LLVM_TAR_EXT)
7373endif
7474endif # LLVM_VER != svn
7575
76+ # Figure out which targets to build (hardcode this to "host;NVPTX" when on 3.9+ only)
77+ LLVM_TARGETS := host
78+ ifeq ($(LLVM_VER_SHORT ) ,$(filter $(LLVM_VER_SHORT ) ,3.9 svn) )
79+ LLVM_TARGETS += NVPTX
80+ endif
81+ EMPTY :=
82+ SPACE := $(EMPTY ) $(EMPTY )
83+ ifeq ($(LLVM_USE_CMAKE ) ,1)
84+ LLVM_TARGET_STRING := $(subst $(SPACE ) ,;,$(LLVM_TARGETS ) )
85+ else
86+ COMMA := ,
87+ LLVM_TARGET_STRING := $(subst $(SPACE ) ,$(COMMA ) ,$(LLVM_TARGETS ) )
88+ endif
89+
7690# Allow adding LLVM specific flags
7791LLVM_CFLAGS += $(CFLAGS )
7892LLVM_CXXFLAGS += $(CXXFLAGS )
7993LLVM_CPPFLAGS += $(CPPFLAGS )
8094LLVM_LDFLAGS += $(LDFLAGS )
81- LLVM_TARGETS := host
82- LLVM_TARGET_FLAGS := --enable-targets=$(LLVM_TARGETS )
95+ ifeq ($(LLVM_USE_CMAKE ) ,1)
96+ LLVM_TARGETS := host;NVPTX
97+ else
98+ LLVM_TARGETS := host,nvptx
99+ endif
83100LLVM_CMAKE += -DLLVM_TARGETS_TO_BUILD:STRING="$(LLVM_TARGETS ) " -DCMAKE_BUILD_TYPE="$(LLVM_CMAKE_BUILDTYPE ) "
84101LLVM_CMAKE += -DLLVM_TOOLS_INSTALL_DIR=$(shell $(JULIAHOME ) /contrib/relative_path.sh $(build_prefix ) $(build_depsbindir ) )
85102LLVM_CMAKE += -DLLVM_BINDINGS_LIST="" -DLLVM_INCLUDE_DOCS=Off -DLLVM_ENABLE_TERMINFO=Off -DHAVE_HISTEDIT_H=Off -DHAVE_LIBEDIT=Off
86- LLVM_FLAGS += --disable-profiling --enable-static $( LLVM_TARGET_FLAGS )
103+ LLVM_FLAGS += --disable-profiling --enable-static --enable-targets= $( LLVM_TARGET_STRING )
87104LLVM_FLAGS += --disable-bindings --disable-docs --disable-libedit --disable-terminfo
88105# LLVM has weird install prefixes (see llvm-$(LLVM_VER)/build_$(LLVM_BUILDTYPE)/Makefile.config for the full list)
89106# We map them here to the "normal" ones, which means just prefixing "PROJ_" to the variable name.
@@ -491,6 +508,10 @@ $(eval $(call LLVM_PATCH,llvm-3.9.0_win64-reloc-dwarf))
491508$(eval $(call LLVM_PATCH,llvm-3.9.0_D27296-libssp))
492509$(eval $(call LLVM_PATCH,llvm-D27609-AArch64-UABS_G3))
493510$(eval $(call LLVM_PATCH,llvm-D27629-AArch64-large_model))
511+ # patches for NVPTX
512+ $(eval $(call LLVM_PATCH,llvm-D9168_argument_alignment)) # Remove for 4.0
513+ $(eval $(call LLVM_PATCH,llvm-D23597_sdag_names)) # Dep for D24300, remove for 4.0
514+ $(eval $(call LLVM_PATCH,llvm-D24300_ptx_intrinsics)) # Remove for 4.0
494515endif # LLVM_VER
495516
496517ifeq ($(LLVM_VER ) ,3.7.1)
0 commit comments