diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..7fac7d32e --- /dev/null +++ b/Makefile @@ -0,0 +1,54 @@ +# This is a very basic `make` wrapper around the CMake build toolchain. +# +# Supported arguments: +# PREFIX: sets the installation prefix +# GENERATOR: explicitly specifies the CMake generator to use + +CMAKE ?= cmake + +GENERATOR ?= $(shell (which ninja > /dev/null 2> /dev/null && echo Ninja) || \ + echo 'Unix Makefiles') +prefix ?= /usr/local +PREFIX ?= $(prefix) + +ifeq ($(GENERATOR), Ninja) +BUILDFILE = build.ninja +else +BUILDFILE = Makefile +endif + +all: .begin build/fish + +PHONY: .begin +.begin: + @which ninja > /dev/null 2> /dev/null || \ + (echo 'Please install CMake and then re-run the `make` command!' 1>&2 && false) + +build/fish: build/$(BUILDFILE) + cmake --build build + +build/$(BUILDFILE): build + cd build; cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -G "$(GENERATOR)" -DCMAKE_INSTALL_PREFIX="$(PREFIX)" -DCMAKE_EXPORT_COMPILE_COMMANDS=1 + +build: + mkdir -p build + +.PHONY: clean +clean: + rm -rf build + +.PHONY: test +test: build/fish + $(CMAKE) --build build --target test + +.PHONY: install +install: build/fish + $(CMAKE) --build build --target install + +.PHONY: run +run: build/fish + ./build/fish || true + +.PHONY: exec +exec: build/fish + exec ./build/fish