Makefile 1014 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. TARGET = lfs.a
  2. ifneq ($(wildcard test.c main.c),)
  3. override TARGET = lfs
  4. endif
  5. CC ?= gcc
  6. AR ?= ar
  7. SIZE ?= size
  8. SRC += $(wildcard *.c bd/*.c)
  9. OBJ := $(SRC:.c=.o)
  10. DEP := $(SRC:.c=.d)
  11. ASM := $(SRC:.c=.s)
  12. ifdef DEBUG
  13. override CFLAGS += -O0 -g3
  14. else
  15. override CFLAGS += -Os
  16. endif
  17. ifdef WORD
  18. override CFLAGS += -m$(WORD)
  19. endif
  20. ifdef TRACE
  21. override CFLAGS += -DLFS_YES_TRACE
  22. endif
  23. override CFLAGS += -I.
  24. override CFLAGS += -std=c99 -Wall -pedantic
  25. override CFLAGS += -Wextra -Wshadow -Wjump-misses-init -Wundef
  26. ifdef VERBOSE
  27. override TFLAGS += -v
  28. endif
  29. all: $(TARGET)
  30. asm: $(ASM)
  31. size: $(OBJ)
  32. $(SIZE) -t $^
  33. test:
  34. ./scripts/test.py $(TFLAGS)
  35. .SECONDEXPANSION:
  36. test%: tests/test$$(firstword $$(subst \#, ,%)).toml
  37. ./scripts/test.py $@ $(TFLAGS)
  38. -include $(DEP)
  39. lfs: $(OBJ)
  40. $(CC) $(CFLAGS) $^ $(LFLAGS) -o $@
  41. %.a: $(OBJ)
  42. $(AR) rcs $@ $^
  43. %.o: %.c
  44. $(CC) -c -MMD $(CFLAGS) $< -o $@
  45. %.s: %.c
  46. $(CC) -S $(CFLAGS) $< -o $@
  47. clean:
  48. rm -f $(TARGET)
  49. rm -f $(OBJ)
  50. rm -f $(DEP)
  51. rm -f $(ASM)
  52. rm -f tests/*.toml.*