1 VERSION = $(shell grep -m1 VERSION $(SRC) | cut -f 2 -d'"')
3 PREFIX ?= /boot/system/non-packaged
4 MANPREFIX ?= $(PREFIX)/documentation/man
6 PKG_CONFIG ?= pkg-config
10 CFLAGS_OPTIMIZATION ?= -O3
13 O_NORL := 0 # no readline support
14 O_NOLOC := 0 # no locale support
16 # convert targets to flags for backwards compatibility
17 ifneq ($(filter debug,$(MAKECMDGOALS)),)
20 ifneq ($(filter norl,$(MAKECMDGOALS)),)
23 ifneq ($(filter noloc,$(MAKECMDGOALS)),)
36 else ifeq ($(O_STATIC),1)
48 CPPFLAGS += -DNOLOCALE
67 ifeq ($(shell $(PKG_CONFIG) ncursesw && echo 1),1)
68 CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncursesw)
69 LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncursesw)
70 else ifeq ($(shell $(PKG_CONFIG) ncurses && echo 1),1)
71 CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncurses)
72 LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncurses)
74 LDLIBS_CURSES ?= -lncurses
77 ifeq ($(shell uname -s), Haiku)
78 LDLIBS_HAIKU ?= -lstdc++ -lbe
79 SRC_HAIKU ?= misc/haiku/nm.cpp
80 OBJS_HAIKU ?= misc/haiku/nm.o
83 CFLAGS += -Wall -Wextra
84 CFLAGS += $(CFLAGS_OPTIMIZATION)
85 CFLAGS += $(CFLAGS_CURSES)
87 LDLIBS += $(LDLIBS_CURSES) $(LDLIBS_HAIKU)
89 # static compilation needs libgpm development package
95 DISTFILES = src nnn.1 Makefile README.md LICENSE
99 OBJS := nnn.o $(OBJS_HAIKU)
103 ifeq ($(shell uname -s), Haiku)
104 $(OBJS_HAIKU): $(SRC_HAIKU)
105 $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
108 nnn.o: $(SRC) $(HEADERS)
109 $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
112 $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
114 # targets for backwards compatibility
120 $(INSTALL) -m 0755 -d $(DESTDIR)$(PREFIX)/bin
121 $(INSTALL) -m 0755 $(BIN) $(DESTDIR)$(PREFIX)/bin
122 $(INSTALL) -m 0755 -d $(DESTDIR)$(MANPREFIX)/man1
123 $(INSTALL) -m 0644 $(BIN).1 $(DESTDIR)$(MANPREFIX)/man1
126 $(RM) $(DESTDIR)$(PREFIX)/bin/$(BIN)
127 $(RM) $(DESTDIR)$(MANPREFIX)/man1/$(BIN).1
133 make O_STATIC=1 strip
134 mv $(BIN) $(BIN)-static
137 mkdir -p nnn-$(VERSION)
138 $(CP) -r $(DISTFILES) nnn-$(VERSION)
139 mkdir -p nnn-$(VERSION)/misc
140 $(CP) -r misc/haiku nnn-$(VERSION)/misc
141 tar -cf - nnn-$(VERSION) | gzip > nnn-$(VERSION).tar.gz
142 $(RM) -r nnn-$(VERSION)
145 git archive -o nnn-$(VERSION).tar.gz --format tar.gz --prefix=nnn-$(VERSION)/ v$(VERSION)
146 gpg --detach-sign --yes nnn-$(VERSION).tar.gz
147 rm -f nnn-$(VERSION).tar.gz
149 upload-local: sign static
150 $(eval ID=$(shell curl -s 'https://api.github.com/repos/jarun/nnn/releases/tags/v$(VERSION)' | jq .id))
151 curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=nnn-$(VERSION).tar.gz.sig' \
152 -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/pgp-signature' \
153 --upload-file nnn-$(VERSION).tar.gz.sig
154 tar -zcf $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-static
155 curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-static-$(VERSION).x86_64.tar.gz' \
156 -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \
157 --upload-file $(BIN)-static-$(VERSION).x86_64.tar.gz
160 $(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz
164 .PHONY: all install uninstall strip static dist sign upload-local clean