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.
 
 
 
 
 
 

165 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_CTX8),1)
  53. CPPFLAGS += -DCTX8
  54. endif
  55. ifeq ($(shell $(PKG_CONFIG) ncursesw && echo 1),1)
  56. CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncursesw)
  57. LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncursesw)
  58. else ifeq ($(shell $(PKG_CONFIG) ncurses && echo 1),1)
  59. CFLAGS_CURSES ?= $(shell $(PKG_CONFIG) --cflags ncurses)
  60. LDLIBS_CURSES ?= $(shell $(PKG_CONFIG) --libs ncurses)
  61. else
  62. LDLIBS_CURSES ?= -lncurses
  63. endif
  64. CFLAGS += -std=c11 -Wall -Wextra
  65. CFLAGS += $(CFLAGS_OPTIMIZATION)
  66. CFLAGS += $(CFLAGS_CURSES)
  67. LDLIBS += $(LDLIBS_CURSES)
  68. # static compilation needs libgpm development package
  69. ifeq ($(O_STATIC),1)
  70. LDFLAGS += -static
  71. LDLIBS += -lgpm
  72. endif
  73. DISTFILES = src nnn.1 Makefile README.md LICENSE
  74. SRC = src/nnn.c
  75. HEADERS = src/nnn.h
  76. BIN = nnn
  77. DESKTOPFILE = misc/desktop/nnn.desktop
  78. LOGOSVG = misc/logo/logo.svg
  79. LOGO64X64 = misc/logo/logo-64x64.png
  80. all: $(BIN)
  81. $(BIN): $(SRC) $(HEADERS)
  82. $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
  83. # targets for backwards compatibility
  84. debug: $(BIN)
  85. norl: $(BIN)
  86. noloc: $(BIN)
  87. install-desktop: $(DESKTOPFILE)
  88. $(INSTALL) -m 0755 -d $(DESTDIR)$(DESKTOPPREFIX)
  89. $(INSTALL) -m 0644 $(DESKTOPFILE) $(DESTDIR)$(DESKTOPPREFIX)
  90. $(INSTALL) -m 0755 -d $(DESTDIR)$(DESKTOPICONPREFIX)/scalable/apps
  91. $(INSTALL) -m 0644 $(LOGOSVG) $(DESTDIR)$(DESKTOPICONPREFIX)/scalable/apps/nnn.svg
  92. $(INSTALL) -m 0755 -d $(DESTDIR)$(DESKTOPICONPREFIX)/64x64/apps
  93. $(INSTALL) -m 0644 $(LOGO64X64) $(DESTDIR)$(DESKTOPICONPREFIX)/64x64/apps/nnn.png
  94. uninstall-desktop:
  95. $(RM) $(DESTDIR)$(DESKTOPPREFIX)/$(DESKTOPFILE)
  96. $(RM) $(DESTDIR)$(DESKTOPICONPREFIX)/scalable/apps/nnn.svg
  97. $(RM) $(DESTDIR)$(DESKTOPICONPREFIX)/64x64/apps/nnn.png
  98. install: all
  99. $(INSTALL) -m 0755 -d $(DESTDIR)$(PREFIX)/bin
  100. $(INSTALL) -m 0755 $(BIN) $(DESTDIR)$(PREFIX)/bin
  101. $(INSTALL) -m 0755 -d $(DESTDIR)$(MANPREFIX)/man1
  102. $(INSTALL) -m 0644 $(BIN).1 $(DESTDIR)$(MANPREFIX)/man1
  103. uninstall:
  104. $(RM) $(DESTDIR)$(PREFIX)/bin/$(BIN)
  105. $(RM) $(DESTDIR)$(MANPREFIX)/man1/$(BIN).1
  106. strip: $(BIN)
  107. $(STRIP) $^
  108. static:
  109. make O_STATIC=1 strip
  110. mv $(BIN) $(BIN)-static
  111. dist:
  112. mkdir -p nnn-$(VERSION)
  113. $(CP) -r $(DISTFILES) nnn-$(VERSION)
  114. tar -cf - nnn-$(VERSION) | gzip > nnn-$(VERSION).tar.gz
  115. $(RM) -r nnn-$(VERSION)
  116. sign:
  117. git archive -o nnn-$(VERSION).tar.gz --format tar.gz --prefix=nnn-$(VERSION)/ v$(VERSION)
  118. gpg --detach-sign --yes nnn-$(VERSION).tar.gz
  119. rm -f nnn-$(VERSION).tar.gz
  120. upload-local: sign static
  121. $(eval ID=$(shell curl -s 'https://api.github.com/repos/jarun/nnn/releases/tags/v$(VERSION)' | jq .id))
  122. curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=nnn-$(VERSION).tar.gz.sig' \
  123. -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/pgp-signature' \
  124. --upload-file nnn-$(VERSION).tar.gz.sig
  125. tar -zcf $(BIN)-static-$(VERSION).x86_64.tar.gz $(BIN)-static
  126. curl -XPOST 'https://uploads.github.com/repos/jarun/nnn/releases/$(ID)/assets?name=$(BIN)-static-$(VERSION).x86_64.tar.gz' \
  127. -H 'Authorization: token $(NNN_SIG_UPLOAD_TOKEN)' -H 'Content-Type: application/x-sharedlib' \
  128. --upload-file $(BIN)-static-$(VERSION).x86_64.tar.gz
  129. clean:
  130. $(RM) -f $(BIN) nnn-$(VERSION).tar.gz *.sig $(BIN)-static $(BIN)-static-$(VERSION).x86_64.tar.gz
  131. skip: ;
  132. .PHONY: all install uninstall strip static dist sign upload-local clean install-desktop uninstall-desktop