From fbed821a5b0152837463786d2ec30352a18644b0 Mon Sep 17 00:00:00 2001 From: Mahmoud Al-Qudsi Date: Sat, 10 Mar 2018 11:25:18 -0600 Subject: [PATCH] Switch BSDmakefile to invoke build via cmake This will use the native BSD bmake build system instead of the previous hack which spawned an instance of `gmake` (GNU Make) if installed to perform the build. --- BSDmakefile | 55 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/BSDmakefile b/BSDmakefile index 1be653200..9c42ecf45 100644 --- a/BSDmakefile +++ b/BSDmakefile @@ -1,25 +1,38 @@ -JARG = -GMAKE = "gmake" -#When gmake is called from another make instance, -w is automatically added -#which causes extraneous messages about directory changes to be emitted. -#--no-print-directory silences these messages. -GARGS = "--no-print-directory" - -.if "$(.MAKE.JOBS)" != "" -JARG = -j$(.MAKE.JOBS) -.endif - -#by default bmake will cd into ./obj first +# by default bmake will cd into ./obj first .OBJDIR: ./ -.PHONY: FRC -$(.TARGETS): FRC - $(GMAKE) $(GARGS) $(.TARGETS:S,.DONE,,) $(JARG) +.BEGIN: + # test for cmake, which is the only requirement to be able to run this Makefile + # cmake will perform the remaining dependency tests on its own + @which cmake >/dev/null 2>/dev/null || (echo "Please install cmake and then re-run the `make` command!" 1>&2 && false) -.DONE .DEFAULT: .SILENT - $(GMAKE) $(GARGS) $(.TARGETS:S,.DONE,,) $(JARG) +# Use ninja, if it is installed +_GENERATOR!=which ninja 2>/dev/null >/dev/null && echo Ninja || echo "'Unix Makefiles'" +GENERATOR?=$(_GENERATOR) +PREFIX?=/usr/local -.ERROR: .SILENT - if ! which $(GMAKE) > /dev/null; then \ - echo "GNU Make is required!"; \ - fi +.if $(GENERATOR) == "Ninja" +BUILDFILE=build/build.ninja +BUILDCMD=ninja +.else +BUILDFILE=build/Makefile +BUILDCMD=make +.endif + +.DEFAULT: build/fish +build/fish: build/$(BUILDFILE) + cd build; $(BUILDCMD) + +build: + mkdir -p build + +build/$(BUILDFILE): build + cd build; cmake .. -G $(GENERATOR) -DCMAKE_INSTALL_PREFIX=$(PREFIX) -DCMAKE_EXPORT_COMPILE_COMMANDS=1 + +.PHONY: install +install: build/fish + cd build; $(BUILDCMD) install + +.PHONY: clean +clean: + rm -rf build