X-Git-Url: http://rtime.felk.cvut.cz/gitweb/hercules2020/hercules-compiler.git/blobdiff_plain/8a449c34a9e0503c9de7b59ac99a2863e8273265..HEAD:/Makefile diff --git a/Makefile b/Makefile index 819ed39..96794c3 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,13 @@ PREFIX ?= $(HOME)/opt/hercules-compiler TMP_DESTDIR = $(CURDIR)/install -all: libpremnotify-cpu +# With gcc > 5, we get strange CUDA-related errors in clang. +export CC = gcc-5 +export CXX = g++-5 + +USE_GPUGUARD = # OFF if empty + +all: libpremnotify all: passes llvm-clang: build/bin/opt @@ -12,6 +18,9 @@ build/bin/opt: build/build.ninja llvm/tools/clang: ln -s ../../clang $@ +llvm/tools/lld: + ln -s ../../lld $@ + llvm/projects/openmp: ln -s ../../openmp $@ @@ -23,8 +32,8 @@ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) LLVM_TBLGEN=$(CURDIR)/build_native/bin/llvm-tblgen CLANG_TBLGEN=$(CURDIR)/build_native/bin/clang-tblgen -LLVM_CROSS_FLAGS += -DCMAKE_C_COMPILER=$(DEB_HOST_GNU_TYPE)-gcc -LLVM_CROSS_FLAGS += -DCMAKE_CXX_COMPILER=$(DEB_HOST_GNU_TYPE)-g++ +LLVM_CROSS_FLAGS += -DCMAKE_C_COMPILER=$(DEB_HOST_GNU_TYPE)-gcc-5 +LLVM_CROSS_FLAGS += -DCMAKE_CXX_COMPILER=$(DEB_HOST_GNU_TYPE)-g++-5 LLVM_CROSS_FLAGS += -DCMAKE_SYSTEM_PROCESSOR=$(DEB_HOST_GNU_CPU) LLVM_CROSS_FLAGS += -DCMAKE_CROSSCOMPILING=True @@ -47,50 +56,64 @@ build_native/build.ninja: | build_native cd $(@D) && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(PREFIX)" \ -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_BACKTRACES=ON -DLLVM_ENABLE_WERROR=OFF \ -DBUILD_SHARED_LIBS=OFF -DLLVM_ENABLE_RTTI=ON \ - -DCMAKE_CXX_FLAGS='-DHERCULES_PASS_ROOT=\"$(PREFIX)/lib/hercules\"' \ + -DCMAKE_CXX_FLAGS='-DHERCULES_PASS_ROOT=\"$(PREFIX)/lib/hercules/src/passes/\"' \ -G "Ninja" $(CURDIR)/llvm -libpremnotify-cpu: export CC=$(DEB_HOST_GNU_TYPE)-gcc +libpremnotify: export CC=$(DEB_HOST_GNU_TYPE)-gcc-5 endif -build/build.ninja: | build llvm/tools/clang llvm/projects/openmp +build/build.ninja: | build llvm/tools/clang llvm/tools/lld llvm/projects/openmp cd $(@D) && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(PREFIX)" \ -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_BACKTRACES=ON -DLLVM_ENABLE_WERROR=OFF \ -DBUILD_SHARED_LIBS=OFF -DLLVM_ENABLE_RTTI=ON $(LLVM_CROSS_FLAGS) \ - -DCMAKE_CXX_FLAGS='-DHERCULES_PASS_ROOT=\"$(PREFIX)/lib/hercules\"' \ - -G "Ninja" $(CURDIR)/llvm + -DLLVM_ENABLE_LLD=ON -DLLVM_TOOL_LLD_BUILD=ON \ + -DCMAKE_CXX_FLAGS='-DHERCULES_PASS_ROOT=\"$(PREFIX)/lib/hercules/src/passes/\" -DOPENMP_NVPTX_COMPUTE_CAPABILITY=62 $(if $(USE_GPUGUARD),-DUSE_GPUGUARD)' \ + -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITY="62" \ + -G"Ninja" $(CURDIR)/llvm $(TMP_DESTDIR)/$(PREFIX)/lib/cmake/llvm: | llvm-clang DESTDIR=$(TMP_DESTDIR) ninja -C build install build_passes/build.ninja: | build_passes $(TMP_DESTDIR)/$(PREFIX)/lib/cmake/llvm cd $(@D) && cmake -DCMAKE_INSTALL_PREFIX="$(PREFIX)" \ - -DLLVM_DIR':'STRING=$(TMP_DESTDIR)$(PREFIX)/lib/cmake/llvm -DCMAKE_BUILD_TYPE=DEBUG \ + -DLLVM_DIR':'STRING=$(TMP_DESTDIR)$(PREFIX)/lib/cmake/llvm \ + -DCMAKE_BUILD_TYPE=DEBUG \ $(LLVM_CROSS_FLAGS) -DLLVM_TARGETS_TO_BUILD="X86;ARM" \ + -DCPU_CACHE_SIZE_DEFAULT=524288 \ + -DGPU_CACHE_SIZE_DEFAULT=524288 \ + -DGPU_SCRATCHPAD_SIZE_DEFAULT=48000 \ + -DUSE_HW_CACHES=ON \ + -DHIERARCHICAL_INTERVALS=ON \ + -DPREFETCH_REPS=1 \ + -DUSE_HW_CACHES_PREFETCH=ON \ + -DUSE_HW_CACHES_INLINEPTX_PREFETCH=OFF \ + -DUSE_HW_CACHES_LIBCALL=OFF \ + -DUSE_HW_CACHES_VOLALOAD=OFF \ + -DUSE_HW_CACHES_SINGLEWRITEBACK=OFF \ + -DUSE_HW_CACHES_INDWRITEBACK_LIBCALL=ON \ + -DUSE_HW_CACHES_INDWRITEBACK_INLINE=OFF \ + -DULES_EXTERNAL_LINKAGE=OFF \ + -DALWAYS_INLINE_UNSPECIALIZED=OFF \ + -DALWAYS_INLINE_LOAD=OFF \ + -DALWAYS_INLINE_EXECUTE=OFF \ + -DALWAYS_INLINE_STORE=OFF \ + -DAGGRESSIVELY_INLINE_CALL_TREE=OFF \ -G "Ninja" $(CURDIR)/HerculesCompiler/llvm-passes passes: build_passes/build.ninja ninja -C build_passes -$(DESTDIR)$(PREFIX)/bin/herculesCompileCPU.sh: HerculesCompiler/cpu-driver/herculesCompileCPU.sh - sed -e '/^PASSROOT=/ s!=.*!="$(PREFIX)/lib/hercules"!' \ - -e '/^LLVM_BIN_DIR=/ s!=.*!="$(PREFIX)/bin/"!' \ - -e '/^PREM_RUNTIME_PATH=/ s!=.*!="$(PREFIX)/lib/hercules"!' \ - < $< > $@ - chmod +x $@ - -libpremnotify-cpu: - $(MAKE) -C HerculesCompiler/libpremnotify +libpremnotify: + $(MAKE) -C HerculesCompiler/libpremnotify NVCC_FLAGS=$(if $(USE_GPUGUARD),-DUSE_GPUGUARD) install: all DESTDIR=$(DESTDIR) ninja -C build install DESTDIR=$(DESTDIR) ninja -C build_passes install - $(MAKE) $(DESTDIR)$(PREFIX)/bin/herculesCompileCPU.sh $(MAKE) -C HerculesCompiler/libpremnotify install DESTDIR=$(DESTDIR) PREFIX=$(PREFIX) clean: - rm -rf build build_passes install + rm -rf build build_passes build_native install create-orig-tgz: prefix=$(notdir $(CURDIR)) create-orig-tgz: upstream_version=$(shell dpkg-parsechangelog --show-field Version|sed -e s/-.*//)