Makefile 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. ifndef COMPONENT
  2. COMPONENT := spi_flash
  3. endif
  4. COMPONENT_LIB := lib$(COMPONENT).a
  5. include Makefile.files
  6. all: lib
  7. ifndef SDKCONFIG
  8. SDKCONFIG_DIR := $(dir $(realpath sdkconfig/sdkconfig.h))
  9. SDKCONFIG := $(SDKCONFIG_DIR)sdkconfig.h
  10. else
  11. SDKCONFIG_DIR := $(dir $(realpath $(SDKCONFIG)))
  12. endif
  13. INCLUDE_FLAGS := $(addprefix -I, $(INCLUDE_DIRS) $(SDKCONFIG_DIR))
  14. CPPFLAGS += $(INCLUDE_FLAGS) -g -m32
  15. CXXFLAGS += $(INCLUDE_FLAGS) -std=c++11 -g -m32
  16. CFILES := $(filter %.c, $(SOURCE_FILES))
  17. CPPFILES := $(filter %.cpp, $(SOURCE_FILES))
  18. CTARGET = ${2}/$(patsubst %.c,%.o,$(notdir ${1}))
  19. CPPTARGET = ${2}/$(patsubst %.cpp,%.o,$(notdir ${1}))
  20. ifndef BUILD_DIR
  21. BUILD_DIR := build
  22. endif
  23. OBJ_FILES := $(addprefix $(BUILD_DIR)/, $(filter %.o, $(notdir $(SOURCE_FILES:.cpp=.o) $(SOURCE_FILES:.c=.o))))
  24. %.o : %.c $(SDKCONFIG)
  25. $(CC) $(CPPFLAGS) $(CFLAGS) $< - o $@
  26. %.o : %.cpp $(SDKCONFIG)
  27. $(CC) $(CPPFLAGS) $(CFLAGS) $< - o $@
  28. define COMPILE_C
  29. $(call CTARGET, ${1}, $(BUILD_DIR)) : ${1}
  30. mkdir -p $(BUILD_DIR)
  31. $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $(call CTARGET, ${1}, $(BUILD_DIR)) ${1}
  32. endef
  33. define COMPILE_CPP
  34. $(call CPPTARGET, ${1}, $(BUILD_DIR)) : ${1}
  35. mkdir -p $(BUILD_DIR)
  36. $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $(call CPPTARGET, ${1}, $(BUILD_DIR)) ${1}
  37. endef
  38. $(BUILD_DIR)/$(COMPONENT_LIB): $(OBJ_FILES) $(SDKCONFIG)
  39. mkdir -p $(BUILD_DIR)
  40. $(AR) rcs $@ $^
  41. clean:
  42. rm -f $(OBJ_FILES) $(BUILD_DIR)/$(COMPONENT_LIB)
  43. lib: $(BUILD_DIR)/$(COMPONENT_LIB)
  44. $(foreach cfile, $(CFILES), $(eval $(call COMPILE_C, $(cfile))))
  45. $(foreach cxxfile, $(CPPFILES), $(eval $(call COMPILE_CPP, $(cxxfile))))
  46. .PHONY: all lib clean