Makefile 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. .PHONY: all
  14. all: kernel user
  15. .PHONY: kernel
  16. kernel:
  17. mkdir -p bin/kernel/
  18. @list='./kernel'; for subdir in $$list; do \
  19. echo "make all in $$subdir";\
  20. cd $$subdir;\
  21. $(MAKE) all;\
  22. if [ "$$?" != "0" ]; then\
  23. echo "内核编译失败";\
  24. exit 1;\
  25. fi;\
  26. cd ..;\
  27. done
  28. .PHONY: user
  29. user:
  30. mkdir -p bin/user/
  31. mkdir -p bin/tmp/
  32. @list='./user'; for subdir in $$list; do \
  33. echo "make all in $$subdir";\
  34. cd $$subdir;\
  35. $(MAKE) all;\
  36. if [ "$$?" != "0" ]; then\
  37. echo "用户态程序编译失败";\
  38. exit 1;\
  39. fi;\
  40. cd ..;\
  41. done
  42. .PHONY: clean
  43. clean:
  44. @list='$(SUBDIRS)'; for subdir in $$list; do \
  45. echo "Clean in dir: $$subdir";\
  46. cd $$subdir && $(MAKE) clean;\
  47. cd .. ;\
  48. done
  49. gdb:
  50. gdb -n -x tools/.gdbinit