]> Sergey Matveev's repositories - nnn.git/blob - misc/haiku/Makefile
Prepare for release v3.3
[nnn.git] / misc / haiku / Makefile
1 VERSION = $(shell grep -m1 VERSION $(SRC) | cut -f 2 -d'"')
2
3 PREFIX ?= /boot/system/non-packaged
4 MANPREFIX ?= $(PREFIX)/documentation/man
5 STRIP ?= strip
6 PKG_CONFIG ?= pkg-config
7 INSTALL ?= install
8 CP ?= cp
9
10 CFLAGS_OPTIMIZATION ?= -O3
11
12 O_DEBUG := 0
13 O_NORL := 0  # no readline support
14 O_NOLOC := 0  # no locale support
15
16 # convert targets to flags for backwards compatibility
17 ifneq ($(filter debug,$(MAKECMDGOALS)),)
18         O_DEBUG := 1
19 endif
20 ifneq ($(filter norl,$(MAKECMDGOALS)),)
21         O_NORL := 1
22 endif
23 ifneq ($(filter noloc,$(MAKECMDGOALS)),)
24         O_NORL := 1
25         O_NOLOC := 1
26 endif
27
28 ifeq ($(O_DEBUG),1)
29         CPPFLAGS += -DDBGMODE
30         CFLAGS += -g
31         LDLIBS += -lrt
32 endif
33
34 ifeq ($(O_NORL),1)
35         CPPFLAGS += -DNORL
36 else ifeq ($(O_STATIC),1)
37         CPPFLAGS += -DNORL
38 else
39         LDLIBS += -lreadline
40 endif
41
42 ifeq ($(O_PCRE),1)
43         CPPFLAGS += -DPCRE
44         LDLIBS += -lpcre
45 endif
46
47 ifeq ($(O_NOLOC),1)
48         CPPFLAGS += -DNOLOCALE
49 endif
50
51 ifeq ($(O_NOMOUSE),1)
52         CPPFLAGS += -DNOMOUSE
53 endif
54
55 ifeq ($(O_NOBATCH),1)
56         CPPFLAGS += -DNOBATCH
57 endif
58
59 ifeq ($(O_NOFIFO),1)
60         CPPFLAGS += -DNOFIFO
61 endif
62
63 ifeq ($(O_CTX8),1)
64         CPPFLAGS += -DCTX8
65 endif
66
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)
73 else
74         LDLIBS_CURSES ?= -lncurses
75 endif
76
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
81 endif
82
83 CFLAGS += -Wall -Wextra
84 CFLAGS += $(CFLAGS_OPTIMIZATION)
85 CFLAGS += $(CFLAGS_CURSES)
86
87 LDLIBS += $(LDLIBS_CURSES) $(LDLIBS_HAIKU)
88
89 # static compilation needs libgpm development package
90 ifeq ($(O_STATIC),1)
91         LDFLAGS += -static
92         LDLIBS += -lgpm
93 endif
94
95 DISTFILES = src nnn.1 Makefile README.md LICENSE
96 SRC = src/nnn.c
97 HEADERS = src/nnn.h
98 BIN = nnn
99 OBJS := nnn.o $(OBJS_HAIKU)
100
101 all: $(BIN)
102
103 ifeq ($(shell uname -s), Haiku)
104 $(OBJS_HAIKU): $(SRC_HAIKU)
105         $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
106 endif
107
108 nnn.o: $(SRC) $(HEADERS)
109         $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
110
111 $(BIN): $(OBJS)
112         $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
113
114 # targets for backwards compatibility
115 debug: $(BIN)
116 norl: $(BIN)
117 noloc: $(BIN)
118
119 install: all
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
124
125 uninstall:
126         $(RM) $(DESTDIR)$(PREFIX)/bin/$(BIN)
127         $(RM) $(DESTDIR)$(MANPREFIX)/man1/$(BIN).1
128
129 strip: $(BIN)
130         $(STRIP) $^
131
132 static:
133         make O_STATIC=1 strip
134         mv $(BIN) $(BIN)-static
135
136 dist:
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)
143
144 sign:
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
148
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
158
159 clean:
160         $(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz
161
162 skip: ;
163
164 .PHONY: all install uninstall strip static dist sign upload-local clean