logo

utils-std

Collection of commonly available Unix tools git clone https://anongit.hacktivis.me/git/utils-std.git/

Makefile (7339B)


  1. # SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
  2. # SPDX-License-Identifier: MPL-2.0
  3. include config.mk
  4. # Commands implemented as scripts
  5. SCRIPTS=
  6. # Commands linking to another executable
  7. SYMLINKS=cmd/'[' cmd/chgrp cmd/readlink cmd/uuencode
  8. MAN1 += cmd/readlink.1 cmd/uuencode.1
  9. RM=rm
  10. all: $(EXE) $(MAN1SO)
  11. .c:
  12. $(RM) -f ${<:=.gcov} ${@:=.gcda} ${@:=.gcno}
  13. $(CC) -std=c99 $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LDSTATIC)
  14. .c.o:
  15. $(RM) -f ${<:=.gcov} ${@:=.gcda} ${@:=.gcno}
  16. $(CC) -std=c99 $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
  17. include common.mk
  18. # selfcheck: Check without extra dependencies
  19. .PHONY: selfcheck
  20. selfcheck: selfcheck-cmds selfcheck-libs
  21. .PHONY: selfcheck-cmds
  22. TEST_CMDS = test-cmd/pathchk-getlimits test-cmd/getpriority test-cmd/echosig
  23. selfcheck-cmds: $(EXE) $(TEST_CMDS)
  24. LDSTATIC="$(LDSTATIC)" ./check-cmds.sh
  25. .PHONY: selfcheck-libs
  26. TEST_LIBS = test-libutils/t_mode test-libutils/t_strtodur test-libutils/t_symbolize_mode test-libutils/t_truncation test-lib/t_sha1 test-lib/t_sha256 test-lib/t_sha512 test-libutils/t_humanize test-libutils/t_strlcpy
  27. selfcheck-libs: $(TEST_LIBS)
  28. LDSTATIC="$(LDSTATIC)" ./check-libs.sh $(TEST_LIBS)
  29. .PHONY: check
  30. check: all check-man selfcheck-libs selfcheck-cmds
  31. MALLOC_CHECK_=3 POSIX_ME_HARDER=1 POSIXLY_CORRECT=1 LC_ALL=C.UTF-8 $(CRAM) test-cmd/*.t
  32. .PHONY: check_status
  33. check_status:
  34. grep EXE config.mk | sed -e 's;^EXE = ;;' -e 's;cmd/;;g' | tr ' ' '\n' | grep -v '^$$' | sed -e 's;^;^;' -e 's;$$;\\b;' | grep -f - *.txt | grep -iv done
  35. .PHONY: check-man
  36. check-man: $(MAN1SO)
  37. err=0; for i in $(EXE); do if test ! -f $$i.1 && test ! -f $$i.1.in; then echo "$$i: missing manpage"; err=1; fi; done; exit $$err
  38. for i in $(MAN1) ; do grep -q 'EXIT STATUS' $$i || echo "$i lacks EXIT STATUS"; grep -q -e 'STANDARDS' -e 'HISTORY' $$i || echo "$i lacks STANDARDS/HISTORY"; done
  39. .PHONY: build-checks
  40. build-checks: all $(TEST_CMDS) $(TEST_LIBS)
  41. .PHONY: lint
  42. lint: $(MAN1SO)
  43. $(MANDOC) -Tlint -Wunsupp,error,warning $(MAN1)
  44. .PHONY: clean
  45. clean:
  46. $(RM) -fr $(EXE) ${EXE:=.c.gcov} ${EXE:=.gcda} ${EXE:=.gcno} cmd/expr.tab.c $(MAN1SO) $(TEST_CMDS) $(TEST_LIBS) lib/*.o libutils/*.o libutils/libutils.a build
  47. install: all
  48. mkdir -p ${DESTDIR}${BINDIR}/
  49. cp -pP ${EXE} ${SCRIPTS} ${SYMLINKS} ${DESTDIR}${BINDIR}/
  50. mkdir -p ${DESTDIR}${MANDIR}/man1
  51. cp -pP ${MAN1} ${DESTDIR}${MANDIR}/man1
  52. .PHONY: coverage
  53. coverage:
  54. $(GCOV) -b $(EXE)
  55. .PHONY: format
  56. format:
  57. clang-format -style=file -assume-filename=.clang-format -i */*.[ch]
  58. # Needs to be in build/ otherwise re-running ./configure catches it for libutils.a
  59. build/sys_signame.c: lib/sys_signame.sh cmd/cat cmd/printf cmd/mkdir
  60. mkdir -p build
  61. lib/sys_signame.sh >|build/sys_signame.c
  62. LIBUTILS_O = ${LIBUTILS_C:.c=.o}
  63. libutils/libutils.a: ${LIBUTILS_O} ${LIBUTILS_H} config.mk config.h Makefile
  64. ${AR} rc ${ARFLAGS} libutils/libutils.a ${LIBUTILS_O}
  65. build/cmd/date.1: cmd/date.1.in libutils/datetime_parse.mdoc cmd/mkdir
  66. mkdir -p build/cmd
  67. $(M4) cmd/date.1.in > build/cmd/date.1
  68. build/cmd/touch.1: cmd/touch.1.in libutils/datetime_parse.mdoc cmd/mkdir
  69. mkdir -p build/cmd
  70. $(M4) cmd/touch.1.in > build/cmd/touch.1
  71. cmd/expr.tab.c: cmd/expr.y Makefile
  72. $(YACC) -b cmd/expr cmd/expr.y
  73. # Needs -D_POSIX_C_SOURCE=200809L due to OpenBSD yacc
  74. cmd/expr: cmd/expr.tab.c libutils/libutils.a
  75. $(RM) -f cmd/expr.tab.c.gcov cmd/expr.tab.o.gcda cmd/expr.tab.o.gcno
  76. $(CC) -std=c99 $(CPPFLAGS) $(CFLAGS) -D_POSIX_C_SOURCE=200809L -o cmd/expr cmd/expr.tab.c libutils/libutils.a $(LDFLAGS) $(LDSTATIC)
  77. # Needs -lm
  78. cmd/seq: cmd/seq.c Makefile libutils/libutils.a
  79. $(RM) -f ${<:=.gcov} ${@:=.gcda} ${@:=.gcno}
  80. $(CC) -std=c99 $(CPPFLAGS) $(CFLAGS) -o $@ cmd/seq.c libutils/libutils.a -lm $(LDFLAGS) $(LDSTATIC)
  81. build/getconf_vars.h: lib/getconf_vars.m4
  82. mkdir -p build
  83. $(M4) lib/getconf_vars.m4 > build/getconf_vars.h
  84. # cmd/getconf_vars.h needs to invalidate cmd/getconf but not be in command
  85. cmd/getconf: cmd/getconf.c build/getconf_vars.h libutils/libutils.a
  86. $(RM) -f ${<:=.gcov} ${@:=.gcda} ${@:=.gcno}
  87. $(CC) -std=c99 $(CPPFLAGS) $(CFLAGS) -I./build/ -o cmd/getconf cmd/getconf.c libutils/libutils.a $(LDFLAGS) $(LDSTATIC)
  88. cmd/date: cmd/date.c libutils/libutils.a lib/absu.h
  89. $(RM) -f ${<:=.gcov} ${@:=.gcda} ${@:=.gcno}
  90. $(CC) -std=c99 $(CPPFLAGS) $(CFLAGS) -I./build/ -o cmd/date cmd/date.c libutils/libutils.a $(LDFLAGS) $(LDSTATIC)
  91. cmd/base64: cmd/base64.c libutils/libutils.a
  92. cmd/basename: cmd/basename.c libutils/libutils.a
  93. cmd/chmod: cmd/chmod.c libutils/libutils.a
  94. cmd/chown: cmd/chown.c libutils/libutils.a
  95. cmd/cmp: cmd/cmp.c libutils/libutils.a
  96. cmd/cut: cmd/cut.c libutils/libutils.a
  97. cmd/df: cmd/df.c libutils/libutils.a
  98. cmd/env: cmd/env.c libutils/libutils.a
  99. cmd/head: cmd/head.c libutils/libutils.a
  100. cmd/id: cmd/id.c libutils/libutils.a
  101. cmd/install: cmd/install.c libutils/libutils.a
  102. cmd/join: cmd/join.c libutils/libutils.a
  103. cmd/ln: cmd/ln.c libutils/libutils.a
  104. cmd/mkdir: cmd/mkdir.c libutils/libutils.a
  105. cmd/mkfifo: cmd/mkfifo.c libutils/libutils.a
  106. cmd/mknod: cmd/mknod.c libutils/libutils.a
  107. cmd/mktemp: cmd/mktemp.c libutils/libutils.a
  108. cmd/mv: cmd/mv.c libutils/libutils.a
  109. cmd/nice: cmd/nice.c libutils/libutils.a
  110. cmd/nproc: cmd/nproc.c libutils/libutils.a
  111. cmd/od: cmd/od.c libutils/libutils.a
  112. cmd/paste: cmd/paste.c libutils/libutils.a
  113. cmd/pathchk: cmd/pathchk.c libutils/libutils.a
  114. cmd/pwd: cmd/pwd.c libutils/libutils.a
  115. cmd/realpath: cmd/realpath.c libutils/libutils.a
  116. cmd/renice: cmd/renice.c libutils/libutils.a
  117. cmd/rmdir: cmd/rmdir.c libutils/libutils.a
  118. cmd/sha1sum: cmd/sha1sum.c libutils/libutils.a lib/bytes2hex.o lib/sha1.o
  119. cmd/sha256sum: cmd/sha256sum.c libutils/libutils.a lib/bytes2hex.o lib/sha256.o
  120. cmd/sha512sum: cmd/sha512sum.c libutils/libutils.a lib/bytes2hex.o lib/sha512.o
  121. cmd/shuf: cmd/shuf.c libutils/libutils.a
  122. cmd/sleep: cmd/sleep.c libutils/libutils.a
  123. cmd/split: cmd/split.c libutils/libutils.a
  124. cmd/strings: cmd/strings.c libutils/libutils.a
  125. cmd/sync: cmd/sync.c libutils/libutils.a
  126. cmd/tee: cmd/tee.c libutils/libutils.a
  127. cmd/time: cmd/time.c libutils/libutils.a
  128. cmd/timeout: cmd/timeout.c build/sys_signame.c libutils/libutils.a
  129. cmd/touch: cmd/touch.c libutils/libutils.a
  130. cmd/truncate: cmd/truncate.c libutils/libutils.a
  131. cmd/uname: cmd/uname.c libutils/libutils.a
  132. cmd/uniq: cmd/uniq.c libutils/libutils.a
  133. cmd/wc: cmd/wc.c libutils/libutils.a
  134. cmd/which: cmd/which.c libutils/libutils.a
  135. cmd/whoami: cmd/whoami.c libutils/libutils.a
  136. libutils/mode.o: libutils/mode.c libutils/mode.h
  137. lib/sha1.o: lib/sha1.c lib/sha1.h
  138. lib/sha256.o: lib/sha256.c lib/sha256.h
  139. lib/sha512.o: lib/sha512.c lib/sha512.h
  140. lib/bytes2hex.o: lib/bytes2hex.c lib/strconv.h
  141. test-cmd/echosig: test-cmd/echosig.c build/sys_signame.c
  142. test-lib/t_sha1: test-lib/t_sha1.c lib/sha1.c lib/bytes2hex.o
  143. test-lib/t_sha256: test-lib/t_sha256.c lib/sha256.c lib/bytes2hex.o
  144. test-lib/t_sha512: test-lib/t_sha512.c lib/sha512.c lib/bytes2hex.o
  145. test-libutils/t_humanize: test-libutils/t_humanize.c libutils/humanize.o
  146. test-libutils/t_mode: test-libutils/t_mode.c libutils/mode.o
  147. test-libutils/t_strtodur: test-libutils/t_strtodur.c libutils/strtodur.o
  148. test-libutils/t_strlcpy: test-libutils/t_strlcpy.c libutils/lib_strlcpy.o
  149. test-libutils/t_symbolize_mode: test-libutils/t_symbolize_mode.c libutils/symbolize_mode.o
  150. test-libutils/t_truncation: test-libutils/t_truncation.c libutils/truncation.o