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.
 
 
 
 
 
 

169 lignes
4.4 KiB

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