Makefile 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. SUBDIRS = kernel user
  2. # ifndef $(EMULATOR)
  3. ifeq ($(EMULATOR), )
  4. export EMULATOR=__NO_EMULATION__
  5. endif
  6. export ARCH=__x86_64__
  7. export ROOT_PATH=$(shell pwd)
  8. export DEBUG=DEBUG
  9. export GLOBAL_CFLAGS := -mcmodel=large -fno-builtin -m64 -fno-stack-protector -D $(ARCH) -D $(EMULATOR) -O1
  10. ifeq ($(DEBUG), DEBUG)
  11. GLOBAL_CFLAGS += -g
  12. endif
  13. export CC=gcc
  14. .PHONY: all
  15. all: kernel user
  16. .PHONY: kernel
  17. kernel:
  18. mkdir -p bin/kernel/
  19. @list='./kernel'; for subdir in $$list; do \
  20. echo "make all in $$subdir";\
  21. cd $$subdir;\
  22. $(MAKE) all;\
  23. if [ "$$?" != "0" ]; then\
  24. echo "内核编译失败";\
  25. exit 1;\
  26. fi;\
  27. cd ..;\
  28. done
  29. .PHONY: user
  30. user:
  31. mkdir -p bin/user/
  32. mkdir -p bin/tmp/user
  33. @list='./user'; for subdir in $$list; do \
  34. echo "make all in $$subdir";\
  35. cd $$subdir;\
  36. $(MAKE) all;\
  37. if [ "$$?" != "0" ]; then\
  38. echo "用户态程序编译失败";\
  39. exit 1;\
  40. fi;\
  41. cd ..;\
  42. done
  43. .PHONY: clean
  44. clean:
  45. @list='$(SUBDIRS)'; for subdir in $$list; do \
  46. echo "Clean in dir: $$subdir";\
  47. cd $$subdir && $(MAKE) clean;\
  48. cd .. ;\
  49. done
  50. gdb:
  51. gdb -n -x tools/.gdbinit