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.
 
 
 
 
 
 

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