# # Installation paths. PREFIX ?= /usr/local BINDIR ?= $(PREFIX)/bin SBINDIR ?= $(PREFIX)/sbin MANDIR ?= $(PREFIX)/share/man INCLUDEDIR ?= $(PREFIX)/include LIBEXECDIR ?= $(PREFIX)/libexec RUNDIR ?= /run PLUGINDIR ?= $(PREFIX)/lib/criu # # For recent Debian/Ubuntu with multiarch support. DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null) ifneq "$(DEB_HOST_MULTIARCH)" "" LIBDIR ?= $(PREFIX)/lib/$(DEB_HOST_MULTIARCH) else # # For most other systems ifeq "$(shell uname -m)" "x86_64" LIBDIR ?= $(PREFIX)/lib64 endif endif # # LIBDIR falls back to the standard path. LIBDIR ?= $(PREFIX)/lib export PREFIX BINDIR SBINDIR MANDIR RUNDIR export LIBDIR INCLUDEDIR LIBEXECDIR PLUGINDIR # Detect externally managed Python environment (PEP 668). PYTHON_EXTERNALLY_MANAGED := $(shell $(PYTHON) -c 'import os, sysconfig; print(int(os.path.isfile(os.path.join(sysconfig.get_path("stdlib"), "EXTERNALLY-MANAGED"))))') PIP_BREAK_SYSTEM_PACKAGES ?= 0 # If Python environment is externally managed and PIP_BREAK_SYSTEM_PACKAGES is not set, skip pip install. SKIP_PIP_INSTALL := 0 ifeq ($(PYTHON_EXTERNALLY_MANAGED),1) ifeq ($(PIP_BREAK_SYSTEM_PACKAGES),0) SKIP_PIP_INSTALL := 1 $(info Warn: Externally managed python environment) $(info Consider using PIP_BREAK_SYSTEM_PACKAGES=1) endif endif # Default flags for pip install: # --upgrade: Upgrade crit/pycriu packages # --ignore-installed: Ignore existing packages and reinstall them PIPFLAGS ?= --upgrade --ignore-installed export SKIP_PIP_INSTALL PIPFLAGS install-man: $(Q) $(MAKE) -C Documentation install .PHONY: install-man install-lib: lib $(Q) $(MAKE) $(build)=lib install .PHONY: install-lib install-crit: lib $(Q) $(MAKE) $(build)=crit install .PHONY: install-crit install-criu: criu $(Q) $(MAKE) $(build)=criu install .PHONY: install-criu install-amdgpu_plugin: amdgpu_plugin $(Q) $(MAKE) -C plugins/amdgpu install .PHONY: install-amdgpu_plugin install-cuda_plugin: cuda_plugin $(Q) $(MAKE) -C plugins/cuda install .PHONY: install-cuda_plugin install-compel: $(compel-install-targets) $(Q) $(MAKE) $(build)=compel install $(Q) $(MAKE) $(build)=compel/plugins install .PHONY: install-compel install: install-man install-lib install-crit install-criu install-compel install-amdgpu_plugin install-cuda_plugin ; .PHONY: install uninstall: $(Q) $(MAKE) -C Documentation $@ $(Q) $(MAKE) $(build)=lib $@ $(Q) $(MAKE) $(build)=crit $@ $(Q) $(MAKE) $(build)=criu $@ $(Q) $(MAKE) $(build)=compel $@ $(Q) $(MAKE) $(build)=compel/plugins $@ $(Q) $(MAKE) -C plugins/amdgpu $@ $(Q) $(MAKE) -C plugins/cuda $@ .PHONY: uninstall