Makefile 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Copyright 2017 The Chromium OS Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. PUFFIN_SOURCES = \
  5. bit_reader.cc \
  6. bit_writer.cc \
  7. extent_stream.cc \
  8. file_stream.cc \
  9. huffer.cc \
  10. huffman_table.cc \
  11. memory_stream.cc \
  12. puffer.cc \
  13. puff_reader.cc \
  14. puff_writer.cc \
  15. puffin_stream.cc \
  16. utils.cc
  17. UNITTEST_SOURCES = \
  18. bit_io_unittest.cc \
  19. puff_io_unittest.cc \
  20. puffin_unittest.cc \
  21. stream_unittest.cc \
  22. testrunner.cc \
  23. utils_unittest.cc
  24. OBJDIR = obj
  25. SRCDIR = src
  26. PUFFIN_OBJECTS = $(addprefix $(OBJDIR)/, $(PUFFIN_SOURCES:.cc=.o))
  27. UNITTEST_OBJECTS = $(addprefix $(OBJDIR)/, $(UNITTEST_SOURCES:.cc=.o))
  28. LIBPUFFIN = libpuffin.so
  29. UNITTESTS = puffin_unittests
  30. CXXFLAGS ?= -O3 -ggdb
  31. CXXFLAGS += -Wall -fPIC -std=c++14
  32. CPPFLAGS += -I../ -Isrc/include
  33. LDLIBS = -lgflags -lglog -lprotobuf-lite -lgtest -lpthread
  34. VPATH = $(SRCDIR)
  35. all: $(LIBPUFFIN)
  36. $(OBJDIR):
  37. mkdir -p $@
  38. $(PUFFIN_OBJECTS): | $(OBJDIR)
  39. $(LIBPUFFIN): $(PUFFIN_OBJECTS)
  40. $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $^ -o $@ $(LDLIBS)
  41. $(UNITTESTS): $(UNITTEST_OBJECTS)
  42. $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBPUFFIN) $(LDLIBS)
  43. test: $(LIBPUFFIN) $(UNITTESTS)
  44. clean:
  45. rm -rf $(OBJDIR) $(LIBPUFFIN) $(UNITTESTS)
  46. $(OBJDIR)/%.o: %.cc
  47. $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
  48. .PHONY: all clean test