From 9e25886694aec45afd80edc3191ea16c2482165c Mon Sep 17 00:00:00 2001 From: "Jan Chren (rindeal)" Date: Tue, 8 Oct 2019 16:24:40 +0200 Subject: [PATCH] do build configuration with variables instead of targets --- Makefile | 46 +++++++++++++++++++++++++++++++++++++--------- README.md | 2 +- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 89355df6..9b963457 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,38 @@ CP ?= cp CFLAGS_OPTIMIZATION ?= -O3 +O_DEBUG := 0 +O_NORL := 0 # no readline support +O_NOLOC := 0 # no locale support + +# convert targets to flags for backwards compatibility +ifeq ($(MAKECMDGOALS),debug) + O_DEBUG := 1 +endif +ifeq ($(MAKECMDGOALS),norl) + O_NORL := 1 +endif +ifeq ($(MAKECMDGOALS),noloc) + O_NORL := 1 + O_NOLOC := 1 +endif + +ifeq ($(O_DEBUG),1) + CPPFLAGS += -DDBGMODE + CFLAGS += -g + LDLIBS += -lrt +endif + +ifeq ($(O_NORL),1) + CPPFLAGS += -DNORL +else + LDLIBS += -lreadline +endif + +ifeq ($(O_NOLOC),1) + CPPFLAGS += -DNOLOCALE +endif + ifeq ($(shell $(PKG_CONFIG) ncursesw && echo 1),1) CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncursesw) LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncursesw) @@ -34,16 +66,12 @@ all: $(BIN) $(SRC): src/nnn.h $(BIN): $(SRC) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) -lreadline + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) -debug: $(SRC) - $(CC) -DDBGMODE -g $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(BIN) $^ $(LDLIBS) -lreadline -lrt - -norl: $(SRC) - $(CC) -DNORL $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(BIN) $^ $(LDLIBS) - -noloc: $(SRC) - $(CC) -DNORL -DNOLOCALE $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $(BIN) $^ $(LDLIBS) +# targets for backwards compatibility +debug: $(BIN) +norl: $(BIN) +noloc: $(BIN) install: all $(INSTALL) -m 0755 -d $(DESTDIR)$(PREFIX)/bin diff --git a/README.md b/README.md index 9fa39fd1..5dbd644a 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ Notes: #### Library dependencies -A curses library with wide char support (e.g. ncursesw), libreadline (`make norl` to drop) and standard libc. +A curses library with wide char support (e.g. ncursesw), libreadline (`make O_NORL=1` to drop) and standard libc. #### Utility dependencies