My build of nnn with minor changes
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

150 lignes
3.7 KiB

  1. VERSION = $(shell grep -m1 VERSION $(SRC) | cut -f 2 -d'"')
  2. PREFIX ?= /boot/system/non-packaged
  3. MANPREFIX ?= $(PREFIX)/documentation/man
  4. STRIP ?= strip
  5. PKG_CONFIG ?= pkg-config
  6. INSTALL ?= install
  7. CP ?= cp
  8. CFLAGS_OPTIMIZATION ?= -O3
  9. O_DEBUG := 0
  10. O_NORL := 0 # no readline support
  11. O_NOLOC := 0 # no locale support
  12. # convert targets to flags for backwards compatibility
  13. ifneq ($(filter debug,$(MAKECMDGOALS)),)
  14. O_DEBUG := 1
  15. endif
  16. ifneq ($(filter norl,$(MAKECMDGOALS)),)
  17. O_NORL := 1
  18. endif
  19. ifneq ($(filter noloc,$(MAKECMDGOALS)),)
  20. O_NORL := 1
  21. O_NOLOC := 1
  22. endif
  23. ifeq ($(O_DEBUG),1)
  24. CPPFLAGS += -DDBGMODE
  25. CFLAGS += -g
  26. LDLIBS += -lrt
  27. endif
  28. ifeq ($(O_NORL),1)
  29. CPPFLAGS += -DNORL
  30. else ifeq ($(O_STATIC),1)
  31. CPPFLAGS += -DNORL
  32. else
  33. LDLIBS += -lreadline
  34. endif
  35. ifeq ($(O_PCRE),1)
  36. CPPFLAGS += -DPCRE
  37. LDLIBS += -lpcre
  38. endif
  39. ifeq ($(O_NOLOC),1)
  40. CPPFLAGS += -DNOLOCALE
  41. endif
  42. ifeq ($(shell $(PKG_CONFIG) ncursesw && echo 1),1)
  43. CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncursesw)
  44. LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncursesw)
  45. else ifeq ($(shell $(PKG_CONFIG) ncurses && echo 1),1)
  46. CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncurses)
  47. LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncurses)
  48. else
  49. LDLIBS_CURSES ?= -lncurses
  50. endif
  51. ifeq ($(shell uname -s), Haiku)
  52. LDLIBS_HAIKU ?= -lstdc++ -lbe
  53. SRC_HAIKU ?= misc/haiku/nm.cpp
  54. OBJS_HAIKU ?= misc/haiku/nm.o
  55. endif
  56. CFLAGS += -Wall -Wextra
  57. CFLAGS += $(CFLAGS_OPTIMIZATION)
  58. CFLAGS += $(CFLAGS_CURSES)
  59. LDLIBS += $(LDLIBS_CURSES) $(LDLIBS_HAIKU)
  60. # static compilation needs libgpm development package
  61. ifeq ($(O_STATIC),1)
  62. LDFLAGS += -static
  63. LDLIBS += -lgpm
  64. endif
  65. DISTFILES = src nnn.1 Makefile README.md LICENSE
  66. SRC = src/nnn.c
  67. HEADERS = src/nnn.h
  68. BIN = nnn
  69. OBJS := nnn.o $(OBJS_HAIKU)
  70. all: $(BIN)
  71. ifeq ($(shell uname -s), Haiku)
  72. $(OBJS_HAIKU): $(SRC_HAIKU)
  73. $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
  74. endif
  75. nnn.o: $(SRC) $(HEADERS)
  76. $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
  77. $(BIN): $(OBJS)
  78. $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
  79. # targets for backwards compatibility
  80. debug: $(BIN)
  81. norl: $(BIN)
  82. noloc: $(BIN)
  83. install: all
  84. $(INSTALL) -m 0755 -d $(DESTDIR)$(PREFIX)/bin
  85. $(INSTALL) -m 0755 $(BIN) $(DESTDIR)$(PREFIX)/bin
  86. $(INSTALL) -m 0755 -d $(DESTDIR)$(MANPREFIX)/man1
  87. $(INSTALL) -m 0644 $(BIN).1 $(DESTDIR)$(MANPREFIX)/man1
  88. uninstall:
  89. $(RM) $(DESTDIR)$(PREFIX)/bin/$(BIN)
  90. $(RM) $(DESTDIR)$(MANPREFIX)/man1/$(BIN).1
  91. strip: $(BIN)
  92. $(STRIP) $^
  93. static:
  94. make O_STATIC=1 strip
  95. mv $(BIN) $(BIN)-static
  96. dist:
  97. mkdir -p nnn-$(VERSION)
  98. $(CP) -r $(DISTFILES) nnn-$(VERSION)
  99. mkdir -p nnn-$(VERSION)/misc
  100. $(CP) -r misc/haiku nnn-$(VERSION)/misc
  101. tar -cf - nnn-$(VERSION) | gzip > nnn-$(VERSION).tar.gz
  102. $(RM) -r nnn-$(VERSION)
  103. sign:
  104. git archive -o nnn-$(VERSION).tar.gz --format tar.gz --prefix=nnn-$(VERSION)/ v$(VERSION)
  105. gpg --detach-sign --yes nnn-$(VERSION).tar.gz
  106. rm -f nnn-$(VERSION).tar.gz
  107. upload-local: sign static
  108. $(eval ID=$(shell curl -s 'https://api.github.com/repos/jarun/nnn/releases/tags/v$(VERSION)' | jq .id))
  109. curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=nnn-$(VERSION).tar.gz.sig' \
  110. -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/pgp-signature' \
  111. --upload-file nnn-$(VERSION).tar.gz.sig
  112. tar -cf $(BIN)-static-$(VERSION).x86-64.tar.gz $(BIN)-static
  113. curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=nnn-$(VERSION)-static-$(VERSION).x86-64.tar.gz' \
  114. -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \
  115. --upload-file $(BIN)-static-$(VERSION).x86-64.tar.gz
  116. clean:
  117. $(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig \
  118. $(BIN)-static $(BIN)-static-$(VERSION).x86-64.tar.gz
  119. skip: ;
  120. .PHONY: all install uninstall strip static dist sign upload-local clean