Skip to content

Commit

Permalink
Improve makefile rebuild caching
Browse files Browse the repository at this point in the history
  • Loading branch information
nilfm99 committed Nov 8, 2024
1 parent e00fc50 commit 8cde19d
Showing 1 changed file with 57 additions and 14 deletions.
71 changes: 57 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,23 +1,66 @@
VENV=.venv
.PHONY: all install clean distclean deps
# Use bash for shell
SHELL := /bin/bash

all: deps
$(VENV)/bin/meson setup libvmaf/build libvmaf --buildtype release -Denable_float=true && \
$(VENV)/bin/ninja -vC libvmaf/build && \
cd python && \
../$(VENV)/bin/python setup.py build_ext --build-lib .
# Path and environment setup
VENV := .venv
VIRTUAL_ENV_PATH := $(VENV)/bin

install: deps
$(VENV)/bin/meson setup libvmaf/build libvmaf --buildtype release && \
$(VENV)/bin/ninja -vC libvmaf/build install
# Build tools configured in the virtual environment
PYTHON_INTERPRETER := python3.10
VENV_PIP := $(VIRTUAL_ENV_PATH)/pip
VENV_PYTHON := $(VIRTUAL_ENV_PATH)/python
MESON_SETUP := $(VIRTUAL_ENV_PATH)/meson setup
NINJA := $(VIRTUAL_ENV_PATH)/ninja

# Build types and options
BUILDTYPE_RELEASE := --buildtype release
BUILDTYPE_DEBUG := --buildtype debug
ENABLE_FLOAT := -Denable_float=true

# Directories
LIBVMAF_DIR := libvmaf
BUILD_DIR := $(LIBVMAF_DIR)/build
DEBUG_DIR := $(LIBVMAF_DIR)/debug

.PHONY: default all debug build install cythonize clean distclean

default: build

all: build debug install test cythonize

$(BUILD_DIR): $(VENV)
PATH="$(VENV)/bin:$$PATH" $(MESON_SETUP) $(BUILD_DIR) $(LIBVMAF_DIR) $(BUILDTYPE_RELEASE) $(ENABLE_FLOAT)

$(DEBUG_DIR): $(VENV)
PATH="$(VENV)/bin:$$PATH" $(MESON_SETUP) $(DEBUG_DIR) $(LIBVMAF_DIR) $(BUILDTYPE_DEBUG) $(ENABLE_FLOAT)

cythonize: $(VENV)
pushd python && ../$(VENV_PYTHON) setup.py build_ext --build-lib . && popd || exit 1

build: $(BUILD_DIR) $(VENV)
PATH="$(VENV)/bin:$$PATH" $(NINJA) -vC $(BUILD_DIR)

test: build $(VENV)
PATH="$(VENV)/bin:$$PATH" $(NINJA) -vC $(BUILD_DIR) test

debug: $(DEBUG_DIR) $(VENV)
PATH="$(VENV)/bin:$$PATH" $(NINJA) -vC $(DEBUG_DIR)

install: $(BUILD_DIR) $(VENV)
PATH="$(VENV)/bin:$$PATH" $(NINJA) -vC $(BUILD_DIR) install

clean:
rm -rf libvmaf/build
rm -rf $(BUILD_DIR) $(DEBUG_DIR)
rm -f python/vmaf/core/adm_dwt2_cy.c*

distclean: clean
rm -rf $(VENV)

deps:
test -d $(VENV) || python3 -mvenv $(VENV)
$(VENV)/bin/pip install meson ninja cython numpy
# Set up or rebuild virtual environment
$(VENV):
@echo "Setting up the virtual environment..."
@set -e; \
$(PYTHON_INTERPRETER) -m venv $(VENV) || { echo "Failed to create virtual environment"; exit 1; }; \
$(VENV_PIP) install --upgrade pip || { echo "Failed to upgrade pip"; exit 1; }; \
$(VENV_PIP) install meson ninja cython numpy || { echo "Failed to install dependencies"; exit 1; }
@echo "Virtual environment setup complete."

0 comments on commit 8cde19d

Please sign in to comment.