Makefile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # Makefile for toybox.
  2. # Copyright 2006 Rob Landley <[email protected]>
  3. # If people set these on the make command line, use 'em
  4. # Note that CC defaults to "cc" so the one in configure doesn't get
  5. # used when scripts/make.sh and such called through "make".
  6. HOSTCC?=cc
  7. export CROSS_COMPILE CFLAGS OPTIMIZE LDOPTIMIZE CC HOSTCC V STRIP ASAN
  8. all: toybox
  9. KCONFIG_CONFIG ?= .config
  10. KCONFIG_TOP ?= Config.in
  11. toybox generated/unstripped/toybox: $(KCONFIG_CONFIG) *.[ch] lib/*.[ch] toys/*/*.c scripts/*.sh Config.in
  12. scripts/make.sh
  13. .PHONY: clean distclean baseline bloatcheck install install_flat \
  14. uninstall uninstall_flat tests help change defconfig \
  15. list list_example list_pending root run_root
  16. .SUFFIXES: # Disable legacy behavior
  17. include kconfig/Makefile
  18. -include .singlemake
  19. $(KCONFIG_CONFIG): $(KCONFIG_TOP)
  20. @if [ -e "$(KCONFIG_CONFIG)" ]; then $(MAKE) silentoldconfig; \
  21. else echo "Not configured (run '$(MAKE) defconfig' or '$(MAKE) menuconfig')";\
  22. exit 1; fi
  23. $(KCONFIG_TOP): generated/Config.in generated/Config.probed generated/unstripped/kconfig
  24. generated/Config.probed: generated/Config.in
  25. generated/Config.in: toys/*/*.c scripts/genconfig.sh scripts/kconfig.c
  26. scripts/genconfig.sh
  27. defconfig: $(KCONFIG_TOP) generated/Config.in
  28. generated/unstripped/kconfig -d > $(KCONFIG_CONFIG)
  29. randconfig: $(KCONFIG_TOP) generated/Config.in
  30. generated/unstripped/kconfig -r > $(KCONFIG_CONFIG)
  31. allyesconfig: $(KCONFIG_TOP) generated/Config.in
  32. generated/unstripped/kconfig -y > $(KCONFIG_CONFIG)
  33. allnoconfig: $(KCONFIG_TOP) generated/Config.in
  34. generated/unstripped/kconfig -n > $(KCONFIG_CONFIG)
  35. # Development targets
  36. baseline: generated/unstripped/toybox
  37. @cp generated/unstripped/toybox generated/unstripped/toybox_old
  38. bloatcheck: generated/unstripped/toybox_old generated/unstripped/toybox
  39. @scripts/probes/bloatcheck generated/unstripped/toybox_old generated/unstripped/toybox
  40. install_flat: toybox
  41. scripts/install.sh --symlink --force
  42. install_airlock: toybox
  43. scripts/install.sh --symlink --force --airlock
  44. install: toybox
  45. scripts/install.sh --long --symlink --force
  46. uninstall_flat:
  47. scripts/install.sh --uninstall
  48. uninstall:
  49. scripts/install.sh --long --uninstall
  50. change:
  51. scripts/change.sh
  52. root_clean:
  53. @rm -rf root
  54. @echo root cleaned
  55. clean::
  56. @chmod -fR 700 generated 2>/dev/null || true
  57. @rm -rf toybox generated change install .singleconfig*
  58. @echo cleaned
  59. # If singlemake was in generated/ "make clean; make test_ls" wouldn't work.
  60. distclean: clean root_clean
  61. @rm -f toybox* .config* .singlemake
  62. @echo removed .config
  63. tests: ASAN=1
  64. tests: toybox
  65. scripts/test.sh
  66. root:
  67. mkroot/mkroot.sh $(MAKEFLAGS)
  68. run_root:
  69. cd root/"$${CROSS:-host}" && ./run-qemu.sh
  70. help::
  71. @cat scripts/help.txt