common.mk 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # Compiler and default flags
  2. CC ?= gcc
  3. CFLAGS ?= -O0
  4. # Defaults for directories
  5. ROOTDIR ?= $(shell pwd)
  6. INCDIR ?= $(ROOTDIR)
  7. BINDIR ?= $(ROOTDIR)
  8. LIBDIR ?= $(ROOTDIR)
  9. OBJDIR ?= $(ROOTDIR)
  10. DEPENDDIR ?= $(ROOTDIR)
  11. CXXFLAGS += $(addprefix -I ,$(INCDIR)) -fPIC
  12. CFLAGS += $(addprefix -I ,$(INCDIR)) -fPIC -std=c99
  13. # Source files in this directory
  14. SRC = $(wildcard *.cpp)
  15. SRCC = $(wildcard *.c)
  16. SRC += $(wildcard ipecamera/*.cpp)
  17. SRCC += $(wildcard ipecamera/*.c)
  18. SRC += $(wildcard dma/*.cpp)
  19. SRCC += $(wildcard dma/*.c)
  20. # Corresponding object files
  21. OBJ = $(addprefix $(OBJDIR)/,$(SRC:.cpp=.o))
  22. OBJ += $(addprefix $(OBJDIR)/,$(SRCC:.c=.o))
  23. # Corresponding dependency files
  24. DEPEND = $(addprefix $(DEPENDDIR)/,$(SRC:.cpp=.d))
  25. DEPEND += $(addprefix $(DEPENDDIR)/,$(SRCC:.c=.d))
  26. # This makes Verbose easier. Just prefix $(Q) to any command
  27. ifdef VERBOSE
  28. Q ?=
  29. else
  30. Q ?= @
  31. endif
  32. ###############################################################
  33. # Target definitions
  34. # Target for automatic dependency generation
  35. depend: $(DEPEND) $(DEPENDC);
  36. # This rule generates a dependency makefile for each source
  37. $(DEPENDDIR)/%.d: %.c
  38. @echo -e "DEPEND \t$<"
  39. $(Q)$(CC) $(addprefix -I ,$(INCDIR)) -MM -MF $@ \
  40. -MT $(OBJDIR)/$(<:.c=.o) -MT $@ $<
  41. # This includes the automatically
  42. # generated dependency files
  43. -include $(DEPEND)
  44. $(OBJDIR)/%.o: %.c
  45. @echo -e "CC \t$<"
  46. $(Q)@$(CC) $(CFLAGS) -c -o $@ $<