mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
66fb5a29bb
Apply the pre-commit hook whitespace fixes to all files in the repo. (Line endings, blank lines at end of file, trailing whitespace)
106 lines
3.4 KiB
Makefile
106 lines
3.4 KiB
Makefile
ifndef COMPONENT
|
|
COMPONENT := spiffs
|
|
endif
|
|
|
|
COMPONENT_LIB := lib$(COMPONENT).a
|
|
TEST_PROGRAM := test_$(COMPONENT)
|
|
|
|
STUBS_LIB_DIR := ../../../components/spi_flash/sim/stubs
|
|
STUBS_LIB_BUILD_DIR := $(STUBS_LIB_DIR)/build
|
|
STUBS_LIB := libstubs.a
|
|
|
|
SPI_FLASH_SIM_DIR := ../../../components/spi_flash/sim
|
|
SPI_FLASH_SIM_BUILD_DIR := $(SPI_FLASH_SIM_DIR)/build
|
|
SPI_FLASH_SIM_LIB := libspi_flash.a
|
|
|
|
include Makefile.files
|
|
|
|
all: test
|
|
|
|
ifndef SDKCONFIG
|
|
SDKCONFIG_DIR := $(dir $(realpath sdkconfig/sdkconfig.h))
|
|
SDKCONFIG := $(SDKCONFIG_DIR)sdkconfig.h
|
|
else
|
|
SDKCONFIG_DIR := $(dir $(realpath $(SDKCONFIG)))
|
|
endif
|
|
|
|
INCLUDE_FLAGS := $(addprefix -I, $(INCLUDE_DIRS) $(SDKCONFIG_DIR) ../../../tools/catch)
|
|
|
|
CPPFLAGS += $(INCLUDE_FLAGS) -g -m32
|
|
CXXFLAGS += $(INCLUDE_FLAGS) -std=c++11 -g -m32
|
|
|
|
# Build libraries that this component is dependent on
|
|
$(STUBS_LIB_BUILD_DIR)/$(STUBS_LIB): force
|
|
$(MAKE) -C $(STUBS_LIB_DIR) lib SDKCONFIG=$(SDKCONFIG)
|
|
|
|
$(SPI_FLASH_SIM_BUILD_DIR)/$(SPI_FLASH_SIM_LIB): force
|
|
$(MAKE) -C $(SPI_FLASH_SIM_DIR) lib SDKCONFIG=$(SDKCONFIG)
|
|
|
|
# Create target for building this component as a library
|
|
CFILES := $(filter %.c, $(SOURCE_FILES))
|
|
CPPFILES := $(filter %.cpp, $(SOURCE_FILES))
|
|
|
|
CTARGET = ${2}/$(patsubst %.c,%.o,$(notdir ${1}))
|
|
CPPTARGET = ${2}/$(patsubst %.cpp,%.o,$(notdir ${1}))
|
|
|
|
ifndef BUILD_DIR
|
|
BUILD_DIR := build
|
|
endif
|
|
|
|
OBJ_FILES := $(addprefix $(BUILD_DIR)/, $(filter %.o, $(notdir $(SOURCE_FILES:.cpp=.o) $(SOURCE_FILES:.c=.o))))
|
|
|
|
define COMPILE_C
|
|
$(call CTARGET, ${1}, $(BUILD_DIR)) : ${1} $(SDKCONFIG)
|
|
mkdir -p $(BUILD_DIR)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $(call CTARGET, ${1}, $(BUILD_DIR)) ${1}
|
|
endef
|
|
|
|
define COMPILE_CPP
|
|
$(call CPPTARGET, ${1}, $(BUILD_DIR)) : ${1} $(SDKCONFIG)
|
|
mkdir -p $(BUILD_DIR)
|
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $(call CPPTARGET, ${1}, $(BUILD_DIR)) ${1}
|
|
endef
|
|
|
|
$(BUILD_DIR)/$(COMPONENT_LIB): $(OBJ_FILES) $(SDKCONFIG)
|
|
mkdir -p $(BUILD_DIR)
|
|
$(AR) rcs $@ $^
|
|
|
|
clean:
|
|
$(MAKE) -C $(STUBS_LIB_DIR) clean
|
|
$(MAKE) -C $(SPI_FLASH_SIM_DIR) clean
|
|
rm -f $(OBJ_FILES) $(TEST_OBJ_FILES) $(TEST_PROGRAM) $(COMPONENT_LIB) partition_table.bin image.bin
|
|
|
|
lib: $(BUILD_DIR)/$(COMPONENT_LIB)
|
|
|
|
$(foreach cfile, $(CFILES), $(eval $(call COMPILE_C, $(cfile))))
|
|
$(foreach cxxfile, $(CPPFILES), $(eval $(call COMPILE_CPP, $(cxxfile))))
|
|
|
|
# Create target for building this component as a test
|
|
TEST_SOURCE_FILES = \
|
|
test_spiffs.cpp \
|
|
main.cpp \
|
|
|
|
TEST_OBJ_FILES = $(filter %.o, $(TEST_SOURCE_FILES:.cpp=.o) $(TEST_SOURCE_FILES:.c=.o))
|
|
|
|
$(TEST_PROGRAM): lib $(TEST_OBJ_FILES) $(SPI_FLASH_SIM_BUILD_DIR)/$(SPI_FLASH_SIM_LIB) $(STUBS_LIB_BUILD_DIR)/$(STUBS_LIB) partition_table.bin $(SDKCONFIG)
|
|
g++ $(LDFLAGS) $(CXXFLAGS) -o $@ $(TEST_OBJ_FILES) -L$(BUILD_DIR) -l:$(COMPONENT_LIB) -L$(SPI_FLASH_SIM_BUILD_DIR) -l:$(SPI_FLASH_SIM_LIB) -L$(STUBS_LIB_BUILD_DIR) -l:$(STUBS_LIB)
|
|
|
|
# Use spiffs source directory as the test image
|
|
spiffs_image: ../spiffs $(shell find ../spiffs -type d) $(shell find ../spiffs -type -f -name '*')
|
|
# Creation of test symlinks unfortunately causes rerun of spiffsgen.py every make invoke
|
|
rm -f ../spiffs/include ../spiffs/CMakeLists.txt
|
|
ln -s ../include ../spiffs/include
|
|
ln -s ../CMakeLists.txt ../spiffs/CMakeLists.txt
|
|
../spiffsgen.py --follow-symlinks 2097152 ../spiffs image.bin
|
|
|
|
test: $(TEST_PROGRAM) spiffs_image
|
|
./$(TEST_PROGRAM)
|
|
|
|
# Create other necessary targets
|
|
partition_table.bin: partition_table.csv
|
|
python ../../../components/partition_table/gen_esp32part.py --verify $< $@
|
|
|
|
force:
|
|
|
|
.PHONY: all lib test clean force
|