PREFIX = $(HOME)/opt/hercules-compiler
-all: build/bin/opt
+TMP_DESTDIR = $(CURDIR)/install
+
+all: passes
+
+llvm-clang: build/bin/opt
build/bin/opt: build/build.ninja
ninja -C build
llvm/projects/openmp:
ln -s ../../openmp $@
-build:
+build build_passes:
mkdir $@
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
build/build.ninja: | build llvm/tools/clang llvm/projects/openmp
-# printenv | sort
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
- cd build && ninja install
+ DESTDIR=$(DESTDIR) ninja -C build install
+ DESTDIR=$(DESTDIR) ninja -C build_passes install
clean:
- rm -rf build
+ 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)