Makefile 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. .SUFFIXES:
  2. MAKEFLAGS+=-r
  3. config=debug
  4. files=demo/pirate.obj
  5. BUILD=build/$(config)
  6. LIBRARY_SOURCES=$(wildcard src/*.cpp)
  7. LIBRARY_OBJECTS=$(LIBRARY_SOURCES:%=$(BUILD)/%.o)
  8. DEMO_SOURCES=$(wildcard demo/*.c demo/*.cpp) tools/meshloader.cpp
  9. DEMO_OBJECTS=$(DEMO_SOURCES:%=$(BUILD)/%.o)
  10. GLTFPACK_SOURCES=tools/gltfpack.cpp tools/meshloader.cpp
  11. GLTFPACK_OBJECTS=$(GLTFPACK_SOURCES:%=$(BUILD)/%.o)
  12. OBJECTS=$(LIBRARY_OBJECTS) $(DEMO_OBJECTS) $(GLTFPACK_OBJECTS)
  13. LIBRARY=$(BUILD)/libmeshoptimizer.a
  14. EXECUTABLE=$(BUILD)/meshoptimizer
  15. CFLAGS=-g -Wall -Wextra -Werror -std=c89
  16. CXXFLAGS=-g -Wall -Wextra -Wshadow -Wno-missing-field-initializers -Werror -std=c++98
  17. LDFLAGS=
  18. WASM_SOURCES=src/vertexcodec.cpp src/indexcodec.cpp
  19. WASM_EXPORTS=["_meshopt_decodeVertexBuffer","_meshopt_decodeIndexBuffer","_sbrk","__start"]
  20. WASM_FLAGS=-O3 -DNDEBUG -s EXPORTED_FUNCTIONS='$(WASM_EXPORTS)' -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=24576 -s TOTAL_MEMORY=65536
  21. ifeq ($(config),iphone)
  22. IPHONESDK=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
  23. CFLAGS+=-arch armv7 -arch arm64 -isysroot $(IPHONESDK)
  24. CXXFLAGS+=-arch armv7 -arch arm64 -isysroot $(IPHONESDK) -stdlib=libc++
  25. LDFLAGS+=-arch armv7 -arch arm64 -isysroot $(IPHONESDK) -L $(IPHONESDK)/usr/lib -mios-version-min=7.0
  26. endif
  27. ifeq ($(config),trace)
  28. CXXFLAGS+=-DTRACE=2
  29. endif
  30. ifeq ($(config),release)
  31. CXXFLAGS+=-O3 -DNDEBUG
  32. endif
  33. ifeq ($(config),coverage)
  34. CXXFLAGS+=-coverage
  35. LDFLAGS+=-coverage
  36. endif
  37. ifeq ($(config),sanitize)
  38. CXXFLAGS+=-fsanitize=address,undefined -fno-sanitize-recover=all
  39. LDFLAGS+=-fsanitize=address,undefined
  40. endif
  41. ifeq ($(config),analyze)
  42. CXXFLAGS+=--analyze
  43. endif
  44. all: $(EXECUTABLE)
  45. test: $(EXECUTABLE)
  46. $(EXECUTABLE) $(files)
  47. check: $(EXECUTABLE)
  48. $(EXECUTABLE)
  49. dev: $(EXECUTABLE)
  50. $(EXECUTABLE) -d $(files)
  51. format:
  52. clang-format -i $(LIBRARY_SOURCES) $(DEMO_SOURCES) $(GLTFPACK_SOURCES)
  53. gltfpack: $(GLTFPACK_OBJECTS) $(LIBRARY)
  54. $(CXX) $^ $(LDFLAGS) -o $@
  55. build/decoder_base.wasm: $(WASM_SOURCES)
  56. @mkdir -p build
  57. emcc $^ $(WASM_FLAGS) -o $@
  58. build/decoder_simd.wasm: $(WASM_SOURCES)
  59. @mkdir -p build
  60. emcc $^ $(WASM_FLAGS) -o $@ -munimplemented-simd128 -mbulk-memory
  61. js/meshopt_decoder.js: build/decoder_base.wasm build/decoder_simd.wasm
  62. sed -i "s#\(var wasm_base = \)\".*\";#\\1\"$$(cat build/decoder_base.wasm | hexdump -v -e '1/1 "%02X"')\";#" $@
  63. sed -i "s#\(var wasm_simd = \)\".*\";#\\1\"$$(cat build/decoder_simd.wasm | hexdump -v -e '1/1 "%02X"')\";#" $@
  64. $(EXECUTABLE): $(DEMO_OBJECTS) $(LIBRARY)
  65. $(CXX) $^ $(LDFLAGS) -o $@
  66. $(LIBRARY): $(LIBRARY_OBJECTS)
  67. ar rcs $@ $^
  68. $(BUILD)/%.cpp.o: %.cpp
  69. @mkdir -p $(dir $@)
  70. $(CXX) $< $(CXXFLAGS) -c -MMD -MP -o $@
  71. $(BUILD)/%.c.o: %.c
  72. @mkdir -p $(dir $@)
  73. $(CC) $< $(CFLAGS) -c -MMD -MP -o $@
  74. -include $(OBJECTS:.o=.d)
  75. clean:
  76. rm -rf $(BUILD)
  77. .PHONY: all clean format