選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

94 行
2.3 KiB

  1. CFLAGS ?= -std=gnu99 -Os -Wall
  2. CXXFLAGS ?= -std=gnu++11 -Os -Wall
  3. ifeq ($(OS),Windows_NT)
  4. TARGET_OS := WINDOWS
  5. DIST_SUFFIX := windows
  6. ARCHIVE_CMD := 7z a
  7. ARCHIVE_EXTENSION := zip
  8. TARGET := mkspiffs.exe
  9. TARGET_CFLAGS := -mno-ms-bitfields
  10. TARGET_LDFLAGS := -Wl,-static -static-libgcc
  11. else
  12. UNAME_S := $(shell uname -s)
  13. ifeq ($(UNAME_S),Linux)
  14. TARGET_OS := LINUX
  15. UNAME_P := $(shell uname -p)
  16. ifeq ($(UNAME_P),x86_64)
  17. DIST_SUFFIX := linux64
  18. endif
  19. ifneq ($(filter %86,$(UNAME_P)),)
  20. DIST_SUFFIX := linux32
  21. endif
  22. endif
  23. ifeq ($(UNAME_S),Darwin)
  24. TARGET_OS := OSX
  25. DIST_SUFFIX := osx
  26. CC=clang
  27. CXX=clang++
  28. TARGET_CFLAGS = -mmacosx-version-min=10.7 -arch i386 -arch x86_64
  29. TARGET_CXXFLAGS = -mmacosx-version-min=10.7 -arch i386 -arch x86_64 -stdlib=libc++
  30. TARGET_LDFLAGS = -arch i386 -arch x86_64 -stdlib=libc++
  31. endif
  32. ARCHIVE_CMD := tar czf
  33. ARCHIVE_EXTENSION := tar.gz
  34. TARGET := mkspiffs
  35. endif
  36. VERSION ?= $(shell git describe --always)
  37. OBJ := main.o \
  38. spiffs/spiffs_cache.o \
  39. spiffs/spiffs_check.o \
  40. spiffs/spiffs_gc.o \
  41. spiffs/spiffs_hydrogen.o \
  42. spiffs/spiffs_nucleus.o \
  43. INCLUDES := -Itclap -Ispiffs -I.
  44. CFLAGS += $(TARGET_CFLAGS)
  45. CXXFLAGS += $(TARGET_CXXFLAGS)
  46. LDFLAGS += $(TARGET_LDFLAGS)
  47. CPPFLAGS += $(INCLUDES) -D$(TARGET_OS) -DVERSION=\"$(VERSION)\" -D__NO_INLINE__
  48. DIST_NAME := mkspiffs-$(VERSION)-$(DIST_SUFFIX)
  49. DIST_DIR := $(DIST_NAME)
  50. DIST_ARCHIVE := $(DIST_NAME).$(ARCHIVE_EXTENSION)
  51. .PHONY: all clean dist
  52. all: $(TARGET)
  53. dist: test $(DIST_ARCHIVE)
  54. $(DIST_ARCHIVE): $(TARGET) $(DIST_DIR)
  55. cp $(TARGET) $(DIST_DIR)/
  56. $(ARCHIVE_CMD) $(DIST_ARCHIVE) $(DIST_DIR)
  57. $(TARGET): $(OBJ)
  58. $(CXX) $^ -o $@ $(LDFLAGS)
  59. strip $(TARGET)
  60. $(DIST_DIR):
  61. @mkdir -p $@
  62. clean:
  63. @rm -f *.o
  64. @rm -f spiffs/*.o
  65. @rm -f $(TARGET)
  66. SPIFFS_TEST_FS_CONFIG := -s 0x100000 -p 512 -b 0x2000
  67. test: $(TARGET)
  68. ls -1 spiffs > out.list0
  69. ./mkspiffs -c spiffs $(SPIFFS_TEST_FS_CONFIG) out.spiffs | sort | sed s/^\\/// > out.list1
  70. ./mkspiffs -u spiffs_u $(SPIFFS_TEST_FS_CONFIG) out.spiffs | sort | sed s/^\\/// > out.list_u
  71. ./mkspiffs -l $(SPIFFS_TEST_FS_CONFIG) out.spiffs | cut -f 2 | sort | sed s/^\\/// > out.list2
  72. diff --strip-trailing-cr out.list0 out.list1
  73. diff --strip-trailing-cr out.list0 out.list2
  74. diff spiffs spiffs_u
  75. rm -f out.{list0,list1,list2,list_u,spiffs}
  76. rm -R spiffs_u