PREFIX = $(HOME)/opt/hercules-compiler TMP_DESTDIR = $(CURDIR)/install all: passes llvm-clang: build/bin/opt build/bin/opt: build/build.ninja ninja -C build llvm/tools/clang: ln -s ../../clang $@ llvm/projects/openmp: ln -s ../../openmp $@ build build_passes: mkdir $@ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) 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_SYSTEM_PROCESSOR=$(DEB_HOST_GNU_CPU) LLVM_CROSS_FLAGS += -DCMAKE_CROSSCOMPILING=True ## We don't need host tablegens, because we use qemu & binfmt to run ## arm64 binaries on x86 # LLVM_CROSS_FLAGS += -DLLVM_TABLEGEN="/llvm-tblgen" # LLVM_CROSS_FLAGS += -DCLANG_TABLEGEN="/clang-tblgen" LLVM_CROSS_FLAGS += -DLLVM_DEFAULT_TARGET_TRIPLE=$(DEB_HOST_GNU_TYPE) LLVM_CROSS_FLAGS += -DLLVM_TARGET_ARCH=$(DEB_TARGET_GNU_CPU) #LLVM_CROSS_FLAGS += -DLLVM_TARGETS_TO_BUILD=$(shell echo $(DEB_HOST_ARCH)|tr '[:lower:]' '[:upper:]') endif build/build.ninja: | build llvm/tools/clang llvm/projects/openmp cd $(@D) && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -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 $(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_TARGETS_TO_BUILD="X86;ARM" -G "Ninja" $(CURDIR)/HerculesCompiler/llvm-passes passes: build_passes/build.ninja ninja -C build_passes install: all DESTDIR=$(DESTDIR) ninja -C build install DESTDIR=$(DESTDIR) ninja -C build_passes install clean: rm -rf build build_passes define tar_concat $(foreach subarch,$(shell git submodule --quiet foreach 'echo $$toplevel/../$(prefix)-$$path.tar'),tar --concatenate --file=../$(prefix).tar $(subarch) ) endef create-orig-tgz: prefix=$(notdir $(CURDIR)) create-orig-tgz: git archive --format=tar --prefix=$(prefix)/ -o ../$(prefix).tar HEAD git submodule foreach 'git archive --format=tar --prefix=$(prefix)/$$path/ -o $$toplevel/../$(prefix)-$$path.tar HEAD' $(tar_concat) gzip -c ../$(prefix).tar > "../$(prefix)_$(shell dpkg-parsechangelog --show-field Version|sed -e s/-.*//).orig.tar.gz"