Makefile 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. CFLAGS ?= -std=gnu99 -Os -Wall
  2. CXXFLAGS ?= -std=gnu++11 -Os -Wall
  3. VERSION ?= $(shell git describe --always)
  4. ifeq ($(OS),Windows_NT)
  5. TARGET_OS := WINDOWS
  6. DIST_SUFFIX := windows
  7. ARCHIVE_CMD := 7z a
  8. ARCHIVE_EXTENSION := zip
  9. TARGET := mklfs.exe
  10. TARGET_CFLAGS := -O2 -mno-ms-bitfields -Ilfs -I. -DVERSION=\"$(VERSION)\"
  11. TARGET_LDFLAGS := -Wl,-static -static-libgcc
  12. TARGET_CXXFLAGS := -Ilfs -I. -DVERSION=\"$(VERSION)\" -D__NO_INLINE__
  13. CC=gcc
  14. CXX=g++
  15. else
  16. UNAME_S := $(shell uname -s)
  17. ifeq ($(UNAME_S),Linux)
  18. TARGET_OS := LINUX
  19. UNAME_P := $(shell uname -p)
  20. ifeq ($(UNAME_P),x86_64)
  21. DIST_SUFFIX := linux64
  22. endif
  23. ifneq ($(filter %86,$(UNAME_P)),)
  24. DIST_SUFFIX := linux32
  25. endif
  26. CC=gcc
  27. CXX=g++
  28. TARGET_CFLAGS = -std=gnu99 -O2 -Wall -Ilfs -I. -D$(TARGET_OS) -DVERSION=\"$(VERSION)\" -D__NO_INLINE__
  29. TARGET_CXXFLAGS = -std=gnu++11 -O2 -Wall -Ilfs -I. -D$(TARGET_OS) -DVERSION=\"$(VERSION)\" -D__NO_INLINE__
  30. endif
  31. ifeq ($(UNAME_S),Darwin)
  32. TARGET_OS := OSX
  33. DIST_SUFFIX := osx
  34. CC=clang
  35. CXX=clang++
  36. TARGET_CFLAGS = -std=gnu99 -O2 -Wall -Ilfs -I. -D$(TARGET_OS) -DVERSION=\"$(VERSION)\" -D__NO_INLINE__ -mmacosx-version-min=10.7 -arch x86_64
  37. TARGET_CXXFLAGS = -std=gnu++11 -O2 -Wall -Ilfs -I. -D$(TARGET_OS) -DVERSION=\"$(VERSION)\" -D__NO_INLINE__ -mmacosx-version-min=10.7 -arch x86_64 -stdlib=libc++
  38. TARGET_LDFLAGS = -arch x86_64 -stdlib=libc++
  39. endif
  40. ARCHIVE_CMD := tar czf
  41. ARCHIVE_EXTENSION := tar.gz
  42. TARGET := mklfs
  43. endif
  44. OBJ := mklfs.o \
  45. lfs/lfs.o \
  46. lfs/lfs_util.o \
  47. VERSION ?= $(shell git describe --always)
  48. .PHONY: all clean
  49. all: $(TARGET)
  50. $(TARGET):
  51. @echo "Building mklfs ..."
  52. $(CC) $(TARGET_CFLAGS) -c lfs/lfs.c -o lfs/lfs.o
  53. $(CC) $(TARGET_CFLAGS) -c lfs/lfs_util.c -o lfs/lfs_util.o
  54. $(CC) $(TARGET_CFLAGS) -c mklfs.c -o mklfs.o
  55. $(CC) $(TARGET_CFLAGS) -c unlfs.c -o unlfs.o
  56. $(CC) $(TARGET_CFLAGS) -o $(TARGET) $(OBJ) $(TARGET_LDFLAGS)
  57. $(CC) $(TARGET_CFLAGS) -o unlfs.exe unlfs.o lfs/lfs.o lfs/lfs_util.o $(TARGET_LDFLAGS)
  58. clean:
  59. @rm -f *.o
  60. @rm -f lfs/*.o
  61. @rm -f $(TARGET)
  62. @rm -f unlfs.exe