Makefile 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #- aslstatus - async suckless status monitor -#
  2. include config.mk
  3. ifeq (${COMPONENTS},)
  4. COMPONENTS := $(wildcard components/*.c)
  5. COMPONENTS += $(wildcard lib/*.c)
  6. A_ALSA_C := components/volume/alsa.c
  7. A_PULSE_C := components/volume/pulse.c
  8. A_DEF_C := components/volume/default.c
  9. endif # COMPONENTS
  10. OBJ = ${COMPONENTS:.c=.o}
  11. X ?= 1
  12. XKB ?= 1
  13. AUDIO ?= PULSE
  14. # components that needs running X server
  15. NEED_X_SERVER_COM := keymap
  16. NEED_X_SERVER_DEF := -DNEED_X_SERVER=1
  17. NEED_X_SERVER = $(if \
  18. $(strip \
  19. $(foreach _,\
  20. ${NEED_X_SERVER_COM},\
  21. $(filter %/${_}.c,${COMPONENTS})\
  22. )),\
  23. ${NEED_X_SERVER_DEF},)
  24. SMART_CONFIG ?= 1
  25. ifeq (${X},1)
  26. LDLIBS += ${LDXCB}
  27. CPPFLAGS += -DUSE_X=1
  28. ifeq (${XKB},1)
  29. LDLIBS += ${LDXCB_XKB}
  30. CPPFLAGS += -DUSE_XKB=1
  31. else
  32. CPPFLAGS += -DUSE_XKB=0
  33. endif # XKB
  34. else
  35. CPPFLAGS += -DUSE_X=0
  36. CPPFLAGS += -DUSE_XKB=0
  37. endif # X
  38. ifeq (${USE_WEATHER},1)
  39. LDLIBS += ${LDWEATHER}
  40. CPPFLAGS += -DUSE_WEATHER=1
  41. endif
  42. .PHONY: all
  43. ifeq (${SMART_CONFIG},1)
  44. all: smart-conf
  45. include smart-config.mk
  46. else
  47. all: aslstatus
  48. endif
  49. ifeq (${AUDIO},ALSA)
  50. LDLIBS += ${LDALSA}
  51. CPPFLAGS += -DUSE_ALSA
  52. COMPONENTS += ${A_ALSA_C}
  53. endif # ALSA
  54. ifeq (${AUDIO},PULSE)
  55. LDLIBS += ${LDPULSE}
  56. CPPFLAGS += -DUSE_PULSE
  57. COMPONENTS += ${A_PULSE_C}
  58. endif # PULSE
  59. ifneq (${AUDIO},ALSA)
  60. ifneq (${AUDIO},PULSE)
  61. COMPONENTS += ${A_DEF_C}
  62. endif
  63. endif
  64. ifneq (,$(filter %tcc,${CC})) # if compiler is tcc
  65. # libraries and flags first, then files to link
  66. LINK_FLAGS = ${LDFLAGS} ${LDLIBS} ${CFLAGS} ${1}
  67. else
  68. # vice versa
  69. LINK_FLAGS = ${1} ${LDFLAGS} ${LDLIBS} ${CFLAGS}
  70. endif
  71. include deps.mk
  72. aslstatus.o: CPPFLAGS += $(NEED_X_SERVER)
  73. %.o: %.c
  74. $(CC) -o $@ -c $< ${CFLAGS} ${CPPFLAGS}
  75. aslstatus: aslstatus.o ${OBJ}
  76. $(CC) -o $@ $(call LINK_FLAGS,$^)
  77. man/aslstatus.1: man/aslstatus.1.md
  78. pandoc --standalone --from=markdown $< --to=man -o $@
  79. .PHONY: man
  80. man: man/aslstatus.1
  81. .PHONY: install
  82. install: all
  83. mkdir -p "${DESTDIR}${PREFIX}/bin"
  84. cp -f aslstatus "${DESTDIR}${PREFIX}/bin"
  85. chmod 755 "${DESTDIR}${PREFIX}/bin/aslstatus"
  86. mkdir -p "${DESTDIR}${MANPREFIX}/man1"
  87. cp -f man/aslstatus.1 "${DESTDIR}${MANPREFIX}/man1"
  88. chmod 644 "${DESTDIR}${MANPREFIX}/man1/aslstatus.1"
  89. .PHONY: clean
  90. ifeq (${SMART_CONFIG},1)
  91. clean: smart-config-clean
  92. endif
  93. clean:
  94. rm -f aslstatus aslstatus.o \
  95. $(wildcard lib/*.o components/*.o components/*/*.o)
  96. .PHONY: uninstall
  97. uninstall:
  98. rm -f "${DESTDIR}${PREFIX}/bin/aslstatus"
  99. rm -f "${DESTDIR}${MANPREFIX}/man1/aslstatus.1"